1

「Index Cardinality」ビデオ [M101J: MongoDB for Java Developers] から学んだことの 1 つは、マルチキー インデックスを含むドキュメントが移動されると、そのドキュメントのすべてのインデックスも更新する必要があり、かなりのオーバーヘッドが発生するということです。

どうにかしてこの制約を回避することは可能だと思いました。明らかな解決策は、別のレベルの間接化を追加することです (これはコンピューター サイエンスの問題を解決するための有名なパターンです :-)) インデックスからドキュメントを直接参照する代わりに、そのドキュメントを参照する各ドキュメントのエンティティを作成し、インデックスを取得します。そのエンティティを参照するには、ドキュメントを移動するときに、そのエンティティのみを変更する必要があります (BSON 形状が常に同じであるため、エンティティは移動しません)。もちろん、このソリューションの問題は、パフォーマンスのためにスペースをトレードすることです (インデックスもこの問題に悩まされます)。

しかし、すべての希望が失われるわけではありません。MongoDB では、すべてのドキュメントに不変の _id フィールドがあり、自動的にインデックスが作成されます。これらすべてを考えると、ドキュメントが移動された場合、関連付けられた _id インデックスも更新されることがわかっているので、他のすべてのインデックスがドキュメントの対応する _id インデックスを参照するようにしないのはなぜでしょうか?

このソリューションを考えると、ドキュメントが移動したときに更新される唯一のインデックスは _id インデックスです。

このソリューションが MongoDB に実装できるかどうか、または実用的でなくなるような隠れた落とし穴があるかどうかを知りたいですか?

ありがとう

4

1 に答える 1