トランザクション時間 - 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期間は、次に示すようにtransaction-time列に格納されます。

  • transaction-time期間の開始は、データベースが行を認識するようになった時刻(行がデータベースに最初に記録されたとき)になります。つまり、その行がテーブルに追加された時刻です。
  • トランザクション時間の期間の終了には、いつ行の更新によって事実の有効性がなくなったか、つまり、いつデータベースから行が削除されたかが反映されます。現時点で有効な情報を格納する行は、transaction-time 期間の終了境界値が無期限に設定されます。この終了境界値は、UNTIL_CLOSEDで表現されます。

transaction-time列は、列定義にAS TRANSACTIONTIMEを指定して定義します。データ型は、要素型がTIMESTAMP(6) WITH TIME ZONEのPERIODデータ型になります。通常、transaction-time列の値は設定や変更ができません。これらの値はTeradata Databaseによって自動的に保守されます。(ただし、データベースの保守やトラブルシューティングのために、NONTEMPORAL権限を付与された管理者がクローズ行を変更または削除することはできます)。

transaction-time列を含むテーブルに対するあらゆる変更は、データベースによって追跡記録されます。次に説明するように、transaction-time列を含むテーブルの物理的な行が削除されたり変更されることはありません。

  • このテーブルから行を「削除」しても、その行がテーブルから物理的に削除されることはありません。その代わりに、削除の時刻を特定する終了境界値を保持するように、transaction-time列が自動的に変更され、その行は「クローズ」されて使用できなくなったものとしてマークされます。
  • このテーブル内の行を「変更」すると、変更前の値を保持する元の行はクローズとしてマークされ、変更後の値を保持する行のコピーが自動的にテーブルに挿入されます。

行の削除結果と変更結果のスナップショットはテーブル内に残されるので、そのテーブルの完全な内部履歴が提供されます。transaction-time列を保持するテーブルは、過去の任意の時点の状態を再現できます。ただし、ほとんどのDMLでは、クローズ行の変更や削除ができません。

transaction-time列は、変更の履歴を自動的に追跡記録してデータベース内に維持する必要のあるテーブルに追加します。たとえば、法令順守のレポート作成に使用するテーブルなど、すべての変更履歴を維持する必要のある情報にはtransaction-timeテーブルを使用します。