Azure Tableストレージ - 合計を計算または持続させます
-
28-09-2019 - |
質問
いくつかのトランザクションデータを保存するためにテーブルストレージを使用することを検討していますが、基本的には1日 /月あたりの非常に高いレベルのレポートをサポートする必要があります。
私が持っているいくつかのオプション:
パーティション /行キー構造を使用し、合計を動的に実行します
EG 20101101_ITEMID_XXXXXXXX(x = guid or time、unquireを作成するために)、行キー(itemID_201011)の一部を使用して、タイプの「コスト」プロパティの合計を使用して数か月のデータをクエリします。ただし、1000レコードのクエリ制限はこれによってどのように管理されますか? (つまり、その日に1000を超えるトランザクションがある場合、合計は難しいでしょう)
別のレコードを使用してその日の合計を保存し、新しいレコードが追加されたときにこれを更新します
たとえば、row key "20101101_itemid_total"その後、合計、月、または年の合計でこれを照会します。
これを行うための最良の方法は何ですか?テーブルストレージを使用したこのタイプの要件に「ベストプラクティス」はありますか?
解決
ベストプラクティスが何であるかわかりませんが、同様の状況があるとコメントできます AzureWatch テーブルで事前に凝集した値を間違いなく使用しています。
主にパフォーマンス上の理由で - テーブルストレージは、単一のパーティションキーとRow-Keyの範囲でクエリをしても瞬間的ではありません。レコードをダウンロードするのにかかる時間はやや重要であり、レコードに応じてCPUをスパイクする可能性があります。これは、データをオブジェクトに除去する必要があるためです。 1000の記録制限のためにテーブルストレージに複数回旅行することができれば、あなたももっと支払うでしょう。
考慮すべき他のいくつかの考え:
あなたの集計された合計は変わりますか?いいえの場合、これは事前凝集に向けて別のナッジです
生データがなくなった後、集約値を維持する必要がありますか、それとも生データをパージする必要がありますか?はいの場合、それは事前凝集に向けて別のナッジです