Firebird (database server)

Developer(s) Firebird Project
Initial release 2000
Stable release 2.5.1 / October 4, 2011; 4 months ago (2011-10-04)
Preview release 2.5.0 RC 3 / July 30, 2010; 18 months ago (2010-07-30)
Written in C++
Operating system Cross-platform
Type RDBMS
License IPL, IDPL
Website www.firebirdsql.org

Firebird is an open source SQL relational database management system that runs on Linux, Windows, and a variety of Unix. The database forked from Borland's open source edition of InterBase in 2000, but since Firebird 1.5 the code has been largely rewritten .[1]

Contents

History

Within a week of the InterBase 6.0 source being released by Borland on 25 July 2000,[2][3] the Firebird project was created on SourceForge.[4][5] Firebird 1.0 was released for Linux, Windows and Mac OS X on 11 March 2002,[6] with ports to Solaris, FreeBSD 4, HP-UX following over the next two months.[7]

Work on porting the codebase from C to C++ began in 2000. On 23 February 2004, Firebird 1.5 was released,[8] which was the first stable release of the new codebase. Version 1.5 featured an improved query optimizer, SQL-92 conditional expressions, SQL:1999 savepoints and support for explicit locking.[9] Firebird 2.0 was released on 12 November 2006,[10] adding support for 64-bit architectures, tables nested in FROM clauses, and programmable lock timeouts in blocking transactions.[11]

The previous stable release was version 2.1.3, which added new features including procedural triggers, recursive queries, and support for SQL:2003 MERGE statements.[12]

Firebird 2.5.1 is the current stable version. New features included improved multithreading, regular expression syntax and the ability to query remote databases.[13]

The planned 3.0 release is expected to support stored procedures in languages such as Java and C++, and SQL window functions that restrict query results. An alpha version is expected to be delivered in the last quarter of 2011.[14]

Mozilla Firefox name conflict

In April 2003, the Mozilla Foundation decided to rename its web browser from Phoenix to Firebird after a trademark dispute with Phoenix Technologies. 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.[15] 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, thus ending the conflict.[16]

Main features

Storage and index technology

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.[19] As a result, Firebird disk writes are very reduced in comparison with databases that use the traditional transaction log architecture.[20] Transactions writing data don’t block another ones reading it and viceversa, because each one sees its own version of the database.[21] 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.[22]

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.[23]

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.[24]

Variants

Licensing

The Firebird database engine and its modules are released under an open-source license, the Initial Developer's Public License (IDPL), a variant of the Mozilla Public License (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.[25]

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 [1], 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.[26]

Connectivity APIs

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. [27]

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 called gpre, which allows to embed SQL statements directly into the source code of the host language.[28]

Standard cross-database APIs

Language-specific connectivity APIs

Awards

See also

References

  1. ^ "Firebird 1.5.5 Release Notes". http://firebirdsql.org/rlsnotesh/rlsnotes15.html#intro-gen-notes. Retrieved 2009-09-29.  Firebird 1.5.5 General Notes for rewriting it from C to C++ language
  2. ^ "Inprise/Borland Introduces InterBase 6.0 Now Free and Open Source on Linux, Windows, and Solaris". 2000-07-16. Archived from the original on 2004-12-06. http://web.archive.org/web/20041206174134/www.borland.com/news/press_releases/2000/07_16_00_ib6.html. Retrieved 29 January 2009. 
  3. ^ "Borland.com: Inprise/Borland Introduces Interbase 6.0 Now Free and Open Source on Linux". Linux Today. http://www.linuxtoday.com/news_story.php3?ltsn=2000-07-25-004-06-PR-SV-SW. Retrieved 2009-01-29. 
  4. ^ "Firebird History". http://www.firebirdsql.org/index.php?op=history&id=firebird. Retrieved 2009-01-31. 
  5. ^ Paul Reeves. "What's happening to InterBase". Borland User Group. pp. 2. http://www.prototypical.co.uk/pdf/Interbase.pdf. Retrieved 2009-01-29. 
  6. ^ "IBPhoenix Community News Archive". 2000-03-11. http://wwwnfs.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_old_news&next=Y&skip=2029. Retrieved 2009-01-29. 
  7. ^ "IBPhoenix Community News Archive". 2000-04-11. http://wwwnfs.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_old_news&next=Y&skip=2015. Retrieved 2009-01-29. 
  8. ^ "Firebird Relational Database 1.5 Final Out". Slashdot. 23 February 2004. http://developers.slashdot.org/article.pl?sid=04/02/23/201230. Retrieved 31 January 2009. 
  9. ^ Helen Borrie (2007-11-30). "Firebird 1.5.5 Release Notes". Firebird Project. http://www.firebirdsql.org/rlsnotes/Firebird-1.5.5-ReleaseNotes.pdf. Retrieved 2009-01-31. 
  10. ^ Dmitry Yemanov. "Firebird 2.0 Final Release Launches in Prague". http://www.firebirdsql.org/index.php?op=devjournal&id=djarchive&no_rss=1#00022.jnl. Retrieved 2009-02-05. 
  11. ^ Helen Borrie (2009-01-22). "Firebird 2.0.5 Release Notes". http://www.firebirdsql.org/devel/doc/rlsnotes/pdf/Firebird-2.0.5-ReleaseNotes.pdf. Retrieved 2009-02-05. 
  12. ^ Helen Borrie (2008-07-15). "Firebird 2.1 Release Notes". http://www.firebirdsql.org/devel/doc/rlsnotes/html/rlsnotes210.html#rnfb210-new-feat. Retrieved 2009-02-07. 
  13. ^ Helen Borrie (2011-09-30). "Firebird 2.5.1 Release Notes". http://www.firebirdsql.org/file/documentation/release_notes/html/rlsnotes251.html. Retrieved 2011-09-30. 
  14. ^ Dmitry Yemanov (2010-10). "Firebird Roadmap 2010". http://www.firebirdsql.org/en/roadmap/. Retrieved 2010-10-10. 
  15. ^ Festa, Paul (February 10, 2004). "New Mozilla name rises from ashes". CNET News. CBS Interactive. http://www.zdnet.co.uk/news/desktop-apps/2004/02/10/new-mozilla-name-rises-from-ashes-39145898/. Retrieved April 3, 2011. 
  16. ^ Garrity, Steven; Markham, Gervase; Goodger, Ben; Decrem, Bart; et al.. "Mozilla Firefox - Brand Name Frequently Asked Questions". mozilla.org. Mozilla Foundation. http://www.mozilla.org/projects/firefox/firefox-name-faq.html. Retrieved April 3, 2011. 
  17. ^ "Get to know Firebird in 2 minutes". http://www.firebirdnews.org/docs/fb2min.html. 
  18. ^ Roman Rokytskyy. "A not-so-very technical discussion of Multi Version Concurrency Control". http://www.firebirdsql.org/en/multi-version-concurrency-control/. Retrieved November 21, 2011. 
  19. ^ "Multi-generational architecture (MGA) and record versioning". HK-Software. http://www.ibexpert.info/ibe/index.php?n=Doc.Multi-generationalArchitectureMGAAndRecordVersioning. Retrieved July 14, 2011. 
  20. ^ "Interview with Jim Starkey from InterBase World". Marina Novikova, InterBase World. http://www.ibphoenix.com/resources/documents/community/doc_296. Retrieved July 14, 2011. 
  21. ^ "What is Multi Generational Architecture (MGA)?". The Firebird FAQ. http://www.firebirdfaq.org/faq44/. Retrieved July 14, 2011. 
  22. ^ "Database Housekeeping And Garbage Collection". The Firebird Project. http://www.firebirdsql.org/manual/gfix-housekeeping.html. Retrieved July 14, 2011. 
  23. ^ "What is Multi Generational Architecture (MGA)?". The Firebird FAQ. http://www.firebirdfaq.org/faq44/. Retrieved July 14, 2011. 
  24. ^ "Interview with Jim Starkey from InterBase World". Marina Novikova, InterBase World. http://www.ibphoenix.com/resources/documents/community/doc_296. Retrieved July 14, 2011. 
  25. ^ "Firebird: Initial Developer's Public License Version 1.0". Firebird Project. http://www.firebirdsql.org/en/initial-developer-s-public-license-version-1-0/. Retrieved July 13, 2011. 
  26. ^ "IBPhoenix support". IBPhoenix. http://www.ibphoenix.com/services/support. Retrieved July 13, 2011. 
  27. ^ "The Firebird client library". The Firebird Project. http://www.firebirdsql.org/manual/ufb-cs-clientlib.html. Retrieved July 14, 2011. 
  28. ^ "Application development". The Firebird Project. http://www.firebirdsql.org/manual/ufb-cs-appdev.html. Retrieved July 14, 2011. 
  29. ^ "SourceForge.net: 2009 CCA: Winners". SourceForge.net. http://sourceforge.net/blog/cca09/winners/. Retrieved July 13, 2011. 
  30. ^ "SourceForge.net 2007 Community Choice Awards Winners". SourceForge.net. http://sourceforge.net/blog/cca07/. Retrieved July 13, 2011. 

External links