二重テンポラル テーブル - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - テンポラル テーブル サポート

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/cjo1556732840654.ditamap
dita:ditavalPath
ja-JP/cjo1556732840654.ditaval
dita:id
B035-1182
Product Category
Software
Teradata Vantage

トランザクション時間と有効時間は独立した時間次元であり、それぞれ別の目的に使用します。二重テンポラル テーブルには、transaction-time列とvalid-time列の両方の列が含まれます。行の変更の結果として、二重テンポラル テーブルでは、transaction-time次元とvalid-time次元で独立した変更が自動的に発生します。変更の結果として行に何が発生したかを判断するときには、これらの次元を個別に考慮する必要があります。

たとえば、二重テンポラル テーブル内の行が削除されると、transaction-time期間の終了境界値は、削除の時刻を反映するように自動的に変更され、それ以降は変更されないように行がクローズされます。transaction-time期間の変更後の終了境界値によって、行が削除されたというデータベースの実態が反映されます。

行のvalid-time期間は未変更のまま維持されます。行の削除はvalid-time期間の終了境界値に影響しないため、行の情報は履歴、現在、または将来の情報としてvalid-time次元でその内容が維持されます。ただし、その行は削除されているので、その行がトランザクション時間内のクローズ行としてテーブルに残されていても、それ以降のテーブルに対するDML操作に削除された行が関与することはありません。

二重テンポラル テーブルにはtransaction-time列が存在するので、このテーブル内の行に加えたすべての変更によって、自動的にトランザクション時間次元でクローズ行が作成されます。これは、transaction-timeテーブルに変更を加えたときと同じです。さらに、変更を表わすための行がvalid-time次元で作成されることもあります。

たとえば、二重テンポラル テーブルのある行に契約条項が格納されているとします。契約が有効である期間中に条項が変更されたときには、UPDATE文などを使用して行を変更しなければなりません。このテーブルはテンポラル テーブルなので、Teradata Databaseは新しい条項を格納するための行のコピーを自動的に挿入します。新しい行の有効期間は、契約の変更時点から開始し、元の契約の終了期日に終了するように自動的に設定されます。新しい行のtransaction-time期間の開始境界値には、いつ新しい行が作成されたかが反映されます。

元の行は、有効期間の終了が契約の変更時点( いつ古い条項が無効になったか)を反映するように自動的に変更されます。この行は、valid-time次元で履歴行になります。どちらの行もトランザクション時間次元ではオープン行のままになります。そのため、すべての種類のDML問合わせやDML変更で利用できる状態が保たれます。これらの変更は、単にテーブルのvalid-time次元についての結果です。

このテーブルにはtransaction-time次元も含まれているため、元の行の別のコピーが作成されます。この行は元の有効期間を反映しますが、契約の変更時点で、トランザクション時間次元で行がクローズされます。この行は、以後変更できなくなります。これは、この行がトランザクション時間でクローズされているためです。この行は、その行が変更前にデータベース内に存在していたときの行の「以前」のスナップショットを永続的に提供します。

Teradata Databaseが行に対して自動的に実行するアクションには、独立したアクションが含まれます。これは、テーブルにvalid-time列とtransaction-time列の両方が含まれるためです。