Penerapan jenis data di Bigtable
Skema fleksibel Bigtable memungkinkan Anda menyimpan data jenis apa pun โ string, tanggal, angka, dokumen JSON, atau bahkan gambar atau PDF โ dalam tabel Bigtable.
Dokumen ini menjelaskan kapan Bigtable menerapkan jenis, sehingga Anda harus mengenkode atau mendekode jenis tersebut dalam kode aplikasi Anda. Untuk mengetahui daftar jenis data Bigtable, lihat Jenis dalam dokumentasi referensi Data API.
Jenis yang diterapkan
Jenis data diterapkan untuk data berikut:
- Grup kolom agregat (penghitung)
- Stempel waktu
- Tampilan terwujud
Agregat
Untuk jenis data gabungan, encoding bergantung pada jenis agregasi. Saat membuat grup kolom gabungan, Anda harus menentukan jenis agregasi.
Tabel ini menunjukkan jenis input dan encoding untuk setiap jenis agregasi.
Jenis agregasi | Jenis input | Encoding |
---|---|---|
Jumlah | Int64 |
BigEndianBytes
|
Mnt | Int64 |
BigEndianBytes
|
Maks | Int64 |
BigEndianBytes
|
HLL | Byte | Zetasketch HLL++ |
Saat Anda membuat kueri data dalam sel gabungan menggunakan SQL, SQL akan otomatis menggabungkan informasi jenis.
Saat Anda membaca data dalam sel gabungan menggunakan metode ReadRows
Data API, Bigtable akan menampilkan byte, sehingga aplikasi Anda harus
mendekode nilai menggunakan encoding yang digunakan Bigtable untuk memetakan
data yang diketik ke byte.
Anda tidak dapat mengonversi grup kolom yang berisi data non-gabungan menjadi grup kolom gabungan. Kolom dalam grup kolom gabungan tidak boleh berisi sel non-gabungan, dan grup kolom standar tidak boleh berisi sel gabungan.
Untuk mengetahui informasi selengkapnya tentang cara membuat tabel dengan family kolom gabungan, lihat Membuat tabel. Untuk contoh kode yang menunjukkan cara menaikkan sel gabungan dengan nilai yang dienkode, lihat Menaikkan nilai.
Stempel waktu
Setiap sel Bigtable memiliki stempel waktu Int64
yang harus berupa nilai
mikrodetik dengan presisi paling banyak milidetik. Bigtable menolak stempel waktu dengan presisi mikrodetik, seperti 3023483279876543. Dalam
contoh ini, nilai stempel waktu yang dapat diterima adalah 3023483279876000. Stempel waktu adalah
jumlah mikrodetik sejak epoch
Unix, 1970-01-01 00:00:00 UTC
.
Tampilan terwujud berkelanjutan
Tampilan terwujud berkelanjutan adalah resource hanya baca yang dapat Anda baca menggunakan
SQL atau dengan panggilan ReadRows
Data API. Data dalam tampilan terwujud diketik
berdasarkan kueri yang menentukannya. Untuk ringkasan, lihat Tampilan terwujud
berkelanjutan.
Saat Anda menggunakan SQL untuk membuat kueri tampilan terwujud berkelanjutan, SQL akan otomatis menggabungkan informasi jenis.
Saat membaca dari tampilan
terwujud berkelanjutan menggunakan permintaan
ReadRows
Data API, Anda harus mengetahui jenis setiap kolom dan mendekodenya dalam kode aplikasi Anda.
Nilai gabungan dalam tampilan terwujud berkelanjutan disimpan menggunakan encoding yang dijelaskan dalam tabel berikut, berdasarkan jenis output kolom dari definisi tampilan.
Jenis | Encoding |
---|---|
BOOL | Nilai 1 byte, 1 = benar, 0 = salah |
BYTES | Tidak ada encoding |
INT64 (atau INT, SMALLINT, INTEGER, BIGINT, TINYINT, BYTEINT) | Big-endian 64-bit |
FLOAT64 | IEEE 754 64-bit, tidak termasuk NaN dan +/-inf |
STRING | UTF-8 |
WAKTU/STEMPEL WAKTU | Bilangan bulat 64-bit yang merepresentasikan jumlah mikrodetik sejak epoch Unix (konsisten dengan GoogleSQL) |
Kunci baris terstruktur
Kunci baris terstruktur memungkinkan Anda mengakses data menggunakan kunci multi-kolom, mirip dengan kunci gabungan dalam database relasional.
Jenis dan encoding untuk kunci baris terstruktur ditentukan oleh skema kunci baris yang dapat Anda tambahkan secara opsional ke tabel Bigtable. Data kunci baris terstruktur disimpan sebagai byte, tetapi GoogleSQL untuk Bigtable otomatis menggunakan jenis dan encoding yang ditentukan dalam skema kunci baris saat Anda menjalankan kueri SQL pada tabel.
Penggunaan skema kunci baris untuk membuat kueri tabel dengan permintaan ReadRows
tidak didukung. Tampilan terwujud berkelanjutan memiliki skema kunci baris secara default. Untuk
mengetahui informasi selengkapnya tentang kunci baris terstruktur, lihat Mengelola skema kunci baris.
Jenis yang tidak diterapkan
Jika tidak ada informasi jenis yang diberikan, Bigtable akan memperlakukan setiap sel sebagai byte dengan encoding yang tidak diketahui.
Saat mengkueri grup kolom yang dibuat tanpa penerapan jenis, Anda harus memberikan informasi jenis pada waktu baca untuk memastikan data dibaca dengan benar. Hal ini relevan dengan fungsi database yang perilakunya bergantung pada jenis data. GoogleSQL untuk Bigtable menawarkan fungsi CAST untuk melakukan konversi jenis saat waktu kueri. Fungsi ini mengonversi dari byte ke jenis yang diharapkan oleh berbagai fungsi.
Meskipun Bigtable tidak menerapkan jenis, operasi tertentu mengasumsikan jenis data. Mengetahui hal ini akan membantu Anda memastikan bahwa data Anda ditulis dengan cara yang dapat diproses dalam database. Berikut adalah contohnya:
- Peningkatan menggunakan
ReadModifyWriteRow
mengasumsikan sel berisi bilangan bulat 64-bit bertanda big-endian. - Fungsi
TO_VECTOR64
di SQL mengharapkan sel berisi array byte yang merupakan gabungan byte big-endian dari angka floating point 64-bit. - Fungsi
TO_VECTOR32
di SQL mengharapkan sel berisi array byte yang merupakan gabungan byte big-endian dari angka floating point 32-bit.