1

ユーザーが多数のドキュメントをシステムにアップロードし、集計を含むさまざまな種類の操作がドキュメントに対して実行される Web アプリケーションを開発しています。ただし、各ユーザーがアップロードするドキュメントの数は大きく異なります。12 のドキュメントをアップロードする人もいれば、100 万のドキュメントをアップロードする人もいます。

ドキュメントは次のようになります。

doc{
    _id: <self generated UUID>,
    uid: <id of user who uploaded the document>,
    ctime: <creation timestamp>,
    ....
        <other attributes, etc>
    ....
}

シャード キーを選択する際の問題は次のとおり
です。 1. UUID をシャード キーとして選択すると、同じユーザーによってアップロードされたドキュメントが同じシャードに保存される可能性が低くなり、集計操作にコストがかかります。
2. シャード キーとして uid を使用すると、シャードに格納されたデータは均等になりません。

これを達成するための最良の方法は誰ですか?

私はパーティショニングとシャーディングに非常に慣れていないため、グーグルとスタックオーバーフローに関する調査では何も得られませんでした。プロジェクトはまだ設計段階にあるため、必要に応じてドキュメントのスキーマを変更できます。

4

2 に答える 2

3

これは、シャード キーの選択に関して私が見た中で最高のガイドです: http://www.kchodorow.com/blog/2011/01/04/how-to-choose-a-shard-key-the-card-game /

データのクエリ方法を決定する必要があります。おそらく、uid と ctime の組み合わせが適切なシャード キーを生成しますが、クエリの計画方法についてあまり洞察を与えていないため、クエリ中に悲しみが生じるかどうかはわかりません。

于 2012-06-28T19:40:25.517 に答える