Di pagi yang sejuk ini, ane akan sharing lagi tentang hal baru. Kali ini, ane mau membahas tentang Bigtable. Apa sih Bigtable ?
Banyak dari orang IT sudah mengetahui apa itu Bigtable, apalagi jika dihubungkan dengan google. Google dan bigtable adalah dua hal yang tidak bisa dipisahkan, kenapa bisa begitu ?.. simak terus artikel ane kali ini.. ^_^
Google adalah perusahaan raksasa internet yang menyimpan beratus-ratus bahkan beribu-ribu data dari seluruh dunia. Dari berbagai website dengan data berupa artikel, gambar, musik, video, game, film, dan lain-lain. Namun ada rahasia dibalik itu semua, kenapa google sepertinya tidak kehabisan penyimpanan yaa..??
yuph, Bigtable adalah alasannya, Bigtable merupakan teknologi yang digunakan oleh google dalam merancang, mengelola, memberdayakan penyimpanannya sehingga sampai bisa seperti sekarang. Bigtable merupakan rahasia kejayaan google selama ini. Dengan menggabungkan beberapa teknologi lain juga, tidak dapat dipungkiri bigtable menjadi senjata rahasia google yang dahsyat.
Bigtable bekerja layaknya sebuah database, dilihat dari namanya yang berarti table besar, kita sudah membayangkan sebesar apa tabel yang bisa menyimpan data seluruh dunia tersebut. 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). 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.
Walaupun bigtable bisa disebut sebagai database, namun tidak bisa disamakan antara bigtable dengan RDBMS yang kita kenal, bigtable dapat mengelola data yang sangat banyak atau besar, yang tidak bisa ditangani oleh RDBMS. Untuk perbedaan jelasnya sendiri, ane akan coba jelaskan :
- Language
Bahasa yang digunakan dalam bigtable berbeda dengan bahasa pada basis data-basis data umumnya, basis data atau database biasanya dioperasikan dengan menggunakan bahasa SQL (Struktur Query Language). Nah, bigtable sendiri menggunakan bahasa C++ dalam pengoperasiannya. Kebayangkan gimana ngejalaninnya, hehe… ^_^
- Struktur Tabel
Sebuah database biasanya terdiri atas kolom dan baris untuk penyimpanannya, sama halnya dengan bigtable juga memiliki struktur kolom dan baris. Terus dimana bedanya ?, perbedaan terlihat pada penyimpanan bigtable yang juga memiliki Timestamp. 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.
Model Data
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.
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