由于分片数据库使用分片键来分割块和路由查询,所以我认为更多的分片键可能有助于使更多的查询成为目标
我试图像这样指定多个键
db.runCommand( { shardcollection : "test.users" , key : {_id:1, email : 1 ,address:1}
但我不知道它是否有效以及这样做的缺点是什么
答案 0 :(得分:3)
这里要清楚,你只能有一个分片键。所以你不能拥有多个分片键。
但是,您建议使用compound index作为分片键。这可以做到,但有一些限制。
例如,_id
,email
和address
的组合必须是唯一的。
choosing a shard key的文件。还有几个我不能在此列出的注意事项。请参阅该文件。
答案 1 :(得分:3)
根据以下内容选择分片键:
{coarseLocality : 1, search : 1}
coarseLocality是您想要的数据所在的位置, 搜索是对您数据的常见搜索。
您必须在要剪切的键上有索引,因此如果您选择随机值 你没有查询的关键,你基本上是在浪费一个索引。每增加一个指数 使写入速度变慢,因此保持索引数尽可能低是很重要的。
因此,增加分片键组合无济于事。
摘自Kristina Chodrow的书“Scaling MongoDB”。