Vous êtes sur la page 1sur 3

Embedded Server Firebird

Das XCOPY-Deployment-Paradigma außerhalb der .NET-Welt

Feuervogel
Die Verteilung (Deployment) einer datenbankbasierten Anwendung bedingt in der Regel eine Installation
des Datenbankmanagementsystems (DBMS) und der eigenen Anwendungsdateien. Man kann sich glück-
lich schätzen, wenn man dazu eine in sich abgeschlossene Installationsroutine besitzt, die beide Kompo-
nenten automatisch installiert und einrichtet. Dass dies nicht immer so ist, kennen Sie sicherlich aus der
Praxis. Sollten Sie Firebird einsetzen, dann gibt es eine interessante Möglichkeit für die Distribution der
eigenen Anwendung, nämlich den Firebird Embedded Server.

von Thomas Steinmaurer Auf die Super-Server- und Classic- zukompilieren. Möchten Sie diesen Weg
Server-Architektur möchte ich hier nicht gehen, dann sollten Sie einen Blick auf an-
In der Ausgabe 1.2006 des Entwickler näher eingehen. Man sollte jedoch ein dere Produkte, wie zum Beispiel NexusDB
Magazins [1] setzten wir uns mit den wich- Grundverständnis dafür haben, welche [3] werfen. Der Firebird Embedded Server
tigsten Neuerungen in Firebird 2.0 aus- Vor- und Nachteile eine bestimmte Ar- ist ein vollfunktionaler Firebird Server in
einander. Der Firebird Embedded Server chitektur aufweist, da dies den Einsatz Form einer Windows-DLL mit Unter-
als eigenständige Architektur des Firebird von Firebird, abhängig von den Gegeben- stützung für Transaktionen, Stored Pro-
DBMS ist keine Neuerung in 2.0, sondern heiten bezüglich Hardware und Ihren An- cedures, Trigger, Views, Unterabfragen,
existiert bereits seit dem ersten 1.5-Re- forderungen, beeinflussen wird. Events, User-Defined-Funktionen etc. in
lease (Februar 2004). Diese Architektur der Super-Server-Architektur. Somit gel-
wurde bereits kurz in meinem Artikel in Eigenschaften des Embedded ten für den Embedded Server die gleichen
[2] erwähnt, ohne dabei jedoch ins Detail Server Eigenschaften bzw. Spielregeln (Tabelle
zu gehen. Ein vollständiges RDBMS mit Embedded ist nicht gleich Embedded. 1) wie für den Super Server, jedoch mit
einfachem Deployment muss kein Wider- Beim Embedded Server von Firebird han- den folgenden Einschränkungen:
spruch sein, darum steht dieser Artikel delt es sich nicht um Komponenten für
auch unter dem Motto: „Warum kompli- Delphi oder C++Builder, die es einem er- • Nur unter Windows verfügbar
ziert, wenn es auch einfach geht?“ Bleiben lauben, die Datenbank-Engine direkt in • Einträge in der Registry für Firebird
Sie dran! die eigene ausführbare Datei mit hinein- werden ignoriert

Architekturen braucht das Land Architektur Eigenschaften Plattformen


Seit Firebird 1.5 gibt es den Firebird Ser- Super Server Ein Prozess mit mehreren Threads zur Bearbeitung von Clientabfragen Windows, Linux,
ver in unterschiedlichen „internen“ Ar- Ein gemeinsamer Cache für alle Verbindungen Solaris (x86)
chitekturen. Mehrere Architekturen be- Ressourcenschonender
deuten natürlich auch, dass man die Qual Keine SMP-Unterstützung
der Wahl hat. Tabelle 1 gibt Ihnen einen Skaliert bei hoher Last schlechter
Überblick über die vorhandenen Archi- Services-API vollständig unterstützt
tekturen, deren Eigenschaften und den
Classic Server Ein eigenständiger Prozess pro Client-Verbindung Windows, Linux,
unterstützten Plattformen. Solaris (x86, Sparc),
Jede Verbindung besitzt einen eigenen Cache
HPUX 11, Mac OS
Quellcode
Ressourcenintensiver X, FreeBSD
SMP-Unterstützung
Der Quellcode zum Skaliert bei hoher Last besser
Artikel befindet sich Services-API vollständig unterstützt
auf der Profi-CD und auf Embedded Server Entspricht Super Server Windows
www.entwickler-magazin.de.
Tabelle 1: Firebird-Server-Architekturen

www.entwickler-magazin.de Entwickler Magazin 3.2006 91


Firebird Embedded Server

Abb. 1: Embed- • Firebird-basierte Anwendung auf einem


ded Server: ein- USB-Stick
fache Beispiel-
anwendung • Demo-CDs
• Nachschlagewerke (zum Beispiel Pro-
duktkataloge, Namensverzeichnisse,
...) auf einem Nur-lesen-Datenträger
• Einzelplatzanwendungen jeglicher Art

Ein Problem, mit dem Anwendungsent-


wickler immer mehr konfrontiert wer-
den, sind Benutzer mit eingeschränkten
Rechten, wie zum Beispiel Außendienst-
mitarbeiter, die auf Ihrem Laptop keine
Administratorenrechte besitzen, was
die Installation einer Firebird-gestütz-
ten Anwendung erschweren würde. Mit
dem Embedded Server müssen nur ein
paar Dateien kopiert werden und fertig
ist die Installation. So habe ich ein selbst-
geschriebenes, einfaches CRM-System
basierend auf einer Firebird-Datenbank
• Nur ein rein lokaler Zugriff ist möglich, mer“ der Beispieldatenbank employee. auf meinem USB-Stick immer bei mir, um
auch nicht über „localhost“, jedoch als fdb anzeigen. Diese Anwendungsinstanz jederzeit Kundendaten abzurufen und
Clientbibliothek für Remote-Zugriffe hat somit zwei Datenbankverbindungen Produktlizenzen erstellen zu können. Wie
verwendbar offen, was auch einwandfrei funktioniert, das Deployment einer Anwendung mit
• Exklusive Sperre der Datenbankdatei da der Embedded Server im Kontext der dem Firebird Embedded Server aussieht,
• Firebird-Benutzerdatenbank security. eigenen Anwendung in Form einer DLL werden wir uns im nächsten Abschnitt nä-
fdb wird ignoriert, aber geladen wurde. Starten Sie nun eine zwei- her ansehen.
• SQL-Privilegien werden geprüft te Instanz unserer Beispielanwendung.
Der Verbindungsversuch zur selben Da- Deployment einer Anwendung
Die exklusive Sperre der Datenbankda- tenbank ist nun mit einer Fehlermeldung Bei der Embedded-Server-Distributi-
tei ist notwendig, da sonst eine Beschä- fehlgeschlagen, da unsere zweite Anwen- on handelt es sich um eine ZIP-Datei,
digung der Datenbankdatei möglich ist, dungsinstanz als zweiter Prozess mit dem die von der Firebird-Projekt-Webseite
wenn ein anderer Firebird-Server-Prozess Embedded Server angesehen wird, und [4] heruntergeladen werden kann. Das
ebenfalls auf diese Datenbankdatei zu- dieser Prozess durch die exklusive Sperre Firebird Embedded Server Release 1.5.3
greift. Sehen wir uns dazu ein einfaches der Datenbankdatei die Datenbank nicht finden Sie auf der Heft-CD, sodass Sie
Beispiel an. Abbildung 1 zeigt eine gestar- öffnen kann (Abb. 2). sofort loslegen können. Sofern Ihre An-
tete erste Instanz einer einfachen Delphi- wendung keine Einträge in der Registry
2006-Anwendung mit zwei Datengrids, Anwendungsszenarien oder andere Aktionen benötigt, die wäh-
die über eine separate Verbindungskom- Die Anwendungsszenarien für den Einsatz rend einer Setup-Routine durchgeführt
ponente den Inhalt der Tabelle „Custo- des Embedded Server sind breit gefächert: werden müssen, reicht ein einfaches Ko-
pieren all Ihrer Anwendungsdateien (Da-
tenbankdatei, ausführbare Datei(en),
Datei Anmerkung Laufzeitbibliotheken, usw. ...) mit den
Projekt1.exe Ausführbare Datei der Anwendung Dateien aus der Embedded-Server-Dis-
employee.fdb Datenbankdatei tribution. Gehen Sie dazu wie folgt vor:
firebird.conf Firebird-Konfigurationsdatei
firebird.msg Datei mit den Firebird-Meldungstexten
• Extrahieren Sie das ZIP-Archiv der Em-
bedded-Server-Distribution in ein Ver-
gds32.dll Embedded Server DLL. Nach gds32.dll umbenannte fbembed.dll, da die verwendeten Zugriffs-
komponenten gds32.dll als Clientbibliothek erwarten zeichnis Ihrer Wahl
ib_util.dll Wird in der Regel von UDFs benötigt
• Kopieren Sie alle Ihre Anwendungsda-
teien inklusive Datenbankdatei in dieses
\intl\ Wird benötigt, wenn die Datenbank Zeichensätze (ISO8859_1, ...) verwendet
Verzeichnis
\udf\ Standard-UDF-Bibliotheken
• Benennen Sie die Datei fbembed.dll so
Tabelle 2: Dateiliste für Minimalinstallation um, dass diese Datei den Namen der

92 Entwickler Magazin 3.2006 www.entwickler-magazin.de


Embedded Server Firebird

Firebird-Clientbibliothek aufweist, die Nur-lesen-Datenbanken unterstützt,


Ihre Anwendung erwartet (zum Beispiel sofern natürlich die Clientanwendung
gds32.dll oder fbclient.dll, je nachdem, keine Schreiboperationen ausführt. Es
welche Zugriffskomponenten verwen- reicht aber nicht aus, die Datenbank mit
Abb. 2: Exlusive Sperre der Datenbankdatei:
det werden) einem Schreibschutz zu versehen und da-
Fehlermeldung
nach auf eine CD-ROM/DVD zu bren-
Das ist alles! Sie haben nun eine lauffä- nen, sondern es muss auch ein spezielles
hige Firebird-basierte Anwendung, die Read-only-Flag auf Datenbankebene
den Embedded Server als Datenbank- gesetzt sein. Wird nur der Schreibschutz
Engine verwendet. Ich denke, Sie können auf Dateiebene im Windows Explorer
mir zustimmen, dass dieses Vorgehen verwendet, dann erhalten Sie beim Aus-
sehr stark mit dem XCOPY-Deploy- führen unserer Beispielanwendung die
Abb. 3: Nur-lesen-Datenbank: Fehlermel-
ment-Paradigma aus der .NET-Welt ver- Fehlermeldung aus Abbildung 3, obwohl dung
gleichbar ist. Einfach die benötigten Da- wir nur eine Datenbankverbindung öff-
teien kopieren und fertig. Zum Thema nen und eine Tabelle abfragen, ohne da-
„benötigte Dateien“ ist noch zu sagen, bei datenmanipulierende Operationen Wollen Sie die Nur-lesen-Datenbank
dass Sie keinerlei Dokumentationsda- auszuführen. Der Grund hierfür ist, dass zu einem späteren Zeitpunkt nicht nur
teien aus der Embedded-Server-Distribu- beim Ausführen der Abfrage implizit eine von der CD-ROM/DVD betreiben, son-
tion benötigen, das heißt diese Dateien Transaktion gestartet wird und somit in- dern auch auf Ihrem Server, um Datenän-
können Sie getrost außen vor lassen, tern die Transaction Inventory Page (TIP) derungen zu ermöglichen, dann gehen Sie
um Speicherplatz zu sparen. Dies ist vor aktualisiert wird. Dies schlägt fehl, da die wie folgt vor:
allem dann interessant, wenn es sich Datenbankdatei mit einem Schreibschutz
beim Zielmedium zum Beispiel um einen versehen ist. Wenn man aber das Read- • Datenbankdatei auf die Server-Festplatte
USB-Stick handelt, auf dem nur wenig only-Attribut für die Datenbank, zum kopieren
Speicherplatz vorhanden ist. Tabelle 2 Beispiel mit dem Kommandozeilentool • Schreibschutz der Datenbankdatei mit
gibt einen Überblick über die benötigten gfix setzt, dann klappt auch der Nur-le- dem Windows Explorer entfernen
Dateien für eine von mir empfohlene Mi- sen-Zugriff auf unsere Firebird-Daten- • gfix mit dem Kommandozeilenschalter
nimalinstallation unserer einfachen Bei- bank. Die Verwendung von gfix sieht in –mode read_write ausführen
spielanwendung. diesem Fall wie folgt aus:
Die Gesamtgröße der Minimalinstal- Für den Fall, dass Sie den Trick mit der
lation beträgt ca. 4,2 MB, wobei die Da- gfix employee.fdb -user sysdba -password masterkey -mode vollen Befüllung der Datenseiten ange-
tenbankdatei alleine eine Größe von etwa read_only wendet haben, sollten Sie mit –use reserve
einem MB aufweist. Es ginge auch noch wieder Speicherplatz für alte Datensatz-
kleiner, da man das \udf-Unterverzeichnis Ein zusätzlicher Trick bei Nur-lesen-Da- versionen reservieren. In diesem Fall ist
und die Datei ib_util.dll weglassen kann, tenbanken besteht darin, keinen Spei- wiederum ein Backup/Restore-Zyklus
wenn keine UDFs eingesetzt werden. cherplatz auf den Datenseiten für alte notwendig, damit die Datenbank neu auf-
Meine Empfehlung ist allerdings: Neh- Datensatzversionen zu reservieren, da gebaut wird.
men Sie ruhig die Datei ib_util.dll sowie ja keine Datenänderungen möglich sind. Ich hoffe, dass ich Ihr Interesse an die-
die Verzeichnisse \intl und \udf in Ihren Dies ist vor allem dann interessant, wenn ser attraktiven Form des Deployments
Deployment-Prozess auf, da man so si- der verfügbare Speicherplatz auf dem einer Firebird-basierten Anwendung
chergehen kann, dass diese Bestandteile Zielmedium einen kritischen Faktor dar- geweckt habe. Vielleicht erweist sich
für eine spätere Verwendung vorhanden stellt. Man kann hier bis zu 20 Prozent diese Architektur des Firebird Servers ja
sind, auch wenn sie im Moment nicht be- der Datenbankdateigröße einsparen. bereits in einem Ihrer nächsten Projekte
nötigt werden. Diese Eigenschaft kann ebenfalls mit gfix als nützlich. Treu unserem Motto: „Wa-
gesetzt werden. Wichtig: Der folgende rum kompliziert, wenn es auch einfach
Datenbank auf Aufruf von gfix muss natürlich vor dem geht?“.
Nur-lesen-Datenträger Setzen des Read-only-Flags stattfinden!
Dass für eine Einzelplatzanwendung
Links & Literatur
keine Installation notwendig ist, macht gfix employee.fdb -user sysdba -password masterkey -use full
den Embedded Server äußerst attrak- [1] Thomas Steinmaurer: Firebird 2.0, in
Entwickler Magazin 1.2006
tiv für Nachschlagedatenbanken auf Jetzt muss nur noch ein Backup/Restore
einem Nur-lesen-Datenträger wie einer (zum Beispiel mit gbak) durchgeführt [2] Thomas Steinmaurer: Firebird 1.5 – Das neue
CD-ROM, oder wenn es etwas größer werden, um die Datenbank ohne reser- Release, in Der Entwickler 2.2005
sein darf auch auf einer Daten-DVD. viertem Speicherplatz für alte Datensatz- [3] www.nexusdb.com
Aus Sicht der Firebird-Engine werden versionen neu zu erstellen. [4] www.firebirdsql.org

www.entwickler-magazin.de Entwickler Magazin 3.2006 93

Vous aimerez peut-être aussi