質問

いくつかのトランザクションデータを保存するためにテーブルストレージを使用することを検討していますが、基本的には1日 /月あたりの非常に高いレベルのレポートをサポートする必要があります。

私が持っているいくつかのオプション:

  • パーティション /行キー構造を使用し、合計を動的に実行します
    EG 20101101_ITEMID_XXXXXXXX(x = guid or time、unquireを作成するために)、行キー(itemID_201011)の一部を使用して、タイプの「コスト」プロパティの合計を使用して数か月のデータをクエリします。

    ただし、1000レコードのクエリ制限はこれによってどのように管理されますか? (つまり、その日に1000を超えるトランザクションがある場合、合計は難しいでしょう)

  • 別のレコードを使用してその日の合計を保存し、新しいレコードが追加されたときにこれを更新します
    たとえば、row key "20101101_itemid_total"その後、合計、月、または年の合計でこれを照会します。

これを行うための最良の方法は何ですか?テーブルストレージを使用したこのタイプの要件に「ベストプラクティス」はありますか?

役に立ちましたか?

解決

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

主にパフォーマンス上の理由で - テーブルストレージは、単一のパーティションキーとRow-Keyの範囲でクエリをしても瞬間的ではありません。レコードをダウンロードするのにかかる時間はやや重要であり、レコードに応じてCPUをスパイクする可能性があります。これは、データをオブジェクトに除去する必要があるためです。 1000の記録制限のためにテーブルストレージに複数回旅行することができれば、あなたももっと支払うでしょう。

考慮すべき他のいくつかの考え:

あなたの集計された合計は変わりますか?いいえの場合、これは事前凝集に向けて別のナッジです

生データがなくなった後、集約値を維持する必要がありますか、それとも生データをパージする必要がありますか?はいの場合、それは事前凝集に向けて別のナッジです

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top