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-fitur inti hebat yang sama-sama dimiliki kedua database, 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...
Data berukuran beberapa GB atau kurang yang sering berubah.
Jika aplikasi Anda akan mengirimkan aliran update kecil, seperti dalam aplikasi papan tulis digital, sebaiknya gunakan Realtime Database.
Data berukuran ratusan GB hingga TB 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 sedikitnya 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 mendapatkan 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.

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, yang sangat mirip dengan JSON.
  • Data kompleks dan hierarkis lebih mudah disusun dalam skala besar, menggunakan subkoleksi dalam dokumen.
  • Membutuhkan lebih sedikit denormalisasi dan perataan data.

Pelajari model data Cloud Firestore lebih lanjut.

Dukungan real-time dan offline

Keduanya memiliki SDK real-time dan memprioritaskan aplikasi seluler. Selain itu, keduanya juga mendukung penyimpanan data lokal untuk aplikasi siap 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 bisa bermanfaat. Firebase Realtime Database dapat merekam status koneksi klien dan menyediakan 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 Membuat 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 menampilkan keseluruhan subhierarki.
  • Kueri dapat mengakses data pada level perincian apa pun, hingga ke setiap 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 merangkai filter serta menggabungkan pemfilteran dan pengurutan pada properti dalam satu kueri.
  • Kueri bersifat dangkal: hanya menampilkan 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.

Penulisan dan transaksi

Realtime Database Cloud Firestore
Operasi tulis dan transaksi dasar. Operasi tulis dan transaksi lanjutan.
  • Operasi menulis data melalui operasi set dan update, serta melalui 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 terbatas sesuai ketersediaan menurut zona dalam satu region.
  • Berlatensi sangat rendah, sehingga menjadi 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 (baca, tulis, hapus), serta pada bandwidth dan penyimpanan dengan tarif lebih rendah.

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.