Jumat, 18 November 2016

KONSEP CLOUD COMPUTING PERTEMUAN KE-6

NoSQL dan RDBMS


NoSQL (Not Only SQL)
NoSQL adalah sebuah konsep mengenai penyimpanan data non-relasional. Berbeda dengan model basis data relasional yang selama ini digunakan, NoSQL menggunakan beberapa metode yang berbeda-beda ( Wikipedia ). Metode ini bergantung dari jenis database yang digunakan. Karena NoSQL sendiri merupakan konsep database, dan pada implementasinya, banyak jenis-jenis dari NoSQL ini.

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.
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 penjelasan diatas bisa teman-teman lihat pada situs jejaring sosial, FACEBOOK.COM. Pernahkah berfikir sebesar apa server penyimpanan facebook dengan anggota ribuan orang tersebut ?. Apabila teman-teman alim, mungkin tidak jadi masalah, tapi bagaimana jika ada yang narsis lalu sering upload foto setiap hari ?, bagaimana kalau setengah dari member facebook adalah orang-orang yang narsis ?, berapa besar ukuran yang dibutuhkan facebook pada servernya ?

RDBMS(Relational Database Management System)

Sebuah sistem manajemen basisdata relasional atau dalam bahasa Inggrisnya dikenal sebagai relational database management system (RDBMS) adalah sebuah program komputer (atau secara lebih tipikal adalah seperangkat program komputer) yang didisain untuk mengatur/memanajemen sebuah basisdata sebagai sekumpulan data yang disimpan secara terstruktur, dan melakukan operasi-operasi atas data atas permintaan penggunanya.

Contoh penggunaan DBMS ada banyak sekali dan dalam berbagai bidang kerja, misalnya akuntansi, manajemen sumber daya manusia, dan lain sebagainya. Meskipun pada awalnya DBMS hanya dimiliki oleh perusahaan-perusahaan berskala besar yang memiliki perangkat komputer yang sesuai dengan spesifikasi standar yang dibutuhkan (pada saat itu standar yang diminta dapat dikatakan sangat tinggi) untuk mendukung jumlah data yang besar, saat ini implementasinya sudah sangat banyak dan adaptatif dengan kebutuhan spesifikasi data yang rasional sehinggal dapat dimiliki dan diimplementasikan oleh segala kalangan sebagai bagian dari investasi perusahaan.
Tiga prinsip dalam RDBMS :

Data definition
Mendefinisikan jenis data yang akan dibuat (dapat berupa angka atau huruf), cara relasi data, validasi data dan lainnya.
Data Manipulation
Data yang telah dibuat dan didefinisikan tersebut akan dilakukan beberapa pengerjaan, seperti menyaring data, melakukan proses query, dsb.
Data Control
Bagian ini berkenaan dengan cara mengendalikan data, seperti siapa saja yang bisa melihat isi data, bagaimana data bisa digunakan oleh banyak user, dsb.
                                                    
    Implementasi NoSql (CRUD)
Alasan penggunaan model basis data NOSQL didasari oleh berbagai kebutuhan akan beberapa hal yaitu :
  1. Data Store (Penyimpanan Data) : Dimana data disimpan dalam ukuran dalam ukuran Exabyte. Sebuah Exabyte sama dengan satu milyar Gigabytes (GB) data. Menurut internet.com , jumlah tambahan data yang disimpan pada tahun 2010 adalah 1.000 exabyte hanya 4 tahun kemudian pada tahun 2014, jumlah data yang disimpan hampir mencapai 50.000 exabyte ,itu artinya terjadi peningkatan yang sangat luar biasa. Dengan kata lain, ada banyak data yang disimpan di dunian dan akan terus tumbuh.
  2. Interconnected Data (Data yang saling berhungan) : sehingga data diseluruh dunia menjadi terhubung. Pembuatan web didukung dengan adanya hyperlink, blog memiliki pingbacks dan setian system jaringan utama social memiliki tag yang mengaitkan sesuatu dengan yang lainya. System utama yang dibangun untuk saling berhubungan. 
  3. Complex Data structure (struktur data yang rumit) : dalam hal ini berarti NoSQL dapat dengan mudah menangani struktur hierarkis data bersarang . sedangkan SQL pada RDBMS, hal ini rumit dan sulit dilakukan, karena butuh beberapa table relasional dengan berbagai macam kunci. Selain itu, ada hubungan antara kinerja dengan kompleksitas data.
NoSQL memiliki banyak kelebihan , diantaranya adalah :
  1. Mudah digunakan pada convensional load-balanced cluster
  2. Data yang tetap (Persitent data) , tidak sekedar cache yang selalu diupdate  
  3. Dapat dilakukan pengukuran terhadap ketersediaan memory
  4. Tidak ada skema tetap dan memungkinkan migrasi skema tanpa downtime
  5. Memiliki system query sendiri
  6. Bersifat ACID (Atomicity, Consistency, Isolation, Durability)
Basis data NoSQL dapat dibagi menjadi 4 kategori dasar yaitu :
1). Key Values stores : adalah suatu hash table yang memiliki key unik dan pointer ke item tertentu data. Pemetaan ini biasanya diikuti oleh mekanisme cache untuk memaksimalkan kinerja. Contohnya pada Tokyo Cabinet, Redis, Voldemort, Oracle BDB. Jenis aplikasi yang dapat menggunakannya adalah Aplikasi Content Caching, sedangkan contoh penerapanya apikasinya adalah pada pembuatan forum software, dimana terdapat sebuah home profile page yang memiliki statistic apa yang telah dilakukan oleh user / penggunanya.
2). Column Family stores : adalah tempat yang digunakan untuk menyimpan dan memproses jumlah data yang sangat besar, yang tersebar di berbagai lokasi. Disini masih terdapat beberapa key, tapi untuk mengacu ke multiple column. Dalam hal ini BigTable (model dari Column Family NoSQL milik Google), baris diidentifikasikan oleh suatu baris key dengan data yang terurut dan disimpan oleh key tersebut.
3). Document Databases : diinpirasikan oleh Lotus Notes dan mirip dengan Key-Values Stores, model ini pada dasarnya merupakan dokumen yang menyimpan kumpulan Key-Values Collections. Dokumen yang semi terstruktur disimpan dalam format seperti JSON, contohnya adalah CouchDB dan MongoDB. Jenis aplikasi yang menggunakanya adalah Aplikasi Web.
4). Graph Databases : adalah suatu baris data yang dibangun oleh kumpulan node , relasi antara notes dan karakteristik node. Pada basis data ini tidak digunakan table yang terdiri dari baris dan kolom serta SQL yang kaku, tetapi memakai model graf yang dapat diterapkan di berbagai mesin. Contoh dari basis data graf (Graph Databases) adalah Neo4J, InfoGrid dan InfiniteGraph. Aplikasi yang menggunakannya biasanya aplikasi yang bersifat Social Networking seperti facebook dan twitter (Tim Perdue, 2013).
Gambar berikut adalah perbedaan cara kerja NoSQL dengan RDBMS dalam hal pendistribusian data :

Pada gambar diatas terlihat bahwa dengan menggunakan NoSQL , data dapat didistribusikan dan secara otomatis melalui database nodes , sekaligus juga dapat mencatat data tersebut. Jika kita ingin mencatat dan menyimpan data ke 20 entitas pada suatu database cluster dengan 3 nodes maka mungkin saja data tersebut dicatat di semua nodes. Database tidak perlu melakukan singkronisasi antar node terlebih dahulu, juga tidak memerlukan 2 fase commit, dan client 1 dapat melihat perubahan pada node 1 sebelum client 2 selesai menulis ke 20 entias. Sedangkan pada RDBMS hal tersebut tidak dapat dilakukan.
Selain kemudahan dalam proses pendistribusian data , pada basis data NoSQL juga terdapat beberapa kelemahan – kelemahan , diantaranya :
1.      Pada basis data NoSQL sering terjadi data yang tidak konsisten , karena pada mayoritas basis data No SQL digunakan pada aplikasi yang harus menyimpan dan memproses banyak data dengan cepat seperti website jejaring social, mesin pencari dan lain sebagainya. Sebagai konsekuensi dari pilihan tersebut, NoSQL mengorbankan kemudahan untuk konsistensi data. Ketidakkonsistenan sebuah basis data dapat menyebabkan kesalahan yang sangat fatal dalam beberapa kasus. Sebagai contoh dalam sebuah aplikasi penjualan online seperti Amazon saat ada dua atau lebih pembeli yang melakukan transaksi pembelian pada barang yang sama, pada system basis data yang tidak konsisten akan mengijinkan kedua transaksi tersebut. Akibatnya, apabila stok barang yang bersangkutan hanya satu, maka salah satu pembeli akan dirugikan karena validasi transaksi dan pembayaran tetap berhasil, namun barang tidak tersedia. Meskipun aplikasi yang menggunakan basis data NoSQL dapat merekayasa konsistensi data melalui pemrograman, dengan cara membuat middleware layer ( solusi xiang [25] ) yang menggunakan algoritma hash untuk mempartisi dan mereplikasi data. Algoritma yang digunakan dapat memastikan konsistensi pada basis data NoSQL yang terpartisi pada beberapa node, bahkan mampu mengidentifikasi jika ada salah satu node server yang hilag (rusak atau tidak terhubung). Sayangnya solusi semacam ini juga mengakibatkan menurunnya performa server dan meningkatnya waktu pemrosesan query.
2.      NoSQL merupakan sebuah implementasi sub-optimal , karena menggunakan paradikma brute force untuk pemrosesan data, bukan menggunakan indexing yang lebih baik.
3.      Tidak menyediakan fitur yang sudah banyak digunakan oleh pengembang yang menggunakan basis data relasional.
4.      Tidak kompatibel dengan perangkat – perangkat yang sudah biasa digunakan oleh pengguna.
5.      Masih sedikitnya tenaga professional yang benar – benar memahami konsep basis data NoSQL (non relasional) , karena konsep basis data ini relative masih baru jika dibandingkan dengan basis data relasional yang sudah berjalan berpuluh – puluh tahun.
Konsep utama dari penerapan NoSQL adalah bagaimana mengatasi jumlah data yang sangat besar dan ledakan data dalam aplikasi web sebagai paradikma baru dalam penerapan basis data. Permasalahan dalam RDBMS mengenai skalabilitas dan partisi data , dapat diatasi menggunakan NoSQL , NoSQL memiliki beberapa keunggulan seperti basis data non-relasional (meliputi hierarki, graph dan basis data object oriented) , mapreduce yang diambil dari fungsi pemrograman diterapkan untuk menghasilkan data set yang besar, schema free yang memungkinkan dimana tidak terdapat table, kolom, kunci primer dan sekunder, join dan relasi. Horizontal scallingyang memungkinkan basis data untuk dijalankan di beberapa server untuk meningkatkan penyimpanan dan peningkatan waktu akses untuk mengatasi permasalahan banyaknya data.
NoSQL merupakan alternatif dari RDBMS dalam hal pendistribusian data , bukan penanganan masalah secara keseluruhan terutama transaksi yang tinggi dan bersifat sensitif, NoSQL tidak menerapkan konsistensi dan integritas data , hal ini membuat programmer harus bekerja ekstra untuk mengatasinya dari sisi pemrograman.

    Mengenal MongoDB
MongoDB merupakan sebuah sistem basis data yang berbasis dokumen (Document Oriented Database). Konsep ini sangat membingungkan kalo kita terbiasa dengan RDMS.MongoDB tidak ada yang namanya tabel, kolom dan baris. Dalam MongoDB yang ada hanyalah koleksi (collection – bisa dianggap Table) dan dokumen (document – bisa dianggap row). Koleksi dalam MongoDB bisa kita anggap sebuah Folder (Directory) dan Dokumen bisa kita anggap berkas (File) dalam Folder (Koleksi) tersebut.
Pada MongoDb kita tidak mengenal istilah RELASI karena kita befikir dalam kerangka dokumen. semua yang kita butuhkan diletakkan didalam sebuah dokumen.

KELEBIHAN MongoDB
MongoDB merupakan sistem basis data yang menggunakan konsep key-value, artinya setiap dokumen dalam MongoDB pasti memiliki key. Hal ini berbeda dalam RDMBS yang kita bisa tidak menggunakan primary key ketika membuat sebuah tabel. Sehingga walaupun kita membuat sebuah dokumen tanpa menggunakan primary key, tapi secara otomatis MongoDB memberinya sebuah key. Penggunaan konsep key-value sangat berperan penting, karena hal ini membuat MongoDB menjadi sistem basis data yang sangat cepat jika dibandingkan dengan non key-value seperti RDBMS.
MongoDB mendukung replikasi, selain itu konfigurasi replikasi pada MongoDB sangatlah mudah jika dibandingkan sistem basis data RDBMS (IMHO). Hal ini membuat pemilik sistem yang memiliki traffic membaca tinggi (seperti portal berita, forum dan blog) akan sangat terbantu ketika sistemnya akan menggunakan replikasi.
Selain replikasi, MongoDB juga mendukung sharding. Jika Anda pernah melakukan sharding di RDBMS yang sangat berdarah-darah  , maka akan sangat kagum dengan sharding di MongoDB. Kapan kita menggunakan sharding? Saat Anda memiliki website yang sudah sangat besar jumlah penggunanya, datanya mencapat jutaan giga byte. Anda dapat menggunakan sharding, misal membasis basis data Anda menjadi per regional.
Salah satu kelebihan MongoDB lainnya adalah, MongoDB mendukung model pemrograman MapReduce, sebuah konsep yang sangat fenomenal yang pernah dikeluarkan oleh Google dan saat ini banyak diimplementasikan seperti pada Apache Hadoop.
MongoDB memiliki banyak sekali kelebihan yang diantaranya, yaitu:
1. Sangat bagus untuk data list produk, karena MongoDB bisa melakukan searching lebih cepat ketimbang MySql
2. Kita tidak perlu membuat struktur tabel, kita hanya perlu melakukan proses insert maka MongoDB akan otomatis membuatkan struktur tabelnya
3. Proses CRUD (Create, Update, Delete) terasa sangat ringan (waktu saya mencobanya menggunakan PHP)

Bahasa MongoDb
MongoDB tidak menggunakan bahasa yang biasa digunakan RDBMS (SQL atau PL/SQL). MongoDB menggunakan bahasa BSON, dimana BSON merupakan singkatan dari Binary JSON. Jika Anda terbiasa menggunakan JavaScript, pasti tidak akan terlalu sulit menggunakan MongoDB.


Tidak ada komentar:

Posting Komentar