Firebird Documentation Index → Inside a Firebird Database
Firebird Home Firebird Home Firebird Documentation IndexNext: Database Structure

Firebird Internals

Norman Dunbar

03 November 2009 – Document version 1.0


Table of Contents

Introduction
Database Structure
Standard Database Page Header
Database Header Page - Type 0x01
Page Inventory Page - Type 0x02
Transaction Inventory Page - Type 0x03
Pointer Page - Type 0x04
Data Page - Type 0x05
Index Root Page - Type 0x06
Index B-Tree Page - Type 0x07 - YOU ARE HERE.
Blob Data Page - Type 0x08 - TODO
Generator Page - Type 0x09
Write Ahead Log Page - Type 0x0a
A. Fbdump
B. Document history
C. License notice

Introduction

The purpose of this document is to try and explain what goes on inside a Firebird Database. Much of the information in this manual has been extracted from the Firebird source code - mainly on the ODS related code and headers - and from some (partially out of date) documents on the Research part of the IBPhoenix web site (http://www.ibphoenix.com/). Other questions and queries that I had were very patiently answered on the Firebird Support forums where the developers hang out.

Much hex dumping of database files was undertaken in the creation of this document, but no Firebird databases were harmed during this process.

All databases mentioned or described within this document are those with an ODS of 11.1 - in other words, Firebird 2.1, and a page size of 4,096 bytes. There may be differences between this ODS version and previous ones and wherever possible, this has been documented.

Unless otherwise noted, the test database used for this document is empty of all user tables, indices, generators etc. It was created on a 32 bit Linux system running on Intel hardware. It is therefore little endian.

Thanks to everyone who has contributed to the manual.

Firebird Documentation IndexNext: Database Structure
Firebird Documentation Index → Inside a Firebird Database