0

A) Grandfather-Father-Son のアーカイブを作成することは可能ですか? たとえば、次のものを常に事前計算し、それ以外は事前計算しないようにします。

  • 先週の毎日の合計
  • 過去 5 ~ 6 週間の週ごとの合計
  • 前月すべての月間合計

たとえば、2 か月前の 1 日の合計は必要ないことに注意してください。その 1 日の合計を削除します。

この目的には、インデックス付きビューで十分でしょうか? すべてのフィールドを事前に計算して保存する必要があります。

B) StackExchanges (および一般的には Wikis) のバージョン管理のような機能が必要です。古いバージョンを実稼働環境で何らかの形でアーカイブし、新しいバージョンのものをより簡単に利用できるようにする方法はありますか? 私たちはパーティショニングを検討してきましたが、そのような複雑なシナリオを処理していないようです (最新バージョンよりも古いすべてのバージョンを必要とするのではなく、X 日付より前のすべての投稿をパーティショニングする必要はありません)。

これらの問題に関するベストプラクティスは何ですか?

4

1 に答える 1

1

A: あなたは、さまざまな保持期間/粒度を持つ時系列データのストレージについて説明しています。これは、SQL Server がネイティブで提供していない機能です。もちろん、この戦略を自分でかなり簡単に構築できます。幸いなことに、オープンソース プロジェクトにはガイダンス用の優れた例がいくつかあります。

  1. RRD ツール- 時系列データベースおよびグラフ作成ライブラリ。
  2. グラファイト- RRD ツールに触発され、によって構築されました

B: そのような一般的な用語で話すのは難しいですが、おそらく、テーブルにバージョン列を維持することができます。ここで、0 は常に最新バージョンを反映します。新しいバージョンを昇格するたびに、この値をインクリメントすることで、他のすべてのバージョンを降格します。バージョンが古くなるにつれてバージョンが増えると、決定論的な値 (バージョン = 0) でフィルター処理されたインデックスを作成できるため、現在のバージョンを取得するパフォーマンスが大幅に向上します。その後、日付ではなく、以前
のバージョン数に基づいてパージできます。ただ。パーティショニング スキームも、この方法を使用して機能する可能性があります。delete yourTable where Version > 5

于 2012-08-08T01:42:10.503 に答える