我有那些的大致形式文檔的數據庫:CouchDB的歷史觀快照
{"created_at": some_datetime, "deleted_at": another_datetime, "foo": "bar"}
這是小事來獲得在DB非刪除的文件的計數,假設我們不需要在將來處理「deleted_at」。這也是微不足道的創建,降低到類似下面的(使用UTC)一個觀點:
[
{"key": ["created", 2012, 7, 30], "value": 39},
{"key": ["deleted", 2012, 7, 31], "value": 12}
{"key": ["created", 2012, 8, 2], "value": 6}
]
...這意味着,在創建2012-07-30 39個文件被標記,12標記爲刪除在2012-07-31,等等。我想要的是一個有效的機制,用於獲取2012-08-01(0 + 39-12 == 27)「存在」多少文檔的快照。理想情況下,我希望能夠以日期爲鍵或索引查詢視圖或數據庫(例如已預先計算並保存到磁盤的某些數據),並將計數作爲值或文檔。例如:
[
{"key": [2012, 7, 30], "value": 39},
{"key": [2012, 7, 31], "value": 27},
{"key": [2012, 8, 1], "value": 27},
{"key": [2012, 8, 2], "value": 33}
]
這可以計算很輕鬆地通過所有視圖中的行的迭代,保持運行計數器,每天總結,因爲我去,但這種方法減慢隨着數據集增長較大,除非我聰明地緩存或存儲結果。有沒有更聰明的方法來解決這個問題?