当サービスではメインストレージにSQL Azure、バックアップストレージにAzureテーブルを使用しています。毎日約 30 GB のデータが収集され、SQL Azure に保存されます。翌日からデータが無効になるため、毎晩 SQL Azure から Azure テーブルにデータを移行したいと考えています。
問題は、Azure から Azure テーブルにデータを移行する最も効率的な方法は何ですか?
私が思いついた単純なアイデアは、IDataReader を使用してプロデューサー/コンシューマーの概念を活用することです。つまり、まず "select * from TABLE" を実行してデータ リーダーを取得し、データをキューに入れます。同時に、一連のスレッドがキューからデータを取得し、それらを Azure テーブルに挿入します。
もちろん、このアプローチの主な欠点 (私が思うに) は、開かれた接続を長時間 (数時間) 維持する必要があることです。
もう 1 つの方法は、最初に SQL Azure テーブルから Windows Azure のローカル ストレージにデータをコピーし、同じプロデューサー/コンシューマーの概念を使用することです。このアプローチでは、コピーが完了するとすぐに接続を切断できます。
現時点では、どちらが優れているかはわかりません。または、どちらかが実装するのに適した設計であってもかまいません。この問題に対する適切な設計ソリューションを提案できますか?
ありがとう!