3

CouchDB でデータベースをネストできないようです。人々はこの制限をどのように回避していますか? たとえば、各ドメインが個別のデータベースを持つブログ エンジンを作成するとします。各データベース内で、ユーザー データベースや注文データベースなどに、さまざまなユーザー ドキュメントや注文ドキュメントなどを含めることができます。

明白な方法は、データベース名がハイフンでデータベースのネストレベル間の人工的な境界を画定するフラットな構造のようです:

myblog.com-users
myblog.com-posts
myblog.com-comments
anotherblog.com-users
anotherblog.com-posts
anotherblog.com-comments
...hundreds more...

別の解決策は、下位レベルのデータベースを保持し、各ドキュメントを最上位の値でマークすることです。

フィールドinstance="Test"またはフィールドdomain="myblog.com"を持つドキュメントUser1を含むusersデータベース

4

2 に答える 2

6

ここでデータベースという用語を誤用していると思います。ユーザー、投稿、およびコメントのデータを単一の cupdb データベースに格納できない理由はありません。あなたのcouchdbビューは、コメント文書から、投稿文書からユーザー文書を分離することができます。

couchdb データベース内のユーザー ドキュメントの map 関数の例:

function(doc) {
  if (doc.type = 'user') { // only return user documents
     emit([doc.domain, doc.id], doc); // the returned docs will be sorted by domain
  }
}

ビューの照合順序で startkey と endkey を使用してドメインごとにビューの結果を制限する方法については、 View API を参照してください。

于 2009-11-05T02:30:13.510 に答える
3

最善の解決策は、ドメインごとに1つのデータベースを用意し、それぞれにドメイン固有のデータを格納することだと思います。

于 2012-06-21T15:24:14.780 に答える