Firebase Realtime Database ile Cloud Firestore'u Kullanma

Uygulamanızda hem Firebase Realtime Database hem de Cloud Firestore kullanabilirsiniz. ihtiyaçlarınıza uygun şekilde yararlanabilirsiniz. Örneğin, aşağıda açıklandığı gibi varlık için Realtime Database desteğinden yararlanmak isteyebilir Cloud Firestore bölgesinde varlık oluşturun.

Daha fazla bilgi: veritabanları arasındaki farkları giderin.

Veriler Cloud Firestore hedefine taşınıyor

Verilerinizin bir kısmını Realtime Database ürününden Cloud Firestore, aşağıdaki akışı göz önünde bulundurun. Çünkü her veritabanı göz önünde bulundurmalısınız. otomatik taşıma yolunu izleyebilirsiniz. Bunun yerine şu genel ilerlemeyi izleyebilirsiniz:

  1. Realtime Database veri yapısını ve güvenlik kurallarını Cloud Firestore Hem Realtime Database hem de Cloud Firestore Firebase Authentication'ı kullanır. Böylece uygulamanız için kullanıcı kimlik doğrulamasını değiştirmeniz gerekmez. Ancak kuralları ve veri modeli birbirinden farklıdır. Bu nedenle, verileri Cloud'a taşımaya başlamadan önce bu farklılıkları göz önünde bulundurun Firestore.

  2. Geçmiş verileri taşıyın. Cloud Firestore üzerinde yeni veri yapınızı oluştururken şunları yapabilirsiniz: Realtime Database paketinden yeni Cloud Firestore cihazınıza eşleyip mevcut verileri taşıyın kullanır. Ancak uygulamanızda her iki veritabanını da kullanıyorsanız geçmiş verileri Realtime Database dışına taşımanız gerekmez.

  3. Yeni verileri gerçek zamanlı olarak Firestore'a yansıtın. Yeni Cloud Firestore cihazınıza yeni veri yazmak için Cloud Functions'ı kullanın Realtime Database ürününe eklenir.

  4. Cloud Firestore veri tabanını taşınan veriler için birincil veritabanınız yapın. Bazı verilerinizi taşıdıktan sonra Cloud Firestore kullanın birincil veritabanınız olarak kullanmasını sağlayabilir ve taşınan veriler için Realtime Database kullanımınızı azaltabilirsiniz. dışı verilerdir. Uygulamanızın hâlâ bağlı olan sürümlerini göz önünde bulundurun Realtime Database ve bu verileri nasıl desteklemeye devam etmeyi planladığınızı öğrenin.

Faturalandırma maliyetlerini hesaba kattığınızdan emin olun hem Realtime Database için ve Cloud Firestore.

Verilerinizi eşleştirme

Realtime Database içindeki veriler tek bir ağaç olarak yapılandırılmıştır. Cloud Firestore belgeler, koleksiyonlar ve kaynaklar aracılığıyla daha açık veri hiyerarşilerini alt koleksiyonlardır. Verilerinizin bir kısmını Realtime Database ürününden Cloud Firestore, farklı bir mimari düşünmeyi düşünebilirsiniz seçin.

Dikkate alınması gereken önemli farklar

Verileri mevcut Realtime Database ağacınızdan Cloud Firestore ağacına taşırsanız Ancak, projenizin genel sürümü arasındaki Cloud Firestore ürününde verileri yapılandırma şeklinizi etkileyebilecek veritabanları:

  • Sığ sorgular, hiyerarşik veri yapılarında daha fazla esneklik sunar.
  • Karmaşık sorgular daha fazla ayrıntı sağlar ve tekrarlama ihtiyacını azaltır dışı verilerdir.
  • Sorgu imleçleri daha etkili sayfalara ayırma sağlar.
  • İşlemler artık tüm verileriniz için ortak bir köke ihtiyaç duymamakta ve daha fazlası yardımcı olur.
  • Faturalandırma maliyetleri Realtime Database ile Cloud Firestore arasında farklılık gösteriyor. Birçok konuda durumlarda, Cloud Firestore, Realtime Database fiyatından daha pahalı olabilir, özellikle de çok sayıda küçük işlemden yararlanıyorsanız. Dikkatlice Böylece veritabanınızdaki işlem sayısını azaltarak emin olmanız gerekir. Şunlar hakkında daha fazla bilgi edinin: Realtime Database arasında faturalandırma ve Cloud Firestore.

Kullanıma sunulmuş en iyi uygulamalar

Aşağıdaki örnekte, projeyi başlatırken göz önünde bulundurabileceğiniz veritabanları arasında geçiş yapabilirsiniz. Sığ okumalardan faydalanarak daha doğal veri yapıları için sorgulama kapasiteleri Realtime Database ile birlikte.

Kullanıcıların şehirlerdeki önemli noktaları bulmalarına yardımcı olan bir şehir rehberi uygulaması düşünün sunuyor. Realtime Database ürününde sığ okumalar olmadığından verileri aşağıdaki şekilde iki üst düzey düğümde yapılandırın:

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

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

Cloud Firestore yüzeysel okumalara sahip olduğundan koleksiyondaki dokümanlar için sorgu oluşturma alt koleksiyonlardan veri almaz. Sonuç olarak, önemli noktaları alt koleksiyondaki bilgilere erişebilir:

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

Dokümanların boyutu en fazla 1 MB olabilir. Bu da depolama için her şehir belgesini küçük tutmak yerine küçük bir alt koleksiyon olarak İç içe listelerle şişirilen belgeler.

Cloud Firestore ürününün gelişmiş sorgulama özellikleri, ortak erişim kalıpları için yinelenen veriler Örneğin, şurada bir ekran düşünün: tüm başkentleri nüfusa göre sıralanmış şekilde gösteren şehir rehberi uygulaması Realtime Database içinde bunu yapmanın en etkili yolu ayrı bir cities listesindeki verileri kopyalayan büyük şehirlerin listesi aşağıdaki gibidir:

{
   cities: {
    // ...
   },

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

Cloud Firestore dilinde büyük şehirlerin listesini sırasıyla ifade edebilirsiniz. popülasyonun farklı olması gerekir:

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

Cloud Firestore veri modeli hakkında daha fazla bilgi edinin ve Verilerinizi nasıl yapılandıracağınıza ilişkin daha fazla fikir edinmek için Çözümlerimize Cloud Firestore veritabanı.

Verilerinizin güvenliğini sağlayın

Cloud Firestore Security Rules hizmetini kullanıp kullanmadığınız Android, Apple veya Web istemcileri ya da Identity Access Management (IAM) kullanıyorsanız Cloud Firestore ürününde de verilerinizin güvenliğini sağladığınızdan emin olun. Realtime Database olarak. Kullanıcı kimlik doğrulaması her iki veritabanı için de Authentication tarafından işlenir. Böylece, manuel olarak yapmaya başladığınızda, Cloud Firestore kullanılıyor.

Dikkate alınması gereken önemli farklar

  • Mobil ve web SDK'ları Cloud Firestore Security Rules, sunucu ise SDK'lar, verilerin güvenliğini sağlamak için Identity Access Management (IAM) kullanır.
  • Cloud Firestore Security Rules, joker karakter kullanmadıkça kademeli olarak değerlendirilmez. Belgeler ve aksi takdirde, koleksiyonlar kural devralmaz.
  • Artık verileri ayrı olarak doğrulamanız gerekmiyor. (Realtime Database ürününde yaptığınız gibi).
  • Cloud Firestore, sorgu yürütmeden önce kuralları kontrol ederek kullanıcının sorgu tarafından döndürülen tüm veriler için uygun erişime sahip olduğundan emin olun.

Geçmiş verileri Cloud Firestore hesabına taşıyın

Veri ve güvenlik yapılarınızı Cloud Firestore ile eşledikten sonra verilerinizi eklemeye başlayabilirsiniz. Uygulamanızı Realtime Database ürününden taşıdıktan sonra geçmiş verileri sorgulamayı planlıyorsanız Cloud Firestore hizmetine eski verilerinizin yeni bilgisayarınızda Cloud Firestore veritabanı. Hem Realtime Database hem de Uygulamanızda Cloud Firestore varsa bu adımı atlayabilirsiniz.

Eski verilerin yeni verilerin üzerine yazılmasını önlemek için verilerinizi geçmiş verileri ele alacağız. Her iki veritabanına da aynı anda yeni veriler eklerseniz belirttiğimiz gibi, projenize eklenecek yeni verilere öncelik Cloud Functions - Cloud Firestore.

Geçmiş verileri Cloud Firestore hizmetine taşımak için aşağıdaki adımları uygulayın:

  1. Verilerinizi Realtime Database veya son yedeği kullan.
    1. Şuraya gidin: Realtime Database bölümü Firebase konsolunda kontrol edebilirsiniz.
    2. Data (Veri) sekmesinde veritabanınızın kök düzeyi düğümünü seçip Menüden JSON'u dışa aktarın.
  2. Cloud Firestore hizmetinde yeni veritabanınızı oluşturun ve verilerinizi ekleyin.

    Verilerinizin bir kısmını Cloud Firestore hizmetine taşırken aşağıdaki stratejileri uygulayabilirsiniz:

    • Verilerinizi sizin için taşıyan özel bir komut dosyası yazın. Size sunduğumuz seçenekler arasında bu komut dosyası için bir şablondur çünkü her veritabanının benzersiz ihtiyaçları vardır. Slack kanalımızda Cloud Firestore uzmanları veya Stack Overflow'da senaryonuzu inceleyebilir veya özel durumunuzla ilgili önerilerde bulunabilir.
    • Doğrudan veri yazmak için sunucu SDK'larını (Node.js, Java, Python veya Go) kullanın Cloud Firestore numaralı telefona. Sunucu SDK'larını ayarlama talimatları için Başlayın.
    • Büyük veri taşıma işlemlerini hızlandırmak için toplu yazmalar ve tek bir ağ isteğinde 500'e kadar işlem gönderebilirsiniz.
    • Cloud Firestore hız sınırının altında kalmak için işlemleri her koleksiyon için 500 yazma/saniye ile sınırlayın.

Cloud Firestore kampanyasına yeni veri ekleyin

Veritabanlarınız arasındaki eşliği korumak için her iki veritabanına da gerçek zamanlı. Cloud Firestore alanına yazma işlemini tetiklemek için Cloud Functions öğesini kullanın Realtime Database. Cloud Firestore Cloud Functions kaynağından gelen yeni verilere tüm yazma işlemlerine göre öncelik verir. iki önemli değişiklik yapabilirsiniz.

Cloud Firestore öğesine yeni veya değişen veri yazmak için işlev oluşturun Realtime Database ürününe her veri yazdığında. Daha fazla bilgi: Cloud Functions için Realtime Database tetikleyici.

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

Bazı veriler için birincil veritabanınız olarak Cloud Firestore kullanmaya karar verdiyseniz, değerlendiriyorsanız, kullandığınız tüm veri yansıtma fonksiyonlarını Cloud Firestore Security Rules cihazınızı ayarlayıp doğrulayın.

  1. Veritabanlarınız arasında denkliği korumak için Cloud Functions kullandıysanız Bir veritabanındaki iki veritabanı arasında yazma işlemlerini kopyalamadığınızdan emin olun. döngüde bulabilirsiniz. İşlevinizi tek bir veritabanına yazacak şekilde değiştirin veya çalışmaya başlayın ve uygulamalarda taşınan veriler hâlâ Realtime Database hesabına bağlı. Bu işi nasıl halledersiniz? uygulamanız belirli ihtiyaçlarınıza ve kullanıcılarınıza bağlıdır.

  2. Verilerinizin düzgün şekilde korunduğunu doğrulayın. Cloud Firestore Security Rules doğrulayın IAM kurulumu olabilir.