Layanan Firebase Data Connect memiliki tiga komponen utama:
- Database PostgreSQL yang mendasarinya dengan skema SQL-nya sendiri
- Skema aplikasi Data Connect (dideklarasikan dalam file
.gql
) - sejumlah konektor (dideklarasikan dalam file
.gql
Anda).
Skema SQL adalah sumber tepercaya untuk data Anda, skema Data Connect adalah cara konektor Anda dapat melihat data tersebut, dan konektor mendeklarasikan API yang dapat digunakan klien Anda untuk mengakses data tersebut.
Saat men-deploy layanan Data Connect dengan CLI, Anda akan memigrasikan skema SQL, lalu memperbarui skema Data Connect, lalu memperbarui setiap konektor.
Konsep deployment penting
Untuk memahami deployment sepenuhnya, penting untuk memperhatikan konsep utama tentang skema dan konektor.
Deployment skema
Deployment skema Data Connect memengaruhi skema SQL untuk database Cloud SQL Anda. Data Connect membantu Anda memigrasikan skema selama deployment, baik saat Anda menggunakan database baru maupun perlu menyesuaikan database yang ada tanpa merusaknya.
Migrasi skema Data Connect memiliki dua mode validasi skema yang berbeda: ketat dan kompatibel.
Validasi mode ketat mengharuskan skema database sama persis dengan skema aplikasi sebelum skema aplikasi dapat diperbarui. Semua tabel atau kolom yang tidak digunakan dalam skema Data Connect Anda akan dihapus dari database.
Validasi mode kompatibel mengharuskan skema database kompatibel dengan skema aplikasi sebelum skema aplikasi dapat diperbarui; perubahan tambahan apa pun yang menghapus skema, tabel, atau kolom bersifat opsional.
Kompatibel berarti migrasi skema hanya memengaruhi tabel dan kolom yang direferensikan dalam skema aplikasi Anda. Elemen dalam database yang tidak digunakan oleh skema aplikasi Anda tidak akan diubah. Oleh karena itu, setelah deployment, database Anda mungkin berisi:
- Skema
- Tabel
- Kolom
Deployment konektor
Kueri dan mutasi Data Connect tidak dikirim oleh kode klien dan dijalankan di server. Sebagai gantinya, saat di-deploy, operasi Data Connect ini disimpan di server, seperti Cloud Functions. Artinya, deployment dapat merusak pengguna yang ada.
Mengikuti alur kerja deployment
Anda dapat mengerjakan project Data Connect di direktori project lokal dan di konsol Firebase.
Alur deployment yang direkomendasikan mencakup:
- Mencantumkan skema dan konektor yang saat ini di-deploy dengan
firebase dataconnect:services:list
. - Mengelola pembaruan skema.
- Periksa perbedaan skema SQL antara database Cloud SQL dan skema Data Connect lokal dengan
firebase dataconnect:sql:diff
. - Jika diperlukan, lakukan migrasi skema SQL dengan
dataconnect:sql:migrate
.
- Periksa perbedaan skema SQL antara database Cloud SQL dan skema Data Connect lokal dengan
- Melakukan pen-deployment skema dan koneksi dengan menjalankan
firebase deploy
, baik untuk skema, konektor, maupun kombinasi resource Anda.
Men-deploy dan mengelola resource Data Connect
Sebaiknya verifikasi resource produksi sebelum melakukan deployment.
firebase dataconnect:services:list
Saat bekerja di direktori project lokal, Anda biasanya akan menggunakan perintah firebase deploy
untuk men-deploy skema dan konektor ke produksi, dengan masukan interaktif.
Dengan menggunakan perintah deploy
apa pun, flag --only dataconnect
memungkinkan Anda memisahkan deployment Data Connect dari produk lain dalam project Anda.
Deployment normal
firebase deploy --only dataconnect
Dalam deployment normal ini, CLI Firebase mencoba men-deploy skema dan konektor Anda.
Langkah ini memvalidasi bahwa skema baru tidak merusak konektor yang ada. Ikuti praktik terbaik saat membuat perubahan yang menyebabkan gangguan.
Tindakan ini juga memverifikasi bahwa skema SQL telah dimigrasikan sebelum mengupdate skema Data Connect. Jika tidak, Anda akan otomatis diminta untuk melakukan langkah-langkah yang diperlukan untuk memigrasikan skema.
Deployment flag --force
firebase deploy --only dataconnect --force
Jika validasi skema SQL atau konektor tidak menjadi masalah, Anda dapat
menjalankan kembali perintah dengan --force
untuk mengabaikannya.
Deployment --force
masih memeriksa apakah skema SQL cocok dengan skema Data Connect, memperingatkan ketidakcocokan, dan meminta.
Men-deploy resource yang dipilih
Untuk men-deploy dengan kontrol yang lebih terperinci, gunakan flag --only
dengan argumen serviceId
. Untuk men-deploy hanya perubahan skema untuk layanan tertentu:
firebase deploy --only dataconnect:serviceId:schema
Anda juga dapat men-deploy semua resource untuk konektor dan layanan yang ditentukan.
firebase deploy --only dataconnect:serviceId:connectorId
Terakhir, Anda dapat men-deploy skema dan semua konektor untuk satu layanan.
firebase deploy --only dataconnect:serviceId
Me-roll back deployment
Untuk melakukan rollback manual, lihat versi kode sebelumnya dan deploy. Jika deployment asli menyertakan perubahan yang merusak, Anda mungkin tidak dapat sepenuhnya memulihkan data yang dihapus.
Memigrasikan skema database
Jika Anda membuat prototipe dengan cepat, bereksperimen dengan skema, dan mengetahui bahwa perubahan skema Anda bersifat destruktif, Anda dapat merencanakan penggunaan alat Data Connect untuk memverifikasi perubahan dan mengawasi cara update dilakukan.
Membandingkan perubahan skema SQL
Anda dapat memverifikasi perubahan:
firebase dataconnect:sql:diff
Anda dapat meneruskan daftar layanan yang dipisahkan koma.
Perintah ini membandingkan skema lokal untuk layanan dengan skema saat ini dari database Cloud SQL yang sesuai. Jika ada perbedaan, perintah ini akan mencetak perintah SQL yang akan dijalankan untuk memperbaiki perbedaan tersebut
Menerapkan perubahan
Jika Anda puas dan siap men-deploy perubahan pada instance Cloud SQL skema, berikan perintah firebase dataconnect:sql:migrate
. Anda akan diminta untuk menyetujui perubahan.
firebase dataconnect:sql:migrate [serviceId]
Di lingkungan interaktif, pernyataan migrasi SQL dan perintah tindakan ditampilkan.
Memigrasikan dalam mode ketat atau kompatibel
Dalam project baru, mode validasi skema default
akan diterapkan. Perilaku perintah migrate
adalah menerapkan semua perubahan skema database
yang diperlukan oleh skema aplikasi Anda, lalu meminta Anda untuk menyetujui
operasi opsional yang menghapus skema, tabel, atau kolom untuk memaksa skema database
Anda agar sama persis dengan skema aplikasi Anda.
Anda dapat menyesuaikan perilaku ini dengan mengubah file dataconnect.yaml
.
Hapus tanda komentar pada kunci schemaValidation
, dan deklarasikan COMPATIBLE
sehingga hanya
perubahan yang diperlukan yang diterapkan dalam migrasi.
schemaValidation: "COMPATIBLE"
Atau, tetapkan perilaku ke STRICT
sehingga semua perubahan skema diterapkan dan
skema database Anda dipaksa untuk cocok dengan skema aplikasi Anda.
schemaValidation: "STRICT"
Lihat referensi CLI Data Connect untuk informasi selengkapnya.
Praktik terbaik untuk mengelola skema dan konektor
Firebase merekomendasikan beberapa praktik yang harus diikuti dalam project Data Connect Anda.
Meminimalkan perubahan yang dapat menyebabkan gangguan
- Firebase merekomendasikan untuk menyimpan file skema dan konektor Data Connect Anda dalam kontrol sumber.
- Hindari perubahan yang menyebabkan error jika memungkinkan. Beberapa contoh umum perubahan
yang menyebabkan error meliputi:
- Menghapus kolom dari skema
- Membuat kolom nullable dalam skema Anda menjadi non-nullable (yaitu
Int
->Int!
) - Mengganti nama kolom di skema Anda.
- Jika Anda perlu menghapus kolom dari skema, pertimbangkan untuk membaginya
menjadi beberapa deployment untuk meminimalkan dampak:
- Pertama, hapus semua referensi ke kolom di konektor Anda, lalu deploy perubahan.
- Selanjutnya, update aplikasi Anda untuk menggunakan SDK yang baru dibuat.
- Terakhir, hapus kolom dalam file
.gql
skema, migrasikan skema SQL, dan deploy lagi.
Menggunakan mode ketat saat menggunakan database baru
Jika Anda menggunakan Data Connect dengan database baru dan secara aktif
mengembangkan skema aplikasi, dan ingin memastikan skema database
tetap sesuai dengan skema aplikasi, Anda dapat menentukan
schemaValidation: "STRICT"
di dataconnect.yaml
.
Tindakan ini akan memastikan perubahan opsional juga diterapkan.
Menggunakan mode yang kompatibel jika Anda memiliki data produksi di database
Jika Anda membuat perubahan pada database yang berisi data produksi, sebaiknya jalankan migrasi skema dalam mode yang kompatibel untuk memastikan data yang ada tidak dihapus. Anda dapat menentukan schemaValidation: "COMPATIBLE"
di dataconnect.yaml
Dalam mode kompatibel, hanya perubahan migrasi skema yang diperlukan yang diterapkan ke database Anda.
DROP SCHEMA
,DROP TABLE
, danDROP COLUMN
dianggap sebagai pernyataan opsional dan tidak akan dibuat untuk rencana Anda, meskipun skema database Anda berisi skema, tabel, atau kolom yang tidak ditentukan dalam skema aplikasi Anda.- Jika tabel database Anda berisi kolom non-null yang tidak disertakan dalam skema aplikasi, batasan
NOT NULL
akan dihapus, sehingga data masih dapat ditambahkan ke tabel dengan konektor yang Anda tentukan.
Apa langkah selanjutnya?
- Men-deploy dan mengelola kode klien yang Anda kembangkan dengan SDK yang dihasilkan tercakup dalam panduan untuk Android, iOS, web, dan Flutter.
- Untuk informasi selengkapnya tentang alat deployment, tinjau referensi CLI Data Connect dan referensi file konfigurasi Data Connect.