【发布时间】:2012-11-04 02:05:03
【问题描述】:
我正在考虑对 Azure 表存储进行重大改进。是否可以通过特定操作向 Table Storage 提交查询,例如“通过 [PartitionKey=somestingPK] 和 [RowKey=somethingRK] 增加实体字段 [name] by [value]”?
@smarx 这个功能会可用吗?
【问题讨论】:
标签: azure azure-storage azure-table-storage
我正在考虑对 Azure 表存储进行重大改进。是否可以通过特定操作向 Table Storage 提交查询,例如“通过 [PartitionKey=somestingPK] 和 [RowKey=somethingRK] 增加实体字段 [name] by [value]”?
@smarx 这个功能会可用吗?
【问题讨论】:
标签: azure azure-storage azure-table-storage
您可以通过启用 ETAG 跟踪的表格或页面存储来完成此操作。我使用这种技术为 Azure 表中的每个条目创建一个标识值。思路是这样的:
从 Page Blob 中读取值,启用 ETAG 跟踪
增加检索到的值
POST 检索到的值,如果存在 ETAG 冲突,请重新尝试整个操作。也许在这里使用指数退避算法来防止目标容器或分区过载。
【讨论】:
是的,这是可能的——但可能与您的想法不完全一样。您正在寻找MERGE operation。要使用它,您必须知道您要定位的实体(即实体的分区键和行键)。您不必检索实体来更新它,但您必须通过 REST 调用或使用批处理功能(有一些限制)专门处理每个实体。
【讨论】:
这类似于 MySQL 的UPDATE 查询,目前无法在 Azure 表存储中执行。不确定这是否可以在这种数据库类型中实现,因为您必须首先获取整个实体,更新所需的字段,然后存储回数据库。
【讨论】: