Firebird (Datenbank)
Firebird ist ein freies Datenbankmanagementsystem (DBMS). Es ist der freie Ableger des weiterhin kommerziell von Embarcadero (ehemals CodeGear, Borland) vertriebenen relationalen Datenbankmanagementsystems InterBase.
Firebird | |
---|---|
Basisdaten | |
Entwickler | Firebird-Entwickler-Team |
Erscheinungsjahr | 22. November 2000 |
Aktuelle Version | 4.0[1] (1. Juni 2021) |
Betriebssystem | Diverse Unixe, u. a. AIX; Linux, Windows, macOS |
Programmiersprache | C++ |
Kategorie | Datenbankverwaltungssystem |
Lizenz | IDPL (Variante der Mozilla Public License) |
deutschsprachig | ja |
www.firebirdsql.org |
Geschichte
Die Abspaltung erfolgte im Jahr 2000, als kurz vor Freigabe der Version 6 des kommerziellen Vorgängers Interbase bei Borland ernsthafte Überlegungen im Gange waren, die Weiterentwicklung einzustellen.
Aus Interbase 6.0 wurde Firebird 1.0, wobei dies als eine Bugfix-Version mit nur wenigen Erweiterungen angesehen werden kann. Eine Erweiterung von Firebird 1.0 ist der 64-Bit-File-I/O, somit ist es möglich, dass Datenbankdateien von mehr als 2 GB Größe erzeugt werden können.
Grundlegende Erweiterungen erfolgten im Firebird-2.0-Zweig. Der gesamte Quellcode von Interbase wurde aus der Sprache C nach C++ übersetzt. Ab Februar 2004 stand die erste Produktiv-Version aus dem Firebird 2.0-Zweig als Firebird 1.5 zur Verfügung. Im November 2006 wurde Firebird 2.0 freigegeben, die aktuelle Version dieses Zweiges ist 2.5.9 vom 24. Juni 2019.[2]
Die Version 3.0 wurde am 19. April 2016 veröffentlicht. Die Hauptziele dieser Version sind die Vereinheitlichung der Server-Architektur sowie die Verbesserung der Unterstützung von Symmetrischen Multiprozessorsystemen (SMP) bzw. von Mehrkernprozessoren.[3]
Grundsätzlich ist der Firebird-Server SQL-92-Entry-Level-1-konform. Firebird 1.5 folgt dem SQL-Standard nach ANSI SQL-99. Firebird 2.0 ist überwiegend konform mit SQL-2003 (17 obligatorische Fähigkeiten fehlen ganz, vor allem Schemata; 9 obligatorische Fähigkeiten werden nur teilweise unterstützt).
In LibreOffice wird die vorhandene Datenbank-Engine durch Firebird SQL ersetzt. In der Version 6.1 von LibreOffice wurde sie als Standard-Datenbank-Engine aktiviert, aber als experimentell deklariert.[4] In Version 6.2 wurde es als "non experimental" gekennzeichnet und ein Migrationsassistent für vorhandene Datenbank angeboten.[5]
Verfügbare Varianten des Firebird-Datenbankserver-Programms
Bis zur Version 2.5 der Firebird-Datenbank gab es vier Versionen mit unterschiedlichem Funktionsumfang. Es gibt die SuperServer-, ClassicServer-, SuperClassic und EmbeddedServer-Variante. Nicht alle Varianten sind für alle Plattformen erhältlich.
SuperServer (ThreadedDedicated)
Die SuperServer-Variante ist ein Multithreaded Server-Prozess. Der SuperServer verwaltet alle Benutzeranfragen und Verbindungen mittels voneinander unabhängigen Threads innerhalb eines Prozesses. Unter Windows (ab NT4) kann der SuperServer als Dienst laufen oder generell als Applikation.[6]
ClassicServer (MultiProcess)
Mit dem ClassicServer werden alle Verbindungen in getrennten Prozessen verwaltet. Jeder Prozess verwaltet dabei seinen eigenen Datenbank-Cache. Durch die Trennung nach Prozessen eignet sich der ClassicServer gut für Multiprozessor-Umgebungen. Er verbraucht allerdings mehr Arbeitsspeicher.[6]
SuperClassicServer (ThreadedShared)
Mit dem SuperClassicServer werden alle Verbindungen von einem Prozess verwaltet, allerdings erhält jede Verbindung seinen eigenen Datenbank-Cache. SuperClassicServer kann alle Verbindungen zur gleichen Datenbank auf mehrere Prozessoren verteilen.[6]
Embedded
Mit der Embedded-Variante ist es möglich, einer einzelnen Applikation exklusiven Zugriff auf eine Datenbank zu ermöglichen. Diese Servervariante eignet sich sehr gut für Einzelanwendungen, die mit einer eigenen Datenbank laufen und keinen Mehrbenutzermodus benötigen. Die Embedded-Version benötigt keine Installation und hat ausschließlich nur eine Programmbibliothek für die verfügbaren Plattformen.
32- und 64-Bit-Unterstützung
Ab der Version 2.1.1 (September 2008) sind für Solaris[7] und ab der Version 2.1.3 vom September 2009 für Windows und Linux getrennte 32- und 64-Bit-Versionen[8][9] verfügbar. Die FreeBSD- und AIX-Releases stehen noch auf dem 32-Bit-Versionsstand 1.5, Firebird für HP-UX ist ebenfalls nur in einer 32-Bit-Version 2.0.3 erschienen.
Administration von Firebird-Datenbanksystemen
Für den produktiven 24-Stunden-Betrieb erlaubt das mitgelieferte Backup-Programm (gbak) Online-Backups, ohne eine Datenbank herunterfahren zu müssen. Ab Version 2.0 sind nun inkrementelle Sicherungen möglich (nbackup). Um Zugriff auf einen Firebird-Server zu erhalten, muss der Standard-Port 3050 für TCP- und UDP-Zugriffe erreichbar sein.[10] Firebird hat kein eigenes GUI Administrationswerkzeug, die Administration erfolgt über die Konsole oder Zusatzprodukte.[11]
Treiber für den Firebird-Datenbankserver
Für den Zugriff auf die Firebird-Datenbank bzw. den Server gibt es Treiber (Jaybird)[12] und Bibliotheken für Delphi, Free Pascal, Perl, Python, ODBC, .NET, PHP, Qt, C++ und Java (als Typ2- und Typ4-JDBC-Treiber).
Support kann entweder kostenlos über die Community oder über kommerzielle Angebote erfolgen.
Fähigkeiten von Firebird
Die Firebird-Datenbank beherrscht Gespeicherte Prozeduren mit einer Oracles PL/SQL ähnlichen Programmiersprache. Abfragen können ebenfalls gespeichert werden sowie Änderungen durchreichen. Kaskadierende Trigger für alle DML-Befehle und referentielle Integrität von Fremdschlüsseln werden angeboten. Alle Transaktionen sind vollständig ACID-kompatibel (Atomicity, Consistency, Isolation und Durability) und unterstützen Sicherungspunkte (Savepoints).
Der Server beherrscht unterschiedliche SQL-Dialekte, die individuell pro Datenbank festgelegt werden können. Abhängig von den Dialekten können zum Beispiel identifizierende Namen beliebige Zeichenketten mit Leerzeichen sein (quoted identifier) oder Namen, die Groß-/Kleinschreibung ignorieren (case insensitive identifier). Mit den unterschiedlichen Dialekten können Daten und Applikationen aus älteren Anwendungen besser migriert werden.
Jede individuelle Spalte einer Tabelle kann ein eigenes Character-Set und eine eigene Sortierung haben (zum Beispiel unabhängig von Groß-/Kleinschreibung). Unterstützt werden eine große Anzahl von vordefinierten 8-Bit-Zeichensätzen und einige Unicode-Varianten. Zusätzliche Zeichensätze und Sortierungen können implementiert werden, ohne etwas am Firebird-Programmquelltext oder dem kompilierten Programmcode ändern zu müssen.
Die Server-Umgebung kann Nachrichten (Events) aus Triggern und Stored Procedures an Applikationen (Clients) senden, soweit es die Treiber erlauben. So kann zum Beispiel die aktuelle Version des Java JDBC-Treibers (Name: Jaybird 4.0.4, Stand: 2. Oktober 2021)[13] solche Nachrichten empfangen. Einer Applikation ist es damit möglich, auf getriggerte Datenbankänderungen direkt zu reagieren und einem Anwender entsprechende Hinweise zu geben.
Mittels UDFs (User Defined Functions) kann der Sprachumfang der wertverarbeitenden Funktionen erweitert werden. Allerdings müssen entsprechende plattformspezifische Bibliotheken erzeugt und eingebunden werden. In einem experimentellen Stadium befinden sich Embedded Functions, die sich wie Stored Procedures verhalten sollen, aber in beliebigen Programmiersprachen entwickelt werden können. So gibt es zurzeit eine experimentelle Firebird-Version, die Java-Methoden über eine im Server ausgeführte Java Virtual Machine einbinden kann.
Für Datenbanken kann ausschließlicher Lesezugriff vereinbart werden, um nach Ablage auf Archivierungsmedien (z. B. CD-ROM, DVD) direkten Zugriff auf die enthaltenen Daten zu erlauben. Eine einzelne Datenbankdatei kann bis zu 64 Terabyte groß sein. Eine Datenbank kann aus mehreren Datenbankdateien bestehen. Damit könnten sehr große Datenbanken auf Dateisystemen angelegt werden, die zum Beispiel keine Dateien größer als 2 GB erlauben, beispielsweise FAT 16.
Mittels Software von Drittanbietern kann Firebird um Replikationsdienste erweitert werden.
Firebird besitzt im Gegensatz zu den meisten anderen modernen Datenbanksystemen keine integrierte Volltextsuche. Nutzer sind auf Drittanbieter oder Workarounds angewiesen.[14]
Siehe auch
Literatur
- Helen Borrie: The Firebird Book Second Edition: Volume 1: Firebird Fundamentals. 2. Auflage. CreateSpace Independent Publishing Platform, 2013, ISBN 978-1-4827-4497-2.
- Helen Borrie: The Firebird Book Second Edition: Volume 2: Developing with Firebird Data. 2. Auflage. CreateSpace Independent Publishing Platform, 2013, ISBN 978-1-4827-6730-8.
- Helen Borrie: The Firebird Book Second Edition: Volume 3: Administering Firebird Servers and Database. 2. Auflage. CreateSpace Independent Publishing Platform, 2013, ISBN 978-1-4827-6848-0.
Weblinks
- Firebird Projektseite (englisch)
- The Firebird FAQ (englisch)
Einzelnachweise
- Firebird 4.0 is released. 1. Juni 2021.
- Firebird 2.5 Release Notes. firebirdsql.org; abgerufen am 15. November 2019.
- Firebird 3.0.2 Release Notes. firebirdsql.org; abgerufen am 19. Juli 2017.
- LibreOffice 6.1: Release Notes – The Document Foundation Wiki. Abgerufen am 25. August 2018.
- LibreOffice 6.2: Release Notes – The Document Foundation Wiki. Abgerufen am 30. Oktober 2021.
- Firebird 3 Quick Start Guide. Abgerufen am 3. August 2020.
- Releases Firebird-solaris-amd64. Sourceforge.net; abgerufen am 3. Mai 2011.
- Releases Firebird-win64. Sourceforge.net; abgerufen am 3. Mai 2011.
- Releases Firebird-linux-amd64. Sourceforge.net; abgerufen am 3. Mai 2011.
- Which TCP/IP port is Firebird using? Firebird-FAQ, abgerufen am 27. August 2013.
- Server configuration and management. Abgerufen am 16. Mai 2019.
- Firebird: The true open source database for Windows, Linux, Mac OS X and more. Abgerufen am 30. Oktober 2021 (englisch).
- Firebird: Jaybird 4.0.4 released. Firebird, 2. Oktober 2021, abgerufen am 30. Oktober 2021 (englisch).
- Does Firebird support full-text search? Abgerufen am 5. Juli 2020.