Firebase Firestore: apa itu, NoSQL dan cara kerjanya

Penulis: IT Sectr Diterbitkan: 2026-03-12 Waktu membaca: 10 mnt

Firebase Firestore adalah database cloud NoSQL real-time dari Google, dirancang untuk aplikasi mobile dan web. Database ini menyimpan data dalam bentuk koleksi dan dokumen dengan sinkronisasi otomatis antar klien. Menurut dokumentasi Firebase, 2025, Firestore mendukung deployment multi-regional dengan konsistensi terjamin dan menyediakan penskalaan otomatis tanpa perlu mengelola server. Database ini terintegrasi dengan Firebase Authentication dan Cloud Functions untuk membangun backend lengkap tanpa infrastruktur server sendiri.

Poin Utama

  • Firestore adalah database cloud NoSQL real-time dengan sinkronisasi data otomatis antar klien.
  • Data diorganisasikan dalam koleksi dan dokumen dengan skema fleksibel yang tidak memerlukan deskripsi field sebelumnya.
  • Mendukung akses offline: data di-cache di perangkat dan disinkronkan saat koneksi dipulihkan.
  • Skalabel secara otomatis hingga jutaan koneksi simultan tanpa konfigurasi server manual.
  • Terintegrasi dengan Firebase Authentication dan Cloud Functions untuk membangun logika server tanpa backend sendiri.

Apa itu Firebase Firestore?

Firebase Firestore adalah database NoSQL yang fleksibel dan skalabel, diluncurkan oleh Google pada tahun 2019 sebagai evolusi dari Firebase Realtime Database. Database ini menyimpan data dalam bentuk koleksi dokumen, di mana setiap dokumen berisi sepasang key-value. Berbeda dengan database relasional tradisional, Firestore tidak memerlukan skema yang ditentukan sebelumnya — struktur data terbentuk secara dinamis berdasarkan dokumen yang ditulis.

Perbedaan utama Firestore dari database cloud klasik adalah sinkronisasi real-time bawaan. Ketika data berubah di server, semua klien yang terhubung menerima pembaruan melalui koneksi WebSocket permanen. Ini menghilangkan kebutuhan polling server manual dan memungkinkan pembangunan aplikasi dengan pembaruan langsung: chat, feed aktivitas, editor kolaboratif, dan sistem monitoring.

Database ini tersedia di semua platform utama: Android, iOS, Web (JavaScript) dan bahasa server melalui Admin SDK. Firestore menyediakan SDK untuk Swift, Kotlin, JavaScript, Python, Go, Java, dan Node.js. Menurut data Google, Firestore memproses lebih dari 100 miliar kueri per hari di seluruh ekosistem Firebase, yang menegaskan keandalannya sebagai basis untuk aplikasi produksi.

Konsep dasar: koleksi dan dokumen

Di Firestore, data diorganisasikan dalam struktur hierarkis. Koleksi adalah wadah dokumen, mirip dengan tabel di SQL, tetapi tanpa skema tetap. Dokumen adalah record yang berisi field dari berbagai tipe: string, angka, nilai boolean, array, objek bersarang, dan titik geo. Dokumen dapat berisi subkoleksi, memungkinkan pembangunan struktur data bersarang dengan kedalaman berapa pun.

kotlin
val db = FirebaseFirestore.getInstance()

val user = hashMapOf(
    "name" to "Anna Petrova",
    "email" to "anna@example.com",
    "age" to 28,
    "isActive" to true
)

db.collection("users")
    .add(user)
    .addOnSuccessListener { docRef ->
        Log.d("TAG", "Dokumen ditambahkan dengan ID: ${docRef.id}")
    }

Setiap dokumen dalam koleksi memiliki pengidentifikasi unik yang dapat dihasilkan secara otomatis atau diatur secara manual. Firestore secara otomatis mengindeks semua field dokumen, memungkinkan eksekusi kueri kompleks dengan pemfilteran, pengurutan, dan pembatasan jumlah hasil tanpa konfigurasi indeks sebelumnya.

Firebase Firestore vs Realtime Database: perbandingan

Firestore dan Firebase Realtime Database adalah dua database cloud real-time dari Google. Meskipun keduanya menyediakan sinkronisasi real-time, keduanya memiliki perbedaan mendasar dalam model data, penskalaan, dan harga. Memahami perbedaan ini sangat penting saat memilih database yang tepat untuk proyek tertentu.

KarakteristikFirestoreRealtime Database
Model dataKoleksi dan dokumenPohon JSON tunggal
KonsistensiKuat (strong consistency)Eventual consistency
KueriKompleks dengan pemfilteran dan pengurutanHanya pemfilteran berdasarkan satu parameter
PenskalaanOtomatis, multi-regionalSatu region, hingga 200k koneksi
HargaPer operasi baca/tulis/hapusPer volume data yang ditransfer

Perbedaan arsitektur utama adalah model data. Realtime Database menyimpan semuanya dalam satu pohon JSON besar, yang mempersulit kueri dengan tingkatan bersarang. Firestore menggunakan koleksi dan dokumen, yang memungkinkan eksekusi kueri kompleks dengan beberapa kondisi. Selain itu, Firestore menyediakan konsistensi data yang kuat: setelah penulisan berhasil, semua pembacaan berikutnya dijamin mengembalikan data terkini.

Skalabilitas dan struktur data

Firestore menskala secara otomatis hingga jutaan koneksi simultan berkat arsitektur multi-regional. Realtime Database terbatas pada satu region dan maksimum 200.000 koneksi simultan. Untuk proyek yang merencanakan audiens global, Firestore lebih disukai karena data secara otomatis direplikasi di antara beberapa pusat data Google.

Struktur data di Firestore memungkinkan pembangunan model hierarkis kompleks dengan subkoleksi. Misalnya, pengguna dapat memiliki subkoleksi "pesanan", dan setiap pesanan memiliki subkoleksi "produk". Di Realtime Database, tingkatan bersarang yang dalam seperti itu menyebabkan masalah kinerja pada kueri, karena seluruh jalur dari root ke node yang diinginkan dimuat.

Bagaimana sinkronisasi data di Firestore bekerja

Firestore menggunakan koneksi WebSocket permanen antara klien dan server untuk sinkronisasi data real-time. Saat aplikasi berlangganan perubahan dokumen atau koleksi melalui snapshot listener, SDK membuat saluran komunikasi di mana server mengirimkan pembaruan pada setiap perubahan data. Klien hanya menerima dokumen yang diubah, bukan seluruh koleksi setiap saat.

Mekanisme sinkronisasi didasarkan pada aliran peristiwa: added (dokumen muncul), modified (dokumen berubah), dan removed (dokumen dihapus). Pengembang dapat memproses setiap peristiwa secara terpisah, hanya memperbarui elemen UI yang sesuai. Ini memastikan kinerja tinggi bahkan dengan ribuan dokumen, karena hanya komponen yang berubah yang digambar ulang.

Akses offline dan caching

Salah satu keunggulan utama Firestore adalah dukungan bawaan untuk mode offline. SDK secara otomatis menyimpan cache semua data yang dibaca di perangkat dan terus bekerja tanpa jaringan. Saat aplikasi menulis data dalam mode offline, data tersebut ditempatkan dalam antrian lokal dan dikirim ke server saat koneksi dipulihkan. Untuk menyelesaikan konflik, digunakan strategi last-write-wins.

kotlin
val docRef = db.collection("cities").document("SF")

docRef.addSnapshotListener { snapshot, error ->
    if (error != null) {
        Log.w("TAG", "Kesalahan mendengarkan", error)
        return@addSnapshotListener
    }

    if (snapshot != null && snapshot.exists()) {
        Log.d("TAG", "Data saat ini: ${snapshot.data}")
    }
}

Ukuran cache dapat dikonfigurasi melalui FirestoreSettings. Secara default, nilai 100 MB digunakan, tetapi untuk aplikasi dengan pembacaan data intensif dapat ditingkatkan. Juga tersedia mode persistent disk cache yang bertahan dari restart aplikasi. Untuk mengelola ketersediaan mode offline, digunakan metode enableNetwork dan disableNetwork, yang memungkinkan penonaktifan sementara komunikasi jaringan.

Keamanan dan aturan akses Firestore

Firestore Security Rules adalah bahasa markup deklaratif untuk mengontrol akses data di tingkat server. Aturan menentukan siapa dan dalam kondisi apa dapat membaca dan menulis dokumen. Aturan bekerja sebelum eksekusi kueri dan tidak memerlukan logika server terpisah untuk otorisasi. Aturan diperiksa di sisi Firebase sebelum setiap pembacaan atau penulisan data.

Aturan akses dibangun berdasarkan prinsip akses yang diizinkan (allow). Secara default, semua akses dilarang. Pengembang secara bertahap membuka akses untuk operasi tertentu (read, write, create, update, delete) dalam kondisi tertentu. Kondisi dapat memeriksa autentikasi pengguna melalui request.auth, data kueri melalui request.resource, dan data yang ada melalui resource.

js
// Aturan akses Firestore
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Pengguna membaca dan menulis hanya datanya sendiri
    match /users/{userId} {
      allow read, write: if
          request.auth != null &&
          request.auth.uid == userId;
    }

    // Setiap pengguna terautentikasi dapat membaca postingan
    match /posts/{postId} {
      allow read: if request.auth != null;
      allow create: if request.auth != null
          && request.resource.data.author == request.auth.uid;
    }
  }
}

Validasi data melalui aturan

Selain kontrol akses, Security Rules memungkinkan validasi struktur dan tipe data yang ditulis. Misalnya, dapat diperiksa apakah field email cocok dengan ekspresi reguler, atau apakah usia tidak melebihi 120 tahun. Validasi dilakukan sebelum penulisan, mencegah penyimpanan data yang salah di server. Untuk memeriksa field, digunakan objek request.resource.data yang berisi seluruh dokumen yang akan ditulis.

Firestore juga mendukung koleksi yang hanya dapat diakses untuk penulisan server melalui Admin SDK, tanpa akses dari sisi klien. Ini berguna untuk menyimpan informasi layanan, kunci API, dan konfigurasi yang tidak boleh terlihat oleh pengguna. Untuk ini, dalam aturan cukup melarang semua operasi klien pada koleksi yang sesuai, hanya mengizinkan akses melalui Admin SDK di sisi server.

Contoh penggunaan Firebase Firestore di Android

Mari kita lihat contoh integrasi Firestore dalam aplikasi Android untuk membuat daftar tugas (todo). Aplikasi akan membaca tugas secara real-time, menambahkan yang baru, dan menandai yang selesai. Untuk kerja asinkron, digunakan antarmuka callback Firebase dan coroutine Kotlin.

Konfigurasi Firebase dan menambahkan dependensi

Sebelum memulai, perlu menghubungkan proyek ke Firebase melalui Firebase Console dan menambahkan file google-services.json ke modul aplikasi. Kemudian di build.gradle ditambahkan dependensi firebase-firestore-ktx dan plugin google-services. Versi pustaka harus sesuai dengan versi BoM Firebase saat ini untuk kompatibilitas semua komponen Firebase.

groovy
dependencies {
    // Firebase BoM — manajemen versi
    implementation platform("com.google.firebase:firebase-bom:33.0.0")
    implementation "com.google.firebase:firebase-firestore-ktx"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0"
}

Setelah konfigurasi, dibuat model data Task dan repositori untuk bekerja dengan Firestore. Model berisi field id, title, isCompleted, dan timestamp. Firestore secara otomatis men-serialize data class menjadi dokumen, menggunakan nama field sebagai kunci. Untuk membaca data, digunakan snapshot listener yang mengembalikan Flow melalui ekstensi snapshotFlow.

kotlin
data class Task(
    val id: String = "",
    val title: String = "",
    val isCompleted: Boolean = false,
    val createdAt: Timestamp? = null
)

class TaskRepository {
    private val tasksRef = FirebaseFirestore
        .getInstance()
        .collection("tasks")

    fun getTasks(): Flow<List<Task>> = tasksRef
        .orderBy("createdAt", Query.Direction.DESCENDING)
        .snapshotFlow()
        .map { snapshot ->
            snapshot?.toObjects(Task::class.java) ?: emptyList()
        }

    suspend fun addTask(title: String) {
        tasksRef.add(Task(title = title))
    }
}

View-model berlangganan ke Flow dari repositori dan meneruskan daftar tugas ke tingkat UI. Saat menambahkan tugas baru, fungsi suspend repositori dipanggil melalui coroutine scope. Firestore secara otomatis menyinkronkan perubahan di antara semua klien: jika satu pengguna menambahkan tugas, pengguna lain melihatnya secara real-time tanpa memuat ulang layar.

Pertanyaan yang Sering Diajukan

Apa perbedaan Firebase Firestore dengan database SQL biasa?

Firestore adalah database NoSQL dengan skema fleksibel tanpa tabel dan kueri JOIN. Data disimpan dalam koleksi dokumen, bukan dalam baris tabel. Berbeda dengan SQL, Firestore tidak memerlukan definisi skema sebelumnya dan menskala secara otomatis tanpa migrasi, tetapi tidak mendukung kueri transaksional kompleks antar koleksi.

Berapa biaya penggunaan Firebase Firestore?

Firestore memiliki batas gratis yang besar (paket Spark): 50.000 pembacaan, 20.000 penulisan, dan 20.000 penghapusan per hari. Setelah melebihi batas, digunakan paket Blaze dengan pembayaran sesuai pemakaian: $0,06 per 100.000 pembacaan dan $0,18 per 100.000 penulisan. Harga tergantung pada region dan volume data yang ditransfer.

Bagaimana Firestore menangani konflik data?

Firestore menggunakan strategi last-write-wins untuk menyelesaikan konflik: penulisan terakhir dalam dokumen sepenuhnya menggantikan yang sebelumnya. Untuk kontrol yang lebih halus, tersedia transaksi (operasi baca-tulis atomik) dan penulisan batch yang menjamin integritas pada operasi di beberapa dokumen.

Bisakah data dimigrasi dari Firebase Firestore?

Ya, Firestore mendukung ekspor dan impor data melalui Firebase Console atau gcloud CLI. Ekspor dilakukan dalam format Cloud Firestore Export dan disimpan di Google Cloud Storage. Data dapat dimigrasi antar proyek Firebase atau diunduh untuk analisis di BigQuery dan alat lainnya.

Apakah Firestore mendukung pencarian teks lengkap?

Firestore tidak memiliki pencarian teks lengkap bawaan. Untuk tugas ini, Google merekomendasikan integrasi dengan Algolia atau Meilisearch, atau penggunaan Cloud Functions dengan Elasticsearch. Kueri bawaan Firestore hanya mendukung pemeriksaan kesetaraan, rentang, dan keberadaan field tanpa pencarian substring.

Ringkasan

  • Firebase Firestore adalah database cloud NoSQL real-time dengan koleksi dan dokumen yang menskala secara otomatis di bawah beban.
  • Sinkronisasi bawaan melalui WebSocket memastikan pembaruan data di semua klien tanpa polling server manual.
  • Akses offline dengan caching memungkinkan aplikasi berfungsi penuh tanpa internet dan sinkronisasi otomatis saat jaringan pulih.
  • Dibandingkan dengan Realtime Database, Firestore menawarkan kueri yang lebih kompleks, konsistensi kuat, dan penempatan multi-regional.
  • Keamanan data dijamin oleh Security Rules deklaratif yang memeriksa akses dan memvalidasi data di sisi server.
  • Integrasi dengan Firebase Authentication dan Cloud Functions memungkinkan pembangunan aplikasi server lengkap tanpa infrastruktur sendiri.
  • Untuk proyek baru, Firestore direkomendasikan oleh Google sebagai database real-time utama, menggantikan Realtime Database yang lebih lama.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga