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)
Untuk mengetahui informasi selengkapnya, lihat Encoding dalam referensi Data API.

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.

Langkah berikutnya