2010-07-30 48 views
145

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

+0

Là bước đầu tiên, mongoDB tốt hơn vì nó dễ học hơn nhưng có một số vấn đề. Không có sự lựa chọn tốt nhất để sử dụng một cơ sở dữ liệu noSQL 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ị, định hướng đồ thị, định hướng cột. – Chris

Trả lời

143

Xem sau liên kết

Cập nhật: Tôi tìm thấy lớn comparison of NoSQL cơ sở dữ liệu.

MongoDB (3,2)

  • Được viết bằng: C++
  • điểm chính: cửa hàng tài liệu JSON
  • Giấy phép: AGPL (Drivers: Apache)
  • Giao thức: Tuỳ chỉnh, nhị phân (BSON)
  • Sao chép chính/phụ (tự động chuyển đổi dự phòng với bộ bản sao)
  • Xả tích hợp
  • Queries là những biểu hiện javascript
  • Run tùy ý chức năng javascript server-side
  • Có lập chỉ mục không gian địa lý và truy vấn
  • 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 qua tính năng
  • Tài liệu xác nhận
  • nhật ký
  • Khung kết hợp mạnh mẽ
  • Trên hệ thống 32bit, giới hạn ~ 2.5Gb
  • chữ tìm kiếm 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 biết

nhất sử dụng: Nếu bạn cần truy vấn động. Nếu bạn muốn xác định các chỉ mục, không phải là các hàm map/reduce. 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, làm đầ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 có các cột được xác định trước thực sự giúp bạn quay lại.

CouchDB (1.2)

  • Được viết bằng: Erlang
  • Main điểm: DB nhất quán, dễ sử dụng
  • Giấy phép: Apache
  • Protocol: HTTP/REST
  • Bi-directional) sao chép (,!
  • liên tục hoặc đột xuất,
  • với phát hiện xung đột,
  • do đó, tổng thể r eplication. (!)
  • MVCC - ghi các hoạt động không khối đọc
  • Các phiên bản trước của tài liệu có sẵn
  • Crash-chỉ (đáng tin cậy) thiết kế
  • nhu cầu nén bất cứ lúc nào
  • Xem: bản đồ nhúng/giảm
  • xem Định dạng: danh sách & lãm
  • xác nhận tài liệu phía máy chủ có thể
  • xác thực thể
  • cập nhật theo thời gian thực thông qua '_changes'
  • xử lý
  • do đó, tập tin đính kèm CouchApps (js độc lập các ứng dụng)

nhất sử dụng (!): Đối với tích lũy, thỉnh thoảng thay đổi dữ liệu, trên đó 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. Master-master replication là một tính năng đặc biệt thú vị, cho phép triển khai nhiều trang 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] (http://www.mongodb.org/about/licensing/#licensing-policy) có thể giúp giảm nhẹ. – Patrick

+0

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

+0

@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

118

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

Tôi nghĩ đó là điều khiến nó trở nên thân thiện với nhiều người. CouchDB là tuyệt vời nếu bạn muốn sử dụng hỗ trợ sao chép tổng thể thực sự tuyệt vời với một thiết lập nhiều nút, có thể trong các trung tâm dữ liệu khác nhau hoặc một cái gì đó tương tự.

Bản sao của MongoDB (tập bản sao) là thiết lập master-slave-slave-slave- *, bạn chỉ có thể ghi vào bản gốc trong bộ bản sao và đọc từ bất kỳ bản sao nào.

Đối với cấu hình trang web 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 ra một dịch vụ toàn cầu như CDN cần phải giữ cho tất cả các nút chung được đồng bộ hóa mặc dù đã đọc/ghi cho tất cả chúng, thì việc sao chép trong CouchDB sẽ là một lợi ích rất lớn đối với bạn .

Trong khi MongoDB có 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 "bản đồ-giảm" và khái niệm quan điểm này. Nó cảm thấy kỳ lạ lúc đầu, nhưng khi bạn nhận được hang của 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 chóng vì thế nó làm cho một số ý nghĩa:

  • cửa hàng CouchDB tất cả dữ liệu của bạn trong một b-tree
  • Bạn có thể không phải là "truy vấn" nó tự động với một cái gì đó như "SELECT * FROM dùng ĐÂU ... "
  • Thay vào đó, bạn xác định" chế độ xem "riêng biệt của dữ liệu ..." đâ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 cũ hơn 10 "" ở đây là chế độ xem tất cả người dùng trên 30 tuổi và cứ tiếp tục như vậy.
  • Các chế độ xem này được xác định bằng cách sử dụng phương pháp giảm bản đồ và được định nghĩa là hàm JavaScript.
  • Khi bạn xác định chế độ xem, DB bắt đầu cho ăn tất cả tài liệu của DB mà bạn đã gán chế độ xem, thông qua nó 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 mà 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 đồ/giảm của bạn là gì.
  • Đọc qua these slides, đó là cách làm rõ nhất về bản đồ/giảm trong Couch mà tôi đã thấy.

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

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

Sự 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 là tất cả các chi tiết nhỏ.

Nếu bạn muốn tốc độ thô và địa ngục với an toàn dữ liệu, bạn có thể làm cho Mongo chạy nhanh hơn CouchDB như bạn có thể yêu cầu nó hoạt động hết bộ nhớ và không cam kết vào đĩa ngoại trừ 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 truyền thông dựa trên HTTP sẽ chậm hơn 2-4 lần so với giao tiếp nhị phân nguyên bản với Mongo trong "tốc độ trên mọi thứ!" kịch bản.

Hãy nhớ rằng tốc độ điên cuồng điên cuồng là vô dụng nếu máy chủ bị lỗi hoặc hỏng đĩa và làm hỏng DB của bạn, vì vậy điểm dữ liệu không tuyệt vời như khi bạn không làm như vậy hệ thống giao dịch trên Phố Wall, trong trường hợp đó là Redis).

Hy vọng rằng tất cả sẽ hữu ích!

+0

"MongoDB thực sự là MySQL của thế giới NoSQL" - Tôi không biết nếu mọi thứ đã thay đổi nhưng bài viết này của năm 2014 không đồng ý: http://www.sarahmei.com/blog/2013/11/11/ Tại sao, bạn-nên-không bao giờ-sử dụng-mongodb/ –

+0

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

2

Hiện có nhiều cơ sở dữ liệu NoSQL hơn trên thị trường hơn bao giờ hết.Tôi khuyên bạn nên xem xét Gartner Magic Quadrant nếu bạn đang tìm kiếm một cơ sở dữ liệu cũng sẽ tuyệt vời 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/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

Tôi muốn đề nghị Couchbase cho bất cứ ai không thử nó chưa, nhưng không phải dựa trên phiên bản được hiển thị trong báo cáo (2.5.1) vì nó là gần 2 bản sửa đổi phía sau, nơi CB máy chủ là ngày hôm nay, gần phát hành 4.0 trong 2H15.

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

Các phần khác về Couchbase như một nhà cung cấp/sản phẩm là nó là một loại đa dụng của DB. 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 quy mô đa chiều, Memcached, bộ nhớ cache sang một bên với sự kiên trì và hỗ trợ SQL tuân thủ ANSI 92 với kết nối tự động, sao chép vào các cụm DR bằng cách nhấn nút và thậm chí có một thành phần di động tích hợp vào hệ sinh thái.

Nếu không có gì khác, nó có giá trị kiểm tra ra các tiêu chuẩn mới nhất:

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

1

video Edureka trong youtube về NoSQL là một số video hướng dẫn tốt nhất. Tôi đã bắt đầu trên MongoDb & Cassandra sau khi xem những video này.

https://www.youtube.com/watch?v=gJFG04Sy6NY 
https://www.youtube.com/watch?v=KSq6tMMXZ8s 
https://www.youtube.com/watch?v=3z1KFA2qcSo 

thuyết trình tốt có sẵn trong slideshare.net

http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1 

http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 

Edureka trình bày trong SlideShare là phần mở rộng của video trong youtube. Bạn có thể xem bản trình bày này dưới dạng tóm tắt video youtube.