Dalam artikel “Big Data 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 Google File System , Google MapReduce 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.

data

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.

data2

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:

vijjam.blogspot.com

“Bigtable: A Distributed Storage System for Structured Data”, Fay Chang et al, Google Inc. 2006

“Google を支える技術”, Nishida Keisuke, WEB+DB PRESS 2008