對於具有特定type
的所有文檔,我在我的應用中只有一個查詢,它只選擇最後一個文檔的單個字段。我按日期映射這些文檔,因此將降序查詢限制爲1應該可以做到。我所困擾的問題是這個視圖會緩存所有這種類型的文檔,佔用顯然多餘的空間。節省空間的視圖
所以我的問題是:
- 將加入降低功能,這將減少對單一最後一個文檔,這種觀點節省任何空間,我還是認爲仍然必須存儲所有相關的文件?
- 如果沒有,是否還有其他節省空間的策略?
對於具有特定type
的所有文檔,我在我的應用中只有一個查詢,它只選擇最後一個文檔的單個字段。我按日期映射這些文檔,因此將降序查詢限制爲1應該可以做到。我所困擾的問題是這個視圖會緩存所有這種類型的文檔,佔用顯然多餘的空間。節省空間的視圖
所以我的問題是:
http://127.0.0.1:5984/YOURDB/_all_docs?start_key="<TYPE>_<CURRENT_TIME>"&descending=true&limit=1
。map
。不發射任何值,地圖將存儲文檔的密鑰和id/ver。在查詢時使用include_doc
來檢索文檔。這似乎是對我的CouchDB的想法:通過緩存查詢「浪費」的空間,讓他們能夠通過快速回答如果數據沒有變化頻繁。也許如果你非常在意浪費空間,那麼你的情況不是CouchDB的答案?
我的couchdb安裝程序有sperate RAID驅動器上的數據和索引。地圖是用erlang編寫的,我發現它的速度比JavaScript快8倍,地圖當然返回null。我保持鍵小,我也打破了我的觀點,跨越許多設計文件,我保持我的數據非常平坦,這提高了序列化性能。
好的建議。謝謝 –
非常好的答案。謝謝!由於我將Cloudant用作雲中數據庫主機,因此我有點受限於沙發。你會建議哪種NoSQL替代方案?在這種情況下,向Cloudant提供替代服務的建議會更好。 –
請注意,無論使用哪種數據庫系統,如果您不用字段'type'和'date'創建索引,您將選擇所需查詢的速度會非常慢。您可以考慮在'type'上過濾的映射,並返回關鍵日期並且沒有值作爲索引。與任何其他數據庫相比,這可能會更有效率。沙發的問題在於很難使認爲效率不高:沒有加入,沒有索引沒有搜索等。 –
我真的很喜歡你所有的建議,非常詼諧。另一個問題:是不是形式爲' _ '的基礎查詢將成爲最慢?在找到它之前,是不是必須通過所有的文檔ID? –