NoSQL Database
NoSQL Database
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
makasih banyak min
BalasHapussolder uap 4in1