创建大量的couchdb DB来存储评论是一个好主意吗?

时间:2012-07-18 22:43:02

标签: 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 个答案:

答案 0 :(得分: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 ] );
  }
}