Penerapan NoSQL Untuk Basis Data Non Relasional Berskala Besar





Seiring dengan meningkatnya kebutuhan akan penggunaan sistem informasi dalam berbagai lini kehidupan manusia, menuntut para pengembang perangkat lunak untuk terus meningkatkan kemampuan serta fitur aplikasi yang mereka bangun supaya bisa memenuhi kebutuhan pengguna , tidak terkecuali teknologi basisdata telah mengalami perkembangan yang sangat signfikan, mengingat basis data merupakan komponen yang sangat penting dalam sebuah system informasi. Dalam beberapa dekade dikenal ada beberapa jenis teknologi basis data/ database , beberapa diantaranya adalah Hierarchical Database, Network Database, Relational database , Object Oriented Database (OOD), dan lain sebagainya.


Beberapa dekade terahir ini , basis data relasional telah menjadi defacto pada sistem basis data. Dengan berlandaskan teori yang mapan serta dukungan software industry yang luas, model relasional telah menggantikan model basisdata sebelumnya, yaitu basis data hierarki dan basis data jaringan . beberapa prinsip model ini, seperti normalisasi, aljabar relasional, dan Struktur Query Language (SQL) telah dikenal luas oleh kalangan industry software dan penggunaanya pun meluas.


Sayangnya ada beberapa domain masalah yang tidak cocok dipetakan kedalam model relasional. Masalah muncul ketika kita memaksakan data yang secara natural tidak relasional ke dalam model ini. Impedence mismatch adalah masalah lain, dimana suatu objek bersarang dicoba untuk dimasukan kedalam table. Selain dua contoh masalah teknis diatas ada beberapa pertimbangan lain yang mendorong penggunaan model basis data semi-terstruktur / NoSQL dalam merancang basis data perusahaan berskala besar diantaranya adalah trend penggunaan basis data tersebar / terdistribusi untuk menggantikan basis data tunggal / vertical serta penerapan teknologi Cloud Computing untuk pendistribusian data ke beberapa computer berbeda di berbagai tempat.


Alasan penggunaan model basis data NOSQL didasari oleh berbagai kebutuhan akan beberapa hal yaitu :
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.
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.
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 :
Mudah digunakan pada convensional load-balanced cluster
Data yang tetap (Persitent data) , tidak sekedar cache yang selalu diupdate
Dapat dilakukan pengukuran terhadap ketersediaan memory
Tidak ada skema tetap dan memungkinkan migrasi skema tanpa downtime
Memiliki system query sendiri
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 :
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 Amazonsaat 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.
NoSQL merupakan sebuah implementasi sub-optimal , karena menggunakan paradikma brute force untuk pemrosesan data, bukan menggunakan indexing yang lebih baik.
Tidak menyediakan fitur yang sudah banyak digunakan oleh pengembang yang menggunakan basis data relasional.
Tidak kompatibel dengan perangkat – perangkat yang sudah biasa digunakan oleh pengguna.
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 scalling yang 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

1 komentar:

Saya minta izin copas pak ??

Silahkan Tinggalkan Komentar anda
EmoticonEmoticon