Assalamu’alaikum Wr.Wb...
Selamat datang kembali pada blog saya, para pembaca sekalian. Pada postingan
kali ini, saya akan memberikan informasi lain, namun masih berkaitan sekali
dengan postingan sebelumnya tentang Basis Data. Jika pada postingan sebelumnya
saya membahas seputar pengertian dan pembahasan tentang apa itu basis data,
kali ini saya akan lebih spesifik (bisa dikatakan) jenis dari bahasa basis
data.
SQL dan NoSQL
Di dunia programmer, untuk basis
data kita akan lebih sering menggunakan model SQL atau yang merupakan singkatan
dari (Structure Query Language). SQL
sendiri adalah sekumpulan perintah khusus yang digunakan untuk mengakses data
dalam database yang relational. SQL merupakan bahasa komputer yang mengikuti
standar (American National Standart
Institute) atau ANSI untuk memanajemen database realtional. Dengan SQL kita
dapat melakukan akses, melihat data, mengambil data, menambah, mengubah dan menghapus
data dari database yang sudah dibuat.
Terdapat 3 (tiga) jenis perintah SQL, yaitu DDL, DML dan DCL.
- DDL atau Data Definition Language. DDL merupakan perintah SQL yang berhubungan dengan pendefinisian suatu struktur database, dalam hal ini database dan table. Perintah SQL yang termasuk dalam DDL antara lain : CREATE, ALTER, RENAME, DROP.
- DML atau Data Manipulation Language. DML merupakan perintah SQL yang berhubungan dengan manipulasi atau pengolahan data atau record dalam table. Perintah SQL yang termasuk dalam DML antara lain : SELECT, INSERT, UPDATE, DELETE.
- DCL atau Data Control Language. DCL merupakan perintah SQL yang berhubungan dengan pengaturan hak akses user, baik terhadap server, database, table maupun field. Perintah SQL yang termasuk dalam DCL antara lain : GRANT, REVOKE.
SQL adalah bahasa dalam basis data yang hampir selalu kita gunakan. Namun,
ada lawan dari SQL yang agak jarang kita kenal dalam merancang basis data. Bahkan
mungkin bisa saya katakan referensi tentang lawan dari SQL ini, masih belum
banyak beredar. Lawan tersebut adalah NoSQL (Not Only SQL).
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 horizontal. Akademisi menyebut database seperti ini sebagai
structured storage, istilah yang di dalamnya 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 horizontal (horizontal scale).
NoSQL sangat berguna pada data-data yang terus-menerus berkembang,
dimana data tersebut sangat kompleks
sehingga sebuah database relational tidak lagi bisa mengakomodir. Salah satu
bentuknya adalah ketika suatu data saling berhubungan satu sama lain, maka akan
muncul proses duplikasi data. Dimana data saling memanggil ke beberapa
permintaan, tambahan data baru, perubahan data, dan lain-lain dengan key yang
sama. Karena faktor hubungan antar data yang sama terjadi terus-menerus,
mendorong faktor redudansi data, data menjadi berlipat-lipat, dan pada akhirnya
akan menyebabkan crash pada database berkonsep RDBMS (Relational Database Manajement System).
Harus ada cara lain untuk menanggulangi masalah ini, dan NoSQL lah solusinya. NoSQL
menyederhanakan proses yang terjadi dalam sistem basis data relasional. Dimana
hal-hal yang menyebabkan redudansi, dihilangkan sehingga trafik server akan
seimbang. Penyederhanaan proses ini memungkinkan data direplikasi di banyak
server secara mudah dan menjamin ketersediaan data.
Contoh nyata dari pengguna NoSQL adalah situs jejaring sosial facebook.com.
Facebook menggunakan database NoSQL untuk menanggulangi kedinamisan data yang
terus berkembang semakin besar. Tidak akan bisa server SQL biasa menangani data
seluruh facebook secara relational, NoSQL yang digunakan facebook dapat
mengakomodir dinamisnya data yang berkembang menjadi tetap mudah di akses dan
ringan dijalankan walau digunakan oleh sekian banyak orang.
Konsep Penyimpanan NoSQL
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.
Dilihat dari cara penyimpanan data saja basis data NOSQL tersebar dari cara
penyimpanan :
- Key-value based (disimpan dalam bentuk kunci-isi berpasangan)
- Document based (disimpan dalam bentuk dokumen-dokumen)
- Column based (disimpan dalam bentuk kolom-kolom)
- Graph based (disimpan dalam bentuk grafik atau diagram)
Perbedaan SQL dan NoSQL
Berikut adalah gambaran perbedaan lingkup kerja antara NoSQL dan SQL dalam dunia database.
Dari gambar yang telah diperlihatkan sebelumnya, secara garis besar perbedaan antara SQL dengan NoSQL adalah sebagai berikut:
SQL (Structure Query Language)
|
NoSQL (Not Only SQL)
|
· Wajib relational dalam menyusun data
· Setiap tabel harus didefinisikan
· Standar pada suatu tabel jelas dan terstruktur
· Sifat SQL adalah database yang cenderung vertikal (atas ke bawah)
· Untuk memperbesar skala, harus menambah daya CPU, SSD, RAM dan perangkat keras lainnya pada 1 server
|
· Tidak memerlukan kriteria relational dalam menyusun data
· Tidak perlu mendefinisikan tabel, bahkan untuk beberapa NoSQL, tidak memerlukan tabel yang jelas (model graph dan Key-value)
· Tidak ada standar yang harus diikuti untuk menyusun data pada tabel bahkan data yang tersusun bisa secara dinamis berkembang tanpa perlu penyusunan standar tabel
· Sifat NoSQL adalah database horizontal yang semakin melebar ke samping utnuk mengikuti perkembangan data pada jenis yang sama namun terdapat penambahan pada data lain yang tidak dapat dibedakan dengan data sebelumnya
· Untuk memperbesar skala, hanya perlu penambahan server DB yang di cluster untuk load balancing
|
Contoh Jenis-jenis Aplikasi Database NoSQL
Secara singkat, berikut ini juga akan saya sampaikan beberapa database
NoSQL yang populer digunakan di dunia.
- MongoDB
MongoDB merupakan basis data yang paling populer
diantara basis data NoSQL lainnya untuk saat ini. 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.
- CouchDB
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
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: Facebook, Digg, IBM, Reddit, Rackspace,
Apple, Twitter dan beberapa lainnya.
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).
- Redis
Redis adalah basis data open source dan merupakan
basis data berbasis key-value paling 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
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.
Rilis pertama Riak muncul pada tanggal 17 Agustus
2009. Basho Technologies merupakan
perusahaan yang mengembangkan Riak.
- Neo4j
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 Technologies artinya
Neo4j termasuk basis data yang open source.
- OrientDB
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.
Penutup
Masih banyak contoh lainnya database NoSQL yang populer digunakan, namun
saya rasa yang telah saya jabarkan adalah database NoSQL yang lebih populer
dari yang lainnya. Sumber-sumber untuk referensi database NoSQl ini, memang
tidak sebanyak database SQL, namun jika menurut pendapat saya, untuk
mempelajarinya tidaklah sulit.
Gunakanlah ketelitian dan kecermatan anda dalam memilih akan menggunakan
database apa untuk project anda. Semua project memang bisa menggunakan database
SQL. Namun, tidak semua project juga dapat dikerjakan secara SQL utuh. NoSQL
adalah alternatif pilihan ketika data yang dibangun, adalah data besar dengan
tingkat kompleksitas rumit dan mudah berkembang kapan saja.
Demikian postingan kali ini. Semoga memberikan manfaat yang cukup bagi
pembaca sekalian. Pada postingan berikutnya nanti saya masih akan berencana
untuk menjelaskan 1 contoh aplikasi database NoSQL yang menurut pemahaman saya,
cukup mudah digunakan secara lebih detail... Yaaa hitung-hitung menambah
referensi penggunaan salah satu contoh database NoSQL...
Jadi silahkan ikuti terus blog ini.
Semoga ilmu yang diberikan, bermanfaat. Kurang lebihnya mohon dimaafkan...
Dan Terima kasih sudah membaca di blog ini.
Wassalamu’alaikum Wr.Wb...
Segala sumber yang didapat pada postingan kali ini adalah sebagai berikut:
Destwentyo Putra http://destwentyo.blogspot.co.id/2013/03/pengertian-sql.html
Rifqi Imaduddin http://irfandudin.blog.uns.ac.id/2015/12/19/nosql-database/