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




Komentar

Postingan populer dari blog ini

Kerak Telor, Makanan Khas Betawi