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





Komentar

Posting Komentar

Postingan populer dari blog ini

DISKRIMINASI DAN ETNOSENTRISME

KOMPUTASI