对于一个项目,我同时使用 SQL Azure 和 Azure 表。这里的一个要求是前 7 天,所有数据都存储在 SQL Azure 中。前 7 天后,数据将迁移到 Azure 表中。
有没有可靠的项目来实现这个目标?或者有什么想法来实现这个?
谢谢,
对于一个项目,我同时使用 SQL Azure 和 Azure 表。这里的一个要求是前 7 天,所有数据都存储在 SQL Azure 中。前 7 天后,数据将迁移到 Azure 表中。
有没有可靠的项目来实现这个目标?或者有什么想法来实现这个?
谢谢,
我认为最好的方法是拥有一组返回超过 7 天的数据的 SQL 查询(或存储过程)。然后使用表插入代码将此数据写入一个或多个表,并根据您的查询需要使用适当的分区/行键。然后,只需构建某种类型的后台操作来执行读+写+删除。没有工具可以做到这一点(据我所知),因为一个是关系数据库,另一个是没有特定模式的 NoSQL 变体。
要优化您的写入,请查看您是否可以同时写入成批的行(这称为实体组事务)。它优化了事务数,加上组中的行将以原子方式写入。在此处查看有关实体组交易的更多信息。
您可能还需要考虑使用队列来分配工作负载。也就是说,可能每天(或每小时,无论何时)推送一个队列消息,告诉某个后台进程将数据从 SQL 传输到表存储。这样,如果在操作过程中出现问题,您可以稍后再次处理它,因为队列消息仍然存在(如果操作成功,您只会删除该消息)。
如果您正在寻找执行此操作的工具,请查看 Cloud Storage Studio ( http://www.cerebrata.com/products/cloudstoragestudio ),它具有将数据从 SQL Server 导入到 Azure 表存储的功能。我已经很久没有检查了,但我相信 ClumsyLeaf 的 TableXplorer ( http://www.clumsyleaf.com ) 也有这个功能。很久以前,我们还构建了一个开源工具来做同样的事情。你可以在这里找到它:http: //azuredatabaseupload.codeplex.com/。
正如大卫所提到的,您基本上可以在数据库中编写一些视图来获取超过 7 天的数据。思路很简单:获取数据,将 SQL Server 数据类型映射到 Azure 数据类型,选择合适的 PartitionKey/RowKey 值,将数据转换为实体,然后批量上传实体。