我们正在开发一个应用程序,我们需要使用字符串ID作为mongodb id。我的问题是:如果我们在mongodb上进行分片,字符串ID会导致任何问题吗?
答案 0 :(得分:1)
这在很大程度上取决于字符串的内容。例如,姓氏通常会为自动平衡制作一个糟糕的分片键,因为几乎所有语言的姓氏都会以不均匀的分布形式出现。但是,tag based sharding可以解决这个问题,但在扩展时需要相当多的知识和配置。
已经提到了字符串的散列,但我想补充一点,这样做可能会遇到地理位置分散的数据中心的问题,因为您将无法再将正确的id范围分配给它们的地理位置如果这是你的ID(部分)由。
组成的另一种解决方案可能是使用复合分片键。
答案 1 :(得分:0)
不,它们可以/应该/将在被分片之前进行哈希处理。 (可能意味着计算机能力略有成本)。