2010-11-25 10 views
2

テーブルストレージを使用してトランザクションデータを格納する方法を検討していますが、基本的に1日あたりの総計を報告する必要があります。私はけれどもたオプションのAzureテーブルストレージ - 合計を計算または維持する

カップル:

  • パーティション/列キー構造を使用して、動的例えば和
    を行います20101101_ITEMID_XXXXXXXX(x = GUIDまたは時刻、一意にする) 次に、行キーの一部(ITEMID_201011)を使用して月データを照会し、そのタイプの「コスト」プロパティーの合計を照会します。

    1000レコードのクエリ制限はどのように管理されますか? (つまり、1日に1000件を超える取引がある場合、合計は難しいでしょう)

  • 別のレコードを使用して1日の合計を保存し、新しいレコードが追加されるとこれを更新します。
    行キー "20101101_ITEMID_TOTAL" を入力して、合計日数、月数、または年数の合計を照会します。

これを行うにはどのような方法が最適ですか?テーブルストレージを使用するこのタイプの要件には「ベストプラクティス」がありますか?

答えて

1

ベストプラクティスはわかりませんが、AzureWatchと同様の状況があり、テーブルで事前集計された値を使用しているとコメントできます。

ほとんどの場合、パフォーマンス上の理由から、シングルパーティションキーと行キーの範囲でクエリを実行しても、テーブルの格納は瞬間的ではありません。レコードをダウンロードするのにかかる時間は多少重要です。データをオブジェクトにデシリアライズする必要があるため、レコードによってはCPUが急上昇する可能性があります。 1000レコードの制限のためにテーブルストレージに複数回移動すると、さらに多くの支払いが行われます。考慮すべき

いくつかの他の思考:

あなたの集約合計は変わりますか?いいえ、これは事前集計に向けた別の方法です

生データがなくなった後も集計値を保持する必要がありますか、未加工データを消去する必要がありますか?はいの場合、それは事前集約のためのもう一つの動きです