Birden Çok Veritabanıyla Ölçeklendirin

Firebase Gerçek Zamanlı Veritabanında performansı optimize etmenin ve verilerinizi ölçeklendirmenin en iyi yolu, verilerinizi birden fazla Gerçek Zamanlı Veritabanı örneğine bölmektir; bu, veritabanı parçalama olarak da bilinir. Parçalama, yük dengeleme ve performans optimizasyonunun yanı sıra, tek tek veritabanı örnekleri için geçerli olan sınırların ötesinde ölçeklendirme esnekliği sağlar.

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ına bölmek 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ırlardan herhangi birinin ötesinde ölçeklendirme yapmak 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 artırmak ve tek bir veritabanı örneğinin aşırı yüklenmesi riskini azaltmak için birden fazla veritabanındaki 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. Uygulamanızın özel ihtiyaçlarına göre verilerinizi birden fazla 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.

Verilerinizi haritalayın

Verilerinizi birden fazla veritabanına 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ındaki sorguları desteklemez.
  • Veri tabanı örnekleri arasında veri paylaşımı veya çoğaltılması yoktur (veya minimum düzeyde 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ığını gösteren bir harita saklayın. Bu şekilde, hangi veritabanı örneğinin bağlanan istemciye karşılık geldiğini program aracılığıyla arayabilirsiniz. Bunun, ihtiyacınız olduğunda belirli bir veritabanı örneğine doğrudan bağlanmaktan daha fazla ek yüke yol açabileceğini unutmayın.

Verileri kategorilere veya müşteriye göre paketleyin

Verileri, kullanıcıya veya veri türüne göre gruplandırılmış, silolanmış 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 sohbet verilerini benzersiz veritabanı örneklerinde saklayabilirsiniz.

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 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 kendi veritabanı örneğiyle eşlemek için kuruluşun kimliğini kullanabilirsiniz. Örneğin, A organizasyonu Gerçek Zamanlı Veritabanı A ile eşleşir.

Uygulamanız için verileri eşleme ş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

Blaze fiyatlandırma planını kullanıyorsanız aynı Firebase projesinde 1.000'e kadar veritabanı örneği oluşturabilirsiniz.

veritabanları bölümündeki içerik menüsüyle Firebase konsolunda bir veritabanı oluşturun

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

İhtiyaç duyduğunuz sayıda veritabanı örneği oluşturmak için işlemi tekrarlayın. Her veritabanı örneğinin kendine ait Firebase Gerçek Zamanlı Veritabanı Güvenlik Kuralları seti vardır, böylece verilerinize erişimde ince ayar yapabilirsiniz.

Firebase konsolunda veya Gerçek Zamanlı Veritabanı Yönetimi REST API'sini kullanarak veritabanı örnekleri oluşturabilir ve yönetebilirsiniz.

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

Gerçek Zamanlı Veritabanı Güvenliği 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'yi kullanarak düzenleyebileceğiniz kendi kuralları vardır.

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

    1. Geliştir > Veritabanı bölümünde Kurallar sekmesine gidin.
    2. Düzenlemek istediğiniz veritabanını seçin ve ardından kuralları değiştirin.
  • Firebase CLI'den 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ı 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
    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ım komutunu çalıştırın:

      firebase deploy

Kuralları tutarlı bir şekilde aynı yerden düzenleyip dağıttığınızdan emin olun. Kuralları Firebase CLI'den 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 tüm son değişiklikleri geçersiz kılar.

Uygulamanızı birden fazla 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'ye veya uygulamaya göre alabilirsiniz. Bir URL belirtmezseniz uygulamanın varsayılan veritabanı örneğinin referansını alırsınız.

Web modular API

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 namespaced API

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 Clip hedefinde mevcut değildir.
// 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
Not: Bu Firebase ürünü, App Clip hedefinde mevcut değildir.
// Get the default database instance for an app
@property (strong, nonatomic) FIRDatabaseReference *ref;

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

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

Hangi Firebase Gerçek Zamanlı Veritabanına Firebase CLI komutunu uygulamak istediğinizi belirtmek için --instance seçeneğini kullanın. Örneğin, my-example-shard.firebaseio.com adlı bir veritabanı örneğinin profil oluşturucusunu çalıştırmak için aşağıdaki komutu kullanın:

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

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

Her istemcinin bir oturum sırasında birden fazla veritabanına bağlanması gerekiyorsa, her bir veritabanı örneğine yalnızca gerekli olduğu sürece bağlanarak, her bir veritabanı örneğine yapılan eşzamanlı bağlantıların sayısını azaltabilirsiniz.

Daha fazla tavsiye alın

Verilerinizi birden çok veritabanı örneğinde parçalama konusunda daha fazla yardıma ihtiyacınız varsa Slack kanalımızdan veya Stack Overflow üzerinden Firebase uzmanlarına ulaşın.