2012-07-18 88 views
1

我需要做一個消息應用程序,我想使用couchdb。創建大量couchdb數據庫來存儲註釋是一個好主意嗎?

消息文件是像這樣的:

message = { 
    'from':'uuid1', 
    'to':'uuid2', 
    'message':'asd asd asd', 
    'date':1342643405.84 
} 

我需要過濾得到旨在給用戶的消息,並通過日期做分頁。

所以過濾我創建了一個視圖... EMIT([doc.from,doc.to] DOC)...

而要做到更好的分頁不僅僅是保持按鍵的軌道,我想每天,每週或每月創建一個新的數據庫來存儲消息。該數據庫名可以是這樣的(這是由天):

... 
message_2012/07/01 
message_2012/07/02 
message_2012/07/03 
... 

這樣我可以打只是一個數據庫的一部分,但我不知道這是否是一個好的或壞主意。

回答

1

CouchDB構建她的索引(使用B-Tree)的方式意味着只要你適當地創建了你的視圖,你並不需要擔心你擔心的是什麼。

您需要使用日期作爲您發出的組合鍵中的第一個鍵創建視圖。而且您需要每種類型的單獨視圖,以便按頁面進行分組/排序。因此,如果您希望能夠選擇每天,每週,每月和每年的文檔,那麼您需要四個視圖 - 每個視圖都有一個不同的類型。

只要確保將您的日期轉換爲可進行詞法分類/搜索/分組的格式。例如,您的月度視圖可能是:

function(d) { 
    if(d.from && d.to && d.date) { 
    var date = new Date(d.date), 
     month = ('0' + (1 + date.getMonth())).slice(-2), 
     year = date.getYear(); 

    date_string = date.getFullYear() + '-' + month; 

    emit([ date_string, d.from, d.to ]); 
    } 
} 
相關問題