MongoDB如何选择片键

  1. shard key需要有高的散列程度(应该包含不同的值)。也就是shard key需要拥有很多不同的值。便于数据的切分和迁移。
  2. 尽量与应用程序融合。让mongos面对查询时可以直接定位到某个shard
  3. 具有随机性。这是为了不会让某段时间内的insert请求全部集中到某个单独的分片上,造成单片的写速度成为整个集群的瓶颈。用ObjectId作为shard key时会发生随机性差情况。ObjectId实际上由进程ID+TIMESTAMP + 其他因素,所以一段时间内的timestamp会相对集中。不过随机性高会有一个副作用,就是查询性比较差。可用hash key(散列值)增加随机性。
  4. 如果片键变化少,又想它作为片键,可以选择使用组合片键。
  5. 片键数量有限,这种片键称为:小基数片键。这种片键,到数据量变多的时候,会造成数据无法分隔,磁盘逐渐耗尽的情况。
  6. 片键无法修改。
  7. 组合片键:{”值映射多个数据块”,”搜索字段”}

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×