次のようなドキュメントの適切なシャード キーを見つけたい:
{
"_id": "yahoo.com",
"c": {
"en": {
"bdy": ",
"cats": [],
"mDesc": "",
"mHEq": {},
"mKeyw": [],
"mNames": {}
}
},
"cLgth": 566,
"cType": "text/html",
"dTime": 1224,
"jobsDone": [
"rawdataload",
"hrefanalyze",
"metatagsanalyze",
"keywordanalyze",
"categoryfinder"
],
"langs": [
"en", "de"
],
"publishedOn": {
"sims": 1362752738996
},
"tld": "com",
}
私のユーザー向けのクエリは、主に _id によって mongo からドメインを取得しています。それらのいくつかは、ドメインの言語を使用しています バックエンドクエリは、さまざまな種類のジョブ「jobsDone」を実行します。この情報に基づいて、さまざまな範囲のドキュメントが選択されます。
そのため、カーディナリティが非常に高いため、ドメイン名にマップされる「_id」を使用することを考えました。ドメイン名の MD5 ハッシュを使用して、より均等に分散することは理にかなっていますか?
「クエリの分離」についてはそうではありません。ほとんどのユーザー クエリは _id を直接読み取るだけなので、問題ないと思います。ジョブ バックエンド クエリは、ユーザーが表示していないため、実行時間が長くなる可能性があります (分散/収集) が、これを最適化するために、「jobsDone」フィールドを複合シャード キーとして追加して、既に実行されているジョブによって分散することを考えました。
配列をシャード キーとして使用することは可能ですか?
すべての洞察に感謝します!