仕組みを「見える化」してみた
アナハイムテクノロジー
はやしつとむ
2009/2/19
はじめに
前回は、Firebirdのデータベースファイルの内部構造について、ヘッダページを中心に、GLinkによる書き換えまでを解説しました。今回はデータベースファイルの中で使用されている、そのほかのタイプのページについて中身を見ながら解説をしていきたいと思います注1。
中身を見るといっても、バイナリエディタや普通のエディタで開いたのでは、見ること自体は可能ですが、まあ、あまり何だか分からないと思います。
そこで、Delphiを使って簡単なユーティリティを作成したので、これを利用しながらデータベースファイルの中をのぞいていきましょう。名前がないと「あのソフト」とか「このアプリ」などと書くことになってしまうので、取りあえず「VisualODS」注2と名付けました。筆者が作成したVisualODSのバイナリは以下から取得できます。本稿ではこのツールを基に解説を進めます。
注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の解説をご覧になると、よりイメージがわくのではないかと思います。
| 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 |
TechTargetジャパン
- SELECT文で取り出したデータを加工して表示する (2012/1/25)
SELECT文で取り出したデータを対象に四則演算する方法など、データを見やすくする方法を解説します - 2012年は私たちが勉強会を盛り上げる! (2012/1/23)
2011年12月、データベース業界初の女子会が発足しました。そこで、女子会を盛り上げていってくれそうな2人にお話を伺いました - 複数の条件を指定してSELECT文を実行する (2012/1/13)
複数の条件を指定してSELECT文を実行する方法と、条件指定に必要な論理演算子、比較演算子の役割を解説します - モバイルからクラウドまで、幅広く活躍するCouchDB (2011/12/22)
ドキュメント指向データベース「CouchDB」。その特徴と応用範囲、海外での活用事例を紹介します
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
