Firebase Realtime Database ile Cloud Firestore'u Kullanma

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

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

Verileri Cloud Firestore'a taşıma

Verilerinizin bir kısmını Realtime Database'den Cloud Firestore'da aşağıdaki akışı kullanabilirsiniz. Çü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'deki 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 farklı olduğundan bunları dikkatli bir şekilde 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'da yeni veri yapınızı oluştururken şunları yapabilirsiniz: Realtime Database'deki mevcut verileri eşleyip yeni Cloud Firestore'unuza taşıyın kullanır. Ancak uygulamanızda her iki veritabanını da kullanıyorsanız Geçmiş verileri Realtime Database'den dışarı taşımanız gerekmez.

  3. Yeni verileri gerçek zamanlı olarak Firestore'a yansıtın. Yeni Cloud Firestore'a yeni veriler yazmak için Cloud Functions'ı kullanın veritabanına otomatik olarak eklenir.

  4. Cloud Firestore'u, taşınan veriler için birincil veritabanınız yapın. Bazı verilerinizi taşıdıktan sonra Cloud Firestore'u kullanın. birincil veritabanınız olarak kullanmasını ve taşınan veri için Realtime Database kullanımınızı azaltmanızı dışı verilerdir. Uygulamanızın hâlâ bağlı olan sürümlerini göz önünde bulundurun ve bunları desteklemeye nasıl devam etmeyi planladığınızla ilgili daha fazla bilgiyi Realtime Database'de bulabilirsiniz.

Faturalandırma maliyetlerini hesaba kattığınızdan emin olun hem Gerçek Zamanlı Veritabanı için ve Cloud Firestore'da kullanılabilir.

Verilerinizi eşleştirme

Realtime Database'deki veriler tek bir ağaç şeklinde yapılandırılırken Cloud Firestore'da da veriler sunulur. belgeler, koleksiyonlar ve kaynaklar aracılığıyla daha açık veri hiyerarşilerini alt koleksiyonlardır. Bazı verilerinizi Realtime Database'den Cloud Firestore'u kullanıyorsanız farklı bir mimari kullanmayı düşünebilirsiniz. seçin.

Dikkate alınması gereken önemli farklar

Mevcut Realtime Database ağacınızdan Cloud Firestore'a veri taşırsanız Ancak, projenizin genel sürümü arasındaki Verileri Cloud Firestore'da 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 ve Cloud Firestore arasında farklılık gösterir. Birçok konuda bazı durumlarda Cloud Firestore, Realtime Database'den 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'da kullanılabilir.

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 ile başlayın.

Kullanıcıların şehirlerdeki önemli noktaları bulmalarına yardımcı olan bir şehir rehberi uygulaması düşünün sunuyor. Realtime Database'de yüzeysel okumalar olmadığı için bu verileri 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'da yüzeysel okuma işlemleri yapılır, bu nedenle koleksiyondaki belgeler 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'un 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'de 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'da 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

Aşağıdaki işlemler için Cloud Firestore Güvenlik Kuralları'nı kullanıp kullanmadığınız: Android, Apple veya Web istemcileri ya da Identity Access Management (IAM) kullanıyorsanız, Cloud Firestore'da verilerinizin güvenliğini sağladığınızdan ve olarak belirleyin. 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'u kullanabilirsiniz.

Dikkate alınması gereken önemli farklar

  • Mobil ve web SDK'ları, Cloud Firestore Güvenlik Kuralları'nı kullanırken sunucu SDK'lar, verilerin güvenliğini sağlamak için Identity Access Management (IAM) kullanır.
  • Cloud Firestore Güvenlik Kuralları, joker karakter kullanmadığınız sürece kademeli olarak işlenmez. Belgeler ve aksi takdirde, koleksiyonlar kural devralmaz.
  • Artık verileri ayrı olarak doğrulamanız gerekmiyor. (Realtime Database'de olduğu 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'a taşıma

Veri ve güvenlik yapılarınızı Cloud Firestore'un verilerinizi eklemeye başlayabilirsiniz. Uygulamanızı Realtime Database'den taşıdıktan sonra geçmiş verileri sorgulamayı planlıyorsanız Cloud Firestore'a aktarma işlemi için eski verilerinizi yeni cihazınıza Cloud Firestore veritabanı. Hem Realtime Database'i hem de Uygulamanızda Cloud Firestore'u kullanıyorsanız 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'dan Cloud Firestore.

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

  1. Verilerinizi Realtime Database'den dışa aktarın veya son bir yedeği kullanabilirsiniz.
    1. Şuraya gidin: Realtime Database bölümü Firebase konsolunda yer alır.
    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'da yeni veritabanınızı 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. 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ızdaki 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'a entegre edebilirsiniz. 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ırlarını aşmamak için: işlemleri her koleksiyon için 500 yazma/saniye ile sınırlayın.

Cloud Firestore'a yeni veri ekleme

Veritabanlarınız arasındaki eşliği korumak için her iki veritabanına da gerçek zamanlı. Cloud Firestore'a yazma işlemini tetiklemek için Cloud Functions'ı kullanın Gerçek Zamanlı Veritabanı'na yazar. Cloud Firestore'un açık olduğundan emin olun Cloud Functions'dan gelen yeni verilere tüm yazma işlemlerine göre öncelik verir. iki önemli değişiklik yapabilirsiniz.

Cloud Firestore'a yeni veri yazmak veya mevcut verileri değiştirmek için işlev oluşturun Gerçek Zamanlı Veritabanı'na her veri yazdığında. Daha fazla bilgi: Cloud Functions için Realtime Database tetikleyicileri.

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

Bazı işletmeler için birincil veritabanınız olarak Cloud Firestore'u kullanmaya karar verdiyseniz değerlendiriyorsanız, kullandığınız tüm veri yansıtma fonksiyonlarını Cloud Firestore Güvenlik Kurallarınızı oluşturup 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 hâlâ Realtime Database'e bağlı olan uygulamalarda taşınan veriler 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 Güvenlik Kurallarınızı Doğrulama IAM kurulumu olabilir.