TL;DR
有没有一种方法可以以自动化、经济高效的方式复制azure表
长版本
我有一个多租户云服务,里面有很多表。现在我正在使用云服务的"暂存"部署,这样我就可以让我的系统的"RC"版本对客户端可用。。。这个新版本可能是错误更正版本,也可能是"新模块"版本
如今,测试版使用预定义的测试负载,可以理解"所有"场景,这很好,但并不理想
我想做的是让用户使用自己复制的数据测试新版本。用户将转到管理门户,单击"刷新测试集"并进行测试。评估产品的新客户将使用旧的测试集。。。
我的问题是:通过"insert into mytableCopy select*from myTable"复制表是昂贵的!
- 时间很贵。我花了大约20分钟的时间使用一个专门的媒介工作者角色来复制所有的表。由于用户急切地要求这个功能,并且他们喜欢实时数据,我预计他们会"垃圾邮件点击"刷新测试集按钮。复制它需要20分钟,这将是一个大问题。。。是的,我必须复制所有数据,因为很多报告都涉及趋势
- 它的成本很高。运行额外的实例是固定成本。额外的存储是一个合理但可预测的成本(它不便宜,但我可以预测)。我担心的成本是存储事务成本,它可以快速累积!如果addoption是预期的1/3,我的交易账单将在每个新的"bug修复"版本中上涨500%,在每个"新模块"版本中增长10000%。。。我可以通过简单地删除工作时间外的重复数据和我可以关闭的额外实例来降低存储价格
所以基本上我的问题是如何摆脱困境?!?
- 有没有办法"避免"或降低交易成本
- 有没有更快速的复制表格的方法
(使用情况的计算基于用户今天已经点击我的"重置测试集"按钮的次数)
任务的主要延迟是上下文路线图。当您请求数据时,上下文会为所有实体创建代理,并可能跟踪这些实体。为了避免这种延迟,您可以直接使用REST API而不是.Net客户端库
过去,我开发了一个Azure存储代理服务,作为我的客户端应用程序和实际存储之间的中间件。
检查其余API参考
解决方案路线图可能是这样的:
1-)读取表
2-)创建克隆表
3-)对于每个表逐页读取
4-)使用正则表达式将RESPONSE从原始文件转换为克隆,并用作INSERT操作的主体
希望得到帮助!!!