Firebase Firestore — bu nima, hujjatlar va NoSQL kolleksiyalari

Muallif: IT Sectr Nashr etilgan: 2026-04-28 O'qish vaqti: 10 daq

Firebase Firestore — mobil va web ilovalar uchun real vaqt rejimida avtomatik sinxronizatsiyaga ega Google-ning moslashuvchan NoSQL hujjat ma'lumotlar bazasi. Ma'lumotlar kolleksiyalar va hujjatlar shaklida saqlanadi, ularning har biri ixtiyoriy tuzilishdagi maydonlar to'plamini o'z ichiga oladi. Google, 2026 ma'lumotlariga ko'ra, Firestore ko'p mintaqali replikatsiyani avtomatik qayta tiklash bilan qo'llab-quvvatlaydi. SDK o'zgarishlarni serverga WebSocket ulanishi orqali 100 millisekunddan kam kechikish bilan yuboradi.

Asosiy nuqtalar

  • Firestore — so'rovlar, indekslar va tranzaksiyalarni qo'llab-quvvatlaydigan NoSQL hujjat ma'lumotlar bazasi.
  • Ma'lumotlar sinxronizatsiyasi real vaqt rejimida WebSocket orqali ishlaydi — serverdagi o'zgarishlar darhol barcha mijozlarga yetkaziladi.
  • Firestore oflayn rejimini qo'llab-quvvatlaydi — ma'lumotlar mahalliy keshlanadi va ulanish tiklanganda sinxronlanadi.
  • Sharding yoki replikatsiya sozlamasisiz millionlab bir vaqtli ulanishlargacha avtomatik masshtablash.
  • Security Rules xavfsizlik qoidalari server kodeksiz ma'lumotlarga kirishni boshqarish imkonini beradi.

Firebase Firestore nima

Firebase Firestore — Google tomonidan 2019-yilda Realtime Database vorisi sifatida chiqarilgan bulutli NoSQL ma'lumotlar bazasi. Firestore Google Cloud Spanner va Google Cloud Datastore infratuzilmasi asosida qurilgan bo'lib, bitta tranzaksiya doirasida ma'lumotlarning qat'iy izchilligini va avtomatik ko'p mintaqali replikatsiyani ta'minlaydi. SDK Android, iOS, Web (JavaScript), Flutter, Kotlin Multiplatform va Unity-ni qo'llab-quvvatlaydi.

Realtime Database-dan evolyutsiya

Firestore Google I/O 2017-da “Cloud Firestore” sifatida e'lon qilindi — Realtime Database-ning asosiy cheklovlarini bartaraf etuvchi yechim: murakkab so'rovlarni qo'llab-quvvatlamaslik, ma'lumotlarni bir necha tugunlarda masshtablay olmaslik va zaif izchillik. Google (2026) ma'lumotlariga ko'ra, Firestore kuniga 1 trilliondan ortiq so'rovni qayta ishlaydi va yangi Firebase loyihalarining 80% uchun standart ma'lumotlar bazasi hisoblanadi. Biroq, Realtime Database sodda JSON tuzilishi tufayli ultra past kechikish stsenariylari (o'yinlar, birgalikda tahrirlash) uchun dolzarbligicha qolmoqda.

Firestore-ning bepul cheklovlari

Firestore pay-as-you-go modeli bo'yicha taqdim etiladi, Spark tarifida saxovatli bepul limit bilan: 1 GB xotira, oyiga 10 GB tarmoq trafigi, kuniga 50 ming o'qish operatsiyasi, 20 ming yozish operatsiyasi va 20 ming o'chirish operatsiyasi. Blaze tarifida barchasi bepul, ortib qolganlar esa tariflanadi: 100 ming o'qish operatsiyasi uchun $0.06, 100 ming yozish operatsiyasi uchun $0.18. Google (2026) ma'lumotlariga ko'ra, loyihalarning 90% bepul limitdan chiqmaydi.

Ma'lumotlar modeli: kolleksiyalar, hujjatlar va maydonlar

Ma'lumotlar modeli Firestore ierarxik tarzda tashkil etilgan: ildiz kolleksiyalarni o'z ichiga oladi, har bir kolleksiya hujjatlarni o'z ichiga oladi, har bir hujjat maydonlarni (primitiv turlar, massivlar, Map) va ichki kolleksiyalarni (subcollections) o'z ichiga oladi. Kolleksiyalarning ichki joylashish chuqurligi cheklanmagan, ammo hujjat to'g'ridan-to'g'ri boshqa hujjatni o'z ichiga olmaydi — faqat havola (Reference type) orqali.

Kolleksiyalar va hujjatlar

Kolleksiya — avtomatik yaratilgan yoki belgilangan identifikatorlarga ega hujjatlar konteyneri. Har bir hujjat hajmi 1 MiB gacha bo'lgan JSON-ga o'xshash obyektdir. Hujjat maydonlari satrlar, raqamlar, mantiqiy qiymatlar, massivlar, Map, vaqt tamg'alari (Timestamp), geografik nuqtalar (GeoPoint) va boshqa hujjatlarga havolalar (Reference) bo'lishi mumkin. Hujjat hajmi barcha maydon nomlarini hisobga olgan holda 1 MiB bilan cheklangan.

Firestore maydon turiMisolIndekslanadi
String“user@example.com”Ha
Number42, 3.14Ha
Booleantrue, falseHa
Array[1, 2, 3]Faqat contains
Map{“ichki”: “qiymat”}Ha (kalitlar bo'yicha)
Timestamp2026-07-03T12:00:00ZHa
Referenceusers/user123Ha

Paketli yozish va tranzaksiyalar

Firestore ma'lumotlar bazasi darajasida atom tranzaksiyalarini qo'llab-quvvatlaydi. Tranzaksiya bir nechta hujjatlarni o'qishi va yozishi mumkin — Commit barcha o'zgarishlarni atom tarzda qo'llaydi yoki hech birini qo'llamaydi. Bitta tranzaksiyada maksimum 500 operatsiya, vaqt chegarasi 60 soniya. Paketli yozish (batch write) — o'qish bosqichisiz notranzaksiya atom yozish operatsiyasi. Tranzaksiyalar moliyaviy operatsiyalar, joy bron qilish va inventarizatsiya uchun muhim ahamiyatga ega.

Firestore va Realtime Database solishtiruvi

Firestore va Realtime Database o'rtasidagi tanlov loyiha talablariga bog'liq. Ikkala ma'lumotlar bazasi Firebase ekotizimiga kiradi, real vaqt rejimida sinxronizatsiyani ta'minlaydi va barcha platformalarda mavjud, ammo ma'lumotlar modeli, masshtablash va narxlash bo'yicha tubdan farqlanadi.

Asosiy farqlar

Realtime Database ma'lumotlarni yagona JSON daraxtida saqlaydi, bu sodda tuzilmalar uchun qulay, ammo 3 darajadan chuqur ichki joylashishda masshtablashni qiyinlashtiradi. Firestore avtomatik sharding bilan kolleksiya-hujjat modelidan foydalanadi, bu esa ishlash pasayishisiz millionlab hujjatlargacha masshtablash imkonini beradi. Google (2026) ma'lumotlariga ko'ra, Firestore bitta kolleksiyaga 10 minggacha bir vaqtli ulanishni tezlikni yo'qotmasdan qo'llab-quvvatlaydi, Realtime Database — bitta instansiyaga 200 minggacha ulanishni.

Narxlash

Realtime Database uzatilgan ma'lumotlar hajmiga (yuklab olingan bayt) va bir vaqtli ulanishlar soniga qarab tariflanadi. Firestore — operatsiyalar soniga qarab (o'qish, yozish, o'chirish). Tez-tez kichik yangilanishlar bo'lgan ilovalar (chat, bildirishnomalar) uchun Firestore odatda foydaliroq — har bir yozish operatsiyasi ma'lumotlar hajmidan qat'iy nazar belgilangan narxga ega. Katta hajmdagi ma'lumotlarni kamdan-kam o'qiydigan ilovalar uchun Realtime Database arzonroq bo'lishi mumkin.

Google (2026) tavsiyasi: yangi loyihalar uchun standart ma'lumotlar bazasi sifatida Firestore-dan, o'yinlar va minimal kechikish (50 ms dan kam) muhim bo'lgan va ma'lumotlar tuzilishi tekis bo'lgan ilovalar uchun Realtime Database-dan foydalaning. Ikkala ma'lumotlar bazasi bir loyihada bir vaqtda ishlashi mumkin.

Firestore-da so'rovlar, indekslar va sahifalash

Firestore so'rovlari filtrlash, tartiblash va limit bilan kolleksiyalar yoki kolleksiya guruhlarida bajariladi. Har bir so'rov mijoz tomonida filtr bilan butun JSON daraxtini aylanib chiqish bo'lgan Realtime Database-dan farqli o'laroq, Firestore barcha so'rovlarni serverda, oldindan yaratilgan indekslardan foydalanib bajaradi. Bu so'rov murakkabligi faqat natija hajmiga bog'liq bo'lishini, kolleksiya hajmiga bog'liq emasligini kafolatlaydi.

So'rov turlari

Firestore qo'llab-quvvatlaydi bir yoki bir necha maydon bo'yicha filtrlash (equality, range, in, array-contains, array-contains-any), o'sish va kamayish tartibida saralash, limit va sahifalash uchun kursorlar. Cheklovlar: turli maydonlar bo'yicha filtrlash bilan murakkab so'rovlar (where price > 10 AND where category == “books”) murakkab indeksni talab qiladi; OR so'rovlari taqiqlangan (o'rniga in va array-contains-any ishlatiladi) va turli maydonlar bo'yicha tengsizlik so'rovlari taqiqlangan.

kotlin
data class Product(
    val name: String = "",
    val category: String = "",
    val price: Double = 0.0,
    val inStock: Boolean = false
)

suspend fun FirestoreRepository.queryProducts(): List<Product> {
    return firestore
        .collection("products")
        .whereEqualTo("category", "electronics")
        .whereGreaterThanOrEqualTo("price", 100.0)
        .whereLessThan("price", 500.0)
        .orderBy("price")
        .limit(20)
        .get()
        .await()
        .toObjects(Product::class.java)
}

Avtomatik va murakkab indekslar

Firestore yakka maydonlar uchun avtomatik indekslar yaratadi — bitta maydon bo'yicha so'rovlar hech qanday sozlamasiz ishlaydi. Ikki yoki undan ko'p maydonli so'rovlar uchun (filtrlash + saralash) murakkab indekslar yaratiladi. Birinchi so'rov yuborilganda, Firestore konsolga havola bilan xato qaytaradi, u erda indeksni bir tugma bilan yaratish mumkin. Ma'lumotlar bazasi uchun maksimum 200 murakkab indeks. Indekslar firebase CLI orqali eksport va import qilinishi mumkin.

Firestore-ni Android-ga integratsiyasi

Firestore-ni ulash Android ilovasiga Firebase BOM orqali standart tarzda amalga oshiriladi. firebase-firestore-ktx bog'liqligi qo'shilgandan so'ng, FirebaseFirestore obyekti getInstance() orqali mavjud bo'ladi — qo'shimcha kalitlar yoki tokenlarsiz. Firestore boshqa xizmatlar bilan bir xil Firebase loyihasidan foydalanadi.

groovy
dependencies {
    implementation(platform("com.google.firebase:firebase-bom:33.1.0"))
    implementation("com.google.firebase:firebase-firestore-ktx")
}

// Initsiallashtirish
val db = FirebaseFirestore.getInstance()

Ma'lumotlarni o'qish va yozish

Firestore ikkita o'qish rejimini ta'minlaydi: bir martalik (get) va real vaqt (addSnapshotListener). Bir martalik o'qish hujjatni bir marta oladi — sozlamalar va konfiguratsiya uchun foydali. Tinglovchi o'zgarishlarga obuna bo'ladi — hujjatning har qanday yangilanishi avtomatik ravishda barcha ulangan mijozlarga real vaqtda yangilangan ma'lumotlarni yetkazadi. set() hujjat yaratadi yoki qayta yozadi, update() butun hujjatni qayta yozmasdan faqat belgilangan maydonlarni o'zgartiradi.

Google (2026) ma'lumotlariga ko'ra, real vaqtda Firestore bilan o'rta hajmdagi ilovalar (100 ming DAU) oyiga taxminan 5-10 GB chiquvchi trafik iste'mol qiladi. Oflayn keshdan (Persistence Cache) foydalanish qayta yuklashlar hajmini 60-70% kamaytiradi, chunki SDK ulanish tiklanganda faqat o'zgartirilgan hujjatlarni yuklaydi.

Oflayn rejim

Persistence Cache — Firestore-ning internetsiz ishlash uchun o'rnatilgan mexanizmi. SDK avtomatik ravishda barcha o'qilgan hujjatlarni qurilmada keshlaydi (Android-da 500 MiB gacha). Ulanish uzilganda, o'qish keshdan davom etadi, yozish navbatga qo'yiladi. Ulanish tiklanganda, barcha kechiktirilgan operatsiyalar serverga yuboriladi va kesh server bilan sinxronlanadi. Mojarolarni boshqarish uchun snapshot-metadata.hasPendingWrites va setOptions(ServerTimestampBehavior) ishlatiladi.

Xavfsizlik qoidalari va ma'lumotlar validatsiyasi

Security Rules — Firestore-ga kirishni chegaralash uchun deklarativ til bo'lib, har bir o'qish yoki yozish operatsiyasidan oldin Google serverida bajariladi. Rules server kodini talab qilmaydi — ular Firebase konsolida yoki firebase CLI orqali yoziladi va Git orqali versiyalanadi. Har bir operatsiya qoidalarga muvofiqlik uchun tekshiriladi va buzilish holatida PERMISSION_DENIED xatosi qaytariladi.

Qoidalar tuzilishi

Firestore Security Rules qoidalari match bloklari va allow ifodalaridan iborat. match kolleksiya yoki hujjatga yo'lni belgilaydi, allow ruxsat etilgan operatsiyalarni (read, write, create, update, delete) va shartni — mantiqiy qiymat qaytaruvchi JavaScript-ga o'xshash ifodani belgilaydi. Qoidalar autentifikatsiyani (request.auth), so'rov ma'lumotlarini (request.resource.data), mavjud ma'lumotlarni (resource.data), vaqtni (request.time) va yo'lni (request.path) tekshirishi mumkin.

javascript
rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read: if request.auth != null;
      allow write: if request.auth.uid == userId;
    }

    match /products/{productId} {
      allow read: if true;
      allow create: if request.auth.token.role == "admin";
      allow update: if resource.data.authorId == request.auth.uid;
    }
  }
}

Ma'lumotlar validatsiyasi

Security Rules server tomonida turlar va qiymatlarning validatsiyasini qo'llab-quvvatlaydi. Narx manfiy yoki nom bo'sh bo'lsa, yozish taqiqlanishi mumkin. Barcha tekshirishlar Google serverida yozishdan oldin bajariladi — bu mijozdan (Android, iOS, Web, Admin SDK) qat'iy nazar ma'lumotlar izchilligini kafolatlaydi. Rules zararli Admin SDK-dan himoya qilmaydi — u ta'rifiga ko'ra qoidalarni chetlab o'tadi. To'liq himoya uchun Transaction Functions va Firebase Extensions-dan foydalaning.

Tez-tez so'raladigan savollar

Firestore va Realtime Database o'rtasidagi farq nima?

Firestore indekslar va murakkab so'rovlar bilan hujjat modelidan foydalanadi. Realtime Database ma'lumotlarni JSON daraxtida saqlaydi va kamroq kechikishni ta'minlaydi. Firestore yangi loyihalar uchun tavsiya etiladi.

Firestore qanday masshtablanadi?

Firestore avtomatik ravishda ma'lumotlarni kolleksiyalar bo'yicha shardlaydi — replikatsiya yoki sharding sozlamasi talab qilinmaydi. Baza kolleksiyada millionlab hujjatlar va minglab bir vaqtli ulanishlarni degradatsiyasiz bardosh beradi.

Realtime Database-dan Firestore-ga ma'lumotlarni migratsiya qilish mumkinmi?

Ha, Firebase Console-dan foydalaning — “Export to Firestore” funksiyasi Realtime Database-ning JSON tuzilmasini bir necha marta bosish bilan Firestore kolleksiyalari va hujjatlariga aylantiradi. Ichki tugunlar ichki kolleksiyalarga aylanadi.

Firestore oflayn yozishda mojarolarni qanday hal qiladi?

Last write wins — odatda, Firestore bir vaqtli yozishda mojarolarni hal qilish uchun “oxirgi yozuv g'alaba qozonadi” siyosatidan foydalanadi. Maxsus ishlov berish uchun qayta o'qish bilan tranzaksiyalardan foydalaning.

Firestore qancha bepul xotira beradi?

Bepul limit Spark tarifi: 1 GB xotira, kuniga 50 ming o'qish va 20 ming yozish operatsiyasi. Bu MVP va kam yuklamali ilovalar uchun yetarli.

Xulosa

  • Firebase Firestore — real vaqt sinxronizatsiyasi va avtomatik masshtablash bilan Google-ning NoSQL hujjat ma'lumotlar bazasi.
  • Ma'lumotlar modeli: kolleksiyalar → hujjatlar → maydonlar (String, Number, Boolean, Array, Map, Timestamp, Reference, GeoPoint).
  • Murakkab shartlar uchun filtrlash, saralash, sahifalash va murakkab indekslar bilan murakkab so'rovlarni qo'llab-quvvatlaydi.
  • Oflayn rejim qurilmada 500 MiB gacha ma'lumotlarni keshlaydi, ulanish tiklanganda avtomatik sinxronlanadi.
  • Security Rules — backend kodini yozmasdan turlar va qiymatlar validatsiyasi bilan server tomonidagi kirish huquqi tili.
  • Ko'p mintaqali replikatsiya avtomatik qayta tiklash bilan — ma'lumotlar ma'lumotlar markazi ishdan chiqqanda ham mavjud.
  • Standart ma'lumotlar bazasi sifatida yangi loyihalar uchun tavsiya etiladi, Realtime Database — o'yinlar va ultra past kechikish stsenariylari uchun.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing