テンポラル表を使用したタイム・トラベル照会

テンポラル表を使用して、時間に基づく状態情報をデータと関連付けることができます。 テンポラル・サポートを使用しない表のデータが現行有効データと見なされるのに対し、テンポラル表のデータは、データベース・システム、ユーザー・アプリケーション、またはその両方によって定義される期間有効です。

時間に基づくデータの保管および保守が必要になるビジネス・ニーズは多数存在します。 データベースにこの機能がないと、時間を重視するデータのサポート・インフラストラクチャーの保守は、コストが高い複雑なものになります。 テンポラル表があれば、データベースは追加のアプリケーション・ロジックなしで時間に基づくデータを保管したり取り出したりすることができます。 例えば、データベースは、表の履歴 (削除された行、または更新された行の元の値) を保管することができます。 これにより、データの過去の状態を照会することができます。 また、アプリケーションまたはビジネス・ルールによって有効であると見なされる時点を示すために、データの行に対して日付範囲を割り当てることもできます。

テンポラル表は、行の有効期間を記録します。 期間とは、テンポラル表の 2 つの日付列または時刻列によって定義される期間です。 期間には、開始列および終了列が含まれます。 開始列は期間の開始を示し、終了列は期間の終了を示します。 期間の開始値は期間に含まれますが、期間の終了値は期間には含まれません。 例えば、1 月 1 日から 2 月 1 日の期間を持つ行の有効期間は、1 月 1 日から 1 月 31 日の深夜までです。

2 つの期間タイプがサポートされています。
システム期間
システム期間は、行の内容が最新であった期間を示す、データベース・マネージャー保守の値が入った列の対で構成されます。 開始列には、行が作成されたタイム・スタンプ値が入れられます。 終了列には、行が更新または削除された時点のタイム・スタンプ値が入ります。 システム期間テンポラル表の作成時には、現在アクティブである行が組み込まれます。 各システム期間テンポラル表は、すべての変更行を含む履歴表と関連付けられています。
アプリケーション期間
アプリケーション期間は、行の有効期間を示す、ユーザーまたはアプリケーションが提供する値が入った列の対で構成されます。 開始列は、行の有効期間の開始時刻を示します。 終了列は、行の有効期間の終了時刻を示します。 アプリケーション期間を持つ表は、アプリケーション期間テンポラル表と呼ばれます。
SYSCAT.TABLES システム・カタログ・ビューを照会することにより、表にテンポラル・サポートがあるかどうかを確認できます。 以下に例を示します。
SELECT TABSCHEMA, TABNAME, TEMPORALTYPE FROM SYSCAT.TABLES
TEMPORALTYPE の戻り値の定義は、以下のとおりです。
A
アプリケーション期間テンポラル表
B
バイテンポラル表
N
非テンポラル表
S
システム期間テンポラル表