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

Gunakan Cloud Firestore dengan Firebase Realtime Database

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

Anda dapat menggunakan Firebase Realtime Database dan Cloud Firestore di aplikasi Anda, dan memanfaatkan manfaat setiap solusi database agar sesuai dengan kebutuhan Anda. Misalnya, Anda mungkin ingin memanfaatkan dukungan Realtime Database untuk kehadiran, seperti yang diuraikan dalam Build Presence di Cloud Firestore .

Pelajari lebih lanjut tentang perbedaan antara database .

Memindahkan data ke Cloud Firestore

Jika Anda memutuskan ingin memigrasikan beberapa data dari Realtime Database ke Cloud Firestore, pertimbangkan alur berikut. Karena setiap database memiliki kebutuhan unik dan pertimbangan struktural, tidak ada jalur migrasi otomatis. Sebagai gantinya, Anda dapat mengikuti perkembangan umum ini:

  1. Petakan struktur data dan aturan keamanan dari Realtime Database ke Cloud Firestore. Baik Realtime Database maupun Cloud Firestore mengandalkan Firebase Authentication, jadi Anda tidak perlu mengubah autentikasi pengguna untuk aplikasi Anda. Namun, aturan keamanan dan model data berbeda dan penting untuk memperhitungkan perbedaan tersebut dengan cermat sebelum Anda mulai memindahkan data ke Cloud Firestore.

  2. Pindahkan data historis. Saat menyiapkan struktur data baru di Cloud Firestore, Anda dapat memetakan dan memindahkan data yang ada dari Realtime Database ke instance Cloud Firestore baru. Namun, jika menggunakan kedua database di aplikasi, Anda tidak perlu memindahkan data historis dari Realtime Database.

  3. Cerminkan data baru ke Firestore secara waktu nyata. Gunakan Cloud Functions untuk menulis data baru ke database Cloud Firestore baru Anda saat ditambahkan ke Realtime Database.

  4. Jadikan Cloud Firestore database utama Anda untuk data yang dimigrasikan. Setelah Anda memigrasikan beberapa data, gunakan Cloud Firestore sebagai database utama dan kurangi penggunaan Realtime Database untuk data yang dimigrasikan. Pertimbangkan versi aplikasi Anda yang masih terikat dengan Realtime Database untuk data tersebut dan rencana Anda untuk terus mendukungnya.

Pastikan Anda memperhitungkan biaya penagihan untuk Realtime Database dan Cloud Firestore .

Petakan data Anda

Data di Realtime Database disusun sebagai pohon tunggal, sedangkan Cloud Firestore mendukung hierarki data yang lebih eksplisit melalui dokumen, koleksi, dan subkoleksi. Jika Anda memindahkan beberapa data dari Realtime Database ke Cloud Firestore, Anda mungkin ingin mempertimbangkan arsitektur yang berbeda untuk data Anda.

Perbedaan utama untuk dipertimbangkan

Jika Anda memindahkan data dari pohon Realtime Database yang ada ke dokumen dan koleksi Cloud Firestore, perhatikan perbedaan utama antara database berikut yang mungkin memengaruhi cara Anda menyusun data di Cloud Firestore:

  • Kueri dangkal menawarkan lebih banyak fleksibilitas dalam struktur data hierarkis.
  • Kueri kompleks menawarkan lebih banyak perincian dan mengurangi kebutuhan akan data duplikat.
  • Kursor kueri menawarkan paginasi yang lebih kuat.
  • Transaksi tidak lagi membutuhkan root umum untuk semua data Anda, dan lebih efisien.
  • Biaya penagihan antara Realtime Database dan Cloud Firestore berbeda. Dalam banyak kasus, Cloud Firestore mungkin lebih mahal daripada Realtime Database, terutama jika Anda mengandalkan banyak operasi kecil. Pertimbangkan untuk mengurangi jumlah operasi di database Anda dan hindari penulisan yang tidak perlu. Pelajari lebih lanjut perbedaan penagihan antara Realtime Database dan Cloud Firestore.

Praktik terbaik dalam tindakan

Contoh berikut mencerminkan beberapa pertimbangan yang mungkin Anda buat saat Anda memindahkan data antar database. Anda dapat memanfaatkan pembacaan dangkal dan kemampuan kueri yang lebih baik untuk struktur data yang lebih alami daripada yang mungkin Anda gunakan dengan Realtime Database.

Pertimbangkan aplikasi panduan kota yang membantu pengguna menemukan landmark terkenal di kota-kota di seluruh dunia. Karena Realtime Database tidak memiliki pembacaan yang dangkal, Anda mungkin harus menyusun data dalam dua node tingkat teratas, sebagai berikut:

// /cities/$CITY_KEY
{
  name: "New York",
  population: 8000000,
  capital: False
}

// /city-landmark/$CITY_KEY/$LANDMARK_KEY
{
  name: "Empire State Building",
  category: "Architecture"
}

Cloud Firestore memiliki pembacaan yang dangkal, sehingga meminta dokumen dalam koleksi tidak menarik data dari subkoleksi. Akibatnya, Anda dapat menyimpan informasi tengara dalam subkoleksi:

// /cities/$CITY_ID
{
  name: "New York",
  population: 8000000,
  capital: False,
  landmarks: [... subcollection ...]
}

Dokumen memiliki ukuran maksimum 1MB, yang merupakan alasan lain untuk menyimpan landmark sebagai subkoleksi, menjaga agar setiap dokumen kota tetap kecil, daripada dokumen yang membengkak dengan daftar bersarang.

Kemampuan kueri lanjutan Cloud Firestore mengurangi kebutuhan untuk menggandakan data untuk pola akses umum. Misalnya, pertimbangkan layar di aplikasi panduan kota yang menampilkan semua ibu kota yang diurutkan berdasarkan jumlah penduduk. Di Realtime Database, cara paling efisien untuk melakukannya adalah dengan mempertahankan daftar ibu kota terpisah yang menduplikasi data dari daftar cities , sebagai berikut:

{
   cities: {
    // ...
   },

   capital-cities: {
     // ...
   }
}

Di Cloud Firestore, Anda dapat menyatakan daftar ibu kota dalam urutan populasi sebagai satu kueri:

db.collection('cities')
    .where('capital', '==', true)
    .orderBy('population')

Baca selengkapnya tentang model data Cloud Firestore dan lihat Solusi kami untuk mengetahui lebih banyak ide tentang cara menyusun database Cloud Firestore Anda.

Amankan data Anda

Baik Anda menggunakan Aturan Keamanan Cloud Firestore untuk klien Android, Apple, atau Web, atau Manajemen Akses Identitas (IAM) untuk server, pastikan Anda mengamankan data di Cloud Firestore serta Realtime Database. Autentikasi pengguna ditangani oleh Autentikasi untuk kedua database, sehingga Anda tidak perlu mengubah penerapan Autentikasi saat mulai menggunakan Cloud Firestore.

Perbedaan utama untuk dipertimbangkan

  • SDK seluler dan web menggunakan Aturan Keamanan Cloud Firestore, sedangkan SDK server menggunakan Identity Access Management (IAM) untuk mengamankan data.
  • Aturan Keamanan Cloud Firestore tidak menurun kecuali Anda menggunakan karakter pengganti. Dokumen dan koleksi tidak mewarisi aturan.
  • Anda tidak perlu lagi memvalidasi data secara terpisah (seperti yang Anda lakukan di Realtime Database ).
  • Cloud Firestore memeriksa aturan sebelum menjalankan kueri untuk memastikan bahwa pengguna memiliki akses yang sesuai untuk semua data yang dikembalikan oleh kueri.

Pindahkan data historis ke Cloud Firestore

Setelah Anda memetakan struktur data dan keamanan Anda ke data dan model keamanan Cloud Firestore, Anda dapat mulai menambahkan data Anda. Jika Anda berencana untuk membuat kueri data historis setelah memindahkan aplikasi dari Realtime Database ke Cloud Firestore, tambahkan ekspor data lama Anda ke database Cloud Firestore yang baru. Jika Anda berencana menggunakan Realtime Database dan Cloud Firestore di aplikasi, Anda dapat melewati langkah ini.

Untuk menghindari penimpaan data baru dengan data lama, Anda mungkin ingin menambahkan data historis terlebih dahulu. Jika Anda menambahkan data baru ke kedua database secara bersamaan, seperti yang dibahas di langkah berikutnya, pastikan Anda mengutamakan data baru yang ditambahkan ke Cloud Firestore oleh Cloud Functions.

Untuk memigrasikan data historis ke Cloud Firestore, ikuti langkah-langkah berikut:

  1. Ekspor data Anda dari Realtime Database atau gunakan cadangan terbaru .
    1. Buka bagian Realtime Database di Firebase console.
    2. Dari tab Data , pilih simpul tingkat akar basis data Anda dan pilih Ekspor JSON dari menu.
  2. Buat database baru Anda di Cloud Firestore dan tambahkan data Anda .

    Pertimbangkan strategi berikut saat Anda memindahkan beberapa data ke Cloud Firestore:

    • Tulis skrip khusus yang mem-porting data Anda untuk Anda. Meskipun kami tidak dapat menawarkan template untuk skrip ini, karena setiap database akan memiliki kebutuhan yang unik, pakar Cloud Firestore di saluran Slack kami atau di Stack Overflow dapat meninjau skrip Anda atau menawarkan saran untuk situasi spesifik Anda.
    • Gunakan SDK server (Node.js, Java, Python, atau Go) untuk menulis data langsung ke Cloud Firestore. Untuk petunjuk penyiapan SDK server, lihat Memulai .
    • Untuk mempercepat migrasi data besar, gunakan penulisan batch dan kirim hingga 500 operasi dalam satu permintaan jaringan.
    • Agar tetap berada di bawah batas kecepatan Cloud Firestore , batasi operasi hingga 500 penulisan/detik untuk setiap koleksi.

Tambahkan data baru ke Cloud Firestore

Untuk mempertahankan paritas antara database Anda, tambahkan data baru ke kedua database secara realtime. Gunakan Cloud Functions untuk memicu penulisan ke Cloud Firestore setiap kali klien menulis ke Realtime Database. Pastikan Cloud Firestore mengutamakan data baru yang berasal dari Cloud Functions daripada semua penulisan yang Anda buat dari migrasi data historis.

Buat fungsi untuk menulis data baru atau mengubah ke Cloud Firestore setiap kali klien menulis data ke Realtime Database. Pelajari lebih lanjut pemicu Realtime Database untuk Cloud Functions.

Jadikan Cloud Firestore database utama Anda untuk data yang dimigrasikan

Jika Anda telah memutuskan untuk menggunakan Cloud Firestore sebagai database utama untuk beberapa data Anda, pastikan Anda memperhitungkan setiap fungsi pencerminan data yang telah Anda siapkan dan memvalidasi Aturan Keamanan Cloud Firestore Anda.

  1. Jika Anda menggunakan Cloud Functions untuk mempertahankan paritas di antara database, pastikan Anda tidak menduplikasi operasi tulis di kedua database secara berulang. Alihkan fungsi Anda untuk menulis ke satu database, atau hapus fungsi sepenuhnya dan mulai hentikan secara bertahap fungsi tulis untuk data yang dimigrasikan di aplikasi yang masih terikat dengan Realtime Database. Bagaimana Anda menangani ini untuk aplikasi Anda bergantung pada kebutuhan spesifik Anda dan pengguna Anda.

  2. Verifikasi bahwa data Anda diamankan dengan benar. Validasi Aturan Keamanan Cloud Firestore atau penyiapan IAM Anda.