Firebird 2.1 Das freie RDBMS Robert Dollinger
Themen Die Geschichte von Firebird Das Firebird Projekt Unterstützte Plattformen Classic Server Super Server Embedded Server Tools Neue Features von Firebird 2.1
Die Geschichte von Firebird 1984 Jim Starkey entwickelt InterBase 1991 Interbase wird von Borland gekauft 25.07.2000 Interbase 6 wird von Borland unter der IPL freigegeben 31.07.2000 Start des Firebird Projekts bei Sourceforge 12.03.2002 Firebird 1.0.0 21.02.2004 Firebird 1.5.0 12.11.2006 Firebird 2.0.0 26.09.2007 Firebird 2.0.3 12.12.2007 Firebird 1.5.5 18.04.2008 Firebird 2.1.0 28.04.2008 Firebird 2.0.4
Wo findet man Firebird Das Firebird Projekt Firebird findet man unter http://www.firebirdsql.org/ oder auf Sourceforge http://sourceforge.net/projects/firebird/ Firebird ist FREI Die Lizenz ist die Interbase Public License (IPL, geänderte MPL) Es gibt kein Dual Licensing wie bei MySQL FirebirdSQL Stiftung Die FirebirdSQL Stiftung ist eine Vereinigung von Einzelpersonen und Unternehmen unterschiedlicher Grösse, die darauf abzielt, die kontinuierliche Weiterentwicklung des RDBMS Firebird und der dazugehörigen Produkte zu gewährleisten. Projekte Datenbank Engine JayBird.NET provider ODBC Treiber Python Treiber AddOns (ConfigManager, Control Panel Manager)
Firebird 2.1 UNTERSTÜTZTE PLATTFORMEN Die Firebird Technologie ist seit über 20 Jahren im Einsatz, was es zu einem sehr ausgereiften und stabilen Produkt macht. Unterstützte Plattformen sind: Linux Windows MacOS X Solaris FreeBSD HP Unix Sinixz
Firebird 2.1 CLASSIC SERVER Alle Verbindungen werden in getrennten Prozessen verwaltet Jeder Prozess verwaltet seinen eigenen Datenbank Cache SMP Support Verbraucht allerdings mehr Arbeitsspeicher Local Connections Linux: Die Clients brauchen auch Lese und Schreibrechte auf die Datenbankdatei
Firebird 2.1 SUPER SERVER Multithreaded Server Prozess Verwaltet alle Benutzeranfragen und Verbindungen mittels von einander unabhängigen Threads innerhalb eines Prozesses Kein SMP Support Local Connections Linux: Nur der Server Porzess braucht Lese und Schreibrechte auf die Datenbankdatei
Firebird 2.1 EMBEDDED SERVER Client und Server in einer DLL Exklusiver Zugriff auf die Datenbank Also kein Mehrbenutzermodus Nur lokale Verbindungen Nur für Windows Keine Installation nötig
Firebird 2.1 isql Tools Textbasiertes Interface für Firebird gbak./isql localhost:/opt/employee.fdb user SYSDBA password masterkey DB Backup und DB Restore gfix./gbak b v localhost:/opt/employee.fdb /opt/employee.fbk user SYSDBA password masterkey./gbak r v /opt/employee.fbk localhost:/opt/employee.fdb user SYSDBA password masterkey DB Optimierung oder DB Reparatur./gfix w sync /opt/employee.fdb user SYSDBA password masterkey flamerobin Grafische Administrationsoberfläche http://www.flamerobin.org/
ON DISC STRUCTURE Datenbankdateien mit ODS Version 11.1 Firebird 1.5 DB Dateien haben ODS Version 10.1 Firebird 2.0 DB Dateien haben ODS Version 11.0 Firebird 2.1 DB Dateien haben ODS Version 11.1 Firebird 2.1 kann auch alte DB Dateien lesen, allerdings ist der Funtkionsumfang logischerweise eingeschränkt.
Database Triggers Trigger die an eine Verbindung oder Transaktion gebunden werden können Connect / Disconnect Transaction Start / Commit / Rollback CREATE TRIGGER log ACTIVE on CONNECT AS BEGIN /* enter trigger code here */ SQL and Objects END gbak nodbtriggers isql nodbtriggers
Global Temporary Table Die Metadaten sind immer persistent, die Daten hingegen nicht. Es gibt 2 verschiedene Typen: Daten werden über die Dauer der DB Verbindung behalten CREATE GLOBAL TEMPORARY TABLE temp_table (feld1 Integer) on COMMIT PRESERVE ROWS; Daten werden über die Dauer der Transaktion behalten CREATE GLOBAL TEMPORARY TABLE temp_table (feld1 Integer) on COMMIT Delete ROWS; SQL and Objects
Returning Clause SQL and Objects Gibt die Werte einer INSERT, UPDATE, DELTE oder INSERT OR UPDATE Anweisung an den Client wieder zurück. Kann nur bei singleton Anweisungen durchgeführt werden DELETE from Table1 where Feld1=1 RETURNING Feld2;
Update or Insert SQL and Objects UPDATE und INSERT in einem Befehl UPDATE or INSERT into table1 (Feld1, Feld2) Values (:F1, :F2) MATCHING (Feld1); Ohne MATCHING muss die Tabelle einen primary key haben! UPDATE or INSERT into table1 (Feld1, Feld2) Values (:F1, :F2);
LIST Funktion SQL and Objects Rückgabe der SELECT ist ein String mit allen Werten getrennt durch das angegebene Trennzeichen. Sollte die SELECT keine Werte zurückgeben ist der Rückgabewert NULL. select LIST(ID, ':') from Table1; Ausgabe Wert1:Wert2:Wert3:Wert4
Neue JOIN types SQL and Objects NAMED COLUMNS Ein full join wird erstellt select * from employee join DEPARTMENT using (dept_no); NATURAL JOIN Ein named columns join für alle gleiche Spalten wird erstellt select * from EMPLOYEE_PROJECT natural join EMPLOYEE natural join PROJECT;
SQL and Objects Short Blobs als Long Varchars Text Blobs die nicht grösser als 32.765 byte sind, werden als Varchars behandelt. Es funktionieren also die Funktionen wie CAST, LOWER, UPPER, TRIM und SUBSTRING
LEFT JOIN DEPT_YEAR_BUDGET B_1996 ON D.DEPT_NO = B_1996.DEPT_NO AND B_1996.FISCAL_YEAR = 1996 Neue Features von Firebird 2.1 Common Table Expressions Rekursive DSQL Queries SQL and Objects WITH RECURSIVE DEPT_YEAR_BUDGET AS ( SELECT FISCAL_YEAR, DEPT_NO, SUM(PROJECTED_BUDGET) AS BUDGET FROM PROJ_DEPT_BUDGET GROUP BY FISCAL_YEAR, DEPT_NO ), DEPT_TREE AS ( SELECT DEPT_NO, HEAD_DEPT, DEPARTMENT, CAST('' AS VARCHAR(255)) AS INDENT FROM DEPARTMENT WHERE HEAD_DEPT IS NULL UNION ALL SELECT D.DEPT_NO, D.HEAD_DEPT, D.DEPARTMENT, H.INDENT ' ' FROM DEPARTMENT D JOIN DEPT_TREE H ON D.HEAD_DEPT = H.DEPT_NO ) SELECT D.DEPT_NO, D.INDENT D.DEPARTMENT AS DEPARTMENT, B_1993.BUDGET AS B_1993, B_1994.BUDGET AS B_1994, B_1995.BUDGET AS B_1995, B_1996.BUDGET AS B_1996 FROM DEPT_TREE D LEFT JOIN DEPT_YEAR_BUDGET B_1993 ON D.DEPT_NO = B_1993.DEPT_NO AND B_1993.FISCAL_YEAR = 1993 LEFT JOIN DEPT_YEAR_BUDGET B_1994 ON D.DEPT_NO = B_1994.DEPT_NO AND B_1994.FISCAL_YEAR = 1994 LEFT JOIN DEPT_YEAR_BUDGET B_1995 ON D.DEPT_NO = B_1995.DEPT_NO AND B_1995.FISCAL_YEAR = 1995
Built in Functions Verschiedenste neue und optimierte Built in Functions trunc Trim, rtrim, ltrim rpad, lpad round reverse right, left replace lower, upper decode datediff, dateadd SQL and Objects
PROCEDURAL SQL Domains for defining PSQL Variables and Arguments Es können nun für die Parameter und Variablen auch DOMAINS verwendet werden create domain DOM as INTEGER; create procedure sp (i1 Type of DOM, i2 DOM) returns (o1 type of DOM, o2 DOM) as declare variable v1 type of DOM; declare varianle v2 DOM; begin end /* Prozedurcode */
PROCEDURAL SQL Collate in Stored Procedures and Parameters Es kann nun auf die PSQL Variablen und Parameter eine Collation angewandt werden Enhancement to PSQL error stack trace PSQL error stack trace zeigt nun Zeilen und Spaltennummer an
ADMINISTRATIVE Database Monitoring via SQL Es stehen virtuelle Tabellen zur Verfügung über die man einen Snapshot über den aktuellen Zustand der DB erhält. Die Monitoring Tabellen sind in DSQL und PSQL verfügbar Zeigt mir alle Prozesse an, die CPU Load verursachen: select MON$SERVER_PID from MON$ATTACHMENTS where MON$ATTACHMENT_ID <> CURRENT_CONNECTION and MON$STATE = 1 Übersicht über die DB: select * from MON$DATABASE;
PLATFORM SUPPORT Ports to Windows 2003 64 bit Classic Server Super Server Embedded Server
SECURITY Windows Security to authenticate Users Man kann sich jetzt mit dem Windows Account direkt mit der DB verbinden isql server:employee SQL> select CURRENT_USER from rdb$database; Ausgabe: USER ======== SERVER\Robert
INTERNATIONAL LANGUAGE SUPPORT Unicode Collations anywhere Die UNICODE collations (case sensitive und case insensitive) können für alle CHARACTER SET angewandt werden The CREATE COLLATION command Eigene Collation erstellen CREATE COLLATION UNICODE_ENUS_CI FOR UTF8 FROM UNICODE CASE INSENSITIVE 'LOCALE=en_US';