PSQL Programmer's Guide (v11)

データ ファイルについて (トランザクショナル インターフェイス)

トランザクショナル データベース エンジンは、情報をデータ ファイルに保存します。各データ ファイル内には、レコードとインデックスの集合があります。レコードにはデータのバイトが格納されています。そのデータは、社員の名前、ID、住所、電話番号、賃率などを表します。インデックスは、レコードの一部に特定の値を含むレコードをすばやく見つける働きがあります。

トランザクショナル データベース エンジンは、レコードを単なるバイトの集合と解釈します。これは、レコード内の情報で論理的に区別される部分、つまり、フィールドを認識しません。トランザクショナル データベース エンジンにおいては、ラスト ネーム、ファースト ネーム、社員 ID などはレコード内に存在しません。レコードは単にバイトの集合にすぎません。

トランザクショナル データベース エンジンはバイト指向であるため、たとえデータ型を宣言するキーに対してでも、レコード内のデータの変換、型検査または妥当性検査を行いません。データ ファイルとインターフェイスをとるアプリケーションは、そのファイル内のデータの形式と型に関するすべての情報を処理する必要があります。たとえば、アプリケーションは以下の形式に基づいてデータ構造を使用します。

レコード内の情報
長さ(バイト単位)
データ型
ラスト ネーム
25
ヌル終了文字列
ファースト ネーム
25
ヌル終了文字列
ミドル イニシャル
1
Char(バイト)
社員 ID
4
Long(4 バイト整数)
電話番号
13
ヌル終了文字列
月給
4
Float
合計レコード長
72 バイト
 

ファイル内では、社員のレコードがバイトの集合として格納されます。以下のダイアグラムは、Cliff Jones のレコードのデータがファイルに格納されるときの状態を示したものです。(このダイアグラムは、文字列の ASCII 値を対応する英字または数字に置き換えています。整数とほかの数値は、正規 16 進表現から変更されていません。)

バイト位置
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
データ値
J
o
n
e
s
00
?
?
?
?
?
?
?
?
?
?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
バイト位置
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
データ値
?
?
?
?
?
?
?
?
?
C
l
i
f
f
00
?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
バイト位置
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
データ値
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
バイト位置
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
データ値
?
?
D
2
3
4
1
5
1
2
5
5
5
1
2
1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
バイト位置
40
41
42
43
44
45
46
47
 
 
 
 
 
 
 
 
データ値
2
?
?
?
3
5
0
0
 
 
 
 
 
 
 
 

トランザクショナル データベース エンジンがファイル内で認識する情報で区別する唯一の部分はキーです。アプリケーション(またはユーザー)はレコード内のバイトの 1 つまたは複数の集合をキーとして指定できますが、バイトと各キー セグメント内で連続していなければなりません。

トランザクショナル データベース エンジンは指定されたキーの値に基づいてレコードをソートし、特定の順序でデータを返すための直接アクセスを行います。トランザクショナル データベース エンジンは、指定されたキー値に基づいて特定のレコードも検索できます。前の例では、各レコード内のラスト ネームを含む 25 バイトをファイル内のキーとして指定できます。アプリケーションはラスト ネームのキーで Smith という名前の全社員のリストを取得したり、全社員のリストの取得後にラスト ネームでソートされたそのリストを表示したりすることができます。

キーを使用すると、トランザクショナル データベース エンジンは情報にすばやくアクセスできます。トランザクショナル データベース エンジンは、データ ファイルで定義されたキーごとにインデックスを作成します。インデックスはデータ ファイル自体の中に格納され、そのファイル内の実際のデータへのポインターの集合が含まれています。キーの値は各ポインターに関連付けられています。

前の例では、ラスト ネーム キーのインデックスがラスト ネーム値をソートし、レコードがデータ ファイル内のどこにあるかを示すポインターを持っています。

通常、アプリケーションが情報にアクセスしたり、情報をソートする場合、トランザクショナル データベース エンジンはデータ ファイル内のすべてのデータを検索するわけではありません。その代わり、インデックスを使用して検索を行い、アプリケーションの要求を満たすレコードだけを処理します。


データベースの設計

データ ファイルの作成 (トランザクショナル インターフェイス)