Ringkasan aliran perubahan
Bigtable menyediakan pengambilan data perubahan (CDC) dengan fitur aliran perubahan. Aliran data perubahan merekam perubahan data pada tabel Bigtable saat perubahan terjadi, sehingga Anda dapat melakukan streaming untuk pemrosesan atau analisis.
Dokumen ini memberikan ringkasan tentang aliran perubahan Bigtable. Sebelum membaca dokumen ini, Anda harus memahami ringkasan Bigtable.
Aliran perubahan sangat berharga untuk kasus penggunaan CDC, termasuk hal berikut:
- Memicu logika aplikasi downstream saat perubahan yang ditentukan terjadi
- Mengintegrasikan dengan pipeline analisis data
- Mendukung persyaratan audit dan pengarsipan
Pengertian aliran perubahan
Aliran perubahan melacak perubahan di tingkat tabel yang dibuat oleh pengguna atau aplikasi, biasanya menggunakan salah satu library klien Cloud Bigtable. Perubahan pembersihan sampah memori juga dicatat.
Semua perubahan yang diterapkan ke tabel yang mengaktifkan aliran perubahan disimpan sebagai data perubahan. Data perubahan data mencakup perubahan data yang diterapkan oleh hal berikut:
- Operasi tulis, hapus, dan perbarui yang dikirim menggunakan metode Cloud Bigtable API
MutateRow
,MutateRows
,CheckAndMutateRow
, danReadModifyWriteRow
- Penghapusan yang terjadi karena pembersihan sampah memori
- Baris yang dihapus menggunakan metode
DropRowRange
Admin API
Untuk mengetahui detail tentang jenis perubahan yang dapat Anda kirim ke tabel Bigtable, lihat Pembacaan, Penulisan, Penghapusan, dan Ringkasan pembersihan sampah.
Aliran perubahan tidak melacak perubahan skema, seperti menambahkan atau mengubah keluarga kolom, atau topologi replikasi, seperti menambahkan atau menghapus cluster.
Data perubahan catatan untuk setiap kunci baris dan setiap cluster dalam urutan stempel waktu commit. Namun, tidak ada jaminan pengurutan pada data perubahan data untuk kunci baris atau cluster yang berbeda.
Anda mengaktifkan aliran perubahan di tabel dan menentukan periode retensi data dari 1 hingga 7 hari.
Isi dalam data perubahan
Setiap data perubahan data berisi semua perubahan untuk baris yang diterapkan secara acak sebagai bagian dari satu panggilan RPC.
Jika nilai ditimpa, nilai yang baru ditulis akan dicatat dalam data perubahan data. Kumpulan data perubahan data tidak berisi nilai lama.
Data perubahan data menerima stempel waktunya, yang disebut stempel waktu commit, pada saat perubahan diterapkan ke cluster pertama yang menerimanya. Misalnya, pertimbangkan instance dengan dua cluster. Jika Anda mengirim permintaan operasi tulis ke Tabel 1 di Cluster A, stempel waktu commit data yang diubah akan ditetapkan saat operasi tulis diterima oleh Cluster A, dan data yang diubah di Cluster B untuk operasi tulis ini memiliki stempel waktu commit yang sama.
Setiap kumpulan data perubahan berisi hal berikut:
- Entri - perubahan yang dilakukan pada baris, termasuk satu atau beberapa hal berikut:
- Tulis
- Grup kolom
- Penentu kolom
- Stempel waktu
- Nilai
- Penghapusan sel
- Grup kolom
- Penentu kolom
- Rentang stempel waktu
- Penghapusan grup kolom
- Grup kolom
- Penghapusan dari baris - Penghapusan dari baris dikonversi menjadi daftar penghapusan dari grup kolom untuk setiap grup kolom yang berisi data baris.
- Tulis
- Kunci baris - ID untuk baris yang diubah
- Mengubah jenis - dimulai oleh pengguna atau pembersihan sampah
- ID cluster yang menerima perubahan
- Stempel waktu commit - waktu sisi server saat perubahan di-commit ke tabel
- Tie breaker - nilai yang memungkinkan aplikasi yang membaca streaming menggunakan kebijakan penyelesaian konflik bawaan Bigtable
- Token - digunakan oleh aplikasi yang menggunakan untuk melanjutkan streaming jika terganggu
- Estimasi stempel waktu rendah - estimasi waktu sejak partisi data menyamai replikasi di semua cluster. Untuk mengetahui detailnya, lihat Partisi dan Stempel waktu.
Untuk mengetahui informasi selengkapnya tentang kolom dalam kumpulan data perubahan, lihat referensi API untuk DataChange
.
Mengubah penyimpanan aliran data
Tabel dan aliran perubahannya berbagi resource tingkat cluster yang sama, termasuk node dan penyimpanan. Akibatnya, penyimpanan data aliran perubahan adalah bagian dari penyimpanan tabel. Dalam instance yang menggunakan replikasi, salinan data aliran perubahan disimpan di setiap cluster instance yang berisi tabel yang mengaktifkan aliran perubahan.
Penyimpanan yang digunakan untuk data aliran perubahan tidak diperhitungkan dalam total penggunaan penyimpanan (% maks). Akibatnya, Anda tidak perlu menambahkan node untuk menangani peningkatan penyimpanan yang mengubah penggunaan data streaming (meskipun Anda mungkin perlu menambahkan node untuk daya komputasi tambahan). Namun, Anda akan dikenai biaya untuk penyimpanan yang digunakan data aliran perubahan Anda. Untuk mengetahui detailnya, lihat Pertimbangan biaya.
Membaca aliran perubahan
Untuk membaca (memutar) aliran perubahan, Anda harus menggunakan profil aplikasi yang dikonfigurasi untuk perutean cluster tunggal, dan jika Anda melakukan streaming menggunakan Dataflow, Anda harus mengaktifkan transaksi baris tunggal.
Untuk informasi selengkapnya tentang kebijakan perutean, lihat Opsi perutean.
Untuk mengetahui informasi selengkapnya tentang transaksi baris tunggal, lihat Transaksi baris tunggal.
Metode aliran perubahan disediakan oleh Cloud Bigtable API (Data API). Sebaiknya gunakan salah satu opsi berikut, bukan memanggil API tanpa menggunakan library klien atau konektor:
- Template Dataflow
- Konektor Bigtable Beam
- Library klien Java
Semua opsi ini memungkinkan Anda menghindari kebutuhan untuk melacak dan menangani perubahan partisi karena pemisahan dan penggabungan.
Untuk informasi selengkapnya, lihat
ReadChangeStream
.
Template Dataflow
Anda dapat menggunakan salah satu template Dataflow berikut yang disediakan oleh Google:
Konektor Bigtable Beam
Anda dapat menggunakan konektor Bigtable Beam untuk membuat pipeline:
Jika tidak ingin membuat pipeline sendiri, Anda dapat menggunakan contoh kode dari tutorial atau quickstart Bigtable sebagai titik awal untuk kode Anda:
Library klien Java
Partisi
Untuk mempertahankan throughput baca yang tinggi yang cocok dengan rasio perubahan atau penulisan yang tinggi, Bigtable membagi aliran perubahan menjadi beberapa partisi yang dapat digunakan untuk membaca aliran perubahan secara paralel. Setiap partisi aliran perubahan dikaitkan dengan tablet. Tablet adalah subbagian tabel yang didistribusikan ulang sesuai kebutuhan untuk membantu menyeimbangkan beban kerja permintaan tabel. Untuk mempelajari lebih lanjut, lihat Load balancing.
Library klien Java memungkinkan Anda membuat kueri untuk setiap partisi guna mengetahui perubahan dan memberikan informasi yang diperlukan untuk mengelola perubahan dalam partisi karena pemisahan dan penggabungan.
Watermark
Stempel waktu adalah stempel waktu yang memperkirakan seberapa baru partisi telah melakukan replikasi di semua cluster. Stempel waktu untuk partisi terus diperbarui saat replikasi terjadi, yang terus maju dari waktu ke waktu.
Setiap ChangeStreamMutation
(data change record) menyertakan
kolom estimatedLowWatermark
, yang merupakan watermark untuk partisi yang
dikaitkan dengan data change record. estimatedLowWatermark
ini adalah
estimasi dan tidak menjamin bahwa tidak ada data yang belum tiba di
aliran data.
Watermark untuk tabel yang direplikasi
estimatedLowWatermark
(watermark rendah) partisi tidak akan maju jika replika tidak sepenuhnya tercapai untuk partisi. Watermark rendah seluruh streaming — yang terendah dari semua estimasi watermark rendah tingkat partisi — berhenti maju jika watermark partisi tidak bergerak maju. Watermark
yang telah berhenti maju dianggap terhenti. Jika hal ini terjadi, jika Anda melakukan streaming aliran perubahan dalam pipeline, pipeline akan terhenti.
Banyak faktor yang dapat menyebabkan satu atau beberapa watermark tingkat partisi terhenti selama beberapa waktu, termasuk hal berikut:
- Melebihi kapasitas cluster dengan traffic yang menyebabkan replikasi tertinggal untuk satu atau beberapa partisi
- Penundaan jaringan
- Ketidaktersediaan cluster
Konektor Bigtable Beam menangani hal ini dengan menetapkan stempel waktu output ke nol untuk semua data. Untuk informasi selengkapnya, lihat Mengelompokkan data tanpa waktu peristiwa.
Pemantauan
Untuk membantu Anda memahami pengaruh pengaktifan aliran perubahan terhadap penggunaan CPU dan penyimpanan untuk instance yang berisi tabel yang mengaktifkan aliran perubahan, kami menyediakan dua metrik khusus aliran perubahan. Anda dapat melihat metrik di halaman Bigtable Monitoring atau menggunakan rangkaian alat Cloud Monitoring.
- Byte yang digunakan oleh data aliran perubahan (
change_stream_log_used_bytes
) - Pemakaian CPU menurut aliran perubahan ( menggunakan
cpu_load_by_app_profile_by_method_by_table
)
Untuk mengetahui detail tentang metrik ini, lihat Pemantauan.
Pertimbangan biaya
Mengaktifkan aliran perubahan pada tabel akan meningkatkan biaya untuk node dan penyimpanan. Secara khusus, Anda akan dikenai biaya penyimpanan yang lebih besar.
Node
Anda biasanya perlu menambahkan node ke cluster (atau meningkatkan jumlah maksimum node jika menggunakan penskalaan otomatis) untuk menangani traffic tambahan yang mengaktifkan dan memproses data perubahan data.
Mengaktifkan aliran perubahan dapat meningkatkan penggunaan CPU sekitar 10%, bahkan sebelum Anda mulai memprosesnya. Memproses aliran perubahan, seperti membacanya menggunakan pipeline Dataflow, dapat meningkatkan penggunaan CPU sebesar 20 hingga 30%, bergantung pada tingkat aktivitas perubahan dan cara data streaming dibaca.
Penyimpanan
Anda dikenai biaya tarif penyimpanan Bigtable standar untuk menyimpan data perubahan data tabel Anda. Anda juga akan ditagih untuk menyimpan tabel yang dibuat untuk melacak metadata aliran perubahan. Periode retensi yang Anda tentukan akan langsung memengaruhi biaya penyimpanan.
Sebagai aturan umum, data perubahan harian – yang hanya mencerminkan mutasi yang terjadi pada hari itu – memerlukan penyimpanan sekitar 1,5 kali lebih banyak dibandingkan dengan data yang ditulis pada hari itu di disk.
Transfer data jaringan
Jika Anda membaca aliran perubahan di seluruh region, Anda dapat dikenai biaya untuk traffic tersebut. Lihat bagian Jaringan di Harga Bigtable untuk mengetahui daftar lengkap kecepatan transfer data jaringan.
Biaya pemrosesan
Bergantung pada cara Anda membaca data perubahan data, biaya tambahan untuk layanan selain Bigtable akan berlaku. Misalnya, jika menggunakan Dataflow, Anda membayar byte yang diproses dan mesin pekerja yang memproses tugas. Untuk mengetahui detailnya, lihat Harga Dataflow.
Meletakkan rentang baris
Jika memungkinkan, hindari menghapus rentang baris dari tabel yang mengaktifkan aliran perubahan. Jika Anda harus menghapus rentang baris, perhatikan bahwa Bigtable mungkin memerlukan waktu lama untuk menyelesaikan operasi, dan penggunaan CPU meningkat selama operasi.
Langkah selanjutnya
- Selesaikan panduan memulai untuk mempelajari cara mengaktifkan aliran perubahan dan melihat perubahan.
- Mengonfigurasi aliran data perubahan.
- Gunakan konektor Bigtable Beam untuk membaca aliran perubahan dengan Dataflow.
- Gunakan library klien Cloud Bigtable untuk Java guna membaca aliran perubahan.
- Ikuti tutorial tentang pemrosesan aliran perubahan.