Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Çoklu Veritabanları ile Ölçeklendirme

Firebase Realtime Database'de performansı optimize etmenin ve verilerinizi ölçeklendirmenin en iyi yolu, verilerinizi birden çok Realtime Database örneğine bölmektir, bu aynı zamanda veritabanı parçalama olarak da bilinir. Sharding, yük dengeleme ve performans optimizasyonuna ek olarak, ayrı veritabanı örneklerine uygulanan sınırların ötesinde ölçeklendirme esnekliği sağlar.

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

Realtime Database kullanıyorsanız ve aşağıdaki senaryolardan herhangi birine uyuyorsanız, verilerinizi birden çok veritabanında parçalamak isteyebilirsiniz:

  • Tek bir veritabanı örneği için 200.000 eşzamanlı bağlantı, 1.000 yazma işlemi / saniye sınırının veya diğer sınırların ötesinde ölçeklendirmek istiyorsunuz.
  • Birden fazla, ayrı veri kümeniz var ve performansı optimize etmek istiyorsunuz (örneğin, ayrı, bağımsız kullanıcı gruplarına hizmet veren bir sohbet uygulaması).
  • Çalışma süresini iyileştirmek ve tek bir veritabanı örneğinin aşırı yüklenmesi riskini azaltmak için birden çok veritabanı arasında yükü 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. Verilerinizi, uygulamanızın özel ihtiyaçlarına göre birden çok veritabanına eşleyin.
  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.

Verilerinizin haritasını çıkarın

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

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

Verilerinizi haritalandırırken aşağıdaki stratejileri uygulamayı düşünün:

Bir "ana parça" oluşturun

Verilerinizin veritabanı örneklerinde nasıl depolandığına dair bir harita depolayın. Bu şekilde, hangi veritabanı örneğinin bağlanan istemciye karşılık geldiğini programlı olarak arayabilirsiniz. Bunun, ihtiyaç duyduğunuz belirli veritabanı örneğine doğrudan bağlanmaktan daha fazla ek yükü olabileceğini unutmayın.

Kategorilere veya müşteriye göre veri grubu

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

Bu durumda, kuruluş A ve kuruluş B verileri paylaşmaz, veritabanlarınızda yinelenen veriler yoktur ve yalnızca tek bir veritabanı örneğine yönelik sorgular gerçekleştirirsiniz. Ek olarak, 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ğiyle 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 eşleştirme şekliniz, kullanım durumunuza bağlıdır, ancak yukarıda özetlenen koşullar ve stratejiler, verileriniz için neyin işe yarayacağını tanımlamanıza yardımcı olabilir.

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

Blaze fiyatlandırma planındaysanız aynı Firebase projesinde birden çok veritabanı örneği oluşturabilirsiniz.

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

  1. Firebase konsolunda, Geliştirme> Veritabanı bölümündeki Veri sekmesine gidin.
  2. Gerçek Zamanlı Veritabanı bölümündeki menüden Yeni veritabanı oluştur'u seçin.
  3. Veritabanı referansınızı ve Güvenlik kurallarınızı özelleştirin, ardından Anladım'ı tıklayın.

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

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 veritabanı örneğine uygun erişime izin verdiğinden emin olun. Her veritabanının, Firebase konsolundan düzenleyip dağıtabileceğiniz veya hedefleri dağıtmak için Firebase CLI'yı kullanabileceğiniz kendi kuralları vardır.

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

    1. Geliştir> Veritabanı bölümündeki Kurallar sekmesine gidin .
    2. Düzenlemek istediğiniz veritabanını seçin, ardından kuralları değiştirin.
  • Firebase CLI'daki kuralları düzenlemek ve dağıtmak için şu adımları izleyin:

    1. Veritabanı örnekleriniz için kural dosyalarındaki kuralları değiştirin (örneğin, foo.rules.json ).
    2. Aynı kural 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
    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ğıt komutunu çalıştırın:

      firebase deploy

Kuralları aynı yerden tutarlı bir şekilde düzenlediğinizden ve uyguladığınızdan emin olun. Firebase CLI'dan 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 uyguladığı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. Belirli bir veritabanı örneğinin referansını URL veya uygulamaya göre alabilirsiniz. Bir URL belirtmezseniz, uygulamanın varsayılan veritabanı örneğinin referansını alırsınız.

// init
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 database1 = firebase.database(app2);
Swift
// Get the default database instance for an app
var ref: DatabaseReference!

ref = Database.database().reference()
// URL'ye göre ikincil bir veritabanı örneği alın var ref: DatabaseReference! ref = Database.database ("https://testapp-1234.firebaseio.com") .reference ()
Amaç-C
// Get the default database instance for an app
@property (strong, nonatomic) FIRDatabaseReference *ref;

self.ref = [[FIRDatabase database] reference];
// URL @property (güçlü, atomsuz) tarafından ikincil bir veritabanı örneği alın FIRDatabaseReference * ref; self.ref = [[FIRDatabase databaseWithURL: @ "https://testapp-1234.firebaseio.com"] başvuru];

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 kullanırken bir örnek belirtin

--instance CLI komutunu hangi --instance Realtime Database'e uygulamak istediğinizi belirtmek için --instance seçeneğini kullanın. Örneğin, my-example-shard.firebaseio.com adlı bir veritabanı örneği için profil oluşturucuyu çalıştırmak için aşağıdaki komutu kullanın:

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

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

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

Daha fazla tavsiye alın

Verilerinizi birden çok veritabanı örneğine bölmek için daha fazla yardıma ihtiyacınız varsa, Slack kanalımızdan veya Stack Overflow'daki Firebase uzmanlarına ulaşın.