16.20 - 二重テンポラル テーブル - Teradata Vantage NewSQL Engine

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

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1182-162K-JPN

トランザクション時間と有効時間は独立した時間次元であり、それぞれ別の目的に使用します。二重テンポラル テーブルには、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列の両方が含まれるためです。