Men-deploy dan mengelola skema dan konektor Data Connect

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:

  1. Mencantumkan skema dan konektor yang saat ini di-deploy dengan firebase dataconnect:services:list.
  2. Mengelola pembaruan skema.
    1. Periksa perbedaan skema SQL antara database Cloud SQL dan skema Data Connect lokal dengan firebase dataconnect:sql:diff.
    2. Jika diperlukan, lakukan migrasi skema SQL dengan dataconnect:sql:migrate.
  3. 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, dan DROP 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?