Men-deploy dan mengelola skema dan konektor Data Connect

Layanan Firebase Data Connect memiliki tiga komponen utama:

  • Database PostgreSQL pokok dengan skema SQL-nya sendiri
  • Skema aplikasi Data Connect (dideklarasikan dalam file .gql Anda)
  • sejumlah konektor (dideklarasikan dalam file .gql Anda).

Skema SQL adalah sumber tepercaya untuk data Anda, Data Connect skema adalah bagaimana konektor Anda dapat melihat data itu, dan konektor mendeklarasikan API yang dapat digunakan klien Anda untuk mengakses data tersebut.

Saat men-deploy layanan Data Connect dengan CLI, Anda akan migrasikan skema SQL Anda, lalu perbarui skema Data Connect Anda, lalu perbarui setiap konektor Anda.

Konsep deployment yang penting

Untuk memahami penerapan 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.

Data Connect migrasi skema memiliki dua validasi skema yang berbeda mode: ketat dan kompatibel.

  • Validasi mode ketat mengharuskan skema database sama persis dengan skema aplikasi sebelum skema aplikasi dapat diperbarui. Apa saja tabel atau kolom yang tidak digunakan di skema Data Connect Anda akan dihapus dari {i>database<i}.

  • Validasi mode kompatibel mengharuskan skema database kompatibel dengan skema aplikasi sebelum skema aplikasi dapat diperbarui; setiap perubahan tambahan yang menghapus skema, tabel, atau kolom bersifat opsional.

    Kompatibel berarti migrasi skema hanya memengaruhi tabel dan kolom yang dirujuk 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 perlu, lakukan migrasi skema SQL dengan dataconnect:sql:migrate.
  3. Melakukan penempatan skema dan koneksi dengan menjalankan firebase deploy, baik untuk skema, konektor, maupun kombinasi resource saja.

Men-deploy dan mengelola resource Data Connect

Sebaiknya verifikasi resource produksi sebelum melakukan deployment.

firebase dataconnect:services:list

Saat bekerja di direktori proyek lokal, biasanya Anda akan menggunakan firebase deploy untuk men-deploy skema dan konektor ke produksi, dengan masukan interaktif.

Menggunakan perintah deploy apa pun, flag --only dataconnect memungkinkan Anda memisahkan Data Connect deployment dari produk lain di 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 dapat menyebabkan gangguan.

Tindakan ini juga memverifikasi bahwa skema SQL telah dimigrasikan sebelum mengupdate skema Data Connect. Jika tidak, Google Ads akan secara otomatis meminta Anda 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.

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 tertentu.

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 bisa merusak, Anda mungkin tidak dapat sepenuhnya memulihkan data apa pun yang dihapus.

Memigrasikan skema database

Jika Anda membuat prototipe dengan cepat, bereksperimen dengan skema, dan mengetahui skema perubahan bersifat merusak, Anda dapat membuat rencana untuk menggunakan alat Data Connect memverifikasi perubahan dan mengawasi bagaimana pembaruan dilakukan.

Perubahan skema SQL berbeda

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 sudah puas dan siap men-deploy perubahan pada skema Cloud SQL instance, berikan perintah firebase dataconnect:sql:migrate. Anda akan menjadi untuk menyetujui perubahan.

firebase dataconnect:sql:migrate [serviceId]

Dalam lingkungan interaktif, pernyataan migrasi SQL dan prompt tindakan ditampilkan.

Bermigrasi dalam mode ketat atau kompatibel

Dalam project baru, mode validasi skema default berlaku. 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 akan 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 mengetahui informasi selengkapnya.

Praktik terbaik untuk mengelola skema dan konektor

Firebase merekomendasikan beberapa praktik untuk diikuti di Data Connect Anda project secara terprogram.

Minimalkan perubahan yang dapat menyebabkan gangguan

  • Firebase merekomendasikan untuk mempertahankan skema dan konektor Data Connect Anda file 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 dalam skema.
  • Jika Anda perlu menghapus kolom dari skema, pertimbangkan untuk membaginya menjadi beberapa deployment untuk meminimalkan dampaknya:
    • 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 bekerja dengan 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 Anda

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 {i>database<i} Anda berisi kolom {i>non-null<i} yang tidak termasuk dalam skema aplikasi, batasan NOT NULL akan dihapus, sehingga data dapat masih ditambahkan ke tabel dengan konektor yang Anda tentukan.

Apa langkah selanjutnya?