CouchDB - Pendahuluan
Sistem manajemen basis data menyediakan mekanisme untuk penyimpanan dan pengambilan data. Ada tiga jenis utama sistem manajemen basis data yaitu RDBMS (Sistem Manajemen Basis Data Relasional), OLAP (Sistem Pemrosesan Analitik Online) dan NoSQL.
RDBMS
RDBMS adalah singkatan dari Relational Database Management System. RDBMS adalah dasar untuk SQL, dan untuk semua sistem database modern seperti MS SQL Server, IBM DB2, Oracle, MySQL, dan Microsoft Access.
Sistem manajemen basis data relasional (RDBMS) adalah sistem manajemen basis data (DBMS) yang didasarkan pada model relasional seperti yang diperkenalkan oleh EF Codd.
Data di RDBMS disimpan dalam objek database yang disebut tables. Tabel adalah kumpulan entri data terkait dan terdiri dari kolom dan baris. Ini hanya menyimpan data terstruktur.
OLAP
Server Pemrosesan Analitik Online (OLAP) didasarkan pada model data multidimensi. Ini memungkinkan para manajer dan analis untuk mendapatkan wawasan informasi melalui akses informasi yang cepat, konsisten, dan interaktif.
Database NoSQL
Database NoSQL (terkadang disebut Not Only SQL) adalah database yang menyediakan mekanisme untuk menyimpan dan mengambil data selain relasi tabel yang digunakan dalam database relasional. Basis data ini bebas skema, mendukung replikasi mudah, memiliki API sederhana, pada akhirnya konsisten, dan dapat menangani data dalam jumlah besar (data besar).
Tujuan utama dari database NoSQL adalah memiliki:
- Kesederhanaan desain,
- Penskalaan horizontal, dan
- Kontrol yang lebih baik atas ketersediaan.
Database NoSQL menggunakan struktur data yang berbeda dibandingkan dengan database relasional. Itu membuat beberapa operasi lebih cepat di NoSQL. Kesesuaian database NoSQL yang diberikan bergantung pada masalah yang harus diselesaikannya. Basis data ini menyimpan data terstruktur dan data tidak terstruktur seperti file audio, file video, dokumen, dll. Basis data NoSQL ini diklasifikasikan menjadi tiga jenis dan dijelaskan di bawah ini.
Key-value Store- Basis data ini dirancang untuk menyimpan data dalam pasangan nilai kunci dan basis data ini tidak akan memiliki skema apa pun. Dalam database ini, setiap nilai data terdiri dari kunci yang diindeks dan nilai untuk kunci itu.
Contoh - BerkeleyDB, Cassandra, DynamoDB, Riak.
Column Store- Dalam database ini, data disimpan dalam sel yang dikelompokkan dalam kolom data, dan kolom ini selanjutnya dikelompokkan ke dalam keluarga Kolom. Keluarga kolom ini dapat berisi sejumlah kolom.
Contoh - BigTable, HBase, dan HyperTable.
Document Store- Ini adalah database yang dikembangkan berdasarkan ide dasar penyimpanan nilai kunci di mana "dokumen" berisi data yang lebih kompleks. Di sini, setiap dokumen diberi kunci unik, yang digunakan untuk mengambil dokumen. Ini dirancang untuk menyimpan, mengambil, dan mengelola informasi berorientasi dokumen, juga dikenal sebagai data semi-terstruktur.
Contoh - CouchDB dan MongoDB.
Apa itu CouchDB?
CouchDB adalah database open source yang dikembangkan oleh yayasan perangkat lunak Apache. Fokusnya adalah pada kemudahan penggunaan, merangkul web. Ini adalah database penyimpanan dokumen NoSQL.
Ia menggunakan JSON, untuk menyimpan data (dokumen), java script sebagai bahasa kuerinya untuk mentransformasi dokumen, protokol http untuk api untuk mengakses dokumen, menanyakan indeks dengan browser web. Ini adalah aplikasi multi master yang dirilis pada tahun 2005 dan menjadi proyek apache pada tahun 2008.
Mengapa CouchDB?
CouchDB memiliki REST API berbasis HTTP, yang membantu berkomunikasi dengan database dengan mudah. Dan struktur sederhana dari sumber daya dan metode HTTP (GET, PUT, DELETE) mudah dipahami dan digunakan.
Karena kami menyimpan data dalam struktur berbasis dokumen yang fleksibel, tidak perlu khawatir tentang struktur datanya.
Pengguna diberikan pemetaan data yang kuat, yang memungkinkan kueri, penggabungan, dan pemfilteran informasi.
CouchDB menyediakan replikasi yang mudah digunakan, yang dengannya Anda dapat menyalin, berbagi, dan menyinkronkan data antara database dan mesin.
Model data
Database adalah struktur / wadah data terluar di CouchDB.
Setiap database adalah kumpulan dokumen independen.
Setiap dokumen memiliki datanya sendiri dan skema mandiri.
Metadata dokumen berisi informasi revisi, yang memungkinkan untuk menggabungkan perbedaan yang terjadi saat database terputus.
CouchDB mengimplementasikan kontrol konkurensi multi versi, untuk menghindari keharusan mengunci bidang database selama penulisan.
Fitur CouchDB: Kurangi Konten
Penyimpanan Dokumen
CouchDB adalah database NoSQL penyimpanan dokumen. Ini menyediakan fasilitas untuk menyimpan dokumen dengan nama yang unik, dan juga menyediakan API yang disebut RESTful HTTP API untuk membaca dan memperbarui (menambah, mengedit, menghapus) dokumen database.
Di CouchDB, dokumen adalah unit utama data dan juga termasuk metadata. Bidang dokumen diberi nama secara unik dan berisi nilai dari berbagai jenis (teks, angka, Boolean, daftar, dll.), Dan tidak ada batasan yang ditetapkan untuk ukuran teks atau jumlah elemen.
Pembaruan dokumen (tambah, edit, hapus) mengikuti Atomicity, yaitu, mereka akan disimpan sepenuhnya atau tidak disimpan sama sekali. Basis data tidak akan memiliki dokumen yang sebagian disimpan atau diedit.
Struktur Dokumen Json
{
"field" : "value",
"field" : "value",
"field" : "value",
}
Properti ACID
CouchDB berisi properti ACID sebagai salah satu fiturnya.
Konsistensi - Ketika data di CouchDB pernah dilakukan, maka data ini tidak akan diubah atau ditimpa. Dengan demikian, CouchDB memastikan bahwa file database akan selalu dalam keadaan yang konsisten.
Model Multi-Version Concurrency Control (MVCC) digunakan oleh CouchDB, karena itu klien akan melihat snapshot database yang konsisten dari awal hingga akhir operasi baca.
Setiap kali dokumen diperbarui, CouchDB memasukkan data ke dalam disk, dan header database yang diperbarui ditulis dalam dua potongan yang berurutan dan identik untuk membuat 4k pertama file, dan kemudian secara serentak di-flush ke disk. Pembaruan sebagian selama pembilasan akan dibuang.
Jika kegagalan terjadi saat melakukan tajuk, salinan yang masih ada dari tajuk identik sebelumnya akan tetap ada, memastikan koherensi dari semua data yang dilakukan sebelumnya. Kecuali area header, pemeriksaan atau perbaikan konsistensi setelah crash atau listrik mati tidak pernah diperlukan.
Pemadatan
Setiap kali ruang dalam file database terbuang percuma di atas batas tertentu, semua data aktif akan disalin (kloning) ke file baru. Ketika proses penyalinan selesai seluruhnya, maka file lama akan dibuang. Semua ini dilakukan dengan proses pemadatan. Basis data tetap online selama pemadatan dan semua pembaruan dan pembacaan diizinkan untuk diselesaikan dengan sukses.
Tampilan
Data di CouchDB disimpan dalam dokumen semi-terstruktur yang fleksibel dengan setiap struktur implisit, tetapi ini adalah model dokumen sederhana untuk penyimpanan dan berbagi data. Jika kami ingin melihat data kami dalam berbagai cara, kami memerlukan cara untuk memfilter, mengatur, dan melaporkan data yang belum diuraikan menjadi tabel.
Untuk mengatasi masalah ini, CouchDB menyediakan model tampilan. Tampilan adalah metode untuk menggabungkan dan melaporkan dokumen dalam database, dan dibuat sesuai permintaan untuk menggabungkan, menggabungkan, dan melaporkan dokumen database. Karena tampilan dibuat secara dinamis dan tidak memengaruhi dokumen yang mendasarinya, Anda dapat memiliki representasi tampilan yang berbeda dari data yang sama sebanyak yang Anda inginkan.
Sejarah
- CouchDB ditulis dalam bahasa pemrograman Erlang.
- Ini dimulai oleh Damien Katz pada tahun 2005.
- CouchDB menjadi proyek Apache pada tahun 2008.
Versi CouchDB saat ini adalah 1.61.