REVIEW IMPLEMENTASI NOSQL DATABASE
LATAR
BELAKANG
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:
1. Table-oriented,
contoh: Google dengan Big Table,
Facebook dengan Cassandra
2. Graph-oriented
3. Document-oriented database,
contoh: MongoDB dan CouchDB.
4. 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.
KONSEP
DASAR NOSQL
Bagian ini akan
menjelaskan fitur yang dimiliki oleh basis data NoSQL terutama dalam hal
distribusi data dan query dalam beberapa server yang sama. Telah banyak produk
basis data NoSQL dengan berbagai keunggulannya masing-masing.
Beberapa diantaranya adalah
CouchDB yang memiliki nilai konkruensi dan RESTfull HTTP request, simpleDB yang
memiliki kesederhanaan dan fleksibilitas dalam pemeliharaannya, dan Google
BigTable yang memiliki kuota yang terbatas.
Eric brewer [2]
menyatakan bahwa NoSQL didasarkan pada teori CAP yaitu pemilihan dua dari tiga
aspek yang ada yang harus dipenuhi oleh basis data yaitu Consistency,
Avaibility, dan Partition-Tolerance.
(1) Consistency Avaibility (CA)
berseberangan dengan Partition-Tolerance dan biasanya berhubungan dengan
replikasi.
(2) Consistency Partition-Tolerance
(CP) berseberangan dengan Avaibility dalam penyimpanan data.
(3) Avaibility Partition-Tolerance
sistem mencapai kondisi eventual consistency melalui replikasi dan verifikasi
yang konsisten dalam node yang telah terbagi-bagi. Dalam basis data NoSQL
penerapan konsep tersebut diterjemahkan dalam empat konsep dasar yaitu
Non-Relational, MapReduce, Schema Free, dan Horizontal Scaling.
3.1
Non-Relational
Konsep Non-Relational
dalam basis data NoSQL meliputi hirarki, graf, dan basis data berorientasi
obyek yang sudah terlebih dahulu ada sejak tahun 1960 sebelum akhirnya basis
data relasional muncul pada tahun 1970 [13]. Penggunaan basis data
non-relational kembali merebak seiring dengan bertambahnya aplikasi berbasis
web yang memerlukan banyak penyimpanan data. Meskipun memiliki kelemahan pada
konsistensi dan redundansi data, namun basis data non-relasional dapat
menyelesaikan beberapa permasalahan terkait dengan avaibility, dan partition tolerance.
Tugas pengecekan konsistensi dan redundansi data diserahkan pada sisi aplikasi,
sedangkan basis data non-relational hanya bertugas memanipulasi penyimpanan
saja.
3.2
MapReduce
MapReduce merupakan model
pemrograman yang diadaptasi dari pemrograman fungsional yang diimplementasikan
untuk mengolah dataset yang sangat besar. Tujuan dari MapReduce adalah
merancang suatu abstraksi baru yang memungkinkan pengguna untuk membuat
antarmuka pemrograman sederhana dan menyembunyikan detail yang rumit dari
pararelisasi, fault-tolerance, distribusi data, dan load balancing dalam
pustaka pemrogramannya. Hasilnya menunjukkan bahwa penerapan MapReduce dapat
menyederhanakan antarmuka pemrograman yang dapat mendukung paralelisasi dan
distribusi komputasi skala besar secara otomatis [14].
Berikut ini merupakan
contoh penggunaan fungsi Map() dan Reduce() yang diambil dari makalah Ricky
Ho[16]. Tujuan dari penggunaan MapReduce dalam kasus ini adalah menghitung
jumlah distinct path diantara orang-orang yang memiliki koneksi dan akan
disarankan ke orang dalam suatu situs pertemanan. Fungsi MapReduce digunakan
untuk mencari 10 orang teratas yang saling terkoneksi.
Untuk fungsi Map(),
sebuah Cartesian Product dikerjakan untuk semua pasangan teman. Kita juga perlu
menghilangkan pasangan yang terkoneksi langsung. Oleh karena itu fungsi Map()
juga harus memunculkan pasangan orang yang terkoneksi langsung. Kita perlu
mengambil key space sedemikian rupa sehingga semua key dengan pasangan yang
sama akan mempunyai pengurangan yang sama. Disisi lain, kita memerlukan
pasangan yang berhubungan langsung sebelum pasangan yang mempunyai pemisah.
Pada Fungsi Reduce()
semua key yang mencapai reducer yang sama akan diurutkan. Jadi pasangan yang
terkoneksi langsung akan ada sebelum pasangan yang tidak terkoneksi. Reducer
hanya perlu untuk mengecek jika pasangan pertama merupakan koneksi langsung dan
jika iya, maka lanjutnya sisanya.
3.3
Schema-Free
NoSQL dan RDBMS mempunyai
perbedaan dalam hal penerapan skema basis data. Dalam basis data relasional,
sebuah tabel didesain dengan peraturan skema yang ketat. NoSQL menyimpan data
dengan aturan yang lebih longgar, artinya tidak seperti basis data yang
berdasarkan SQL tradisional , NoSQL tidak memiliki tabel, kolom, primary dan
foreign key, join, dan relasi.
Dalam pengembangan basis
data relasional, developer/database administrator harus berhati-hati dalam
menentukan bagaimana tabel saling berelasi dan field yang ada didalam setiap
tabel. Karena perubahan skema dalam RDBMS dapat menimbulkan masalah
ketergantungan dan integritas, seperti timbulnya kolom null dan relasi kunci
yang tidak cocok. Hal ini bukan masalah dalam NoSQL karena adanya penerapan
schema-free. Setiap dokumen bertanggung jawab terhadap isinya sendiri,
maksutnya null value dapat dihilangkan dalam beberapa baris, dan field baru
dapat didefinisikan dalam setiap dokumen secara indpenden [17]. Salah satu
produk basis data NoSQL yang menerapkan fitur schema-free adalah Cassandra.
3.4
Horizontal Scaling
Horizontal scaling
memungkinkan basis data dijalankan pada beberapa server untuk meningkatkan
kemampuan perangkat penyimpanan dan meningkatkan efisiensi waktu [19]. Hal ini
memerlukan kemampuan dinamis pemartisian data dalam serangkaian node (seperti
storage hosts) dalam suatu cluster server. Kemampuan untuk meningkatkan
kemampuan dengan menambahkan beberapa komputer sangatlah penting dilakukan
untuk data yang jumlahnya banyak, karena vertical scaling dilakukan dengan
meningkatkan kemampuan spesifikasi single server (misalnya penambahan prosesor,
memori, dan peralatan penyimpanan) terbatas untuk dilakukan dan lebih mahal
[13].
Horizontal scaling
berarti memungkinkan dilakukannya penambahan server dalam satu jaringan dan
user tidak sadar jika ada hardware yang diganti dari sisi server (transparent).
Ada beberapa teknik partisi yang digunakan dalam basis data untuk melakukan
horizontal scaling, salah satunya adalah consistent hashing yang digunakan
dalam Cassandra dan Amazon Dynamo.
Kunci dari menerapkan
consistent hashing adalah membuat suatu lingkaran atau “ring”. Setiap node
dalam sistem yang ditandai dengan random value dalam suatu space yang
merepresentasikan posisi dari ring. Suatu kunci item ditandai dengan sebuah
node untuk memperoleh posisinya pada ring, kemudian berpindah menuju node
selanjutya yang sudah ditandai. Node memerankan peranan penting sebagai
koordinator untuk kunci yang akan digunakan dalam route request. Kemudian,
setiap node menjadi tanggung jawab dari daerah yang ada di ring diantara noder
dan node dalam ring sebelumnya. Pejelasan detail mengenal Dynamo dijelaskan
oleh DeCandia dkk.
PENGELOMPOKAN DATABASES NOSQL
Secara umum, database noSQL dibagi
menurut format penyimpanan dokmentnya . Berikut ini adalah pengelompokan
database noSQL berdasarkan model (penyimpanan) datanya
1. Document
Database contohnya MongoDB, seiap satu object data disimpan dalam satu dokumen.
Dokumen sendiri bisa terdiri dari key-value, dan value sendiri bisa berupa
array atau key-value bertingkat.
2. Graph,
Format penyimpanan data dalam struktur graph. Format ini sering dipakai untuk
data yang saling berhubungan seperti jejaring social. Contoh database noSQL
dengan format ini adalah Neo4J dan FlockDB. FlockDB dipakai oleh twitter.
3. Key
– Value, contoh database jenis ini
adalah Apache Cassandra.
4. Object
Database. Format database yang disimpan dalam object-object, Object disini sama
dengan pengertian object di Pemrograman beroreintasi object, Contoh databasenya
adalah Db4o.
5. Tipe
lainnya adalah tabular, tuple store dan berbagai jenis lain yang tidak terlalu
populer.
MODEL
DATA RELASIONAL NOSQL
NoSQL merupakan basis data non
relasional dengan schema-free yang memunculkan pertanyaan bagaimana NoSQL dapat
melakukan partisi untuk data yang berukuran besar, melakukan query, replikasi
data, dan mendukung adanya konsistensi. Bagian ini berisi penjelasan empat
model data NoSQL, yaitu column-oriented, document-oriented, object-oriented dan
graph-oriented.
4.1 Column-oriented
Penerepan column-oriented
terdapat dalam Casssandra. Cassandra menggunakan distribusi multidimensional
map indexed dengan sebuah key. Baris kunci yang sering digunakan dalam
Cassandra adalah string dengan panjang 16-36 bytes. Setiap kolom digabungkan
menjadi sebuah coloumn families. Wei Kang menerapkan beberapa konsep dalam
penerapan column-oriented. Suatu kolom unit atomic dari informasi didukung oleh
Cassandra yang diekspresikan dengan nama value.
Super-column merupakan
gabungan dari kolom dengan nama yang umum dan digunakan untuk pemodelan tipe
data yang komplek. Baris secara unik mengidentifikasikan data yang terdapat
dalam column dan super-column. Dalam Cassandra baris dapat dikenali dengan
sebuah kunci. Column Family merupakan bagian dari suatu unit abstraksi yang
berisi baris kunci yang tergabung dalam column dan super column yang memiliki
struktur data yang tinggi. Keyspace merupakan level teritnggi dari unit
informasi yang terdapat dalam Cassandra.
Kumpulan column families
sebenarnya merupakan subordinat dari satu keyspace. Pada intinya model data
column-oriented memungkinkan suatu aplikasi secara bebas untuk mengembangkan
bagaimana informasi disusun berdasarkan suatu desain schema.
4.2 Document-oriented
Contoh penerapan model
data document-oriented terdapat dalam CouchDB yang dibangun oleh IBMTM. Basis
data yang memiliki model data document-oriented sangat bermanfaat untuk suatu
domain yang bentuk masukannya dokumen yang tidak terstruktur seperti web pages,
wikis, discussion forums, dan blogs. Data tersimpan dalam basis data CouchDB
yang mencakup serangkaian dokumentasi yang berisi beberapa atribut dan nilai
dengan masing-masing id yang unik dan metadata. CouchDB tidak pernah melakukan
overwrite document, melainkan menambahkan dokumen baru ke basis data bila
diperlukan seperti ketika terjadi proses update.
4.3 Object-oriented
Basis data berorientasi
objek adalah model basis data dimana informasi direpresentasikan dalam bentuk
objek yang digunakan dalam pemrograman berorientasi obyek. OrientDB adalah
contoh dari basis data object-oriented. Dokumen OrientDB yang ada dalam suatu
cluster, dapat berupa fisik, logis atau in-memory, yang digunakan untuk
menyimpan link ke dalam data. Cluster adalah cara yang sangat umum untuk
mengelompokkan record, hal ini merupakan suatu konsep yang tidak ada dalam
basis data relasional. Cara ini dapat mengelompokkan semua record pada jenis
tertentu, atau dengan nilai-nilai tertentu. OrientDB menggunakan segmen data
untuk menyimpan isi record. Segmen data mirip dengan file physical cluster yang
menggunakan dua atau lebih file, yaitu satu atau beberapa file dengan ekstensi
"oda" (Orient Data) dan hanya satu file dengan ekstensi
"odh" (Orient data Holes).
4.4 Graph-oriented
Basis data grafik (GraphDB) adalah
basis data yang menggunakan struktur grafik yang berisi node, edge, dan
properti untuk mewakili dan menyimpan informasi. GraphDB diperlukan untuk data
grafik yang berskala besar, terutama yang dipergunakan oleh para peneliti
biologi jaringan dan situs jaringan sosial, seperti Facebook, dan Twitter.
GraphDB memetakan secara langsung objek ke aplikasi dan lebih intuitif untuk
menggambarkan data set asosiatif.
Beberapa keuntungan dari GraphDB:
-Intuitive, dimengerti oleh pikiran
manusia, yaitu menggambarkan entitas dan hubungan sebagai grafik masalah umum
yang akrab dengan manusia;
-Elemental untuk ilmu komputer, yaitu
grafik, terutama grafik pohon (seperti binary-tree, B+ tree, red-black tree)
berfungsi sebagai struktur data dasar dalam ilmu komputer dan berbagai masalah
(shortest path dan max-flow) dapat diubah dan diselesaikan dengan algoritma
grafik;
-Ubiquitous, yaitu pemodelan ER ke
model jejaring sosial selalu dikelilingi oleh grafik baik di komputer ataupun
dalam kenyataan.
Keunggulan lain dalam GraphDB adalah
biasanya lintasan grafik digunakan sebagai pengganti operasi join yang
berpengaruh dalam efisiensi query. GraphDB juga tergantung pada kurangnya
schema yang kaku di mana suatu schema dapat selalu diubah dengan mudah pada
grafik, karena struktur grafik sendiri cukup fleksibel untuk mewakili perubahan
melalui edit edge dan properti. GraphDB juga dapat mendukung semua fitur basis
data yang kuat.
KESIMPULAN
NoSQL adalah sistem manajemen
database non-relasional, pengambilan informasi yang cepat dari database dan
portabel . NoSQL pada dasarnya berasal dari sistem database RDB . Database
ini biasanya berinteraksi dengan sistem
operasi UNIX . Database NoSQL database adalah mereka yang non - relasional
,open source , didistribusikan di dunia,
serta memiliki kinerja tinggi dengan cara linear yang terukur .
NoSQL merupakan paradigma baru
dalam Sistem Manajemen Basis Data yang memiliki keunggulan dalam hal
scalability dan kecepatan dalam pencarian data. Terdapat beberapa teknik
pengelolaan data pada NoSQL, document-oriented, columnoriented, graph-oriented,
dan object-oriented. MongoDB merupakan salah satu DBMS yang menggunakan teknik
pengelolaan data document-oriented. MongoDB tidak menggunakan skema, tabel, dan
atribut dalam pengorganisasian basis data, melainkan koleksi, dokumen, dan key-value.
Karakteristik NoSQL adalah NoSQL
tidak menggunakan model data relasional dengan demikian tidak menggunakan
bahasa SQL . NoSQL menggunakan volume data yang besar . Dalam lingkungan
terdistribusi (data menyebar ke mesin yang berbeda ) , kita menggunakan NoSQL
tanpa ketidaksesuaian . Jika ada
kesalahan atau kegagalan ada di setiap mesin , maka dalam hal ini tidak akan
ada penghentian pekerjaan . NoSQL adalah database open source, yaitu kode
sumbernya tersedia untuk semua orang dan bebas menggunakannya tanpa overhead .
Memungkinkan data NoSQL untuk menyimpan dalam catatan yang tidak memiliki
apapun skema tetap. NoSQL tidak menggunakan konsep ACID properti . NoSQL adalah horizontal scalable menyebabkan
kinerja tinggi dalam cara linear . Hal ini memiliki struktur yang lebih
fleksibel.
REFERENSI
REFERENSI
Komentar
Posting Komentar