ความแตกต่างระหว่าง CouchDB และ Couchbase


270

มีความแตกต่างที่สำคัญระหว่างCouchDBและCouchbaseหรือไม่


45
สับสนเกี่ยวกับชื่อหรือไม่ ดังนั้นฉันจึงเริ่มจากการรวบรวมข้อมูลการตั้งชื่อจากคำตอบยอดนิยมนี้เป็นภาพประวัติศาสตร์ของการตั้งชื่อซึ่งจะช่วยให้เข้าใจคำตอบเหล่านี้
Jeroen

@Jeroen นั่นคือการสร้างภาพที่ยอดเยี่ยม ควรแก้ไขเป็นคำตอบที่ดีที่สุดหรือไม่
shoover

@ shoover ขอบคุณมากดีใจที่ช่วยฉันไม่สามารถตัดสินได้ว่ามันแม่นยำพอ แต่ถ้า rsp (ผู้เขียนหลักของคำตอบนั้น) / ชุมชนเห็นว่าสมควรแล้วรู้สึกฟรีเพื่อรวมไว้ภายใต้ใบอนุญาตดังนั้น
Jeroen

คำตอบ:


555

ฉันคิดว่ามีความแตกต่างที่สำคัญระหว่าง CouchDB และ Couchbase Server ที่ต้องชี้ให้เห็น

ฉันจะไม่เขียนเกี่ยวกับข้อดีของการเปลี่ยนจาก CouchDB เป็น Couchbase Server เพราะสิ่งเหล่านั้นถูกอธิบายไว้ทุกหนทุกแห่ง (ดูThe Future of CouchDBโดย Damien Katz หรือ Couchbase เทียบกับ Apache CouchDB โดย Couchbase) แต่ฉันจะพยายามที่จะระบุคุณสมบัติของ CouchDB ว่าคุณจะไม่พบใน Couchbase เซิร์ฟเวอร์

ชื่อทั้งหมดที่เกี่ยวข้องกับ CouchDB และ Couchbase อาจสร้างความสับสนได้ดังนั้นฉันจึงได้อัปเดตคำตอบนี้เพื่อเริ่มต้นด้วยคำอธิบายสั้น ๆ เกี่ยวกับชื่อที่สำคัญที่สุด

ชื่อและความสับสน

มี CouchDB, CouchIO, CouchOne, Couchbase, เซิร์ฟเวอร์ Couchbase, Couchbase มือถือ, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... ทั้งหมดแตกต่างกันและยังเกี่ยวข้องในลักษณะที่ไม่ชัดเจนเลยจากชื่อเพียงอย่างเดียว

อย่างแรกคือ CouchDB ซึ่งเป็นฐานข้อมูลที่สร้างโดย Damien Katz ซึ่งเป็นอดีตนักพัฒนาของ IBM ชื่ออย่างเป็นทางการของมันถูกเปลี่ยนเป็น Apache CouchDB หลังจากที่มันกลายเป็นโครงการ Apache

บริษัท ที่ชื่อว่า CouchIO ก่อตั้งขึ้นเพื่อทำงานกับ Apache CouchDB และต่อมาเปลี่ยนชื่อเป็น CouchOne (โดย "ชื่อของมัน" ฉันหมายถึงชื่อ บริษัท ไม่ใช่ชื่อฐานข้อมูล)

CouchOne (เดิมชื่อ CouchIO) ผสานกับ Membase (ชื่อเดิม NorthScale) เพื่อจัดตั้ง บริษัท ใหม่ชื่อว่า Couchbase Membase (บริษัท ) พัฒนา Membase (ผลิตภัณฑ์ที่มีชื่อเดียวกัน) Membase ถูกสร้างขึ้นโดยผู้นำหลายคนของโครงการ Memcached และใช้โปรโตคอล Memcached หลังจากการควบรวมกิจการของ CouchOne และ Membase, Couchbase ยังคงพัฒนาซอฟต์แวร์ Membase และต่อมาเปลี่ยนชื่อเป็น Couchbase Server

วันนี้ฉันคิดว่าคนส่วนใหญ่เชื่อว่า Couchbase Server เป็น CouchDB รุ่นใหม่ แต่จริงๆแล้วเป็น Membase เวอร์ชันใหม่ มันยังคงใช้โปรโตคอล Memcached ไม่ใช่ RESTful API ของ CouchDB ในขณะเดียวกัน CouchDB ยังคงเป็น CouchDB ซึ่งได้รับการบำรุงรักษาและปรับปรุงอย่างโครงการ Apache

ตอนนี้ถึงความแตกต่างที่เกี่ยวข้อง:

อนุญาตให้ใช้สิทธิ์

เซิร์ฟเวอร์ Couchbase ไม่ใช่ซอฟต์แวร์โอเพ่นซอร์ส / ฟรีทั้งหมด มีสองรุ่น: Community Edition (ฟรี แต่ไม่มีการแก้ไขข้อบกพร่องล่าสุด) และ Enterprise Edition (มีข้อ จำกัด ในการใช้งานบทบัญญัติความลับการตรวจสอบโดย Couchbase อิงค์ว่า "จะดำเนินการในช่วงเวลาทำการปกติที่สิ่งอำนวยความสะดวกของผู้รับอนุญาต" และคำอื่น ๆทั่วไป ซอฟต์แวร์ที่เป็นกรรมสิทธิ์ซึ่งหลายคนอาจพบว่าไม่สามารถยอมรับได้)

CouchDB เป็นโครงการโอเพนซอร์ซ / ฟรี (ไม่มีสายเชื่อมต่อ) ของ Apache Software Foundation และเผยแพร่ภายใต้Apache License รุ่น 2.0 (เข้ากันได้กับ DFSG, ได้รับการอนุมัติจาก FSF, ได้รับการอนุมัติจาก OSF, รองรับ GPI, ไม่รองรับ เชิงพาณิชย์)

ปรัชญา

ฉันไม่เคยเห็นมันชี้ให้เห็นโดยตรง แต่นี่อาจเป็นความแตกต่างที่สำคัญที่สุดระหว่างฐานข้อมูลทั้งสองเพราะลึกเกี่ยวกับปรัชญาพื้นฐานของแบบจำลองการคำนวณแบบกระจายและไม่เพียง แต่เกี่ยวกับคุณสมบัติบางอย่าง API หรือใบอนุญาตเท่านั้น CouchDB และ Couchbase Server แตกต่างกันโดยสิ้นเชิงในปรัชญาของการสร้างระบบกระจายและฐานข้อมูล

ตามทฤษฎีบทของ CAPมันเป็นไปไม่ได้ที่ฐานข้อมูลแบบกระจายจะให้ความสอดคล้องความพร้อมใช้งานและความทนทานต่อพาร์ติชันพร้อมกัน

CouchDBเป็นระบบประเภทAP (ให้ความพร้อมใช้งานและความทนทานต่อพาร์ติชัน )

Couchbase Serverเป็นระบบประเภทCP (ตามWikipedia ) หรือระบบประเภทCA (ตามการอัปเดตทางเทคนิคของ Couchbase ) - ซึ่งสิ่งเหล่านี้ถูกต้องหรือไม่ โปรดแสดงความคิดเห็น.

คุณสมบัติ

นี่คือสิ่งที่ฉันพบว่าเป็นรายการคุณลักษณะ CouchDB ที่เซิร์ฟเวอร์ Couchbase ไม่รองรับ:

  • ไม่มีRESTful API (เฉพาะมุมมองไม่ใช่สำหรับการทำงาน CRUD)
  • ไม่มีฟีด _changes
  • ไม่มีการจำลองแบบเพียร์ทูเพียร์
  • ไม่มีCouchApps
  • ไม่มีฟูก (มีอินเตอร์เฟสการดูแลระบบที่แตกต่างกัน)
  • ไม่มีID เอกสาร
  • ไม่มีแนวคิดเกี่ยวกับฐานข้อมูล (มีที่ฝากข้อมูลเท่านั้น)
  • ไม่มีการจำลองแบบระหว่างฐานข้อมูล CouchDB และเซิร์ฟเวอร์ Couchbase
  • ไม่มีไฟล์แนบที่ชัดเจน (คุณต้องจัดเก็บไฟล์เพิ่มเติมเป็นคู่ของคีย์ / ค่าใหม่)
  • ไม่มี HTTP API สำหรับทุกสิ่ง (คุณต้องใช้ Couchbase Server SDK หรือหนึ่งในไคลเอนต์ Experimental ไลบรารี่ที่Couchbase พัฒนาดังนั้นจึงไม่มีการทดลองกับcurlและwget )
  • ไม่มี CouchDB API (ใช้Memcached API แทน)
  • คุณไม่สามารถทำทุกอย่างจากเบราว์เซอร์ (คุณต้องเขียนแอปพลิเคชันฝั่งเซิร์ฟเวอร์)
  • ไม่สามารถใช้สถาปัตยกรรมสองชั้นสำหรับเว็บแอปได้ (คุณต้องเขียนแอปพลิเคชันฝั่งเซิร์ฟเวอร์เพื่อใช้ระหว่างเบราว์เซอร์กับฐานข้อมูลเช่นกับฐานข้อมูลเชิงสัมพันธ์)
  • ไม่มีความสอดคล้องในที่สุด
  • ไม่ใช่ซอฟต์แวร์โอเพนซอร์ซ / ฟรีอย่างสิ้นเชิง
  • ไม่ใช่การแทนที่ใน CouchDB (ดูเหมือนจะเป็นการแทนที่สำหรับ Memcached แทน)

คุณสมบัติเหล่านั้นของ CouchDB อาจจะใช่หรือไม่ใช่สิ่งสำคัญสำหรับคุณไม่ว่าจะเป็นการขาดหรือไม่ก็ตาม แต่ฉันคิดว่าการตัดสินใจว่าจะเปลี่ยนจาก CouchDB เป็น Couchbase Server หรือไม่นั้นขึ้นอยู่กับความแตกต่างเหล่านั้นและ การพึ่งพาคุณสมบัติเหล่านั้นในการปรับใช้ CouchDB ปัจจุบันของคุณ

ตัวอย่างเช่นหากคุณสนใจ CouchDB หลังจากดูThe CouchDB เปลี่ยนแปลงฟีด NodeCamp พูดคุยโดย Mikeal Rogers หรือหนึ่งในบทเรียน CouchApp ที่ยอดเยี่ยมโดย J. Chris Anderson คุณต้องตระหนักว่าถ้าคุณต้องการเปลี่ยนไปใช้ Couchbase Server คุณ จะต้องลืมทุกสิ่งที่พูดถึง

ด้วยเหตุนี้ฉันจึงบอกว่า Couchbase Server ดูเหมือนวิวัฒนาการของ Memcached และ Membase (ไม่ใช่วิวัฒนาการของ CouchDB) และดูเหมือนว่าเป็นผลิตภัณฑ์ที่ยอดเยี่ยมหากคุณกำลังใช้ Memchached หรือ Membase หากคุณใช้ CouchDB ในวิธีพื้นฐานที่สุดคุณอาจพิจารณาใช้ Couchbase Server ในสิ่งเดียวกันและอาจทำงานได้ดีหรือไม่ดีขึ้น (หากคุณไม่คำนึงถึงข้อ จำกัด สิทธิ์ใช้งาน) แต่ถ้าคุณใช้ฟีเจอร์ใด ๆ ที่ไม่เหมือนใครใน CouchDB (เช่นฟีดการเปลี่ยนแปลง, CouchApps, สถาปัตยกรรมสองชั้น, การจำลองแบบเพียร์ทูเพียร์เป็นต้น) คุณสามารถลืมคุณสมบัติเหล่านั้นหรืออยู่กับ CouchDB ไม่ว่าในกรณีใดโปรดอ่านและทำความเข้าใจกับการสอนการโยกย้ายไปยัง Couchbase สำหรับผู้ใช้ CouchDBก่อนที่คุณจะคิดเกี่ยวกับการสลับ

ผู้คนมักจะได้รับความประทับใจที่ผิด ๆ (อาจหลังจากอ่านสิ่งต่างๆเช่น"อนาคตของ CouchDB คืออะไรคือ Couchbase" ) CouchDB นั้นล้าสมัยไปแล้วโดย Couchbase Server หรือเป็นรุ่นเก่าของ Couchbase ในขณะที่CouchDBเป็นโครงการโอเพ่นซอร์สที่ได้รับการบำรุงรักษาอย่างแข็งขันเซิร์ฟเวอร์ Couchbase เป็นโครงการที่แยกจากกันอย่างสมบูรณ์ (เป็นโครงการที่ใหม่กว่า แต่ไม่ใช่ CouchDB รุ่นใหม่ - พวกเขาไม่สามารถใช้งานร่วมกันได้) และตั้งแต่เครื่องมือใหม่ ๆ สำหรับการสร้าง CouchApps กำลังพัฒนา (เช่นดูโครงการKanso ) จากนั้น CouchDB จะไม่ไปที่ใดในเร็ว ๆ นี้

ฉันหวังว่ามันจะทำให้เกิดความสับสน โปรดแก้ไขให้ฉันถ้าฉันทำอะไรผิดที่นี่

ปรับปรุง:

Couchbase Server เป็นชื่อใหม่ของเซิร์ฟเวอร์ Membase (เซิร์ฟเวอร์ Membase นั้นถูกเปลี่ยนชื่อเป็น Couchbase Server ในรุ่น 1.8) ดูCouchbase 2011 ปีที่รีวิว :

น่าเสียดายที่เราสับสนถึงขีด จำกัด ของผู้ใช้ที่มีศักยภาพของเรา นอกจาก Membase Server และผลิตภัณฑ์มือถือใหม่ของเราแล้วเรายังเสนอ Couchbase Single Server ซึ่งเป็นชุด“ การกระจาย” ของ Apache CouchDB ยิ่งไปกว่านั้นเราเริ่มปล่อยภาพตัวอย่างของนักพัฒนา Couchbase Server 2.0 ซึ่งรวมเทคโนโลยี CouchDB ไว้ใน Membase Server - แต่ผลิตภัณฑ์นี้ไม่สามารถใช้งานร่วมกับ Couchbase Single Server (หรือ CouchDB) [... ] Membase Server จะถูกเปลี่ยนชื่อเป็น Couchbase Server 1.8 ในรุ่นถัดไปในเดือนมกราคม - ขั้นตอนเล็ก ๆ ที่ช่วยลดความสับสนของ "name" ตามที่ได้วางแผนไว้ตั้งแต่ต้น Couchbase Server 2.0 รีลีส (ปัจจุบันที่ Developer Preview 3) จะเพิ่มฟังก์ชั่นดัชนีและเคียวรี ในขณะที่ Couchbase Server 2.0 จะรวมเทคโนโลยีมากมายจากโครงการ CouchDBมันจะไม่เข้ากันได้กับ CouchDB และไม่ควรมองว่าเป็น“ เวอร์ชันของ CouchDB” [เน้นเพิ่ม]

ดูสิ่งนี้ด้วย:


69
ไชโย ดีใจที่ได้เห็นบางสิ่งที่อธิบายด้านนี้ของสิ่งต่าง ๆ จริง ๆ (การเปรียบเทียบที่มีอยู่ทั้งหมดตามที่คุณระบุไว้มีอคติ Couchbase ที่สังเกตได้)
Stuart P. Bentley

6
@WalterTross: จริง ๆ แล้วไม่ได้ใช้ CouchDB API ไม่ใช่ RESTful และไม่ใช้ HTTP นั้นไม่เหมือนกันทุกประการ ตัวอย่าง Riak ไม่ได้ใช้ CouchDB API แต่ก็ยังใช้ RESTful API นอกจากนี้อาจไม่ใช้ REST แต่ยังคงใช้ HTTP (เช่น SOAP หรือบริการเว็บอื่น ๆ ) ที่นี่ฉันต้องการให้ชัดเจนว่าเซิร์ฟเวอร์ Couchbase ไม่เพียง แต่ไม่ใช้ CouchDB API แต่ API ของมันไม่สงบและไม่ได้ใช้ HTTP เลย
rsp

24
ฉันคิดว่านี่เป็นคำตอบ ขอบคุณ
skift

10
เกี่ยวกับคำถาม "CP vs CA" ของคุณ: โดยสรุปแล้วเป็นไปไม่ได้ที่จะมีระบบ "CA" เว้นแต่คุณกำลังพูดถึงเครื่องเดียว มีพาร์ติชั่นอยู่เสมอในเครือข่าย ( aphyr.com/posts/288-the-network-is- เชื่อถือได้ ) และดังนั้นระบบการกระจายจะทำทุก ๆ เวลาทำให้การแลกเปลี่ยนเป็นว่างหรือสอดคล้องในหน้าของ พาร์ติชัน (แต่ไม่เคยทั้งคู่) ดังนั้นโดยการเหนี่ยวนำ Couchbase คือ CP ในความเป็นจริงนี้ตามมาจากกลยุทธ์การจำลองแบบของพวกเขาที่อยู่เบื้องหลัง vBuckets ซึ่งเป็น a) 1: n master / slave (s) หรือ b) 1..n chain-based เทียบกับในการพูดว่าระบบจำลองตาม Dynamo (AP)
Greg Burd

9
ณ วันนี้มีการเพิ่มที่สำคัญมากในบทความนี้: Couchbase SyncGateway นี่คือส่วนที่นำ CouchDB การจำลองแบบมาสู่ Couchbase ในระดับที่เข้ากันได้กับ API เช่น CouchDB สามารถทำซ้ำกับ Couchbase ผ่านทาง SyncGateway ซึ่งเป็นเรื่องใหญ่จากมุมมองของ Couchbase Lite ซึ่งสามารถ (ยกเว้นบางกรณีมุม) ได้อย่างราบรื่นสลับจากการซิงค์กับ CouchDB เพื่อซิงค์กับ SyncGateway
Leonid Usov

39

ซอฟต์แวร์เหล่านี้มีความแตกต่าง แต่คล้ายคลึงกัน ฉันได้รีมิกซ์เนื้อหาจากคำตอบยอดนิยมลงในรูปภาพที่อาจช่วยชี้แจง "ความแตกต่าง" และสิ่งทั่วไป:

คำตอบอื่น ๆ ที่ลิงค์ด้านบนเป็นคำอธิบายเพิ่มเติมของภาพนี้

ความคิดเห็นจาก Matt Ingenthron เพิ่มในนี้:

ในการเพิ่มบริบท / การแก้ไข: ผู้ก่อตั้ง NorthScale คือ Steve Yen และ Sallings Dustin ฉันเข้าร่วมกับพวกเขาไม่นานหลังจากก่อตั้ง ดาเมียนไม่ได้เข้าร่วม Couchbase ต่อมาเขาเป็นส่วนหนึ่งของ CouchIO / Couch One ก่อนการควบรวมกิจการ อ้างถึงแหล่งข้อมูลเชิงประวัติศาสตร์ที่สนุก: https://youtube.com/watch?v=aZ_JOnU8tkI


4
นั่นเป็นข้อมูลกราฟิกที่มีประโยชน์สุด ๆ !
Zach Smith เมื่อ

3
ในการเพิ่มบริบท / การแก้ไข: ผู้ก่อตั้ง NorthScale คือ Steve Yen และ Sallings Dustin ฉันเข้าร่วมกับพวกเขาไม่นานหลังจากก่อตั้ง ดาเมียนไม่ได้เข้าร่วม Couchbase ต่อมาเขาเป็นส่วนหนึ่งของ CouchIO / Couch One ก่อนการควบรวมกิจการ อ้างถึงความสนุกสนานแหล่งข้อมูลเชิงประวัติศาสตร์: youtube.com/watch?v=aZ_JOnU8tkI
Matt Ingenthron

1
@MattIngenthron ขอบคุณสำหรับการอัปเดต ฉันได้ลื่นคำพูดของคุณในคำตอบถ้าฉันหาเวลาที่ฉันอาจปรับแต่งแผนภูมิลำดับงาน
Jeroen

1

ฉันคิดว่า CouchBase ดูเหมือนจะถูกมองว่าเป็นทางเลือก 'องค์กร' ของ CouchDB ซึ่งในทางที่ดูเหมือนจะเป็นจริง นอกเหนือจากการขาดความสามารถในการแนบไฟล์ไปยังระเบียน (เอกสาร) และจุดสิ้นสุด REST 'แบบนอกกรอบ' เมื่อเทียบกับ CouchDB แล้ว CouchBase มี sql เช่นภาษาเช่น N1QL (บางครั้งออกเสียงนิกเกิล) นี่เป็นหนึ่งในเหตุผลที่ฉันไม่ชอบ / แนะนำให้ใช้คำว่า 'NoSQL' ฉันชอบคำว่า "ไม่สัมพันธ์"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.