たとえば、多数のコンピューターでの「アクティビティ」をカウントし、そのアクティビティのロールアップを表示する場合、データを格納するデータベースはどのように見えるでしょうか?
単にこれ?シンプルすぎるようです。私はこれを考えすぎています。
ACTIVITYID COUNT
---------- -----
たとえば、多数のコンピューターでの「アクティビティ」をカウントし、そのアクティビティのロールアップを表示する場合、データを格納するデータベースはどのように見えるでしょうか?
単にこれ?シンプルすぎるようです。私はこれを考えすぎています。
ACTIVITYID COUNT
---------- -----
ボリュームが途方もなく大きくならない場合は、@Turnkey が示唆するように DateTime を使用して、各イベントを個別にログに記録するテーブルを作成し、おそらくそれをログに記録したマシンなどを作成します。
LOGID (PK) ACTIVITYID SOURCE DATELOGGED
---------- ---------- ------ ----------
これにより、クエリを実行して現在のカウントを取得したり、データを使用して特定の期間のイベントや特定のマシンからのイベントを特定したりできます。ActivityID のクラスター化インデックスにより、クエリのパフォーマンスが向上し、テーブルが狭いため、挿入のコストが高くなりません。
実際のアクティビティでは、ロギングテーブルに少なくともActivityIdとActivityDateを含むある種のレコードが作成されると思います。他の列は、ログエントリを作成するコンピュータの識別子である可能性があります。
次に、指定した期間のアクティビティレコードを集計して、カウントを作成します。
メトロ。
はい、残念ながら、各アクティビティの発生回数のみに関心があると仮定すると、これは簡単なことです。そのテーブルにデータを入力したら、たとえば、カウントで並べ替えてプロットすることにより、結果のヒストグラムを簡単に作成できます。
DateTime フィールドを追加して、特定の時間間隔でイベントのレポートを作成したり、少なくとも最後のアクティビティ カウントがいつ取得されたかを知ることができると思います。