Halaman ini menjelaskan cara membuat, mengubah, dan melihat aliran perubahan Spanner untuk database dialek GoogleSQL dan database dialek PostgreSQL. Untuk mempelajari aliran perubahan lebih lanjut, lihat Tentang aliran perubahan.
Karena aliran perubahan adalah objek skema, Anda membuat dan mengelolanya melalui pembaruan skema yang sama yang didorong oleh DDL yang digunakan untuk jenis pekerjaan definisi database lainnya, seperti membuat tabel atau menambahkan indeks.
Spanner memulai operasi yang berjalan lama setelah Anda mengirimkan pernyataan DDL yang mengubah 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 harus memberikan namanya dan objek skema yang dipantaunya: seluruh database, atau daftar tabel dan kolom tertentu. Secara opsional, Anda dapat mengonfigurasi aliran perubahan dengan salah satu hal berikut:
- Tentukan periode retensi data untuk mengganti periode retensi data default satu hari.
- Tentukan jenis pengambilan nilai untuk mengganti
jenis pengambilan nilai default
OLD_AND_NEW_VALUES
. - Terapkan filter penghapusan berbasis TTL untuk memfilter penghapusan berbasis TTL dari aliran perubahan Anda.
- Terapkan filter perubahan tabel untuk mengecualikan semua
perubahan tabel
INSERT
,UPDATE
, atauDELETE
. Aktifkan pengecualian data tingkat transaksi untuk mengecualikan transaksi tertentu dari aliran perubahan Anda.
GoogleSQL
Sintaksis 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
Sintaksis 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 ditetapkan segera setelah operasi yang berjalan lama yang membuatnya selesai.
Contoh berikut mengilustrasikan pembuatan aliran perubahan dengan berbagai konfigurasi.
Menonton seluruh database
Untuk membuat aliran perubahan yang memantau setiap perubahan data yang dilakukan
di seluruh tabel database, gunakan kata kunci ALL
:
CREATE CHANGE STREAM EverythingStream
FOR ALL;
Konfigurasi ALL
secara implisit
menyertakan semua tabel dan kolom data database
mendatang, segera setelah dibuat. Tabel ini
tidak menyertakan tampilan, tabel skema informasi, atau
objek lain selain tabel data normal.
Menonton tabel tertentu
Untuk membatasi cakupan aliran perubahan ke tabel tertentu, bukan seluruh database, tentukan daftar satu atau beberapa tabel:
CREATE CHANGE STREAM SingerAlbumStream
FOR Singers, Albums;
Spanner otomatis memperbarui aliran perubahan yang memantau seluruh tabel untuk mencerminkan perubahan skema apa pun yang memengaruhi tabel tersebut, seperti kolom yang ditambahkan atau dihapus.
Mengamati 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 dari setiap tabel yang dipantau. Hal ini memungkinkan setiap kumpulan data perubahan mengidentifikasi baris yang diubah berdasarkan kunci utamanya.
Mengamati tabel dan kolom dalam satu aliran data
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;
Menentukan periode retensi data yang lebih lama
Untuk menentukan periode retensi data aliran perubahan
yang lebih lama dari default satu hari, tetapkan retention_period
ke periode
maksimal satu minggu, yang dinyatakan dalam 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' );
Menentukan jenis 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 menggunakan filter exclude_ttl_deletes
.
Untuk mengetahui informasi selengkapnya tentang cara kerja filter ini, lihat Filter penghapusan berdasarkan waktu habis masa berlaku.
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 stream 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 streaming perubahan yang ada, lihat Mengubah filter penghapusan berbasis TTL. Anda dapat mengonfirmasi filter aliran perubahan dengan melihat definisi aliran perubahan sebagai DDL.
Memfilter menurut jenis perubahan tabel
Filter satu atau beberapa modifikasi tabel ini dari cakupan streaming perubahan Anda menggunakan opsi filter berikut yang tersedia:
exclude_insert
: mengecualikan semua perubahan tabelINSERT
exclude_update
: mengecualikan semua perubahan tabelUPDATE
exclude_delete
: mengecualikan semua perubahan tabelDELETE
Untuk mengetahui informasi selengkapnya tentang cara kerja filter ini, lihat Filter jenis perubahan tabel.
GoogleSQL
Untuk membuat aliran perubahan dengan satu atau beberapa filter jenis perubahan tabel, jalankan hal berikut:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (MOD_TYPE_FILTER_NAME = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama stream 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 setiap filter dengan koma.
Contoh berikut membuat aliran perubahan bernama NewFilterChangeStream
yang mengecualikan jenis perubahan 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 beberapa filter jenis perubahan tabel, jalankan hal berikut:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (MOD_TYPE_FILTER_NAME = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama stream 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 setiap filter dengan koma.
Contoh berikut membuat aliran perubahan yang disebut NewFilterChangeStream
yang mengecualikan jenis perubahan tabel INSERT
dan UPDATE
:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
WITH (exclude_insert = true, exclude_update = true)
Untuk menambahkan atau menghapus filter jenis perubahan tabel dari streaming perubahan yang ada, lihat Mengubah filter menurut jenis perubahan tabel. Anda dapat mengonfirmasi filter jenis perubahan tabel yang ada untuk aliran data perubahan dengan melihat definisi aliran data perubahan sebagai DDL.
Mengaktifkan pengecualian data tingkat transaksi
Anda dapat mengaktifkan aliran perubahan untuk mengecualikan data dari transaksi tulis yang ditentukan dengan menetapkan opsi allow_txn_exclusion
saat membuat aliran perubahan, atau dengan mengubah aliran perubahan yang ada.
Untuk mengetahui informasi selengkapnya tentang cara kerja opsi ini, lihat Pengecualian data tingkat transaksi.
GoogleSQL
Untuk membuat aliran perubahan yang dapat mengecualikan data dari transaksi tulis yang ditentukan, jalankan hal 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 data dari transaksi tulis yang ditentukan:
CREATE CHANGE STREAM NewChangeStream FOR ALL
OPTIONS (allow_txn_exclusion = true)
PostgreSQL
Untuk membuat aliran perubahan yang dapat mengecualikan data dari transaksi tulis yang ditentukan, jalankan hal 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 data dari transaksi tulis yang ditentukan,:
CREATE CHANGE STREAM NewChangeStream FOR ALL
WITH (allow_txn_exclusion = true)
Untuk mengaktifkan atau menonaktifkan pengecualian data tingkat transaksi dari streaming perubahan yang ada, lihat Mengubah pengecualian data tingkat transaksi. Untuk memeriksa setelan opsi ini, lihat melihat definisi aliran perubahan sebagai DDL.
Menentukan transaksi tulis yang akan dikecualikan dari aliran perubahan
Untuk menentukan transaksi tulis yang akan dikecualikan dari aliran perubahan, Anda harus menetapkan parameter exclude_txn_from_change_streams
ke true
. Contoh kode berikut menunjukkan cara menentukan transaksi tulis untuk dikecualikan dari streaming perubahan menggunakan library klien.
Go
Java
Mengubah aliran data 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 diamati oleh streaming, atau durasi periode retensi datanya. Anda juga dapat menangguhkan penayangannya sekaligus mempertahankan catatan perubahan datanya.
Mengubah hal yang dipantau oleh aliran data perubahan
Contoh ini menambahkan seluruh tabel Songs
ke aliran perubahan NamesAndAlbums
yang dikonfigurasi sebelumnya:
ALTER CHANGE STREAM NamesAndAlbums
SET FOR Singers(FirstName, LastName), Albums, Songs;
Spanner mengganti perilaku aliran perubahan yang dinamai dengan konfigurasi baru setelah menyelesaikan operasi yang berjalan lama yang memperbarui definisi aliran perubahan dalam skema database.
Mengubah periode retensi data aliran perubahan
Untuk mengubah durasi waktu yang dipertahankan oleh aliran perubahan terhadap catatan internalnya, tetapkan retention_period
dalam pernyataan DDL ALTER CHANGE STREAM
.
Contoh ini menyesuaikan periode retensi data ke aliran perubahan NamesAndAlbums
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 ke 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 mengubah filter penghapusan berbasis TTL untuk aliran perubahan, tetapkan filter exclude_ttl_deletes
dalam pernyataan DDL ALTER CHANGE STREAM
. Anda dapat menggunakannya untuk menambahkan filter ke atau menghapus filter dari
change stream yang ada.
Untuk mengetahui informasi selengkapnya tentang cara kerja filter ini, lihat Filter penghapusan berbasis waktu tunggu.
Menambahkan filter penghapusan berbasis TTL ke aliran perubahan yang ada
GoogleSQL
Untuk menambahkan filter penghapusan berbasis TTL ke aliran perubahan yang ada, jalankan perintah berikut untuk menetapkan filter ke true
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama stream perubahan yang ada Anda
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)
Tindakan ini akan mengecualikan semua penghapusan berbasis TTL mendatang dari aliran perubahan.
PostgreSQL
Untuk menambahkan filter penghapusan berbasis TTL ke aliran perubahan yang ada, jalankan perintah berikut untuk menetapkan filter ke true
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama stream perubahan yang ada Anda
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)
Tindakan ini akan mengecualikan semua penghapusan berbasis TTL mendatang dari aliran perubahan.
Menghapus filter penghapusan berbasis TTL dari aliran perubahan yang ada
GoogleSQL
Untuk menghapus filter penghapusan berbasis TTL ke aliran perubahan yang ada, jalankan perintah berikut untuk menetapkan filter ke false
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama stream perubahan baru Anda
Pada contoh berikut, filter exclude_ttl_deletes
dihapus dari
aliran perubahan yang ada yang disebut NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)
Hal ini mencakup semua penghapusan berbasis TTL mendatang ke aliran perubahan.
Anda juga dapat menetapkan 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 menetapkan filter ke false
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = false)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama stream perubahan baru Anda
Pada contoh berikut, filter exclude_ttl_deletes
dihapus dari
aliran perubahan yang ada yang disebut NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET (exclude_ttl_deletes = false)
Hal ini mencakup semua penghapusan berbasis TTL mendatang ke aliran perubahan.
Anda juga dapat menetapkan filter ke null
untuk menghapus filter penghapusan berbasis TTL.
Mengubah filter menurut jenis perubahan tabel
Untuk mengubah filter jenis perubahan tabel untuk aliran perubahan,
tetapkan jenis filter dalam pernyataan DDL ALTER CHANGE STREAM
. Anda dapat menggunakannya untuk menambahkan filter baru atau menghapus filter yang ada dari aliran perubahan.
Menambahkan filter jenis perubahan tabel ke aliran perubahan yang ada
GoogleSQL
Untuk menambahkan satu atau beberapa filter jenis perubahan tabel baru ke streaming perubahan yang ada, jalankan perintah berikut untuk menetapkan 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 yang 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 yang disebut NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream
SET OPTIONS (exclude_delete = true)
PostgreSQL
Untuk menambahkan satu atau beberapa filter jenis perubahan tabel baru ke streaming perubahan yang ada, jalankan perintah berikut untuk menetapkan 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 yang 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 yang disebut NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = true)
Menghapus filter jenis modifikasi tabel dari aliran perubahan yang ada
GoogleSQL
Untuk menghapus satu atau beberapa filter jenis perubahan tabel yang ada di
aliran perubahan, jalankan perintah berikut untuk menetapkan 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 yang ada
- MOD_TYPE_FILTER_NAME: ganti dengan filter yang ingin Anda hapus:
exclude_insert
,exclude_update
, atauexclude_delete
. Jika menghapus lebih dari satu filter sekaligus, pisahkan setiap filter dengan koma.
Pada contoh berikut, filter exclude_delete
dihapus dari
aliran perubahan yang ada yang disebut NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream
SET OPTIONS (exclude_delete = false)
Anda juga dapat menghapus filter perubahan tabel dengan menetapkan filter
kembali ke nilai default. Untuk melakukannya, tetapkan nilai filter ke null
.
PostgreSQL
Untuk menghapus satu atau beberapa filter jenis perubahan tabel yang ada di
aliran perubahan, jalankan perintah berikut untuk menetapkan filter ke false
:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET (MOD_TYPE_FILTER_NAME = false)
Ganti kode berikut:
- CHANGE_STREAM_NAME: ganti dengan nama aliran perubahan yang ada
- MOD_TYPE_FILTER_NAME: ganti dengan filter yang ingin Anda hapus:
exclude_insert
,exclude_update
, atauexclude_delete
. Jika menghapus lebih dari satu filter sekaligus, pisahkan setiap filter dengan koma.
Pada contoh berikut, filter exclude_delete
dihapus dari
aliran perubahan yang ada yang disebut NewFilterChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = false)
Anda juga dapat menghapus filter perubahan tabel dengan menetapkan filter
kembali ke nilai default. Untuk melakukannya, tetapkan nilai filter ke null
.
Mengubah aliran perubahan untuk mengizinkan pengecualian kumpulan data tingkat transaksi
Anda dapat mengubah aliran perubahan agar dapat mengecualikan data dari transaksi tulis yang ditentukan. Untuk melakukannya, tetapkan opsi allow_txn_exclusion
ke true
dalam pernyataan DDL ALTER CHANGE STREAM
. Jika Anda tidak menetapkan opsi ini, atau jika Anda menetapkannya ke false
, aliran perubahan akan memantau semua transaksi tulis.
Untuk mengetahui informasi selengkapnya tentang cara kerja opsi ini, lihat Pengecualian data tingkat transaksi.
Mengaktifkan pengecualian data tingkat transaksi untuk aliran perubahan yang ada
GoogleSQL
Untuk mengaktifkan pengecualian data 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 stream perubahan yang ada Anda
Pada contoh berikut, opsi allow_txn_exclusion
diaktifkan di
aliran perubahan yang ada, NewAllowedChangeStream
:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET OPTIONS (allow_txn_exclusion = true)
Hal ini memungkinkan aliran perubahan mengecualikan data dari transaksi tulis yang ditentukan.
PostgreSQL
Untuk mengaktifkan pengecualian data tingkat transaksi untuk aliran perubahan yang ada, jalankan hal berikut:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (allow_txn_exclusion = true)
Ganti kode berikut:
- CHANGE_STREAM_NAME: nama stream perubahan yang ada Anda
Pada contoh berikut, opsi allow_txn_exclusion
diaktifkan di
aliran perubahan yang ada, NewAllowedChangeStream
:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET (allow_txn_exclusion = true)
Hal ini memungkinkan aliran perubahan mengecualikan data dari transaksi tulis yang ditentukan.
Menonaktifkan pengecualian data tingkat transaksi untuk aliran perubahan yang ada
GoogleSQL
Untuk menonaktifkan pengecualian data tingkat transaksi di 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 di
aliran perubahan yang ada yang disebut NewAllowedChangeStream
:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (allow_txn_exclusion = false)
Aliran perubahan memantau semua transaksi tulis.
PostgreSQL
Untuk menonaktifkan pengecualian data tingkat transaksi di 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 di
aliran perubahan yang ada yang disebut NewAllowedChangeStream
:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET (allow_txn_exclusion = false)
Aliran perubahan memantau semua transaksi tulis.
Menangguhkan aliran data perubahan
Jika ingin menghentikan aktivitas aliran perubahan, tetapi mempertahankan catatan internalnya—setidaknya selama periode retensi datanya—Anda dapat mengubahnya agar tidak memantau apa pun.
Untuk melakukannya, buat pernyataan DDL ALTER CHANGE STREAM
yang mengganti
definisi aliran perubahan dengan frasa khusus DROP FOR ALL
.
Contoh:
ALTER CHANGE STREAM MyStream DROP FOR ALL;
Streaming akan terus ada di database, tetapi tidak memantau objek, dan tidak menghasilkan data perubahan data lebih lanjut. Data perubahannya yang ada tetap utuh, tunduk pada kebijakan retensi data aliran data.
Untuk melanjutkan streaming yang ditangguhkan, berikan pernyataan ALTER CHANGE STREAM
lain dengan konfigurasinya sebelumnya.
Menghapus aliran data perubahan
Untuk menghapus aliran perubahan secara permanen, berikan pernyataan DROP CHANGE STREAM
yang menyertakan nama aliran:
DROP CHANGE STREAM NamesAndAlbums;
Spanner segera menghentikan streaming, menghapusnya dari skema database, dan menghapus data perubahannya.
Mencantumkan dan melihat aliran perubahan
Konsol Google Cloud menyediakan antarmuka web untuk mencantumkan dan meninjau definisi aliran perubahan database. Anda juga dapat melihat struktur aliran perubahan sebagai pernyataan DDL yang setara, atau dengan mengkueri skema informasi untuk database.
Melihat aliran perubahan dengan konsol Google Cloud
Untuk melihat daftar aliran perubahan database dan meninjau definisinya:
Buka halaman instance Spanner di konsol Google Cloud.
Buka instance dan database yang sesuai.
Klik Change streams di menu navigasi.
Tindakan ini akan menampilkan daftar semua aliran perubahan database tersebut, dan menyaring konfigurasi setiap aliran perubahan. Mengklik nama aliran data akan menampilkan detail lebih lanjut tentang tabel dan kolom yang dipantau.
Melihat definisi aliran perubahan sebagai DDL
Melihat skema database sebagai DDL mencakup deskripsi semua
aliran perubahannya, yang muncul sebagai pernyataan CREATE CHANGE STREAM
.
Untuk melakukannya dari konsol, klik link Tampilkan DDL yang setara di halaman database di Konsol Google Cloud.
Untuk melakukannya dari command line, gunakan perintah
ddl describe
dari Google Cloud CLI.
Membuat kueri skema informasi tentang aliran perubahan
Anda dapat langsung membuat kueri skema informasi database tentang aliran perubahannya. Tabel berikut berisi metadata yang menentukan nama aliran perubahan, tabel dan kolom yang dipantau, serta periode retensi mereka:
Praktik terbaik aliran data perubahan
Berikut adalah beberapa praktik terbaik untuk mengonfigurasi dan mengelola alur perubahan.
Pertimbangkan database metadata terpisah
Aliran perubahan menggunakan database metadata untuk mempertahankan status internal. Database metadata dapat sama dengan atau berbeda dari database yang berisi aliran perubahan. Sebaiknya buat database terpisah untuk penyimpanan metadata.
Konektor aliran perubahan Spanner memerlukan izin baca-tulis ke database metadata. Anda tidak perlu menyiapkan database ini dengan skema; konektor akan menanganinya.
Menggunakan database metadata terpisah akan menghilangkan kompleksitas yang mungkin timbul akibat mengizinkan konektor menulis langsung ke database aplikasi Anda:
Dengan memisahkan database metadata dari database produksi dengan aliran perubahan, konektor hanya memerlukan izin baca ke database produksi.
Dengan membatasi traffic konektor ke database metadata terpisah, operasi tulis yang dilakukan oleh konektor itu sendiri tidak disertakan dalam stream perubahan produksi. Hal ini sangat relevan untuk aliran perubahan yang memantau seluruh database.
Jika tidak ada database terpisah yang digunakan untuk menyimpan metadata, sebaiknya monitor dampak CPU konektor aliran perubahan pada instance-nya.
Lakukan benchmark pada aliran perubahan baru dan ubah ukurannya jika diperlukan
Sebelum menambahkan aliran perubahan baru ke instance produksi, pertimbangkan untuk melakukan benchmark pada workload yang realistis di instance staging dengan mengaktifkan aliran perubahan. Hal ini memungkinkan Anda menentukan apakah perlu menambahkan node ke instance untuk meningkatkan kapasitas komputasi dan penyimpanannya.
Jalankan pengujian ini hingga metrik CPU dan penyimpanan stabil. Secara optimal, penggunaan CPU instance harus tetap di bawah maksimum yang direkomendasikan, dan penggunaan penyimpanannya tidak boleh melebihi batas penyimpanan instance.
Menggunakan region yang berbeda untuk melakukan 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 menyebarkan 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 template untuk menghubungkan aliran perubahan ke BigQuery, Cloud Storage, atau Pub/Sub dengan cepat.