Introduction
Firebird
is a full-featured SQL database engine. It is powerful, yet
lightweight, with minimal configuration and administration needs.
It's easily scalable from single-user, single-database usage up to
company-wide enterprise purposes. A single Firebird server can handle
multiple independent databases, each with multiple client
connections. And best of all: it's true open source, thus free
of any license fees even for commercial use.
Benefits
of using Firebird
Why
would you want to use Firebird? There are five key reasons:
Compact.
A minimal install of Firebird only takes up about 3MB of disk space
and can run in as little as 32MB of memory. This makes Firebird the
smallest of the full featured database engines by far: the "Express"
editions of Oracle, DB2 and SQLServer typically take up more than
100MB and offer only restricted functionality.
Easy.
Firebird is easy. It is easy to develop with, it is easy to deploy,
it is easy to manage and administrate. A demo
install at an OSDC conference in Melbourne took 53 seconds from
hitting Enter to start the installer to opening a database using a
command-line utility, stopping en route to change the SYSDBA
password.
Free.
Firebird is free. You can download it at no cost and use it. You can
redistribute it with your application, without having to pay license
fees or having to open source the entire application. You get the
full source code, so you can change it should you want to.
Community.
The strength of Open Source software lies in the community. Firebird
has a large and vibrant community, ensuring that the code base will
continue to be developed. The Firebird lists are renowned for their
fast and helpful responses. Commercial support is available from
multiple sources for those users that need it.
There
is no other database system on earth that shares all the above five
qualities with Firebird.
Connectivity
A
database system is no use unless applications can connect with it.
Firebird connects with clients through all popular technologies and
through quite a few less well known technologies as well.
C/C++
The
Firebird native client library offers C/C++ programmers full access
to the database server and to the security features. It is a easy to
deploy library: you can simply pack it with your applications and it
will work (on Windows no changes to the Registry are needed). For C++
development, the IBPP wrapper offers an object-oriented interface to
Firebird.
ODBC
Like
it or not, ODBC is still a workhorse of database system connectivity.
Many clients written in Visual Basic or MS Access use it to connect.
The Firebird ODBC driver has full support for the ODBC 3.0
specification and is available for both Windows and Linux. The driver
works flawlessly with all releases of Microsoft Office, including
Access.
Java
Java
clients use the JDBC standard to connect to database servers. The
Firebird JDBC driver – more commonly known as 'JayBird' –
has full support for the JDBC3 standard and plans support for the
recently announced JDBC4 specification. Jaybird can operate both as a
type 4 and as a type 2 driver and works with all popular makes of
virtual machine (Sun, IBM, BEA, etc.). JayBird is fully compatible
with all major J2EE frameworks, such as JBoss, WebLogic and
WebSphere.
dotNet
Microsoft's
dotNet uses the ADO.Net standard for connecting to database servers.
Firebird was among the first non-Microsoft databases to support
dotNet and as a result the driver is mature and full featured. The
Firebird ADO.Net driver has support for both dotNet 1.1 and dotNet
2.0, and also supports the Linux equivalent of dotNet, Mono 1.1 and
Mono 2.0.
Delphi
/ Lazarus
Firebird
shares a history together with Delphi, having been 'room mates' at
Borland for about a decade. From its launch till today, Delphi has
been bundled with Interbase and Firebird is at the hart of millions
of Delphi-based software installations. There is large pool of
database connectivity frameworks for Delphi, all of which support
Firebird. A 2004 survey by Evans showed that Firebird was more
popular than MSDE (SQLServer Express) for the 'edge applications'
that people write in Delphi or VB. The open source Lazarus system
also supports Firebird, through the “sqldb” driver.
PHP
With
some 1 million developers using it and driving about 20 million
websites, PHP has taken on a prominent role in connecting data to the
web. Firebird has native drivers for both PHP4 and PHP5. Firebird
also supports the new DAO data access layer.
Next
to the above technologies, Firebird supports connectivity to a host
of other languages and systems, such Perl, Python and Ruby. The
driver for Python is called Kinterbasdb.
Downloading
Firebird
Starting
with Firebird is easy, you just have to download it from
http://www.firebirdsql.org/index.php?op=files&id=engine
Don't
forget to read the Firebird 1.5 Quick Start Guide at
http://www.firebirdsql.org/index.php?op=devel&sub=doc
to
help you through your first steps.
You
can also try Firebird with a real demo application, “The
DVD Store”. The DVD Store application is a complete online
e-commerce test application, with a backend database component, a web
application layer, and driver programs. All instructions and
explanation are here :
http://www.ibexpert.info/documentation/I.%20Database%20technology/Transaction%20Processing%20Performance%20with%20IBEBenchmarks/124344.html
Another
fast way to test Firebird is to setup Phoenix PHPServer (a four click
setup of MyServer, PHP and the Firebird client) from
http://www.fyracle.org/phpserver.html
and to continue to play testing Bitweaver an application framework
for content management written in PHP (http://www.bitweaver.org).
Roadmap
Firebird
development is moving at a brisk pace, often in several concurrent
branches. Firebird 1 was released in 2002 and fixed countless bugs in
the InterBase 6 Open Edition code base. The Yaffil branch added
features and improved embedded usage. Firebird 1.5 was released in
2004 and moved the code base to C++, laying the ground work for major
work. The Fyracle branch added features, notably support for stored
procedures written in Java or dotNet and PL/SQL.
At
the time of writing (March 2006), Firebird 2 was about to be
released. Firebird 2 removes many limits that existed in the 1.5 code
base and makes major enhancements to the optimizer,
The
next release will be Firebird Vulcan, which moves the code base to a
fine grained locking model, which allows for near linear scaling on
SMP hardware. Firebird Vulcan is planned for the first half of 2006.
The
roadmap continues with Firebird 3 and Firebird 3+, which will
consolidate all advances into a the main development branch.
SQL
|
|
|
SQL
standards. Firebird implements most of the core ANSI SQL-99
standard with several extensions from the SQL200x standard. An
overview chart showing SQL200x compliance is available on the
project's main web site. On top of this, Firebird has several
unique additional features which are not covered by the standard.
|
|
Data
types. Firebird offers the full range of common datatypes and
has a full implementation of data domains.
|
|
BLOB's.
Firebird implements typed binary large objects ('blobs'). Text
blobs, a.k.a. "clobs", can be used directly as character
data in many cases. The engine supports "blob filters"
for converting between compatible typed blobs and includes several
of its own. Blob filters can be user-defined so that, for
example, the database programmer can make an XML-to-RTF filter
available to applications.
|
|
Internationalization.
Firebird is fully internationalized. In fact, most of its user
base is outside of the English speaking world, with Brazil,
Europe, Russia and Japan being important markets / having
important communities.
Oracle
mode. Firebird has a third party extension, called “Fyracle”.
This extension adds several features to the core engine and offers
an oracle-compatibility mode:
|
Transaction
processing
|
|
|
ACID.
Firebird is fully ACID compliant. All ANSI isolation levels except
Dirty Read are supported. Dirty Read isolation violates ACID
principles and is not supported by Firebird.
|
|
Locking.
In 1984 Firebird ancestor was the world's first database system to
use multi-version concurrency control, a technology that avoids
the use of user locks to achieve multi-user concurrency. Locking
policy is optimistic and at row-level. Except in extreme
transaction configurations, readers and writers do not block each
other. This technology has since been imitated by Oracle in the
late 80's and by SQLServer, Postgres and InnoDB (MySQL) in their
most recent releases. Firebird offers an optional row level lock
in the SELECT statement, for applications that need row locks,
using a syntax similar to Oracle's. It is also possible to impose
a table lock for applications that need such a feature.
|
|
Transaction
control. Firebird offers full support for commit, rollback and
savepoint, including nested savepoints. Additionally, both COMMIT
[WITH] RETAIN and ROLLBACK [WITH] RETAIN are supported, enabling
the resources allocated for a transaction to be re-used for
repetitive tasks.
|
|
Distributed
transactions . Firebird has offered two-phase commit and XA
since its earliest releases.
|
|
Transaction
programmability. Developers can select the isolation level on
a transaction-by-transaction basis. Deadlock detection and
resolution is automatic (and infrequent, see 'Locking' above). It
is possible to specify whether deadlock notification is immediate
or deferred for a configurable timeout period. Most locking
conflicts are not deadlocks. Each Firebird transaction can be
configured according to several parameters to determine when and
how conflicts are resolved.
|
Embedded use
|
|
|
Embedded
server. Because the Firebird server is only a few MB in size,
offers a Services API and has low maintenance, it is an ideal
system to include with an application. Starting the server
involves nothing more than spawning a Firebird server process from
the main application.
|
|
In-process
library. Firebird offers an embedded model in which the entire
database engine is located in a single library file ("dll"
or "so", depending on platform) less than 2MB in size.
This mode has exactly the same functionality as the full-server
counterpart, with the exception that databases can only be opened
by a single application at a time.
|
|
Backup.
The backup/restore functionality of the in-process library server
is exactly the same as that provided by the full server models.
|
|
Administration.
Firebird has a "Services API", which makes it easy for
the hosting application to access administration functionality,
such as managing users, access rights and performing backup and
restore.
Firebird
was designed to be self-managing and self-tuning. Other than
backup and restore it does not need any DBA intervention to keep
running smoothly. This quality has been a major driver behind the
success of Firebird.
|
Programmability
|
|
|
Constraints.
Firebird has full support for constraints, including primary key,
foreign key, check constraint, unique, default and not null.
Referential integrity is completely implemented, including
SQL-standard CASCADE and SET NULL options.
|
|
Triggers.Firebird
supports triggers on tables and views. Triggers can act on update,
delete and insert with full access to both the "old" and
"new" column values for all columns. Uniquely, Firebird
allows multiple triggers for each combination of phase
(BEFORE/AFTER) and event (INSERT/UPDATE/DELETE), for execution in
a specified sequence. It also supports multi-event triggers, i.e.
a single trigger module that can be executed conditionally BEFORE
| AFTER INSERT OR UPDATE OR DELETE.
|
|
Stored
Procedures. Firebird supports stored procedures. The procedure
bodies can be written in Firebird's powerful native procedural SQL
language, “PSQL”.
Fyracle
offers a plugin interface for stored procedures and trigger bodies
in other languages. Currently plugins are available for Java,
dotNet and C/C++. Fyracle can also handle Oracle syntax PL/SQL
stored procedures and triggers.
|
|
User-defined
external functions. Firebird supports UDF's. UDF's can be
written in any language that can provide an entry point through
the "cdecl" interface, although C/C++ and Delphi are the
most common choice. The Firebird distributions come with two UDF
libraries and many more are available through community channels,
with or without open source code.
|
|
Views.
Firebird supports views. Views are 'first class citizens', with
their own user access control, the possibility for views on views,
support for WITH CHECK OPTION, etc.
|
|
Procedural
views. Firebird directly supports another form of virtual
table, the selectable stored procedure. This is a procedure that
returns a result set of individually calculated rows. Oracle
recently added a similar feature under the name "pipelined
table function".
|
|
Sub-queries.
Firebird supports sub-queries in many contexts: in the select
list, in the from list ('derived tables'), as source for updates
or inserts, in where clauses, as (potentially recursive) common
table expressions, etc. Sub-queries can be nested to any depth
within the maximum of 254 sub-queries per main query.
|
|
Federated
queries. The Firebird the core engine does not support
federated queries itself. Distributed queries can be implemented
using third-party tools, such as one distributed by EasySoft.
|
|
Connectivity.
Next to its native C/C++ interface, Firebird has full featured
drivers for ODBC, Delphi, Java JDBC, dotNET and PHP. Firebird has
drivers for many smaller languages, such as Perl, Python and Ruby.
|
|
ESQL
precompilers. Firebird offers an ESQL precompiler for C, C++,
ADA, COBOL and Fortran.
|
Database
availability
|
|
|
Online
reorganization. Firebird was designed to be self-managing and
self-tuning. Incremental reorganisations are part of query
execution. Larger reorganisations are handled by a background
thread and do not stall queries and/or transactions.
|
|
Replication.
Firebird does not support replication in the core engine. However,
it is supported through a range of third party products, including
support for bi-directional replication. The most well-known
product is IBReplicator.
|
|
High-availability.
Firebird offers a range of high-availability techniques. It can be
configured with a guardian process to restart the database server
after failure. It can be configured as 'one process per client',
to isolate failures. To deal with failing disk hardware, Firebird
can maintain a hot backup, or 'shadow', on a second disk. On
Unix/Linux server platforms, the shadow can be located on a
separate, second system.
|
|
Online
backups. Firebird can take a backup of a database without
shutting down. Making backups does not halt or delay transactions
and/or queries. Backups are database level. From version 2.0
onward, incremental hot backup is an option also.
|
|
Disaster
recovery. Firebird has a 'careful write' design, which always
leaves the database in a consistent, ACID state. As a result,
recovery is very fast. This quality has led to several design wins
for Firebird, including usage by research ships in Antarctic
waters and by the US military in field tanks. Firebird's
architecture does not require WAL or retrospective logging to
recover from disaster. For those who must have it, third-party
plug-ins are available.
|
Security
|
|
|
Authentication
and authorization. Authentication is through user name and
encrypted password.
|
|
Encryption.
Firebird does not encrypt the database or network communication.
For secure communication across a network a companion product,
Zebedee, is frequently used. Backups are not encrypted.
|
|
Auditing.
Firebird does not offer auditing built into the core engine.
Auditing is offered through a third party companion product,
IBLogmanager.
|
Administration
|
|
|
Installation.
The install requires only a few mouse clicks and typically
completes in a few minutes. Even a first time user would complete
the default install in under 5 minutes.
|
|
Disk
space. A typical install requires some 25MB of disk space. A
minimal install would require about 3MB of disk space. Firebird is
by far the smallest of the full featured SQL database engines.
|
|
Memory.
For a minimal configuration, some 16..32MB would suffice. As a
rule of thumb, one should allow for 10MB of free memory per
concurrent connection/user, using the installation defaults for
configurable memory settings.
|
|
On-going
administration. The install leaves the database system up and
running. Other than backup/restore, DBA attention is not needed.
All tasks, start/stop, backup/restore, etc. can be handled
entirely programmatically.
|
|
Native
administration tools. Firebird's native tools are powerful
command line tools, that work identically across all supported
platforms. Typically, these tools are also scriptable. GUI tools
are offered by a variety of third party vendors and open source
projects.
|
|
Third-party
GUI tools. Many GUI tools are offered for Firebird -- too many
to count accurately! Two toolsets that are widely used throughout
the Firebird world are IBExpert and Database Workbench, for the
breadth and depth of their access to all of Firebird's features.
The open source FlameRobin toolset is a cross-platform GUI
application that is winning adherents, even in beta.
|
Platforms
|
|
|
Server
platform. Firebird 1.5 is available for Windows, Linux,
Solaris (SPARC and Intel), FreeBSD, MacOSX and HPUX.
|
|
Client
platform. As above. Any supported client platform can access
any supported server platform. The main determinant for
application development lies in language driver support for the
Firebird API that is exposed by the client library.
|
|
64-bit
support. Firebird 2.0 will support 64-bit Linux and Windows,
with Solaris and MacOSX following later. Firebird 1.5.3 (the
current release version) supports 64-bit file access but must be
used in 32-bit mode on 64-bit CPU cores. Because of
data-alignment issues, that will be resolved for the Firebird 2.0
release, it is unlikely that a 64-bit core support version of
v.1.5.x will be implemented.
|
Data
warehousing
|
|
|
Data
partitioning. Firebird does not support physical partitioning.
However, the data can be spread over multiple files/disks if
needed. Users report good performance on data warehouses 50-100GB
in size.
|
|
Index
partitioning. Firebird handles index partitioning internally
and no
deterministic
DDL is available to change the way the engine maintains the index
trees. Firebird 2 further optimzes the way partitioning is
carried out for multi-segment indexes.
|
|
Bitmap
indexes. Firebird automatically selects and optimizes indexes.
Firebird has supported bitmap indexes since its earliest releases.
Firebird will create bitmap indexes on-the-fly if the optimizer
judges this to be useful. Firebird 2 removes hard restrictions on
column width and enhances the run-time choices available to its
cost-based optimizer.
|
|
Parallel
query. Firebird does not support parallel queries in the sense
of a single query's steps being broken down by the engine and
allocated to separate threads/CPUs for parallel processing.
Utilization of SMP hardware depends on the deployment model chosen
for development and deployment, with clear benefits in the
"Classic" server model. The Firebird Vulcan release
allows full use of the processing power of SMP hardware.
|
|
ETL.
Firebird can do high speed concurrent data load/unload. The
source and target set[s] can optionally be flat text files on the
local file system, which are defined to the database as external
tables.
|
Freedom and
Cost
|
|
|
License.
Firebird is covered under the Initial Developer Public License and
the Interbase Public License. These are essentially Mozilla
(“MPL”) licenses, with modifications to remove the
inappropriate proprietary claims of Netscape that are inherent in
the MPL.
|
|
Development
support cost. Firebird is free, including for commercial use.
Most users opt for support through the highly responsive community
support forums. Support contracts are available from several
companies around the world. Pricing varies according to locality
and the level of support needed.
|
|
Production
support cost. The Firebird software itself is free of any
production usage fees. Firebird is often included with an
application, and the vendor or reseller typically supports
Firebird as part of the application support; otherwise the same
parameters apply to production support as to developer support.
It
is very unusual for a Firebird site to have a DBA-in-residence,
since there is nothing much to do! In many locations it is very
common for medium or large sized sites to retain a Firebird
"expert" under some form of contract, to address any
support issues that arise.
|
|
Access
to product features. Firebird has no "paying customers".
Everyone gets everything there is, free of any license or
deployment fees. Some customers/ vendors opt to create private
builds to cater to their specific needs, but these are just that:
private builds.
|
|
Registration.
Commercial developers and users are encouraged to register with
the Firebird Foundation and make voluntary payments to support
further Firebird development. The suggested payment is $50 per
concurrent user per year.
|
Community
|
|
|
Governance.
Control is held by the Firebird Project community, specifically
centred in the Firebird Admin team, which is convened by consensus
as the group of core engine developers and others most closely
involved in product architecture, development, production and
support.
Its
legal and funding interests are in the hands of a non-profit
organisation, the Firebird Foundation Incorporated, which is
legally incorporated in Australia. No commercial entity has
control over the Firebird Project. Businesses are encouraged to
exert their "influence" by sponsoring specific projects,
joining the Foundation and/or contributing their code to the
project.
|
|
Source
code control. Developers get update authority through a peer
review, merit based process - a developer must earn the right to
post updates. Any updater must verify his/her own changes before
posting by building the engine in a sandbox and subjecting it to
the entire QA battery.
All
updates, no matter from which developer, pass through a screening
process to check for quality, style, effect downstream, etc.
Sources are strictly controlled using the CVS system hosted by
Sourceforge.net.
|
|
History.
The Firebird project has been running for almost 6 years and it
has not slowed down. Firebird began in 2000 from the InterBase 6
source code that was released as open source. The roots of
InterBase go back to 1984, and even before that to DEC's "Rdb"
product.
|
|
Installed
base. Firebird is distributed through a variety of means,
including downloads directly from the project's website and as
both source code and binaries in some Linux distributions. Taking
version upgrades into account, the project estimates the installed
base of Firebird 1.5.x, at between one and two million development
and production servers. For all versions, we estimate about 3
million copies.
|
|
Vendor
adoption. Since no commercial licensing is involved, a precise
number is hard to give, but we estimate the number of application
builders that include Firebird as part of their commercial
deployments to be in the thousands. Government agencies, both
military and civil, that incorporate Firebird into their systems
are becoming noticeable, too.
It's
worth noting that Firebird benefits from its ancestor, InterBase,
having been bundled with Borland's developer tools
(Delphi/C++Builder) for over a decade and being deployed over many
years in thousands of midmarket client-server applications.
|
|
Customer
base. Again, a precise number is hard to give, but a
conservative estimate would be around the 100K mark. These appear
to be typically departmental workgroup solutions running Windows
workstations with Windows client applications or browser clients
over a Firebird back-end on Linux or Windows. In Russia, Eastern
Europe and Brazil, Firebird has seen significant uptake in the
financial world (in some of those countries, Firebird has rapidly
become the second most popular choice after Oracle).
|
|
Community
activity. The community is very active, with dedicated, highly
responsive forums for support, development, various language
drivers, etc., in many languages. User conferences occur every 9
months or so, alternatively hosted in the EU and Brazil. There are
many community news blogs/services.
|
|
License
partners. The Firebird license allows for free, unqualified
redistribution of binaries, whether downloaded or built from
source code. There is no such thing as a "license partner".
The licensing requires that all modifications to the Firebird
source code be made publicly available under the same licenses as
the Firebird code (IPL and IDPL).
|
Training
|
|
|
Publications.
About twenty hard copy books at the last count. Most titles are in
German, Japanese, Portugese, etc. "The Firebird Book" is
devoted wholly to Firebird and has been published in English,
Russian and Brazil Portuguese, so far. The English version is
published in both hardcopy and eBook formats.
|
|
Classroom
training. No specific classes that the project either controls
or counts. Several support companies offer Firebird training,
often alongside training programmes in Borland's InterBase and its
language products.
|
|
Web-based
training. Free support is readily available, and not just for
the RDBMS. The Firebird community also has active support lists
for Java, PHP and Python, as well as for a range of Delphi
component solutions.
|
|
On-site
training. On site training is offered by a small range of
companies, such as IBPhoenix, H-K Software, iBase.ru,
Firebase.com.br and others.
|
Services and
support
|
|
|
System
integrators. Although not limited in capabilities, Firebird is
deployed most typically in mid-market scenarios where the
application vendor also acts as system integrator. Again, since
we don't sell licences, we don't have any way to keep account of
the numbers.
|
|
Commercial
support. End-user support is typically offered as part of
application support for applications using Firebird. Specific
Firebird support is offered by a small range of companies, such as
IBPhoenix, H-K Software, Janus Software, iBase.ru, FireBase.com.br
and others.
|
|
24x7
mission-critical support. Internet communication in its
various forms is very important to both the support companies and
their clients, since it enables them to cover wide ranges of time,
expertise and geography.
|
|
|
|