ユーザーが多数のドキュメントをシステムにアップロードし、集計を含むさまざまな種類の操作がドキュメントに対して実行される 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 を使用すると、シャードに格納されたデータは均等になりません。
これを達成するための最良の方法は誰ですか?
私はパーティショニングとシャーディングに非常に慣れていないため、グーグルとスタックオーバーフローに関する調査では何も得られませんでした。プロジェクトはまだ設計段階にあるため、必要に応じてドキュメントのスキーマを変更できます。