Wednesday, June 26, 2019

Pengenalan NoSQL Database: JSON


I.            Pendahuluan

NoSQL database (singkatan dari Not Only SQL) adalah tipe database yang sangat jauh berbeda dengan konsep – konsep yang kita kenal seperti RDBMS maupun ODBMS. Perbedaan utamanya sendiri, karena pada NoSQL kita tidak mengenal istilah relation dan tidak menggunakan konsep schema (schema-less), yang berarti pada NoSQL masing – masing tabel berdiri sendiri tanpa tergantung pada tabel lainnya atau bisa dibilang independen. Dalam  konsep ODBMS dan RDBMS dimana harus memiliki struktur tabel, seperti tipe data, panjang ukuran data, dan lainnya yang harus selalu didefinisikan terlebih dahulu sebelum dilakukannya penyimpanan data, sangat berbeda  dengan konsep NoSQL. Dalam konsep NoSQL, data bisa disimpan tanpa perlu mendefinisikan tipe data dan ukurannya terlebih  dahulu. Hal ini menyebabkan data menjadi lebih fleksibel bila programmer ingin melakukan perubahan di masa mendatang pada source code. Kurang lebih sudah 2 dekade bahasa SQL digunakan oleh para developer, transaksi data setiap hari semakin bertambah dan para developer merasakan adanya kekurangan pada bahasa SQL. Salah satunya adalah pada saat proses data diminta, SQL memerlukan memori yang besar. Jika database kita kecil hal tersebut tidak masalah, namun jika database kita besar itu akan mengurangi kinerja dari database kita. Dari latar belakang kondisi tersebut banyak developer mulai mencari cara untuk mengatasinya, dan pada tahun 2000 muncul sebuah gerakan yang disebut “noSQL Movement” yang diprakasai oleh Johan Oskarsson. Pergerakkan ini menghasilkan sebuah mekanisme dimana untuk mengambil data tidak lagi menggunakan bahasa SQL. NoSQL bukan merupakan bahasa, NoSQL adalah sebuah mekanisme untuk menyimpan data dan mengambil data yang dilakukan oleh database kita. NoQSL tidak membutuhkan data model relational dan bahasa SQL untuk melakukan hal tersebut. NoSQL menggunakan metadata pada database kita dan memanfaatkan index dari data tersebut.

II.         Contoh Jenis – Jenis Aplikasi Database NoSQL

a.    MongoDB, merupakan database yang paling populer diantara database NoSQL lainnya. Hal ini dikarenakan pemasangan maupun penggunaan mongoDB tidaklah sulit bagi 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 database NoSQL yang document based, yang artinya mongoDB menyimpan data – datanya dalam suatu dokumen JSON yang disebut BSON (Binary JSON).
b.    CouchDB, merupakan database 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.
c.    Cassandra adalah sebuah sistem penyimpanan data terdistribusi untuk menangani jumlah data yang sangat besar dan terstruktur. Cassandra juga dikembangkan oleh Apache. 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).
d.    Redis adalah database open source dan merupakan database berbasis key-value paling populer menurut situs DB-Engines.com. Redis merupakan singkatan dari REmote DIctionary Server. Database 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.
e.    Riak merupakan database NoSQL terdistribusi yang menyimpan datanya dalam bentuk 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. Riak pertama kali dirilis pada tanggal 17 Agustus 2009. Basho Technologies merupakan perusahaan yang mengembangkan Riak.

Pada kesempatan kali ini penulis akan membahas topik mengenai “Pengenalan NoSQL Database: JSON”, khususnya mengenai JSON yang merupakan bagian terpenting dari NoSQL database.

III.      Karakteristik NoSQL

Berikut adalah beberapa karakterisitik – karakteristik penting yang dimiliki oleh NoSQL database, antara lain :
a.    Schema-free atau bebas skema dan menjadi lebih dinamis,
b.    Easy replication support,
c.    Simple API,
d.    Terdistribusi,
e.    Scalable secara horizontal.

IV.         Perbandingan antara SQL dengan NoSQL

Berikut adalah table perbandingan antara SQL dengan NoSQL :

SQL (Structure Query Language)
NoSQL (Not Only SQL)
·         Wajib relational dalam menyusun data
·         Setiap table harus di definisikan
·         Standar pada suatu table 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 table, karena menggunakan model graph dan key-value
·         Sifat NoSQL adalah database horizontal yang semakin melebar ke samping untuk 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.


V.            Apa itu JSON.

JSON atau JavaScript Object Notation berdasarkan wikipedia adalah sebuah file format standar yang menggunakan tulisan yang dapat di baca oleh manusia dan mesin untuk melakukan pertukaran data, yang  di dalamnya berisi pasangan antara key dan value. Berikut adalah penjelasan yang lebih rinci mengenai JSON :

·         Format pertukaran data tekstual yang sangat ringan.
·         Sintaksnya sangat sederhana dan jelas untuk dibaca.
·         Dapat dikenali dan digunakan pada beragam bahasa pemrograman.
·         Tiap bahasa pemrograman memiliki cara tersendiri untuk berinteraksi dengan JSON.
·         Dibuat berdasarkan format Object pada javascript.
·         Digunakan juga untuk file konfigurasi walaupun tidak disarankan karena JSON tidak support untuk komentar / dokumentasi, sedangkan file konfigurasi butuh komentar atau dokumentasi.
·         JSON tidak memiliki method.
·         Tipe file JSON memiliki ekstensi .json
·         Format JSON dibuat dan diusulkan oleh Douglas Crockford.

VI.         Penulisan JSON

Penulisan pada JSON sendiri sangat sederhana dan lebih mudah untuk di pahami karena cara penulisannya adalah seperti berikut, { “key” : “value” } dimana key selalu dibungkus menggunakan kutip dua (“ ”) dan valuenya bisa beragam. Isi dari value nya dapat berisi seperti berikut :

a)    Boolean - true / false
b)   Array – [“value1”, “value2”, …) dapat berisi string, int, bahkan object lagi.
c)    String – teks / Unicode, dibungkus menggunakan kutip dua (“ “)
d)   Object – { “key” : “value” }
e)   Number – integer / float
f)    Null – null

Berikut adalah contoh sederhana dari penulisan JSON yang telah saya lakukan.



Dan hasilnya seperti pada gambar dibawah ini :


Dari 2 buah gambar diatas, kita dapat mengetahui bahwa penulisan dari JSON ini lebih mudah dibuat dan dibaca serta lebih sederhana karena hanya bermodalkan key dan value tadi.

VII.      Bekerja dengan JSON

Pada bahasa pemrograman PHP terdapat 2 buah method yaitu json_encode() dan json_decode(). json_encode() untuk mengubah array atau object yang ada menjadi json agar dapat diakses pengguna lain, sedangkan json_decode(), pengguna mengambil file json lalu diubah menjadi array agar lebih  mudah di manipulasi. Untuk mengakses file json dari tempat lain kita dapat menggunakan function file_get_contents().

Berikut adalah contoh penulisannya :

json_encode()
·         Mengubah array associative menjadi JSON




json_decode() & file_get_contents()
·         Membaca file json, lalu mengubahnya menjadi array associative








Sumber

No comments:

Post a Comment

Mengenal Permainan dan Hiburan di Komputer

Dalam perkembangan teknologi, komputer telah menjadi platform utama untuk berbagai jenis hiburan dan permainan. Seiring dengan kemajuan hard...