概要:テンポラル テーブル - Teradata Database - Teradata Vantage NewSQL Engine

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/avd1530664741287.ditamap
dita:ditavalPath
ja-JP/avd1530664741287.ditaval
dita:id
B035-1182
Product Category
Software
Teradata Vantage

テンポラル テーブルは、時間に関する情報を格納して保守するテーブルです。テンポラル テーブルを使用すると、時間ベースの判断を含む文や問合わせを、Teradata Databaseで処理できるようになります。テンポラル テーブルには、次に示す1列または2列の特別な列が含まれ、それらの列に時間情報が格納されます。

  • transaction-time列には、Teradata Databaseが行の情報を認識していた期間が記録され保持されます。Teradata Databaseはtransaction-time列データを自動的に取り入れて保持します。結果として、そうした情報の履歴が自動的に追跡されます。
  • valid-time列は、実世界をモデル化し、保険証券や製品保証が有効な期間、従業員の雇用期間、あるいは時間を意識した手法による追跡や操作が重要になる情報などを格納します。このタイプのテーブルに新しい行を追加するときには、valid-time列を使用して、行の情報が有効である期間を指定します。この期間が、行に格納された情報の有効期間(PV)になります。

テンポラル テーブル内の行が変更されると、新しい行がデータベースによって自動的に作成されます。この行は、時間次元を維持するために必要になります。たとえば、トランザクション時間が含まれたテーブル内の行が変更された場合、その行は2つの行に自動的に分割されます。

  • 新しい行は、変更された情報を表わすために作成されます。この情報は、変更後に存在することになる情報です。新しい行のトランザクション時間の期間値の開始境界値には、変更を行なった時刻が設定されます。また、トランザクション時間の終了境界値は未定のままにされます(UNTIL_CLOSEDに設定されます)。つまり、データベースの観点から考えれば、新しい行に格納された情報は、再度変更されるか、その行が削除されるまでは真だということです。
  • 元の行は、その行が変更前に存在していたこと表わします。トランザクション時間の期間値の終了境界値には、変更を行なった時刻が設定されます。この行が格納している変更前の情報は、この時点で真ではなくなっているため、この行は「クローズ」されて履歴行になります。ただし、この行がデータベースから物理的に削除されることはありません。この行は、変更が加えられる前に存在していた行の内容に関する履歴の記録として保持されます。

valid-time列が含まれるテーブルの行に対する変更は、さらに自由度が高くなります。valid-time列が含まれるテーブル内の行を変更するときには、その変更が適用される期間を指定できます。この期間が、変更の適用期間(PA)になります。行のPVと変更のPAの間の関係に応じて、変更された行は、Teradata Databaseによって複数の行に分割されます。たとえば、変更の適用期間が行のPVに収まる程度の短い期間だとすると、変更によって3つの行が生成されます。

  • 1つ目の行には、元の情報と、その行の元のPVの開始から変更が有効になるまでの期間をカバーするvalid-time期間が格納されます。
  • 2つ目の行には、変更された情報と、変更文のPAと一致するvalid-time期間が格納されます。
  • 3つ目の行には、1つ目の行と同様に元の情報が格納されますが、変更が無効になってから元の行のPVの終了までの期間をカバーするvalid-time期間が格納されます。

変更のPAが行のPVに部分的に重なるだけで、行のPV内に収まらない場合には、transaction-timeテーブルの例と同様に、その行は変更によって2つの行に分割されます。

トランザクション時間と有効時間は独立した時間次元と見なされ、それぞれの列は異なる役割を果たします。そのため、1つのテーブルにvalid-time列とtransaction-time列の両方を含めることができます。このような、2つの用途のテンポラル テーブルを、二重テンポラル テーブルと呼びます。