NoSQL Database: Definisi, Cara Kerja, Jenis, dan Perbedaannya dengan SQL
Vikra Alizanovic April 18, 2023 7 min read
SQL adalah bahasa pemrograman yang ideal untuk mengelola relational database.
Pertanyannya, bagaimana jika kamu perlu berurusan dengan database jenis lain?
NoSQL adalah solusinya. NoSQL menyediakan mekanisme untuk penyimpanan dan pengambilan data selain dari tabular relations yang digunakan dalam relational database.
Cari tahu mengenai definisi, cara kerja, hingga jenis-jenis NoSQL di artikel ini.
Definisi NoSQL
Database NoSQL adalah sebutan teknologi penyimpanan data dengan beragam database, selain relational database.
Itulah mengapa NoSQL patutnya dipahami sebagai “not only SQL” (tidak hanya SQL), bukan “not SQL”.
Berbeda dengan SQL dan relational database yang menggunakan struktur tabel dalam penyimpanan data, NoSQL mampu mengakomodir penyimpanan data yang tidak kompatibel dengan struktur penyimpanan baris dan kolom.
NoSQL lahir didorong oleh kebutuhan akan aplikasi berbasis web dan infrastruktur search engine–yang notabene tidak bisa dipenuhi oleh struktur penyimpanan data dengan SQL.
Berbeda dengan SQL yang mengutamakan struktur, konsistensi, dan efisiensi, NoSQL mengorbankan hal-hal tersebut untuk mengedepankan kecepatan dan fleksibilitas.
Perbedaan NoSQL dan SQL
Untuk lebih mudah memahami NoSQL, mari kita bandingkan perbedaannya dengan SQL.
Model penyimpanan data
NoSQL menggunakan bermacam-macam model tergantung tipe NoSQL database yang digunakan. Misalnya seperti JSON documents, dynamic columns, atau key-value pairs.
Sedangkan SQL menggunakan struktur tabel dengan baris dan kolom.
Masa pengembangan
NoSQL baru dikembangkan di akhir tahun 2000-an, sedangkan SQL sudah dikembangkan sejak tahun 1970-an.
Contoh aplikasi
NoSQL mencakup:
- MongoDB,
- CouchDB,
- Redis,
- DynamoDB,
- Cassandra,
- HBase, dll.
Sedangkan SQL mencakup:
- Oracle,
- MySQL,
- Microsoft SQL Server, dan
- PostgreSQL.
Skema
Penyimpanan database NoSQL bersifat fleksibel dan cepat, sedangkan SQL bersifat terstruktur dan kaku.
Sifat atau properti database
Teknologi NoSQL mengikuti teori CAP, yang menyatakan bahwa pada tiap database, hanya dua dari sifat-sifat berikut yang dapat diterapkan bersamaan:
- Consistency: setiap permintaan akan direspon dengan hasil terbaru, atau hasil error.
- Availability: setiap permintaan memiliki hasil non-error, terlepas dari sebaru apa hasil tersebut.
- Partition tolerance: tiap jeda antar nodes tidak akan menginterupsi kerja operasional sistem.
Sementara SQL mengikuti teori ACID, dan tiap RDBMS harus menunjukkan empat sifat berikut:
- Atomicity: setiap transaksi data harus berjalan dengan sukses atau tidak sama sekali. Tidak ada skenario partially complete, bahkan ketika sistem mengalami kegagalan sekalipun.
- Consistency: setiap langkah dalam operasional database mengikuti aturan yang memvalidasi dan mencegah corruption.
- Isolation: mencegah tiap transaksi yang dijalankan secara paralel untuk mempengaruhi satu sama lain. Tiap hasil transaksi harus dihasilkan seolah transaksi tersebut berjalan sendiri, meskipun ada beberapa transaksi berbeda yang dijalankan bersamaan.
- Durability: setiap hasil transaksi adalah hasil final yang tidak bisa di-rollback.
Peningkatan skala database
Kapasitas atau skala database NoSQL dapat ditingkatkan secara horizontal, yakni dengan menambahkan servers atau nodes.
Sedangkan skala database SQL dapat ditingkatkan secara vertikal, yakni dengan menambah kapabilitas processor dan meningkatkan kualitas hardware.
Cara kerja NoSQL database
Sekarang mari kita bahas bagaimana persisnya data disimpan dalam sebuah database NoSQL.
Untuk lebih mudah memahaminya, mari kita gunakan skenario spesifik. Dalam skenario ini, seorang HR perusahaan butuh menyimpan data berupa resume dari seorang pelamar kerja.
Dengan database SQL atau RDBMS, data tentunya akan tersimpan dalam bentuk tabel seperti berikut:
Nama | Usia | Skill | Pengalaman |
---|---|---|---|
Andi | 25 | Big Data | Big data engineer |
Andi | 25 | Javascript | Software developer |
Andi | 25 | MySQL | Data analyst |
Dalam RDBMS, setiap objek ditebar menjadi baris data yang disimpan dalam beberapa tabel. Kurangnya, terkadang query yang dikirim direspon dengan data duplikat, sehingga perlu disaring ulang oleh aplikasi.
Nah, dengan NoSQL yang berupa document-oriented database, data disimpan dengan format JSON document.
JSON mengeliminasi kemungkinan object mismatch, sebab sebuah objek data dapat dibaca atau ditulis dalam bentuk satu dokumen.
Penggunaan JSON juga mempermudah pengembangan aplikasi karena data terbaca secara utuh dan tidak tersebar, seperti digambarkan berikut ini:
Nama: Andi Skill: Big data, Javascript, MySQL Pengalaman: Big data engineer, software developer, data analyst | {"Nama":"Andi","Skill":["Big data","Javascript","MySQL"],"Pengalaman":[{"Posisi":"Big data engineer","Deskripsi":""},{"Posisi":"Software developer","Deskripsi":""},{"Posisi":"Data analyst","Deskripsi":""}]} |
Di sini NoSQL menerapkan konsep yang disebut nested objects, yakni objek data yang terangkum dalam satu wadah (nest).
Kapan NoSQL database digunakan?
Nah, lantas kapan sebaiknya kamu menggunakan NoSQL dibandingkan dengan SQL?
Secara umum, penggunaan NoSQL bisa lebih menguntungkan kamu daripada SQL dalam skenario-skenario berikut:
- Ketika perusahaan atau organisasi berhadapan dengan jumlah data yang masif atau big data
- Ketika data yang disimpan tidak berhubungan satu sama lain
- Ketika data yang disimpan tidak terstruktur dan hadir dalam berbagai bentuk berbeda
- Ketika kapasitas atau skala database perlu ditingkatkan secara konsisten
- Ketika pengguna perlu memprioritaskan kecepatan
Tipe-tipe NoSQL database
Terdapat banyak jenis database NoSQL. Berikut adalah lima tipe-tipe database NoSQL yang umum ditemukan:
Key-value pair
Dalam jenis database ini, data disimpan dalam bentuk pasangan antara key dan value. Contohnya seperti tabel di bawah ini:
Key | Value |
---|---|
Nama | Andi |
Usia | 25 tahun |
Kota asal | Jakarta |
Tiap key bisa terdiri atas kategori unik apapun, dan value dapat berisikan JSON, BLOB (Binary Large Objects), string, dan sebagainya.
Jenis database NoSQL satu ini kerap digunakan untuk menyimpan koleksi data, dictionaries, atau associative arrays.
Key-value pair umum digunakan oleh developer untuk menyimpan data yang tidak memiliki skema.
Contoh aplikasi database yang menggunakan key-value pair di antaranya:
- Redis
- Oracle BDB
- Amazon SimpleDB
- Riak
- DynamoDB
Column-based
Jenis database ini beroperasi dengan kolom-kolom yang bekerja secara independen. Tiap kolom diproses secara terpisah. Value pada jenis database ini disimpan secara bersebelahan satu sama lain.
Contohnya seperti berikut:
Row key | Kolom A | ||
Key A1 | Key A2 | Key A3 | |
Value A1 | Value A2 | Value A3 | |
Kolom B | |||
Key B1 | Key B2 | Key B3 | |
Value B1 | Value B2 | Value B3 |
Karena data sudah tersimpan dalam bentuk kolom, jenis database ini menghasilkan performa yang tinggi untuk query-query agregat seperti SUM, COUNT, AVG, atau MIN.
Contoh aplikasi database yang menggunakan column-based di antaranya:
Cassandra
HBase
Hypertable
Document-oriented
Jenis database ini memanfaatkan informasi yang berisi sepasang key serta value, kemudian sistem menyimpannya dalam format XML ataupun JSON.
Berikut adalah contohnya:
Nama: Andi Skill: Big data, Javascript, MySQL Pengalaman: Big data engineer, software developer, data analyst | {"Nama":"Andi","Skill":["Big data","Javascript","MySQL"],"Pengalaman":[{"Posisi":"Big data engineer","Deskripsi":""},{"Posisi":"Software developer","Deskripsi":""},{"Posisi":"Data analyst","Deskripsi":""}]} |
Sifat dari document-oriented database ini sangat fleksibel, hierarkis, dan semi-terstruktur, sehingga memungkinkan dokumen berubah sesuai kebutuhan pada aplikasi.
Biasanya jenis database ini digunakan untuk blog, sistem CMS, ecommerce, dan real-time analytics.
Contoh aplikasi database yang menggunakan document-oriented di antaranya:
- CouchDB
- MongoDB
- Amazon SimpleDB
- Lotus Notes
Graph-type
Jenis database satu ini menyimpan data dalam bentuk nodes dan edges. Tiap nodes merepresentasikan entitas data, dan edges merepresentasikan hubungan antar nodes. Sebuah edge juga merepresentasikan arah dengan penggambaran bentuk panah.
Lebih jelasnya bisa dilihat di grafik berikut:
Dikarenakan sifat graph-type database yang multi-relational, penarikan hubungan antar data menjadi hal yang mudah tanpa perlu adanya kalkulasi tambahan.
Jenis database satu ini kerap digunakan untuk keperluan pendataan logistik, analisis media sosial, hingga analisis data spasial.
Contoh aplikasi database yang menggunakan graph-type di antaranya:
- Neo4J
- FlockDB
- Infinite Graph
- Orient DB
Multi-model
Database NoSQL jenis multi-model dibuat khusus untuk mengolah beberapa model data berbeda.
Umumnya sebuah DBMS hanya mendukung satu jenis model data. Namun, jenis database ini mampu menyimpan serta mengimplementasikan query dan index dari banyak model sekaligus.
Fitur utama dari multi-model database adalah kemampuannya untuk melakukan transformasi data dari berbagai format. Contohnya, kamu bisa mengubah format JSON menjadi XML.
Contoh aplikasi database yang menggunakan multi-model di antaranya:
- OrientDB
- MongoDB
- MarkLogic Server
Demikian pembahasan mengenai apa itu NoSQL, perbedaannya dengan SQL, cara kerja, kapan menggunakannya, hingga berbagai tipe database-nya.
Meskipun SQL dan relational database banyak digunakan karena konsistensinya, terkadang SQL bukanlah pilihan ideal bagi pengguna yang membutuhkan performa lebih cepat dengan jumlah data yang masif.
NoSQL jadi solusi yang ideal untuk kebutuhan spesifik ini.
NoSQL bukanlah pengganti SQL, melainkan instrumen alternatif untuk performa yang tidak mampu dicapai SQL.
Belajar lebih banyak tentang NoSQL dan streaming data di program Software and Data Engineering Pacmann.
Further reading:
Artikel Popular
Big Data dan Data Mining: Perbedaan dan Hubungannya
June 5, 2023
Mengenal Lebih Jauh tentang Neural Network
June 2, 2023
10 Rekomendasi Blog Data Science Terbaik untuk Diikuti
June 1, 2023
Rekomendasi Course Data Engineering Bersertifikat
May 31, 2023
Bagaimana Machine Learning (ML) Dapat Bantu Mencegah Serangan Phishing
May 30, 2023