2011-01-18 34 views
38

Điểm mạnh và điểm yếu của các cơ sở dữ liệu NoSQL khác nhau có sẵn là gì?Redis, CouchDB hoặc Cassandra?

Đặc biệt, có vẻ như Redis yếu khi phân phối tải ghi trên nhiều máy chủ. Đó là trường hợp? Nó là một vấn đề lớn? Một dịch vụ phải lớn đến mức nào trước khi có thể là một vấn đề lớn?

Trả lời

77

Điểm mạnh và điểm yếu của cơ sở dữ liệu NoSQL (và cơ sở dữ liệu SQL) là cao tùy thuộc vào trường hợp sử dụng của bạn. Đối với các dự án rất lớn, hiệu suất là vua; nhưng đối với các dự án mới, hoặc các dự án mà thời gian và tiền bạc bị giới hạn, đơn giản và thời gian ra thị trường có lẽ là quan trọng nhất. Để tự dạy cho mình (mở rộng quan điểm của bạn, trở thành một lập trình tốt hơn, có giá trị hơn), có lẽ điều quan trọng nhất là khái niệm cơ bản vững chắc, đơn giản.

Bạn dự định loại dự án nào?

Một số điểm mạnh và điểm yếu, ra khỏi đỉnh đầu của tôi:

  • Redis
    • Rất đơn giản giá trị khóa "biến máy chủ toàn cầu"
    • Rất đơn giản (một số sẽ nói "không -hệ thống truy vấn "tồn tại")
    • Dễ dàng nhanh nhất trong danh sách này
    • Giao dịch
    • bộ
    • dữ liệu phải phù hợp trong bộ nhớ
    • phân nhóm non, với tương lai không rõ ràng (tôi chắc chắn rằng nó sẽ là tuyệt vời, nhưng nó vẫn chưa quyết định.)
  • Cassandra
    • Có thể cho rằng các động lực cộng đồng nhất của cơ sở dữ liệu giống BigTable
    • Có lẽ danh sách dễ dàng nhất trong danh sách này để quản lý trong các cụm lớn/đang phát triển
    • Hỗ trợ cho bản đồ/giảm, tốt cho phân tích, lưu trữ dữ liệu
    • đa trung tâm dữ liệu sao chép
    • du dương tính nhất quán/sẵn có
    • Không điểm duy nhất của thất bại
    • Bạn phải biết những gì các truy vấn, bạn sẽ chạy sớm trong dự án, để chuẩn bị hình dạng dữ liệu và lập chỉ mục
  • CouchDB
    • Thực hiện hỗ trợ đồng bộ hóa (sao chép) tốt nhất, hỗ trợ kiến ​​trúc chính/phụ, chủ/chính và nhiều kiến ​​trúc kỳ lạ khác
    • Giao thức HTTP, trình duyệt/ứng dụng có thể tương tác trực tiếp với DB một phần hoặc toàn bộ. (Đồng bộ cũng được thực hiện qua HTTP)
    • Sau một đường cong học tập ngắn gọn, hệ thống truy vấn khá phức tạp sử dụng Javascript và ánh xạ/bản đồ
    • Hoạt động theo nhóm (không có SPOF, tính nhất quán có thể điều chỉnh/tính khả dụng) hiện là ngã ba đáng kể (BigCouch). Nó có thể sẽ hợp nhất vào Couch nhưng không có lộ trình.
    • Tương tự như vậy, phân cụm và đa trung tâm dữ liệu về mặt lý thuyết có thể (điều "kỳ lạ" tôi đã đề cập) tuy nhiên bạn phải tự viết tất cả các công cụ đó vào lúc này.
    • Chỉ thêm định dạng tệp (cả cơ sở dữ liệu và chỉ mục) tiêu thụ đĩa một cách đáng ngạc nhiên một cách nhanh chóng và bạn phải chạy thủ công (hút bụi) tạo bản sao đầy đủ của tất cả bản ghi trong cơ sở dữ liệu. Điều tương tự cũng được yêu cầu cho mỗi tệp chỉ mục. Một lần nữa, bạn phải là thợ công cụ của riêng bạn.
+8

+1 "sự đơn giản và thời gian đưa ra thị trường có lẽ là quan trọng nhất". Tối ưu hóa doanh nghiệp của bạn trước tiên, công nghệ sau này. Một nhược điểm của Redis là nó thực sự chỉ tốt cho các bộ dữ liệu phù hợp với bộ nhớ; khả năng phân cụm của nó và các giải pháp dựa trên đĩa bị hạn chế. Điểm cộng Cassandra khác là bản sao đa trung tâm dữ liệu, tính nhất quán có thể điều chỉnh/tính khả dụng cho mỗi hoạt động và không có điểm lỗi nào (mỗi nút trong cụm đóng vai trò giống nhau, không có chủ). Một nhược điểm cho Cassandra là bạn phải suy nghĩ về các truy vấn của bạn trước khi bạn tổ chức dữ liệu của bạn, và điều này có thể mất một số nỗ lực. –

+5

Nhân tiện, theo kinh nghiệm của tôi, "các dự án mà thời gian và tiền bạc bị hạn chế" bao gồm ** phần lớn ** các dự án trong ** phần lớn ** của tuổi thọ của họ. – JasonSmith

+2

BigCouch là phần mềm tuyệt vời. Nó được dẫn đầu bởi các thành viên cốt lõi của nhóm phát triển CouchDB. Nó sẽ được duy trì và phát triển hơn nữa. Trong khi tôi không biết về một bản đồ đường, tôi hy vọng BigCouch sẽ được sáp nhập trở lại vào CouchDB theo một cách nào đó. Và nếu bạn nghĩ tôi là một fanboy vô vọng, hãy xem BigCouch được thực hiện bởi đối thủ cạnh tranh của công ty tôi! – JasonSmith