Firebase Firestore — bu nədir, sənədlər və NoSQL kolleksiyaları

Müəllif: IT Sectr Dərc olunub: 2026-04-28 Oxuma vaxtı: 10 dəq

Firebase Firestore — mobil və veb tətbiqlər üçün real vaxt rejimində avtomatik sinxronizasiya ilə Google-un çevik NoSQL sənəd verilənlər bazasıdır. Verilənlər kolleksiyalar və sənədlər şəklində saxlanılır, hər biri ixtiyari strukturlu sahələr dəsti ehtiva edir. Google, 2026 məlumatlarına görə, Firestore çoxregionlu replikasiyanı avtomatik bərpa ilə dəstəkləyir. SDK dəyişiklikləri WebSocket əlaqəsi vasitəsilə 100 millisaniyədən az gecikmə ilə serverə göndərir.

Əsas məqamlar

  • Firestore — sorğular, indekslər və tranzaksiyaları dəstəkləyən NoSQL sənəd verilənlər bazasıdır.
  • Verilənlər sinxronizasiyası real vaxt rejimində WebSocket vasitəsilə işləyir — serverdəki dəyişikliklər dərhal bütün müştərilərə çatdırılır.
  • Firestore oflayn rejimi dəstəkləyir — verilənlər lokal olaraq keşlənir və əlaqə bərpa edildikdə sinxronlaşdırılır.
  • Şardinq və ya replikasiya konfiqurasiyası olmadan milyonlarla eyni vaxtlı bağlantıya qədər avtomatik miqyaslama.
  • Security Rules təhlükəsizlik qaydaları server kodu olmadan verilənlərə girişi idarə etməyə imkan verir.

Firebase Firestore nədir

Firebase Firestore — Google tərəfindən 2019-cu ildə Realtime Database-in varisi olaraq buraxılmış bulud NoSQL verilənlər bazasıdır. Firestore Google Cloud Spanner və Google Cloud Datastore infrastrukturu üzərində qurulmuşdur, bir tranzaksiya çərçivəsində ciddi verilənlər ardıcıllığı və avtomatik çoxregionlu replikasiya təmin edir. SDK Android, iOS, Web (JavaScript), Flutter, Kotlin Multiplatform və Unity-ni dəstəkləyir.

Realtime Database-dən təkamül

Firestore Google I/O 2017-də “Cloud Firestore” olaraq elan edilmişdir — Realtime Database-in əsas məhdudiyyətlərini aradan qaldıran həll: mürəkkəb sorğuların dəstəklənməməsi, verilənlərin çox node-da miqyaslana bilməməsi və zəif ardıcıllıq. Google (2026) məlumatlarına görə, Firestore gündə 1 trilyondan çox sorğu emal edir və yeni Firebase layihələrinin 80%-i üçün standart verilənlər bazasıdır. Bununla belə, Realtime Database sadə JSON strukturu sayəsində ultra aşağı gecikmə ssenariləri (oyunlar, birgə redaktə) üçün aktual olaraq qalır.

Firestore-un pulsuz limitləri

Firestore pay-as-you-go modeli ilə təqdim olunur, Spark tarifində səxavətli pulsuz limitlə: 1 GB yaddaş, ayda 10 GB şəbəkə trafiki, gündə 50 min oxu əməliyyatı, 20 min yazma əməliyyatı və 20 min silmə əməliyyatı. Blaze tarifində bütün bunlar pulsuzdur, artıqlamalar isə tarifləşdirilir: 100 min oxu əməliyyatı üçün $0.06, 100 min yazma əməliyyatı üçün $0.18. Google (2026) məlumatlarına görə, layihələrin 90%-i pulsuz limitdən kənara çıxmır.

Verilənlər modeli: kolleksiyalar, sənədlər və sahələr

Verilənlər modeli Firestore iyerarxik şəkildə təşkil edilmişdir: kök kolleksiyaları ehtiva edir, hər kolleksiya sənədləri ehtiva edir, hər sənəd sahələri (primitiv tiplər, massivlər, Map) və iç-içə kolleksiyaları (subcollections) ehtiva edir. Kolleksiyaların iç-içəlik dərinliyi məhdud deyil, lakin sənəd birbaşa başqa sənəd ehtiva edə bilməz — yalnız istinad (Reference type) vasitəsilə.

Kolleksiyalar və sənədlər

Kolleksiya — avtomatik yaradılan və ya təyin edilən identifikatorları olan sənəd konteyneridir. Hər sənəd ölçüsü 1 MiB-ə qədər olan JSON-abənzer obyektdir. Sənəd sahələri sətirlər, ədədlər, məntiqi dəyərlər, massivlər, Map, zaman damğaları (Timestamp), coğrafi nöqtələr (GeoPoint) və digər sənədlərə istinadlar (Reference) ola bilər. Sənədin ölçüsü bütün sahə adları daxil olmaqla 1 MiB ilə məhdudlaşdırılıb.

Firestore sahə tipiNümunəİndekslənir
String“user@example.com”Bəli
Number42, 3.14Bəli
Booleantrue, falseBəli
Array[1, 2, 3]Yalnız contains
Map{“iç-içə”: “dəyər”}Bəli (açarlar üzrə)
Timestamp2026-07-03T12:00:00ZBəli
Referenceusers/user123Bəli

Toplu yazma və tranzaksiyalar

Firestore verilənlər bazası səviyyəsində atomar tranzaksiyaları dəstəkləyir. Tranzaksiya çoxsaylı sənədləri oxuya və yaza bilər — Commit bütün dəyişiklikləri atomar şəkildə tətbiq edir və ya heç birini tətbiq etmir. Bir tranzaksiyada maksimum 500 əməliyyat, vaxt limiti 60 saniyə. Toplu yazma (batch write) — oxuma mərhələsi olmayan qeyri-tranzaksiya atomar yazma əməliyyatıdır. Tranzaksiyalar maliyyə əməliyyatları, yer rezervasiyası və inventar uçotu üçün kritik əhəmiyyət daşıyır.

Firestore və Realtime Database müqayisəsi

Firestore və Realtime Database arasında seçim layihənin tələblərindən asılıdır. Hər iki verilənlər bazası Firebase ekosisteminə daxildir, real vaxt rejimində sinxronizasiya təmin edir və bütün platformalarda mövcuddur, lakin verilənlər modeli, miqyaslama və qiymət baxımından prinsipial fərqlənir.

Əsas fərqlər

Realtime Database verilənləri vahid JSON ağacında saxlayır, bu sadə strukturlar üçün əlverişlidir, lakin 3 səviyyədən dərin iç-içəlikdə miqyaslamanı çətinləşdirir. Firestore avtomatik şardinq ilə kolleksiya-sənəd modelindən istifadə edir ki, bu da performans itkisi olmadan milyonlarla sənədə qədər miqyaslamağa imkan verir. Google (2026) məlumatlarına görə, Firestore bir kolleksiyaya 10 minə qədər eyni vaxtlı bağlantını sürət itkisi olmadan dəstəkləyir, Realtime Database bir instansiyaya 200 min bağlantıya qədər dəstəkləyir.

Qiymətləndirmə

Realtime Database ötürülən verilənlərin həcminə (endirilən bayt) və eyni vaxtlı bağlantıların sayına görə tarifləşdirilir. Firestore — əməliyyatların sayına görə (oxu, yazma, silmə). Tez-tez kiçik yeniləmələr olan tətbiqlər üçün (söhbət, bildirişlər) Firestore adətən daha sərfəlidir — hər yazma əməliyyatı verilənlər ölçüsündən asılı olmayaraq sabit qiymətə başa gəlir. Böyük həcmli verilənlərin nadir oxunması olan tətbiqlər üçün Realtime Database daha ucuz ola bilər.

Google (2026) tövsiyəsi: yeni layihələr üçün standart verilənlər bazası olaraq Firestore-dan, oyunlar və minimal gecikmənin (50 ms-dən az) kritik olduğu və verilənlər strukturunun düz olduğu tətbiqlər üçün Realtime Database-dən istifadə edin. Hər iki verilənlər bazası eyni layihədə eyni vaxtda işləyə bilər.

Firestore-da sorğular, indekslər və səhifələmə

Firestore sorğuları filtrasiya, sıralama və limit ilə kolleksiyalara və ya kolleksiya qruplarına yerinə yetirilir. Hər sorğunun müştəri tərəfində filtrlə bütün JSON ağacının gəzilməsi olduğu Realtime Database-dən fərqli olaraq, Firestore bütün sorğuları serverdə, əvvəlcədən yaradılmış indekslərdən istifadə edərək yerinə yetirir. Bu, sorğunun mürəkkəbliyinin yalnız nəticənin ölçüsündən asılı olmasını, kolleksiyanın ölçüsündən asılı olmamasını təmin edir.

Sorğu növləri

Firestore dəstəkləyir bir və ya çox sahə üzrə filtrasiya (equality, range, in, array-contains, array-contains-any), artan və azalan sıralama, limit və səhifələmə üçün kursorlar. Məhdudiyyətlər: müxtəlif sahələr üzrə filtrasiya ilə mürəkkəb sorğular (where price > 10 AND where category == “books”) mürəkkəb indeks tələb edir; OR sorğuları qadağandır (in və array-contains-any istifadə olunur) və müxtəlif sahələr üzrə bərabərsizlik sorğuları qadağandır.

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 və mürəkkəb indekslər

Firestore tək sahələr üçün avtomatik indekslər yaradır — bir sahə üzrə sorğular heç bir konfiqurasiya olmadan işləyir. İki və ya daha çox sahəsi olan sorğular üçün (filtrasiya + sıralama) mürəkkəb indekslər yaradılır. İlk sorğu göndərildikdə Firestore konsola keçidlə xəta qaytarır, orada indeksi bir düymə ilə yaratmaq olar. Verilənlər bazası üçün maksimum 200 mürəkkəb indeks. İndekslər firebase CLI vasitəsilə ixrac və idxal edilə bilər.

Firestore-un Android-ə inteqrasiyası

Firestore-un qoşulması Android tətbiqinə Firebase BOM vasitəsilə standart şəkildə həyata keçirilir. firebase-firestore-ktx asılılığı əlavə edildikdən sonra FirebaseFirestore obyekti getInstance() vasitəsilə əldə edilə bilər — əlavə açarlar və ya tokenlər olmadan. Firestore digər xidmətlərlə eyni Firebase layihəsindən istifadə edir.

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

// İnisiallaşdırma
val db = FirebaseFirestore.getInstance()

Verilənlərin oxunması və yazılması

Firestore iki oxu rejimi təmin edir: birdəfəlik (get) və real vaxt (addSnapshotListener). Birdəfəlik oxuma sənədi bir dəfə alır — parametrlər və konfiqurasiya üçün faydalıdır. Dinləyici dəyişikliklərə abunə olur — sənədin istənilən yeniləməsi avtomatik olaraq bütün qoşulmuş müştərilərə real vaxt rejimində yenilənmiş verilənləri çatdırır. set() sənəd yaradır və ya üzərinə yazır, update() bütün sənədi üzərinə yazmadan yalnız göstərilən sahələri dəyişir.

Google (2026) məlumatlarına görə, real vaxt rejimində Firestore ilə orta ölçülü tətbiqlər (100 min DAU) ayda təxminən 5-10 GB çıxış trafiki istehlak edir. Oflayn keşdən (Persistence Cache) istifadə təkrar yükləmələrin həcmini 60-70% azaldır, çünki SDK əlaqə bərpa edildikdə yalnız dəyişdirilmiş sənədləri yükləyir.

Oflayn rejim

Persistence Cache — Firestore-un internet olmadan işləmək üçün daxili mexanizmidir. SDK avtomatik olaraq bütün oxunmuş sənədləri cihazda keşləyir (Android-də 500 MiB-ə qədər). Əlaqə itirildikdə oxuma keşdən davam edir, yazma növbəyə qoyulur. Əlaqə bərpa edildikdə bütün təxirə salınmış əməliyyatlar serverə göndərilir və keş serverlə sinxronlaşdırılır. Münaqişələrin idarə edilməsi üçün snapshot-metadata.hasPendingWrites və setOptions(ServerTimestampBehavior) istifadə olunur.

Təhlükəsizlik qaydaları və verilənlərin validasiyası

Security Rules — Firestore-a girişin məhdudlaşdırılması üçün deklarativ dildir, Google serverində hər oxu və ya yazma əməliyyatından əvvəl icra olunur. Rules server kodu tələb etmir — onlar Firebase konsolunda və ya firebase CLI vasitəsilə yazılır və Git vasitəsilə versiyalanır. Hər əməliyyat qaydalara uyğunluq üçün yoxlanılır və pozuntu halında PERMISSION_DENIED xətası qaytarılır.

Qaydaların strukturu

Firestore Security Rules qaydaları match bloklarından və allow ifadələrindən ibarətdir. match kolleksiyaya və ya sənədə yolu müəyyən edir, allow icazə verilən əməliyyatları (read, write, create, update, delete) və şərti — boolean qaytaran JavaScript bənzəri ifadəni təyin edir. Qaydalar autentifikasiyanı (request.auth), sorğu məlumatlarını (request.resource.data), mövcud məlumatları (resource.data), vaxtı (request.time) və yolu (request.path) yoxlaya bilər.

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;
    }
  }
}

Verilənlərin validasiyası

Security Rules server tərəfində tiplərin və dəyərlərin validasiyasını dəstəkləyir. Qiymət mənfi olduqda və ya ad boş olduqda yazma qadağan edilə bilər. Bütün yoxlamalar Google serverində yazmadan əvvəl yerinə yetirilir — bu, müştəridən (Android, iOS, Web, Admin SDK) asılı olmayaraq verilənlərin ardıcıllığını təmin edir. Rules pis niyyətli Admin SDK-dan qorumur — o, tərifinə görə qaydaları yan keçir. Tam qoruma üçün Transaction Functions və Firebase Extensions-dən istifadə edin.

Tez-tez verilən suallar

Firestore və Realtime Database arasında fərq nədir?

Firestore indekslər və mürəkkəb sorğular ilə sənəd modelindən istifadə edir. Realtime Database verilənləri JSON ağacında saxlayır və daha az gecikmə təmin edir. Firestore yeni layihələr üçün tövsiyə olunur.

Firestore necə miqyaslanır?

Firestore avtomatik olaraq verilənləri kolleksiyalar üzrə şardinq edir — replikasiya və ya şardinq konfiqurasiyası tələb olunmur. Baza kolleksiyada milyonlarla sənəd və minlərlə eyni vaxtlı bağlantını deqradasiya olmadan davam gətirir.

Realtime Database-dən Firestore-a məlumat miqrasiyası mümkündürmü?

Bəli, Firebase Console-dan istifadə edin — “Export to Firestore” funksiyası Realtime Database-in JSON strukturunu bir neçə kliklə Firestore kolleksiyalarına və sənədlərinə çevirir. İç-içə düyünlər iç-içə kolleksiyalara çevrilir.

Firestore oflayn yazma zamanı münaqişələri necə həll edir?

Last write wins — standart olaraq Firestore eyni vaxtlı yazma zamanı münaqişələrin həlli üçün “son yazı qalib gəlir” siyasətindən istifadə edir. Xüsusi emal üçün təkrar oxuma ilə tranzaksiyalardan istifadə edin.

Firestore nə qədər pulsuz yaddaş verir?

Pulsuz limit Spark tarifi: 1 GB yaddaş, gündə 50 min oxu və 20 min yazma əməliyyatı. Bu MVP və az yükü olan tətbiqlər üçün kifayətdir.

Nəticə

  • Firebase Firestore — real vaxt sinxronizasiyası və avtomatik miqyaslama ilə Google-un NoSQL sənəd verilənlər bazası.
  • Verilənlər modeli: kolleksiyalar → sənədlər → sahələr (String, Number, Boolean, Array, Map, Timestamp, Reference, GeoPoint).
  • Mürəkkəb şərtlər üçün filtrasiya, sıralama, səhifələmə və mürəkkəb indekslərlə mürəkkəb sorğuları dəstəkləyir.
  • Oflayn rejim cihazda 500 MiB-ə qədər verilənləri keşləyir, əlaqə bərpa edildikdə avtomatik sinxronlaşdırılır.
  • Security Rules — backend kodu yazmadan tiplərin və dəyərlərin validasiyası ilə server tərəfli giriş hüququ dilidir.
  • Çoxregionlu replikasiya avtomatik bərpa ilə — verilənlər hətta məlumat mərkəzinin sıradan çıxması halında belə əlçatandır.
  • Standart verilənlər bazası olaraq yeni layihələr üçün tövsiyə olunur, Realtime Database — oyunlar və ultra aşağı gecikmə ssenariləri üçün.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun