在我们的服务中,我们使用 SQL Azure 作为主存储,使用 Azure 表作为备份存储。每天大约有 30GB 的数据被收集并存储到 SQL Azure。由于从第二天开始数据不再有效,我们希望每晚将数据从 SQL Azure 迁移到 Azure 表。
问题是.. 将数据从 Azure 迁移到 Azure 表的最有效方法是什么?
我想出的天真的想法是通过使用 IDataReader 来利用生产者/消费者的概念。即首先通过执行“select * from TABLE”得到一个数据读取器,并将数据放入队列中。同时,一组线程正在从队列中抓取数据,并将它们插入 Azure Table。
当然,这种方法的主要缺点(我认为)是我们需要长时间保持打开的连接(可能是几个小时)。
另一种方法是首先将数据从 SQL Azure 表复制到 Windows Azure 上的本地存储,并使用相同的生产者/消费者概念。在这种方法中,我们可以在复制完成后立即断开连接。
在这一点上,我不确定哪个更好,或者甚至它们中的任何一个都是一个很好的设计来实现。你能为这个问题提出任何好的设计解决方案吗?
谢谢!