Apa perbedaan antara Cloud Firestore dan Firebase Realtime Database?

252

Google baru saja merilis Cloud Firestore, Database Dokumen baru mereka untuk aplikasi.

Saya telah membaca dokumentasi tetapi saya tidak melihat banyak perbedaan antara Firestore dan Firebase DB.

Poin utamanya adalah Firestore menggunakan dokumen dan koleksi yang memungkinkan penggunaan kueri yang mudah dibandingkan dengan Firebase, yang merupakan basis data noSQL tradisional dengan basis JSON.

Saya ingin tahu lebih banyak tentang perbedaan mereka, atau penggunaannya, atau apakah Firestore baru saja datang untuk menggantikan Firebase DB?

Francisco Durdin Garcia
sumber
1
Membaca lebih cepat di Firestore, Menulis lebih cepat di Firebase Real Time Database
DragonFire

Jawaban:

380

Jadi saya menulis seluruh posting blog tentang pertanyaan ini, dan saya sarankan Anda memeriksanya (atau dokumentasi resmi ) untuk jawaban yang lebih lengkap.

Tetapi jika Anda ingin ringkasan cepat (-ish), ini dia:

Permintaan yang lebih baik dan data yang lebih terstruktur - Sementara Basis Data Realtime hanyalah pohon JSON raksasa, Cloud Firestore sedikit lebih terstruktur. Semua data Anda terdiri dari dokumen (yang pada dasarnya adalah penyimpanan nilai-kunci) dan koleksi (yang merupakan kumpulan dokumen). Dokumen juga akan sering mengarah ke subkoleksi, yang berisi dokumen lain, yang sendiri dapat berisi dokumen lain, dan sebagainya.

Data terstruktur ini membantu Anda dalam dua cara. Pertama, semua kueri dangkal , artinya Anda dapat meminta dokumen tanpa mengambil semua data di bawahnya. Ini berarti Anda dapat menyimpan data Anda tersimpan secara hierarkis dengan cara yang lebih masuk akal bagi Anda tanpa harus khawatir tentang menjaga database Anda dangkal. Kedua, Anda memiliki pertanyaan yang lebih kuat. Misalnya, Anda sekarang dapat melakukan kueri di beberapa bidang tanpa harus membuat bidang "kombo" yang menggabungkan (dan mendenormalkan) data dari bagian lain dari basis data Anda. Dalam beberapa kasus, Cloud Firestore hanya akan menjalankan kueri tersebut secara langsung, dan dalam kasus lain, Cloud Firestore akan secara otomatis membuat dan mempertahankan indeks untuk Anda.

Dirancang untuk Skala - Cloud Firestore akan dapat skala lebih baik daripada Basis Data Realtime. Penting untuk dicatat bahwa kueri Anda skala dengan ukuran set hasil Anda, bukan set data Anda. Jadi pencarian akan tetap cepat tidak peduli seberapa besar kumpulan data Anda.

Pengambilan data manual yang lebih mudah - Seperti Basis Data Realtime, Anda dapat mengatur pendengar di Cloud Firestore untuk mengalirkan perubahan secara waktu nyata. Tetapi jika Anda tidak menginginkan perilaku seperti itu, dan hanya ingin panggilan "ambil data saya" yang sederhana, Cloud Firestore juga memilikinya, dan itu dibangun sebagai use case utama. (Mereka jauh lebih baik daripada oncepanggilan di Realtime Database-land)

Dukungan multi wilayah - Ini pada dasarnya berarti lebih banyak keandalan, karena data Anda dibagikan di beberapa pusat data sekaligus. Tetapi Anda masih memiliki konsistensi yang kuat, artinya Anda selalu dapat membuat kueri dan yakin bahwa Anda mendapatkan versi terbaru dari data Anda.

Model penetapan harga yang berbeda - Sementara Basis Data Realtime utamanya mengenakan biaya berdasarkan penyimpanan atau bandwidth jaringan, Cloud Firestore terutama mengenakan biaya berdasarkan jumlah operasi yang Anda lakukan. Apakah ini lebih baik, atau lebih buruk? Itu tergantung pada aplikasi Anda.

Untuk menjalankan aplikasi berita, game multiplayer berbasis giliran, atau sesuatu seperti Stack Overflow versi Anda sendiri, Cloud Firestore mungkin akan terlihat cukup menguntungkan dari sudut pandang harga. Untuk sesuatu seperti aplikasi menggambar grup real-time di mana Anda mengirim banyak pembaruan satu detik ke beberapa orang, itu mungkin akan lebih mahal daripada Realtime Database.

Mengapa Anda masih ingin menggunakan Basis Data Realtime - Ada beberapa alasan. 1) Keseluruhan itu "mungkin akan lebih murah untuk aplikasi yang membuat banyak pembaruan sering" hal yang saya sebutkan sebelumnya, 2) Sudah ada sejak lama dan telah diuji oleh ribuan aplikasi, 3) Ini memiliki latensi yang lebih baik dan ketika Anda membutuhkan sesuatu dengan latensi rendah andal untuk nuansa waktu-nyata, Basis Data Realtime mungkin bekerja lebih baik.

Untuk sebagian besar aplikasi baru, kami sarankan Anda memeriksa Cloud Firestore. Tetapi jika Anda memiliki aplikasi yang sudah ada di Realtime Database, saya tidak benar-benar merekomendasikan beralih hanya untuk beralih, kecuali jika Anda memiliki alasan kuat untuk melakukannya.

Semoga itu bisa membantu!

Todd Kerpelman
sumber
2
Terima kasih banyak, Todd! Saya melihat posting pengumuman tetapi tidak yang ini! Saya benar-benar jatuh cinta pada Firestore, sayangnya sekarang saya harus menulis ulang seluruh RxJava yang dibungkus untuk xD ini.
Francisco Durdin Garcia
1
Bagaimana cara Google Cloud Datastore masuk? Secara naif tampaknya banyak tumpang tindih dengan Cloud Firestore. @ToddKerpelman
Jon G
2
Itu memang memiliki banyak kesamaan dengan Cloud Datastore. Perbedaan terbesar adalah integrasi dengan Firebase, sehingga Anda memiliki akses ke SDK seluler dan web bersama dengan mode offline asli, serta fitur sinkronisasi waktu-nyata. Cloud Datastore sangat bagus untuk pengembangan sisi server skala besar di mana Anda mengelola koneksi Anda sendiri ke aplikasi Anda, seperti menjalankan situs web Anda sendiri di App Engine atau melalui Compute / Container Engine.
Todd Kerpelman
2
Apa yang dimaksud dengan "konsistensi kuat"? Teorema CAP menyatakan Anda tidak dapat "yakin bahwa Anda mendapatkan versi terbaru dari data Anda" di lingkungan yang didistribusikan & tersedia. Konsistensi, Ketersediaan, Toleransi Partisi => pilih 2.
AjahnCharles
1
@ToddKerpelman Setiap kesempatan Anda akan melakukan perbandingan Cloud Firestore / Cloud Datastore. Keduanya tampak sangat mirip.
TheAddonDepot
63

Anda dapat membaca seluruh artikel di sini: https://medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime databaseyang disusun sebagai pohon JSON tetapi Cloud Firestoredisimpan data dalam dokumen (yang merupakan pasangan kunci-nilai) dan koleksi (yang merupakan kumpulan dokumen) format.

Lebih Banyak Struktur Data

Database Realtime menyimpan data dalam pohon JSON tetapi Cloud firestore menyimpan data dalam dokumen yang sangat mirip dengan JSON. masukkan deskripsi gambar di sini

Di Cloud FireStore, Dokumen dapat berisi subkoleksi dan objek bersarang (seperti 'telepon' pada gambar di atas), yang keduanya dapat mencakup bidang primitif seperti string (seperti 'nama', 'email' dan lain-lain dalam gambar di atas) atau objek kompleks seperti daftar.

Permintaan yang lebih baik

  • Dalam database Realtime, Kami hanya dapat mengurutkan atau memfilter pada properti dalam satu permintaan, tidak mengurutkan dan memfilter pada properti sementara Di Cloud FireStore, Anda dapat membuat filter dan menggabungkan pemfilteran dan pengurutan pada properti dalam satu permintaan.
  • Jika Anda ingin mengambil data dalam urutan menurun maka Cloud fireStore sangat berguna bagi Anda tetapi untuk database Realtime, tidak ada fitur permintaan yang tersedia. masukkan deskripsi gambar di sini
  • Anda juga dapat mengaitkan beberapa metode "di mana" untuk membuat kueri yang lebih spesifik (logis DAN) di Cloud FireStore. masukkan deskripsi gambar di sini

Skalabilitas

Cloud Firestore akan dapat meningkatkan skala lebih baik dari pada Realtime Database. Penting untuk dicatat bahwa kinerja kueri Anda sebanding dengan ukuran kumpulan hasil Anda, bukan kumpulan data Anda. Jadi pencarian akan tetap cepat tidak peduli seberapa besar kumpulan data Anda.

Pengambilan data secara manual

Kami dapat mendengarkan data realtime di Cloud FireStore seperti basis data Realtime tetapi di Cloud FireStore, Kami juga dapat mengambil data secara manual (Jika Anda ingin data hanya satu kali).

Keamanan

Dalam Basis Data Realtime, Kami perlu memvalidasi data secara terpisah menggunakan aturan validasi tetapi di Cloud FireStore, validasi data terjadi secara otomatis.

Menulis data

Kami dapat menjalankan beberapa operasi sebagai satu batch dan menyelesaikannya secara atomik, dengan kombinasi apa pun set(), update()atau delete()metode. masukkan deskripsi gambar di sini

Harga

Dalam database Realtime, Biaya hanya untuk bandwidth dan penyimpanan, tetapi pada tingkat yang lebih tinggi. Saat berada di Cloud FireStore, Biaya utamanya adalah pada operasi yang dilakukan dalam basis data Anda (baca, tulis, hapus) dan, pada tingkat yang lebih rendah, bandwidth dan penyimpanan.

0xAliHn
sumber
12
Akan menyenangkan untuk menautkan artikel asli: medium.com/@beingrahul/…
Salem Ouerdani
1
Bisakah Anda menjelaskan secara lebih rinci apa arti 'validasi data yang terjadi secara otomatis'?
SoEzPz
12

Alasan memilih Cloud Firestore daripada Basis Data Realtime

Ini adalah versi yang ditingkatkan

Basis data Firebase sudah cukup untuk aplikasi dasar. Tetapi itu tidak cukup kuat untuk menangani persyaratan yang kompleks. Itulah mengapa Cloud Firestore diperkenalkan. Berikut ini beberapa perubahan besar.

  • Struktur file dasar ditingkatkan.
  • Dukungan offline untuk klien web.
  • Mendukung permintaan yang lebih maju.
  • Operasi tulis dan transaksi bersifat atomik.
  • Peningkatan keandalan dan kinerja
  • Penskalaan akan otomatis.
  • Akan lebih aman.

Harga

Di Cloud Firestore, tarif telah turun meskipun biaya utamanya untuk operasi yang dilakukan dalam database Anda bersama dengan bandwidth dan penyimpanan. Anda juga dapat menetapkan batas pengeluaran harian. Berikut ini rincian lengkap tentang penagihan.

Rencana masa depan Google

Ketika mereka menemukan kekurangan dengan Real-time Database, mereka menciptakan produk lain daripada meningkatkan yang lama. Meskipun tidak ada rincian yang dapat diandalkan mengungkapkan kedudukan mereka saat ini pada Real-time Database, sekarang saatnya untuk mulai berpikir bahwa itu kemungkinan akan ditinggalkan.



Bertram Gilfoyle
sumber
2

Sarankan tautan dari google juga: Firebase Real-time Database vs FireStore

Diekstrak dari google docs, sejumlah kecil pernikahan di sini:

FireBase Real Time DB berbasis JSON NO SQL DB, dimaksudkan untuk aplikasi seluler, regional, dan digunakan biasanya untuk menyimpan dan menyinkronkan data antara pengguna / perangkat dalam latensi waktu nyata / sangat rendah.

FireStore adalah JSON 'seperti' NOSQL DB yang dimaksudkan untuk kegigihan berskala tinggi, global, dan mudah secara otomatis, dirancang untuk klien mana pun (tidak hanya aplikasi seluler) dengan kasus penggunaan khusus seperti pelacakan aset, analisis waktu nyata, pembuatan katalog produk ritel, pengguna sosial profil, papan peringkat permainan, aplikasi berbasis obrolan dll.

TechFree
sumber