私はアイテム(Web文書など)を保管するアプリケーションを持っています。各アイテムには、任意の大きなタグセットがあります。典型的な共通クエリは、指定されたタグのセットを持つすべてのドキュメントを取得することです。さて、かなり一般的なWebアプリケーションです。NoSQL:索引付けとキーワードベースの検索
ここでは、永続ストレージとしてNoSQLデータベースを考えています。様々なNoSQLシステム(例えば、MongoDB)は、二次索引およびそのキーワードベース検索をサポートする。さまざまなシステムでそれを行う方法を示す例は、簡単に見つけることができます。問題は、どのように二次インデックスがどのように/どこに格納されているのか、タグのリストを含むクエリが実際にどのように実行されるのかを知りたいということです。特に、ノードが多いシステムでは
私はMap/Reduceなどのソリューションを知っています。しかしここで私はインデックス作成の仕組みに興味があります。例えば、私が持っている質問は次のとおりです:
- 2次インデックスはアイテム/オブジェクトID以上しか保存しませんか?
- クエリにk個のタグが含まれている場合、k個のサブクエリ(各タグに1つずつ)が実行され、k個の部分結果が開始ノードに結合されますか?
異なるNoSQLシステムでこのような情報はどこにありますか?どんなヒントでもありがとう。データベースは、配列の各要素に対して文書を一致させようとれるのMongoDBのタグのインデックスは、マルチキーを利用して行われることになる
クリスチャン
こんにちはタイラー、あなたの返信とリンクをありがとう。プレゼンテーションは確かに面白かったですが、多分内部が少しだったかもしれません。私が今見出したのは、少なくとも(少なくとも)MongoDBが索引、つまり各ノード/シャード/に文書ベースのパーティションを適用しているということです。独自のローカルインデックスを維持しています。次に、マルチアイテムクエリがすべての(?)ノードに送信され、ローカルで処理されます。 (私の第2の質問に記載されている代わりの方法は、グローバルインデックス、すなわちインデックスの用語ベースの分割にむしろ適用される)。あなたの助けにもう一度感謝、キリスト教徒 – Christian