我想为这样的文档找到合适的分片键:
{
"_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”字段添加为复合分片键,以便通过已经运行的作业分配它?
是否可以将数组用作分片键?
感谢所有的见解!