Birden Çok Veritabanıyla Ölçeklendirme

Firebase Realtime Database'de performansı optimize etmenin ve verilerinizi ölçeklendirmenin en iyi yolu verilerinizi birden fazla Realtime Database örneğine ayırmaktır. yardımcı olur. Parçalama size, bağımsız veritabanları için geçerli olan sınırlar ek olarak yük dengeleme ve performans optimizasyonu.

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

Aşağıdaki senaryolardan herhangi birine uyan bir gerçek zamanlı veritabanı oluşturun:

  • 200.000 eşzamanlı bağlantı sınırını aşmak istiyorsanız 1.000 yazma işlemi/saniye veya limits değerini döndürür.
  • Birden fazla ayrı veri kümeniz var ve performansı optimize etmek istiyorsanız (örneğin, ayrı, bağımsız kullanıcı gruplarına hizmet veren bir sohbet uygulaması).
  • Çalışma süresini iyileştirmek ve verimlerini artırmak için birden fazla veritabanı arasında yükü Tek bir veritabanı örneğinin aşırı yüklenme riskini azaltır.

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 fazla veritabanıyla eşleyin.
  2. Birden fazla veritabanı örneği oluşturun.
  3. 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ışır. Realtime Database, veritabanı örneklerinde sorguları desteklemez.
  • 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 sonucunda söz konusu veritabanına doğrudan bağlanmaktan daha fazla ek yük ihtiyaç duyduğunuz her örneği burada bulabilirsiniz.

Kategorilere veya müşteriye göre veri grubu verileri

Verileri, kullanıcı veya veri türüne göre gruplandırılmış şekilde ayrı 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şmıyor, veri tabanlarınızda yinelenen veriler olup olmadığını kontrol eder ve yalnızca tek bir veritabanı örneğidir. 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 fazla Realtime Database örneği oluşturma

Blaze fiyatlandırma planı kullanıyorsanız 1.000'e kadar hesap oluşturabilirsiniz. aynı Firebase projesindeki veritabanı örneklerini

Firebase konsolunda veritabanları bölümündeki içerik menüsünü kullanarak veritabanı oluşturma

  1. Firebase konsolunda Veri sekmesine gidin. Geliştirme > Veri tabanı bölümüne bakın.
  2. Realtime Database bölümündeki menüden Create new database'i (Yeni veritabanı oluştur) seçin.
  3. Veritabanı referansınızı özelleştirin ve Güvenlik kuralları'nı seçin ve 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 Güvenlik Kuralları grubu vardır. Böylece hassas ayarlar yapabilirsiniz.

Veritabanı örneklerini Firebase konsolunda veya şu API'yi kullanarak oluşturup yönetebilirsiniz: Realtime Database Management REST API'dir.

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

Realtime Database Güvenlik Kurallarınızın her bir veri tabanı için uygun erişime izin verdiğinden emin olun veritabanı örneğiniz olabilir. Her veritabanının kendi kural grubu vardır. Bunları Firebase konsolunda düzenleyebilir ve dağıtabilirsiniz. Hedefleri dağıtmak için Firebase CLI'ı.

  • Kuralları Firebase konsolundan düzenlemek ve dağıtmak için aşağıdaki adımları uygulayın:

    1. Şuraya gidin: Kurallar sekmesi Geliştirme > Veritabanı bölümü.
    2. Düzenlemek istediğiniz veritabanını seçip kuralları değiştirin.
  • Kuralları Firebase CLI'dan düzenlemek ve dağıtmak için aşağıdaki adımları uygulayın:

    1. Veritabanı örnekleriniz için kural dosyalarındaki kuralları değiştirin (ör. foo.rules.json).
    2. Aynı kural dosyasını kullanan veritabanlarını ilişkilendirmek için dağıtım hedefleri oluşturup uygulayın. Örnek:
      firebase target:apply database main my-db-1 my-db-2
      .
      firebase target:apply database other my-other-db-3
    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"}
        ]
      }
      
    4. Dağıtma komutunu çalıştırın:

      firebase deploy
      .

Aynı yerden kuralları tutarlı bir şekilde düzenlediğinizden ve dağıttığınızdan emin olun. Dağıtılıyor kuralları, API'de yaptığınız tüm düzenlemeleri geçersiz kılar Firebase konsolu üzerinden erişim ve kuralları doğrudan Firebase konsolunda düzenleme Firebase CLI aracılığıyla 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
Not: Bu Firebase ürünü, App Clip hedefinde kullanılamaz.
// Get the default database instance for an app
var ref: DatabaseReference!

ref = Database.database().reference()
. // URL ile ikincil veritabanı örneği al var ref: VeritabanıReferansı! ref = Database.database("https://testapp-1234.firebaseio.com").reference()
ziyaret edin.
Objective-C
Not: Bu Firebase ürünü, App Clip hedefinde kullanılamaz.
// Get the default database instance for an app
@property (strong, nonatomic) FIRDatabaseReference *ref;

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

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

Hangi Firebase Realtime Database'i kullanmak 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.