成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CouchDB 讓人頭痛的十大問題

數據庫 其他數據庫
下面十條內容來自paperplanes的博主Mathias Meyer,他也是一位NoSQL的實踐者,CouchDB就是其鐘愛的數據庫之一。正所謂愛之深恨之切,在使用CouchDB的過程中,他發現很多不順手的地方,就是本文列舉的十大問題。

下面十條內容來自paperplanes的博主Mathias Meyer,他也是一位NoSQL的實踐者,CouchDB就是其鐘愛的數據庫之一。正所謂愛之深恨之切,在使用CouchDB的過程中,他發現很多不順手的地方,就是本文列舉的十大問題。

View是在讀時更新的

我們知道CouchDB不支持動態查詢,也就是說你的每個查詢,都需要事先創建一個對應的View,創建View是很快的,即使你的數據集很大,這 是因為CouchDB并不在創建View的時候就建立View索引,而是在讀取的時候來做這個事。當在一個View上執行一次讀操作時,CouchDB會 對比當前View中的索引更新時間與最后寫操作時間,如果發現在索引更新之后又有寫操作,那么會把這段時間的寫操作合并到索引中再返回給客戶端。

你可以想象到,如果數據集非常大,你創建完View后的第一次讀取會是多慢。同樣的,如果你兩次讀操作間隔期間有太多的寫操作,那么也會導致讀操作 非常慢,有的朋友通過cron任務定時對View進行查詢,從而觸發定時的索引更新操作,以減少真正讀操作需要等待的時間,不得不說這真是蛋疼。這一切, 都是因為CouchDB的View是在讀時更新導致的。

而實際上,如果你不愿意等待CouchDB去更新完索引后再返回數據,你也可以通過stale=ok參數指定它返回老數據即可,不用做更新操作。但 我們不能總是訪問老數據,作者希望可以通過指定查詢先返回老的數據,再進行相應的索引更新操作。而實際上這一功能已經在1.1.0版本中實現了,在 1.1.0版本中,添加了一個stale=update_after的指定,可以實現返回老數據后再在后臺更新的功能。

缺乏自動壓縮功能

CouchDB采用了append-only的方法進行數據更新,也就是所有數據的寫操作,都不會修改原來的數據文件,而是追加上新的版本來實現。 這使得CouchDB能夠實現對同一條數據保存多個版本。也使得CouchDB的數據文件永遠不會被改花掉。因為它永遠在做append操作,即使出現問 題,只要去掉尾巴上一某一段數據就能回到之前某個時間的數據快照。

然而,這些好的特性必然需要付出代價,這代價就是數據大小會只增不減的膨脹。所以,數據壓縮工作是遲早都得做的事。但是CouchDB并沒有提供數據自動壓縮的功能。這讓人很郁悶。

不支持局部更新

局部更新的意思就是,不更新整條數據,只更新其它某個屬性或字段。這個看似天經地義的功能,在CouchDB里卻沒有。在CouchDB中,所有的update操作都需要對整條數據進行更新。

缺乏內存的擴展性支持

CouchDB的同步機制是很牛X的,這幾乎是它的殺手級功能。你可以隨意在集群中添加刪除節點, 可以隨意指定Master和Slave的角色, 數據都會很好的同步到所有節點上。能達到這樣的效果,是由CouchDB本身的機制決定的。然而,我們并不能做跨節點的讀寫操作。

在這方面,CouchDB-lounge算是一個嘗試,但是它把整個架構復雜化了,我感覺不太舒服。

分頁實現起來會很奇怪

如果你要對CouchDB中的數據進行分頁展示,這會比較麻煩,在《CouchDB權威指南》中有一個對分頁的實現,但是這個實現給人感覺非常別扭。如果你要在CouchDB中實現分頁的話,最好還是用那個“獲取更多”按鈕的方式來做。

范圍查詢使用不太方便

如果你的key是這樣的['123', '2010/07/21'],其中前一部分為查詢的key,后一部分為時間,用于保證記錄的順序性。這時候你要查詢所有’123′開頭的記錄時,就需要指 定起始條件為 ['123'],并且還必須指定一個終止條件為['123',{}],這樣讓人感覺用起得很不方便。

CommonJS無法用于mapreduce函數中

在CouchDB 0.11版本中,CommonJS已經可以用在view函數上,但是一直不能用在mapreduce函數中。這讓我總是重復一些寫過的代碼。

缺乏document之間完備的包含關系

在CouchDB 0.11中,map函數可以通過{_id: doc.other_id}的方式包含另外一個document的引用,在查詢時能夠獲取到對應這個文檔的id,但是再進一步,如果我想再獲取被包含的這 個文檔的屬性,那就沒辦法了。希望能夠有辦法通過當前集合的查詢,獲取并返回這個包含的文檔的某些屬性。

讀操作總是會落到磁盤上

CouchDB沒有實現自己的緩存。在寫操作中,你可以通過delay commit的方式將寫操作延遲同步,這樣就避免了每次寫操作就需要寫磁盤。但除此之外,CouchDB沒有做任何緩存。對于移動設備上的CouchDB 來說,寫磁盤可能會好一些,畢竟移動設備上的flash設備比服務器上的傳統磁盤性能要好一些。

沒用的錯誤信息

CouchDB的錯誤信息經常讓人摸不著頭腦,根本就看不明白錯誤出在哪里。比如下面這一段,你能告訴我它說明了什么問題嗎。

  1. {<0.84.0>,supervisor_report,  
  2.  [{supervisor,{local,couch_secondary_services}},  
  3.   {errorContext,start_error},  
  4.   {reason,  
  5.       {'EXIT',  
  6.           {undef,  
  7.               [{couch_auth_cache,start_link,[]},  
  8.                {supervisor,do_start_child,2},  
  9.                {supervisor,start_children,3},  
  10.                {supervisor,init_children,2},  
  11.                {gen_server,init_it,6},  
  12.                {proc_lib,init_p_do_apply,3}]}}},  
  13.   {offender,  
  14.       [{pid,undefined},  
  15.        {name,auth_cache},  
  16.        {mfa,{couch_auth_cache,start_link,[]}},  
  17.        {restart_type,permanent},  
  18.        {shutdown,brutal_kill},  
  19.        {child_type,worker}]}]}} 

好了,大概就這些吧。雖然上面說了這么多CouchDB讓人不爽的地方,但是總的來說,我還是很喜歡CouchDB的,雖然有上面一些讓人不爽的地 方,但是它還是能幫我處理很多問題。所以爭論一個東西是否要用,并不是看它能不能滿足所有需求,而是看它能不能滿足你要的核心需求就行了。

英文:http://www.paperplanes.de/2010/7/26/10_annoying_things_about_couchdb.html

原文鏈接:http://blog.nosqlfan.com/html/3667.html

【編輯推薦】

  1. MoreSQL(NewSQL)挑戰 NoSQL?
  2. 甲骨文NoSQL數據庫第一印象
  3. 先睹為快:甲骨文NoSQL數據庫
  4. 分布式緩存能否作為NoSQL數據庫?
  5. 淺析Oracle NoSQL Database
責任編輯:林師授 來源: NoSQLFan
相關推薦

2022-03-09 23:28:31

Java開發異常

2023-09-19 10:19:24

2022-06-16 11:02:18

IT領導者首席信息官

2013-07-25 14:56:37

JavaEE 性能

2015-11-02 14:15:05

2013-06-21 14:36:02

JavaEEx性能

2019-10-21 08:31:34

容器微服務docker

2009-07-16 10:04:56

Java語言

2024-06-21 14:13:45

2009-12-08 14:42:30

Windows 7操作

2020-11-30 14:40:52

事務系統項目

2014-01-16 09:25:46

2013-01-18 11:18:02

2023-08-03 09:45:52

2011-11-16 09:43:07

2011-03-11 14:36:56

SQL Server數

2011-03-16 13:54:51

十大問題應用iOS

2012-01-09 11:25:32

云計算

2024-08-06 10:00:11

2013-08-29 09:50:07

云性能測試云安全聯盟CSA
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区国产 | 日韩色在线 | 人人做人人澡人人爽欧美 | 亚洲成人一区 | 日韩精品一区二区三区视频播放 | 欧美1区2区 | www.99精品 | 亚洲日本中文字幕在线 | 日韩在线观看 | 91在线精品视频 | 国产欧美视频一区二区 | 三级黄色片在线 | 久久久久无码国产精品一区 | 狠狠干2020| 欧美另类视频在线 | 国产美女一区二区 | 日韩中文字幕 | 国产成人精品一区二区三区网站观看 | 亚洲成人三级 | 亚洲午夜视频在线观看 | 免费观看一级特黄欧美大片 | 欧美国产中文 | 九热在线 | 欧美激情欧美激情在线五月 | 国产高清在线观看 | 中文字幕高清av | 中文字幕视频在线看5 | 成人av一区二区三区 | 日韩精品一区二区三区 | 日本不卡一区 | 亚洲国产精品一区 | 日韩欧美理论片 | av免费网址| 91精品一区二区三区久久久久 | 精精国产xxxx视频在线播放 | 91精品国产综合久久国产大片 | 日韩免费高清视频 | 亚洲天堂一区 | 成人在线精品视频 | 久久精品一级 | 五月婷婷激情网 |