选择一个好的mongodb分片键

选择一个好的mongodb分片键,mongodb,sharding,Mongodb,Sharding,我有一个包含3个字段的集合 _id=id\U帐户与id\U记录=int64混合 id\u帐户=int32(自动递增键) id_reccord=int32(自动递增键) 在集合中,1个id_帐户平均有300条记录,但很少有id_帐户(特殊帐户)可以有数百万条记录 最初我想使用ID_帐户作为分片密钥,但它是sean,这对于少数拥有数百万记录的帐户来说不是很好 现在我想使用ID_帐户和ID_记录作为碎片密钥。但是由于id_记录是一个自动递增的密钥,这不是一个问题吗?使用一个我可以从ID中提取的随机

我有一个包含3个字段的集合

  • _id=id\U帐户与id\U记录=int64混合
  • id\u帐户=int32(自动递增键)
  • id_reccord=int32(自动递增键)
在集合中,1个id_帐户平均有300条记录,但很少有id_帐户(特殊帐户)可以有数百万条记录

最初我想使用ID_帐户作为分片密钥,但它是sean,这对于少数拥有数百万记录的帐户来说不是很好

现在我想使用ID_帐户和ID_记录作为碎片密钥。但是由于id_记录是一个自动递增的密钥,这不是一个问题吗?使用一个我可以从ID中提取的随机键(比如倒排的ID或其他你可以建议我从ID中生成随机数的东西)不是更好吗

那么,更好的选择是什么:

  • _id=13846974562326
  • id_账户=3224
  • id\u记录=22
  • 反向id=62326547964831

  • _id=13846974562327
  • id_账户=3224
  • id\u记录=23
  • 反向id=72326547964831

  • _id=13846974562328
  • id_账户=3224
  • id\u记录=24
  • 反向\u id=82326547964831
那么什么更好呢

  • 在id_帐户上使用分片密钥
  • 在id_帐户和id_记录上使用分片密钥
  • 在id_帐户和反向id上使用分片键
  • 所有id账户、id记录和反向id均可从_id中提取


    提前感谢您的帮助

    您是如何查询数据的?这是一个关键问题。根据这里的信息,我建议在
    \u id
    上使用a。我查询数据,比如id=13846974562328和id\u account=3224(例如),以及id\u account=3224。。。由于上一个查询的原因,将id用于碎片密钥根本没有效率:(