Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Skala dengan Banyak Basis Data

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Cara terbaik untuk mengoptimalkan kinerja dan menskalakan data Anda di Firebase Realtime Database adalah dengan membagi data Anda ke beberapa instance Realtime Database, yang juga dikenal sebagai sharding database. Sharding memberi Anda fleksibilitas untuk menskalakan melampaui batas yang berlaku untuk instans database individual, selain penyeimbangan beban dan pengoptimalan kinerja.

Kapan harus membagi data Anda

Anda mungkin ingin melakukan sharding data di beberapa database jika Anda menggunakan Realtime Database dan cocok dengan salah satu skenario berikut:

  • Anda ingin menskalakan melampaui batas 200.000 koneksi simultan, 1.000 operasi tulis/detik, atau salah satu batas lainnya untuk instans database tunggal.
  • Anda memiliki beberapa kumpulan data terpisah dan ingin mengoptimalkan kinerja (misalnya, aplikasi obrolan yang melayani grup pengguna yang terpisah dan independen).
  • Anda ingin menyeimbangkan beban di beberapa database untuk meningkatkan waktu aktif dan mengurangi risiko kelebihan beban pada satu instans database.

Bagaimana cara membagi data Anda?

Untuk melakukan sharding data Anda, ikuti langkah-langkah berikut (dijelaskan secara lebih rinci di bawah):

  1. Petakan data Anda ke beberapa database sesuai dengan kebutuhan spesifik aplikasi Anda.
  2. Buat beberapa contoh database.
  3. Konfigurasikan aplikasi Anda agar terhubung ke instance Realtime Database yang diperlukan untuk setiap kumpulan data.

Petakan data Anda

Saat Anda memetakan data ke beberapa database, coba penuhi kondisi berikut:

  • Setiap kueri hanya berjalan terhadap satu contoh database. Realtime Database tidak mendukung kueri di seluruh instance database.
  • Tidak ada berbagi atau duplikasi data di seluruh instans database (atau berbagi atau duplikasi minimal).
  • Setiap instance aplikasi hanya terhubung ke satu database pada saat tertentu.

Saat Anda memetakan data, pertimbangkan untuk menerapkan strategi berikut:

Buat "pecahan master"

Simpan peta tentang bagaimana data Anda disimpan di seluruh instance database. Dengan cara ini, Anda dapat secara terprogram mencari contoh database mana yang sesuai dengan klien penghubung. Ingatlah bahwa ini mungkin memiliki lebih banyak overhead daripada menghubungkan langsung ke instans database tertentu yang Anda butuhkan, saat Anda membutuhkannya.

Data keranjang berdasarkan kategori atau pelanggan

Simpan data dalam instans basis data tertutup, dikelompokkan berdasarkan pengguna atau tipe data. Misalnya, jika Anda membuat aplikasi obrolan yang melayani beberapa organisasi, Anda bisa membuat instans database untuk setiap organisasi dan menyimpan semua data obrolan dalam instans database unik.

Dalam hal ini, organisasi A dan organisasi B tidak berbagi data, tidak ada data duplikat di database Anda, dan Anda hanya melakukan kueri terhadap satu instance database. Selain itu, pengguna di setiap organisasi hanya terhubung ke database organisasi mereka saat mereka menggunakan aplikasi obrolan.

Anda kemudian dapat membuat beberapa instans database terlebih dahulu dan menggunakan ID organisasi untuk memetakan tim ke instans databasenya. Misalnya, organisasi A memetakan ke Realtime Database A.

Cara Anda memetakan data untuk aplikasi Anda bergantung pada kasus penggunaan khusus Anda, tetapi kondisi dan strategi yang diuraikan di atas dapat membantu Anda menentukan apa yang berhasil untuk data Anda.

Buat beberapa instance Realtime Database

Jika Anda menggunakan paket harga Blaze , Anda dapat membuat beberapa instance database dalam proyek Firebase yang sama.

buat database di Firebase console dengan menu konteks di bagian database

  1. Di konsol Firebase, buka tab Data di bagian Kembangkan > Basis Data .
  2. Pilih Buat database baru dari menu di bagian Realtime Database .
  3. Sesuaikan referensi Database dan Aturan keamanan Anda, lalu klik Mengerti .

Ulangi proses untuk membuat instance database sebanyak yang Anda butuhkan. Setiap instance database memiliki kumpulan Aturan Firebase Realtime Database sendiri, sehingga Anda dapat menyempurnakan akses ke data Anda.

Anda dapat membuat dan mengelola instance database di Firebase console atau menggunakan REST API Realtime Database Management .

Edit dan terapkan Aturan Database Realtime untuk setiap instance

Pastikan Aturan Database Realtime Anda mengizinkan akses yang sesuai ke setiap instans database dalam proyek Anda. Setiap database memiliki kumpulan aturannya sendiri, yang dapat Anda edit dan terapkan dari Firebase console, atau gunakan Firebase CLI untuk menerapkan target .

  • Untuk mengedit dan menerapkan aturan dari Firebase console, ikuti langkah-langkah berikut:

    1. Buka tab Aturan di bagian Kembangkan > Basis Data .
    2. Pilih database yang ingin Anda edit, lalu ubah aturannya.
  • Untuk mengedit dan menerapkan aturan dari Firebase CLI, ikuti langkah-langkah berikut:

    1. Ubah aturan dalam file aturan untuk instance database Anda (misalnya, foo.rules.json ).
    2. Buat dan terapkan target penerapan untuk mengaitkan database yang menggunakan file aturan yang sama. Misalnya:
      firebase target:apply database main my-db-1 my-db-2
      firebase target:apply database other my-other-db-3
    3. Perbarui file konfigurasi firebase.json Anda dengan target penerapan:

      {
        "database": [
          {"target": "main", "rules": "foo.rules.json"},
          {"target": "other", "rules": "bar.rules.json"}
        ]
      }
      
    4. Jalankan perintah penyebaran:

      firebase deploy

Pastikan Anda secara konsisten mengedit dan menerapkan aturan dari tempat yang sama. Menerapkan aturan dari Firebase CLI akan menggantikan semua pengeditan yang Anda buat di Firebase console, dan aturan pengeditan langsung di Firebase console akan menggantikan semua perubahan terbaru yang Anda terapkan melalui Firebase CLI.

Hubungkan aplikasi Anda ke beberapa instance database

Gunakan referensi database untuk mengakses data yang disimpan dalam instans database sekunder. Anda bisa mendapatkan referensi untuk instance database tertentu melalui URL atau aplikasi. Jika Anda tidak menentukan URL, Anda akan mendapatkan referensi untuk instance database default aplikasi.

Web version 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 version 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);
Cepat
Catatan: Produk Firebase ini tidak tersedia di target Klip Aplikasi.
// Get the default database instance for an app
var ref: DatabaseReference!

ref = Database.database().reference()
// Dapatkan instance database sekunder dengan URL var ref: DatabaseReference! ref = Database.database("https://testapp-1234.firebaseio.com").reference()
Objective-C
Catatan: Produk Firebase ini tidak tersedia di target Klip Aplikasi.
// Get the default database instance for an app
@property (strong, nonatomic) FIRDatabaseReference *ref;

self.ref = [[FIRDatabase database] reference];
// Dapatkan instance database sekunder dengan URL @property (kuat, nonatomic) FIRDatabaseReference *ref; self.ref = [[FIRDatabase databaseWithURL:@"https://testapp-1234.firebaseio.com"] referensi];

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

Tentukan instance saat menggunakan Firebase CLI

Gunakan opsi --instance untuk menentukan Firebase Realtime Database mana Anda ingin menerapkan perintah Firebase CLI. Misalnya, gunakan perintah berikut untuk menjalankan profiler untuk instance database bernama my-example-shard.firebaseio.com :

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

Optimalkan koneksi di setiap database

Jika setiap klien perlu terhubung ke beberapa database selama sesi, Anda dapat mengurangi jumlah koneksi simultan ke setiap instans database dengan menghubungkan ke setiap instans database hanya selama diperlukan.

Dapatkan lebih banyak saran

Jika Anda memerlukan bantuan lebih lanjut untuk membagi data Anda di beberapa instance database, hubungi pakar Firebase di saluran Slack kami atau di Stack Overflow .