Firebird (database server): Difference between revisions
m Task 16: replaced (3×) / removed (0×) deprecated |dead-url= and |deadurl= with |url-status=; |
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 |
||
(42 intermediate revisions by 31 users not shown) | |||
Line 1: | Line 1: | ||
{{short description|Relational database management system}} |
|||
{{Multiple issues| |
|||
{{lead too short|date=June 2020}} |
|||
{{Primary sources|date=December 2012}} |
{{Primary sources|date=December 2012}} |
||
}} |
|||
{{Use dmy dates|date= |
{{Use dmy dates|date=February 2021}} |
||
{{Infobox software |
{{Infobox software |
||
| name = Firebird |
| name = Firebird |
||
| logo = |
| logo = |
||
| logo size = |
| logo size = x64px |
||
| screenshot = Turbobird screenshot.png |
| screenshot = Turbobird screenshot.png |
||
| screenshot size = 300px |
| screenshot size = 300px |
||
| caption = |
| caption = |
||
| collapsible = |
| collapsible = yes |
||
| author = |
| author = [[Borland]] |
||
| developer = [ |
| developer = [[Firebird Foundation]] |
||
| released = {{Start date|2000}} |
| released = {{Start date|2000}} |
||
| discontinued = |
| discontinued = |
||
| latest release version = |
| latest release version = {{Firebird version}} |
||
| latest release date = {{Firebird version|releasedate}} |
|||
| latest release date = {{Start date and age|df=yes|2018|10|04}}<ref>{{cite web |url = https://www.firebirdsql.org/en/news/firebird-3-0-4-sub-release-is-available/ |title = Firebird 3.0.4 sub-release is available |publisher = Firebird Foundation | date = 2018-10-04 |website = FirebirdSQL }}</ref> |
|||
| latest preview version = |
| latest preview version = Firebird 5.0 Release Candidate 1 |
||
| latest preview date = 26.09.2023 |
|||
| latest preview date = {{Start date and age|2019|02|20}}<ref>{{cite web |url = https://firebirdsql.org/en/news/firebird-4-0-beta-1-release-is-available-for-testing/ |title = Firebird 4.0 Beta 1 release is available for testing |publisher = Firebird Foundation |date = 2019-02-20 |website = FirebirdSQL |accessdate = 2019-02-20 }}</ref> |
|||
| programming language = [[C++]] |
| programming language = [[C++]], [[C (programming language)|C]] |
||
| operating system = [[Cross-platform]] |
| operating system = [[Cross-platform]] |
||
| platform = |
| platform = [[IA-32]], [[x86-64]] |
||
| size = |
|||
| language = |
| language = |
||
| status = |
|||
| genre = [[RDBMS]] |
| genre = [[RDBMS]] |
||
| license = [ |
| license = [https://www.firebirdsql.org/en/interbase-public-license/ IPL], [https://www.firebirdsql.org/en/initial-developer-s-public-license-version-1-0/ IDPL] |
||
| website = {{URL |
| website = {{Official URL}} |
||
}} |
}} |
||
'''Firebird''' is an [[open-source software|open-source]] [[SQL]] [[relational database management system]] that |
'''Firebird''' is an [[open-source software|open-source]] [[SQL]] [[relational database management system]] that supports [[Linux]], [[Microsoft Windows]], [[macOS]] and other [[Unix]] platforms.<ref name="SourceForgeFirebirdProject">{{cite web|title=Firebird: A powerful, cross platform, SQL database system|url=https://sourceforge.net/projects/firebird/|website=SourceForge|publisher=SourceForge Media, LLC|access-date=2 May 2018|date=25 April 2018}}</ref> The database [[fork (software)|forked]] from [[Borland]]'s open source edition of [[InterBase]] in 2000 but the code has been largely rewritten since Firebird 1.5.<ref>{{cite web | url=http://firebirdsql.org/rlsnotesh/rlsnotes15.html#intro-gen-notes |title=Firebird 1.5.5 Release Notes |access-date=29 September 2009}} Firebird 1.5.5 General Notes for rewriting it from C to C++ language</ref> |
||
==History== |
==History== |
||
Within a week of the [[InterBase]] 6.0 source being released by [[Borland]] on 25 July 2000,<ref>{{cite news | title=Inprise/Borland Introduces InterBase 6.0 Now Free and Open Source on Linux, Windows, and Solaris | date=16 July 2000 | url=http://www.borland.com/news/press_releases/2000/07_16_00_ib6.html | |
Within a week of the [[InterBase]] 6.0 source being released by [[Borland]] on 25 July 2000,<ref>{{cite news | title=Inprise/Borland Introduces InterBase 6.0 Now Free and Open Source on Linux, Windows, and Solaris | date=16 July 2000 | url=http://www.borland.com/news/press_releases/2000/07_16_00_ib6.html | archive-url=https://web.archive.org/web/20041206174134/http://www.borland.com/news/press_releases/2000/07_16_00_ib6.html | archive-date=6 December 2004 | access-date=29 January 2009 | url-status=dead }}</ref><ref>{{cite web |url=http://www.linuxtoday.com/news_story.php3?ltsn=2000-07-25-004-06-PR-SV-SW |title=Borland.com: Inprise/Borland Introduces Interbase 6.0 Now Free and Open Source on Linux |access-date=29 January 2009 |publisher=Linux Today |archive-date=30 June 2009 |archive-url=https://web.archive.org/web/20090630215131/http://www.linuxtoday.com/news_story.php3?ltsn=2000-07-25-004-06-PR-SV-SW |url-status=dead }}</ref> the Firebird project was created on [[SourceForge]].<ref>{{cite web |url=http://www.firebirdsql.org/en/historical-reference/ |title=Firebird History |access-date=14 March 2014}}</ref><ref>{{cite web |url=http://www.ibphoenix.com/resources/documents/search/doc_14 |title=What's happening to InterBase |access-date=14 March 2014 |publisher=Borland User Group |author=Paul Reeves |pages=2}}</ref> Firebird 1.0 was released for Linux, Microsoft Windows and [[Mac OS X]] on 11 March 2002,<ref>{{cite web |url=http://wwwnfs.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_old_news&next=Y&skip=2029 |title=IBPhoenix Community News Archive |access-date=29 January 2009 |date=11 March 2000 }}{{Dead link|date=December 2019 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> with ports to [[Solaris (operating system)|Solaris]], [[FreeBSD#FreeBSD 4|FreeBSD 4]], [[HP-UX]] over the next two months.<ref>{{cite web |url=http://wwwnfs.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_old_news&next=Y&skip=2015 |title=IBPhoenix Community News Archive |date=11 April 2000 |access-date=29 January 2009 }}{{Dead link|date=December 2019 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> |
||
Work on porting the codebase from [[C (programming language)|C]] to [[C++]] began in 2000. On 23 February 2004, Firebird 1.5 was released,<ref>{{cite news |url=http://developers.slashdot.org/article.pl?sid=04/02/23/201230 |title=Firebird Relational Database 1.5 Final Out | |
Work on porting the codebase from [[C (programming language)|C]] to [[C++]] began in 2000. On 23 February 2004, Firebird 1.5 was released,<ref>{{cite news |url=http://developers.slashdot.org/article.pl?sid=04/02/23/201230 |title=Firebird Relational Database 1.5 Final Out |access-date=31 January 2009 |publisher=Slashdot |date=23 February 2004}}</ref> which was the first stable release of the new codebase. Version 1.5 featured an improved [[query optimizer]], [[SQL-92]] conditional expressions, [[SQL:1999]] [[savepoint]]s and support for explicit [[Database#Locking|locking]].<ref>{{cite web |url=http://www.firebirdsql.org/rlsnotesh/rlsnotes15.html |title=Firebird 1.5.6 Release Notes |author=Helen Borrie |access-date=10 June 2012 |publisher=Firebird Project |date=5 October 2009}}</ref> Firebird 2.0 was released on 12 November 2006,<ref>{{cite web |url=http://www.firebirdsql.org/index.php?op=devjournal&id=djarchive&no_rss=1#00022.jnl |title=Firebird 2.0 Final Release Launches in Prague |author=Dmitry Yemanov |access-date=5 February 2009}}</ref> adding support for [[64-bit]] architectures, tables nested in [[From (SQL)|FROM clauses]], and programmable [[Lock (computer science)|lock]] timeouts in [[Blocking (scheduling)|blocking]] [[Database transaction|transactions]].<ref>{{cite web |url=http://www.firebirdsql.org/rlsnotesh/rlsnotes207.html |title=Firebird 2.0.7 Release Notes |author=Helen Borrie |date=5 April 2012 |access-date=10 June 2012}}</ref> |
||
The previous stable release was version 2.1.6, which added new features including [[Database trigger|procedural triggers]], [[Hierarchical query|recursive queries]], and support for [[SQL:2003]] [[Merge (SQL)|MERGE]] statements.<ref>{{cite web |url=http://firebirdsql.org/rlsnotesh/rlsnotes210.html#rnfb210-new-feat |title=Firebird 2.1 Release Notes |author=Helen Borrie |date=20 July 2014 | |
The previous stable release was version 2.1.6, which added new features including [[Database trigger|procedural triggers]], [[Hierarchical query|recursive queries]], and support for [[SQL:2003]] [[Merge (SQL)|MERGE]] statements.<ref>{{cite web |url=http://firebirdsql.org/rlsnotesh/rlsnotes210.html#rnfb210-new-feat |title=Firebird 2.1 Release Notes |author=Helen Borrie |date=20 July 2014 |access-date=20 July 2014}}</ref> |
||
Firebird 2.5 introduced new features like improved [[Thread (computer science)|multithreading]], [[regular expression]] syntax and the ability to query remote databases.<ref>{{cite web |url=http://www.firebirdsql.org/file/documentation/release_notes/html/rlsnotes255.html |title=Firebird 2.5.5 Release Notes |author=Helen Borrie|date=19 November 2015 | |
Firebird 2.5 introduced new features like improved [[Thread (computer science)|multithreading]], [[regular expression]] syntax and the ability to query remote databases.<ref>{{cite web |url=http://www.firebirdsql.org/file/documentation/release_notes/html/rlsnotes255.html |title=Firebird 2.5.5 Release Notes |author=Helen Borrie|date=19 November 2015 |access-date=19 November 2015}}</ref> |
||
The most recent stable version is Firebird 3.0, released 19 April 2016, with focus in performance and security. A major re-architecture of the code allowed total support to [[Symmetric multiprocessing|SMP]] machines when using the SuperServer version. |
The most recent stable version is Firebird 3.0, released 19 April 2016, with focus in performance and security. A major re-architecture of the code allowed total support to [[Symmetric multiprocessing|SMP]] machines when using the SuperServer version.<ref>{{Cite web|url=https://www.linuxjournal.com/content/firebird-projects-firebird-relational-database|title=The Firebird Project's Firebird Relational Database {{!}} Linux Journal|last=Gray|first=James|date=2016-07-29|website=www.linuxjournal.com|publisher=[[Linux Journal]]|url-status=live|archive-url=https://archive.today/20200301170416/https://www.linuxjournal.com/content/firebird-projects-firebird-relational-database|archive-date=2020-03-01|access-date=2020-03-01}}</ref> |
||
Through the [[Google Summer of Code]] 2013 work has begun on integrating Firebird as a replacement for [[HSQLDB]] in [[LibreOffice]].<ref>{{cite web|url=http://www.firebirdnews.org/?p=6610|title=Firebird Embedded and LibreOffice is the killer combination to scale from a single file application to a client/server approach|date=14 |
Through the [[Google Summer of Code]] 2013 work has begun on integrating Firebird as a replacement for [[HSQLDB]] in [[LibreOffice Base]].<ref>{{cite web|url=http://www.firebirdnews.org/?p=6610|title=Firebird Embedded and LibreOffice is the killer combination to scale from a single file application to a client/server approach|date=14 February 2012|author=mariuz|publisher=Firebirdnews.org|access-date=8 July 2013}}</ref><ref>{{cite web|url=http://www.ahunt.org/2013/05/gsoc-2013-libreoffice-firebird-sql-connector/|access-date=8 July 2013|title=GSOC 2013: LibreOffice Firebird SQL Connector|date=28 May 2013|author=ahunt}}</ref> |
||
===Mozilla Firefox name conflict=== |
===Mozilla Firefox name conflict=== |
||
In April 2003, the [[Mozilla Foundation#History|Mozilla Organization]] announced a rename of its [[web browser]] from ''Phoenix'' to ''Firebird'' after a trademark dispute with [[Phoenix Technologies]].<ref>{{cite web|url = http://www.mozillazine.org/talkback.html?article=3075|title = Phoenix and Minotaur to be renamed Firebird and Thunderbird|date = April |
In April 2003, the [[Mozilla Foundation#History|Mozilla Organization]] announced a rename of its [[web browser]] from ''Phoenix'' to ''Firebird'' after a trademark dispute with [[Phoenix Technologies]].<ref>{{cite web|url = http://www.mozillazine.org/talkback.html?article=3075|title = Phoenix and Minotaur to be renamed Firebird and Thunderbird|date = 14 April 2003|access-date = 29 January 2016|website = MozillaZine|last = Dotzler|first = Asa}}</ref> |
||
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.<ref>{{citation |url = http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_Mozilla0|title = Mozilla browser becomes Firebird| |
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.<ref>{{citation |url = http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_Mozilla0|title = Mozilla browser becomes Firebird|archive-url = https://web.archive.org/web/20030423114611/http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_Mozilla0|archive-date = 2003-04-23|access-date = 2016-01-29|url-status = dead|publisher = IBPhoenix}}</ref><ref>{{cite web|url = http://www.mozillazine.org/articles/article3097.html|title = Firebird Database Project Admin Ann Harrison Interviewed|date = 21 April 2003|access-date = 29 January 2016|website = MozillaZine|last = Bishop|first = Alex}}</ref> The Mozilla developers issued a statement,<ref>{{cite web|url = https://www.mozilla.org/roadmap/branding.html|title = mozilla branding|date = 25 April 2003|access-date = 31 January 2016|publisher = The Mozilla Organization|archive-url = https://web.archive.org/web/20030426081552/http://www.mozilla.org/roadmap/branding.html|archive-date=26 April 2003 |url-status = dead}}</ref> making clear that their software package was called "Mozilla Firebird", not "Firebird".<ref>{{cite web|url = http://www.cnet.com/news/mozillas-firebird-gets-wings-clipped/|title = Mozilla's Firebird gets wings clipped|date = 7 May 2003|access-date = 29 January 2016|website = CNET|publisher = CBS Interactive|last = Festa|first = Paul}}</ref><ref>{{cite web|url = http://www.mozillazine.org/articles/article3169.html|title = Christopher Blizzard of mozilla.org speaks on the Firebird naming conflict|date = 14 May 2003|access-date = 29 January 2016|website = MozillaZine|last = Bishop|first = Alex}}</ref> The statement also said that the Mozilla Firebird name was a [[Code name#Project code name|project codename]]. |
||
The dispute was resolved on February |
The dispute was resolved on 9 February 2004, when Mozilla changed the name of its browser to [[Mozilla Firefox]], thus ending the conflict.<ref>{{cite web |url = http://www.cnet.com/news/mozilla-holds-fire-in-naming-fight/|title = Mozilla holds 'fire' in naming fight|author = Paul Festa|date = 9 February 2004|work = CNET|publisher = CBS Interactive|access-date = 29 January 2016}}</ref><ref>{{cite web|url = http://www.mozillazine.org/talkback.html?article=4278|title = Mozilla Firebird Renamed Firefox, Version 0.8 Released|date = 9 February 2004|access-date = 29 January 2016|website = MozillaZine}}</ref><ref>{{cite web|url = https://www-archive.mozilla.org/projects/firefox/firefox-name-faq.html|title = Mozilla Firefox - Brand Name Frequently Asked Questions|access-date = 29 January 2016|website = mozilla.org|publisher = Mozilla Foundation}}</ref> |
||
==Main features== |
==Main features== |
||
Line 54: | Line 56: | ||
* Full [[atomicity, consistency, isolation, durability|ACID]] compliant transactions |
* Full [[atomicity, consistency, isolation, durability|ACID]] compliant transactions |
||
* Referential integrity |
* Referential integrity |
||
* Multi Generational Architecture (sometimes called MVCC)<ref>{{cite web |url=http://www.firebirdsql.org/en/multi-version-concurrency-control/| title=A not-so-very technical discussion of Multi Version Concurrency Control | |
* Multi Generational Architecture (sometimes called MVCC)<ref>{{cite web |url=http://www.firebirdsql.org/en/multi-version-concurrency-control/| title=A not-so-very technical discussion of Multi Version Concurrency Control |access-date=21 November 2011 | author=Roman Rokytskyy }}</ref> |
||
* Support for External Functions ([[User-defined function|UDFs]]) |
* Support for External Functions ([[User-defined function|UDFs]]) |
||
* SQL activity can send asynchronous notification events to clients |
* SQL activity can send asynchronous notification events to clients |
||
* Third-party tools, including GUI administrative tools and replication tools |
* Third-party tools, including GUI administrative tools and replication tools |
||
* Careful writes - fast recovery, no need for transaction logs |
* Careful writes - fast recovery, no need for transaction logs |
||
* Many access methods: native/API, dbExpress/FireDAC<ref>{{cite web | url = http://docwiki.embarcadero.com/RADStudio/XE5/en/Connect_to_Firebird_(FireDAC)| title = Connect to Firebird (FireDAC) }}FireDAC</ref> drivers, ODBC, OLE DB, .NET provider, JDBC native type 4 driver, Python module,<ref>https://pypi.python.org/pypi/fdb/</ref> PHP, Perl |
* Many access methods: native/API, dbExpress/FireDAC<ref>{{cite web | url = http://docwiki.embarcadero.com/RADStudio/XE5/en/Connect_to_Firebird_(FireDAC)| title = Connect to Firebird (FireDAC) }}FireDAC</ref> drivers, ODBC, OLE DB, .NET provider, JDBC native type 4 driver, Python module,<ref>{{Cite web|url=https://pypi.python.org/pypi/fdb/|title=FDB: The Python driver for Firebird}}</ref> PHP, Perl |
||
* Incremental backups |
* Incremental backups |
||
* Full cursor implementation in PSQL |
* Full cursor implementation in [[Procedural SQL|PSQL]] |
||
==Storage and index technology== |
==Storage and index technology== |
||
===The Multi-Generational Architecture (MGA)=== |
===The Multi-Generational Architecture (MGA)=== |
||
Firebird inherited the storage architecture of Interbase. To ensure the [[atomicity, consistency, isolation, durability|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.<ref>{{cite web | url=http://www.ibexpert.info/ibe/index.php?n=Doc.Multi-generationalArchitectureMGAAndRecordVersioning | title=Multi-generational architecture (MGA) and record versioning | work=HK-Software | |
Firebird inherited the storage architecture of Interbase. To ensure the [[atomicity, consistency, isolation, durability|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.<ref>{{cite web | url=http://www.ibexpert.info/ibe/index.php?n=Doc.Multi-generationalArchitectureMGAAndRecordVersioning | title=Multi-generational architecture (MGA) and record versioning | work=HK-Software | access-date=14 July 2011 | archive-url=https://web.archive.org/web/20111001070724/http://www.ibexpert.info/ibe/index.php?n=Doc.Multi-generationalArchitectureMGAAndRecordVersioning | archive-date=1 October 2011 | url-status=dead }}</ref> As a result, Firebird disk writes are very reduced compared to databases that use the traditional transaction log architecture.<ref>{{cite web | url=http://www.ibphoenix.com/resources/documents/community/doc_296 | title=Interview with Jim Starkey from InterBase World | work=Marina Novikova, InterBase World |access-date=14 July 2011}}</ref> Writing transactions does not prevent reading and vice versa, because each one sees its own version of the database.<ref>{{cite web |url=http://www.firebirdfaq.org/faq44/ | title=What is Multi Generational Architecture (MGA)? | work=The Firebird FAQ | access-date=14 July 2011}}</ref> The [[tradeoff]] is that some maintenance ("sweeping") is required from time to time to clean up old record versions and free disk space.<ref>{{cite web | url=http://www.firebirdsql.org/manual/gfix-housekeeping.html | title=Database Housekeeping And Garbage Collection | work=The Firebird Project | access-date= 14 July 2011}}</ref> |
||
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.<ref>{{cite web |url=http://www.firebirdfaq.org/faq44/ | title=What is Multi Generational Architecture (MGA)? | work=The Firebird FAQ | |
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.<ref>{{cite web |url=http://www.firebirdfaq.org/faq44/ | title=What is Multi Generational Architecture (MGA)? | work=The Firebird FAQ | access-date=14 July 2011}}</ref> |
||
===Indexes=== |
===Indexes=== |
||
Firebird makes all indices of the database behave like well-tuned |
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.<ref>{{cite web | url=http://www.ibphoenix.com/resources/documents/community/doc_296 | title=Interview with Jim Starkey from InterBase World | work=Marina Novikova, InterBase World |access-date=14 July 2011}}</ref> |
||
==Variants== |
==Variants== |
||
Line 80: | Line 82: | ||
==Licensing== |
==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) version 1.1. 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.<ref>{{cite web |url=http://www.firebirdsql.org/en/initial-developer-s-public-license-version-1-0/ | title=Firebird: Initial Developer's Public License Version 1.0 |work=Firebird Project| |
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) version 1.1. 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.<ref>{{cite web |url=http://www.firebirdsql.org/en/initial-developer-s-public-license-version-1-0/ | title=Firebird: Initial Developer's Public License Version 1.0 |work=Firebird Project|access-date=13 July 2011}}</ref> |
||
==Connectivity APIs== |
==Connectivity APIs== |
||
===Low-level Firebird Native API, Services API and embedded SQL=== |
===Low-level Firebird Native API, Services API and embedded SQL=== |
||
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.<ref>{{cite web | url= http://www.firebirdsql.org/manual/ufb-cs-clientlib.html | title=The Firebird client library | work=The Firebird Project | |
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.<ref>{{cite web | url= http://www.firebirdsql.org/manual/ufb-cs-clientlib.html | title=The Firebird client library | work=The Firebird Project | access-date= 14 July 2011}}</ref> |
||
The Services API is a special function set for accessing and controlling service administration tasks such as user management, backup/restore and statistics gathering. |
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.<ref>{{cite web | url=http://www.firebirdsql.org/manual/ufb-cs-appdev.html|title=Application development | work= The Firebird Project | |
[[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.<ref>{{cite web | url=http://www.firebirdsql.org/manual/ufb-cs-appdev.html|title=Application development | work= The Firebird Project | access-date=14 July 2011}}</ref> |
||
==Awards== |
==Awards== |
||
* 2007. SourceForge Community Choice Award: Best Project for enterprise, Best user support.<ref>{{cite web | url=http://sourceforge.net/blog/cca07/ | title=SourceForge.net 2007 Community Choice Awards Winners | work=SourceForge.net | |
* 2007. SourceForge Community Choice Award: Best Project for enterprise, Best user support.<ref>{{cite web | url=http://sourceforge.net/blog/cca07/ | title=SourceForge.net 2007 Community Choice Awards Winners | work=SourceForge.net | date=15 June 2007 | access-date=13 July 2011}}</ref> |
||
* 2009. SourceForge Community Choice Award: Best Project for enterprise. Finalist on Best Project and Best Project for Government.<ref>{{cite web | url=http://sourceforge.net/blog/cca09/winners/ | title=SourceForge.net: 2009 CCA: Winners | work=SourceForge.net | |
* 2009. SourceForge Community Choice Award: Best Project for enterprise. Finalist on Best Project and Best Project for Government.<ref>{{cite web | url=http://sourceforge.net/blog/cca09/winners/ | title=SourceForge.net: 2009 CCA: Winners | work=SourceForge.net | date=28 July 2009 | access-date=13 July 2011}}</ref> |
||
==See also== |
==See also== |
||
{{Portal|Free and open-source software}} |
{{Portal|Free and open-source software}} |
||
* [[Firebird Foundation]] |
|||
* [[Comparison of relational database management systems]] |
* [[Comparison of relational database management systems]] |
||
* [[List of relational database management systems]] |
* [[List of relational database management systems]] |
||
* [[Multiversion concurrency control]] |
* [[Multiversion concurrency control]] |
||
* [[SQL compliance]] |
|||
==References== |
==References== |
||
{{ |
{{reflist}} |
||
==External links== |
==External links== |
||
{{Commons category}} |
{{Commons category}} |
||
* {{Official website}} |
|||
* [http://www.firebirdsql.org Firebird - Project website] |
|||
* [ |
* [https://www.ibphoenix.com/ Firebird - Developer portal] |
||
* [http://www.collation-charts.org/firebird20/ Firebird collations], charts. |
* [http://www.collation-charts.org/firebird20/ Firebird collations], charts. |
||
* [ |
* [https://www.ibprovider.com/eng/documentation.html Firebird documentation by IBProvider] |
||
* [http://www.firebirdfaq.org FirebirdFAQ] |
* [http://www.firebirdfaq.org FirebirdFAQ] |
||
* [ |
* [https://www.firebirdnews.org/ FirebirdNews] - News about Firebird and related projects |
||
* [ |
* [https://www.firebirdnews.org/migration-guide-to-firebird-3/ Migration Guide to Firebird 3] - eBook |
||
* [ |
* [https://www.ibprovider.com/eng/ Firebird Ole Db Driver (alternative for ODBC)] |
||
* [https://github.com/FirebirdSQL/jaybird Jaybird – JDBC driver for Firebird (on github.com)] |
|||
* [https://www.firebirdsql.org/en/jdbc-driver/ Jaybird – JDBC driver for Firebird (on firebirdsql.org)] |
|||
{{Authority control}} |
|||
[[Category:Free database management systems]] |
[[Category:Free database management systems]] |
||
Line 121: | Line 125: | ||
[[Category:Relational database management systems]] |
[[Category:Relational database management systems]] |
||
[[Category:Client-server database management systems]] |
[[Category:Client-server database management systems]] |
||
[[Category: |
[[Category:Relational database management software for Linux]] |
||
[[Category:Formerly proprietary software]] |
[[Category:Formerly proprietary software]] |
||
[[Category:Firebird| ]] |
[[Category:Firebird (database server)| ]] |
Latest revision as of 06:36, 13 April 2024
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
Original author(s) | Borland |
---|---|
Developer(s) | Firebird Foundation |
Initial release | 2000 |
Stable release | 5.0.1[1]
/ 2 August 2024 |
Preview release | Firebird 5.0 Release Candidate 1
/ 26.09.2023 |
Repository | |
Written in | C++, C |
Operating system | Cross-platform |
Platform | IA-32, x86-64 |
Type | RDBMS |
License | IPL, IDPL |
Website | www |
Firebird is an open-source SQL relational database management system that supports Linux, Microsoft Windows, macOS and other Unix platforms.[2] The database forked from Borland's open source edition of InterBase in 2000 but the code has been largely rewritten since Firebird 1.5.[3]
History
[edit]Within a week of the InterBase 6.0 source being released by Borland on 25 July 2000,[4][5] the Firebird project was created on SourceForge.[6][7] Firebird 1.0 was released for Linux, Microsoft Windows and Mac OS X on 11 March 2002,[8] with ports to Solaris, FreeBSD 4, HP-UX over the next two months.[9]
Work on porting the codebase from C to C++ began in 2000. On 23 February 2004, Firebird 1.5 was released,[10] 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.[11] Firebird 2.0 was released on 12 November 2006,[12] adding support for 64-bit architectures, tables nested in FROM clauses, and programmable lock timeouts in blocking transactions.[13]
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.[14]
Firebird 2.5 introduced new features like improved multithreading, regular expression syntax and the ability to query remote databases.[15]
The most recent stable version is Firebird 3.0, released 19 April 2016, with focus in performance and security. A major re-architecture of the code allowed total support to SMP machines when using the SuperServer version.[16]
Through the Google Summer of Code 2013 work has begun on integrating Firebird as a replacement for HSQLDB in LibreOffice Base.[17][18]
Mozilla Firefox name conflict
[edit]In April 2003, the Mozilla Organization announced a rename of its web browser from Phoenix to Firebird after a trademark dispute with Phoenix Technologies.[19]
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.[20][21] The Mozilla developers issued a statement,[22] making clear that their software package was called "Mozilla Firebird", not "Firebird".[23][24] The statement also said that the Mozilla Firebird name was a project codename.
The dispute was resolved on 9 February 2004, when Mozilla changed the name of its browser to Mozilla Firefox, thus ending the conflict.[25][26][27]
Main features
[edit]- Full support for stored procedures and triggers[28]
- Full ACID compliant transactions
- Referential integrity
- Multi Generational Architecture (sometimes called MVCC)[29]
- 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[30] drivers, ODBC, OLE DB, .NET provider, JDBC native type 4 driver, Python module,[31] 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.[32] As a result, Firebird disk writes are very reduced compared to databases that use the traditional transaction log architecture.[33] Writing transactions does not prevent reading and vice versa, because each one sees its own version of the database.[34] The tradeoff is that some maintenance ("sweeping") is required from time to time to clean up old record versions and free disk space.[35]
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.[36]
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.[37]
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) version 1.1. 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.[38]
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.[39]
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.[40]
Awards
[edit]- 2007. SourceForge Community Choice Award: Best Project for enterprise, Best user support.[41]
- 2009. SourceForge Community Choice Award: Best Project for enterprise. Finalist on Best Project and Best Project for Government.[42]
See also
[edit]- Comparison of relational database management systems
- List of relational database management systems
- Multiversion concurrency control
References
[edit]- ^ "Firebird 5.0.1". 2 August 2024. Retrieved 4 August 2024.
- ^ "Firebird: A powerful, cross platform, SQL database system". SourceForge. SourceForge Media, LLC. 25 April 2018. Retrieved 2 May 2018.
- ^ "Firebird 1.5.5 Release Notes". Retrieved 29 September 2009. Firebird 1.5.5 General Notes for rewriting it from C to C++ language
- ^ "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.
- ^ "Borland.com: Inprise/Borland Introduces Interbase 6.0 Now Free and Open Source on Linux". Linux Today. Archived from the original on 30 June 2009. Retrieved 29 January 2009.
- ^ "Firebird History". Retrieved 14 March 2014.
- ^ Paul Reeves. "What's happening to InterBase". Borland User Group. p. 2. Retrieved 14 March 2014.
- ^ "IBPhoenix Community News Archive". 11 March 2000. Retrieved 29 January 2009.[permanent dead link ]
- ^ "IBPhoenix Community News Archive". 11 April 2000. Retrieved 29 January 2009.[permanent dead link ]
- ^ "Firebird Relational Database 1.5 Final Out". Slashdot. 23 February 2004. Retrieved 31 January 2009.
- ^ Helen Borrie (5 October 2009). "Firebird 1.5.6 Release Notes". Firebird Project. Retrieved 10 June 2012.
- ^ Dmitry Yemanov. "Firebird 2.0 Final Release Launches in Prague". Retrieved 5 February 2009.
- ^ Helen Borrie (5 April 2012). "Firebird 2.0.7 Release Notes". Retrieved 10 June 2012.
- ^ Helen Borrie (20 July 2014). "Firebird 2.1 Release Notes". Retrieved 20 July 2014.
- ^ Helen Borrie (19 November 2015). "Firebird 2.5.5 Release Notes". Retrieved 19 November 2015.
- ^ Gray, James (29 July 2016). "The Firebird Project's Firebird Relational Database | Linux Journal". www.linuxjournal.com. Linux Journal. Archived from the original on 1 March 2020. Retrieved 1 March 2020.
- ^ mariuz (14 February 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.
- ^ ahunt (28 May 2013). "GSOC 2013: LibreOffice Firebird SQL Connector". Retrieved 8 July 2013.
- ^ Dotzler, Asa (14 April 2003). "Phoenix and Minotaur to be renamed Firebird and Thunderbird". MozillaZine. Retrieved 29 January 2016.
- ^ Mozilla browser becomes Firebird, IBPhoenix, archived from the original on 23 April 2003, retrieved 29 January 2016
- ^ Bishop, Alex (21 April 2003). "Firebird Database Project Admin Ann Harrison Interviewed". MozillaZine. Retrieved 29 January 2016.
- ^ "mozilla branding". The Mozilla Organization. 25 April 2003. Archived from the original on 26 April 2003. Retrieved 31 January 2016.
- ^ Festa, Paul (7 May 2003). "Mozilla's Firebird gets wings clipped". CNET. CBS Interactive. Retrieved 29 January 2016.
- ^ Bishop, Alex (14 May 2003). "Christopher Blizzard of mozilla.org speaks on the Firebird naming conflict". MozillaZine. Retrieved 29 January 2016.
- ^ Paul Festa (9 February 2004). "Mozilla holds 'fire' in naming fight". CNET. CBS Interactive. Retrieved 29 January 2016.
- ^ "Mozilla Firebird Renamed Firefox, Version 0.8 Released". MozillaZine. 9 February 2004. Retrieved 29 January 2016.
- ^ "Mozilla Firefox - Brand Name Frequently Asked Questions". mozilla.org. Mozilla Foundation. Retrieved 29 January 2016.
- ^ "Get to know Firebird in 2 minutes".
- ^ Roman Rokytskyy. "A not-so-very technical discussion of Multi Version Concurrency Control". Retrieved 21 November 2011.
- ^ "Connect to Firebird (FireDAC)".FireDAC
- ^ "FDB: The Python driver for Firebird".
- ^ "Multi-generational architecture (MGA) and record versioning". HK-Software. Archived from the original on 1 October 2011. Retrieved 14 July 2011.
- ^ "Interview with Jim Starkey from InterBase World". Marina Novikova, InterBase World. Retrieved 14 July 2011.
- ^ "What is Multi Generational Architecture (MGA)?". The Firebird FAQ. Retrieved 14 July 2011.
- ^ "Database Housekeeping And Garbage Collection". The Firebird Project. Retrieved 14 July 2011.
- ^ "What is Multi Generational Architecture (MGA)?". The Firebird FAQ. Retrieved 14 July 2011.
- ^ "Interview with Jim Starkey from InterBase World". Marina Novikova, InterBase World. Retrieved 14 July 2011.
- ^ "Firebird: Initial Developer's Public License Version 1.0". Firebird Project. Retrieved 13 July 2011.
- ^ "The Firebird client library". The Firebird Project. Retrieved 14 July 2011.
- ^ "Application development". The Firebird Project. Retrieved 14 July 2011.
- ^ "SourceForge.net 2007 Community Choice Awards Winners". SourceForge.net. 15 June 2007. Retrieved 13 July 2011.
- ^ "SourceForge.net: 2009 CCA: Winners". SourceForge.net. 28 July 2009. Retrieved 13 July 2011.
External links
[edit]- Official website
- Firebird - Developer portal
- Firebird collations, charts.
- Firebird documentation by IBProvider
- FirebirdFAQ
- FirebirdNews - News about Firebird and related projects
- Migration Guide to Firebird 3 - eBook
- Firebird Ole Db Driver (alternative for ODBC)
- Jaybird – JDBC driver for Firebird (on github.com)
- Jaybird – JDBC driver for Firebird (on firebirdsql.org)