Google Bigtable: Tabel yang memuat seluruh Dunia
Dalam
artikel “BigData dan Rahasia Kejayaan Google”, telah dibahas tentang kesuksesan Google
dalam mengelola dan memberdayakan Big Data yang telah menjadikannya raksasa
Internet yang benar-benar besar dan berjaya. Telah disebutkan pula bahwa
teknologi yang digunakan oleh Google untuk mengelola dan memberdayakan Big Data
diantaranya adalah GoogleFile System, GoogleMapReduce dan Google Bigtable. Google File System dan Google MapReduce
adalah teknologi yang dipergunakan oleh Google untuk menyimpan dan memproses
data berukuran raksasa secara terdistribusi dan paralel dalam suatu cluster yang
terdiri atas ribuan komputer. (Silakan simak “GFS:Menggotongroyongkan Ribuan Komputer ala Google” untuk pembahasan lebih
detail tentang Google File System, dan “MapReduce:Besar dan Powerful tapi tidak Ribet” untuk pembahasan tentang MapReduce.
Dengan
adanya GFS dan MapReduce, Google telah mampu mengelola dan memanfaatkan Big
Data secara efektif dan efisien yang tidak akan mungkin bisa dicapai hanya
dengan menggunakan teknologi konvensional yang telah ada sebelumnya. Namun
demikian, GFS dan MapReduce memiliki satu karakteristik yang boleh dikatakan
adalah titik lemahnya. GFS dan MapReduce ditujukan untuk memproses data
berukuran besar dalam satu kali proses sekaligus untuk mendapatkan suatu hasil
yang telah ditentukan. GFS dan MapReduce tidak ditujukan untuk memproses
data-data berukuran kecil yang jumlahnya ribuan atau jutaan dan memberikan
hasil secara seketika. GFS dan MapReduce tidak akan bisa menunjukkan performa
yang optimal bila digunakan untuk menyimpan, membaca dan mengolah data-data
kecil yang jumlahnya ribuan atau jutaan. Singkat katanya, GFS dan MapReduce
sama sekali tidak tepat bila digunakan sebagai Database Management System.
Untuk mengatasi kekurangan GFS dan MapReduce ini Google kemudian menciptakan Google
Bigtable.
Bigtable bukan sekedar tabel yang besar
Dalam paper berjudul “Bigtable: A Distributed Storage
System for Structured Data” yang dirilis oleh Google sendiri, Bigtable
didefinisikan sebagai system penyimpanan data terdistribusi yang ditujukan untuk
mengelola data yang terstruktur dan didesain sebagai system yang handal untuk
mengelola data dalam skala petabytes dan dalam ribuan mesin (komputer). Dari
definisi tersebut kita bisa membayangkan bahwa Bigtable itu memang table yang
benar-benar besar. Tabel yang berisi data dalam skala petabytes, bisa berukuran
beberapa petabytes, bisa puluhan, ratusan bahkan ribuan petabytes. Data-data
tersebut disimpan secara terdistribusi dalam ribuan komputer yang dapat diakses
dan dikelola melalui Bigtable. Dalam hal kemampuan mengelola data, Bigtable
dinyatakan sebagai system yang sangat fleksibel. Bigtable mampu memproses data
mulai data yang berukuran kecil seperti halnya URL, data berukuran sedang
seperti halnya web pages, hingga data berukuran besar berupa photo atau citra
satelit. Bigtable bisa menangani pemrosesan data mentah ‘gelondongan’ yang
berorientasi pada hasil akhir dan perlu diproses dalam jangka waktu tertentu
maupun pemrosesan data secara real time yang menuntut hasil seketika. Google
menggunakan Bigtable dalam lebih dari 60 produk dan proyeknya termasuk Google
web indexing, Google Analytics, Google Finance, Orkut, Personalize Search,
Writely dan Google Earth.
Bigtable sama dengan Relational Database?
Kalau
disederhanakan, Bigtable itu dapat dianggap sebagai sebuah database yang mampu
mengelola data dalam ukuran yang sangat besar yang tak mampu lagi diatasi oleh
system database yang telah ada. Namun demikian, ada beberapa perbedaan mencolok
antara Bigtable dan Relational Database (RDB), diantaranya:
1. Struktur tabel dalam Bigtable lebih kompleks dan
fleksibel daripada tabel dalam RDB. Tabel dalam Bigtable tidak hanya terdiri
atas baris dan kolom, tapi juga memiliki timestamps. Berkat adanya timestamps
ini, tiap cell dalam suatu tabel Bigtable dapat memuat suatu data dalam
beberapa versi. Jadi, dalam hal ini tabel dalam Bigtable terdiri atas tiga
dimensi, yang bila digambarkan dengan sumbu x, y, dan z, x adalah baris, y
adalah kolom dan z adalah timestamps. Tidak hanya itu, struktur kolom dalam
Bigtable juga tidak sesederhana tabel biasa. Kolom dalam Bigtable terdiri atas
Column Families yang masing-masing terdiri atas beberapa Column Keys.
2. Dalam hal
pengoperasiannya untuk memproses data, Bigtable tidak menyediakan bahasa
pengoperasian tersendiri nan praktis layaknya SQL. Bigtable harus dioperasikan
dengan menggunakan bahasa pemrograman biasa seperti halnya C++. Namun demikian, Google telah menyediakan
library tersendiri bagi para programmer yang akan membuat aplikasi yang
menggunakan Bigtable. Melalui aplikasi yang merupakan Client dari Bigtable
inilah Bigtable dapat dioperasikan untuk memproses data.
Perberdaan-perbedaan lainnya tentu masih banyak, namun
disini kita tidak akan membahas perbedaan maupun persamaan kedua system
tersebut secara lebih detail, juga tidak akan membandingkannya dari sudut
pandang manapun. Kita akan fokus membahas spesifikasi Bigtable saja.
Data Model
Telah
disebutkan bahwa tabel dalam Bigtable terdiri atas baris, kolom, dan timestamps
(Gambar 1). Baris dalam Bigtable
dapat dianalogikan seperti halnya baris dalam tabel pada umumnya. Seperti
halnya baris dalam RDB (Relational Database) tiap baris dalam Bigtable juga
memiliki kunci yang disebut Row Key dan baris-baris tersebut disusun berurutan
berdasar Row Keys ini. Kemudian, bari-baris yang berada dalam suatu bentangan
Row Keys dikelompokkan dalam satu group disebut Tablet. Tiap tabel dalam
Bigtable akan dibagi-bagi menjadi Tablet-Tablet yang berukuran antara 100 – 200
MB. Tablet-tablet inilah yang kemudian dikelola secara terdistribusi, dibagi-bagikan
ke tiap Tablet Servers. Kolom dalam Bigtable terdiri atas Column Families yang
terdiri atas beberapa Column Keys. Biasanya, data dalam satu tipe disimpan
dalam satu Column Family. Kemudian Column Family ini dibagi-bagi dalam beberapa
Column Keys yang masing-masing menyimpan data yang berbeda (unik). Timestamps
dalam Bigtable memungkinkan tiap cell memiliki beberapa versi data dari data
yang sama yang tentunya dibedakan berdasarkan tanda waktu. Bigtable menentukan
timestamps dalam mircosecond, namun demikian timestamps juga dapat ditentukan
sendiri oleh aplikasi client yang menggunakan Bigtable. Data yang telah
memiliki timestamps ini disimpan dengan urutan menurun sehingga data yang
paling baru akan berada paling atas (dapat diakses paling dahulu). Jadi, untuk
mendapatkan suatu data tertentu, kita harus menentukan Row Key, Column Key, dan
Timestamps dari data tersebut.
Gambar 1. Baris, Kolom, dan Timestamps pada
tabel Bigtable.
Struktur Implementasi
Dalam
implementasinya Bigtable terdiri atas tiga komponen utama, yaitu: satu Master,
banyak Tablet Servers, dan satu Library yang terhubung dengan tiap Client
(gampangnya kita sebut saja Client). Jumlah Tablet Servers dapat ditambah atau
dikurangi secara dinamis menyesuaikan dengan besar kecilnya beban kerja. Master
bertanggungjawab membagi-bagikan Tablet kepada tiap Tablet Server, perubahan
jumlah Tablet Servers, mengatur pendistribusian Tablet sehingga beban kerja
tiap Tablet Server jadi seimbang, menanggulangi file-file sampah pada GFS, dan
menangani perubahan skema pada Bigtable seperti pembentukan table mapun Column
Family baru. Singkat kata, Master bertanggungjawab mengontrol kerja Bigtable
secara keseluruhan. Peranan Master pada Bigtable hampir sama dengan peranan
Master pada GFS. Bedanya, Master pada Bigtable tidak berhubungan langsung
dengan Client sedangkan Master pada GFS berinteraksi langsung dengan Client.
Tiap Tablet Server bertanggungjawab mengelola satu set Tablets yang terdiri
atas 10 – 1000 Tablets. Tablet Servers bertugas menangani permintaan read dan
write pada tiap Tablets yang menjadi tanggung jawabnya dan juga bertugas
membelah Tablet yang sudah terlalu besar menjadi Tablet-tablet yang lebih
kecil. Client pada Bigtable adalah aplikasi yang mengoperasikan Bigtable itu
sendiri. Seperti telah disebutkan sebelumnya, Client tidak berhubungan langsung
dengan Master. Untuk mengetahui lokasi suatu Tablet, Client juga tidak
bergantung pada Master. Client berkomunikasi langsung dengan Tablet Servers
untuk read dan write data. Jadi, sebagian Client tidak akan pernah
berkomunikasi dengan Master. Dengan demikian beban Master menjadi tidak
begitu berat.
Bigtable bergantung pada GFS dan Chubby
Bigtable
bukan system yang berdiri sendiri. Bigtable juga bergantung pada beberapa teknologi
Google seperti GFS dan Chubby (Gambar 2).
Untuk menyimpan data dan log, Bigtable bergantung pada GFS. Semua data yang
ditangani ataupun diproses oleh Bigtable termasuk juga log data Bigtable itu
sendiri disimpan di Google File System. Jadi, andaikan terdapat Tablet Sever
yang rusak atau mati, data yang menjadi tanggung jawabnya tidak akan hilang
karena sudah tersimpan pada GFS. Bigtable pun bisa dengan segera membentuk
Tablet Server baru yang identik dengan Tablet Server yang telah mati dengan
menggunakan informasi pada Log data yang disimpan di GFS.
Chubby
sebagai teknologi pendukung Bigtable berfungsi sebagai administrator yang
memegang informasi-informasi mendasar mengenai Bigtable secara keseluruhan.
Tablet Servers secara rutin berkomunikasi dengan Chubby untuk melaporkan
kondisinya pada saat itu. Master juga secara rutin berkomunikasi dengan Chubby
untuk mengetahui kondisi para Tablet Servers. Berdasarkan informasi ini, Master
akan mengatur pendistribusian Tablet-tablet kepada para Tablet Servers.
Gambar 2. Hubungan Bigtable dengan GFS dan
Chubby (Head Node = Master).
Penutup
Bigtable
merupakan system penyimpanan dan manajemen data secara terdistribusi yang
berdiri diatas cluster yang terdiri atas ribuan komputer. Sebagai system penyimpanan
data Bigtable menggunakan GFS, sedangkan sebagai system manajemen data,
Bigtable didukung oleh Chubby. Sebuah cluster Bigdata dapat menyimpan beberapa
tabel. Tiap tabel terdiri atas sekumpulan Tablets. Tiap Tablet berisi semua
data yang dimuat oleh suatu rentang baris / Row Keys yang membentuk Tablet
tersebut. Pada awalnya, tiap tabel hanya terdiri atas satu Tablet. Seiring
dengan pertambahan ukurannya, karena pertambahan data yang dimuatnya, tabel
akan secara otomatis di-split menjadi Tablet-tablet yang berukuran 100 hingga
200 MB.
Demikian
telah kita bahas tentang Bigtable sebagai ‘database’ besar yang digunakan oleh
Google untuk mengelola data-datanya yang mencakup data seluruh websites di
dunia maya Internet. Jadi, rasanya tidak berlebihan bila Bigtable disebut
sebagai tabel yang memuat seluruh dunia, dalam hal ini dunia Internet.
Referensi:
“Bigtable:
A Distributed Storage System for Structured Data”, Fay Chang et al, Google Inc.
2006
“Google を支える技術”, Nishida Keisuke, WEB+DB PRESS
2008
Comments
Artikelnya memang mengacu pada papernya Google itu.
Semoga bermanfaat!