LATAR
BELAKANG
NoSQL (singkatan dari Not Only SQL) merupakan
tipe database yang sangat jauh berbeda dengan konsep RDBMS ataupun ODBMS.
Perbedaan utamanya sendiri yaitu karena pada NoSQL tidak mengenal istilah
relation dan tidak menggunakan konsep schema (schema-less), yang berarti pada
NoSQL masingmasing tabel berdiri sendiri tanpa tergantung pada tabel lainnya
alias independen. Dalam konsep ODBMS dan RDBMS, struktur tabel, seperti tipe
data dan ukurannya, harus selalu didefinisikan terlebih dahulu sebelum
penyimpanan data, berbeda dengan konsep NoSQL. Dalam konsep NoSQL, data bisa
disimpan tanpa perlu mendefinisikan tipe data dan ukurannya terlebih dahulu.
Hal ini menyebabkan data menjadi lebih fleksibel bila ada perubahan di masa
mendatang. (thePinkFighter, 2011) Inilah kelebihan NoSQL yang disebut dengan
high scalability, tidak hanya secara vertikal namun juga horisontal.
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.
SUMBER