Cloud Firestore ve Firebase Gerçek Zamanlı Veritabanı arasındaki fark nedir?


252

Google, uygulamalar için yeni Belge Veritabanı olan Cloud Firestore'u piyasaya sürdü.

Belgeleri okuyorum ama Firestore ve Firebase DB arasında çok fazla fark görmüyorum.

Ana nokta, Firestore'un, JSON tabanlı geleneksel bir noSQL veritabanı olan Firebase'e kıyasla sorgulamanın kolay kullanımına izin veren belgeler ve koleksiyonlar kullanmasıdır.

Farklılıkları veya kullanımları veya Firestore'un Firebase DB'nin yerini almaya gelip gelmediği hakkında biraz daha fazla bilgi edinmek isterim?


1
Firestore'da
okumalar

Yanıtlar:


381

Bu yüzden bu soru hakkında tüm bir blog yazısı yazdım ve daha eksiksiz bir cevap için kontrol etmenizi (veya resmi dokümanları ) öneriyorum .

Ancak hızlı (-ish) özeti istiyorsanız, işte burada:

Daha iyi sorgulama ve daha yapılandırılmış veriler - Gerçek Zamanlı Veritabanı sadece devasa bir JSON ağacı olsa da, Cloud Firestore biraz daha yapılandırılmıştır. Tüm verileriniz (temelde anahtar / değer depoları olan) belgelerden ve (belge koleksiyonu olan) koleksiyonlardan oluşur. Belgeler sık ​​sık, diğer belgeleri de içeren diğer belgeleri içeren alt toplamalara işaret eder ve bu böyle devam eder.

Bu yapılandırılmış veriler size iki şekilde yardımcı olur. İlk olarak, tüm sorgular sığdır , yani altındaki tüm verileri yakalamadan bir belge talep edebilirsiniz. Bu, verilerinizi hiyerarşik olarak, veritabanınızı sığ tutma konusunda endişelenmenize gerek kalmadan sizin için daha anlamlı bir şekilde saklayabileceğiniz anlamına gelir. İkincisi, daha güçlü sorgularınız var. Örneğin, artık veritabanınızın diğer bölümlerindeki verileri birleştiren (ve denormalize eden) "birleşik" alanları oluşturmak zorunda kalmadan birden çok alanda sorgulama yapabilirsiniz. Bazı durumlarda, Cloud Firestore bu sorguları doğrudan çalıştırır ve diğer durumlarda sizin için otomatik olarak dizinler oluşturur ve korur.

Ölçeklendirmek için Tasarlandı - Cloud Firestore, Gerçek Zamanlı Veritabanından daha iyi ölçeklendirebilecektir. Sorgularınızın veri kümenizle değil, sonuç kümenizin boyutuyla ölçeklendiğini belirtmek önemlidir. Böylece, veri kümeniz ne kadar büyük olursa olsun arama hızlı kalır.

Verilerin daha kolay manuel olarak getirilmesi - Gerçek Zamanlı Veritabanı gibi, Cloud Firestore'daki dinleyicileri gerçek zamanlı değişikliklere aktaracak şekilde ayarlayabilirsiniz. Ancak bu tür bir davranış istemiyorsanız ve sadece basit bir "verilerimi getir" çağrısı istiyorsanız, Cloud Firestore'da da vardır ve birincil kullanım durumu olarak yerleşiktir. ( onceGerçek Zamanlı Veritabanı ülkesindeki çağrılardan çok daha iyidirler)

Çoklu bölge desteği - Verileriniz aynı anda birden fazla veri merkezinde paylaşıldığı için bu temelde daha fazla güvenilirlik anlamına gelir. Ancak yine de güçlü bir tutarlılığa sahipsiniz, yani her zaman bir sorgu yapabilir ve verilerinizin en son sürümünü aldığınızdan emin olabilirsiniz.

Farklı fiyatlandırma modeli - Realtime Database öncelikle depolama veya ağ bant genişliğine göre ücret alırken, Cloud Firestore öncelikle gerçekleştirdiğiniz işlem sayısına göre ücretlendirir . Bu daha iyi mi yoksa daha mı kötü olacak? Uygulamanıza bağlıdır.

Bir haber uygulaması, sıra tabanlı çok oyunculu oyun veya kendi Stack Overflow sürümünüz gibi bir şey için, Cloud Firestore muhtemelen fiyat açısından oldukça olumlu görünecektir. Birden fazla kullanıcıya saniyede birden fazla güncelleme gönderdiğiniz gerçek zamanlı bir grup çizim uygulaması gibi bir şey için, muhtemelen Gerçek Zamanlı Veritabanından daha pahalı olacaktır.

Neden hala Realtime Veritabanını kullanmak isteyebilirsiniz - Bu birkaç nedene bağlı. 1) Daha önce bahsettiğim tüm "muhtemelen çok sık güncelleme yapan uygulamalar için daha ucuz olacak" bir şey, 2) Uzun zamandır var ve binlerce uygulama tarafından savaş testi yapıldı, 3) Daha iyi gecikme süresi var ve gerçek zamanlı bir his için güvenilir bir şekilde düşük gecikme süresine ihtiyaç duyduğunuzda, Gerçek Zamanlı Veritabanı daha iyi çalışabilir.

Çoğu yeni uygulama için Cloud Firestore'a göz atmanızı öneririz. Ancak zaten Realtime Veritabanında bulunan bir uygulamanız varsa, bunu yapmak için zorlayıcı bir nedeniniz yoksa, sadece geçiş uğruna geçiş yapmayı gerçekten önermiyorum.

Umarım yardımcı olur!


2
Çok teşekkür ederim Todd! Duyuru postasını gördüm ama bunu değil! Firestore'a tamamen aşığım, ne yazık ki şimdi bu xD için sarılmış tüm RxJava'mı yeniden yazmam gerekecek.
Francisco Durdin Garcia

1
Google Cloud Datastore nasıl uyuyor? Safça Cloud Firestore ile çok fazla örtüşme var gibi görünüyor. @ToddKerpelman
Jon G

2
Cloud Datastore ile çok ortak noktası var. En büyük fark Firebase ile entegrasyon, bu nedenle mobil ve web SDK'larına yerel bir çevrimdışı modun yanı sıra gerçek zamanlı senkronizasyon özelliklerine erişebilirsiniz. Cloud Datastore, App Engine'de veya Compute / Container Engine aracılığıyla kendi web sitenizi çalıştırmak gibi, uygulamanızla kendi bağlantınızı yönettiğiniz büyük ölçekli sunucu tarafı geliştirme için mükemmeldir.
Todd Kerpelman

2
"Güçlü tutarlılık" gerçekten ne anlama geliyor? CAP teoremi , dağıtılmış ve kullanılabilir bir ortamda "verilerinizin en son sürümünü aldığınızdan emin olamayacağınızı " belirtir . Tutarlılık, Kullanılabilirlik, Bölüm Toleransı => 2'yi seçin
AjahnCharles

1
@ToddKerpelman Cloud Firestore / Cloud Datastore karşılaştırması yapma şansınız. İkisi birbirine çok benziyor.
TheAddonDepot

63

Makalenin tamamını buradan okuyabilirsiniz: https://medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime databaseJSON ağacı olarak oluşturulmuş ancak Cloud Firestoreverileri (anahtar / değer çifti kümesi olan) belgelerde ve toplama (belgelerden oluşan bir koleksiyon) biçimlerinde depolayan verilerdir.

Daha Fazla Yapı Verisi

Gerçek Zamanlı Veritabanı verileri JSON ağacında sakladı, ancak Cloud firestore verileri JSON'a çok benzeyen belgelerde sakladı. resim açıklamasını buraya girin

Cloud FireStore'da Belgeler, her ikisi de dize (yukarıdaki adda 'ad', 'e-posta' vb. Gibi) ilkel alanları veya yukarıdaki gibi karmaşık nesneleri içerebilen alt toplamaları ve iç içe geçmiş nesneleri (yukarıdaki şekilde 'telefon' gibi) içerebilir. listeleri.

Daha İyi Sorgulama

  • Realtime veritabanında, bir özelliği yalnızca tek bir sorguda sıralayabilir veya filtreleyebiliriz, bir mülk üzerinde hem sıralamayı hem de filtrelemeyi gerçekleştiremeyiz.
  • Verileri azalan sırada getirmek istiyorsanız, Cloud fireStore sizin için çok yararlıdır, ancak Realtime veritabanı için kullanılabilir sorgu özelliği yoktur. resim açıklamasını buraya girin
  • Cloud FireStore'da daha spesifik sorgular (mantıksal AND) oluşturmak için birden çok “where” yöntemini de zincirleyebilirsiniz. resim açıklamasını buraya girin

Ölçeklenebilirlik

Cloud Firestore, Gerçek Zamanlı Veritabanından daha iyi ölçeklenebilir. Sorgu performansınızın veri kümenizle değil, sonuç kümenizin boyutuyla orantılı olduğunu unutmayın. Böylece, veri kümeniz ne kadar büyük olursa olsun arama hızlı kalır.

Verilerin manuel olarak getirilmesi

Verileri gerçek zamanlı olarak Cloud FireStore'da Realtime veritabanı gibi dinleyebiliriz, ancak Cloud FireStore'da da manuel olarak veri alabiliriz (Sadece bir kez herhangi bir veri istiyorsanız).

Güvenlik

Gerçek Zamanlı Veritabanında, doğrulama kuralını kullanarak verileri ayrı ayrı doğrulamamız gerekir, ancak Cloud FireStore'da veri doğrulama otomatik olarak gerçekleşir.

Verileri yazma

Birden çok işlemi tek bir toplu iş olarak yürütebilir ve bunları set(), update()veya delete()yöntemlerin herhangi bir birleşimi ile atomik olarak tamamlayabiliriz . resim açıklamasını buraya girin

Fiyatlandırma

Realtime veritabanında, yalnızca bant genişliği ve depolama için değil, daha yüksek bir ücret karşılığında ücret alınır. Cloud FireStore'dayken, öncelikle veritabanınızda gerçekleştirilen işlemleri (okuma, yazma, silme) ve daha düşük bir oranda bant genişliği ve depolamayı ücretlendirir.


12
Orijinal makaleyi bağlamak güzel olurdu: medium.com/@beingrahul/…
Salem Ouerdani

1
'Veri doğrulamanın otomatik olarak gerçekleştiğinin' ne anlama geldiğini daha ayrıntılı açıklayabilir misiniz?
SoEzPz

12

Cloud Firestore'u Gerçek Zamanlı Veritabanı üzerinden seçme nedenleri

Geliştirilmiş bir versiyonudur

Firebase veritabanı temel uygulamalar için yeterliydi. Ancak karmaşık gereksinimleri karşılayacak kadar güçlü değildi. Bu yüzden Cloud Firestore piyasaya sunuldu. İşte bazı büyük değişiklikler.

  • Temel dosya yapısı geliştirildi.
  • Web istemcisi için çevrimdışı destek.
  • Daha gelişmiş sorgulamayı destekler.
  • Yazma ve işlem işlemleri atomiktir.
  • Güvenilirlik ve performans iyileştirmeleri
  • Ölçekleme otomatik olacaktır.
  • Daha güvenli olacak.

Fiyatlandırma

Cloud Firestore'da, öncelikle veritabanınızda gerçekleştirilen işlemlerin yanı sıra bant genişliği ve depolama alanı için ücret almasına rağmen, oranlar düştü. Günlük harcama limiti de belirleyebilirsiniz. İşte faturalandırma ile ilgili tam ayrıntılar olduğunu.

Google'ın gelecek planları

Gerçek Zamanlı Veritabanı ile kusurları keşfettiklerinde, eskisini geliştirmek yerine başka bir ürün yarattılar. Gerçek Zamanlı Veritabanı'ndaki mevcut durumlarını ortaya koyan güvenilir detaylar olmasa da, terk edileceğini düşünmeye başlama zamanıdır.




2

Google'dan da bağlantı önerin: Firebase Gerçek Zamanlı Veritabanı - FireStore

Google dokümanlarından alıntı, burada küçük bir özet:

FireBase Gerçek Zamanlı DB , mobil uygulamalar için bölgesel olan JSON tabanlı NO SQL DB'dir ve genellikle kullanıcılar / cihazlar arasında gerçek zamanlı / son derece düşük gecikme süresinde veri depolamak ve senkronize etmek için kullanılır.

FireStore , varlık takibi, gerçek zamanlı analitik, perakende ürün katalogları oluşturma, sosyal kullanıcı gibi tipik kullanım durumları olan herhangi bir müşteri (yalnızca mobil uygulamalar için değil) için tasarlanmış, yüksek eşzamanlılık, küresel, kolayca otomatik ölçeklendirme kalıcılığı anlamına gelen JSON gibidir. profil, oyun skor tabloları, sohbet tabanlı uygulamalar vb.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.