MongoDB分片键选择

MongoDB分片键选择,mongodb,mongodb-java,Mongodb,Mongodb Java,我有一个场景,我不知道MongoDb中集合的结构和字段是什么。此外,每个用户将有多个单DB(如多租户DB) 我将在生产中部署复制的分片集群。为了扩展和更好地优化机器,我将在创建每个数据库的过程中按每个数据库应用分片,并且相同数据库下的每个集合将分片到不同的分片。现在在这个场景中,我不确定哪个键是最佳选择,因为在每个DB下创建的集合的结构和字段是未知的。由于DB、Collection的结构未知,我无法预测大部分时间将使用哪种类型的查询。所以我想选择一个切分键,它将满足切分键选择的所有条件,比如:基

我有一个场景,我不知道MongoDb中集合的结构和字段是什么。此外,每个用户将有多个单DB(如多租户DB)

我将在生产中部署复制的分片集群。为了扩展和更好地优化机器,我将在创建每个数据库的过程中按每个数据库应用分片,并且相同数据库下的每个集合将分片到不同的分片。现在在这个场景中,我不确定哪个键是最佳选择,因为在每个DB下创建的集合的结构和字段是未知的。由于DB、Collection的结构未知,我无法预测大部分时间将使用哪种类型的查询。所以我想选择一个切分键,它将满足切分键选择的所有条件,比如:基数、查询隔离、单调递增、写缩放、易于分割

在这种情况下,解决方案是什么


另外,如果我为shard key选择该集合下的所有字段,并将hash _id字段作为复合键,该怎么办?

一旦创建了shard key,就不能对其进行编辑。 因此,继续将数据注入到集合中,一旦字段变得清晰,就可以随时对集合进行切分

分片后自动进行再平衡