NoQuery - MongoDB vs CouchDB [đã đóng]


154

Tôi là một người hoàn toàn mới khi nói đến phong trào NoQuery. Tôi đã nghe nhiều về MongoDB và CouchDB. Tôi biết có sự khác biệt giữa hai. Bạn khuyên bạn nên học gì khi bước đầu tiên vào thế giới NoQuery?


Bước đầu tiên mongoDB là tốt hơn vì nó dễ học hơn nhưng nó có một số vấn đề. Không có lựa chọn tốt nhất để sử dụng cơ sở dữ liệu noQuery cụ thể, nó phụ thuộc vào những gì bạn phải làm. Kiểm tra hướng tài liệu, khóa-giá trị, hướng đồ thị, hướng cột.
Chris

Câu trả lời:


148

Xem các liên kết sau

Cập nhật : Tôi tìm thấy so sánh tuyệt vời của cơ sở dữ liệu NoQuery .

MongoDB (3.2)

  • Viết bằng: C ++
  • Điểm chính: Lưu trữ tài liệu JSON
  • Giấy phép: AGPL (Trình điều khiển: Apache)
  • Giao thức: Tùy chỉnh, nhị phân (BSON)
  • Sao chép chủ / nô lệ (chuyển đổi dự phòng tự động với các bộ bản sao)
  • Shending tích hợp
  • Truy vấn là biểu thức javascript
  • Chạy các chức năng javascript tùy ý phía máy chủ
  • Có chỉ mục và truy vấn không gian địa lý
  • Nhiều công cụ lưu trữ với các đặc tính hiệu suất khác nhau
  • Hiệu suất trên các tính năng
  • Xác thực tài liệu
  • Nhật ký
  • Khung tổng hợp mạnh mẽ
  • Trên các hệ thống 32 bit, giới hạn ở ~ 2,5Gb
  • Tìm kiếm văn bản tích hợp
  • GridFS để lưu trữ dữ liệu lớn + siêu dữ liệu (không thực sự là một FS)
  • Trung tâm dữ liệu nhận thức

Sử dụng tốt nhất : Nếu bạn cần truy vấn động. Nếu bạn muốn xác định chỉ mục, không phải chức năng ánh xạ / giảm. Nếu bạn cần hiệu suất tốt trên một DB lớn. Nếu bạn muốn CouchDB, nhưng dữ liệu của bạn thay đổi quá nhiều, hãy lấp đầy đĩa.

Ví dụ : Đối với hầu hết mọi thứ bạn sẽ làm với MySQL hoặc PostgreSQL, nhưng việc có các cột được xác định trước thực sự cản trở bạn.

CouchDB (1.2)

  • Viết bằng: Erlang
  • Điểm chính: Tính nhất quán của DB, dễ sử dụng
  • Giấy phép: Apache
  • Giao thức: HTTP / REST
  • Nhân rộng hai chiều (!),
  • liên tục hoặc đặc biệt,
  • với phát hiện xung đột,
  • do đó, nhân rộng chủ-chủ. (!)
  • MVCC - thao tác ghi không chặn đọc
  • Các phiên bản trước của tài liệu có sẵn
  • Thiết kế chỉ có sự cố (đáng tin cậy)
  • Nhu cầu nén theo thời gian
  • Lượt xem: nhúng / giảm bản đồ
  • Dạng xem định dạng: danh sách & chương trình
  • Có thể xác thực tài liệu phía máy chủ
  • Có thể xác thực
  • Cập nhật theo thời gian thực thông qua '_changes' (!)
  • Xử lý tệp đính kèm

Sử dụng tốt nhất : Để tích lũy, thỉnh thoảng thay đổi dữ liệu, trên đó các truy vấn được xác định trước sẽ được chạy. Những nơi mà phiên bản là quan trọng.

Ví dụ : hệ thống CRM, CMS. Sao chép chính chủ là một tính năng đặc biệt thú vị, cho phép triển khai nhiều trang web dễ dàng.


1
Đối với bất kỳ ai quan tâm đến giấy phép máy chủ của MongoDB là AGPL, hãy xem chính sách cấp phép của mongodb có thể giúp giảm bớt.
Patrick

@amra Vậy, ý bạn là nếu tôi lưu dữ liệu và chỉ đọc nó, sử dụng couchdb là lựa chọn tốt nhất?
Verystrongjoe

@verystrongjoe Nó phụ thuộc vào độ phức tạp của dữ liệu và truy vấn. Bạn thường không thể nói cái nào là tốt nhất.
amra

@amra Ok. Nhưng .. Nếu nó sẽ tích lũy dữ liệu và chọn dữ liệu và tôi phải chọn giữa mongo và couch, cái nào tốt hơn?
Verystrongjoe

CouchApps "không còn được đề xuất" kể từ ~ 2012: docs.couchdb.com/en/latest/ddocs
Tim Sylvester

123

Nếu bạn đến từ thế giới MySQL, MongoDB sẽ "cảm thấy" tự nhiên hơn rất nhiều vì sự hỗ trợ ngôn ngữ giống như truy vấn của nó.

Tôi nghĩ đó là những gì làm cho nó rất thân thiện với nhiều người.

CouchDB thật tuyệt vời nếu bạn muốn sử dụng hỗ trợ sao chép chính chủ tuyệt vời với thiết lập nhiều nút, có thể trong các trung tâm dữ liệu khác nhau hoặc đại loại như thế.

Bản sao của MongoDB (bộ bản sao) là một thiết lập chính-nô lệ-nô lệ-nô lệ- *, bạn chỉ có thể viết thư cho chủ trong một bộ bản sao và đọc từ bất kỳ trong số chúng.

Đối với một cấu hình trang web tiêu chuẩn, điều đó là tốt. Nó ánh xạ tới việc sử dụng MySQL thực sự tốt.

Nhưng nếu bạn đang cố gắng tạo một dịch vụ toàn cầu như CDN cần giữ cho tất cả các nút toàn cầu được đồng bộ hóa mặc dù đọc / ghi cho tất cả chúng, thì một cái gì đó giống như bản sao trong CouchDB sẽ là một lợi ích rất lớn cho bạn.

Trong khi MongoDB có một ngôn ngữ giống như truy vấn mà bạn có thể sử dụng và cảm thấy rất trực quan, CouchDB có cách tiếp cận "thu nhỏ bản đồ" và các khái niệm về quan điểm này. Ban đầu nó cảm thấy kỳ lạ, nhưng khi bạn hiểu rõ về nó, nó thực sự bắt đầu cảm thấy trực quan.

Dưới đây là một tổng quan nhanh để nó có ý nghĩa:

  • CouchDB lưu trữ tất cả dữ liệu của bạn trong cây b
  • Bạn không thể "truy vấn" nó một cách linh hoạt bằng một cái gì đó như "CHỌN * TỪ người dùng Ở ĐÂU ..."
  • Thay vào đó, bạn xác định "lượt xem" riêng biệt cho dữ liệu của mình ... "đây là chế độ xem của tất cả người dùng của tôi", "đây là chế độ xem của tất cả người dùng trên 10" "ở đây là chế độ xem của tất cả người dùng trên 30 tuổi" và đây là chế độ xem của tất cả người dùng trên 30 tuổi và Sớm.
  • Các chế độ xem này được xác định bằng cách sử dụng phương pháp thu nhỏ bản đồ và được xác định là các hàm JavaScript.
  • Khi bạn xác định chế độ xem, DB bắt đầu cung cấp tất cả các tài liệu của DB mà bạn đã gán chế độ xem, thông qua đó và ghi lại kết quả của các chức năng của bạn dưới dạng "chỉ mục" trên dữ liệu đó.
  • Có một số truy vấn cơ bản bạn có thể thực hiện trên các chế độ xem như yêu cầu một khóa (ID) cụ thể hoặc phạm vi ID bất kể chức năng bản đồ / thu nhỏ của bạn làm gì.
  • Đọc qua các slide này , đó là cách làm rõ / giảm bản đồ tốt nhất trong Couch tôi từng thấy.

Vì vậy, cả hai nguồn này đều sử dụng các tài liệu JSON, nhưng CouchDB tuân theo cách tiếp cận này "mọi máy chủ đều là chủ và có thể đồng bộ hóa với thế giới", điều này thật tuyệt vời nếu bạn cần nó, trong khi MongoDB thực sự là MySQL của thế giới NoQuery.

Vì vậy, nếu điều đó nghe giống như những gì bạn cần / muốn, hãy đi cho điều đó.

Những khác biệt nhỏ như giao thức nhị phân của Mongo so với giao diện RESTful của CouchDB đều là những chi tiết nhỏ.

Nếu bạn muốn tốc độ thô và an toàn với dữ liệu, bạn có thể làm cho Mongo chạy nhanh hơn CouchDB vì bạn có thể yêu cầu nó hoạt động hết bộ nhớ và không đưa mọi thứ vào đĩa trừ các khoảng thời gian thưa thớt.

Bạn có thể làm tương tự với Couch, nhưng giao thức giao tiếp dựa trên HTTP sẽ chậm hơn 2-4 lần so với giao tiếp nhị phân thô với Mongo trong "tốc độ trên tất cả mọi thứ!" kịch bản.

Hãy nhớ rằng tốc độ điên cuồng điên rồ là vô ích nếu máy chủ gặp sự cố hoặc hỏng đĩa làm hỏng và khiến DB của bạn bị lãng quên, do đó điểm dữ liệu không đáng kinh ngạc như vậy (trừ khi bạn đang thực hiện các hệ thống giao dịch thời gian thực trên Wall Đường phố, trong trường hợp nhìn vào Redis).

Mong rằng tất cả sẽ giúp!


"MongoDB thực sự là MySQL của thế giới NoQuery" - Tôi không biết liệu mọi thứ đã thay đổi hay chưa nhưng bài viết năm 2014 này không đồng ý: sarahmei.com/blog/2013/11/11/why-you-should-never-use- mongodb
Onur Yıldırım

Trong khi, tinh thần lỏng lẻo tôi nghĩ rằng bình luận vẫn hoạt động, bạn đã đúng, NHIỀU đã thay đổi trong nửa thập kỷ qua và bình luận của tôi nên dễ dàng bị bác bỏ.
Riyad Kalla


1

Hiện tại có rất nhiều cơ sở dữ liệu NoQuery trên thị trường hơn bao giờ hết. Tôi khuyên bạn thậm chí nên xem Gartner Magic Quadrant nếu bạn đang tìm kiếm một cơ sở dữ liệu cũng sẽ rất tốt cho các ứng dụng doanh nghiệp dựa trên hỗ trợ, khả năng mở rộng, quản lý và chi phí.

http://www.gartner.com/tĩ/reprints.do?id=1-23A415Q&ct=141020&st=sb

Tôi muốn đề xuất Couchbase cho bất kỳ ai chưa dùng thử, nhưng không dựa trên phiên bản được hiển thị trong báo cáo (2.5.1) vì gần 2 phiên bản phía sau nơi CB Server hiện nay, sắp phát hành 4.0 trong 2H15 .

http://www.couchbase.com/come-in-couchbase-server-4-0

Phần khác về Couchbase với tư cách là nhà cung cấp / sản phẩm là nó là loại DB đa dụng. Nó có thể hoạt động như một kho lưu trữ K / V thuần túy, Cơ sở dữ liệu định hướng tài liệu với tỷ lệ đa chiều, Memcached, lưu trữ bộ nhớ cache và hỗ trợ SQL tuân thủ ANSI 92 với các phép nối tự động, sao chép vào cụm DR chỉ bằng một nút nhấn và thậm chí có một thành phần di động tích hợp trong hệ sinh thái.

Nếu không có gì khác, nó đáng để kiểm tra các điểm chuẩn mới nhất:

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoQuery-Technical-Comparison-Report.html

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.