Upgrade Otomatis ke Firestore

Halaman ini menjelaskan jalur upgrade dari Cloud Datastore lama ke Firestore dalam mode Datastore.

Firestore dapat beroperasi dalam mode Datastore, sehingga membuatnya kompatibel dengan Cloud Datastore lama. Dengan Firestore dalam mode Datastore, Anda dapat mengakses lapisan penyimpanan Firestore yang ditingkatkan sekaligus mempertahankan perilaku sistem Datastore. Firestore dalam mode Datastore menghapus batasan Cloud Datastore lama berikut:

  • Kueri tidak lagi konsisten pada akhirnya. Sebaliknya, konsistensi tersebut sangat konsisten kecuali Anda secara eksplisit meminta konsistensi akhir.
  • Kueri dalam transaksi tidak lagi diperlukan sebagai kueri ancestor1.
  • Transaksi tidak lagi terbatas pada 25 grup entitas1.
  • Operasi tulis ke grup entity tidak lagi dibatasi hingga 1 per detik1.

Untuk mengetahui informasi selengkapnya tentang mode Datastore, lihat Firestore dalam mode Datastore.

Mulai Juni 2021, migrasi dari Cloud Datastore lama ke Firestore dalam mode Datastore telah dimulai. Migrasi dimulai dari database dengan traffic sangat rendah dan akan diperluas ke database dengan traffic yang lebih tinggi dalam beberapa bulan mendatang.

1 Database yang bermigrasi ke mode serentak Optimistik Dengan Grup Entity tetap tunduk pada batas transaksi 25 grup entity serta batas 1 penulisan per detik di Firestore dalam mode Datastore. Kueri dalam transaksi harus berupa kueri ancestor. Lihat bagian Mode Konkurensi Dengan Grup Entitas untuk informasi selengkapnya.

Upgrade otomatis ke Firestore dalam mode Datastore

Jika mengelola aplikasi yang menggunakan Cloud Datastore lama, Anda tidak perlu memperbarui kode aplikasi. Kami akan memberitahukan jadwal upgrade aplikasi Anda ke Firestore dalam mode Datastore. Upgrade tidak memerlukan periode nonaktif.

Untuk pertanyaan tambahan tentang proses upgrade otomatis, hubungi salah satu saluran dukungan kami.

Melihat jenis database Anda

Anda dapat menggunakan perintah gcloud alpha firestore databases describe untuk melihat jenis database. Temukan keberadaan kolom type di output:

  • type: DATASTORE_MODE

    Jenis database-nya adalah Firestore dalam mode Datastore. Upgrade ini tidak memerlukan upgrade atau sudah menyelesaikan upgrade.

  • type tidak ada dalam output

    Jenis database-nya adalah Cloud Datastore lama. Database akan diupgrade ke Firestore dalam mode Datastore.

  • type: FIRESTORE_NATIVE

    Jenis database-nya adalah Firestore dalam mode Native.

Upgrade tahap

Pada dasarnya, kami mengikuti proses ini untuk mengupgrade database Cloud Datastore lama Anda ke Firestore dalam mode Datastore. Proses ini tidak memerlukan periode nonaktif aplikasi:

  1. Tambahkan replika data Firestore dalam mode Datastore baru ke database Cloud Datastore lama yang sudah ada. Melakukan duplikasi operasi tulis entity secara asinkron ke Firestore dalam mode Datastore.

  2. Salin data dan entri indeks yang ada dari Cloud Datastore lama ke Firestore dalam mode Datastore. Setelah menyalin, verifikasi data.

  3. Mengalihkan entity membaca langsung ke Firestore dalam mode Datastore. Pertama, alihkan pembacaan yang konsisten, lalu alihkan pembacaan yang sangat konsisten.

  4. Alihkan penulisan dan pembacaan transaksi entity langsung ke Firestore dalam mode Datastore.

Proses ini menggunakan tahapan berikut.

1. Menerapkan penulisan secara sinkron

Pada tahap ini, operasi tulis diterapkan secara sinkron ke Cloud Datastore lama: operasi tulis tidak akan melaporkan keberhasilan hingga semua perubahan pada entity dan indeks telah diterapkan ke setidaknya satu replika. Tindakan ini menyimulasikan perilaku Firestore dalam mode Datastore yang juga menerapkan penulisan secara sinkron (dan berbeda dengan perilaku default Cloud Datastore lama di mana penulisan diterapkan secara asinkron setelah di-commit).

Tahap ini dimaksudkan untuk menampilkan dampak latensi dari sinkronisasi yang berlaku di Firestore dalam mode Datastore sebelum upgrade. Penerapan penulisan sinkron akan berlanjut selama dan setelah migrasi.

Database dengan aktivitas yang sangat sedikit akan melewati tahap ini. Untuk menentukan apakah tahap ini telah disertakan dalam upgrade database Anda, periksa [log] untuk tahap APPLY_WRITES_SYNCHRONOUSLY.

2. Salin dan verifikasi

Tahap ini menunjukkan awal migrasi. Tutorial ini memperkenalkan Firestore dalam replika mode Datastore dan melakukan langkah-langkah berikut:

  1. Jurnal

    Operasi tulis entity ke Cloud Datastore lama juga mulai mengalir melalui saluran samping ke replika Firestore dalam mode Datastore. Hal ini terjadi sebagai bagian dari sistem replikasi Cloud Datastore lama yang sudah ada. Operasi tulis ini tidak memengaruhi latensi tulis. Replika Firestore dalam mode Datastore membuat buffer operasi tulis ini untuk menerapkannya setelah langkah penyalinan.

  2. Salin

    Pada replika mode Firestore dalam mode Datastore, buat salinan offline dari data dan entri indeks yang ada. Langkah penyalinan tidak memengaruhi operasi Cloud Datastore lama. Langkah ini dapat berlangsung beberapa hari.

  3. Jurnal Drainase

    Terapkan penulisan dari langkah jurnal di atas data dari salinan offline.

  4. Verifikasi Data

    Verifikasi ulang data di Firestore dalam mode Datastore dengan membandingkannya dengan data di Cloud Datastore lama.

3. Mengalihkan pembacaan yang konsisten pada akhirnya

Tayangkan pada akhirnya yang konsisten (kueri tanpa filter ancestor) dari Firestore dalam mode Datastore. Semantik Cloud Datastore lama untuk pembacaan masih berlaku di tahap ini:

  • Kueri ancestor memiliki konsistensi kuat.
  • Kueri non-ancestor pada akhirnya akan konsisten.
  • Pencariannya sangat konsisten (kecuali yang dikonfigurasi secara eksplisit untuk konsistensi tertunda).

Firestore dalam mode Datastore terus berfungsi sebagai replika data Cloud Datastore lama Anda.

4. Mengalihkan pembacaan yang sangat konsisten

Menyajikan pembacaan yang sangat konsisten (non-transaksional) dari Firestore dalam mode Datastore. Perlu diperhatikan bahwa semantik Cloud Datastore lama untuk pembacaan masih berlaku. Meskipun operasi baca kini berasal langsung dari Firestore, Firestore tetap mengandalkan Cloud Datastore lama untuk menjamin bahwa operasi baca tersebut selalu terbaru untuk pembacaan yang sangat konsisten.

5. Penulisan pengalihan

Alihkan penulisan entity dan pembacaan transaksi ke Firestore dalam mode Datastore. Modifikasi serentak pada entitas yang sama terus menyebabkan pembatalan transaksi. Modifikasi serentak pada entity yang berbeda dalam grup entity yang sama tidak lagi mengakibatkan pembatalan transaksi.

Pada awal tahap ini, Firestore dalam mode Datastore masih mengandalkan Cloud Datastore lama untuk menjamin keaktualannya sebelum setiap penulisan. Setelah penerusan terakhir yang memastikan semua penulisan sebelumnya diterapkan, Firestore dalam mode Datastore berhenti berkonsultasi dengan Cloud Datastore lama.

6. Migrasi selesai

Semantik Firestore dalam mode Datastore untuk pembacaan kini berlaku: semua kueri sangat konsisten.

Harga tetap sama, tetapi penagihan Anda sekarang mencantumkan SKU Firestore. Halaman Kuota App Engine mulai menampilkan penggunaan Firestore, bukan penggunaan Cloud Datastore lama.

Transaksi

Firestore dalam mode Datastore mendukung tiga mode konkurensi:

  • Optimis

    Sebagian besar database Cloud Datastore lama akan menggunakan konkurensi optimistis untuk transaksi di Firestore dalam mode Datastore. Konkurensi optimistis mempertahankan perilaku transaksi yang ada di Cloud Datastore lama.

  • Optimis dengan Grup Entitas

    Database yang bergantung pada semantik transaksi grup entity akan dimigrasikan ke mode serentak ini. Lihat bagian Mode konkurensi Optimistik Dengan Grup Entitas untuk informasi selengkapnya.

  • Pesimis

    Beberapa database yang dimigrasikan sebelumnya dengan aktivitas yang sangat sedikit dimigrasikan dengan kunci pesimis untuk transaksi di Firestore dalam mode Datastore.

Mode serentak dapat diakses melalui resource REST projects.databases Firestore:

curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases"

Mode serentak juga dapat ditemukan dengan memeriksa log untuk stage PREPARE.

Optimis dengan mode konkurensi Grup Entitas

Untuk menghapus batasan throughput penulisan, transaksi, dan kueri Optimistic With Entity Group, ubah mode serentak project Anda menjadi Optimistik. Untuk memastikan perubahan ini kompatibel dengan project Anda:

  1. Buat project pengujian di Firestore dalam mode Datastore.

  2. Ubah mode serentak project pengujian menjadi OPTIMISTIC. Berikan permintaan HTTP PATCH, seperti yang ditunjukkan di bawah.

  3. Jalankan pengujian pada project pengujian untuk memastikan bahwa beban kerja Anda berperforma seperti yang diharapkan tanpa Grup Entity.

  4. Ubah mode serentak project utama Anda dari OPTIMISTIC_WITH_ENTITY_GROUPS menjadi OPTIMISTIC.

Permintaan PATCH HTTP untuk mengubah mode konkurensi database:

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"concurrencyMode":"OPTIMISTIC"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=concurrencyMode"

Logging dan notifikasi progres

Proses upgrade menggunakan Cloud Logging untuk memublikasikan update progres. Untuk melihat log, gunakan Logs Explorer, Cloud Logging API, atau Google Cloud CLI.

Update dipublikasikan ke dua log dengan nama layanan logging datastore.googleapis.com:

Nama log Resource yang dipantau Payload
migration_state datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent
migration_progress datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent

Log migration_state diperbarui saat status keseluruhan upgrade berubah (RUNNING dan COMPLETE).

Log migration_progress diperbarui setiap kali upgrade berpindah ke tahap baru (PREPARE, START, APPLY_WRITES_SYNCHRONOUSLY, COPY_AND_VERIFY, REDIRECT_EVENTUALLY_CONSISTENT_READS, REDIRECT_STRONGLY_CONSISTENT_READS, dan REDIRECT_WRITES).

Untuk menerima notifikasi saat upgrade berlangsung, Anda dapat membuat metrik berbasis log berdasarkan kedua log tersebut dan membuat pemberitahuan berdasarkan metrik tersebut.

Banner migrasi di konsol Google Cloud

Saat database Cloud Datastore lama Anda sedang dalam proses migrasi, banner informasi akan muncul di halaman Datastore Studio pada Konsol Google Cloud. Banner ini mencakup link untuk membuka Cloud Logging dan memfilter update migrasi.

  1. Di konsol Google Cloud, buka halaman Databases.

    BUka Database

  2. Pilih database yang diperlukan dari daftar database.

  3. Di menu navigasi, klik Datastore Studio.

Melihat status saat ini di CLI

Untuk melihat status migrasi saat ini dengan cepat, gunakan perintah gcloud berikut:

gcloud datastore operations describe datastore-firestore-migration

Menjeda migrasi

Migrasi database besar memenuhi syarat untuk dijeda dan dilanjutkan. Menjeda migrasi akan mencegahnya berlanjut ke tahap berikutnya hingga migrasi dilanjutkan. Menjeda migrasi dapat membantu Anda menentukan apakah perubahan yang diamati dalam perilaku atau performa adalah hasil dari proses migrasi atau dari faktor yang tidak terkait.

Setelah menerima notifikasi email tentang migrasi database, Anda dapat memeriksa apakah database memenuhi syarat untuk dijeda dan dilanjutkan dengan menjalankan perintah jeda di bawah. Jika migrasi tidak memenuhi syarat, tindakan ini akan menampilkan error yang menunjukkan bahwa fungsi tersebut tidak tersedia.

Jika migrasi database Anda memenuhi syarat untuk dijeda dan dilanjutkan, perintah di bawah ini akan mulai berfungsi setelah migrasi mencapai tahap START.

Untuk menjeda migrasi:

curl --request POST \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{}' \
"https://datastore.googleapis.com/v1/projects/PROJECT_ID:pauseMigration"

Untuk melanjutkan migrasi:

curl --request POST \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{}' \
"https://datastore.googleapis.com/v1/projects/PROJECT_ID:resumeMigration"

Perintah ini tidak akan berfungsi setelah migrasi selesai.

Jika Anda perlu menjeda migrasi selama lebih dari satu minggu, hubungi melalui saluran dukungan. Setelah dua minggu, migrasi Anda dapat otomatis dilanjutkan.

Metrik Cloud Monitoring

Metrik Cloud Monitoring yang tersedia untuk database Datastore Anda tetap sama selama proses upgrade. lihat metrik Datastore yang tersedia.