Google Bigtable: Tabel yang memuat seluruh Dunia
Didalam artikel “BigData dan
Rahasia Kejayaan Google”
telah membahas 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 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 bertanggung jawab
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
bertanggung jawab mengkontrol 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 bertanggung jawab
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
Vijjam Wjaya, 2013, Google Bigtable: Tabel yang
memuat seluruh Dunia, [online],
(http://www.teknologi-bigdata.com/2013/02/google-bigtable-tabel-yang-memuat.html,
diakses tanggal 11 Maret 2018 )
Komentar
Posting Komentar