Ringkasan Bigtable
Bigtable adalah tabel yang jarang terisi dan dapat diskalakan hingga miliaran baris dan ribuan kolom, sehingga Anda dapat menyimpan data berukuran terabyte atau bahkan petabyte. Satu nilai di setiap baris diindeks; nilai ini dikenal sebagai kunci baris. Bigtable sangat ideal untuk menyimpan data dengan satu kunci dalam jumlah besar dengan latensi rendah. Layanan ini mendukung throughput baca dan tulis yang tinggi pada latensi rendah, dan merupakan sumber data yang ideal untuk operasi MapReduce.
Bigtable diekspos ke aplikasi melalui beberapa library klien, termasuk ekstensi yang didukung untuk library Apache HBase untuk Java. Hasilnya, ia terintegrasi dengan ekosistem Apache dari software big data open source.
Server backend Bigtable yang canggih menawarkan beberapa keunggulan utama dibandingkan penginstalan HBase yang dikelola sendiri:
- Skalabilitas yang luar biasa. Bigtable diskalakan dalam proporsi langsung dengan jumlah mesin di cluster Anda. Penginstalan HBase yang dikelola sendiri memiliki bottleneck desain yang membatasi performa setelah batas tertentu tercapai. Bigtable tidak memiliki bottleneck ini, sehingga Anda dapat meningkatkan skala cluster untuk menangani lebih banyak pembacaan dan penulisan.
- Administrasi yang sederhana. Bigtable menangani upgrade dan memulai ulang secara transparan, dan secara otomatis mempertahankan ketahanan data yang tinggi. Untuk mereplikasi data, tambahkan cluster kedua ke instance, dan replikasi akan dimulai secara otomatis. Tidak perlu lagi mengelola replika atau region. Cukup rancang skema tabel Anda, dan Bigtable akan menangani sisanya.
- Pengubahan ukuran cluster tanpa periode nonaktif. Anda dapat meningkatkan ukuran cluster Bigtable selama beberapa jam untuk menangani beban yang besar, lalu mengurangi ukuran cluster lagi—semuanya tanpa periode nonaktif. Setelah Anda mengubah ukuran cluster, biasanya hanya perlu beberapa menit saat Bigtable menyeimbangkan performa di semua node di cluster Anda.
- Penskalaan otomatis. Anda dapat mengonfigurasi Bigtable untuk terus memantau kapasitas CPU cluster dan menyesuaikan jumlah node dalam cluster secara otomatis jika diperlukan.
Efektif untuk
Bigtable sangat ideal untuk aplikasi yang memerlukan throughput dan skalabilitas tinggi untuk data nilai kunci, dengan setiap nilai biasanya tidak lebih besar dari 10 MB. Bigtable juga unggul sebagai mesin penyimpanan untuk operasi MapReduce batch, stream processing/analisis, dan aplikasi machine learning.
Anda dapat menggunakan Bigtable untuk menyimpan dan membuat kueri semua jenis data berikut:
- Data deret waktu, seperti penggunaan CPU dan memori dari waktu ke waktu untuk beberapa server.
- Data pemasaran, seperti histori pembelian dan preferensi pelanggan.
- Data keuangan, seperti histori transaksi, harga saham, dan nilai tukar mata uang.
- Data Internet of Things, seperti laporan penggunaan dari pengukur energi dan peralatan rumah tangga.
- Data grafik, seperti informasi tentang cara pengguna terhubung satu sama lain.
Model penyimpanan Bigtable
Bigtable menyimpan data dalam tabel yang sangat skalabel, yang masing-masing merupakan peta nilai kunci yang diurutkan. Tabel terdiri dari baris, yang masing-masing biasanya mendeskripsikan satu entitas, dan kolom, yang berisi nilai individual untuk setiap baris. Setiap baris diindeks oleh satu kunci baris, dan kolom yang terkait satu sama lain biasanya dikelompokkan ke dalam kelompok kolom. Setiap kolom diidentifikasi dengan kombinasi grup kolom dan penentu kolom, yang merupakan nama unik dalam grup kolom.
Setiap persimpangan baris dan kolom dapat berisi beberapa sel. Setiap sel berisi versi data dengan stempel waktu yang unik untuk baris dan kolom tersebut. Menyimpan beberapa sel dalam kolom memberikan catatan tentang bagaimana data yang disimpan untuk baris dan kolom tersebut telah berubah dari waktu ke waktu. Tabel Bigtable bersifat renggang; jika suatu kolom tidak digunakan dalam baris tertentu, tabel tersebut tidak akan memakan ruang.
Beberapa hal yang perlu diperhatikan dalam ilustrasi ini:
- Kolom dapat tidak digunakan dalam baris.
- Setiap sel dalam baris dan kolom tertentu memiliki stempel waktu unik (t).
Arsitektur Bigtable
Diagram berikut menunjukkan versi sederhana dari arsitektur Bigtable secara keseluruhan:
Seperti diilustrasikan dalam diagram, semua permintaan klien melewati server frontend sebelum dikirim ke node Bigtable. (Dalam kertas Bigtable asli, node ini disebut "server tablet".) Node diatur ke dalam cluster Bigtable yang termasuk dalam instance Bigtable, yaitu container untuk cluster.
Setiap node dalam cluster menangani sebagian permintaan ke cluster. Dengan menambahkan node ke cluster, Anda dapat meningkatkan jumlah permintaan serentak yang dapat ditangani oleh cluster. Menambahkan node juga akan meningkatkan throughput maksimum untuk cluster. Jika mengaktifkan replikasi dengan menambahkan cluster lain, Anda juga dapat mengirim berbagai jenis traffic ke cluster yang berbeda. Kemudian, jika satu cluster menjadi tidak tersedia, Anda dapat beralih ke cluster lain.
Tabel Bigtable di-sharding menjadi blok baris yang berdekatan, yang disebut tablet, untuk membantu menyeimbangkan beban kerja kueri. (Tablet mirip dengan region HBase.) Tablet disimpan di Colossus, sistem file Google, dalam format SSTable. SSTable menyediakan peta persisten yang tidak dapat diubah dan diurutkan dari kunci ke nilai, dengan kunci dan nilai merupakan string byte arbitrer. Setiap tablet dikaitkan dengan node Bigtable tertentu. Selain file SSTable, semua penulisan disimpan di log bersama Colossus segera setelah dikonfirmasi oleh Bigtable, sehingga memberikan ketahanan yang lebih baik.
Yang penting, data tidak pernah disimpan di node Bigtable sendiri; setiap node memiliki pointer ke sekumpulan tablet yang disimpan di Colossus. Hasilnya:
- Penyeimbangan ulang tablet dari satu node ke node lainnya terjadi dengan cepat, karena data sebenarnya tidak disalin. Bigtable mengupdate pointer untuk setiap node.
- Pemulihan dari kegagalan node Bigtable dapat dilakukan dengan cepat, karena hanya metadata yang harus dimigrasikan ke node pengganti.
- Saat node Bigtable gagal, tidak ada data yang hilang.
Lihat Instance, Cluster, dan Node untuk mengetahui informasi selengkapnya tentang cara menggunakan elemen penyusun dasar ini.
Load balancing
Setiap zona Bigtable dikelola oleh proses utama, yang menyeimbangkan beban kerja dan volume data dalam cluster. Proses ini akan membagi tablet yang lebih sibuk atau lebih besar menjadi dua dan menggabungkan tablet yang lebih sedikit diakses/lebih kecil, dan mendistribusikannya di antara node sesuai kebutuhan. Jika tablet tertentu mendapatkan lonjakan traffic, Bigtable akan membagi tablet tersebut menjadi dua, lalu memindahkan salah satu tablet baru ke node lainnya. Bigtable mengelola pemisahan, penggabungan, dan penyeimbangan ulang secara otomatis, sehingga Anda tidak perlu repot mengelola tablet secara manual. Memahami performa memberikan detail selengkapnya tentang proses ini.
Untuk mendapatkan performa operasi tulis terbaik dari Bigtable, penting untuk mendistribusikan operasi tulis secara merata di seluruh node. Salah satu cara untuk mencapai sasaran ini adalah dengan menggunakan kunci baris yang tidak mengikuti urutan yang dapat diprediksi. Misalnya, nama pengguna cenderung didistribusikan lebih banyak atau kurang merata di seluruh alfabet, sehingga menyertakan nama pengguna di awal tombol baris akan cenderung mendistribusikan operasi tulis secara merata.
Pada saat yang sama, sebaiknya kelompokkan baris terkait agar saling bersebelahan, sehingga jauh lebih efisien untuk membaca beberapa baris secara bersamaan. Misalnya, jika Anda menyimpan berbagai jenis data cuaca dari waktu ke waktu,
kunci baris Anda mungkin berupa lokasi tempat data dikumpulkan, diikuti dengan
stempel waktu (misalnya, WashingtonDC#201803061617
). Jenis kunci baris ini akan
mengelompokkan semua data dari satu lokasi ke dalam rentang baris yang berdekatan. Untuk lokasi lain, baris akan dimulai dengan ID yang berbeda; dengan banyak lokasi yang mengumpulkan data pada kecepatan yang sama, operasi tulis akan tetap tersebar secara merata di seluruh tablet.
Lihat Memilih tombol baris untuk detail selengkapnya tentang cara memilih tombol baris yang sesuai untuk data Anda.
Compute
Secara default, Bigtable menggunakan node cluster untuk penyimpanan dan komputasi. Untuk tugas baca dengan throughput tinggi, Anda dapat menggunakan Data Boost untuk Bigtable untuk komputasi. Dengan Data Boost, Anda dapat mengirim tugas baca dan kueri dalam jumlah besar menggunakan komputasi serverless selagi aplikasi inti Anda terus menggunakan node cluster untuk komputasi. Untuk mengetahui informasi selengkapnya, lihat ringkasan Pengoptimalan Data.
Jenis data yang didukung
Bigtable memperlakukan semua data sebagai string byte mentah untuk sebagian besar tujuan. Satu-satunya waktu Bigtable mencoba menentukan jenis adalah untuk operasi inkremental, dengan target harus berupa bilangan bulat 64-bit yang dienkode sebagai nilai big-endian 8 byte.
Penggunaan memori dan disk
Bagian berikut menjelaskan bagaimana beberapa komponen Bigtable memengaruhi penggunaan memori dan disk untuk instance Anda.
Kolom yang tidak digunakan
Kolom yang tidak digunakan di baris Bigtable tidak menempati ruang di baris tersebut. Setiap baris pada dasarnya adalah kumpulan entri nilai kunci, dengan kunci adalah kombinasi dari kelompok kolom, penentu kolom, dan stempel waktu. Jika baris tidak menyertakan nilai untuk kolom tertentu, entri nilai kunci tidak akan ada.
Penentu kolom
Penentu kolom menempati ruang dalam satu baris, karena setiap penentu kolom yang digunakan dalam satu baris disimpan di baris tersebut. Oleh karena itu, sering kali lebih efisien menggunakan penentu kolom sebagai data.
Untuk informasi selengkapnya tentang penentu kolom, lihat Kolom.
Pemadatan
Bigtable secara berkala menulis ulang tabel Anda untuk menghapus entri yang telah dihapus, dan untuk mengatur ulang data agar pembacaan dan penulisan menjadi lebih efisien. Proses ini dikenal sebagai pemadatan. Tidak ada setelan konfigurasi untuk pemadatan—Bigtable akan memadatkan data Anda secara otomatis.
Mutasi dan penghapusan
Mutasi, atau perubahan, pada satu baris memerlukan ruang penyimpanan tambahan, karena Bigtable menyimpan mutasi secara berurutan dan hanya memadatkannya secara berkala. Saat Bigtable memadatkan tabel, Bigtable akan menghapus nilai yang tidak diperlukan lagi. Jika Anda memperbarui nilai dalam sel, nilai asli dan nilai baru akan disimpan di disk selama beberapa waktu hingga datanya dipadatkan.
Penghapusan juga membutuhkan ruang penyimpanan tambahan, setidaknya dalam jangka pendek, karena penghapusan sebenarnya merupakan jenis mutasi khusus. Sebelum tabel dipadatkan, penghapusan akan menggunakan penyimpanan tambahan, bukan mengosongkan ruang penyimpanan.
Kompresi data
Bigtable mengompresi data Anda secara otomatis menggunakan algoritma cerdas. Anda tidak dapat mengonfigurasi setelan kompresi untuk tabel Anda. Namun, penting untuk mengetahui cara menyimpan data agar dapat dikompresi secara efisien:
- Data acak tidak dapat dikompresi seefisien data berpola. Data berpola menyertakan teks, seperti halaman yang sedang Anda baca sekarang.
- Kompresi berfungsi optimal jika nilai yang identik berdekatan satu sama lain,baik di baris yang sama maupun dalam baris yang bersebelahan. Jika Anda mengatur kunci baris sehingga baris dengan potongan data identik berada di samping satu sama lain, data dapat dikompresi secara efisien.
- Bigtable mengompresi nilai yang berukuran hingga 1 MiB. Jika Anda menyimpan nilai yang lebih besar dari 1 MiB, kompresi terlebih dahulu sebelum menulisnya ke Bigtable, sehingga Anda dapat menghemat siklus CPU, memori server, dan bandwidth jaringan.
Ketahanan data
Saat Anda menggunakan Bigtable, data Anda akan disimpan di Colossus, sistem file internal Google yang sangat tahan lama, menggunakan perangkat penyimpanan di pusat data Google. Anda tidak perlu menjalankan cluster HDFS atau sistem file lainnya untuk menggunakan Bigtable. Di balik layar, Google menggunakan metode penyimpanan eksklusif untuk mencapai ketahanan data yang melebihi dan melampaui yang disediakan oleh replikasi tiga arah HDFS standar.
Ketahanan akan lebih baik saat menggunakan replikasi. Bigtable menyimpan salinan terpisah dari data Anda di lokasi yang Anda pilih untuk setiap cluster dari instance yang direplikasi.
Model konsistensi
Instance Bigtable cluster tunggal memberikan konsistensi kuat. Secara default, instance yang memiliki lebih dari satu cluster akan memberikan konsistensi tertunda, tetapi untuk beberapa kasus penggunaan instance tersebut dapat dikonfigurasi guna memberikan konsistensi read-your-write atau konsistensi yang kuat, bergantung pada setelan profil aplikasi dan beban kerja.
Keamanan
Akses ke tabel Bigtable dikontrol oleh project Google CloudAnda dan peran Identity and Access Management (IAM) yang Anda tetapkan kepada pengguna. Misalnya, Anda dapat menetapkan peran IAM yang mencegah pengguna membaca dari tabel, menulis ke tabel, atau membuat instance baru. Jika seseorang tidak memiliki akses ke project Anda atau tidak memiliki peran IAM dengan izin yang sesuai untuk Bigtable, orang tersebut tidak dapat mengakses tabel Anda.
Anda juga dapat mengontrol akses ke data tabel dengan membuat tampilan tabel yang diotorisasi yang mewakili subset data tabel. Kemudian, Anda dapat memberikan izin tingkat tampilan yang diotorisasi kepada beberapa pengguna tanpa memberi mereka izin tingkat tabel.
Anda dapat mengelola keamanan di tingkat project, instance, tabel, atau tingkat tampilan yang diotorisasi. Bigtable tidak mendukung pembatasan keamanan tingkat baris, tingkat kolom, atau tingkat sel.
Enkripsi
Secara default, semua data yang disimpan di dalam Google Cloud, termasuk data dalam tabel Bigtable, dienkripsi dalam penyimpanan menggunakan sistem pengelolaan kunci yang telah melalui proses hardening seperti yang kita gunakan untuk data terenkripsi kita sendiri.
Jika menginginkan kontrol lebih besar atas kunci yang digunakan untuk mengenkripsi data Bigtable, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK).
Cadangan
Pencadangan bigtable memungkinkan Anda menyimpan salinan skema dan data tabel, lalu memulihkannya ke tabel baru di lain waktu. Dengan menggunakan pencadangan dan salinan cadangan, Anda dapat memulihkan tabel baru di region atau project mana pun tempat Anda memiliki instance Bigtable, di mana pun lokasi tabel sumber berada.
Mengubah pengambilan data
Bigtable menyediakan pengambilan data perubahan (CDC) dalam bentuk aliran data perubahan. Aliran data perubahan memungkinkan Anda menangkap dan mengalirkan perubahan data pada tabel saat perubahan terjadi. Anda dapat membaca aliran perubahan menggunakan layanan seperti Dataflow untuk mendukung kasus penggunaan termasuk analisis data, audit, persyaratan pengarsipan, dan memicu logika aplikasi downstream. Untuk mengetahui informasi selengkapnya, lihat Ringkasan aliran perubahan.
Pemilihan rute permintaan dengan profil aplikasi
Kebijakan perutean profil aplikasi memungkinkan Anda mengontrol cluster mana yang menangani permintaan masuk dari aplikasi Anda. Opsi untuk kebijakan perutean meliputi:
- Perutean cluster tunggal: mengirim semua permintaan ke satu cluster.
- Pemilihan rute multi-cluster ke cluster mana pun: mengirimkan permintaan ke cluster terdekat
yang tersedia dalam suatu instance, termasuk opsi berikut:
- Cluster mana pun: cluster mana pun dalam instance dapat menerima permintaan.
- Perutean grup cluster: grup cluster tertentu dalam instance dapat menerima permintaan.
Opsi penyimpanan dan database lainnya
Bigtable bukan database relasional tradisional. Meskipun mendukung kueri SQL, kasus penggunaan tertentu mungkin lebih cocok untuk opsi database lainnya.
- Jika Anda memerlukan kueri interaktif dalam sistem pemrosesan analisis online (OLAP), pertimbangkan BigQuery.
- Jika Anda harus menyimpan objek yang sangat terstruktur dalam database dokumen, dengan dukungan untuk transaksi ACID dan kueri mirip SQL, pertimbangkan Firestore.
- Untuk penyimpanan data dalam memori dengan latensi rendah, pertimbangkan Memorystore.
- Untuk menyinkronkan data antarpengguna secara real time, pertimbangkan Firebase Realtime Database.
Untuk informasi selengkapnya tentang opsi database lainnya, lihat ringkasan layanan database. Google Cloud juga memiliki berbagai opsi penyimpanan.
Langkah berikutnya
- Coba panduan memulai Bigtable menggunakan CLI
cbt
, alat command line untuk Bigtable. - Pelajari codelab Bigtable.
- Pelajari instance, cluster, dan node Bigtable.
- Pelajari cara membuat instance Bigtable.
- Pelajari cara bermigrasi ke Bigtable.
- Pelajari library klien untuk Cloud Bigtable.
- Baca makalah OSDI asli tentang Bigtable.