2011-10-22 108 views
13

我最近愛上了CouchDB。我對它的巨大利益和美麗感到非常興奮。現在我想確保我沒有錯過任何顯示停止的缺點。CouchDB的缺點

你在想什麼?附上的是我收集的積分清單。有什麼補充嗎?

  • 從2010年起的博客帖子聲稱「不夠成熟」(無論什麼值得)。
  • 比內存數據庫管理系統慢。
  • 就地更新需要服務器端邏輯(update handlers)
  • 交易磁盤與速度:與其他DBMS相比,數據庫可能變得非常龐大(雖然存在壓縮功能)。
  • 「Only」最終一致性。
  • 大型數據集的臨時視圖是非常慢
  • 複製大型數據庫may fail
  • 地圖/縮小范式需要重新思考(僅爲完整性)。

是擔心的唯一一點是#3(就地更新),因爲它是相當不方便。

+0

HTTP通信開銷如何?在沙發上限制價值的難度如何?(獨一無二難以實現) – Raynos

回答

10
  • 的數據是在JSON

這意味着文檔非常大(BigData,網絡帶寬,速度),並且描述性鍵名實際上會受到傷害,因爲它們合起來就是文檔大小。

some more

  • 它不支持事務

這意味着,在所有文檔中執行一個領域的獨特性是不是安全的,例如,執行一個用戶名是唯一的。CouchDB無法支持典型事務概念的另一個後果是,增加/減少值並將其存回等操作也很危險。沒有太多實例可以簡單地增加/減少一些值,我們不能單獨存儲單個文檔並將它們與視圖聚合。

  • 關係數據

如果數據使得有很大的意義是在第三範式,我們儘量按照CouchDB的這種形式,我們將碰到很多的麻煩。解決這個問題的一種可能的方法是使用視圖歸類,但是我們可能會不斷地與系統打交道。如果數據可以重新格式化得更加非規範化,那麼CouchDB會正常工作。

  • 數據倉庫

這樣做的問題是,在大型數據集在CouchDB中臨時視圖,非常慢。使用CouchDB和永久視圖可以很好地工作。但是,在大多數情況下,某種列嚮導數據庫對於數據倉庫工作來說是一個更好的工具。

但是CouchDB Rocks!

但是不要讓它覺察你:用Erlang(CouchDB,Riak)編寫的NoSQL DB是最好的,因爲Erlang是爲分佈式系統設計的。與沙發玩得開心!

5

2個更多的東西,這使得使用CouchDB的時候我哭了(雖然它的真棒):

  • 它是不適合頻繁更新的數據
  • 它沒有內置的全文檢索
1
  • 目前的即席查詢不支持
  • 缺乏二進制協議支持更快的通信
+0

UnQL對於老實說毫無意義。如果所有NoSQL數據庫都支持UnQL,我們很快會看到NoUnQL數據庫。 NoSQL數據庫的有趣之處在於它們不是在查詢語言的基礎上設計的,而是用於存儲數據的。這使事情像Rest數據庫一樣瘋狂,像CouchDB一樣可能。 至於二進制協議,它可能是有用的,但據我所知,http protocole的速度並不完全是couchdb的大問題。 –

0

(可能與UnQL的到來改變),這是沒有任何使用CouchDB本身,而是作爲一個現場的相對新手意味着大多數系統管理員仍然不熟悉它,並且不會允許它在「他們的」數據中心附近的任何地方。如果你處於某種情況下,你不想控制自己,這可能是一場激烈的戰鬥。讀者的ACL

3
  • 缺乏(但確實存在一個作家,)

作爲一個老的Lotus Domino親我一直在尋找的CouchDB作爲替代新項目中,我踢了,找到了讀者的限制在Couch vs. Domino中很弱。在我的應用程序中,安全性是一個重要的考慮因素,Couch需要中間件層來處理讀者安全。

如果您擁有所有定義的用戶都可以看到所有文檔的數據庫,那麼Couch看起來就像一個有趣的平臺。

如果需要限制讀取,則需要查看中間件解決方案或考慮其他備選方案。

CouchDB開發人員注意事項:改進平臺安全選項。我意識到他們會在使用時降低性能,但請注意並提供選項。

現在回到確定使用哪個數據庫...

+0

是的。這阻止了我運行僅限Couch的應用程序。 – nisc

+0

如果有人感興趣,Domino 8.5.3通過Domino數據服務功能提供JSONRest支持。 您將獲得完整的Domino安全模型以及REST支持。非常好。 http://www-10.lotus.com/ldd/ddwiki.nsf/xpViewCategories.xsp?lookupName=Domino%20Data%20Service –