Rob*_*bar 4 azure azure-table-storage
我和我的同事目前正在为产品实现撤销/重做功能.我们使用命令模式并将每个命令(例如,创建组件'myFancyComponent')保存为TableStorageEntry表'ProductHistory'.PartitionKey在此表中是唯一的产品名称,RowKey是唯一的标识符.
问题是如果产品被删除,它还应该删除表存储中的整个历史记录.使用批量删除可能会变得非常复杂,因为有几个限制:最大.100个实体或最多 4 MB(无论什么是较小的).这个问题有什么最佳做法吗?或者是查询所有条目和检查条目大小的唯一解决方案,而不是批量删除正确数量的条目?
我也发现了这个类似的问题,并考虑为每个产品创建一个表.看来这种方法有一些优点:
我发现的唯一缺点(在'WINDOWS AZURE TABLE' - 白皮书中):
如果我创建几百个表,还有其他(性能)问题吗?
我强烈推荐每个产品单表的方法,因为你指出它会很快消除批量删除事务的需要,如果你想删除30秒的限制,你只需要有一个索引表来存储表与其产品之间的关系.然后,您可以将产品标记为已删除,并在重新添加时重新分配其表.因此允许30秒限制的简单旁路.另一种方法(我也建议)是分离产品的添加,以便异步发生,从而允许您在名称再次可用时等待创建表.
至于性能问题,即使您有数千个表,并且不超过Azure存储帐户上当前每秒5k事务限制,也应该没有问题.:)
| 归档时间: |
|
| 查看次数: |
2918 次 |
| 最近记录: |