仕組みを「見える化」してみた
アナハイムテクノロジー
はやしつとむ
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 |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|