NoSQL vs SQL (part 1)
Database NoSQL (alias “not only SQL”) adalah non-tabel, dan menyimpan data secara berbeda dari tabel relasional. Database NoSQL tersedia dalam berbagai jenis berdasarkan model datanya. Jenis utama adalah dokumen, nilai kunci, kolom lebar, dan grafik. Mereka menyediakan skema dan skala yang fleksibel dengan mudah dengan data dalam jumlah besar dan beban pengguna yang tinggi.
Ketika orang menggunakan istilah “database NoSQL”, mereka biasanya menggunakannya untuk merujuk ke database non-relasional. Beberapa orang mengatakan istilah “NoSQL” adalah singkatan dari “non SQL” sementara yang lain mengatakan itu adalah singkatan dari “tidak hanya SQL.” Bagaimanapun, sebagian besar setuju bahwa database NoSQL adalah database yang menyimpan data dalam format selain tabel relasional.
What is NoSQL?
Kesalahpahaman yang umum adalah bahwa database NoSQL atau database non-relasional tidak menyimpan data hubungan dengan baik. Database NoSQL dapat menyimpan data hubungan — mereka hanya menyimpannya secara berbeda dari database relasional. Faktanya, jika dibandingkan dengan database SQL, banyak yang menganggap data hubungan pemodelan di database NoSQL lebih mudah daripada di database SQL, karena data terkait tidak harus dipisahkan antar tabel.
Model data NoSQL memungkinkan data terkait dikelompokan dalam satu struktur data.
Database NoSQL muncul pada akhir tahun 2000-an karena biaya penyimpanan menurun drastis. Lewatlah sudah hari-hari kebutuhan untuk membuat model data yang kompleks dan sulit dikelola hanya untuk tujuan mengurangi duplikasi data. Pengembang (bukan penyimpanan) menjadi biaya utama pengembangan perangkat lunak, sehingga database NoSQL dioptimalkan untuk produktivitas pengembang.
Karena biaya penyimpanan menurun dengan cepat, jumlah aplikasi data yang diperlukan untuk menyimpan dan kueri meningkat. Data ini datang dalam berbagai bentuk dan ukuran — terstruktur, semistruktur, dan polimorfik — dan mendefinisikan skema sebelumnya hampir mustahil. Basis data NoSQL memungkinkan pengembang untuk menyimpan data tidak terstruktur dalam jumlah besar, memberi mereka banyak fleksibilitas.
Selain itu, metode Agile semakin populer dalam membangun sistem, dan insinyur perangkat lunak memikirkan kembali cara mereka mengembangkan perangkat lunak. Mereka menyadari kebutuhan untuk cepat beradaptasi dengan kebutuhan yang berubah. Mereka membutuhkan kemampuan untuk melakukan iterasi dengan cepat dan membuat perubahan di seluruh tumpukan perangkat lunak mereka — hingga ke model database. Database NoSQL memberi mereka fleksibilitas ini.
Komputasi awan juga semakin populer, dan pengembang mulai menggunakan awan publik untuk menghosting aplikasi dan data mereka. Mereka menginginkan kemampuan untuk mendistribusikan data ke banyak server dan wilayah untuk membuat aplikasi mereka tangguh, untuk menskalakan alih-alih meningkatkan, dan untuk menempatkan data secara cerdas secara geografis. Beberapa database NoSQL seperti MongoDB menyediakan kemampuan ini.
Apa itu SQL?
Sekarang setelah kita memiliki pemahaman tentang database NoSQL, mari kita bandingkan dengan database tradisional yang paling populer: database relasional yang diakses oleh SQL (Structured Query Language). Anda dapat menggunakan SQL saat berinteraksi dengan database relasional tempat data disimpan dalam tabel yang memiliki kolom dan baris tetap.
Database SQL semakin populer di awal tahun 1970-an. Pada saat itu, penyimpanan sangat mahal, jadi insinyur perangkat lunak menormalkan database mereka untuk mengurangi duplikasi data.
Insinyur perangkat lunak pada tahun 1970-an juga biasanya mengikuti model pengembangan perangkat lunak air terjun. Proyek direncanakan secara rinci sebelum pembangunan dimulai. Insinyur perangkat lunak dengan susah payah membuat diagram hubungan entitas (E-R) yang kompleks untuk memastikan mereka telah memikirkan dengan cermat semua data yang perlu mereka simpan. Karena model perencanaan dimuka ini, insinyur perangkat lunak berjuang untuk beradaptasi jika persyaratan berubah selama siklus pengembangan. Akibatnya, proyek sering kali melebihi anggaran, melebihi tenggat waktu, dan gagal memenuhi kebutuhan pengguna.