什么是将数据从SQL Azure迁移到Azure表的最佳方法

时间:2012-08-29 01:04:31

标签: azure migration azure-sql-database azure-storage azure-table-storage

对于项目,我使用的是SQL Azure和Azure表。这里的一个要求是,在前7天,所有数据都存储在SQL Azure中。在前7天之后,数据将迁移到Azure表中。

有没有可靠的项目来实现这一目标?或者任何实现这个的想法?

谢谢,

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是使用一组返回7天以上数据的SQL查询(或sprocs)。然后使用表插入代码将此数据写入一个或多个表,并根据您的查询需要使用适当的分区/行键。然后,只需构建一些类型的后台操作来执行读+写+删除。没有工具可以做到这一点(我知道),因为一个是关系数据库而另一个是没有特定模式的NoSQL变体。

要优化写入,请查看是否可以同时写入多批行(这称为实体组事务)。它优化了事务数量,加上组中的行将以原子方式写入。查看有关实体组交易的更多信息,here

您还可以考虑使用队列进行工作负载分配。也就是说,可能每天一次(或小时,每当),推送一个队列消息,告诉一些后台进程将数据从SQL传输到Table Storage。这样,如果在操作期间出现故障,您可以稍后再次处理它,因为队列消息仍然存在(如果操作成功,则只删除消息)。

答案 1 :(得分:0)

如果您正在寻找一种工具,请查看Cloud Storage Studio(http://www.cerebrata.com/products/cloudstoragestudio),它具有将数据从SQL Server导入Azure Table Storage的功能。我没有检查很长时间,但我相信ClumsyLeaf的TableXplorer(http://www.clumsyleaf.com)也有这个功能。很久以前,我们还建立了一个开源工具来做同样的事情。你可以在这里找到它:http://azuredatabaseupload.codeplex.com/

正如David所说,您基本上可以在数据库中编写一些视图来获取超过7天的数据。这个想法很简单:您获取数据,将SQL Server数据类型映射到Azure数据类型,选择适当的PartitionKey / RowKey值,将数据转换为实体,然后批量上传实体。