MongoDB-使用三个值的复合碎片键
我正在使用MongoDB创建一个存储JSON对象的集合。我被困在碎片部分。 我有一个案例ID、客户ID和集合中每个记录的位置 案例ID是一个10位数字(只有数字,没有字母) CustomerID是客户名称和案例ID的组合 该位置是一个2dsphere值,我希望该位置具有不同的不同值 除此之外,我还记录了客户姓名和案例描述。 我的所有搜索查询都有案例ID、CustomerID或location的搜索条件 在这种情况下,我可以基于这三个值(CaseID、CustomerID和location)创建一个复合键吗。我相信这会提供很高的基数,并且很容易检索记录 任何人都可以建议我,如果这是一个好的方法,因为我没有找到一个复合碎片键由三个值组成MongoDB-使用三个值的复合碎片键,mongodb,sharding,mongodb-query,cardinality,Mongodb,Sharding,Mongodb Query,Cardinality,我正在使用MongoDB创建一个存储JSON对象的集合。我被困在碎片部分。 我有一个案例ID、客户ID和集合中每个记录的位置 案例ID是一个10位数字(只有数字,没有字母) CustomerID是客户名称和案例ID的组合 该位置是一个2dsphere值,我希望该位置具有不同的不同值 除此之外,我还记录了客户姓名和案例描述。 我的所有搜索查询都有案例ID、CustomerID或location的搜索条件 在这种情况下,我可以基于这三个值(CaseID、CustomerID和location)创建一
谢谢你的时间,如果需要任何信息,请告诉我。如果您的数据集适合单个服务器,则从非分片部署开始。如果需要的话,稍后可以轻松无缝地将其转换为分片集群 假设您确实需要切分,您对切分密钥的选择应基于以下标准:
- 检索客户案例
- 检索给定客户的所有案例
- 要检索特定案例,查询中应包括名称和案例ID。此查询将路由到保存文档的特定碎片
- 要检索给定客户的所有案例,请在查询中包含名称。因此,此查询包含分片密钥的前缀,因此也将仅有效地路由到包含与查询匹配的文档的特定分片
- 还包括客户名称的地理空间查询将以相关碎片为目标
- 不包含客户名称的地理空间查询将广播到所有碎片(“分散/聚集”查询)
可以找到有关切分关键注意事项的其他文档。您可以发布一个文档示例吗。给我一点时间这就是它的结构{“_id”:ObjectId(“4c2210f9f3924d31102bd85a”),“name:“timothyr”,“caseID:“3457712344”,“customerID:“AB345ti”,“location:“144.34,-37.14”,“Description:“我无法登录到我的计算机”}除此之外,CustomerID以AB或AC开头,然后紧跟caseID的前三个字符和name的前两个字符。如果你需要任何信息,请告诉我