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

Firebase Realtime Database ile Cloud Firestore'u kullanın

Uygulamanızda hem Firebase Realtime Database'i hem de Cloud Firestore'u kullanabilir ve ihtiyaçlarınıza uyacak şekilde her bir veritabanı çözümünün avantajlarından yararlanabilirsiniz. Örneğin, belirtilen, varlığı için gerçek zamanlı veritabanı'nın desteğini kaldıraç isteyebilirsiniz Bulut Firestore Oluştur Varlığında .

Hakkında daha fazla bilgi veritabanları arasındaki farklar .

Verileri Cloud Firestore'a taşıma

Verilerinizin bir kısmını Realtime Database'den Cloud Firestore'a taşımak istediğinize karar verdiyseniz, aşağıdaki akışı göz önünde bulundurun. Her veritabanının benzersiz ihtiyaçları ve yapısal hususları olduğundan, otomatikleştirilmiş bir geçiş yolu yoktur. Bunun yerine, şu genel ilerlemeyi takip edebilirsiniz:

  1. Veri yapısını ve güvenlik kurallarını Realtime Database'den Cloud Firestore'a eşleyin. Hem Realtime Database hem de Cloud Firestore, Firebase Authentication'a güvenir, bu nedenle uygulamanız için kullanıcı kimlik doğrulamasını değiştirmeniz gerekmez. Ancak güvenlik kuralları ve veri modeli farklıdır ve verileri Cloud Firestore'a taşımaya başlamadan önce bu farklılıkları dikkatlice hesaba katmanız önemlidir.

  2. Geçmiş verileri taşıyın. Cloud Firestore'da yeni veri yapınızı kurarken, mevcut verileri Realtime Database'den yeni Cloud Firestore örneğinize eşleyebilir ve taşıyabilirsiniz. Ancak, uygulamanızda her iki veritabanını da kullanıyorsanız, geçmiş verileri Gerçek Zamanlı Veritabanından taşımanız gerekmez.

  3. Yeni verileri gerçek zamanlı olarak Firestore'a yansıtın. Realtime Database'e eklendikçe yeni Cloud Firestore veritabanınıza yeni veriler yazmak için Cloud Functions'ı kullanın.

  4. Taşınan veriler için Cloud Firestore'u birincil veritabanınız yapın. Verilerinizin bir kısmını taşıdıktan sonra, birincil veritabanınız olarak Cloud Firestore'u kullanın ve taşınan veriler için Gerçek Zamanlı Veritabanı kullanımınızı azaltın. Bu veriler için uygulamanızın hala Realtime Database'e bağlı olan sürümlerini ve bunları nasıl desteklemeye devam etmeyi planladığınızı düşünün.

Emin hesaba olun maliyetlerini fatura hem gerçek zamanlı Veritabanı ve Bulut Firestore .

Verilerinizi eşleyin

Realtime Database'deki veriler tek bir ağaç olarak yapılandırılırken Cloud Firestore, belgeler, koleksiyonlar ve alt koleksiyonlar aracılığıyla daha açık veri hiyerarşilerini destekler. Verilerinizin bir kısmını Realtime Database'den Cloud Firestore'a taşırsanız verileriniz için farklı bir mimari düşünmek isteyebilirsiniz.

Dikkate alınması gereken önemli farklılıklar

Verileri mevcut Gerçek Zamanlı Veritabanı ağacınızdan Cloud Firestore belgelerine ve koleksiyonlarına taşırsanız, veritabanları arasında Cloud Firestore'da verileri nasıl yapılandırdığınızı etkileyebilecek aşağıdaki büyük farklılıkları unutmayın:

  • Sığ sorgular, hiyerarşik veri yapılarında daha fazla esneklik sunar.
  • Karmaşık sorgular daha fazla ayrıntı düzeyi sunar ve yinelenen verilere olan ihtiyacı azaltır.
  • Sorgu imleçleri daha sağlam sayfalama sunar.
  • İşlemler artık tüm verileriniz için ortak bir kök gerektirmez ve daha verimlidir.
  • Faturalandırma maliyetleri, Realtime Database ve Cloud Firestore arasında farklılık gösterir. Çoğu durumda, Cloud Firestore, özellikle birçok küçük işleme güveniyorsanız, Realtime Database'den daha pahalı olabilir. Veritabanınızdaki işlem sayısını azaltmayı ve gereksiz yazmalardan kaçınmayı düşünün. Farklılıklar hakkında daha fazla bilgi fatura Gerçek Zamanlı Veritabanı ve Bulut Firestore arasında.

Eylemdeki en iyi uygulamalar

Aşağıdaki örnek, verilerinizi veritabanları arasında değiştirirken yapabileceğiniz bazı hususları yansıtmaktadır. Gerçek Zamanlı Veritabanı ile kullandığınızdan daha doğal veri yapıları için sığ okumalar ve gelişmiş sorgulama yeteneklerinden yararlanabilirsiniz.

Kullanıcıların dünyanın dört bir yanındaki şehirlerdeki önemli yer işaretlerini bulmalarına yardımcı olan bir şehir rehberi uygulaması düşünün. Gerçek Zamanlı Veritabanında sığ okumalar bulunmadığından, verileri aşağıdaki gibi iki üst düzey düğümde yapılandırmanız gerekebilir:

// /cities/$CITY_KEY
{
  name: "New York",
  population: 8000000,
  capital: False
}

// /city-landmark/$CITY_KEY/$LANDMARK_KEY
{
  name: "Empire State Building",
  category: "Architecture"
}

Cloud Firestore'da sığ okumalar vardır, bu nedenle bir koleksiyondaki belgeleri sorgulamak, alt koleksiyonlardan veri çekmez. Sonuç olarak, yer işareti bilgilerini bir alt koleksiyonda saklayabilirsiniz:

// /cities/$CITY_ID
{
  name: "New York",
  population: 8000000,
  capital: False,
  landmarks: [... subcollection ...]
}

Belgelerin maksimum boyutu 1 MB'dir; bu, önemli noktaları bir alt koleksiyon olarak depolamanın başka bir nedenidir, iç içe listelerle belgeleri şişirmek yerine her bir şehir belgesini küçük tutar.

Cloud Firestore'un gelişmiş sorgulama yetenekleri, ortak erişim kalıpları için verileri çoğaltma ihtiyacını azaltır. Örneğin, şehir rehberi uygulamasında nüfusa göre sıralanmış tüm başkentleri gösteren bir ekran düşünün. Gerçek Zamanlı Veritabanı olarak, bunu yapmanın en etkili yolu gelen veriyi kopyalar sermaye şehirlerin ayrı bir liste sağlamaktır cities listesinde, aşağıdaki gibi:

{
   cities: {
    // ...
   },

   capital-cities: {
     // ...
   }
}

Cloud Firestore'da, başkentlerin bir listesini nüfus sırasına göre tek bir sorgu olarak ifade edebilirsiniz:

db.collection('cities')
    .where('capital', '==', true)
    .orderBy('population')

Hakkında daha fazla bilgi okuyun Bulut Firestore veri modelinin ve bizim bakmak Çözümleri Cloud Firestore veritabanı yapısı hakkında daha fazla fikir için.

Verilerinizi koruyun

Hangisini kullanıyor olursanız olun Bulut Firestore Güvenlik Kuralları Android, Apple veya Web istemcileri veya buraya Kimlik Erişim Yönetimi (IAM) sunucular için, emin Cloud Firestore verileri yanı sıra gerçek zamanlı Veritabanı güvence sizsiniz, olun. Kullanıcı kimlik doğrulaması, her iki veritabanı için de Kimlik Doğrulama tarafından işlenir, bu nedenle Cloud Firestore'u kullanmaya başladığınızda Kimlik Doğrulama uygulamanızı değiştirmeniz gerekmez.

Dikkate alınması gereken önemli farklılıklar

  • Mobil ve web SDK'ları, Cloud Firestore Güvenlik Kurallarını kullanırken, sunucu SDK'ları, verilerin güvenliğini sağlamak için Kimlik Erişim Yönetimi'ni (IAM) kullanır.
  • Bir joker karakter kullanmadığınız sürece Cloud Firestore Güvenlik Kuralları basamaklanmaz. Belgeler ve koleksiyonlar, kuralları başka türlü devralmaz.
  • Ayrı ayrı validate verilerine Artık gerek (eğer olduğu gibi Gerçek Zamanlı Veritabanı ).
  • Cloud Firestore, kullanıcının sorgu tarafından döndürülen tüm veriler için uygun erişime sahip olduğundan emin olmak için bir sorgu yürütmeden önce kuralları kontrol eder.

Geçmiş verileri Cloud Firestore'a taşıyın

Verilerinizi ve güvenlik yapılarınızı Cloud Firestore'un veri ve güvenlik modelleriyle eşleştirdikten sonra verilerinizi eklemeye başlayabilirsiniz. Uygulamanızı Realtime Database'den Cloud Firestore'a taşıdıktan sonra geçmiş verileri sorgulamayı planlıyorsanız, yeni Cloud Firestore veritabanınıza eski verilerinizin dışa aktarımını ekleyin. Uygulamanızda hem Realtime Database hem de Cloud Firestore kullanmayı planlıyorsanız bu adımı atlayabilirsiniz.

Eski verilerin yeni verilerin üzerine yazılmasını önlemek için önce geçmiş verilerinizi eklemek isteyebilirsiniz. Sonraki adımda açıklandığı gibi her iki veritabanına aynı anda yeni veriler eklerseniz, Cloud Functions tarafından Cloud Firestore'a eklenen yeni verilere öncelik verdiğinizden emin olun.

Geçmiş verileri Cloud Firestore'a taşımak için şu adımları izleyin:

  1. Gerçek zamanlı veritabanından veri verir veya güncel bir yedek kullanın .
    1. Git Gerçek Zamanlı Veri Tabanı bölümünde Firebase konsolunda.
    2. Veri sekmesinde, veritabanının kök düzeyinde düğümünü seçin ve menüden İhracat JSON seçin.
  2. Bulut Firestore da yeni bir veritabanı oluşturun ve verilerinizi ekleyin .

    Verilerinizin bir kısmını Cloud Firestore'a taşırken aşağıdaki stratejileri göz önünde bulundurun:

    • Verilerinizi sizin için taşıyan özel bir komut dosyası yazın. Her veritabanı özgü ihtiyaçları var çünkü biz, bu komut dosyası için bir şablon veremesek de, bizim üzerinde Bulut Firestore uzmanlar Gevşek kanalı veya üzerinde yığın taşması özel durum için komut ya da tavsiyelerde inceleyebilirsiniz.
    • Verileri doğrudan Cloud Firestore'a yazmak için sunucu SDK'larını (Node.js, Java, Python veya Go) kullanın. Sunucu SDK'larını oluşturulmasına ilişkin talimatlar için, bkz Başlayın .
    • Büyük veri göçler, kullanım hızlandırmak için batched yazar ve tek bir ağ isteğinde 500 operasyonlara gönderebilir.
    • Altında kalabilmek için Bulut Firestore oranı limitleri her koleksiyon için ikinci 500 yazıyor / etmek, sınır operasyonları.

Cloud Firestore'a yeni veriler ekleyin

Veritabanlarınız arasında eşliği korumak için her iki veritabanına da gerçek zamanlı olarak yeni veriler ekleyin. Bir istemci Realtime Database'e her yazdığında Cloud Firestore'a yazmayı tetiklemek için Cloud Functions'ı kullanın. Cloud Firestore'un, Cloud Functions'tan gelen yeni verilere, geçmiş veri geçişinizden yaptığınız tüm yazmalara göre öncelik verdiğinden emin olun.

Bir istemci Realtime Database'e her veri yazdığında Cloud Firestore'a yeni veya değişen verileri yazmak için bir işlev oluşturun. Hakkında daha fazla bilgi Gerçek Zamanlı Veri Tabanı tetikleyiciler Bulut Fonksiyonlar için.

Taşınan veriler için Cloud Firestore'u birincil veritabanınız yapın

Bazı verileriniz için birincil veritabanınız olarak Cloud Firestore'u kullanmaya karar verdiyseniz, kurduğunuz tüm veri yansıtma işlevlerini hesaba kattığınızdan ve Cloud Firestore Güvenlik Kurallarınızı doğruladığınızdan emin olun.

  1. Veritabanlarınız arasında eşliği korumak için Bulut İşlevlerini kullandıysanız, bir döngüde her iki veritabanında da yazma işlemlerini çoğaltmadığınızdan emin olun. İşlevinizi tek bir veritabanına yazacak şekilde değiştirin veya işlevi tamamen kaldırın ve hala Realtime Database'e bağlı uygulamalarda taşınan veriler için yazma işlevini aşamalı olarak sonlandırmaya başlayın. Bunu uygulamanız için nasıl ele alacağınız, özel ihtiyaçlarınıza ve kullanıcılarınıza bağlıdır.

  2. Verilerinizin uygun şekilde güvenli olduğunu doğrulayın. Cloud Firestore Güvenlik Kurallarınızı veya IAM kurulumunuzu doğrulayın.