CouchDB
 sql >> Teknologi Basis Data >  >> NoSQL >> CouchDB

Memulai dengan CouchDB

NoSQL telah menjadi salah satu topik yang paling banyak dibicarakan selama beberapa bulan terakhir. Tutorial ini akan memperkenalkan Anda ke CouchDB, implementasi NoSQL dan mengajari Anda cara memulai platform.

Apa itu NoSQL?

NoSQL bebas skema -- Anda tidak perlu memutuskan strukturnya terlebih dahulu.

NoSQL [tidak hanya SQL ] adalah gerakan menuju penyimpanan dokumen yang tidak menggunakan model relasional. Pergeseran paradigma mendasar adalah dalam cara mereka menyimpan data. Misalnya, ketika Anda perlu menyimpan data tentang faktur, di RDBMS Anda perlu menyaring informasi ini ke dalam tabel dan kemudian menggunakan bahasa sisi server untuk mengubah data ini kembali menjadi objek kehidupan nyata. Di sisi lain, di NoSQL, Anda hanya menyimpan faktur. NoSQL bebas skema, yang berarti Anda tidak perlu mendesain tabel dan struktur terlebih dahulu -- Anda cukup mulai menyimpan nilai baru.

Melanjutkan contoh faktur, beberapa faktur mungkin menyertakan nomor PPN, beberapa mungkin tidak. Dalam RDBMS, Anda harus memberi tahu meja Anda untuk terlebih dahulu menerima nomor PPN dan kemudian mungkin nol. Namun, di NoSQL, Anda dapat menyimpan faktur dengan atau tanpa nomor PPN -- tidak ada skema. Perlu diingat bahwa NoSQL bukanlah peluru perak. Jika data Anda benar-benar relasional, tetap menggunakan RDBMS Anda akan menjadi pilihan yang tepat.

Meminta Database NoSQL

MapReducing memiliki keunggulan dibandingkan kueri SQL karena tugas map/reduce dapat didistribusikan di antara banyak node, sesuatu yang tidak mungkin dilakukan di RDBMS.

Basis data NoSQL menggunakan peta/pengurangan untuk membuat kueri dan mengindeks basis data. Di RDBMS, Anda menjalankan kueri yang menggabungkan beberapa tabel bersama-sama untuk membuat kumpulan data terlebih dahulu, lalu kueri berjalan membuat kumpulan hasil, subset dari keseluruhan data. Di NoSQL, Anda menggunakan peta/pengurangan untuk membuat 'tampilan' (mirip dengan kumpulan hasil) tampilan ini adalah bagian dari keseluruhan data.

Peta pada dasarnya mengekstraksi data dan mengurangi, agregasi data. Semakin akrab Anda dengan RDBMS, semakin sulit memahami peta/mengurangi. Manfaat MapReducing dibandingkan kueri SQL karena tugas map/reduce dapat didistribusikan di antara banyak node, sesuatu yang tidak mungkin dilakukan di RDBMS. Menambahkan catatan baru ke database tidak selalu merupakan tugas peta/pengurangan yang dijalankan kembali sepenuhnya.

Memperkenalkan CouchDB

Beberapa fakta tentang CouchDB yang harus Anda ketahui:

  • CouchDB adalah database berorientasi dokumen JSON yang ditulis dalam Erlang.
  • Ini adalah database yang sangat konkuren yang dirancang agar mudah direplikasi, secara horizontal, di berbagai perangkat dan toleran terhadap kesalahan.
  • Ini adalah bagian dari generasi database NoSQL.
  • Ini adalah proyek yayasan Apache sumber terbuka.
  • Ini memungkinkan aplikasi untuk menyimpan dokumen JSON melalui antarmuka RESTful.
  • Ini menggunakan map/reduce untuk mengindeks dan mengkueri database.

Manfaat Utama CouchDB

  • Dokumen JSON - Semua yang disimpan di CouchDB bermuara pada dokumen JSON.
  • Antarmuka Tenang - Dari pembuatan hingga replikasi hingga penyisipan data, setiap tugas pengelolaan dan data di CouchDB dapat dilakukan melalui HTTP.
  • Replikasi N-Master - Anda dapat menggunakan 'master' dalam jumlah tak terbatas, membuat beberapa topologi replikasi yang sangat menarik.
  • Dibuat untuk Offline - CouchDB dapat mereplikasi ke perangkat (seperti ponsel Android) yang dapat offline dan menangani sinkronisasi data untuk Anda saat perangkat kembali online.
  • Filter Replikasi - Anda dapat memfilter dengan tepat data yang ingin Anda tiru ke node yang berbeda.

Menggabungkan Semuanya

CouchDB adalah database yang dirancang untuk berjalan di internet saat ini.

CouchDB memungkinkan Anda untuk menulis aplikasi sisi klien yang berbicara langsung ke Couch tanpa memerlukan lapisan tengah sisi server, secara signifikan mengurangi waktu pengembangan. Dengan CouchDB, Anda dapat dengan mudah menangani permintaan dengan menambahkan lebih banyak node replikasi dengan mudah. CouchDB memungkinkan Anda untuk mereplikasi database ke klien Anda dan dengan filter Anda bahkan dapat mereplikasi data pengguna tertentu itu.

Memiliki database yang disimpan secara lokal berarti aplikasi sisi klien Anda dapat berjalan dengan hampir tanpa latensi. CouchDB akan menangani replikasi ke cloud untuk Anda. Pengguna Anda dapat mengakses faktur mereka di ponsel mereka dan membuat perubahan tanpa latensi yang nyata, semuanya saat offline. Saat ada koneksi dan dapat digunakan, CouchDB akan secara otomatis mereplikasi perubahan tersebut ke CouchDB cloud Anda.

CouchDB adalah database yang dirancang untuk berjalan di internet saat ini untuk aplikasi seperti desktop saat ini dan perangkat terhubung yang digunakan untuk mengakses internet.

Langkah 1 - Menginstal CouchDB

Cara termudah untuk mengaktifkan dan menjalankan CouchDB di sistem Anda adalah menuju ke CouchOne dan mengunduh distribusi CouchDB untuk OS Anda -- OSX dalam kasus saya. Unduh zip, ekstrak dan letakkan CouchDBX di folder aplikasi saya (petunjuk untuk OS lain di CouchOne).

Terakhir, buka CouchDBX.

Langkah 2 - Selamat datang di Futon

Setelah CouchDB dimulai, Anda akan melihat panel kontrol Futon di aplikasi CouchDBX. Jika tidak bisa, Anda dapat mengakses Futon melalui browser Anda. Melihat log, CouchDBX memberi tahu kami bahwa CouchDB dimulai di http://127.0.0.1:5984/ (mungkin berbeda pada sistem Anda). Buka browser dan buka http://127.0.0.1:5984/_utils/ dan Anda akan melihat Futon.

Sepanjang sisa tutorial ini saya akan menggunakan Futon di Firefox. Saya juga akan membuka Firebug dan tampilan konsol untuk melihat semua permintaan HTTP yang dikirim Futon di belakang layar. Ini berguna karena aplikasi Anda dapat melakukan semua yang dilakukan Futon. Mari kita buat database bernama mycouchshop .

Plugin jQuery CouchDB

Futon sebenarnya menggunakan plugin jQuery untuk berinteraksi dengan CouchDB. Anda dapat melihat plugin itu di http://127.0.0.1:5984/_utils/script/jquery.couch.js (ingat port Anda mungkin berbeda). Ini memberi Anda contoh yang bagus dalam berinteraksi dengan CouchDB.

Langkah 3 - Pengguna di CouchDB

CouchDB, secara default, sepenuhnya terbuka, memberikan hak admin setiap pengguna ke instance dan semua databasenya. Ini bagus untuk pengembangan tetapi jelas buruk untuk produksi. Mari kita lanjutkan dan siapkan admin. Di kanan bawah, Anda akan melihat "Selamat datang di Pesta Admin! Semua orang adalah admin! Perbaiki ini".

Silakan dan klik perbaiki ini dan berikan diri Anda nama pengguna dan kata sandi. Ini membuat akun admin dan memberi pengguna anonim akses untuk membaca dan menulis operasi di semua database, tetapi tidak ada hak konfigurasi.

Selengkapnya tentang Pengguna

Di CouchDB, tidak bijaksana untuk membuat satu pengguna super dan meminta pengguna tersebut melakukan semua baca/tulis.

Pengguna di CouchDB dapat sedikit membingungkan untuk dipahami pada awalnya, khususnya jika Anda terbiasa membuat satu pengguna untuk seluruh aplikasi Anda dan kemudian mengelola pengguna sendiri dalam tabel pengguna (bukan tabel pengguna MySQL). Di CouchDB, tidak bijaksana untuk membuat satu pengguna super dan meminta pengguna itu melakukan semua baca/tulis, karena jika aplikasi Anda adalah sisi klien maka kredensial pengguna super ini akan terlihat jelas di kode sumber JavaScript Anda.

CouchDB memiliki pembuatan pengguna dan otentikasi yang terintegrasi. Anda dapat membuat pengguna dengan plugin jQuery menggunakan $.couch.signup() . Ini pada dasarnya menjadi pengguna sistem Anda. Pengguna hanyalah dokumen JSON seperti yang lainnya sehingga Anda dapat menyimpan atribut tambahan apa pun yang Anda inginkan seperti email misalnya. Anda kemudian dapat menggunakan grup dalam CouchDB untuk mengontrol dokumen apa yang dapat diakses oleh setiap pengguna. Misalnya, Anda dapat membuat database untuk pengguna yang dapat mereka gunakan untuk menulis dan kemudian menambahkannya ke grup dengan akses baca ke database lain sesuai kebutuhan.

Langkah 4 - Membuat Dokumen Produk

Sekarang mari kita buat dokumen pertama kita menggunakan Futon melalui langkah-langkah berikut:

  1. Buka mycouchshop basis data.
  2. Klik "Dokumen Baru".
  3. Klik "Tambahkan Bidang" untuk mulai menambahkan data ke dokumen JSON. Perhatikan bagaimana ID diisi sebelumnya untuk Anda, saya sangat menyarankan untuk tidak mengubah ini. Tambahkan kunci "nama" dengan nilai "Tutorial Nettuts CouchDB One".
  4. Pastikan Anda mengklik tanda centang di samping setiap atribut untuk menyimpannya.
  5. Klik "Simpan Dokumen".

Naik satu tingkat, kembali ke database dan Anda akan melihat satu dokumen terdaftar dengan ID sebelumnya sebagai kunci dan nilai yang dimulai dengan{rev: . Ini adalah dokumen JSON yang baru saja Anda buat.

Langkah 5 - Memperbarui Dokumen

CouchDB adalah database tambahan saja -- pembaruan baru ditambahkan ke database dan tidak menimpa versi lama. Setiap pembaruan baru pada dokumen JSON dengan ID yang sudah ada sebelumnya akan menambahkan revisi baru. Inilah yang dimaksud dengan kunci revisi yang dimasukkan secara otomatis. Ikuti langkah-langkah di bawah ini untuk melihat ini beraksi:

  • Melihat isi mycouchshop database, klik satu-satunya catatan yang terlihat.
  • Tambahkan atribut lain dengan kunci "jenis" dan nilai "produk".
  • Tekan "Simpan Dokumen".

Setelah menekan simpan, kunci revisi baru akan terlihat dimulai dengan angka 2. Kembali satu tingkat ke mycouchshop tampilan database, Anda masih akan melihat hanya satu dokumen, ini adalah revisi terbaru dari dokumen produk kami.

Revisi

Sementara CouchDB menggunakan revisi secara internal, cobalah untuk tidak terlalu bersandar padanya. Revisi dapat dibersihkan melalui Futon dengan cukup mudah dan tidak dirancang untuk digunakan sebagai sistem kontrol revisi. CouchDB menggunakan revisi sebagai bagian dari fungsi replikasinya.

Langkah 6 - Membuat Dokumen Menggunakan cURL

Saya telah menyebutkan bahwa CouchDB menggunakan antarmuka RESTful dan pembaca bermata elang akan memperhatikan Futon menggunakan ini melalui konsol di Firebug. Jika tidak, mari kita buktikan dengan memasukkan dokumen menggunakan cURL melalui Terminal.

Pertama , mari buat dokumen JSON dengan konten di bawah ini dan simpan ke desktop dengan memanggil file person.json .

	{
		"forename":	"Gavin",
		"surname":	"Cooper",
		"type":		"person"
	}

Berikutnya , buka terminal dan jalankan cd ~/Desktop/ menempatkan Anda di direktori yang benar dan kemudian melakukan penyisipan dengan curl -X POST http://127.0.0.1:5984/mycouchshop/ -d @person.json -H "Content-Type: application/json" . CouchDB seharusnya mengembalikan dokumen JSON yang mirip dengan yang di bawah ini.

{"ok":true,"id":"c6e2f3d7f8d0c91ce7938e9c0800131c","rev":"1-abadd48a09c270047658dbc38dc8a892"}

Ini adalah ID dan nomor revisi dari dokumen yang dimasukkan. CouchDB mengikuti konvensi RESTful dan dengan demikian:

  • POSTING - membuat rekor baru
  • DAPATKAN - membaca catatan
  • PUT - memperbarui catatan
  • HAPUS - menghapus catatan

Langkah 7 - Melihat Semua Dokumen

Kami dapat lebih lanjut memverifikasi sisipan kami dengan melihat semua dokumen di mycouchshop our database dengan menjalankan curl -X GET http://127.0.0.1:5984/mycouchshop/_all_docs .

Langkah 8 - Membuat Fungsi Peta Sederhana

Melihat semua dokumen secara praktis tidak berguna. Yang lebih ideal adalah melihat semua dokumen produk. Ikuti langkah-langkah di bawah ini untuk mencapai ini:

  • Di dalam Futon, klik drop down tampilan dan pilih "Tampilan Sementara".
  • Ini adalah editor pereduksi peta di dalam Futon. Salin kode di bawah ini ke dalam fungsi peta.
    			function (doc) {
    				if (doc.type === "product" && doc.name) {
    					emit(doc.name, doc);
    				}
    			}
  • Klik jalankan dan Anda akan melihat satu produk yang kami tambahkan sebelumnya.
  • Lanjutkan dan buat tampilan ini permanen dengan menyimpannya.

Setelah membuat fungsi peta sederhana ini, sekarang kita dapat meminta tampilan ini dan melihat isinya melalui HTTP menggunakan perintah berikut curl -X GET http://127.0.0.1:5984/mycouchshop/_design/products/_view/products .

Hal kecil yang perlu diperhatikan adalah bagaimana kita mendapatkan ID dan revisi dokumen secara default.

Langkah 9 - Melakukan Pengurangan

Untuk melakukan pengurangan yang bermanfaat, mari tambahkan produk lain ke database kita dan tambahkan atribut harga dengan nilai 1,75 ke produk pertama kita.

	{
		"name":		"My Product",
		"price":	2.99,
		"type":		"product"
	}

Untuk tampilan baru kami, kami akan menyertakan pengurangan serta peta. Pertama, kita perlu memetakan didefinisikan seperti di bawah ini.

	function (doc) {
		if (doc.type === "product" && doc.price) {
			emit(doc.id, doc.price);
		}
	}

Fungsi peta di atas hanya memeriksa untuk melihat apakah dokumen yang dimasukkan adalah produk dan ada harganya. Jika kondisi ini telah terpenuhi, harga produk dikeluarkan. Fungsi pengurangan ada di bawah.

function (keys, prices) {
	return sum(prices);
}

Fungsi di atas mengambil harga dan mengembalikan jumlah menggunakan salah satu fungsi pengurangan bawaan CouchDB. Pastikan Anda mencentang opsi pengurangan di kanan atas tabel hasil karena Anda mungkin tidak dapat melihat hasil pengurangan. Anda mungkin perlu melakukan penyegaran ulang halaman untuk melihat opsi pengurangan


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Adakah yang sudah mencoba CouchDB, dan berbagai implementasi offline (PouchDB)?

  2. Menginstal Apache CouchDB di Debian 9

  3. Instal CouchDB di Debian 9

  4. Cara Menginstal CouchDB di Debian 10

  5. Cara Menginstal Apache CouchDB di Ubuntu 20.04