Azure 存储:表存储与队列存储详解
1. 实体组事务
之前的操作示例主要聚焦于单个实体。若要更新具有相同分区键的所有实体,可借助客户端库执行多实体事务。在数据上下文中,可先将多个创建、更新或删除命令排队,再使用SaveChanges方法提交更改。不过,实体组事务存在一些规则和限制:
- 每个命令组最多包含 100 个命令。
- 操作只能针对具有相同分区键的实体执行。
- 命令以全有或全无的事务方式执行,若一个命令失败,整个命令集将回滚。
- 整个命令组大小不能超过 4 MB,插入大量实体时可能需拆分为多个组。
- 一个实体只能出现一次,不能先插入再更新。
- 命令按插入组的顺序执行。
- 服务器会检查并发情况,若实体的 ETag 不匹配,不会进行更改,整个命令组失败。
实体组事务可通过 REST API 或 .NET 客户端库执行,相关指导可参考:http://msdn.microsoft.com/en-us/library/dd894038.aspx。
2. 选择分区键
为存储海量数据并快速返回查询结果,表可能会跨数千个节点进行分区。分区键在存储方案中至关重要,具有相同分区键的所有实体将存储在一起。同一表中的不同实体可能由不同节点提供服务,但相同分区键的实体将由同一节点提供服务。
Azure Fabric 会持续监控分区流量,并将活跃分区复制到多个节点以满足流量需求。选择分区键时,需在查询性能和响应时间之间取得平衡。分区越小,表可分布的节点越多,但如果拆分频繁出现在同一结果集中的实体,会降低查询性能。
微软提