2012-11-15 62 views
5

我想到Azure表存储的重大改进。是否可以通过特定的操作向[表格存储]提交查询,例如[增加实体字段[名称],其中[PartitionKey = somestingPK]和[RowKey = somethingRK]?Windows Azure表存储int字段增量

@smarx是否有此功能?

+0

http://stackoverflow.com/a/11853335/67824 –

回答

0

这与MySQL的UPDATE查询类似,并且当前无法在Azure表存储中执行。不知道这是否可以在这样的数据库类型中实现,因为您首先需要获取整个实体,更新所需的字段并将其存回数据库。

+0

我知道现在这是不可能的。我想与开发人员分享我的建议:) –

1

是的,这是可能的 - 但可能并不完全如您所想。您正在寻找MERGE operation。要使用它,您必须知道您的目标实体(即实体的分区键和rowkey)。您不必检索实体来更新它,但是您必须通过REST调用或使用批处理功能(具有一些限制)专门针对每个实体。

+3

他正在寻找原子增量。今天没有这样的事情。 – smarx

+0

但我不能使用增量操作。只有设置。我建议,在表格存储中更新实体并非不可能。但是这个操作不能通过REST API获得。 –

4

您可以使用启用了ETAG跟踪的表或页面存储来完成此操作。我使用这种技术为Azure表中的每个条目创建标识值。这个想法是这样的:

  • 阅读从页面的Blob的价值,离开ETAG跟踪启用

  • 增量检索值

  • POST检索值,如果有一个ETAG冲突,重新整个行动再次新鲜。也许在这里使用指数退避算法来防止重载目标容器或分区。

+1

我将这种方法命名为“kostyil”。 但我希望在表存储中使用原生增量的原生实现。 –