Firebird (database server)
Encyclopedia
Firebird is an open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 SQL
SQL
SQL is a programming language designed for managing data in relational database management systems ....

 relational database management system
Relational database management system
A relational database management system is a database management system that is based on the relational model as introduced by E. F. Codd. Most popular databases currently in use are based on the relational database model....

 that runs on Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

, Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, and a variety of Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

. The database forked from Borland
Borland
Borland Software Corporation is a software company first headquartered in Scotts Valley, California, Cupertino, California and finally Austin, Texas. It is now a Micro Focus subsidiary. It was founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn.-The 1980s:...

's open source edition of InterBase
InterBase
InterBase is a relational database management system currently developed and marketed by Embarcadero Technologies. InterBase is distinguished from other DBMSs by its small footprint, close to zero administration requirements, and multi-generational architecture...

 in 2000, but since Firebird 1.5 the code has been largely rewritten .

History

Within a week of the InterBase
InterBase
InterBase is a relational database management system currently developed and marketed by Embarcadero Technologies. InterBase is distinguished from other DBMSs by its small footprint, close to zero administration requirements, and multi-generational architecture...

 6.0 source being released by Borland
Borland
Borland Software Corporation is a software company first headquartered in Scotts Valley, California, Cupertino, California and finally Austin, Texas. It is now a Micro Focus subsidiary. It was founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn.-The 1980s:...

 on 25 July 2000, the Firebird project was created on SourceForge
SourceForge
SourceForge Enterprise Edition is a collaborative revision control and software development management system. It provides a front-end to a range of software development lifecycle services and integrates with a number of free software / open source software applications .While originally itself...

. Firebird 1.0 was released for Linux, Windows and Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

 on 11 March 2002, with ports to Solaris, FreeBSD 4, HP-UX
HP-UX
HP-UX is Hewlett-Packard's proprietary implementation of the Unix operating system, based on UNIX System V and first released in 1984...

 following over the next two months.

Work on porting the codebase from C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

 to C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 began in 2000. On 23 February 2004, Firebird 1.5 was released, which was the first stable release of the new codebase. Version 1.5 featured an improved query optimizer
Query optimizer
The query optimizer is the component of a database management system that attempts to determine the most efficient way to execute a query. The optimizer considers the possible query plans for a given input query, and attempts to determine which of those plans will be the most efficient...

, SQL-92
SQL-92
SQL-92 was the third revision of the SQL database query language. Unlike SQL-89, it was a major revision of the standard. For all but a few minor incompatibilities, the SQL-89 standard is forwards-compatible with SQL-92....

 conditional expressions, SQL:1999
SQL:1999
SQL:1999 was the fourth revision of the SQL database query language. The latest revision of the standard is SQL:2008.-Summary:The SQL:1999 standard, also known as SQL3, was published in 1999. Unlike previous editions, the standard's name used a colon instead of a hyphen for consistency with the...

 savepoint
Savepoint
A savepoint is a way of implementing subtransactions within a relational database management system by indicating a point within a transaction that can be "rolled back to" without affecting any work done in the transaction before the savepoint was created. Multiple savepoints can exist within a...

s and support for explicit locking. Firebird 2.0 was released on 12 November 2006, adding support for 64-bit
64-bit
64-bit is a word size that defines certain classes of computer architecture, buses, memory and CPUs, and by extension the software that runs on them. 64-bit CPUs have existed in supercomputers since the 1970s and in RISC-based workstations and servers since the early 1990s...

 architectures, tables nested in FROM clauses
From (SQL)
The SQL From clause is the source of a rowset to be operated upon in a Data Manipulation Language statement. From clauses are very common, and will provide the rowset to be exposed through a Select statement, the source of values in an Update statement, and the target rows to be deleted in a...

, and programmable lock
Lock (computer science)
In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.-Types:...

 timeouts in blocking transactions
Database transaction
A transaction comprises a unit of work performed within a database management system against a database, and treated in a coherent and reliable way independent of other transactions...

.

The previous stable release was version 2.1.3, which added new features including procedural triggers
Database trigger
A database trigger is procedural code that is automatically executed in response to certain events on a particular table or view in a database. The trigger is mostly used for keeping the integrity of the information on the database...

, recursive queries
Hierarchical query
A hierarchical query is a type of SQL query that handles hierarchical model data.Standard SQL specifies hierarchical queries by way of recursive common table expressions...

, and support for SQL:2003
SQL:2003
SQL:2003 is the fifth revision of the SQL database query language. The latest revision of the standard is SQL:2008.-Summary:The SQL:2003 standard makes minor modifications to all parts of SQL:1999 , and officially introduces a few new features such as:* XML-related features * Window functions* the...

 MERGE
Merge (SQL)
A relational database management system uses SQL MERGE statements to INSERT new records or UPDATE existing records depending on whether or not a condition matches...

 statements.

Firebird 2.5.1 is the current stable version. New features included improved multithreading
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...

, regular expression
Regular expression
In computing, a regular expression provides a concise and flexible means for "matching" strings of text, such as particular characters, words, or patterns of characters. Abbreviations for "regular expression" include "regex" and "regexp"...

 syntax and the ability to query remote databases.

The planned 3.0 release is expected to support stored procedures in languages such as Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 and C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

, and SQL window functions that restrict query results. An alpha version is expected to be delivered in the last quarter of 2011.

Mozilla Firefox name conflict

In April 2003, the Mozilla Foundation
Mozilla Foundation
The Mozilla Foundation is a non-profit organization that exists to support and provide leadership for the open source Mozilla project. The organization sets the policies that govern development, operates key infrastructure and controls trademarks and other intellectual property...

 decided to rename its web browser
Web browser
A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...

 from Phoenix to Firebird after a trademark dispute with Phoenix Technologies
Phoenix Technologies
Phoenix Technologies Ltd designs, develops and supports core system software for personal computers and other computing devices. Phoenix's products — commonly referred to as BIOS or firmware — support and enable the compatibility, connectivity, security and management of the various components and...

. This decision caused concern within the Firebird database project due to the assumption that users and Internet search engines would be confused by a database and a web browser both using the name Firebird. The dispute continued until the Mozilla developers issued a statement making clear that their software package was called "Mozilla Firefox", not "Firebird". The statement also said that the Mozilla Firebird name was a project codename. On February 9, 2004, Mozilla renamed its browser Mozilla Firefox
Mozilla Firefox
Mozilla Firefox is a free and open source web browser descended from the Mozilla Application Suite and managed by Mozilla Corporation. , Firefox is the second most widely used browser, with approximately 25% of worldwide usage share of web browsers...

, thus ending the conflict.

Main Features

  • Full support for stored procedures and triggers
    Database trigger
    A database trigger is procedural code that is automatically executed in response to certain events on a particular table or view in a database. The trigger is mostly used for keeping the integrity of the information on the database...

  • Full ACID compliant transactions
  • Referential integrity
  • Multi Generational Architecture (sometimes called MVCC)
  • Support for External Functions (UDFs)
  • SQL activity can send asynchronous notification events to clients
  • Third party tools, including GUI administrative tools and replication tools
  • Careful writes - fast recovery, no need for transaction logs
  • Many access methods: native/API, dbExpress drivers, ODBC, OLEDB, .Net provider, JDBC native type 4 driver, Python module, PHP, Perl
  • Incremental backups
  • Full cursor implementation in PSQL

The Multi-Generational Architecture (MGA)

Firebird inherited the sophisticated storage architecture of Interbase. For ensuring the ACID properties of transactions, the database engine keeps different versions of each record changed by the active users in the database. When the transactions are committed, the last version of every changed record is marked as the definitive. If transactions are rolled back, the database engine keeps the mark on the original record versions, leaving them untouched. As a result, Firebird disk writes are very reduced in comparison with databases that use the traditional transaction log architecture. Transactions writing data don’t block another ones reading it and viceversa, because each one sees its own version of the database. The advantages of this design, however, have a tradeoff: some maintenance (“sweeping”) is required from time to time to clean-up old record versions and freeing disk space.

The multi-generational architecture ensures that OLTP and DSS/OLAP operations can be run simultaneously without the delays caused by locking mechanisms found in other products.

Indexes

Firebird also uses special high-performance index structures and algorithms, making all indexes of the database to behave like well-turned “clustered indexes” used by other architectures. Firebird index buckets aren’t subject to two-phase locking, and Boolean “and” and “or” operations can be performed on intermediate bitmaps at a negligible cost, eliminating the need for the optimizer to choose between alternative indexes.

Variants

  • Firebird SuperServer has a single daemon/server for all client connections, multithreaded with shared cache
  • Firebird SuperClassic also has a single daemon/server for all client connections, multithreaded with separate caches
  • Firebird Classic uses inetd
    Inetd
    inetd is a super-server daemon on many Unix systems that manages Internet services. First appearing in 4.3BSD , it is generally located at /usr/sbin/inetd.-Function:...

     to run one copy of the server per client connection, recommended for SMP systems but might have event-notification issues if access is via a firewall
  • Firebird Embedded for creating CD-ROM catalogs, single user or evaluation versions of applications; omits some advanced features such as event notification

Licensing

The Firebird database engine and its modules are released under an open-source license
Open-source license
An open-source license is a copyright license for computer software that makes the source code available for everyone to use. This allows end users to review and modify the source code for their own customization and/or troubleshooting needs...

, the Initial Developer's Public License (IDPL), a variant of the Mozilla Public License
Mozilla Public License
The Mozilla Public License is a free and open source software license. Version 1.0 was developed by Mitchell Baker when she worked as a lawyer at Netscape Communications Corporation and version 1.1 at the Mozilla Foundation...

 (MPL). It does not force the developer to open the products using Firebird or even custom-derivatives made from its source code; but if the developer chooses to do so, then some terms and conditions should be honored. The IDPL gives the developer the freedom of making proprietary, closed source applications that use Firebird or are based on it.

Support and assistance

Firebird users, like the ones of other open-source projects, can get significant support and assistance on Internet community forums. However, for demanding environments, commercial support is available from the company IBPhoenix http://www.ibphoenix.com, that has a group of the main developers of the product working for it. Many support options are available, ranging from casual email support to contracts that designate direct and unlimited access to senior support engineers.

Low-level Firebird Native API, Services API and embedded SQL

The Firebird native API is always used directly or indirectly by all applications or middleware that connects to a Firebird database. It is implemented on the client library, fbclient.dll on Windows systems and libfbclient.so on Unix ones.
The Services API is a special function set for accessing and controlling service administration tasks such as user management, backup/restore and statistics gathering.

Embedded SQL is a technique that simplifies the development of C/C++ and COBOL Firebird applications, by using a preprocessor
Preprocessor
In computer science, a preprocessor is a program that processes its input data to produce output that is used as input to another program. The output is said to be a preprocessed form of the input data, which is often used by some subsequent programs like compilers...

 called gpre, which allows to embed SQL statements directly into the source code of the host language.

Standard cross-database APIs

  • JCA
    Java EE Connector Architecture
    Java EE Connector Architecture is a Java-based technology solution for connecting application servers and enterprise information systems as part of enterprise application integration solutions. While JDBC is specifically used to connect Java EE applications to databases, JCA is a more generic...

    /JDBC:
    • Jaybird, an Open Source (LGPL) Type 4 JCA/JDBC driver.
  • .NET
    .NET
    .NET may refer to:* .NET Framework, a software framework by Microsoft* .net, a top-level domain* .net * .NET Passport, an old name for Windows Live ID* .NET Messenger Service...

    /Mono
    Mono (software)
    Mono, pronounced , is a free and open source project led by Xamarin to create an Ecma standard compliant .NET-compatible set of tools including, among others, a C# compiler and a Common Language Runtime....

    :
  • ODBC:
  • OLE DB
    OLE DB
    OLE DB is an API designed by Microsoft for accessing data from a variety of sources in an uniform manner. It is a set of interfaces implemented using the Component Object Model ; it is otherwise unrelated to OLE...

    • IBProvider, with commercial and Open Source versions.

Language-specific connectivity APIs

  • C
    C (programming language)
    C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

    /C++
    C++
    C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

    :
    • IBPP: an open source C++ class library.
    • SQLAPI++: commercial, cross-database API
  • Python
    Python (programming language)
    Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

    :
    • KInterbasDB, an Open Source Python Database API 2.0 extension package. Open Source, with a permissive BSD license.
  • PHP
    PHP
    PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

    : Although PHP has built-in Firebird support, there are projects that implement connectivity for them on some specialized PHP extensions/APIs:
    • ADOdb database abstraction library: Firebird is among the range of databases supported by the Open Source ADOdb library for PHP. (Not to be confused with ADODB from Microsoft).
    • PEAR: Firebird is supported on the Database Abstraction Module of the PEAR Open source framework for PHP.
  • Ruby
    Ruby (programming language)
    Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto...

    :
  • Perl:
  • LUA:
    • FBClient, an Open Source collection of pure LUA modules for working with the Firebird database.
  • Pascal
    Pascal (programming language)
    Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...

    /Delphi: Given the historic ownership of InterBase by Borland, Pascal/Delphi and FreePascal/Lazarus programmers have a wide range of options for connecting to a Firebird database, apart from the default means provided by default for each development tool. Among those technologies are:
    • Alcinoe, native database connection components, supports Firebird
    • AnyDAC, a commercial set of universal data access components, supports Firebird
    • FIBPlus, a commercial set of components for Delphi and C++ Builder.
    • IBObjects (IBO), a set of high-quality and diverse components for Delphi and C++ Builder. It has a special commercial license called "trustware", which by previous approval, can exonerate the payment to charities and non-for-profit organizations, hobbyists, students and contributors to the developments of IBO.
    • IB Express (IBX), released on a Freeware license. Included for some time on Delphi and C++ Builder IDEs
    • UIB (Unified InterBase), a set of thread-safe, Open Source classes and components for Delphi, C++ Builder, Lazarus and FreePascal.
    • ZeosLib, A collection of Open Source high-performance native database connection components, supports Firebird among other databases.
  • Node.js:

Awards

  • 2009. SourceForge Community Choice Award: Best Project for enterprise. Finalist on Best Project and Best Project for Government.
  • 2007. SourceForge Community Choice Award: Best Project for enterprise, Best user support.

See also

  • List of relational database management systems
  • Comparison of relational database management systems
    Comparison of relational database management systems
    The following tables compare general and technical information for a number of relational database management systems. Please see the individual products' articles for further information. This article is not all-inclusive or necessarily up to date...

  • Fyracle
    Fyracle
    Fyracle is a special version of the open source Firebird database which supports Oracle PL/SQL syntax, to ease porting of Oracle applications to open source.Fyracle comprises three parts:...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK