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

Birden Çok Veritabanıyla Ölçeklendirin

Firebase Realtime Database'de performansı optimize etmenin ve verilerinizi ölçeklendirmenin en iyi yolu, verilerinizi veritabanı parçalama olarak da bilinen birden çok Realtime Database örneğine bölmektir. Kırma, size ötesinde ölçeğine esneklik sağlar sınırlar dengeleme ve performans optimizasyonu yüklemek ek olarak, bireysel veritabanı örnekleri için geçerlidir.

Verilerinizi ne zaman parçalamalısınız?

Gerçek Zamanlı Veritabanı kullanıyorsanız ve aşağıdaki senaryolardan herhangi birine uyuyorsanız, verilerinizi birden çok veritabanında paylaşmak isteyebilirsiniz:

  • Sen 200.000 eşzamanlı bağlantı sınırının ötesinde ölçeğe istiyorum, 1,000 yazma işlemleri / saniye ya da diğer herhangi sınırlar tek bir veritabanı örneği için.
  • Birden çok, ayrı veri kümeniz var ve performansı optimize etmek istiyorsunuz (örneğin, ayrı, bağımsız kullanıcı gruplarına hizmet eden bir sohbet uygulaması).
  • Çalışma süresini iyileştirmek ve tek bir veritabanı örneğini aşırı yükleme riskini azaltmak için yükü birden çok veritabanında dengelemek istiyorsunuz.

Verilerinizi nasıl parçalayabilirsiniz?

Verilerinizi parçalamak için şu adımları izleyin (aşağıda daha ayrıntılı olarak açıklanmıştır):

  1. Uygulamanızın özel ihtiyaçlarına göre verilerinizi birden çok veritabanıyla eşleştirin.
  2. Birden çok veritabanı örneği oluşturun.
  3. Uygulamanızı, her veri kümesi için gerekli olan Gerçek Zamanlı Veritabanı örneğine bağlanacak şekilde yapılandırın.

Verilerinizi eşleyin

Verilerinizi birden çok veritabanıyla eşlerken aşağıdaki koşulları karşılamaya çalışın:

  • Her sorgu yalnızca tek bir veritabanı örneğine karşı çalışır. Gerçek Zamanlı Veritabanı, veritabanı örnekleri arasında sorguları desteklemez.
  • Veritabanı örnekleri arasında veri paylaşımı veya kopyası yok (veya minimum paylaşım veya çoğaltma).
  • Her uygulama örneği, herhangi bir anda yalnızca bir veritabanına bağlanır.

Verilerinizi eşlerken aşağıdaki stratejileri uygulamayı düşünün:

Bir "ana parça" oluşturun

Verilerinizin veritabanı örneklerinde nasıl depolandığına dair bir harita saklayın. Bu şekilde, bağlanan istemciye karşılık gelen veritabanı örneğini programlı olarak arayabilirsiniz. Bunun, ihtiyacınız olan belirli bir veritabanı örneğine ihtiyacınız olduğunda doğrudan bağlanmaktan daha fazla ek yükü olabileceğini unutmayın.

Kategorilere veya müşteriye göre paket verileri

Verileri, kullanıcı veya veri türüne göre gruplandırılmış, silolanmış veritabanı örneklerinde depolayın. Örneğin, birden çok kuruluşa hizmet veren bir sohbet uygulaması oluşturursanız, her kuruluş için bir veritabanı örneği oluşturabilir ve tüm sohbet verilerini benzersiz veritabanı örneklerinde depolayabilirsiniz.

Bu durumda, A kuruluşu ve B kuruluşu verileri paylaşmaz, veritabanlarınızda yinelenen veriler yoktur ve yalnızca tek bir veritabanı örneğine yönelik sorgular gerçekleştirirsiniz. Ayrıca, her kuruluştaki kullanıcılar yalnızca sohbet uygulamasını kullandıklarında kuruluşlarının veritabanına bağlanır.

Daha sonra önceden birkaç veritabanı örneği oluşturabilir ve bir ekibi veritabanı örneğine eşlemek için kuruluşun kimliğini kullanabilirsiniz. Örneğin, A kuruluşu, Gerçek Zamanlı Veritabanı A ile eşleşir.

Uygulamanız için verileri haritalama şekliniz, özel kullanım durumunuza bağlıdır, ancak yukarıda özetlenen koşullar ve stratejiler, verileriniz için neyin işe yaradığını tanımlamanıza yardımcı olabilir.

Birden çok Gerçek Zamanlı Veritabanı örneği oluşturun

Üzerinde iseniz Blaze fiyatlandırma planı , aynı Firebase projede birden veritabanı örneğini oluşturabilirsiniz.

veritabanları bölümündeki bağlam menüsü ile Firebase konsolunda bir veritabanı oluşturun

  1. Firebase konsolunda, Veri sekmesine gidin geliştirin> Veritabanı bölümünde.
  2. Gerçek Zamanlı Veri Tabanı bölümünde menüsünden yeni veritabanı oluşturun seçin.
  3. Senin Veritabanı referansı ve özelleştirme Güvenlik kuralları , ardından Anladım'a tıklayın.

İhtiyacınız olduğu kadar çok veritabanı örneği oluşturmak için işlemi tekrarlayın. Her veritabanı örneğinin kendi Firebase Gerçek Zamanlı Veritabanı Kuralları vardır, böylece verilerinize erişimde ince ayar yapabilirsiniz.

Oluşturabilir ve Firebase konsolu veya kullanma veritabanı örneklerini yönetebilirsiniz Gerçek Zamanlı Veri Tabanı Yönetimi DİNLENME API .

Her örnek için Gerçek Zamanlı Veritabanı Kurallarını düzenleyin ve dağıtın

Gerçek Zamanlı Veritabanı Kurallarınızın projenizdeki her bir veritabanı örneğine uygun erişime izin verdiğinden emin olun. Her veritabanı Eğer Firebase konsolunda veya kullanmaktan düzenleyebilir ve dağıtma olabilir kurallarının kendi belirledi hedefleri dağıtmak için Firebase CLI .

  • Firebase konsolundan kuralları düzenlemek ve dağıtmak için şu adımları izleyin:

    1. Git Kurallar sekmesi geliştirin> Veritabanı bölümünde.
    2. Düzenlemek istediğiniz veritabanını seçin, ardından kuralları değiştirin.
  • Firebase CLI'den kuralları düzenlemek ve dağıtmak için şu adımları izleyin:

    1. (Örneğin, veritabanı örnekleri için kurallar dosyalarındaki kuralları değiştirin foo.rules.json ).
    2. Aynı kurallar dosyasını kullanan veritabanlarını ilişkilendirmek için konuşlandırma 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
    3. Senin güncelleyin firebase.json dağıtma hedeflerle yapılandırma dosyası:

      {
        "database": [
          {"target": "main", "rules": "foo.rules.json"},
          {"target": "other", "rules": "bar.rules.json"}
        ]
      }
      
    4. Dağıtma komutu çalıştırın:

      firebase deploy

Kuralları sürekli olarak aynı yerden düzenlediğinizden ve dağıttığınızdan emin olun. Firebase CLI'den kuralları dağıtmak, Firebase konsolunda yaptığınız tüm düzenlemeleri geçersiz kılar ve kuralları doğrudan Firebase konsolunda düzenlemek, Firebase CLI aracılığıyla dağıttığınız son değişiklikleri geçersiz kılar.

Uygulamanızı birden çok veritabanı örneğine bağlayın

İkincil veritabanı örneklerinde depolanan verilere erişmek için veritabanı referansını kullanın. URL veya uygulamaya göre belirli bir veritabanı örneği için referans alabilirsiniz. Bir URL belirtmezseniz, uygulamanın varsayılan veritabanı örneği için referans alırsınız.

Web sürümü 9

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 sürümü 8

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);
Süratli
Not: Bu Firebase ürün App Klip hedefte kullanılamaz.
// Get the default database instance for an app
var ref: DatabaseReference!

ref = Database.database().reference()
// URL var ref tarafından ikincil veritabanı örneği alın: DatabaseReference! ref = Database.database("https://testapp-1234.firebaseio.com").reference()
Amaç-C
Not: Bu Firebase ürün App Klip hedefte kullanılamaz.
// Get the default database instance for an app
@property (strong, nonatomic) FIRDatabaseReference *ref;

self.ref = [[FIRDatabase database] reference];
// URL @ özellik ile bir ikincil veritabanı örneği alın (güçlü, nonatomic) FIRDatabaseReference * ref; self.ref = [[FIRDatabase databaseWithURL:@"https://testapp-1234.firebaseio.com"] referansı];

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();

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

Firebase CLI'yi kullanırken bir örnek belirtin

Kullanım --instance seçeneği size bir Firebase CLI komutu uygulamak istediğiniz Firebase Gerçek Zamanlı Veri Tabanı belirtmek için. Örneğin, adlı bir veritabanı örneği için Profilcinin çalıştırmak için aşağıdaki komutu kullanın my-example-shard.firebaseio.com :

firebase database:profile --instance "my-example-shard"

Her veritabanındaki bağlantıları optimize edin

Bir oturum sırasında her istemcinin birden çok veritabanına bağlanması gerekiyorsa, her bir veritabanı örneğine yalnızca gerektiği kadar bağlanarak her bir veritabanı örneğine eşzamanlı bağlantı sayısını azaltabilirsiniz.

Daha fazla tavsiye alın

Birden veritabanı örnekleri arasında verilerinizi Sharding fazla yardıma ihtiyaç duyarsanız üzerinde Firebase uzmanlara ulaşmak Gevşek kanalı veya üzerinde yığın taşması .