2009-10-04 19 views
11

ここで言われている:一時データベースと履歴アーカイブデータベースの違いは何ですか?

http://www.ibm.com/developerworks/web/library/wa-dbdsgn2.html

DB内の各テーブルには、主テーブルの全体 歴史をミラーリング、履歴テーブルを持つ必要があります。プライマリテーブルの エントリが に更新される場合、 レコードの古い内容は、更新前に履歴 テーブルに最初にコピーされます。 同様に、 プライマリテーブルの削除されたレコードは、プライマリテーブルから削除される前に 履歴テーブルにコピーされてから削除されます。 履歴 テーブルの名前は常に になりますが、 _Histが付いています。

一時的なデータベースではこちらをご覧くださいtemporal database modeling and normalisationわかる限り、別途の表はありません。

いつ別のテーブルを作成する必要がありますか?

答えて

7

ロバートは、理論的には言わなかった何か - を追加することは何も。

実質的に、一時テーブル対メイン+ヒストテーブルは、他の影響を有する。

履歴(「監査」とも呼ばれることもありますが、これはDBデータの監査証跡を実行する主なメカニズムです)を使用して、大量に管理されたデータ(更新/削除が挿入数を大幅に上回ります)メインテーブル自体の内部に監査情報を保持するのに比べて、メインテーブルは適度に小さい。これは、特に後述の索引最適化を考慮して、メイン表の選択と挿入の両方に重要なパフォーマンスの影響を与える可能性があります。

ヒスト/監査テーブルのインデックスは、メインテーブルと100%同一である必要はありません。つまり、ヒストデータベースから監査データをクエリするために必要なインデックスを省略することができます。 )、その逆もあります。データの変更を遅らせるインデックスを持つメインテーブルをサドルすることなく、特定の監査クエリに対してインデックスを最適化します(クラスタードインデックスを使用してタイムスタンプでテーブルを並べ替えるなど)。更新、メインテーブルのクラスタードインデックスとの衝突、通常は時間順にクラスター化することはできません)。

+0

+1良い観察。 –

+0

SO上のすべてのスレッドが常にとても市民だった場合::) – DVK

6

履歴テーブルは、ユーザーがプライマリデータベースレコードに対して行った(通常は時間的でない)変更の履歴を提供します。この歴史は本質的にアーカイブである(すなわち歴史的な目的のために時折アクセスされる)。時間的な情報(変更が行われたとき)は事実上二次的なものです。

一時データベースは、時間クエリを実行するために特別に設計されています。一時的な情報は本質的に一次的であり、即座に検索できるようオンラインで保持されます。アーカイブを行う必要がない限り、2番目のテーブルは作成されません。

http://en.wikipedia.org/wiki/Temporal_database

+0

これは、基準選択がデータ処理に依存することを意味しますか? – programmernovice

+0

データ取得の性質と用途によって異なります。ヒストリカルテーブルは、一般的に誰が変更を行ったのか、その変更の内容、およびいつ変更が行われたのかを誰かが知る必要がある場合にのみアクセスされます。時系列データベースは、改訂履歴とは関係のないデータに対して時間ベースのクエリを実行するように特別に設計されています。だから2つは全く異なっている。 –

+0

+1。私はいくつかの実用的な考慮事項を追加しました。 – DVK

1

developerWorksの記事で説明されている履歴表は、データベースの履歴(現実に関する私たちの信念の歴史)を保持する表です。

あなたが他のスレッドで尋ねた歴史の種類は、私たち(現在!)現実の歴史についての信念。

違いに注意してください。 2人は、現実についての私たちの過去の信念が確かに正しかった限りにおいて同意します。それは必ずしも100%というわけではありません。

前者を後者として使用すると、その同意度は確かに100%です。すなわち、現実に関するすべての過去の信念が常に現実と一致しています。あなたが現実を誤って信じていることは不可能であると仮定しています。

他のテーブルの履歴を保持するテーブルは、監査の目的に適しています。現実の歴史を保持する表は、その歴史的情報に興味のあるユーザーの目的に合っています。

関連する問題