Firebird (database server)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Firebird
Firebird logo.svg
Turbobird screenshot.png
Developer(s) Firebird Project
Initial release 2000
Stable release 2.5.3 / 18 July 2014; 4 months ago (2014-07-18)
Preview release 3.0 Alpha 2 / February 1, 2014; 9 months ago (2014-02-01)[1]
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, Microsoft 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.[2]

History[edit]

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

Work on porting the codebase from C to C++ began in 2000. On 23 February 2004, Firebird 1.5 was released,[9] 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.[10] Firebird 2.0 was released on 12 November 2006,[11] adding support for 64-bit architectures, tables nested in FROM clauses, and programmable lock timeouts in blocking transactions.[12]

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

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

Through the Google Summer of Code 2013 work has begun on integrating Firebird as an replacement for HSQLDB in LibreOffice.[15][16]

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. A second alpha version was released in January 2014.[17]

Mozilla Firefox name conflict[edit]

In April 2003, the Mozilla Foundation decided to rename its web browser from Phoenix to Firebird after a trademark dispute with Phoenix Technologies.[citation needed] 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.[18] The dispute continued until the Mozilla developers issued a statement making clear that their software package was called "Mozilla Firebird", not "Firebird". The statement also said that the Mozilla Firebird name was a project codename. On 9 February 2004, Mozilla renamed its browser Mozilla Firefox, thus ending the conflict.[19]

Main features[edit]

  • Full support for stored procedures and triggers[20]
  • Full ACID compliant transactions
  • Referential integrity
  • Multi Generational Architecture (sometimes called MVCC)[21]
  • 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/FireDAC[22] drivers, ODBC, OLEDB, .Net provider, JDBC native type 4 driver, Python module, PHP, Perl
  • Incremental backups
  • Full cursor implementation in PSQL

Storage and index technology[edit]

The Multi-Generational Architecture (MGA)[edit]

Firebird inherited the storage architecture of Interbase. To ensure 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.[23] As a result, Firebird disk writes are very reduced compared to databases that use the traditional transaction log architecture.[24] Writing transactions does not prevent reading and vice versa, because each one sees its own version of the database.[25] The tradeoff is that some maintenance (“sweeping”) is required from time to time to clean up old record versions and free disk space.[26]

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

Indexes[edit]

Firebird makes all indices of the database behave like well-tuned “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.[28]

Variants[edit]

  • 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 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

Licensing[edit]

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 require 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 allows the developer to make proprietary, closed-source applications that use Firebird or are based on it.[29]

Connectivity APIs[edit]

Low-level Firebird Native API, Services API and embedded SQL[edit]

The Firebird native API is used directly or indirectly by applications or middleware that connect to a Firebird database. It is implemented in the client library, fbclient.dll, on Windows systems, and in libfbclient.so on Unix ones. [30]

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 the embedding of SQL statements directly into the source code of the host language.[31]

Standard cross-database APIs[edit]

There are currently language-specific connectivity APIs written in C/C++,[32][33] Python,[34] PHP,[35][36] Ruby,[37] Perl,[38] LUA,[39] Pascal/Delphi,[40][41][42] and Node.js.[43]

Awards[edit]

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

See also[edit]

References[edit]

  1. ^ "Firebird 3.0 Alpha 2 release is available for testing". FirebirdSQL. Firebird Foundation. 2014-02-01. Retrieved 2014-07-22. 
  2. ^ "Firebird 1.5.5 Release Notes". Retrieved 29 September 2009.  Firebird 1.5.5 General Notes for rewriting it from C to C++ language
  3. ^ "Inprise/Borland Introduces InterBase 6.0 Now Free and Open Source on Linux, Windows, and Solaris". 16 July 2000. Archived from the original on 6 December 2004. Retrieved 29 January 2009. 
  4. ^ "Borland.com: Inprise/Borland Introduces Interbase 6.0 Now Free and Open Source on Linux". Linux Today. Retrieved 29 January 2009. 
  5. ^ "Firebird History". Retrieved 14 March 2014. 
  6. ^ Paul Reeves. "What's happening to InterBase". Borland User Group. p. 2. Retrieved 14 March 2014. 
  7. ^ "IBPhoenix Community News Archive". 11 March 2000. Retrieved 29 January 2009. 
  8. ^ "IBPhoenix Community News Archive". 11 April 2000. Retrieved 29 January 2009. 
  9. ^ "Firebird Relational Database 1.5 Final Out". Slashdot. 23 February 2004. Retrieved 31 January 2009. 
  10. ^ Helen Borrie (5 October 2009). "Firebird 1.5.6 Release Notes". Firebird Project. Retrieved 10 June 2012. 
  11. ^ Dmitry Yemanov. "Firebird 2.0 Final Release Launches in Prague". Retrieved 5 February 2009. 
  12. ^ Helen Borrie (5 April 2012). "Firebird 2.0.7 Release Notes". Retrieved 10 June 2012. 
  13. ^ Helen Borrie (20 July 2014). "Firebird 2.1 Release Notes". Retrieved 20 July 2014. 
  14. ^ Helen Borrie (20 July 2014). "Firebird 2.5.3 Release Notes". Retrieved 20 July 2014. 
  15. ^ mariuz (14 Feb 2012). "Firebird Embedded and LibreOffice is the killer combination to scale from a single file application to a client/server approach". Firebirdnews.org. Retrieved 8 July 2013. 
  16. ^ ahunt (28 May 2013). "GSOC 2013: LibreOffice Firebird SQL Connector". Retrieved 8 July 2013. 
  17. ^ "Firebird Roadmap". March 2014. 
  18. ^ Festa, Paul (10 February 2004). "New Mozilla name rises from ashes". CNET News. CBS Interactive. Retrieved 3 April 2011. 
  19. ^ Garrity, Steven; Markham, Gervase; Goodger, Ben; Decrem, Bart; et al. "Mozilla Firefox - Brand Name Frequently Asked Questions". mozilla.org. Mozilla Foundation. Retrieved 3 April 2011. 
  20. ^ "Get to know Firebird in 2 minutes". 
  21. ^ Roman Rokytskyy. "A not-so-very technical discussion of Multi Version Concurrency Control". Retrieved 21 November 2011. 
  22. ^ "Connect to Firebird (FireDAC)". FireDAC
  23. ^ "Multi-generational architecture (MGA) and record versioning". HK-Software. Retrieved 14 July 2011. 
  24. ^ "Interview with Jim Starkey from InterBase World". Marina Novikova, InterBase World. Retrieved 14 July 2011. 
  25. ^ "What is Multi Generational Architecture (MGA)?". The Firebird FAQ. Retrieved 14 July 2011. 
  26. ^ "Database Housekeeping And Garbage Collection". The Firebird Project. Retrieved 14 July 2011. 
  27. ^ "What is Multi Generational Architecture (MGA)?". The Firebird FAQ. Retrieved 14 July 2011. 
  28. ^ "Interview with Jim Starkey from InterBase World". Marina Novikova, InterBase World. Retrieved 14 July 2011. 
  29. ^ "Firebird: Initial Developer's Public License Version 1.0". Firebird Project. Retrieved 13 July 2011. 
  30. ^ "The Firebird client library". The Firebird Project. Retrieved 14 July 2011. 
  31. ^ "Application development". The Firebird Project. Retrieved 14 July 2011. 
  32. ^ IBPP: an open source C++ class library.
  33. ^ SQLAPI++: commercial, cross-database API
  34. ^ FDB, an Open Source Python Database API 2.0 extension package. Open Source, with a permissive BSD license.
  35. ^ 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).
  36. ^ PEAR: Firebird is supported on the Database Abstraction Module of the PEAR Open source framework for PHP.
  37. ^ The Ruby Firebird Extension Library library, released under the Ruby License.
  38. ^ DBD::Firebird, an open Source Perl module.
  39. ^ FBClient, an Open Source collection of pure LUA modules for working with the Firebird database.
  40. ^ Alcinoe, native database connection components, supports Firebird
  41. ^ FIBPlus, a commercial set of components for Delphi and C++ Builder.
  42. ^ FPC SQLDB, the built-in database layer for FreePascal/Lazarus has support for Firebird
  43. ^ node-firebird-libfbclient, binary Node.js module, open source, MIT licensed.
  44. ^ "SourceForge.net: 2009 CCA: Winners". SourceForge.net. Retrieved 13 July 2011. 
  45. ^ "SourceForge.net 2007 Community Choice Awards Winners". SourceForge.net. Retrieved 13 July 2011. 

External links[edit]