MongoDB hujjatlarga asoslangan baza bo'lib, ma'lumotni jadval qatorlari o'rniga JSON'ga o'xshash hujjatlar ko'rinishida saqlaydi. Node.js va Python'da yozilgan ko'plab ilovalar, ayniqsa tez o'zgaradigan ma'lumot tuzilmasiga ega startaplar uni tanlaydi. Bazani tanlagandan keyin darhol ikkinchi savol paydo bo'ladi: MongoDB'ni qayerda ishlatish kerak? Bir yo'l MongoDB kompaniyasining Atlas bulut xizmatida tayyor klaster ochish, ikkinchisi esa uni o'z VPS'ingizga o'rnatib, o'zingiz boshqarish. Ikkala yo'lning ham aniq afzallik va kamchiliklari bor.
Oddiy hostingda MongoDB haqida
Oddiy (virtual) hosting odatda MySQL va ba'zan PostgreSQL bilan keladi, MongoDB esa unda deyarli uchramaydi. Sababi oddiy: MongoDB doimiy ishlaydigan alohida server jarayoni bo'lib, sezilarli hajmda operativ xotira talab qiladi. Shuning uchun real tanlov ikki variant orasida bo'ladi: Atlas kabi boshqariladigan bulut xizmati yoki VPS'dagi o'z MongoDB serveringiz. Sayt fayllari esa istalgan joyda, jumladan oddiy hostingda ham turishi mumkin, agar u yerdan bazaga ulanish imkoni bo'lsa.
Atlas: tayyor klaster va kam ma'muriy ish
Atlas'da klaster bir necha daqiqada yaratiladi. O'rnatish, versiyani yangilash, replikatsiya va monitoring xizmat tomonidan bajariladi, pullik klasterlarda avtomatik zaxira ham bor. Tajriba va kichik loyihalar uchun bepul boshlang'ich klaster mavjud, lekin uning hajmi va imkoniyatlari cheklangan, shuning uchun ishlab turgan tijorat loyihasini unga tayanib qurish xavfli. Narxlar va tarif shartlari o'zgarib turadi, ularni rasmiy saytdan tekshiring.
Ulanish mongodb+srv:// manzili orqali amalga oshadi. Eng ko'p uchraydigan xato shundaki, Atlas'ning tarmoqqa kirish ro'yxatiga ilova ishlayotgan serverning IP manzili qo'shilmaydi va ulanish vaqt tugashi bilan uziladi. Ruxsat ro'yxatiga 0.0.0.0/0 yozib qo'yish muammoni "hal qiladi", lekin bazani butun internetga ochib qo'yadi, buni qilmang. Faqat o'z serveringizning aniq IP manzilini qo'shing.
// .env
// MONGO_URI=mongodb+srv://app:PAROL@cluster0.abcde.mongodb.net/dostavka
const { MongoClient } = require('mongodb');
const client = new MongoClient(process.env.MONGO_URI);
await client.connect();
const orders = client.db('dostavka').collection('orders');
await orders.insertOne({ phone: '+998901234567', total: 85000, createdAt: new Date() });
Kechikish va ma'lumot joylashuvi
Atlas klasterlari yirik bulut provayderlarining mintaqalarida joylashadi va ularning hech biri O'zbekiston ichida emas. Ilova serveri Toshkentda, baza esa xorijdagi mintaqada bo'lsa, har bir so'rov chegaradan o'tib-qaytadi. Bitta sahifa bazaga o'nlab so'rov yuborsa, bu kechikishlar qo'shilib, foydalanuvchi sezadigan sekinlikka aylanadi. Shuning uchun ilova va baza imkon qadar bir joyda, bitta tarmoqda bo'lgani ma'qul.
Ikkinchi muhim jihat qonunchilik. O'zbekistonda fuqarolarning shaxsiy ma'lumotlarini mamlakat hududidagi serverlarda saqlash talabi mavjud. Agar bazangizda mijozlarning ismi, telefon raqami yoki manzili saqlansa, bu ma'lumotlarni xorijiy bulutga joylashtirishdan oldin amaldagi talablarni rasmiy manbalardan yoki yurist bilan aniqlab oling. Ko'p hollarda bu masala tanlovni o'z-o'zidan O'zbekistondagi server foydasiga hal qiladi.
Misol: Toshkentdagi yetkazib berish xizmati
Ovqat yetkazib beruvchi kichik startap Node.js'da ilova yozdi va buyurtmalarni MongoDB'da saqlaydi. Dastlabki ikki oyda ular Atlas'ning bepul klasteridan foydalanib, g'oyani tez sinab ko'rishdi. Buyurtmalar soni o'sgach, uchta muammo paydo bo'ldi: kurer ilovasidagi ro'yxat sekin ochilardi, bepul klaster cheklovlariga yaqinlashildi, buyurtma ma'lumotlarida esa mijoz telefonlari va manzillari bor edi. Jamoa bazani O'zbekistondagi VPS'ga, ilova bilan bitta serverga ko'chirishga qaror qildi.
O'z serveringizda MongoDB: o'rnatish va himoya
MongoDB Community Edition'ni Ubuntu'da rasmiy MongoDB repozitoriyasidan o'rnatish tavsiya etiladi, chunki tizim paketlaridagi versiya eskirgan yoki umuman bo'lmasligi mumkin. O'rnatish buyruqlari versiyaga qarab o'zgaradi, shuning uchun ularni rasmiy hujjatlardan oling. O'rnatgandan keyingi eng muhim ish ikkita: bazani faqat serverning o'zidan ulanadigan qilish va autentifikatsiyani yoqish.
# /etc/mongod.conf
net:
port: 27017
bindIp: 127.0.0.1
security:
authorization: enabled
Avval ma'mur va ilova uchun alohida foydalanuvchi yarating. Ilova foydalanuvchisiga faqat o'z bazasiga o'qish va yozish huquqi beriladi, ma'mur paroli esa kundalik ishda ishlatilmaydi. Yangi sozlamalardan keyin sudo systemctl restart mongod bilan xizmatni qayta ishga tushiring.
mongosh
use admin
db.createUser({ user: "admin", pwd: passwordPrompt(), roles: [ { role: "root", db: "admin" } ] })
use dostavka
db.createUser({ user: "app", pwd: passwordPrompt(), roles: [ { role: "readWrite", db: "dostavka" } ] })
Endi ilova ichki manzil orqali ulanadi va bazaga tashqaridan kirish imkoni yo'q:
MONGO_URI=mongodb://app:PAROL@127.0.0.1:27017/dostavka?authSource=dostavka
Bir nechta hujjatni birga o'zgartiradigan tranzaksiyalar uchun MongoDB replika to'plamini (replica set) talab qiladi, hatto u bitta serverdan iborat bo'lsa ham. Autentifikatsiya yoqilgan replika to'plami uchun qo'shimcha ravishda kalit fayl sozlanadi, bu tartibni ham rasmiy hujjatlar bo'yicha bajaring.
Xotira, zaxira va kundalik xizmat
MongoDB'ning WiredTiger dvigateli standart holatda operativ xotiraning katta qismini kesh uchun oladi: taxminan (RAM − 1 GB) ning yarmi yoki 256 MB, qaysi biri katta bo'lsa. Kichik VPS'da MongoDB ilova bilan birga ishlasa, keshni storage.wiredTiger.engineConfig.cacheSizeGB parametri bilan cheklash foydali. Zaxira uchun mongodump va mongorestore ishlatiladi, buyruqni cron orqali har kuni ishga tushiring va arxivni boshqa joyga ham nusxalang.
mongodump --uri="mongodb://app:PAROL@127.0.0.1:27017/dostavka?authSource=dostavka" \
--archive=/backup/dostavka-$(date +%F).gz --gzip
mongorestore --uri="mongodb://app:PAROL@127.0.0.1:27017/dostavka?authSource=dostavka" \
--archive=/backup/dostavka-2026-11-04.gz --gzip --drop
Qaysi birini tanlash kerak
| Mezon | Atlas | O'z serveringiz (VPS) |
|---|---|---|
| Boshlash tezligi | Bir necha daqiqa | O'rnatish va sozlash kerak |
| Ma'muriy ish | Asosan xizmat bajaradi | Yangilash, zaxira, monitoring sizda |
| O'zbekistondan kechikish | Xorijiy mintaqa tufayli yuqoriroq | Ilova bilan bitta serverda minimal |
| Shaxsiy ma'lumot joylashuvi | Xorijda | O'zbekistonda saqlash mumkin |
| Nazorat | Xizmat imkoniyatlari bilan cheklangan | To'liq |
Atlas tajriba, prototip va mijozlari asosan xorijda bo'lgan loyihalar uchun qulay, ayniqsa jamoada server ma'muri bo'lmasa. Foydalanuvchilari O'zbekistonda bo'lgan, shaxsiy ma'lumot saqlaydigan va tezlik muhim bo'lgan loyihalar uchun esa mamlakat ichidagi VPS'da o'z MongoDB serveringiz odatda to'g'riroq tanlov. Bunday serverni sayt.uz kabinetidan buyurtma qilib, ilova va bazani bitta joyda ushlab turish mumkin.