4

StackOverflow を使用すると、タグで投稿を検索したり、タグの交点でフィルタリングしたりできますruby x mysql x tags。しかし、通常、タグ付けで複数の結合を使用して MySQL からそのようなリストを取得するのは非効率的です。複数のタグによるフィルター クエリを実装するよりパフォーマンスの高い方法は何ですか?

この問題に対する適切な NoSQL アプローチはありますか?

4

1 に答える 1

2

NoSQL またはドキュメント指向のシナリオでは、実際のタグをドキュメントの一部として保持し、おそらくリストとして保存します。この質問に「couchdb」のタグを付けたので、それを例として使用します。

CouchDB の「投稿」ドキュメントは次のようになります。

{
   "_id": <generated>,
   "question": "Question?",
   "answers": [... list of answers ...],
   "tags": ["mysql", "tagging", "joins", "nosql", "couchdb"]
}

次に、タグでキー付けされたビューを生成するには:

{
   "_id": "_design/tags",
   "language": "javascript",
   "views": {
      "all": {
         "map": "function(doc) {
            emit(doc.tags, null);
         }"
      }
   }
}

CouchDB では、必要に応じて、複数のキーを使用して HTTP POST を発行できます。例はドキュメントにあります。その手法を使用すると、複数のタグで検索できるようになります。

注: 上記の値を null に設定すると、ビューを小さく保つのに役立ちます。実際のドキュメントも表示する場合は、クエリで使用include_docs=trueします。

于 2010-03-03T03:01:00.157 に答える