Nilai agregat pada waktu tulis
Jika ingin menggabungkan data di Bigtable pada waktu penulisan, Anda dapat menggunakan agregat. Agregat adalah sel tabel Bigtable yang menggabungkan nilai sel saat data ditulis. Saat Anda menambahkan nilai baru, fungsi agregasi akan menggabungkan nilai dengan nilai gabungan yang sudah ada dalam sel. Database lain menyebut fungsi serupa dengan penghitung atau penghitung terdistribusi.
Jenis agregasi yang ditawarkan Bigtable adalah sum. Ketika Anda menambahkan nilai ke sel gabungan jumlah, nilai sel akan diganti dengan jumlah nilai yang baru ditambahkan dan nilai sel saat ini.
Selama Pratinjau, Anda dapat bekerja dengan agregat menggunakan CLI cbt
dan library klien Bigtable untuk C++, Go, dan Java.
Dokumen ini memberikan ringkasan tentang agregat, menunjukkan cara membuat grup kolom gabungan, dan memberikan contoh yang menunjukkan cara menambahkan nilai ke sel gabungan. Sebelum membaca dokumen ini, Anda harus sudah memahami Ringkasan Bigtable dan Penulisan.
Kapan menggunakan agregat
Agregat Bigtable berguna untuk situasi saat Anda memerlukan data untuk suatu entity secara agregat dan bukan sebagai titik data individual. Jika bermigrasi ke Bigtable dari database seperti Apache Cassandra atau Redis, Anda dapat menggunakan agregat Bigtable di tempat yang sebelumnya Anda mengandalkan penghitung dalam sistem ini.
Periode waktu
Anda dapat menggunakan bucket waktu untuk mendapatkan nilai agregat selama jangka waktu tertentu, seperti jam, hari, atau minggu. Alih-alih menggabungkan data sebelum atau setelah ditulis ke tabel, Anda menambahkan nilai baru untuk menggabungkan sel dalam tabel.
Misalnya, jika Anda menjalankan layanan yang membantu badan amal menggalang dana, Anda mungkin
ingin mengetahui jumlah donasi online per hari untuk setiap kampanye, tetapi Anda
tidak perlu mengetahui waktu persis setiap donasi atau jumlahnya per jam. Di tabel, kunci baris merepresentasikan ID amal, dan Anda membuat grup kolom gabungan yang disebut donations
. Penentu kolom dalam baris adalah ID kampanye.
Setiap jumlah donasi yang diterima untuk hari tertentu untuk kampanye akan ditambahkan ke jumlah di sel agregat di kolom untuk hari tersebut. Setiap permintaan tambahan untuk sel menggunakan stempel waktu yang dipotong di awal hari, sehingga setiap permintaan memiliki stempel waktu yang sama. Memotong stempel waktu akan memastikan bahwa semua donasi dari hari tersebut ditambahkan ke sel yang sama. Hari berikutnya, semua permintaan Anda masuk ke sel baru, menggunakan stempel waktu yang dipotong ke tanggal baru, dan pola tersebut berlanjut.
Bergantung pada kasus penggunaan, Anda dapat memilih untuk membuat kolom baru untuk agregat baru. Untuk mengetahui informasi selengkapnya tentang periode waktu, lihat Desain skema untuk data deret waktu.
Menyederhanakan alur kerja
Dengan agregat, Anda dapat menggabungkan data di tabel Bigtable tanpa perlu menggunakan software pemrosesan streaming atau ETL untuk menggabungkan data sebelum atau setelah menulisnya ke Bigtable. Misalnya, jika aplikasi Anda sebelumnya memublikasikan pesan ke Pub/Sub, lalu menggunakan Dataflow untuk membaca pesan dan menggabungkan data sebelum menulisnya ke Bigtable, Anda dapat mengirim data secara langsung untuk menggabungkan sel di Bigtable.
Menggabungkan grup kolom
Untuk membuat dan memperbarui sel gabungan, Anda harus memiliki satu atau beberapa kelompok kolom di tabel – grup kolom yang hanya berisi sel gabungan. Anda dapat membuatnya saat membuat tabel, atau menambahkan grup kolom agregat ke tabel yang sudah digunakan. Saat membuat grup kolom, Anda menentukan jenis agregasi, seperti sum.
Anda tidak dapat mengonversi grup kolom yang berisi data yang tidak digabungkan menjadi grup kolom gabungan. Kolom dalam grup kolom gabungan tidak boleh berisi sel yang tidak digabungkan, dan grup kolom standar tidak boleh berisi sel agregat.
Untuk membuat tabel baru dengan grup kolom gabungan, lihat Membuat tabel. Untuk menambahkan grup kolom gabungan ke tabel, lihat Menambahkan grup kolom.
Jenis agregasi
Bigtable mendukung jenis agregasi sum
. Jenis input
yang didukung untuk jumlah adalah Int64
.
Stempel waktu
Sel agregat ditentukan oleh kunci baris, grup kolom, penentu kolom, dan stempel waktu. Anda menggunakan stempel waktu yang sama setiap kali Anda menambahkan data ke sel. Jika Anda mengirim nilai ke kunci baris, grup kolom, dan penentu kolom yang sama, tetapi dengan stempel waktu yang berbeda, sel gabungan baru akan dibuat di kolom tersebut.
Permintaan penambahan yang dikirim ke sel gabungan harus menyertakan stempel waktu.
Jenis masukan
Jenis input nilai dalam permintaan penambahan harus sesuai dengan jenis input yang digunakan untuk membuat grup kolom. Misalnya, jika Anda mengirim nilai string ke kelompok kolom yang dikonfigurasi untuk Int64
, permintaan akan ditolak.
AddToCell
Permintaan penambahan mengirimkan mutasi AddToCell
di Bigtable Data API. Sebaliknya, permintaan tulis non-agregat mengirim mutasi SetCell
. Untuk mengetahui informasi selengkapnya, lihat Referensi Data API.
Operasi AddToCell
tunduk pada
batas operasi
yang sama dengan mutasi tabel lainnya.
Dalam tabel yang direplikasi, sel gabungan menyatu dengan total nilai yang sama di semua cluster dalam penundaan replikasi saat ini. Nilai total adalah gabungan dari semua mutasi AddToCell
yang dikirim ke sel tersebut di semua cluster sejak operasi penghapusan terakhir, atau sejak sel dibuat.
Menambahkan contoh permintaan
Contoh berikut menunjukkan cara menambahkan nilai ke sel gabungan. Contoh ini menambahkan jumlah dalam grup kolom yang mengharapkan jenis input Int64
.
cbt
cbt addtocell TABLE_ID ROW_KEY
FAMILY_NAME:COLUMN_QUALIFER=VALUE@TIMESTAMP
Ganti kode berikut:
TABLE_ID
: ID permanen untuk tabelROW_KEY
: kunci barisFAMILY_NAME
: nama grup kolom gabunganCOLUMN_QUALIFIER
: ID untuk kolomVALUE
: nilai yang akan ditambahkan ke selTIMESTAMP
: stempel waktu Unix dalam mikrodetik, seperti1710868850000000
Contoh:
cbt addtocell mobile-data device-1 updates:week12=100@1710868850000000
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Langkah selanjutnya
- Meninjau konsep yang terkait dengan desain skema.
- Pelajari cara menggunakan Cloud Function untuk mengakses data Bigtable.