Firebase Realtime Database ürününde performansı optimize etmenin ve verilerinizi ölçeklendirmenin en iyi yolu verilerinizi birden çok Realtime Database örneğine ayırmaktır. yardımcı olur. Bölme, yük dengeleme ve performans optimizasyonunun yanı sıra tek tek veritabanı örnekleri için geçerli olan sınırların ötesine ölçeklendirme esnekliği sağlar.
Verilerinizi ne zaman bölmelisiniz?
Realtime Database kullanıyorsanız ve aşağıdaki senaryolardan herhangi birine uyuyorsanız verilerinizi birden fazla veritabanı arasında bölme isteyebilirsiniz:
- Tek bir veritabanı örneği için 200.000 eşzamanlı bağlantı, saniyede 1.000 yazma işlemi veya diğer sınırların ötesine ölçeklendirmek istiyorsunuz.
- Birden fazla ayrı veri kümeniz varsa ve performansı optimize etmek istiyorsanız (örneğin, ayrı ve bağımsız kullanıcı gruplarına hizmet veren bir sohbet uygulaması)
- Çalışma süresini artırmak ve tek bir veritabanı örneğinin aşırı yüklenme riskini azaltmak için yükü birden fazla veritabanı arasında dengelemek istiyorsunuz.
Verilerinizi bölme
Verilerinizi parçalamak için şu adımları izleyin (aşağıda daha ayrıntılı olarak açıklanmıştır):
- Uygulamanızın özel ihtiyaçlarına göre verilerinizi birden fazla veritabanıyla eşleyin.
- Birden fazla veritabanı örneği oluşturabilirsiniz.
- Uygulamanızı gerekli Realtime Database örneğine bağlanacak şekilde yapılandırın anlamına gelir.
Verilerinizi eşleştirme
Verilerinizi birden çok veritabanıyla eşlerken şu koşulları kabul etmelisiniz:
- Her sorgu yalnızca tek bir veritabanı örneğinde çalıştırılır. Realtime Database, veritabanı örneklerinde sorguları desteklemiyor.
- Veritabanı örnekleri arasında veri paylaşımı veya çoğaltılması olmaz (veya asgari düzeyde paylaşım ya da yineleme).
- Her uygulama örneği herhangi bir anda yalnızca bir veritabanına bağlanır.
Verilerinizi eşlerken aşağıdaki stratejileri uygulamayı düşünebilirsiniz:
"Ana kırık" oluşturma
Verilerinizin nasıl depolandığına dair bir harita oluşturun izin verir. Bu şekilde, hangi veritabanının örnek, bağlanan istemciye karşılık gelir. Bunun, ihtiyacınız olduğunda doğrudan ihtiyacınız olan veritabanı örneğine bağlanmaktan daha fazla ek maliyete neden olabileceğini unutmayın.
Kategorilere veya müşteriye göre veri grubu verileri
Verileri, kullanıcıya veya veri türüne göre gruplandırılmış, birbirinden izole veritabanı örneklerinde depolayın. Örneğin, birden fazla kuruluşa hizmet veren bir sohbet uygulaması oluşturursanız Her kuruluş için bir veritabanı örneği oluşturabilir ve tüm sohbetleri verileri kullanır.
Bu durumda A kuruluşu ve B kuruluşu veri paylaşmaz, veritabanlarınızda yinelenen veri yoktur ve yalnızca tek bir veritabanı örneğine karşı sorgu yürütürsünüz. Ayrıca, yalnızca her kuruluştaki kullanıcılar sohbet uygulamasını kullanırken kuruluşlarının veritabanına bağlanmasını sağlayabilir.
Daha sonra önceden birkaç veritabanı örneği oluşturabilir ve bir ekibi veritabanı örneğiyle eşlemek için kullanılacak kuruluşun kimliğini kullanın. Örneğin, A kuruluşu, Realtime Database A ile eşlenir.
Uygulamanıza ait verileri eşleme şekliniz kullanım alanınıza bağlıdır, ancak yukarıda özetlenen koşullar ve stratejiler, işletmeniz için neyin işe yaradığını tanımlamanıza dışı verilerdir.
Birden çok Realtime Database örneği oluştur
Blaze fiyatlandırma planı kullanıyorsanız 1.000'e kadar hesap oluşturabilirsiniz. aynı Firebase projesindeki veritabanı örneklerini
Veritabanları bölümündeki bağlam menüsüyle Firebase konsolu" /
- Firebase Konsolu'nda Veri Geliştirme > Veritabanı bölümüne bakın.
- Realtime Database bölümündeki menüden Create new database'i (Yeni veritabanı oluştur) seçin.
- Veritabanı referansınızı özelleştirin ve Güvenlik kuralları, ardından Anladım'ı tıklayın .
İhtiyacınız kadar çok sayıda veritabanı örneği oluşturmak için bu işlemi tekrarlayın. Her biri veritabanı örneğinin kendi Firebase Realtime Database Security Rules kümesi vardır, dolayısıyla hassas ayarlar yapabilirsiniz.
Veritabanı örneklerini Firebase konsolunda veya şu komutu kullanarak oluşturup yönetebilirsiniz: Realtime Database Management REST API.
Her örnek için Realtime Database Security Rules'ü düzenleyip dağıtın
Realtime Database Security Rules öğenizin her biri için uygun erişime izin verdiğinden emin olun veritabanı örneğiniz olabilir. Her veritabanının kendi kural grubu vardır. Bunu düzenlemek ve dağıtmak için Firebase konsolunu veya Hedefleri dağıtmak için Firebase komut satırı arayüzü.
Kuralları Firebase konsolundan düzenlemek ve dağıtmak için aşağıdaki adımları uygulayın:
- Şuraya gidin: Kurallar sekmesi Geliştirme > Veritabanı bölümü.
- Düzenlemek istediğiniz veritabanını seçin ve ardından kuralları değiştirin.
Kuralları Firebase KSA'dan düzenlemek ve dağıtmak için şu adımları uygulayın:
- Veritabanı örnekleriniz için kural dosyalarındaki kuralları değiştirin (ör.
foo.rules.json
). - Aynı kurallar dosyasını kullanan veritabanlarını ilişkilendirmek için dağıtım hedefleri oluşturun ve uygulayın. Örneğin:
firebase target:apply database main my-db-1 my-db-2
firebase target:apply database other my-other-db-3
firebase.json
yapılandırma dosyanızı dağıtım hedefleriyle güncelleyin:{ "database": [ {"target": "main", "rules": "foo.rules.json"}, {"target": "other", "rules": "bar.rules.json"} ] }
Dağıtma komutunu çalıştırın:
firebase deploy
- Veritabanı örnekleriniz için kural dosyalarındaki kuralları değiştirin (ör.
Aynı yerden kuralları tutarlı bir şekilde düzenlediğinizden ve dağıttığınızdan emin olun. Dağıtılıyor Firebase KSA'daki kurallar, Firebase konsolunda oluşturup kuralları doğrudan Firebase konsolunda düzenleme Firebase KSA üzerinden dağıttığınız son değişiklikleri geçersiz kılar.
Uygulamanızı birden fazla veritabanı örneğine bağlama
İkincil veritabanı örneklerinde depolanan verilere erişmek için veritabanı referansını kullanın. Belirli bir veritabanı örneğinin referansını URL veya uygulamaya göre alabilirsiniz. Eğer bir URL belirtmezseniz uygulamanın referansını alırsınız varsayılan veritabanı örneğidir.
Web
import { initializeApp } from "firebase/app"; import { getDatabase } from "firebase/database"; const app1 = initializeApp({ databaseURL: "https://testapp-1234-1.firebaseio.com" }); const app2 = initializeApp({ databaseURL: "https://testapp-1234-2.firebaseio.com" }, 'app2'); // Get the default database instance for an app1 const database1 = getDatabase(app1); // Get a database instance for app2 const database2 = getDatabase(app2);
Web
const app1 = firebase.initializeApp({ databaseURL: "https://testapp-1234-1.firebaseio.com" }); const app2 = firebase.initializeApp({ databaseURL: "https://testapp-1234-2.firebaseio.com" }, 'app2'); // Get the default database instance for an app1 var database1 = firebase.database(); // Get a database instance for app2 var database2 = firebase.database(app2);
Swift
// Get the default database instance for an appvar ref: DatabaseReference! ref = Database.database().reference()
Objective-C
// Get the default database instance for an app@property (strong, nonatomic) FIRDatabaseReference *ref; self.ref = [[FIRDatabase database] reference];
Kotlin+KTX
// Get the default database instance for an app val primary = Firebase.database.reference // Get a secondary database instance by URL val secondary = Firebase.database("https://testapp-1234.firebaseio.com").reference
Java
// Get the default database instance for an app DatabaseReference primary = FirebaseDatabase.getInstance() .getReference(); // Get a secondary database instance by URL DatabaseReference secondary = FirebaseDatabase.getInstance("https://testapp-1234.firebaseio.com") .getReference();
Firebase CLI kullanırken bir örnek belirtme
Firebase Realtime Database özelliklerinden hangisini yapmak istediğinizi belirtmek için --instance
seçeneğini kullanın.
Firebase CLI komutu uygulayın. Örneğin, aşağıdaki komutu kullanarak
my-example-shard.firebaseio.com
adlı veritabanı örneğinin profil oluşturucusu:
firebase database:profile --instance "my-example-shard"
Her veritabanındaki bağlantıları optimize etme
Her istemcinin bir oturum sırasında birden çok veritabanına bağlanması gerekiyorsa şunları yapabilirsiniz: her veritabanı örneğine eş zamanlı bağlantı sayısını azaltarak gereken süre boyunca her veritabanı örneğine bağlanmayı gerektirir.
Daha fazla tavsiye alın
Verilerinizi birden fazla veritabanı örneğinde parçalama konusunda daha fazla yardıma ihtiyacınız varsa Firebase uzmanlarına ulaşmak için Slack kanalı veya Stack Overflow'da çalışır.