Sabtu, 24 Februari 2018

SQL dan NOSQL (Pengertian dan Pembahasan)

Februari 24, 2018 // by M Faqih Dulqarnain // No comments

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:




0 komentar:

Posting Komentar