NOSQL menurut Wikipedia adalah
sistem menejemen database yang berbeda dari sistem menejemen database
relasional yang klasik dalam beberapa hal. NOSQL mungkin tidak membutuhkan
skema tabel dan umumnya menghindari operasi join dan berkembang secara
horisontal. Akademisi menyebut database seperti ini sebagai structured storage,
istilah yang didalamnya mencakup sistem menejemen database relasional. NOSQL
adalah database generasi terbaru yang mengarahkan kepada database yang tidak berelasi
(non-relational), dapat disebarkan kepada siapapun (open-source) dan berskala
horisontal (horizontal scale).
Johan Oskarsson dari Last.fm
memperkenalkan kembali istilah NOSQL pada awal 2009 ketika ia menyelenggarakan
sebuah acara untuk membahas “Distributed Open Source dan Non-relational
Database”. Nama berusaha untuk label munculnya peningkatan jumlah
non-relasional, didistribusikan menyimpan data, termasuk kloning open source
dari Google Bigtable/MapReduce dan Amazon Dynamo.
Berbeda dengan basis data SQL
dimana meskipun berbeda-beda pembuat namun cara kerja NOSQL maupun cara
penggunaannya relatif sama. Contohnya sama-sama menggunakan tabel yang
dihubungkan oleh relasi-relasi, manipulasi data dengan bahasa SQL dan sb. Basis
data NOSQL bisa sangat berbeda satu sama lain.
Sebagian besar sistem NOSQL pada
masa awal tidak berusaha untuk memberikan atomicity, konsistensi, isolasi dan
daya tahan jaminan, bertentangan dengan praktik yang berlaku di antara sistem
database relasional. Namun di kemudian hari, beberapa database NOSQL dengan
pembaruan terkini sudah mampu mengintegrasikan database yang non-relasional ke
dalam bentuk database relasional sehingga dapat mempermudah pengguna yang masih
belum akrab dengan bahasa standar yang diterapkan NOSQL.
Model Data Relational 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
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. 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.
2.
Document-oriented
Contoh
penerapan model data document-oriented
terdapat dalam CouchDB yang dibangun oleh IBM TM. 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.
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.
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
adalah 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
Bersumber dari
halaman resmi NOSQL (http://nosql-database.org), NOSQL mengelompokkan database
NOSQL ke dalam beberapa kategori, yaitu
1.
Wide Column Store / Column
Families
Contoh :
Accumulo, Casssandra, Clouddata, ConcourseDB, Hadoop /Hbase, Hypertable, kdb+,
dll.
2.
Document Store
Contoh :
CouchDB, Couchbase, Clusterpoint, Elasticserach, Mark-Logic, MongoDB, OrientDB,
dll.
3.
Key Value / Tuple Store
Contoh :
Aerospike, BangDB, BerkeleyDB, Chordless, DynamoDB, GenieDB, LevelDB, Riak,
Redis, Oracle NOSQL Database, Tarantool, dll.
4.
Graph Databases
Contoh :
ArangoDB, OrientDB, Infinite Graph, Neo4J, OpenLink Virtuoso, Stardog, WhiteDB,
dll.
5.
Multimodel Databases
Contoh : Alchemy
DB, ArangoDB, CortexDB, Datomic,FoundationDB, OrientDB, WonderDB, dll.
6.
Object Databases
Contoh : db4o,
GemStone/S, HSS DB, Magma, Objectivity, siaqodb, Star-counter, VelocityDB,
Versant, ZODB.
7.
Grid & Cloud Database
Contoh : Crate
Data, GigaSpaces, GemFire, Hazelcast, Coherence, Queplix, dll.
8.
Solutions XML Databases
Contoh : BaseX,
EMC Documentum xDB, eXist, Qizx,Sedna,
dll.
9.
Multidimensional Databases
Contoh :
Globals, GT.M, Inter-systems Cache, MiniM DB, SciDB, dll.
10.
Multidivalue Databases
Contoh :
Model204 DB, OpenInsight, OpenQM, Reality, U2, dll.
11.
Event Sourcing
Contoh :
Eventstore.
12.
Time Series Databases
Contoh :
Axibase.
Diantara banyak database NOSQL
yang ada berdasarkan riset salah satu website pada Juli 2015 menunjukkan database
NOSQL paling populer saat ini secara berurutan adalah MongoDB, Apache
Cassandra, Redis, Solr, ElasticSearch, HBase, Splunk, memcached, dan Neo4j.
Terdapat tiga
hal besar yang mempengaruhi perkembangan ini yaitu jumlah user yang banyak,
jumlah data yang besar dan cloud computing. Dan dengan 3 hal besar diatas juga
menjadikan sistem database harus mampu bergerak secara :
-
Data harus bisa bergerak secara
flexible,
-
Harus mampu bergerak secara
cepat dengan data dan user yang besar;
-
Peningkatan performa untuk
dapat memuaskan user yang menginginkan pengolahan data yang cepat.
Berikut 7 jenis basis data NoSQL yang paling populer
digunakan diseluruh dunia.
MongoDB merupakan
basis data yang paling populer diantara basis data NoSQL lainnya. Hal ini
dikarenakan pemasangan maupun penggunaan mongoDB tidaklah sulit atau merepotkan
penggunanya. Selain itu mongoDB juga merupakan salah satu basis data
yang open source sehingga pengembangan mongoDB sendiri cukup pesat
karena setiap orang bisa berpartisipasi untuk mengembangkannya.
MongoDB merupakan basis data
NoSQL yang document based. Ia menyimpan data-datanya dalam suatu dokumen
JSON yang disebut BSON (Binary JSON). Dikembangkan sejak tahun 2009, mongoDB
sekarang telah mendukung hampir semua bahasa pemrograman untuk dapat
berinteraksi dengan mongoDB. Tak hanya bahasa pemrograman, beragam framework
terkenal pun sudah dapat menggunakan mongoDB untuk menyimpan datanya sehingga
kita tidak akan kesulitan untuk mengintegrasikan aplikasi yang kita buat dengan
basis data ini.
Apache CouchDB, biasa disebut
dengan CouchDB saja, merupakan basis data NoSQL yang dikembangkan oleh Apache. CouchDB lebih dulu muncul
jauh sebelum mongoDB yaitu pada tahun 2005. CouchDB tidak menyimpan datanya
dalam tabel melainkan dalam dokumen seperti halnya mongoDB.
Basis data ini juga merupakan
proyek open source serta dikembangkan dalam bahasa pemrograman Erlang
oleh karena itu kita bisa ikut berkontribusi dalam pengembangan CouchDB agar
basis data ini lebih baik.
Cassandra merupakan sebuah
sistem penyimpanan data terdistribusi untuk menangani jumlah data yang sangat
besar dan terstruktur. Cassandra juga dikembangkan Apache, pengembang yang sama
untuk basis data CouchDB. Kemampuan Cassandra dalam menyimpan data dengan
jumlah yang sangat besar tidak diragukan lagi, puluhan perusahaan besar telah
mempercayakan Cassandra sebagai salah satu penunjang kerja mereka diantaranya:
Cassandra juga
merupakan aplikasi open source yang ditulis dalam bahasa Java dengan lisensi
Apache License 2.0.
Untuk memproses
datanya, Cassandra menggunakan bahasa sendiri yang mirip dengan SQL yaitu
Cassandra Query Language (CQL).
Lagi-lagi basis data open
source, redis merupakan basis data berbasis key-valuepaling populer
menurut situs DB-Engines.com. Redis
merupakan singkatan dari REmote DIctionary Server. Basis data ini dikembangkan
oleh Salvatore Sanfilippo pada
tahun 2009 dan ditulis dalam bahasa C. Redis banyak dipilih karena memiliki
fitur in-memory, networked, dan durabilitas tinggi.
Redis mendukung banyak bahasa
pemrograman seperti ActionScript, C/C++, C#, Clojure, Common LIsp, Dart,
Erlang, Go, Haskell, Haxe, Io, Java, JavaScript (Node.js), Lua, Objective-C,
Perl, PHP, Pure Data, Python, R, Ruby, Scala, Smalltalk, dan Tcl.
Riak merupakan basis data NoSQL
terdistribusi yang menyimpan datanya dalam bentu key-value. Riak
menawarkan fitur high availability, fault tolerance, operational
simplicaity, dan scalability. Riak memiliki dua versi yakni Open
source edition dan Enterprise edition. Enterprise edition menawarkan dukungan
berbayar intensif dari pengembangnya. Pengguna Open source edition dapat
bermigrasi kapan saja ke Enterprise edition jika dibutuhkan.
Erlang ditulis dalam bahasa
pemrograman Erlang dengan lisensi Apache License 2.0. Rilis pertama Riak muncul
pada tanggal 17 Agustus 2009 (bertepatan dengan 64 tahun Indonesia
merdeka). Basho Technologies merupakan
perusahaan yang mengembangkan Riak.
Neo4j merupakan basis data NoSQL
dengan sistem graf. Apabila berurusan dengan basis data berbasis graf, maka
Neo4j lah yang paling dikenal. Neo4j menyimpan relasi antar objek dalam
struktur seperti graf, dimana setiap objek merujuk ke objek lainnya secara
langsung.
Dalam
menambahkan maupun mengambil data, Neo4j memiliki bahasa sendiri yang disebut
Cypher.
Neo4j ditulis
dalam bahasa Java dengan lisensi GPL V3 oleh Neo Technologiesartinya Neo4j termasuk basis data
yang open source.
OrientDB merupakan basis data
graf terdistribusi generasi kedua. Basis data ini dibuat dalam bahasa Java
oleh Orient
Technologies LTD dan dirilis pertama kali tahun 2010. OrientDB diklaim
sangat cepat dan mampu menyimpan 220.000 record per detik diperangkat standar.
OrientDB menawarkan dua edisi
yakni Community Edition yang tersedia secara gratis dan Enterprise Edition yang
merupakan aplikasi komersial dikembangkan oleh tim yang sama yang mengembangkan
engine OrientDB.
Jika anda pernah
menggunakan mongoDB maupun Neo4j, anda bisa melihat perbedaan diantara OrientDB
vs mongoDB dan OrientDB
vs Neo4j disitus resminya.
OrientDB dapat
digunakan bersama JavaScript, .NET, node.js, php, Scala, Ruby, Python, C,
Clojure, Java, dan Perl.
Kelebihan NoSQL di banding Relasional Database
1.
NoSQL bisa menampung data yang
terstruktur, semi terstruktur dan tidak terstuktur secara efesien dalam skala
besar (big data/cloud).
2.
Menggunakan OOP dalam
pengaksesan atau manipulasi datanya.
3.
NoSQL tidak mengenal schema
tabel yang kaku dengan format data yang kaku. NoSQL sangat cocok untuk data
yang tidak terstruktur, istilah singkat untuk fitur ini adalah Dynamic Schema.
4.
Autosharding, istilah
sederhananya, jika database noSQL di jalankandi cluster server (multiple
server) maka data akan tersebar secara otomatis dan merata keseluruh server.
Kekurangan dari database NoSQL
sendiri, Hostingnya mahal. beberapa layanan di luar negeri mencharge biaya
100-200USD untuk hosting database noSQL. Selain itu, saya belum pernah
menemukan hosting Cpanel yang mendukung database MongoDB atau database noSQL
lainnya.
Selain itu, karena bervariasinya
produk dan format penyimpanan, berpindah antar satu produk database ke produk
noSQL lainnya perlu waktu untuk belajar. Contohnya ketika anda pindah dari
MongoDB ke Cassandra, maka anda harus belajar lagi dari awal, berbeda dengan
database RDMS.
Sumber







Komentar
Posting Komentar