Yet another OSS DB:Firebird(3)

仕組みを「見える化」してみた

Firebird日本ユーザー会
アナハイムテクノロジー
はやしつとむ
2009/2/19
Firebird日本ユーザー会の林です。前回は、Firebirdのデータベースファイルの内部構造について、ヘッダページを中心に、GLinkによる書き換えまでを解説しました。今回はデータベースファイルの中で使用されている、そのほかのタイプのページについて中身を見ながら解説をしていきます。

はじめに

 前回は、Firebirdのデータベースファイルの内部構造について、ヘッダページを中心に、GLinkによる書き換えまでを解説しました。今回はデータベースファイルの中で使用されている、そのほかのタイプのページについて中身を見ながら解説をしていきたいと思います注1

 中身を見るといっても、バイナリエディタや普通のエディタで開いたのでは、見ること自体は可能ですが、まあ、あまり何だか分からないと思います。

 そこで、Delphiを使って簡単なユーティリティを作成したので、これを利用しながらデータベースファイルの中をのぞいていきましょう。名前がないと「あのソフト」とか「このアプリ」などと書くことになってしまうので、取りあえず「VisualODS」注2と名付けました。筆者が作成したVisualODSのバイナリは以下から取得できます。本稿ではこのツールを基に解説を進めます。

注1:本稿はIBPhoenix Research Centerを参考としています。こちらもご一読ください。

注2:VisualODSは、Windows2000/XP/(Vista)で動作する「はず」です。動かなかったらご連絡ください。どうもVistaでは、表示がおかしくなるようです。

VisualODSの使い方

 VisualODSの使い方は簡単です。データベースファイル名を指定して、Openボタンを押すと中身が表示されるようになっています。

●VisualODSの起動画面


ISQLでサンプルデータベースを作成

 では、サンプルのデータベースを作成して、開いてみましょう。

[Firebirdの格納パス]\bin>isql -u sysdba -p masterkey
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 'localhost:c:\tmp\test.fdb' page_size=16384;
SQL> exit;

 VisualODSのエディットボックスにいま作成したデータベースのフルパスを入力して、Openボタンをクリックします。

●visualODSでサンプルデータベースを開く

 何だかカラフルになりましたが、どうも色使いのセンスが悪いですね。上の各種パラメータは、取りあえずヘッダページの情報が表示されるようになっています。

 その下には「PageLayout」と「PageDetail」という2つのタブがあります。PageLayoutタブには、開いたデータベースファイルの各ページのタイプが色分けされて表示されるようになっています。サンプルはFirebird 2.1で作ったばかりのデータベースですが、それぞれ以下のような並び順になっています。

サンプルデータベースのヘッダ情報例
順番 PageType
1番目 PageType=1 Database header Page
2番目 PageType=2 Page inventory Page
3番目 PageType=10 Write Ahead Log Information(未使用)
4番目 PageType=4 Pointer Page
5番目 PageType=6 Index Root Page
6番目 PageType=5 Data Page
〜略〜
78番目 PageType=7 Index(B-tree) Page
〜略〜
130番目 PageType=9 Generator Page
137番目 PageType=3 Transaction Inventory Page
〜略〜
全部で154ページ

 この状態で、PageDetailタブを開くと、ヘッダページの内部がバイナリ形式で表示されます。また、PageLayoutタブに戻って各ページをクリックしてからPageDetailタブを開くとそれぞれのページの中が見えるようになっています。

●Page Detailタブを開いたところ

 最初のデータベースヘッダページについては、前回解説したので、今回はそれと、未使用であるPageType=10を除く8種類について解説していきます。VisualODSを使って、実際のデータを見ながらイカ(以下)注3の解説をご覧になると、よりイメージがわくのではないかと思います。

注3:いまはなき「FDELPHI」では、「以下」のことをなぜか「イカ」と書く習慣がありましたので、その習慣に倣っています。

1/4 次のページへ

Index
仕組みを「見える化」してみた
→ Page 1
・はじめに
 VisualODSの使い方
 ISQLでサンプルデータベースを作成

Page 2
 PageType=2:ページインベントリページ(Page Inventory Page)
 PageType=3:トランザクションインベントリページ(Transaction Inventory Page)

Page 3
 PageType=4:ポインタページ(Pointer Page)
 PageType=5:データページ(Data Page)
 PageType=6:インデックスルートページ(Index Root Page)
 PageType=7:インデックスページ(Index<B-tree> Page)

Page 4
 PageType=8:Blobデータページ(Blob Page)
 PageType=9:ジェネレータページ(Generator Page)
・最後に
Yet another OSS DB:Firebird


Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間