【问题标题】:Is a good Idea to create lots of couchdb DB's to store comments?创建大量 couchdb 数据库来存储评论是个好主意吗?
【发布时间】:2012-07-19 23:22:03
【问题描述】:

我需要做一个消息应用程序,我想使用 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
...

这样我可以只命中数据库的一部分,但我不知道这是个好主意还是坏主意。

【问题讨论】:

    标签: couchdb


    【解决方案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 ] );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-13
      • 2010-10-30
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      相关资源
      最近更新 更多