2011-10-22 97 views
13

Tôi gần đây đã yêu CouchDB. Tôi rất vui mừng bởi những lợi ích to lớn của nó và bởi vẻ đẹp của nó. Bây giờ tôi muốn chắc chắn rằng tôi đã không bỏ lỡ bất kỳ nhược điểm show-stop.Nhược điểm của CouchDB

Điều gì nảy sinh trong đầu bạn? Đính kèm là danh sách các điểm mà tôi đã thu thập được. Có gì để thêm không?

  • Bài đăng trên blog từ cuối năm 2010 tuyên bố "không đủ trưởng thành" (bất kỳ điều gì đáng giá).
  • Chậm hơn DBMS trong bộ nhớ.
  • Cập nhật tại chỗ yêu cầu logic phía máy chủ (update handlers).
  • Giao dịch đĩa so với tốc độ: Cơ sở dữ liệu có thể trở nên rất lớn so với các DBMS khác (mặc dù chức năng nén tồn tại).
  • "Chỉ" cuối cùng là nhất quán.
  • Chế độ xem tạm thời trên tập dữ liệu lớn là rất chậm.
  • Sao chép cơ sở dữ liệu lớn may fail.
  • Mô hình bản đồ/giảm yêu cầu xem xét lại (chỉ để hoàn thành).

Điểm duy nhất lo lắng tôi là # 3 (cập nhật tại chỗ), bởi vì nó khá bất tiện. hơn

+0

Điều gì về phí giao tiếp HTTP? Điều gì về những khó khăn để hạn chế giá trị trong chiếc ghế dài (uniques là khó làm) – Raynos

Trả lời

10
  • dữ liệu được trong JSON

Điều đó có nghĩa là tài liệu khá lớn (BigData, băng thông mạng, tốc độ) và có các tên khóa mô tả thực sự đau, vì chúng thêm vào kích thước tài liệu.

cộng some more:

  • Nó không hỗ trợ giao dịch

Nó có nghĩa là thực thi độc đáo của một lĩnh vực trên tất cả các tài liệu không an toàn, ví dụ, thực thi mà một tên người dùng là duy nhất.Một hệ quả khác của CouchDB không có khả năng hỗ trợ khái niệm điển hình của một giao dịch là những thứ như inc/decrementing một giá trị và lưu nó trở lại cũng nguy hiểm. Không có nhiều trường hợp mà chúng tôi muốn chỉ đơn giản là inc/decrement một số giá trị mà chúng tôi không thể chỉ lưu trữ các tài liệu cá nhân riêng biệt và tổng hợp chúng với một cái nhìn.

  • dữ liệu quan hệ

Nếu dữ liệu làm cho rất nhiều ý nghĩa là ở dạng bình thường 3, và chúng tôi cố gắng làm theo mà hình thức trong CouchDB, chúng ta sẽ gặp rất nhiều rắc rối. Một cách có thể để giải quyết vấn đề này là với các collations xem, nhưng chúng ta có thể liên tục chiến đấu với hệ thống. Nếu dữ liệu có thể được định dạng lại để được chuẩn hóa nhiều hơn nữa, thì CouchDB sẽ hoạt động tốt.

  • kho dữ liệu

Vấn đề với điều này là quan điểm tạm thời trong CouchDB trên tập hợp dữ liệu lớn là rất chậm. Sử dụng CouchDB và các khung nhìn vĩnh viễn có thể hoạt động khá tốt. Tuy nhiên, trong hầu hết các trường hợp, một cơ sở dữ liệu định hướng cột của một số loại là một công cụ tốt hơn cho công việc kho dữ liệu.

Nhưng đá CouchDB!

Nhưng đừng để nó lưu ý bạn: NoSQL DB được viết bằng Erlang (CouchDB, Riak) là tốt nhất, vì Erlang có nghĩa là cho các hệ thống phân tán. Hãy vui vẻ với Couch!

5

2 sự vật, mà làm cho tôi khóc khi sử dụng CouchDB (mặc dù nó là tuyệt vời):

  • Nó không được thiết kế cho dữ liệu thường xuyên được cập nhật
  • Nó không có built-in tìm kiếm toàn văn
1
    hiện
  • không hỗ trợ cho các truy vấn ad-hoc (có thể thay đổi theo đời của UnQL)
  • thiếu sự hỗ trợ giao thức nhị phân để liên lạc nhanh hơn
+0

UnQL là vô nghĩa phải trung thực. Nếu tất cả các cơ sở dữ liệu NoSQL hỗ trợ UnQL, chúng ta sẽ sớm thấy cơ sở dữ liệu NoUnQL. Cơ sở dữ liệu NoSQL thú vị theo cách chúng không được thiết kế trên ngôn ngữ truy vấn nhưng trên một cách để lưu trữ dữ liệu. Điều này làm cho mọi thứ trở nên điên rồ như Rest database như CouchDB. Đối với giao thức nhị phân, nó có thể hữu ích nhưng theo như tôi có thể nói, tốc độ của protocole http không chính xác là vấn đề lớn với couchdb. –

0

Nó không có gì để làm với CouchDB chính nó, nhưng là một người mới tương đối trên hiện trường có nghĩa là hầu hết các hệ thống quản trị hệ thống vẫn chưa quen với nó và sẽ không cho phép nó ở bất kỳ đâu gần các trung tâm dữ liệu "của họ". Nếu bạn đang ở trong một tình huống mà bạn đang triển khai đến một môi trường mà bạn không kiểm soát bản thân, đây có thể là một trận chiến.

3
  • Thiếu ACL đọc (không tồn tại đối với các nhà văn, tuy nhiên)

Là một Lotus Domino cũ ủng hộ tôi đang tìm kiếm để CouchDB như một sự thay thế cho một dự án mới, tôi đang đá ra và tìm thấy giới hạn người đọc rất yếu trong Couch và Domino. Trong bảo mật ứng dụng của tôi là một xem xét quan trọng và Couch sẽ yêu cầu một lớp trung gian để xử lý bảo mật người đọc.

Nếu bạn có cơ sở dữ liệu mà mọi người dùng được xác định đều có thể xem tất cả các tài liệu, thì Couch trông giống như một nền tảng thú vị.

Nếu hạn chế số lần đọc là cần thiết thì bạn sẽ cần phải xem xét giải pháp phần mềm trung gian hoặc xem xét giải pháp thay thế khác.

Lưu ý cho nhà phát triển CouchDB: Cải thiện các tùy chọn bảo mật nền tảng. Tôi nhận ra rằng họ sẽ giảm hiệu suất khi sử dụng nhưng lưu ý rằng và làm cho các tùy chọn có sẵn.

Quay lại để xác định cơ sở dữ liệu nào sẽ sử dụng ...

+0

Có. Điều này ngăn tôi chạy các ứng dụng Couch-only. – nisc

+0

Trong trường hợp ai quan tâm, Domino 8.5.3 bao gồm hỗ trợ JSONRest thông qua các tính năng của Dịch vụ dữ liệu Domino. Bạn nhận được mô hình bảo mật Domino đầy đủ cùng với hỗ trợ REST. Rất đẹp. http://www-10.lotus.com/ldd/ddwiki.nsf/xpViewCategories.xsp?lookupName=Domino%20Data%20Service –

Các vấn đề liên quan