0

複合バケット ハッシュを使用して同様のアイテムを効率的にグループ化する e コマース システムを構築しています。私がこのシステムを選んだ理由については説明しませんが、分散型 e コマース システムが直面しているいくつかの重要な問題を解決すると言えば十分でしょう。

11 個のバケットがあり、すべてがさまざまな値を表す int です。これらのフィールドを A から K と呼びましょう。12 番目のフィールド L は製品 ID の配列です。これはすべて、リーフ レベル (L) がデータである階層と考えてください。

このデータを個別のドキュメントとして保存する MongoDB でいくつかの初期テストを実行しました。ただし、これは効率的ではありません。これは、A から K の特定のセットが多くの L 値を持つ可能性があるため、これらを配列として格納できるためです。

これにより、次の 2 つのオプションが得られます。

  1. 無意味な _id ドキュメント ID を挿入し、一意性を確保するために A - K にインデックスを付けます。私はすでにインデックスに対していくつかのテストを実行しており、最初の 2 列よりも多くのインデックスを作成すると、速度に大幅に影響します。
  2. A - K を複合 _id にし、1 つのドキュメント データ フィールド L を持ちます。

#2 が MongoDB の非常に型破りな使用法であることは承知しています。これを行うべきではない技術的な理由はありますか? そうでない場合、公式の C# ドライバーを使用して、この挿入をどのように実行しますか?

4

1 に答える 1

1

オプション#2を選択した場合は、カスタムIDジェネレーターを使用して(AKを使用して)独自の最適化された複合IDを作成できます。

複合キーでテストを実行しましたか?

于 2012-10-17T22:48:35.383 に答える