Sự khác biệt giữa CouchDB và Couchbase


270

Có bất kỳ sự khác biệt cần thiết nào giữa CouchDBCouchbase .


45
Nhầm lẫn về tên? Tôi cũng vậy, vì vậy tôi đã bắt đầu bằng cách kết hợp lại thông tin đặt tên từ câu trả lời hàng đầu này thành một hình dung về lịch sử đặt tên , điều này sẽ giúp hiểu bất kỳ câu trả lời nào trong số này.
Jeroen

@Jeroen Đó là một hình ảnh tuyệt vời. Nó có nên được chỉnh sửa thành câu trả lời hàng đầu?
shoover

@shoover Thx, rất vui vì điều đó có ích. Tôi không thể đánh giá liệu nó có đủ chính xác không, nhưng nếu rsp (tác giả chính của câu trả lời đó) / cộng đồng cho rằng nó xứng đáng thì hãy đưa nó vào giấy phép SO.
Jeroen

Câu trả lời:


555

Tôi nghĩ rằng có một số khác biệt cần thiết giữa CouchDB và Couchbase Server cần được chỉ ra.

Tôi sẽ không viết về những lợi thế của việc chuyển đổi từ CouchDB sang Couchbase Server bởi vì những điều đó được mô tả khá nhiều ở mọi nơi (xem Tương lai của CouchDB của Damien Katz hoặc Couchbase so với Apache CouchDB của Couchbase). Thay vào đó, tôi sẽ cố gắng liệt kê các tính năng của CouchDB mà bạn sẽ không tìm thấy trong Máy chủ Couchbase .

Tất cả các tên liên quan đến CouchDB và Couchbase có thể thực sự khó hiểu, vì vậy tôi đã cập nhật câu trả lời này, để bắt đầu với một lời giải thích ngắn gọn về những cái quan trọng nhất.

Tên và nhầm lẫn

Có CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... hoàn toàn khác nhau và không liên quan đến nhau.

Đầu tiên, có CouchDB, một cơ sở dữ liệu được tạo bởi Damien Katz, một nhà phát triển cũ của IBM. Tên chính thức của nó đã được đổi thành Apache CouchDB sau khi nó trở thành một dự án Apache.

Một công ty có tên CouchIO được thành lập để làm việc trên Apache CouchDB và sau đó đổi tên thành CouchOne (theo "tên của nó" Tôi có nghĩa là tên công ty - không phải tên cơ sở dữ liệu).

CouchOne (trước đây là CouchIO) đã sáp nhập với Membase (trước đây là NorthScale) để thành lập một công ty mới có tên là Couchbase. Membase (công ty) đã phát triển Membase (một sản phẩm cùng tên). Membase được tạo bởi một số nhà lãnh đạo của dự án Memcached và nó đã sử dụng giao thức Memcached. Sau khi sáp nhập CouchOne và Membase, Couchbase tiếp tục phát triển phần mềm Membase và sau đó đổi tên thành Couchbase Server.

Ngày nay tôi nghĩ rằng hầu hết mọi người tin rằng Couchbase Server là phiên bản mới của CouchDB nhưng thực tế, đây là phiên bản mới của Membase. Nó vẫn sử dụng giao thức Memcached chứ không phải API RESTful của CouchDB. Trong khi đó, CouchDB vẫn là CouchDB, được tích cực duy trì và nâng cao như một dự án Apache.

Bây giờ đến sự khác biệt có liên quan:

Cấp phép

Máy chủ Couchbase không hoàn toàn là phần mềm nguồn mở / miễn phí . Có hai phiên bản: Phiên bản cộng đồng (miễn phí nhưng không có bản sửa lỗi mới nhất) và Phiên bản doanh nghiệp (có các hạn chế về sử dụng, quy định bảo mật, kiểm toán của Couchbase Inc. rằng "sẽ được tiến hành trong giờ làm việc thông thường tại các cơ sở của Bên được cấp phép" và các điều khoản khác điển hình phần mềm độc quyền mà nhiều người có thể thấy không thể chấp nhận được).

CouchDB là một dự án phần mềm nguồn mở / miễn phí (không có chuỗi đính kèm) của Quỹ phần mềm Apache và được phát hành theo Giấy phép Apache, Phiên bản 2.0 (DFSG-tương thích, FSF chấp thuận, OSI xác nhận, GPL-tương thích, không copyleft , thân thiện với thương mại).

Triết học

Tôi chưa bao giờ thấy nó trực tiếp chỉ ra nhưng đây thực sự có thể là sự khác biệt quan trọng nhất giữa hai cơ sở dữ liệu này bởi vì nó sâu sắc về triết lý cơ bản của các mô hình điện toán phân tán và không chỉ về một số tính năng, API hoặc cấp phép nhất định. CouchDB và Couchbase Server hoàn toàn khác nhau trong triết lý xây dựng các hệ thống và cơ sở dữ liệu phân tán.

Theo định lý CAP, cơ sở dữ liệu phân tán không thể đồng thời cung cấp tính nhất quán, tính sẵn có và dung sai phân vùng.

CouchDB là một hệ thống loại AP (cung cấp dung sai sẵn cóphân vùng ).

Couchbase ServerEITHER một hệ thống loại CP (theo Wikipedia ) HOẶC một hệ thống loại CA (theo cập nhật kỹ thuật của Couchbase ) - CÁI NÀY LÀ ĐÚNG? VUI LÒNG NHẬN XÉT.

Đặc trưng

Đây là những gì tôi thấy là một danh sách các tính năng của CouchDB không được Máy chủ Couchbase hỗ trợ:

  • không có API RESTful (chỉ dành cho lượt xem, không dành cho hoạt động CRUD)
  • không có thức ăn
  • không nhân rộng ngang hàng
  • không có CouchApps
  • không có Futon (có giao diện quản trị khác nhau)
  • không có ID tài liệu
  • không có khái niệm về cơ sở dữ liệu (chỉ có xô)
  • không sao chép giữa cơ sở dữ liệu CouchDB và Máy chủ Couchbase
  • không có tệp đính kèm rõ ràng (bạn phải lưu trữ các tệp bổ sung dưới dạng cặp khóa / giá trị mới)
  • không có API HTTP cho tất cả mọi thứ (bạn cần sử dụng SDK máy chủ Couchbase hoặc một trong các Thư viện khách hàng thử nghiệm tại Couchbase Phát triển để không có thử nghiệm với curlwget )
  • không có API CouchDB (nó sử dụng Memcached thay vào API )
  • bạn không thể làm mọi thứ từ trình duyệt (bạn phải viết ứng dụng phía máy chủ)
  • không có kiến ​​trúc hai lớp cho các ứng dụng Web là có thể (bạn phải viết một ứng dụng phía máy chủ để ngồi giữa trình duyệt và cơ sở dữ liệu, giống như với các cơ sở dữ liệu quan hệ)
  • không có sự thống nhất cuối cùng
  • không hoàn toàn mã nguồn mở / phần mềm miễn phí
  • không phải là sự thay thế thả vào cho CouchDB (có vẻ như là sự thay thế thả xuống cho Memcached thay thế)

Các tính năng đó của CouchDB có thể có hoặc không quan trọng đối với bạn vì vậy việc thiếu chúng có phải là nhược điểm hay không hoàn toàn chủ quan, nhưng tôi nghĩ rằng quyết định có nên chuyển từ CouchDB sang Couchbase Server hay không nên dựa trên những khác biệt đó và sự phụ thuộc của bạn vào các tính năng đó trong các triển khai CouchDB hiện tại của bạn.

Ví dụ: nếu bạn đã quan tâm đến CouchDB sau khi xem CouchDB thay đổi nguồn cấp dữ liệu NodeCamp của Mikeal Rogers hoặc một trong những hướng dẫn tuyệt vời về CouchApp của J. Chris Anderson thì bạn phải nhận ra rằng nếu bạn muốn chuyển sang Máy chủ Couchbase thì bạn sẽ phải quên đi khá nhiều thứ họ đang nói.

Do đó, tôi sẽ nói rằng Couchbase Server trông giống như một sự phát triển của Memcached và Membase (không phải là một sự phát triển của CouchDB) và vì vậy nó trông giống như một sản phẩm tuyệt vời nếu bạn hiện đang sử dụng Memchached hoặc Membase. Nếu bạn đang sử dụng CouchDB theo cách cơ bản nhất thì bạn có thể cân nhắc sử dụng Couchbase Server cho những điều tương tự và nó có thể hoặc có thể không hoạt động tốt hơn (nếu bạn không bận tâm đến các hạn chế cấp phép). Nhưng nếu bạn thực sự đang sử dụng bất kỳ tính năng nào là duy nhất trong CouchDB (như nguồn cấp dữ liệu thay đổi, CouchApps, kiến ​​trúc hai lớp, sao chép ngang hàng, v.v.) thì bạn có thể quên các tính năng đó hoặc ở lại với CouchDB. Trong mọi trường hợp, hãy đảm bảo đọc và hiểu hướng dẫn Chuyển đổi sang Couchbase cho Người dùng CouchDB trước khi bạn nghĩ về việc chuyển đổi.

Mọi người thường có ấn tượng sai (có thể sau khi đọc những thứ như "Tương lai của CouchDB là gì? Đó là Couchbase." ) Rằng CouchDB bằng cách nào đó đã bị Couchbase Server làm cho lỗi thời, hoặc đó là một phiên bản cũ, cũ của Couchbase. Trong khi đó, CouchDB là một dự án nguồn mở được duy trì tích cực, máy chủ Couchbase là một dự án hoàn toàn riêng biệt (nó là một dự án mới hơn nhưng nó không phải là phiên bản mới hơn của CouchDB - chúng thậm chí không tương thích) và kể cả các công cụ mới để tạo CouchApps vẫn giữ đang được phát triển (ví dụ: xem dự án Kanso ) thì CouchDB sẽ không đi đâu sớm.

Tôi hy vọng nó làm rõ sự nhầm lẫn. Xin hãy sửa tôi nếu tôi sai về bất cứ điều gì ở đây.

Cập nhật:

Couchbase Server thực sự là một tên mới cho Máy chủ Membase (Máy chủ Membase được đổi tên thành Máy chủ Couchbase ở đâu đó xung quanh phiên bản 1.8). Xem năm Couchbase 2011 trong đánh giá :

Thật không may, chúng tôi đã nhầm lẫn giữa nhiều người dùng tiềm năng của chúng tôi. Ngoài Membase Server và các sản phẩm di động mới của chúng tôi, chúng tôi cũng cung cấp Couchbase Single Server, đây là một bản phân phối được đóng gói, một phần mềm của Apache CouchDB. Trên hết, chúng tôi đã bắt đầu phát hành bản xem trước của nhà phát triển Couchbase Server 2.0, được tích hợp công nghệ CouchDB vào Máy chủ Membase - nhưng sản phẩm này không tương thích với Couchbase Single Server (hoặc CouchDB). [...] Membase Server sẽ được đổi tên thành Couchbase Server 1.8 trong lần phát hành tiếp theo vào tháng 1 - một bước nhỏ chỉ đơn giản là làm giảm bớt sự nhầm lẫn của tên Tên. Như đã được lên kế hoạch từ đầu, phiên bản Couchbase Server 2.0 (hiện tại tại Developer Preview 3) sẽ thêm chức năng truy vấn và chỉ mục. Trong khi Couchbase Server 2.0 sẽ kết hợp công nghệ đáng kể từ dự án CouchDB,nó sẽ không tương thích với CouchDB và nó không nên được xem như là một phiên bản của CouchDB. [nhấn mạnh thêm]

Xem thêm:


69
Bravo. Vui mừng khi thấy một cái gì đó thực sự giải thích khía cạnh này của mọi thứ (tất cả các so sánh hiện có, như bạn đã liệt kê, có một thiên vị Couchbase đáng chú ý).
Stuart P. Bentley

6
@WalterTross: Thực tế không sử dụng API CouchDB, không phải là RESTful và không sử dụng HTTP không hoàn toàn giống nhau. Ví dụ: Rịa không sử dụng API CouchDB nhưng nó vẫn sử dụng API RESTful. Ngoài ra, nó có thể không sử dụng REST nhưng vẫn sử dụng HTTP (ví dụ: SOAP hoặc dịch vụ Web khác). Ở đây tôi muốn làm rõ rằng máy chủ Couchbase không chỉ không sử dụng API CouchDB, mà API của nó không RESTful và thậm chí không sử dụng HTTP.
rsp

24
Tôi coi đây là câu trả lời. Cảm ơn.
skift

10
Về câu hỏi "CP vs CA" của bạn: tóm lại, không thể có hệ thống "CA" trừ khi bạn đang nói về một máy duy nhất. Luôn có các phân vùng trong mạng ( aphyr.com/posts/288-the-network-is-reliable ) và do đó, một hệ thống phân tán sẽ, trong bất kỳ thời điểm nào, sẽ có sự đánh đổi thành Có sẵn hoặc nhất quán khi đối mặt Phân vùng (nhưng không bao giờ cả hai). Vì vậy, bằng Couchbase cảm ứng là CP. Trong thực tế, điều này xuất phát từ chiến lược sao chép của họ đằng sau BBuckets, đó là a) 1: n master / Slave (s) hoặc b) 1..n dựa trên chuỗi so với nói một hệ thống được mô phỏng theo Dynamo (AP).
Greg Burd

9
Cho đến hôm nay, có một bổ sung rất quan trọng cho bài viết này: Couchbase SyncGateway. Đây thực chất là một phần mang lại sự sao chép CouchDB cho Couchbase ở mức tương thích API, sao cho CouchDB có thể được sao chép bằng Couchbase thông qua SyncGateway. Đó là một thỏa thuận lớn từ góc độ của Couchbase Lite, có thể (ngoại trừ một số trường hợp góc) chuyển đổi liền mạch từ đồng bộ hóa với CouchDB sang đồng bộ hóa với SyncGateway
Leonid Usov

39

Chúng là những phần mềm khác nhau nhưng tương tự nhau. Tôi đã phối lại nội dung từ câu trả lời hàng đầu thành một bức tranh có thể giúp làm rõ "sự khác biệt" cũng như những điều phổ biến:

câu trả lời khác được liên kết ở trên là một mô tả mở rộng của hình ảnh này

Một nhận xét từ Matt Ingenthron thêm vào điều này:

Để thêm một số bối cảnh / chỉnh sửa: Người sáng lập NorthScale là Steve Yen và Dustin Sallings. Tôi đã tham gia cùng họ ngay sau khi thành lập. Ngoài ra, Damien sau đó không tham gia Couchbase, anh là một phần của CouchIO / Couch One trước khi sáp nhập. Trích dẫn một nguồn lịch sử thú vị: https://youtube.com/watch?v=aZ_JOnU8tkI


4
Đó là một thông tin siêu hữu ích!
Zach Smith

3
Để thêm một số bối cảnh / chỉnh sửa: Người sáng lập NorthScale là Steve Yen và Dustin Sallings. Tôi đã tham gia cùng họ ngay sau khi thành lập. Ngoài ra, Damien sau đó không tham gia Couchbase, anh là một phần của CouchIO / Couch One trước khi sáp nhập. Trích dẫn một nguồn lịch sử thú vị: youtube.com/watch?v=aZ_JOnU8tkI
Matt Ingenthron

1
@MattIngenthron Thx để cập nhật. Tôi đã bỏ qua nhận xét của bạn trong câu trả lời, nếu tôi thấy thời gian tôi có thể điều chỉnh sơ đồ phù hợp.
Jeroen

1

Tôi nghĩ rằng CouchBase dường như được coi là sự thay thế 'doanh nghiệp' của CouchDB. Mà theo một cách nào đó dường như là sự thật. Ngoài việc không có khả năng đính kèm các tệp vào các bản ghi (tài liệu) và các điểm cuối REST 'ngoài luồng' so với CouchDB, CouchBase có ngôn ngữ giống như ngôn ngữ sql tức là N1QL (đôi khi được phát âm là Niken). Đây là một trong những lý do tại sao tôi không thực sự thích / khuyên bạn nên sử dụng thuật ngữ 'NoQuery'. Cá nhân tôi thích thuật ngữ 'Không liên quan'.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.