Pengertian 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 databaseseperti
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 databaserelasional.
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.
Pengelompokan
database noSQL
Secara umum, database noSQL dibagi menurut format
penyimpanan dokmentnya . Berikut ini adalah pengelompokan database noSQL
berdasarkan model (penyimpanan) datanya
·
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.
·
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.
·
Key – Value,
contoh database jenis ini adalah Apache Cassandra.
·
Object
Database. Format database yang disimpan dalam object-object, Object disini sama
dengan pengertian object di Pemrograman beroreintasi object, Contoh databasenya
adalah Db4o.
·
Tipe lainnya
adalah tabular, tuple store dan berbagai jenis lain yang tidak terlalu populer.
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
:
1. Data
harus bisa bergerak secara flexible,
2. Harus
mampu bergerak secara cepat dengan data dan user yang besar;
3. Dan
yang terakhir peningkatan performa untuk dapat memuaskan user yang menginginkan
pengolahan data yang cepat.
Perbedaan
SQL dengan NoSQL
1)
Karena basisdata
SQL bersifat relasional, dari sinilah asal nama sistem manajemen basisdata
relasional (RDBMS), basisdata NoSQL adalah non-relasional atau terdistribusi.
Basisdata SQL berbasis tabel sedangkan basisdata NoSQL
berbasis dokumen, basisdata grafik, penyimpanan kolom lebar,
atau pasangan kunci-nilai. Bahasa query terstruktur adalah asal SQL
(Structured Query Language) mendapatkan namanya. Dalam NoSQL DB, fokus untuk
permintaan berada pada koleksi dokumen. Hal ini kadang-kadang disebut
Unstructured Query Language (UnQL). Sintaks UnQL bervariasi dari satu
basisdata ke basisdata yang lain.
2)
Dalam
basisdata SQL data dalam bentuk tabel yang terdiri dari sejumlah baris,
sedangkan data dalam NoSQL tidak memiliki definisi skema standar yang harus
dipatuhi. Basisdata NoSQL memiliki skema yang dinamis sementara
basisdata SQL terdiri dari skema yang telah ditetapkan.
3)
Basisdata
NoSQL adalah horizontal terukur sementara SQL DB vertikal terukur. Untuk
memperbesar skala NoSQL DB, tambahkan server DB di cluster untuk load
balancing. Untuk memperbesar skala SQL DB, tambahkan tenaga dari CPU, SSD,
RAM dan perangkat keras lainnya pada server. Ini berarti NoSQL adalah pilihan
terbaik jika skalabilitas adalah pertimbangan utama.
4)
SQL
memungkinkan untuk interaksi karena merupakan bahasa query deklaratif. Setelah
anda menyatakan apa yang anda inginkan misalnya untuk menampilkan, DB
mengekstrak hasil setelah membangun algoritma secara internal. Dengan
NoSQL, MapReduce, menjadi teknik permintaan prosedural, mengharuskan bahwa anda
tidak hanya tahu apa yang anda inginkan, tetapi anda menyatakan persis
bagaimana untuk menghasilkan jawabannya. Peningkatan interaksi dengan data
memungkinkan untuk wawasan baru yang akan membantu pengembangan produk.
5)
SQL telah
digunakan beberapa waktu dan ini menjelaskan mengapa menggunakan standar.
Meskipun beberapa vendor memperkenalkan dialek untuk antarmuka mereka, intinya
telah distandarkan dan spesifikasi tambahan seperti JDBC dan ODBC menyediakan
antarmuka SQL yang stabil dan tersedia secara luas. Hal ini memungkinkan
sebuah ekosistem operator dan alat manajemen untuk membantu dalam
merancang, memantau, memeriksa, mengeksplorasi, dan membangun aplikasi pada
sistem SQL. Ini berarti programmer SQL dan pengguna dapat menggunakan kembali
pengetahuan UI dan API di sistem backend yang berbeda, sehingga mengurangi
waktu pengembangan aplikasi. Standarisasi juga penting karena memungkinkan
alat deklaratif ETL (Extract, Transform, Load) pihak ketiga. Alat-alat ini
memungkinkan anda untuk mengalirkan data di sistem dan antar basisdata.
6)
Basisdata SQL
lebih cocok untuk lingkungan permintaan-intensif kompleks. Hal ini karena NoSQL
tidak memiliki antarmuka standar untuk melakukan query kompleks pada tingkat
tinggi dan query pada NoSQL tidak sebaik query SQL.
7)
Basisdata
NoSQL lebih cocok untuk penyimpanan data hirarkis. Hal ini karena NoSQL
mengikuti metode penyimpanan pasangan kunci-nilai yang mirip dengan JSON data.
Hal ini membuat NoSQL pilihan terbaik untuk data besar sejak saat ini,
kebanyakan vendor SQL telah menambahkan dukungan tipe-JSON serta dukungan
dokumen XML.
8)
Meskipun
dimungkinkan untuk menggunakan NoSQL untuk transaksi biasa, SQL adalah pilihan
terbaik untuk aplikasi tugas berat tipe-transaksional. Hal ini karena NoSQL
tidak cukup stabil ketika sarat dengan aplikasi transaksional yang kompleks dan
lalu lintas tinggi. SQL adalah cocok karena database-nya stabil dan menjanjikan
integritas dan atomicity data. Hal ini terutama karena NoSQL belum
dikembangkan selama SQL.
9)
Anda akan
mendapatkan dukungan yang lebih baik dengan basisdata SQL, terutama karena
SQL DB telah dikembangkan lebih lama. Ketika anda menyewa sebuah tim ahli
DBA jarak jauh, kemungkinan bahwa sebagian besar DBA memiliki pelatihan di SQL
DB. Namun, semakin banyak tim DBA jarak jauh saat ini memiliki pengalaman
dengan NoSQL karena peningkatan permintaan. SQL DBs juga lebih dapat diandalkan
karena mereka telah dicoba dan diuji selama beberapa tahun.
10) Dengan SQL DB, penekanan pada sifat
Atomicity, Consistency, Isolation and Durability (ACID) sifat. Di sisi lain,
NoSQL DBs mengikuti teorema Consistency, Availability and Partition (CAP)
Brewers.
11) Basisdata SQL
bisa bersumber tertutup dari vendor komersial atau bersumber
terbuka sedangkan NoSQLs bersumber terbuka. Ini berarti NoSQL adalah
pilihan yang lebih baik jika Anda ingin menghemat uang.
Contoh
populer dari basisdata SQL adalah Oracle, MySQL, MS-SQL, Sqlite, dan
Postgres sementara contoh populer dari NoSQL adalah MongoDB, HBase, Redis,
Bigtable, RavenDb, CouchDB, Cassandra, dan Neo4j.
Kelebihan
NoSQL di banding Relasional Database
Kelebihan NoSQL
- NoSQL bisa menampung data yang terstruktur, semi terstruktur dan tidak
terstuktur secara efesien dalam skala besar (big data/cloud).
- Menggunakan OOP dalam pengaksesan atau manipulasi datanya.
- 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.
- Autosharding, istilah sederhananya, jika database noSQL di jalankandi
cluster server (multiple server) maka data akan tersebar secara otomatis
dan merata keseluruh server.
Kekurangan NoSQL
- Hostingnya mahal. beberapa layanan di luar negeri mencharge biaya
100-200USD untuk hosting database noSQL.
- Sulitnya mencari hosting Cpanel yang mendukung database MongoDB atau
database noSQL lainnya.
- 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.
Software
Dalam NoSQL
Beberapa
database NoSQL:
- MongoDB
MongoDB merupakan database open source berbasis
dokumen (Document-Oriented Database) yang awalnya dibuat dengan bahasa C++.
- Cassandra Apache
Cassandra Dikembangkan oleh APACHE. Aplikasi Inilah
yang digunakan facebook untuk penyimpanan miliayaran data hingga saat ini.
- CouchDB
CouchDB juga dikembangkan oleh APACHE. CouchDB adalah
database yang benar-benar merangkul web. Menyimpan data Anda dengan dokumen
JSON.
- Dan sebagainya.
Sumber :