Catch up on everthing we announced at this year's Firebase Summit. Learn more

Memilih Database: Cloud Firestore atau Realtime Database

Firebase menawarkan dua solusi database berbasis cloud yang dapat diakses klien, yang mendukung sinkronisasi data secara real-time:

  • Cloud Firestore adalah database terbaru dari Firebase untuk pengembangan aplikasi seluler. Database ini melanjutkan keberhasilan Realtime Database dengan model data baru yang lebih intuitif. Cloud Firestore juga memiliki fitur kueri yang lebih lengkap dan lebih cepat, serta penskalaan yang lebih besar dibandingkan dengan Realtime Database.

  • Realtime Database adalah database asli Firebase. Solusi ini berlatensi rendah dan efisien untuk aplikasi seluler yang membutuhkan status sinkron lintas klien secara real-time.

Database mana yang direkomendasikan Firebase?

Pilihan solusi database Anda akan bergantung pada banyak faktor, tetapi jika berkaitan dengan fitur tertentu, kami dapat membuat rekomendasi database yang tepat untuk Anda.

Kedua solusi tersebut menawarkan:

  • SDK yang mengutamakan klien, tidak ada server untuk di-deploy dan dipelihara
  • Update real-time
  • Paket gratis, lalu bayar sesuai penggunaan

Pertimbangan utama

Selain fitur inti bagus yang sama-sama dimiliki kedua database tersebut, pikirkan pengaruh sebagian atau semua pertimbangan yang tercantum di bawah ini terhadap kesuksesan aplikasi Anda.

Peran database
Aplikasi saya menggunakan database untuk...
Terutama menyinkronkan data, dengan kueri dasar.
Jika Anda tidak memerlukan kueri, pengurutan, dan transaksi lanjutan, sebaiknya gunakan Realtime Database.
Kueri, pengurutan, dan transaksi lanjutan.
Jika Anda memerlukan interaksi yang kompleks dengan data, misalnya dalam aplikasi e-commerce, sebaiknya gunakan Cloud Firestore.
Operasi pada data
Penggunaan database aplikasi saya kira-kira seperti ini...
Beberapa GB atau lebih sedikit data yang sering berubah.
Jika aplikasi Anda akan mengirimkan aliran update kecil, seperti dalam aplikasi papan tulis digital, sebaiknya gunakan Realtime Database.
Ratusan GB hingga TB data yang jauh lebih sering dibaca daripada diubah.
Untuk set data yang sangat besar, dan ketika operasi batch sering diperlukan, sebaiknya gunakan Cloud Firestore.
Model data
Saya lebih suka membuat struktur data sebagai...
Hierarki JSON sederhana.
Untuk data JSON tidak terstruktur, sebaiknya gunakan Realtime Database.
Dokumen yang disusun menjadi koleksi.
Untuk dokumen dan koleksi terstruktur, sebaiknya gunakan Cloud Firestore.
Ketersediaan
Kebutuhan ketersediaan saya adalah...
Jaminan waktu beroperasi yang sangat tinggi sebesar 99,999%.
Jika ketersediaan sangat penting, misalnya dalam aplikasi e-commerce, sebaiknya gunakan Cloud Firestore.
Jaminan waktu beroperasi minimal sebesar 99,95%.
Jika ketersediaan yang sangat tinggi diperlukan tetapi bukan suatu keharusan, sebaiknya gunakan Cloud Firestore atau Realtime Database.
Kueri offline pada data lokal
Aplikasi saya perlu menjalankan kueri di perangkat dengan konektivitas terbatas atau tanpa konektivitas...
Sering.
Untuk kemampuan kueri yang canggih di data lokal saat pengguna offline, sebaiknya gunakan Cloud Firestore.
Jarang atau tidak pernah.
Jika Anda memperkirakan pengguna akan terus online, sebaiknya gunakan Cloud Firestore atau Realtime Database.
Jumlah instance database
Dalam setiap project, saya perlu menggunakan...
Banyak database, misalnya database untuk setiap pelanggan utama.
Karena memungkinkan Anda menambahkan beberapa database ke satu project Firebase, sebaiknya gunakan Realtime Database.
Hanya satu database.
Jika Anda membutuhkan satu database, sebaiknya gunakan Cloud Firestore atau Realtime Database.

Apa saja hal penting lainnya yang perlu dipertimbangkan?

Setelah memikirkan pertimbangan utama sebelumnya, Anda mungkin siap untuk memilih database. Jika Anda masih menimbang kelebihan dan kekurangannya, bagian ini membahas perbedaan lain antara Cloud Firestore dan Realtime Database.

Model data

Realtime Database dan Cloud Firestore adalah Database NoSQL.

Realtime Database Cloud Firestore
Menyimpan data sebagai satu hierarki JSON yang besar.
  • Data sederhana sangat mudah disimpan.
  • Data kompleks dan hierarkis lebih sulit disusun dalam skala besar.

Pelajari model data Realtime Database lebih lanjut.

Menyimpan data sebagai koleksi dokumen.
  • Data sederhana mudah disimpan dalam dokumen, sangat mirip dengan JSON.
  • Data kompleks dan hierarkis lebih mudah disusun dalam skala besar, menggunakan subkoleksi dalam dokumen.
  • Membutuhkan sedikit denormalisasi dan perataan data.

Pelajari model data Cloud Firestore lebih lanjut.

Dukungan real-time dan offline

Keduanya memiliki SDK real-time yang memprioritaskan aplikasi seluler. Selain itu, keduanya juga mendukung penyimpanan data lokal untuk aplikasi yang siap secara offline.

Realtime Database Cloud Firestore
Dukungan offline untuk klien Apple dan Android. Dukungan offline untuk klien Apple, Android, dan web.

Kehadiran

Mengetahui saat klien online atau offline adalah hal yang bermanfaat. Firebase Realtime Database dapat merekam status koneksi klien dan memberikan kabar terbaru setiap kali status koneksi klien berubah.

Realtime Database Cloud Firestore
Kehadiran didukung. Tidak didukung secara native. Anda dapat memanfaatkan dukungan Realtime Database untuk kehadiran dengan menyinkronkan Cloud Firestore dan Realtime Database menggunakan Cloud Functions. Lihat Mem-build kehadiran di Cloud Firestore.

Membuat kueri

Mengambil, mengurutkan, dan memfilter data dari salah satu database melalui kueri.

Realtime Database Cloud Firestore
Kueri mendalam dengan fungsionalitas pengurutan dan pemfilteran terbatas.
  • Kueri dapat mengurutkan atau memfilter properti, tetapi tidak bisa sekaligus.
  • Kueri bersifat mendalam secara default: Kueri selalu menunjukkan keseluruhan subhierarki.
  • Kueri dapat mengakses data pada level perincian apa pun, hingga ke masing-masing nilai node dalam hierarki JSON.
  • Kueri tidak memerlukan indeks; akan tetapi, performa kueri tertentu dapat menurun saat set data Anda bertambah.
Kueri terindeks dengan pengurutan dan pemfilteran gabungan.
  • Anda dapat merantai filter serta menggabungkan pemfilteran dan pengurutan pada properti dalam satu kueri.
  • Kueri bersifat dangkal: hanya menunjukkan dokumen dalam suatu koleksi atau grup koleksi tertentu, dan tidak menampilkan data subkoleksi.
  • Kueri harus selalu menampilkan keseluruhan dokumen.
  • Kueri diindeks secara default: Performa kueri sebanding dengan ukuran kumpulan hasil, bukan set data.

Operasi tulis dan transaksi

Realtime Database Cloud Firestore
Operasi tulis dan transaksi dasar. Operasi tulis dan transaksi lanjutan.
  • Tulis operasi data melalui operasi set dan update, serta transformasi lanjutan seperti operator array dan numerik.
  • Transaksi dapat membaca dan menulis data secara atomik dari bagian mana pun dalam database.

Keandalan dan performa

Realtime Database Cloud Firestore
Realtime Database adalah solusi regional.
  • Tersedia dalam konfigurasi regional. Database bergantung pada ketersediaan zona dalam suatu region.
  • Karena berlatensi sangat rendah, ini adalah pilihan tepat untuk sinkronisasi status yang kerap.
Baca lebih lanjut karakteristik performa dan keandalan Realtime Database dalam Perjanjian Tingkat Layanan.
Cloud Firestore adalah solusi regional dan multiregion yang mendukung penskalaan otomatis.
  • Menyimpan data Anda di beberapa pusat data di region yang berbeda, sehingga memastikan skalabilitas global dan keandalan yang tinggi.
  • Tersedia dalam konfigurasi regional atau multiregional di seluruh dunia.
Baca lebih lanjut karakteristik performa dan keandalan Cloud Firestore dalam Perjanjian Tingkat Layanan.

Skalabilitas

Realtime Database Cloud Firestore
Penskalaan membutuhkan sharding.
  • Melakukan penskalaan hingga mencapai sekitar 200.000 koneksi serentak dan 1.000 penulisan/detik dalam satu database. Penskalaan yang lebih besar daripada itu memerlukan sharding data lintas database.
  • Tidak ada batasan lokal kecepatan penulisan untuk setiap data.
Penskalaan berjalan otomatis.
  • Penskalaan sepenuhnya berjalan otomatis. Saat ini, batas penskalaan adalah sekitar 1 juta koneksi serentak dan 10.000 penulisan/detik. Kami berencana meningkatkan batas ini di masa mendatang.
  • Memiliki batasan kecepatan tulis untuk setiap dokumen atau indeks.

Keamanan

Realtime Database Cloud Firestore
Bahasa aturan yang bersifat menurun yang memisahkan otorisasi dan validasi. Aturan yang tidak bersifat menurun yang menggabungkan otorisasi dan validasi.
  • Operasi baca dan tulis dari SDK seluler yang dilindungi oleh Aturan Keamanan Cloud Firestore.
  • Operasi baca dan tulis dari SDK server yang dilindungi oleh Identity and Access Management (IAM).
  • Aturan tidak bersifat menurun, kecuali jika Anda menggunakan karakter pengganti.
  • Aturan dapat membatasi kueri: Jika hasil suatu kueri mungkin berisi data yang tidak dapat diakses oleh pengguna, keseluruhan kueri akan gagal.

Harga

Kedua solusi tersedia dalam paket harga Spark dan Blaze.

Realtime Database Cloud Firestore
Mengenakan biaya hanya untuk bandwidth dan penyimpanan, tetapi dengan tarif lebih tinggi.

Baca paket harga Realtime Database lebih lanjut.

Mengenakan biaya terutama pada operasi yang dilakukan di database Anda (pembacaan, penulisan, penghapusan) serta, dengan tarif lebih rendah, pada bandwidth dan penyimpanan.

Cloud Firestore mendukung batas pengeluaran harian untuk project App Engine, sehingga biayanya dipastikan tidak akan melampaui anggaran Anda.

Baca paket harga Cloud Firestore lebih lanjut.

Menggunakan Cloud Firestore dan Realtime Database

Anda dapat menggunakan kedua database ini dalam aplikasi atau project Firebase yang sama. Kedua database NoSQL ini dapat menyimpan jenis data yang sama dan library kliennya berfungsi dengan cara yang sama. Ingatlah perbedaan yang diuraikan di atas jika Anda memutuskan untuk menggunakan kedua database ini dalam aplikasi Anda.

Pelajari berbagai fitur yang tersedia di Realtime Database dan Cloud Firestore lebih lanjut.

Siap memilih database?

Semoga perbandingan ini dapat membantu Anda memutuskan solusi database Firebase yang akan digunakan. Sekarang, Anda dapat mempelajari cara menambahkan database ke project Firebase.