Last updated: 12/22/2002 Top ドキュメントTop

データベース管理システム 管理者用ガイド
DID・RID

概要

本システムでは、データの修正や削除を行うことはできますが、 いつでも修正前・削除前の状態に復元できるようにデータの管理を行っています。

実際には、データの修正が行われる場合は、 データベース中の古いレコードを上書きすることはせず、 新しいレコードを挿入します。 また、データが削除される場合は、 対応するレコードを削除する代わりに、 データの状態表すシステム定義カラム (system_state) を 無効に設定します。 このように、修正前・削除前のデータを残してありますので、 データ毎に修正の様子を追うことや、 データベースを指定した時間の状態に復元することも可能です (ただし、これらをサポートする API はまだ整っていません)。

本システムでは、各レコード毎に DID(データID)と RID(レコードID)を 付けることで、これらのデータを管理しています。 DID, RID の値は、システム定義カラムの system_did, system_rid に格納されています。

DID

ひとまとまりのデータに対して割り当てられるIDです。 データの修正を行った場合に値が引き継がれます。 従って、ひとつのアプリケーションで DID の同じレコードが複数存在することが多分にあります。 ただし、どんな場合でも、 DID が同じで、状態が有効なレコードが複数存在することはありません。 状態が申請中のレコードや、状態が無効のレコードは、 複数存在することがあり得ます。 新たにデータを追加した場合は、DID は PostgreSQL のシーケンス番号生成機構により生成されます。

データの修正が行われると、 修正する元となったレコードの RID が system_pre_rid に格納されます。 また、データの修正によって新たにレコードが挿入されたために、 状態が無効になるレコードがあれば、 それらのレコードの system_next_rid に 修正されたデータの RID が格納されます。

RID

DID とは無関係に、レコード毎に割り当てられるIDです。 RID の同じレコードが複数存在することはありません。 データを追加/修正した場合は、RID は PostgreSQL のシーケンス番号生成機構により生成されます。