【发布时间】:2013-03-13 21:20:56
【问题描述】:
我想为这样的文档找到合适的分片键:
{
"_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”字段添加为复合分片键,以通过已经运行的作业分配它?
是否可以使用数组作为分片键?
感谢所有见解!
【问题讨论】: