【发布时间】:2015-12-03 12:13:37
【问题描述】:
我的数据集只会被直接查询(意味着我正在通过某个标识符查找特定项目)或将被完整查询(意味着返回表中的每个项目)。鉴于此,是否有任何理由不使用唯一的分区键?
根据我的阅读(例如:https://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/#choosing-an-appropriate-partitionkey),非唯一分区键的优势在于能够进行事务更新。我不需要在这个数据集中进行事务更新,所以除了一些独特的东西(例如,GUID)之外,还有什么理由进行分区?
假设我为每个项目使用唯一的分区键,这意味着每个分区将有一行。我应该在行键中重复分区键还是应该只为行键设置一个空字符串?是否允许空行键?
【问题讨论】:
-
不允许空行键。 听起来就像您想将所有数据保存在同一个分区中,分区中的每个唯一行都将具有唯一的行键(它必须这样做)。如果不进一步了解您的数据,可能很难确定,但如果您要返回每一行,那么将它们分布在分区中可能会影响性能。
-
@BrendanGreen 我认为分散它们会提高性能,因为每个分区都可以并行读取数据?
-
@BrendanGreen 确实允许 null 或空 RowKey。我在我的应用程序中经常使用它。
-
好的 - 我想我可能已经将插入、更新和删除操作必须存在行键的要求解释为非空。
标签: azure azure-storage azure-table-storage