我正在设置我们的第一个Azure Cosmos数据库 - 我将导入第一个集合,即我们的一个SQL Server数据库中的表中的数据 . 在设置集合时,我无法理解分区键的含义和要求,我在设置此初始集合时必须特别指出 .
我在这里阅读了文档:(https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-partition-data)并且仍然不确定如何继续使用此分区键的命名约定 .
有人可以帮助我理解我应该如何考虑命名这个分区键?请参阅下面的屏幕截图,了解我要填写的字段.
如果它有帮助,我导入的表包含7列,包括唯一的主键,一列非结构化文本,一列URL和该记录的URL的其他几个辅助标识符 . 不确定是否有任何信息与我如何命名我的分区密钥有关 .
编辑:我已根据@Porschiey的请求添加了我正在导入的表中的几个记录的屏幕截图 .
5 回答
CosmosDB可用于存储任何数据限制 . 它在后端的作用是使用分区键 . 它与主键相同吗? - 没有
主键:唯一标识数据分区键有助于分片数据(例如,当城市是分区键时,城市纽约的一个分区) .
分区的限制为10GB,我们越好地跨分区传播数据,我们就越能使用它 . 虽然最终需要更多连接才能从所有分区获取数据 . 示例:从查询中获取相同分区中的数据总是比从多个分区获取数据更快 .
表上的每个分区最多可以存储10GB(单个表可以存储任意数量的文档模式类型) . 您必须选择分区密钥,以便针对该密钥存储的所有文档(因此属于该分区)都低于该10GB限制 .
我现在也在考虑这个问题 - 分区键是否应该是某种类型的日期范围?在这种情况下,它实际上取决于在一段时间内存储了多少数据 .
分区键充当逻辑分区,现在这是一个逻辑分区 . 逻辑分区可能会根据您的要求而有所不同,假设您有一个可以根据您的客户进行分类的数据,因为该客户ID将充当逻辑分区,并且将根据客户ID放置用户的信息 . 对查询有什么影响?现在,在查询时,您会将分区键作为提要选项,并且不会包含在您的过滤器中 . 例如:如果您的查询是
它将是现在
老实说,video here *是理解CosmosDb中分区的主要帮助 .
但是,简而言之:PartitionKey是一个属性 will exist 在每个对象上最好用于将类似对象组合在一起 .
好的例子包括位置(如城市),客户ID,团队等 . 当然,它很大程度上取决于你的解决方案;所以,如果您要发布您的对象的样子,我们可以推荐一个好的分区键 .
编辑:应该注意,10GB以下的集合不需要PartitionKey . (感谢David Makogon)
分区键用于分片,它充当数据的逻辑分区,并为Cosmos DB提供跨分区分布数据的自然边界 .
你可以在这里阅读更多相关信息:https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data