NoSQL adalah suatu evolusi dalam dunia database. NoSQL bukan berarti No melainkan Non stop SQL. Jika SQL diibaratkan dengan relational database maka NoSQL adalah non-relational database. NoSQL dikembangkan pertama kali pada tahun 1998 oleh Carlo Strozzi. Lalu pada tahun 2009, Eric Evans memperkenalkan kembali teknologi NoSQL ini.
Apakah yang dimaksud dengan Non Stop SQL itu sendiri?
Ini adalah suatu perkembangan dari database rational yang telah ada dan digunakan mulai tahun 1970-an sampai sekarang. Mengapa perkembangan database rational ini dibutuhkan dan pada akhirnya membuat suatu sistim database baru bernama NoSQL? Untuk bisa memahami alasan mengapa sampai ada NoSQL, kita bisa melihat perkembangan internet dan aplikasi-aplikasinya selama 10-15 tahun terakhir ini.
Pada 10-15 tahun yang lalu, jumlah user pengguna internet dan juga jumlah transaksi data pada aplikasi-aplikasi yang ada tidaklah sebanyak saat ini dan database relational yang telah ada sudah sangat mencukupi untuk mengatur transaksi data karena secara umum mereka mendukung operasi transaksi, yang mengijinkan kita mengubah sebagian data, melakukan kontrol terhadap operasi database, support terhadap constraint seperti unique, primary key, foreign key dan check. Mereka juga memiliki bahasa SQL atau Simplified Query Language untuk mengakses data, mengubah data seperti operasi insert, update dan delete.
Namun, dengan semakin berkembanganya jaman terutama semakin berkembangnya dunia internet, telah membuat perubahan besar pada aplikasi-aplikasi yang digunakan di komputer serta berimbas pula pada manajemen datanya. Setiap hari, semakin banyak user yang aktif di internet dan menggunakan berbagai aplikasi yang terhubung dengan internet, semakin banyak data yang harus diatur oleh database dan semakin sulit bagi sebuah database relational untuk terus mengelola datanya karena akan semakin banyak timbul masalah seperti redudansi data dll.
Bahkan oracle saja sampai perlu membangun ORACLE RAC atau Real Application Cluster, yang menemui banyak tantangan untuk melakukan sinkronisasi data di internal cache melalui inter-koneksi khusus. Dan itu pun juga belum mampu mengurangi kesulitan-kesulitan yang muncul dalam melakukan manajemen data dalam jumlah yang sangat besar jika menggunakan database relational.
Google, Amazon, Facebook, and LinkedIn adalah perusahaan-perusahaan besar pertama yang mengetahui batasan-batasan yang ada pada relational database untuk dapat mendukung kebutuhan aplikasi-aplikasi baru yang terus dikembangkan. Hingga pada akhirnya, mereka membuat sebuah manajemen data yang baru. Muncullah Open Source NoSQL, proyek database yang dibentuk untuk meningkatkan kinerja perusahaan-perusahaan yang menjadi pelopor dan berbagai perusahaan komersial yang menjalin kerja sama dengan proyek ini setelahnya. Apa yang membuat NoSQL berbeda dengan SQL yang berbasis RDBMS atau relational database tadi? NoSQL tidak menggunakan sintaks SQL untuk memyimpan data. Penyimpanan data dalam NoSQL tidak memerlukan skema tabel yang tetap seperti pada relational database.
NoSQL memiliki empat metode, yaitu:
- Table-oriented, contoh: Google dengan Big Table dan juga Facebook dengan Cassandra,
- Graph-oriented,
- Document-oriented database, contoh: MongoDB dan juga CouchDB,
- Key-value store, contoh: Memcache dan Redis .
Metode NoSQL yang pertama adalah table-oriented. Metode ini biasanya hanya dikembangkan oleh yang membuatnya sendiri seperti Google dan Facebook dengan Big Table dan Cassandra-nya. Performa dan hasil dari metode ini tidak perlu kita ragukan lagi karena kita telah tiap hari menggunakan kedua website ini dan meskipun dengan berjuta-juta data yang ada di database mereka, kita tetap bisa memaksimalkan website mereka.
Metode NoSQL yang kedua adalah Document-oriented database. Jenis NoSQL ini merupakan database yang berbasiskan dokumen. Tidak ada tabel, field dan record, yang ada hanyalah koleksi dan dokumen. Koleksi dapat disamakan dengan tabel dan dokumen disamakan dengan field. Berbeda dengan database relasional, pada document oriented database, dokumen dapat memiliki field yang berbeda dengan dokumen lain walaupun berada dalam satu koleksi. Hal ini tidak dapat dilakukan dengan database relasional dimana sebuah record tidak mungkin memiliki field yang berbeda dengan record yang berada dalam satu tabel. Document Oriented digunakan oleh Mongodb, Couchdb, Ravendb, dan lain-lain.
Metode NoSQL selanjutnya adalah graph-oriented, yaitu jenis database NoSQL yang menggunakan struktur graph dengan node, edge dan properties untuk menyimpan datanya. Metode ini digunakan oleh Infinite Graph, InfoGrid, Neo4J dan lain-lain.
Yang terakhir adalah key-value store. Hampir sama seperti document-oriented database, yang berbeda adalah media penyimpanannya. Dalam key-value store, data tidak langsung disimpan dalam disk seperti database pada umumnya. Data disimpan dalam memori komputer dan sesekali data dalam memori ditulis ke disk.
Penyimpanan data dalam memori menyebabkan proses query akan lebih cepat, karena tidak perlu lagi mengambil data dari disk. Key-Value Stores, cara ini digunakan oleh REDIS, Tokyo Cabinet, Azure Table Storage dan lain-lain.
Mengapa banyak yang beralih ke NoSQL terutama korporasi atau perusahaan-perusahaan besar yang menggunakan data yang banyak?
Pada saat ini terdapat 3 hal besar yang mempengaruhi perkembangannya yaitu Jumlah User yang Banyak, Jumlah Data yang besar dan yang terakhir teknologi terbaru yaitu cloud computing. Dengan 3 hal besar ini menjadikan sistim database harus mampu:
- Data harus bisa bergerak secara flexible,
- Harus mampu bergerak secara cepat dengan data dan user yang besar;
- Peningkatan performa untuk dapat memuaskan user yang menginginkan pengolahan data yang cepat.
Ketiga hal tersebutlah yang diharapkan mampu didatangkan oleh NoSQL dengan metode-metodenya karena NoSQL memiliki model data yang lebih fleksibel daripada Relational database. Jika pada relational database, memasukkan data pada tabel-tabel yang berhubungan dan di tiap tabel tersebut, terdapat baris dan kolom untuk menyimpan infomasi-informasi yang ada. Referensi tiap tabel yang terelasi berasal dari foreign key dimasing-masing tabel. Sebenarnya, cara penyimpanan ini meminialisir penggunaan data karena penyimpanan tiap data hanya pada satu tempat. Tetapi, penyimpanan yang kecil ini lama kelamaan akan menjadi besar jika tingkat kompleksitas database tersebut bertambah. Karena jika akan melakukan pencarian data maka data tersebut akan di-lookup atau dicari di banyak tabel yang bisa mencapai ratusan tabel yang tersebar dan menggabungkannya sebelum disajikan di website atau aplikasi.