プロジェクトでは、SQLAzureとAzureテーブルの両方を使用しています。ここでの要件は、最初の7日間、すべてのデータがSQLAzureに格納されることです。最初の7日後、データはAzureテーブルに移行されます。
この目標を達成するための信頼できるプロジェクトはありますか?またはこれを実装するためのアイデアはありますか?
ありがとう、
プロジェクトでは、SQLAzureとAzureテーブルの両方を使用しています。ここでの要件は、最初の7日間、すべてのデータがSQLAzureに格納されることです。最初の7日後、データはAzureテーブルに移行されます。
この目標を達成するための信頼できるプロジェクトはありますか?またはこれを実装するためのアイデアはありますか?
ありがとう、
7日より古いデータを返すSQLクエリ(またはsproc)のセットを用意するのが最善だと思います。次に、クエリのニーズに基づいて適切なパーティション/行キーを使用して、このデータを1つ以上のテーブルに書き込むテーブル挿入コードを用意します。次に、ある種のバックグラウンド操作を作成して、読み取り+書き込み+削除を実行します。1つはリレーショナルデータベースであり、もう1つは特定のスキーマを持たないNoSQLバリアントであるため、これを行うためのツールはありません(私が知っていることです)。
書き込みを最適化するには、行のバッチを同時に書き込むことができるかどうかを確認します(これはエンティティグループトランザクションと呼ばれます)。トランザクションの数を最適化し、さらにグループ内の行がアトミックに書き込まれます。エンティティグループトランザクションの詳細については、こちらをご覧ください。
また、ワークロードの割り当てにキューを使用することを検討することもできます。つまり、おそらく1日1回(またはいつでも1時間)、SQLからテーブルストレージにデータを転送するようにバックグラウンドプロセスに通知するキューメッセージをプッシュします。このように、操作中に何かが失敗した場合、キューメッセージがまだ存在するため、後で再度処理できます(操作が成功した場合にのみメッセージを削除します)。
そのためのツールをお探しの場合は、SQLServerからAzureTableStorageにデータをインポートする機能を備えたCloudStorage Studio( http://www.cerebrata.com/products/cloudstoragestudio )をご覧ください。長い間チェックしていませんが、ClumsyLeafのTableXplorer(http://www.clumsyleaf.com)にもこの機能があると思います。昔、私たちは同じことをするためのオープンソースツールも構築しました。ここで見つけることができます:http://azuredatabaseupload.codeplex.com/。
Davidが述べたように、基本的にデータベースにいくつかのビューを書き込んで、7日より古いデータをフェッチすることができます。考え方は単純です。データをフェッチし、SQL Serverデータ型をAzureデータ型にマップし、適切なPartitionKey / RowKey値を選択し、データをエンティティに変換してから、エンティティをバッチでアップロードします。