1. Cassandra Facebook Database
Bustomi Rahrjo
D3 Teknik Informatika FMIPA UNS
Jln. Ir. Sutami 36 A, Surakarta, 57126 INDONESIA
Email, bustomiraharjo@gmail.com
Intisari Cassandra adalah sistem penyimpanan terdistribusi
untuk mengelola data terstruktur yang dirancang untuk skala
yang sangat besar di banyak server, tanpa satu titik kegagalan .
Pada skala besar, kehandalan merupakan tantangan utama.
Matinya pelayanan(server) dapat memberikan dampak negatif
yang sangat besar. Oleh karena itu Cassandra dirancang untuk
berjalan di atas infrastruktur dengan ratusan node (mungkin
tersebar di seluruh pusat data yang berbeda ). Pada skala ini ,
komponen kecil dan besar akan selalu gagal, cara Cassandra
menangani kegagalan ini adalah dengan mendorong keandalan
dan skalabilitas dari sistem perangkat lunak yang bergantung
pada layanan ini. Cassandra telah mencapai beberapa tujuan skalabilitas , kinerja tinggi, ketersediaan dan penerapan . Dalam
banyak hal Cassandra menyerupai database dari segi desain dan
impementasi. Cassandra tidak mendukung model data relasional
secara penuh, melainkan menyediakan klien dengan model data
sederhana yang mendukung kontrol dinamis atas tata letak data
dan format. Cassandra digunakan pada Facebook untuk
pencarian inbox.
Keywords cassandra, database, dan facebook.
I. PENDAHULUAN
Tidak dapat dipungkiri bahwa database merupakan media
penyimpanan data yang paling banyak digunakan oleh
aplikasi-aplikasi yang ada saat ini. Hal ini menimbulkan
kecenderungan bahwa untuk menyimpan data harus di
database. Memang, data harus disimpan di database
sehingga jika suatu saat data tersebut diperlukan, maka
diambil lagi. Namun, apakah bentuk database yang digunakan
harus seperti relational database yang sering digunakan
aplikasi pada umumnya. Selama bertahun-tahun, semenjak
tahun 1990-an aplikasi bergantung pada relational database
untuk menyimpan datanya. Tercatat ada beberapa RDBMS
(Relational Database Management System) yang merajai
dunia relational
database, yakni
MySQL,
Oracle,
PostgreSQL dan Microsoft SQL Server.
Semua RDBMS tersebut sudah terkenal akan
ketangguhannya dalam menangani penyimpanan data
berskala besar. MySQL tercatat sebagai RDBMS yang
paling banyak digunakan untuk penyimpanan data dalam
aplikasi berbasis web. Banyak websitewebsite di dunia dengan
jumlah pengakses mencapai jutaan yang menggunakan
MySQL, seperti Facebook.
Namun, seiring meningkatnya jumlah pengakses internet,
maka situs-situs tersebut lama-lama akan melambat
juga kecepatannya. Dan penyebab dari melambatanya
kecepatan akses tersebut, tidak lain karena tingginya akses
ke database sehingga RDBMS kewalahan untuk melayani
request data.
Beruntunglah pada tahun 2009 muncul trend baru
penyimpanan data, NoSQL. NoSQL ini merupakan
kepanjangan dari Not Only SQL. Sesuai kepanjangannya
NoSQL
tidak menggunakan
sintaks
SQL
untuk
memyimpan data. Sebenarnya NoSQL ini dikembangkan
pertama kali pada tahun 1998 oleh Carlo Strozzi. Lalu,
pada tahun 2009, Eric Evans 2 memperkenalkan kembali
teknologi NoSQL. NoSQL ini jauh berbeda dengan
relational database. Penyimpanan data dalam NoSQL tidak
memerlukan skema tabel yang tetap seperti relational
database.
II. TINJAUAN PUSTAKA
A. Facebook
Facebook merupakan jejaring sosial tersukses untuk saat ini.
Jejaring sosial yang dibangun oleh Mark Zuckerberg ini telah
menempatkan Mark sebagai 35 Orang Terkaya (Forbes, 2012)
dan Person of The Year (Times, 2010). Pengguna facebook
sendiri saat ini sudah hampir mencapai 1 miliar pengguna
aktif. Pada bulan Juni 2012, menurut Statista.com pengguna
facebook sendiri telah mencapai angka 955 juta
(Tribunnews.com ,2012).
Facebook memiliki konsep sebagai media jejaring sosial
dimana Pengguna dapat membuat profil diri mereka sendiri
yang dilengkapi foto/video, daftar ketertarikan pribadi,
informasi kontak, dan informasi pribadi lain (tanggal lahir,
tempat tinggal,pendidikan, pekerjaan, hobi, dan bisa
mendeskripsikan tentang diri sendiri). Para pengguna juga
bisa menambah kenalan atau yang biasa kita sebut dengan
teman (fitur friends). Trend penggunaan facebook sebagai
media jejaring sosial tidak jauh-jauh dari mengekspresikan
semua hal yang kita alami, dan membagikannya dengan
pengguna lain (yang disebut friends) melaui fitur update status
dan diketik di dalam kolom yang bertuliskan whats on your
mind yang nantinya akan tampil pada home/timeline.
Facebook juga dilengkapi fitur pesan pribadi (fitur message)
atau umum (disebut dengan wall to wall) dan fitur obrolan
(chating). Mereka juga dapat membuat dan bergabung dengan
grup ketertarikan dan halaman kesukaan (dulu disebut
halaman penggemar hingga 19 April 2010).
B. NoSQL
NoSQL hanyalah penyebutan untuk database yang tidak
relasional. Jika relational database menggunakan SQL,
maka NoSQL menggunakan bermacam-macam cara untuk
penyimpanan datanya. NoSQL memiliki empat metode, yaitu:
2. Table-oriented, contoh: Google dengan Big Table,
Facebook dengan Cassandra
Graph-oriented
Document-oriented database, contoh: MongoDB
dan CouchDB.
Key-value store, contoh: Memcache dan Redis [5].
Metode NoSQL yang pertama adalah table-oriented.
Namun, metode ini hanya dikembangkan dan digunakan
oleh pembuatnya sendiri, contohnya Google dengan Big
Table dan Facebook dengan Cassandra. Performa dari
NoSQL jenis tableoriented ini tidak perlu diragukan lagi.
Hasilnya dapat dilihat dari begitu cepatnya waktu pencarian
pada Google, dan Facebook tetap cepat meskipun diakses
jutaan orang.
Metode NoSQL selanjutnya adalah graph-oriented, yaitu
jenis database NoSQL yang menggunakan struktur graph
dengan node, edge dan properties untuk menyimpan datanya.
Dibandingkan relational database, graph database seringkali
lebih cepat untuk associative data sets dan memetakan data
lebih pada struktur aplikasi berorientasi objek. Graph
database ini sangat cocok untuk graph-like query seperti
mencari shortest path antara dua node dalam graph.
Metode NoSQL yang ketiga adalah Document-oriented
database. Jenis NoSQL ini merupakan database yang
berbasiskan dokumen. Tidak ada tabel, field dan record,
yang ada hanyalah koleksi dan dokumen. Koleksi dapat
disamakan dengan tabel dan 3 dokumen disamakan dengan
field. Berbeda dengan database relasional, pada document
oriented database, dokumen dapat memiliki field yang
berbeda dengan dokumen lain walaupun berada dalam satu
koleksi. Hal ini tidak dapat dilakukan dengan database
relasional dimana sebuah record tidak mungkin memiliki
field yang berbeda dengan record yang berada dalam satu
tabel.
Yang terakhir adalah key-value store. Hampir sama
seperti document-oriented
database,
sama-sama
menggunakan sintaks NoSQL, yang berbeda adalah media
penyimpanannya. Dalam key-value store, data tidak langsung
disimpan dalam disk seperti database pada umumnya. Data
disimpan dalam memori komputer dan sesekali data dalam
memori ditulis ke disk. Penyimpanan data dalam memori
menyebabkan proses query akan lebih cepat, karena tidak
perlu lagi mengambil data dari disk. Hal ini pula yang
membuat key-value
store lebih
unggul dibandingkan
database relasional. Pada aplikasi web yang memiliki
intensitas transaksi data yang tinggi, biasanya akan
menggunakan key-value store untuk penyimpanan datanya
disamping menggunakan database relasional, contohnya
web LiveJournal, Wikipedia, Twitter, Youtube, dan
Wordpress
yang menggunakan Memcached. Kesamaan
lainnya, data yang tersimpan dalam key-value store tidak
harus memiliki field yang sama. Hal ini dikarenakan database
jenis ini menggunakan key yang berisi value untuk
penyimpanan datanya. Isi dari value ini bisa berupa string,
list atau pun tree. Bentuk struktur data list dan tree ini
memungkinkan bagi kita untuk memasukkan data yang
tidak linier dimana suatu record dalam list dapat memiliki
list lagi di dalamnya.
Pada kesempatan kali ini penulis hanya akan membahas
satu metode yaitu metodeTable-Oriented yang di kembangkan
untuk Facebook yaitu Cassandra.
III. PEMBAHASAN
Apache Cassandra adalah sistem manajemen open source
database terdistribusi yang dirancang untuk menangani data
yang sangat bersar di beberapa server, menyediakan
ketersediaan tinggi tanpa single point of failure . Cassandra
menawarkan dukungan yang kuat untuk cluster mencakup
beberapa pusat data ,dengan asynchronous replikasi bertuan
memungkinkan operasi latency rendah untuk semua klien .
Cassandra juga menempatkan nilai tinggi pada kinerja .
University of Toronto peneliti mempelajari sistem NoSQL
menyimpulkan bahwa " Dalam hal skalabilitas , ada
pemenang yang jelas di seluruh percobaan kami . Cassandra
mencapai throughput tertinggi untuk jumlah maksimum node
dalam semua percobaan . "
Model data Cassandra adalah penyimpanan dengan baris
partisi dengan sangat konsiste. Baris tersebut akan disusun
dalam tabel. Komponen pertama dari primary key tabel adalah
partition key, dalam sebuah partisi , baris dikelompokkan oleh
kolom yang tersisa dari kunci, kolom lain dapat diindeks
secara terpisah dari primary key .
Tabel dapat diciptakan, dihapus, dan diubah saat runtime
tanpa menghalangi update dan query.
Cassandra tidak join table atau subquery , kecuali untuk
analisis bets via Hadoop . Sebaliknya , Cassandra menekankan
denormalisasi melalui fitur seperti Collection.
A. Data Model
Setiap baris diidentifikasi oleh kunci unik. Kuncinya adalah
string dan tidak ada batasan pada ukuran .
Sebuah contoh dari Cassandra memiliki satu meja yang
terdiri dari satu atau lebih keluarga kolom seperti yang
didefinisikan oleh pengguna.
Jumlah keluarga kolom dan nama masing-masing di atas
harus diperbaiki pada saat cluster dimulai . Tidak ada batasan
jumlah keluarga kolom namun diharapkan bahwa akan ada
beberapa ini .
Setiap keluarga kolom dapat berisi salah satu dari dua
struktur : supercolumns atau kolom . Kedua hal ini dibuat
secara dinamis dan tidak ada batasan pada jumlah ini yang
dapat disimpan dalam sebuah keluarga kolom .
Kolom merupakan konstruksi yang memiliki nama , nilai
dan cap waktu yang ditentukan pengguna yang terkait dengan
mereka . Jumlah kolom yang dapat terkandung dalam sebuah
keluarga kolom sangat besar . Kolom bisa jumlah variabel per
3. tombol . Misalnya K1 kunci bisa memiliki 1.024 kolom /
super kolom sementara kunci K2 bisa memiliki 64 kolom /
super kolom .
" Supercolumns " adalah konstruksi yang memiliki nama ,
dan jumlah tak terbatas kolom assosciated dengan mereka .
Jumlah " Supercolumns " terkait dengan keluarga kolom bisa
menjadi tak terbatas dan dari sejumlah variabel per tombol .
Mereka menunjukkan karakteristik yang sama seperti kolom .
B. Distribusi , Replikasi dan Fault Toleransi
Data didistribusikan di seluruh node dalam cluster
menggunakan Hashing Konsisten berbasis dan Order
Melestarikan fungsi Hash . Kami menggunakan Order
Melestarikan Hash sehingga kita bisa melakukan berbagai
scan atas data untuk analisis di beberapa titik kemudian .
Keanggotaan Cluster dipertahankan melalui algoritma
keanggotaan gaya Gossip . Kegagalan node dalam cluster
dipantau menggunakan Kegagalan Detector Akrual Style .
Ketersediaan tinggi dicapai dengan menggunakan replikasi
dan kami secara aktif replikasi data di seluruh pusat data .
Karena konsistensi akhirnya adalah mantra dari sistem
membaca mengeksekusi pada replika terdekat dan data
diperbaiki di latar belakang untuk meningkatkan throughput
membaca .
Sistem menunjukkan sifat skalabilitas tambahan yang dapat
dicapai semudah menjatuhkan node dan memiliki mereka
secara otomatis dinyalakan dengan data.
Penyebaran pertama dari sistem Cassandra dalam Facebook
adalah untuk Inbox sistem pencarian . Sistem saat ini
menyimpan TB indeks di sekelompok 600 + core dan 120 +
TB ruang disk . Kinerja sistem telah baik dalam persyaratan
SLA kami dan aplikasi yang lebih dalam pipa untuk
menggunakan sistem Cassandra sebagai mesin penyimpanan
mereka . Sebuah versi beta dari Cassandra telah open source
dan dapat ditemukan di sini . Sistem seperti ini tidak pernah
benar-benar dilakukan . Satu dimulai dengan membangun fitur
inti tertentu yang benar-benar diperlukan , mencapai untuk
mendapatkan hak mereka dan hasil untuk membangun fitur
yang lebih mewah . Kami memiliki fitur inti tertentu yang
perlu dibangun dan telah lebih banyak yang direncanakan di
jalan di depan . Jika ada yang tertarik dalam memecahkan
masalah sistem terdistribusi keras yang mempengaruhi
kehidupan jutaan pengguna kami , jangan ragu untuk
menghubungi kami di Facebook
IV. PENUTUP
Demikian yang dapat kami paparkan mengenai materi yang
menjadi pokok bahasan dalam makalah ini, tentunya masih
banyak kekurangan dan kelemahannya, kerena terbatasnya
pengetahuan dan kurangnya rujukan atau referensi yang ada
hubungannya dengan judul makalah ini.
Penulis banyak berharap para pembaca yang budiman dusi
memberikan kritik dan saran yang membangun kepada penulis
demi sempurnanya makalah ini dan dan penulisan makalah di
kesempatan-kesempatan berikutnya. Semoga makalah ini
berguna bagi penulis pada khususnya juga para pembaca yang
budiman pada umumnya.
REFERENSI
[1]
[2]
[3]
[4]
https://www.facebook.com/note.php?note_id=24413138919
http://en.wikipedia.org/wiki/Apache_Cassandra
http://translate.google.co.id/#en/id/
https://www.academia.edu/2239545/NoSQL_Database_model_untuk_s
ocial_network_dan_web_2.0