Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Firebase Realtime Database ile Cloud Firestore'u kullanın

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırı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, Build Presence in Cloud Firestore bölümünde belirtildiği gibi Realtime Database'in varlık desteğinden yararlanmak isteyebilirsiniz.

Veritabanları arasındaki farklar hakkında daha fazla bilgi edinin.

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.

Hem Realtime Database hem de Cloud Firestore için faturalandırma maliyetlerini hesaba kattığınızdan emin olun.

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. Realtime Database ve Cloud Firestore arasındaki faturalandırma farklılıkları hakkında daha fazla bilgi edinin.

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. Realtime Database'de bunu yapmanın en etkili yolu, cities listesinden verileri kopyalayan ayrı bir başkent listesi tutmaktır:

{
   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')

Cloud Firestore veri modeli hakkında daha fazla bilgi edinin ve Cloud Firestore veritabanınızı nasıl yapılandıracağınız konusunda daha fazla fikir için Çözümlerimize göz atın.

Verilerinizi koruyun

Android, Apple veya Web istemcileri için Cloud Firestore Güvenlik Kuralları'nı veya sunucular için Kimlik Erişim Yönetimi'ni (IAM) kullanıyor olsanız da, verilerinizi hem Cloud Firestore'da hem de Realtime Database'de koruduğunuzdan emin 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.
  • Artık verileri ayrı olarak doğrulamanız gerekmez ( Realtime Database'de yaptığınız gibi).
  • 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. Verilerinizi Realtime Database'den dışa aktarın veya yeni bir yedekleme kullanın .
    1. Firebase konsolundaki Gerçek Zamanlı Veritabanı bölümüne gidin.
    2. Veri sekmesinden, veritabanınızın kök düzeyindeki düğümünü seçin ve menüden JSON'u Dışa Aktar'ı seçin.
  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. Her veritabanının benzersiz ihtiyaçları olacağından bu komut dosyası için bir şablon sunamasak da, Slack kanalımızdaki veya Stack Overflow'taki Cloud Firestore uzmanları komut dosyanızı inceleyebilir veya özel durumunuz için önerilerde bulunabilir.
    • 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ı ayarlamaya ilişkin talimatlar için Başlarken bölümüne bakın.
    • Büyük veri geçişlerini hızlandırmak için toplu yazmaları kullanın ve tek bir ağ isteğinde 500'e kadar işlem gönderin.
    • Cloud Firestore hız sınırlarının altında kalmak için her koleksiyon için işlemleri 500 yazma/saniye ile sınırlayın.

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. Cloud Functions için Gerçek Zamanlı Veritabanı tetikleyicileri hakkında daha fazla bilgi edinin.

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 Cloud Functions'ı 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.