0

プロジェクトでは、SQLAzureとAzureテーブルの両方を使用しています。ここでの要件は、最初の7日間、すべてのデータがSQLAzureに格納されることです。最初の7日後、データはAzureテーブルに移行されます。

この目標を達成するための信頼できるプロジェクトはありますか?またはこれを実装するためのアイデアはありますか?

ありがとう、

4

2 に答える 2

1

7日より古いデータを返すSQLクエリ(またはsproc)のセットを用意するのが最善だと思います。次に、クエリのニーズに基づいて適切なパーティション/行キーを使用して、このデータを1つ以上のテーブルに書き込むテーブル挿入コードを用意します。次に、ある種のバックグラウンド操作を作成して、読み取り+書き込み+削除を実行します。1つはリレーショナルデータベースであり、もう1つは特定のスキーマを持たないNoSQLバリアントであるため、これを行うためのツールはありません(私が知っていることです)。

書き込みを最適化するには、行のバッチを同時に書き込むことができるかどうかを確認します(これはエンティティグループトランザクションと呼ばれます)。トランザクションの数を最適化し、さらにグループ内の行がアトミックに書き込まれます。エンティティグループトランザクションの詳細については、こちらをご覧ください。

また、ワークロードの割り当てにキューを使用することを検討することもできます。つまり、おそらく1日1回(またはいつでも1時間)、SQLからテーブルストレージにデータを転送するようにバックグラウンドプロセスに通知するキューメッセージをプッシュします。このように、操作中に何かが失敗した場合、キューメッセージがまだ存在するため、後で再度処理できます(操作が成功した場合にのみメッセージを削除します)。

于 2012-08-29T01:46:39.070 に答える
0

そのためのツールをお探しの場合は、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値を選択し、データをエンティティに変換してから、エンティティをバッチでアップロードします。

于 2012-08-29T02:08:31.467 に答える