1

メッセージ アプリケーションを実行する必要があり、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
...

このようにして、データベースの一部だけをヒットできますが、それが良いアイデアか悪いアイデアかはわかりません。

4

1 に答える 1

1

CouchDB が (B-Tree を使用して) インデックスを構築する方法は、ビューを適切に作成する限り、何を心配する必要がないことを意味します。

発行する複合キーの最初のキーとして日付を使用してビューを作成する必要があります。また、ページング/グループ化/ソートする日付の種類ごとに個別のビューが必要になります。したがって、日、週、月、年ごとにドキュメントを選択できるようにしたい場合は、4 つのビュー (異なるタイプの日付ごとに 1 つ) が必要になります。

日付を語彙的にソート/検索/グループ化できる形式に変換してください。たとえば、月次ビューは次のようになります。

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 ] );
  }
}
于 2012-07-19T05:19:40.917 に答える