Perbedaan antara CouchDB dan Couchbase

270

Apakah ada perbedaan mendasar antara CouchDB dan Couchbase .

yojimbo87
sumber
45
Bingung soal nama? Begitu juga saya, jadi saya mulai dengan mencampur info penamaan dari jawaban teratas ini menjadi visualisasi sejarah penamaan , yang seharusnya membantu memahami semua jawaban ini.
Jeroen
@ Joen Itu visualisasi yang luar biasa. Haruskah itu diedit menjadi jawaban teratas itu?
shoover
@shoover Thx, senang itu membantu. Saya tidak bisa menilai apakah itu cukup akurat, tetapi jika rsp (penulis utama jawaban itu) / masyarakat menganggapnya layak maka jangan ragu untuk memasukkannya di bawah lisensi SO.
Jeroen

Jawaban:

555

Saya pikir ada beberapa perbedaan mendasar antara CouchDB dan Couchbase Server yang perlu ditunjukkan.

Saya tidak akan menulis tentang keuntungan beralih dari CouchDB ke Server Couchbase karena hal itu dijelaskan cukup banyak di mana-mana (lihat Masa Depan CouchDB oleh Damien Katz atau Couchbase vs. Apache CouchDB oleh Couchbase). Sebagai gantinya, saya akan mencoba untuk menyebutkan fitur CouchDB yang tidak akan Anda temukan di Server Couchbase .

Semua nama yang berkaitan dengan CouchDB dan Couchbase dapat benar-benar membingungkan, jadi saya telah memperbarui jawaban ini, untuk memulai dengan penjelasan singkat tentang yang paling penting.

Nama dan kebingungan

Ada CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... semuanya berbeda dan terkait dengan cara yang sama sekali tidak jelas dari nama saja.

Pertama, ada CouchDB, database yang dibuat oleh Damien Katz, mantan pengembang IBM. Nama resminya diubah menjadi Apache CouchDB setelah menjadi proyek Apache.

Sebuah perusahaan bernama CouchIO didirikan untuk bekerja di Apache CouchDB dan kemudian mengubah namanya menjadi CouchOne (dengan "namanya" yang saya maksudkan nama perusahaan - bukan nama basis data).

CouchOne (sebelumnya CouchIO) bergabung dengan Membase (sebelumnya NorthScale) untuk membentuk perusahaan baru bernama Couchbase. Membase (perusahaan) mengembangkan Membase (produk dengan nama yang sama). Membase dibuat oleh beberapa pemimpin proyek Memcached dan menggunakan protokol Memcached. Setelah penggabungan CouchOne dan Membase, Couchbase melanjutkan pengembangan perangkat lunak Membase dan kemudian mengubah namanya menjadi Couchbase Server.

Hari ini saya pikir kebanyakan orang percaya bahwa Couchbase Server adalah versi baru dari CouchDB tetapi sebenarnya adalah versi baru dari Membase. Masih menggunakan protokol Memcached dan bukan API RESTful dari CouchDB. Sementara itu, CouchDB masih CouchDB, dipelihara secara aktif dan ditingkatkan sebagai proyek Apache.

Sekarang untuk perbedaan yang relevan:

Perizinan

Server Couchbase tidak sepenuhnya open-source / perangkat lunak bebas . Ada dua versi: Edisi Komunitas (gratis tapi tidak ada perbaikan bug terbaru) dan Edisi Perusahaan (ada pembatasan penggunaan, ketentuan kerahasiaan, audit oleh Couchbase Inc. yang "akan dilakukan selama jam kerja reguler di fasilitas Penerima Lisensi" dan istilah lainnya yang khas ke perangkat lunak berpemilik yang mungkin dianggap tidak dapat diterima banyak orang).

CouchDB adalah proyek open source / perangkat lunak bebas (tanpa ikatan) dari The Apache Software Foundation dan dirilis di bawah Lisensi Apache, Versi 2.0 (yang kompatibel dengan DFSG, disetujui oleh FSF, disetujui OSI, kompatibel dengan GPL, kompatibel dengan GPL, tidak kompatibel dengan copyleft) , ramah komersial).

Filsafat

Saya belum pernah melihatnya secara langsung tetapi ini mungkin sebenarnya perbedaan yang paling penting antara kedua database karena itu sangat tentang filosofi yang mendasari model komputasi terdistribusi dan tidak hanya tentang fitur tertentu, API atau lisensi. CouchDB dan Couchbase Server sama sekali berbeda dalam filosofi membangun sistem dan basis data terdistribusi.

Menurut teorema CAP tidak mungkin untuk database terdistribusi secara bersamaan memberikan konsistensi, ketersediaan dan toleransi partisi.

CouchDB adalah sistem tipe AP (menyediakan Ketersediaan dan Toleransi partisi ).

Server Couchbase APAKAH BAIK sistem jenis CP (menurut Wikipedia ) ATAU sistem tipe CA (menurut pembaruan teknis Couchbase ) - YANG INI BENAR? TOLONG BERI KOMENTAR ANDA.

fitur

Inilah yang saya temukan sebagai daftar fitur CouchDB yang tidak didukung oleh Couchbase Server:

  • tidak tenang API (hanya untuk tampilan, bukan untuk operasi CRUD)
  • tidak perubahan feed
  • tidak ada replikasi peer-to-peer
  • tidak ada CouchApps
  • no Futon (tersedia antarmuka administrasi yang berbeda)
  • tidak ada ID dokumen
  • tidak ada gagasan tentang basis data (hanya ada ember)
  • tidak ada replikasi antara database CouchDB dan Server Couchbase
  • tidak ada lampiran eksplisit (Anda harus menyimpan file tambahan sebagai pasangan kunci / nilai baru)
  • tidak ada HTTP API untuk semuanya (Anda perlu menggunakan SDK Couchbase Server atau salah satu Perpustakaan Klien Eksperimental di Couchbase Berkembang sehingga tidak ada eksperimen dengan curl dan wget )
  • tidak ada CouchDB API ( sebagai gantinya menggunakan API Memcached )
  • Anda tidak dapat melakukan semuanya dari browser (Anda harus menulis aplikasi sisi server)
  • tidak ada arsitektur dua tingkat untuk aplikasi Web yang mungkin (Anda harus menulis aplikasi sisi server untuk duduk di antara browser dan database, seperti dengan basis data relasional)
  • tidak ada konsistensi akhirnya
  • tidak sepenuhnya open-source / perangkat lunak bebas
  • bukan pengganti drop-in untuk CouchDB (sepertinya pengganti drop-in untuk Memcached)

Fitur-fitur CouchDB mungkin atau mungkin tidak penting bagi Anda sehingga apakah kekurangannya merupakan kerugian atau tidak sepenuhnya subjektif, tapi saya pikir keputusan apakah akan beralih dari CouchDB ke Server Couchbase atau tidak harus didasarkan pada perbedaan dan ketergantungan Anda pada fitur-fitur itu dalam penyebaran CouchDB Anda saat ini.

Misalnya jika Anda tertarik dengan CouchDB setelah menonton The CouchDB mengubah umpan pembicaraan NodeCamp oleh Mikeal Rogers atau salah satu tutorial CouchApp hebat oleh J. Chris Anderson maka Anda harus menyadari bahwa jika Anda ingin beralih ke Server Couchbase maka Anda harus melupakan hampir semua yang mereka bicarakan.

Karena itu, saya akan mengatakan bahwa Server Couchbase terlihat seperti evolusi Memcached dan Membase (bukan evolusi CouchDB) dan karenanya terlihat seperti produk hebat jika Anda saat ini menggunakan Memchached atau Membase. Jika Anda menggunakan CouchDB dengan cara paling mendasar maka Anda dapat mempertimbangkan untuk menggunakan Server Couchbase untuk hal yang sama dan mungkin atau mungkin tidak berkinerja lebih baik (jika Anda tidak keberatan dengan pembatasan lisensi). Tetapi jika Anda benar-benar menggunakan salah satu fitur yang unik di CouchDB (seperti umpan perubahan, CouchApps, arsitektur dua tingkat, replikasi peer-to-peer dll.) Maka Anda dapat melupakan fitur-fitur tersebut atau tetap menggunakan CouchDB. Bagaimanapun, pastikan untuk membaca dan memahami tutorial Migrasi ke Couchbase untuk Pengguna CouchDB sebelum Anda berpikir untuk beralih.

Orang-orang sering mendapat kesan yang salah (mungkin setelah membaca hal-hal seperti "Apa masa depan CouchDB? Ini Couchbase." ) Bahwa CouchDB entah bagaimana usang oleh Server Couchbase, atau bahwa itu adalah versi lama, warisan Couchbase. Sementara itu CouchDB adalah proyek open-source yang dikelola secara aktif, server Couchbase adalah proyek yang sepenuhnya terpisah (ini adalah proyek yang lebih baru tetapi itu bukan versi yang lebih baru dari CouchDB - mereka bahkan tidak kompatibel) dan karena bahkan alat-alat baru untuk membuat CouchApps masih tetap ada sedang dikembangkan (mis. lihat proyek Kanso ) maka CouchDB tidak akan segera ke mana-mana.

Saya harap ini menjelaskan kebingungan ini. Harap perbaiki saya jika saya salah dalam hal apa pun di sini.

Memperbarui:

Couchbase Server sebenarnya adalah nama baru untuk Server Membase (Server Membase diubah namanya menjadi Couchbase Server di suatu tempat di sekitar versi 1.8). Lihat Couchbase 2011 Tahun di Ulasan :

Sayangnya, kami mengacaukan banyak potensi pengguna kami. Selain Membase Server dan produk seluler baru kami, kami juga menawarkan Couchbase Single Server yang merupakan "distribusi" paket Apache CouchDB. Selain itu, kami mulai merilis pratinjau pengembang Couchbase Server 2.0, yang memasukkan teknologi CouchDB ke Membase Server - tetapi produk ini tidak kompatibel dengan Couchbase Single Server (atau CouchDB). [...] Membase Server akan berganti nama menjadi Couchbase Server 1.8 pada rilis berikutnya pada bulan Januari - langkah kecil yang hanya mengurangi kebingungan "nama". Seperti yang telah direncanakan sejak awal, rilis Couchbase Server 2.0 (saat ini di Developer Preview 3) akan menambah fungsionalitas indeks dan permintaan. Sementara Couchbase Server 2.0 akan menggabungkan teknologi besar dari proyek CouchDB,itu tidak akan kompatibel dengan CouchDB dan seharusnya tidak dilihat sebagai "versi CouchDB." [penekanan ditambahkan]

Lihat juga:

rsp
sumber
69
Bravo. Senang melihat sesuatu yang sebenarnya menjelaskan sisi ini (semua perbandingan yang ada, seperti yang Anda cantumkan, memiliki bias Couchbase yang nyata).
Stuart P. Bentley
6
@WalterTross: Sebenarnya tidak menggunakan CouchDB API, tidak TETAP dan tidak menggunakan HTTP bukan hal yang persis sama. Misalnya Riak tidak menggunakan API CouchDB tetapi masih menggunakan API RESTful. Juga, mungkin tidak menggunakan REST tetapi masih menggunakan HTTP (mis. SOAP atau layanan Web lainnya). Di sini saya ingin menjelaskan bahwa server Couchbase tidak hanya tidak menggunakan API CouchDB, tetapi API-nya tidak tenang dan bahkan tidak menggunakan HTTP sama sekali.
rsp
24
Saya menganggap ini sebagai jawabannya. Terima kasih.
Skift
10
Mengenai pertanyaan "CP vs CA" Anda: singkatnya, tidak mungkin untuk memiliki sistem "CA" kecuali jika Anda berbicara tentang satu mesin. Selalu ada partisi di jaringan ( aphyr.com/posts/288-the-network-is-rcaya ) dan karenanya sistem terdistribusi akan, pada waktu tertentu, membuat pengorbanan menjadi tersedia atau konsisten dalam menghadapi Partisi (tetapi tidak pernah keduanya). Jadi, dengan induksi Couchbase adalah CP. Sebenarnya ini mengikuti dari strategi replikasi mereka di belakang vBuckets yang merupakan a) master 1: n / slave (b) atau b) 1..n berbasis rantai versus dalam mengatakan sistem dimodelkan setelah Dynamo (AP).
Greg Burd
9
Sampai hari ini, ada tambahan yang sangat penting untuk artikel ini: Couchbase SyncGateway. Ini pada dasarnya adalah bagian yang membawa replikasi CouchDB ke Couchbase pada tingkat yang kompatibel dengan API, sehingga CouchDB dapat direplikasi dengan Couchbase melalui SyncGateway. Yang merupakan masalah besar dari perspektif Couchbase Lite, yang dapat (kecuali beberapa kasus sudut) dengan mulus beralih dari menyinkronkan dengan CouchDB ke menyinkronkan dengan SyncGateway
Leonid Usov
39

Mereka adalah perangkat lunak yang berbeda namun serupa. Saya telah mencampur kembali konten dari jawaban teratas menjadi gambar yang dapat membantu menjelaskan "perbedaan" serta hal-hal umum:

jawaban lain yang ditautkan di atas adalah deskripsi luas dari gambar ini

Komentar dari Matt Ingenthron menambahkan ini:

Untuk menambahkan beberapa konteks / koreksi: Pendiri NorthScale adalah Steve Yen dan Dustin Sallings. Saya bergabung dengan mereka segera setelah didirikan. Juga, Damien tidak kemudian bergabung dengan Couchbase, ia adalah bagian dari CouchIO / Couch One sebelum merger. Mengutip sumber sejarah yang menyenangkan: https://youtube.com/watch?v=aZ_JOnU8tkI

Jeroen
sumber
4
Itu adalah info-grafis yang sangat membantu!
Zach Smith
3
Untuk menambahkan beberapa konteks / koreksi: Pendiri NorthScale adalah Steve Yen dan Dustin Sallings. Saya bergabung dengan mereka segera setelah didirikan. Juga, Damien tidak kemudian bergabung dengan Couchbase, ia adalah bagian dari CouchIO / Couch One sebelum merger. Mengutip sumber sejarah yang menyenangkan: youtube.com/watch?v=aZ_JOnU8tkI
Matt Ingenthron
1
@MattIngenthron Thx untuk pembaruan. Saya telah menyelipkan komentar Anda dalam jawaban, jika saya menemukan waktu saya dapat mengubah diagram alur sesuai.
Jeroen
1

Saya pikir CouchBase tampaknya dianggap sebagai alternatif 'perusahaan' CouchDB. Yang tampaknya benar. Terlepas dari kurangnya kemampuan untuk melampirkan file ke catatan (dokumen) dan titik akhir REST 'out-of-box' dibandingkan dengan CouchDB, CouchBase memiliki bahasa seperti sql yaitu N1QL (kadang-kadang diucapkan Nikel). Ini adalah salah satu alasan mengapa saya tidak terlalu suka / merekomendasikan menggunakan istilah 'NoSQL'. Saya pribadi suka istilah 'Non-relasional'.

Parik Chudasma
sumber