Halaman ini menjelaskan cara membuat, mengubah, dan melihat aliran perubahan Spanner untuk database dialek GoogleSQL dan database dialek PostgreSQL. Untuk mempelajari lebih lanjut tentang aliran perubahan, lihat Tentang aliran perubahan.
Karena merupakan objek skema, aliran perubahan dibuat dan dikelola melalui pembaruan skema yang didorong DDL yang sama dengan yang digunakan untuk jenis pekerjaan definisi database lainnya, seperti membuat tabel atau menambahkan indeks.
Spanner memulai operasi jangka waktu lama setelah Anda mengirimkan pernyataan DDL pengubah skema, termasuk yang digunakan untuk membuat, mengubah, atau menghapus aliran perubahan. Aliran perubahan baru atau yang diubah mulai memantau kolom atau tabel yang ditentukan oleh konfigurasi barunya setelah operasi yang berjalan lama ini selesai.
Membuat aliran perubahan
Untuk membuat aliran perubahan, Anda perlu memberikan namanya dan objek skema yang dipantaunya: seluruh database, atau daftar tabel dan kolom tertentu. Anda dapat secara opsional mengonfigurasi aliran perubahan dengan salah satu hal berikut:
- Tentukan periode retensi data untuk mengganti periode retensi default selama tujuh hari.
- Tentukan tipe pengambilan nilai untuk mengganti tipe pengambilan nilai default
OLD_AND_NEW_VALUES. - Terapkan filter penghapusan berbasis TTL untuk menyaring penghapusan berbasis TTL dari aliran perubahan Anda.
- Terapkan filter modifikasi tabel untuk mengecualikan semua modifikasi tabel
INSERT,UPDATE, atauDELETE. Aktifkan pengecualian catatan tingkat transaksi untuk mengecualikan transaksi tertentu dari aliran perubahan Anda.
GoogleSQL
Sintaks DDL untuk membuat aliran perubahan menggunakan GoogleSQL terlihat seperti ini:
CREATE CHANGE STREAM CHANGE_STREAM_NAME
[FOR column_or_table_watching_definition[, ... ] ]
[
OPTIONS (
retention_period = timespan,
value_capture_type = type,
exclude_ttl_deletes = boolean,
exclude_insert = boolean,
exclude_update = boolean,
exclude_delete = boolean,
allow_txn_exclusion = boolean
)
]
PostgreSQL
Sintaks DDL untuk membuat aliran perubahan menggunakan PostgreSQL terlihat seperti ini:
CREATE CHANGE STREAM CHANGE_STREAM_NAME
[FOR column_or_table_watching_definition[, ... ] ]
[
WITH (
retention_period = timespan,
value_capture_type = type,
exclude_ttl_deletes = boolean,
exclude_insert = boolean,
exclude_update = boolean,
exclude_delete = boolean,
allow_txn_exclusion = boolean
)
]
Aliran perubahan baru mulai memantau objek skema yang ditugaskan kepadanya segera setelah operasi yang berjalan lama yang menciptakannya selesai.
Contoh berikut menggambarkan pembuatan aliran perubahan dengan berbagai konfigurasi.
Lihat seluruh basis data
Untuk membuat aliran perubahan yang memantau setiap perubahan data yang dilakukan di seluruh tabel basis data, gunakan kata kunci ALL:
CREATE CHANGE STREAM EverythingStream
FOR ALL;
Konfigurasi ALL secara implisit mencakup semua tabel dan kolom data basis data di masa mendatang, segera setelah dibuat. Ini tidak termasuk tampilan, tabel skema informasi, atau objek lain selain tabel data biasa.
Memantau tabel tertentu
Untuk membatasi cakupan aliran perubahan ke tabel tertentu, bukan seluruh basis data, tentukan daftar satu atau lebih tabel:
CREATE CHANGE STREAM SingerAlbumStream
FOR Singers, Albums;
Spanner secara otomatis memperbarui perubahan aliran yang memantau seluruh tabel untuk mencerminkan perubahan skema yang memengaruhi tabel tersebut, seperti kolom yang ditambahkan atau dihapus.
Perhatikan kolom-kolom tertentu.
Gunakan sintaksis table(column_1[, column_2,
...]) untuk memantau perubahan pada satu atau beberapa kolom non-kunci tertentu dalam tabel yang Anda beri nama:
CREATE CHANGE STREAM NamesAndTitles
FOR Singers(FirstName, LastName), Albums(Title);
Anda tidak dapat menentukan kolom kunci utama di sini karena setiap aliran perubahan selalu melacak kunci utama setiap tabel yang dipantaunya. Hal ini memungkinkan setiap catatan perubahan data mengidentifikasi baris yang diubah berdasarkan kunci utamanya.
Lihat tabel dan kolom dalam satu tampilan
Anda dapat menggabungkan sintaksis pemantauan tabel dan pemantauan kolom dari dua contoh sebelumnya dalam satu aliran perubahan:
CREATE CHANGE STREAM NamesAndAlbums
FOR Singers(FirstName, LastName), Albums;
Tentukan periode retensi data yang lebih lama.
Untuk menentukan periode retensi data aliran perubahan
yang lebih lama dari default tujuh hari, tetapkan retention_period ke periode
hingga tiga puluh hari, yang dinyatakan sebagai jam (h) atau hari (d).
Dua contoh:
GoogleSQL
CREATE CHANGE STREAM LongerDataRetention
FOR ALL
OPTIONS ( retention_period = '36h' );
CREATE CHANGE STREAM MaximumDataRetention
FOR ALL
OPTIONS ( retention_period = '7d' );
PostgreSQL
CREATE CHANGE STREAM LongerDataRetention
FOR ALL
WITH ( retention_period = '36h' );
CREATE CHANGE STREAM MaximumDataRetention
FOR ALL
WITH ( retention_period = '7d' );
Tentukan tipe pengambilan nilai yang berbeda
Untuk menentukan jenis pengambilan nilai aliran perubahan
selain OLD_AND_NEW_VALUES, tetapkan value_capture_type ke
NEW_VALUES atau NEW_ROW, seperti yang ditunjukkan dalam contoh berikut:
GoogleSQL
CREATE CHANGE STREAM NewRowChangeStream
FOR ALL
OPTIONS ( value_capture_type = 'NEW_ROW' );
CREATE CHANGE STREAM NewValuesChangeStream
FOR ALL
OPTIONS ( value_capture_type = 'NEW_VALUES' );
PostgreSQL
CREATE CHANGE STREAM NewRowChangeStream
FOR ALL
WITH ( value_capture_type = 'NEW_ROW' );
CREATE CHANGE STREAM NewValuesChangeStream
FOR ALL
WITH ( value_capture_type = 'NEW_VALUES' );
Memfilter penghapusan berbasis TTL
Anda dapat memfilter.Penghapusan berbasis TTL dari cakupan aliran perubahan Anda menggunakanexclude_ttl_deletes menyaring.
Untuk mengetahui informasi selengkapnya tentang cara kerja filter ini, lihat Filter penghapusan berdasarkan waktu aktif.
GoogleSQL
Untuk membuat aliran perubahan dengan filter penghapusan berbasis TTL, jalankan contoh berikut:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (exclude_ttl_deletes = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan baru Anda
Contoh berikut membuat aliran perubahan bernama NewFilterChangeStream
yang mengecualikan semua penghapusan berbasis TTL:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
OPTIONS (exclude_ttl_deletes = true)
PostgreSQL
Untuk membuat aliran perubahan dengan filter penghapusan berbasis TTL, jalankan contoh berikut:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (exclude_ttl_deletes = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan baru Anda
Contoh berikut membuat aliran perubahan bernama NewFilterChangeStream yang mengecualikan semua penghapusan berbasis TTL:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
WITH (exclude_ttl_deletes = true)
Untuk menambahkan atau menghapus filter penghapusan berbasis TTL dari aliran perubahan yang sudah ada, lihat Modifikasi filter penghapusan berbasis TTL. Anda dapat mengkonfirmasi filter aliran perubahan Anda dengan melihat definisi aliran perubahan sebagai DDL.
Memfilter menurut jenis modifikasi tabel
Filter satu atau beberapa modifikasi tabel ini dari cakupan aliran perubahan menggunakan opsi filter yang tersedia berikut:
exclude_insert: mengecualikan semua modifikasi tabelINSERTexclude_update: mengecualikan semua modifikasi tabelUPDATEexclude_delete: mengecualikan semua modifikasi tabelDELETE
Untuk mengetahui informasi selengkapnya tentang cara kerja filter ini, lihat Filter jenis modifikasi tabel.
GoogleSQL
Untuk membuat aliran perubahan dengan satu atau lebih filter tipe modifikasi tabel, jalankan perintah berikut:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (MOD_TYPE_FILTER_NAME = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan baru Anda
- MOD_TYPE_FILTER_NAME: filter yang ingin Anda tambahkan:
exclude_insert,exclude_update, atauexclude_delete. Jika menambahkan lebih dari satu filter sekaligus, pisahkan masing-masing dengan koma.
Contoh berikut membuat aliran perubahan bernama NewFilterChangeStream yang mengecualikan tipe modifikasi tabel INSERT dan UPDATE:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
OPTIONS (exclude_insert = true, exclude_update = true)
PostgreSQL
Untuk membuat aliran perubahan dengan satu atau lebih filter tipe modifikasi tabel, jalankan perintah berikut:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (MOD_TYPE_FILTER_NAME = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan baru Anda
- MOD_TYPE_FILTER_NAME: filter yang ingin Anda tambahkan:
exclude_insert,exclude_update, atauexclude_delete. Jika menambahkan lebih dari satu filter sekaligus, pisahkan masing-masing dengan koma.
Contoh berikut membuat aliran perubahan bernama NewFilterChangeStream yang mengecualikan tipe modifikasi tabel INSERT dan UPDATE:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
WITH (exclude_insert = true, exclude_update = true)
Untuk menambahkan atau menghapus filter tipe modifikasi tabel dari aliran perubahan yang sudah ada, lihat Ubah filter berdasarkan tipe modifikasi tabel. Anda dapat mengonfirmasi jenis filter modifikasi tabel yang ada untuk aliran perubahan dengan melihat definisi aliran perubahan sebagai DDL.
Aktifkan pengecualian catatan tingkat transaksi
Anda dapat mengaktifkan aliran perubahan Anda untuk mengecualikan catatan dari transaksi penulisan tertentu dengan mengatur opsi allow_txn_exclusion saat Anda membuat aliran perubahan, atau dengan memodifikasi aliran perubahan yang sudah ada.
Untuk informasi lebih lanjut mengenai cara kerja opsi ini, lihat Pengecualian catatan tingkat transaksi.
GoogleSQL
Untuk membuat aliran perubahan yang dapat mengecualikan catatan dari transaksi penulisan tertentu, jalankan perintah berikut:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (allow_txn_exclusion = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan baru
Contoh berikut membuat aliran perubahan bernama NewChangeStream
yang dapat mengecualikan rekaman dari transaksi tulis tertentu:
CREATE CHANGE STREAM NewChangeStream FOR ALL
OPTIONS (allow_txn_exclusion = true)
PostgreSQL
Untuk membuat aliran perubahan yang dapat mengecualikan catatan dari transaksi penulisan tertentu, jalankan perintah berikut:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (allow_txn_exclusion = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan baru
Contoh berikut membuat aliran perubahan bernama NewChangeStream
yang dapat mengecualikan rekaman dari transaksi tulis tertentu:
CREATE CHANGE STREAM NewChangeStream FOR ALL
WITH (allow_txn_exclusion = true)
Untuk mengaktifkan atau menonaktifkan pengecualian catatan tingkat transaksi dari aliran perubahan yang ada, lihat Ubah pengecualian catatan tingkat transaksi. Untuk memeriksa setelan opsi ini, lihat melihat definisi aliran perubahan sebagai DDL.
Tentukan transaksi tulis yang akan dikecualikan dari aliran perubahan.
Untuk menentukan transaksi tulis yang akan dikecualikan dari aliran perubahan, Anda harus mengatur parameter exclude_txn_from_change_streams menjadi true. Contoh kode berikut menunjukkan bagaimana Anda dapat menentukan transaksi tulis yang akan dikecualikan dari aliran perubahan menggunakan pustaka klien.
Go
Java
Memodifikasi aliran perubahan
Untuk mengubah konfigurasi aliran perubahan, gunakan pernyataan DDL ALTER CHANGE STREAM. Fungsi ini menggunakan sintaksis yang mirip dengan CREATE CHANGE STREAM. Anda dapat
mengubah kolom yang dipantau aliran, atau durasi periode retensi
datanya. Anda juga dapat menangguhkan penontonan sama sekali sambil mempertahankan catatan perubahan datanya.
Ubah apa yang dipantau oleh aliran perubahan.
Contoh ini menambahkan seluruh tabel Songs ke aliran perubahan NamesAndAlbums yang telah dikonfigurasi sebelumnya:
ALTER CHANGE STREAM NamesAndAlbums
SET FOR Singers(FirstName, LastName), Albums, Songs;
Spanner mengganti perilaku aliran perubahan bernama dengan konfigurasi baru setelah penyelesaian operasi yang berjalan lama yang memperbarui definisi aliran perubahan dalam skema database.
Ubah periode retensi data aliran perubahan.
Untuk mengubah durasi waktu yang digunakan aliran perubahan untuk mempertahankan catatan internalnya, tetapkan retention_period dalam pernyataan DDL ALTER CHANGE STREAM.
Contoh ini menyesuaikan periode retensi data ke NamesAndAlbums
aliran perubahan yang dibuat sebelumnya:
GoogleSQL
ALTER CHANGE STREAM NamesAndAlbums
SET OPTIONS ( retention_period = '36h' );
PostgreSQL
ALTER CHANGE STREAM NamesAndAlbums
SET ( retention_period = '36h' );
Mengubah jenis pengambilan nilai aliran perubahan
Untuk mengubah jenis pengambilan nilai aliran perubahan, tetapkan
klausa value_capture_type dalam pernyataan DDL ALTER CHANGE STREAM.
Contoh ini menyesuaikan jenis pengambilan nilai menjadi NEW_VALUES.
GoogleSQL
ALTER CHANGE STREAM NamesAndAlbums
SET OPTIONS ( value_capture_type = 'NEW_VALUES' );
PostgreSQL
ALTER CHANGE STREAM NamesAndAlbums
SET ( value_capture_type = 'NEW_VALUES' );
Mengubah filter penghapusan berbasis TTL
Untuk memodifikasi filter TTL-based deletes untuk aliran perubahan, atur filter exclude_ttl_deletes dalam pernyataan DDL ALTER CHANGE STREAM. Anda dapat menggunakan ini untuk menambahkan filter ke atau menghapus filter dari aliran perubahan yang sudah ada.
Untuk informasi lebih lanjut tentang cara kerja filter ini, lihat Filter penghapusan berdasarkan waktu hidup.
Menambahkan filter penghapusan berbasis TTL ke aliran perubahan yang ada
GoogleSQL
Untuk menambahkan filter penghapusan berbasis TTL ke aliran perubahan yang sudah ada, jalankan perintah berikut untuk mengatur filter ke true:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan Anda yang sudah ada
Dalam contoh berikut, filter exclude_ttl_deletes ditambahkan ke
aliran perubahan yang ada bernama NewFilterChangeStream yang mengecualikan semua
penghapusan berbasis TTL:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (exclude_ttl_deletes = true)
Ini mengecualikan semua penghapusan berbasis TTL di masa mendatang dari aliran perubahan.
PostgreSQL
Untuk menambahkan filter penghapusan berbasis TTL ke aliran perubahan yang ada,
jalankan perintah berikut untuk menyetel filter ke true:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan Anda yang sudah ada
Dalam contoh berikut, filter exclude_ttl_deletes ditambahkan ke
aliran perubahan yang ada bernama NewFilterChangeStream yang mengecualikan semua
penghapusan berbasis TTL:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET (exclude_ttl_deletes = true)
Ini mengecualikan semua penghapusan berbasis TTL di masa mendatang dari aliran perubahan.
Menghapus filter penghapusan berbasis TTL dari aliran perubahan yang ada
GoogleSQL
Untuk menghapus filter penghapusan berbasis TTL pada aliran perubahan yang sudah ada, jalankan perintah berikut untuk mengatur filter menjadi false:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan baru Anda
Pada contoh berikut, filter exclude_ttl_deletes dihapus dari aliran perubahan yang sudah ada yang disebut NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)
Ini mencakup semua penghapusan berbasis TTL di masa mendatang pada aliran perubahan.
Anda juga dapat menyetel filter ke null untuk menghapus filter penghapusan berbasis TTL.
PostgreSQL
Untuk menghapus filter penghapusan berbasis TTL ke aliran perubahan yang ada,
jalankan perintah berikut untuk menyetel filter ke false:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = false)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan baru Anda
Pada contoh berikut, filter exclude_ttl_deletes dihapus dari aliran perubahan yang sudah ada yang disebut NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET (exclude_ttl_deletes = false)
Ini mencakup semua penghapusan berbasis TTL di masa mendatang pada aliran perubahan.
Anda juga dapat menyetel filter ke null untuk menghapus filter penghapusan berbasis TTL.
Ubah filter berdasarkan jenis modifikasi tabel
Untuk memodifikasi filter tipe modifikasi tabel untuk aliran perubahan, atur tipe filter dalam pernyataan DDL ALTER CHANGE STREAM. Anda dapat menggunakan ini untuk menambahkan filter baru atau menghapus filter yang sudah ada dari aliran perubahan Anda.
Tambahkan filter tipe modifikasi tabel ke aliran perubahan yang sudah ada.
GoogleSQL
Untuk menambahkan satu atau lebih filter tipe modifikasi tabel baru ke aliran perubahan yang sudah ada, jalankan perintah berikut untuk mengatur filter ke true:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET OPTIONS (MOD_TYPE_FILTER_NAME = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: ganti dengan nama aliran perubahan Anda yang sudah ada
- MOD_TYPE_FILTER_NAME: ganti dengan filter yang ingin Anda tambahkan:
exclude_insert,exclude_update, atauexclude_delete. Jika menambahkan lebih dari satu filter sekaligus, pisahkan setiap filter dengan koma.
Dalam contoh berikut, filter exclude_delete ditambahkan ke
aliran perubahan yang ada bernama NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream
SET OPTIONS (exclude_delete = true)
PostgreSQL
Untuk menambahkan satu atau beberapa filter jenis modifikasi tabel baru ke aliran perubahan yang ada, jalankan perintah berikut untuk menyetel filter ke true:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET (MOD_TYPE_FILTER_NAME = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: ganti dengan nama aliran perubahan Anda yang sudah ada
- MOD_TYPE_FILTER_NAME: ganti dengan filter yang ingin Anda tambahkan:
exclude_insert,exclude_update, atauexclude_delete. Jika menambahkan lebih dari satu filter sekaligus, pisahkan setiap filter dengan koma.
Pada contoh berikut, filter exclude_delete ditambahkan ke aliran perubahan yang sudah ada yang disebut NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = true)
Hapus filter tipe modifikasi tabel dari aliran perubahan yang sudah ada.
GoogleSQL
Untuk menghapus satu atau beberapa filter jenis modifikasi tabel yang ada di
aliran perubahan, jalankan perintah berikut untuk menyetel filter ke false:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET OPTIONS (MOD_TYPE_FILTER_NAME = false)
Ganti kode berikut:
- CHANGE_STREAM_NAME: ganti dengan nama aliran perubahan Anda yang sudah ada
- MOD_TYPE_FILTER_NAME: ganti dengan filter yang ingin Anda hapus:
exclude_insert,exclude_update, atauexclude_delete. Jika melepas lebih dari satu filter sekaligus, pisahkan masing-masing dengan koma.
Pada contoh berikut, filter exclude_delete dihapus dari aliran perubahan yang sudah ada yang disebut NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream
SET OPTIONS (exclude_delete = false)
Anda juga dapat menghapus filter modifikasi tabel dengan mengatur filter kembali ke nilai default. Untuk melakukan ini, atur nilai filter ke null.
PostgreSQL
Untuk menghapus satu atau lebih filter tipe modifikasi tabel yang ada di aliran perubahan, jalankan perintah berikut untuk mengatur filter menjadi false:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET (MOD_TYPE_FILTER_NAME = false)
Ganti kode berikut:
- CHANGE_STREAM_NAME: ganti dengan nama aliran perubahan Anda yang sudah ada
- MOD_TYPE_FILTER_NAME: ganti dengan filter yang ingin Anda hapus:
exclude_insert,exclude_update, atauexclude_delete. Jika melepas lebih dari satu filter sekaligus, pisahkan masing-masing dengan koma.
Pada contoh berikut, filter exclude_delete dihapus dari aliran perubahan yang sudah ada yang disebut NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = false)
Anda juga dapat menghapus filter modifikasi tabel dengan mengatur filter kembali ke nilai default. Untuk melakukannya, tetapkan nilai filter ke null.
Ubah alur perubahan untuk memungkinkan pengecualian catatan tingkat transaksi.
Anda dapat mengubah aliran perubahan untuk memungkinkan aliran tersebut mengecualikan rekaman dari transaksi penulisan tertentu. Untuk melakukan ini, atur opsi allow_txn_exclusion ke true dalam pernyataan DDL ALTER CHANGE STREAM. Jika Anda tidak mengatur opsi ini, atau jika Anda mengaturnya ke false, maka aliran perubahan akan memantau semua transaksi penulisan.
Untuk mengetahui informasi selengkapnya tentang cara kerja opsi ini, lihat Pengecualian data tingkat transaksi.
Aktifkan pengecualian catatan tingkat transaksi untuk aliran perubahan yang ada.
GoogleSQL
Untuk mengaktifkan pengecualian catatan tingkat transaksi untuk aliran perubahan yang ada, jalankan perintah berikut:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (allow_txn_exclusion = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan Anda yang sudah ada
Pada contoh berikut, opsi allow_txn_exclusion diaktifkan pada
aliran perubahan yang ada, NewAllowedChangeStream:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET OPTIONS (allow_txn_exclusion = true)
Hal ini memungkinkan aliran perubahan untuk mengecualikan catatan dari transaksi penulisan yang ditentukan.
PostgreSQL
Untuk mengaktifkan pengecualian rekaman tingkat transaksi untuk aliran perubahan yang ada, jalankan perintah berikut:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (allow_txn_exclusion = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan Anda yang sudah ada
Pada contoh berikut, opsi allow_txn_exclusion diaktifkan pada
aliran perubahan yang ada, NewAllowedChangeStream:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET (allow_txn_exclusion = true)
Hal ini memungkinkan aliran perubahan untuk mengecualikan catatan dari transaksi penulisan yang ditentukan.
Menonaktifkan pengecualian rekaman tingkat transaksi untuk aliran perubahan yang ada
GoogleSQL
Untuk menonaktifkan pengecualian catatan tingkat transaksi pada aliran perubahan yang ada, jalankan perintah berikut:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (allow_txn_exclusion = false)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan Anda
Pada contoh berikut, opsi allow_txn_exclusion dinonaktifkan pada aliran perubahan yang sudah ada yang disebut NewAllowedChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (allow_txn_exclusion = false)
Aliran perubahan memantau semua transaksi penulisan.
PostgreSQL
Untuk menonaktifkan pengecualian catatan tingkat transaksi pada aliran perubahan yang ada, jalankan perintah berikut:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (allow_txn_exclusion = false)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama aliran perubahan Anda
Pada contoh berikut, opsi allow_txn_exclusion dinonaktifkan pada aliran perubahan yang sudah ada yang disebut NewAllowedChangeStream:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET (allow_txn_exclusion = false)
Aliran perubahan memantau semua transaksi penulisan.
Menangguhkan aliran perubahan
Jika Anda ingin menghentikan aktivitas aliran perubahan tetapi mempertahankan catatan internalnya—setidaknya selama masa berlaku periode retensi datanya—Anda dapat mengubahnya sehingga tidak memantau apa pun.
Untuk melakukan ini, keluarkan pernyataan DDL ALTER CHANGE STREAM yang mengganti definisi aliran perubahan dengan frasa khusus DROP FOR ALL.
Contoh:
ALTER CHANGE STREAM MyStream DROP FOR ALL;
Aliran data tersebut tetap ada di dalam basis data, tetapi tidak memantau objek apa pun, dan tidak menghasilkan catatan perubahan data lebih lanjut. Catatan perubahan yang ada tetap utuh, sesuai dengan kebijakan penyimpanan data aliran tersebut.
Untuk melanjutkan aliran yang ditangguhkan, keluarkan pernyataan ALTER CHANGE STREAM lain dengan konfigurasi sebelumnya.
Hapus aliran perubahan
Untuk menghapus aliran perubahan secara permanen, keluarkan pernyataan DROP CHANGE STREAM yang menyertakan nama aliran tersebut:
DROP CHANGE STREAM NamesAndAlbums;
Spanner segera menghentikan aliran data, menghapusnya dari skema basis data, dan menghapus catatan perubahan datanya.
Daftar dan lihat aliran perubahan
Konsol Google Cloud menyediakan antarmuka web untuk mendaftarkan dan meninjau definisi aliran perubahan basis data. Anda juga dapat melihat struktur aliran perubahan sebagai pernyataan DDL yang setara, atau dengan menanyakan skema informasi untuk basis data.
Lihat aliran perubahan dengan Google Cloud konsol
Untuk melihat daftar aliran perubahan basis data dan meninjau definisinya:
Kunjungi halaman contoh Spanner di konsolGoogle Cloud .
Arahkan ke instance dan database yang sesuai.
Klik Ubah aliran di menu navigasi.
Ini menampilkan daftar semua aliran perubahan basis data tersebut, dan merangkum konfigurasi masing-masing aliran. Mengklik nama aliran data akan menampilkan detail lebih lanjut tentang tabel dan kolom yang dipantaunya.
Lihat definisi aliran perubahan sebagai DDL.
Melihat skema basis data sebagai DDL mencakup deskripsi semua aliran perubahannya, di mana aliran tersebut muncul sebagai pernyataan CREATE CHANGE STREAM.
Untuk melakukannya dari konsol, klik link Tampilkan DDL yang setara di halaman database di konsol Google Cloud .
Untuk melakukan ini dari command line, gunakan perintah
ddl describedari Google Cloud CLI.
Lakukan kueri skema informasi tentang aliran perubahan.
Anda dapat langsung menanyakan skema informasi database tentang aliran perubahannya. Tabel-tabel berikut berisi metadata yang mendefinisikan nama aliran perubahan, tabel dan kolom yang dipantau, serta periode retensinya:
Praktik terbaik aliran data perubahan
Berikut adalah beberapa praktik terbaik untuk mengkonfigurasi dan mengelola aliran perubahan.
Mempertimbangkan database metadata terpisah
Aliran perubahan menggunakan database metadata untuk mempertahankan status internal. Basis data metadata dapat sama atau berbeda dengan basis data yang berisi aliran perubahan. Sebaiknya buat database terpisah untuk penyimpanan metadata.
Konektor aliran perubahan Spanner memerlukan izin baca-tulis ke basis data metadata. Anda tidak perlu menyiapkan basis data ini dengan skema; konektor akan menanganinya.
Menggunakan basis data metadata terpisah menghilangkan kerumitan yang mungkin timbul jika konektor diizinkan untuk menulis langsung ke basis data aplikasi Anda:
Dengan memisahkan basis data metadata dari basis data produksi menggunakan aliran perubahan, konektor hanya memerlukan izin baca ke basis data produksi.
Dengan membatasi lalu lintas konektor ke basis data metadata terpisah, penulisan yang dilakukan oleh konektor itu sendiri tidak termasuk dalam aliran perubahan produksi. Hal ini sangat relevan terutama untuk aliran perubahan yang memantau seluruh basis data.
Jika tidak ada basis data terpisah yang digunakan untuk menyimpan metadata, kami menyarankan untuk memantau dampak CPU dari konektor aliran perubahan pada instance-nya.
Lakukan benchmarking terhadap aliran perubahan baru dan ubah ukurannya jika diperlukan.
Sebelum menambahkan aliran perubahan baru ke instance produksi Anda, pertimbangkan untuk melakukan benchmark beban kerja realistis pada instance staging dengan aliran perubahan yang diaktifkan. Dengan begitu, Anda dapat menentukan apakah Anda perlu menambahkan node ke instance untuk meningkatkan kapasitas komputasi dan penyimpanan instance.
Jalankan pengujian ini hingga metrik CPU dan penyimpanan stabil. Idealnya, pemakaian CPU instance harus tetap di bawah maksimum yang direkomendasikan, dan penggunaan penyimpanannya tidak boleh melebihi batas penyimpanan instance.
Menggunakan region yang berbeda untuk load balancing
Saat menggunakan aliran perubahan dalam konfigurasi instance multi-region, pertimbangkan untuk menjalankan pipeline pemrosesannya di region yang berbeda dengan region pemimpin default. Hal ini membantu mendistribusikan beban streaming di antara replika non-pemimpin. Namun, jika Anda perlu memprioritaskan penundaan streaming serendah mungkin daripada load balancing, jalankan beban streaming di region pemimpin.
Langkah berikutnya
Gunakan templates untuk menghubungkan aliran perubahan dengan cepat ke BigQuery, Cloud Storage, atau Pub/Sub.