Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Embedded Datenbanken - hat jemand Erfahrung ? (https://www.delphipraxis.net/128012-embedded-datenbanken-hat-jemand-erfahrung.html)

g1o2k4 22. Jan 2009 18:01

Datenbank: SQL • Zugriff über: -

Embedded Datenbanken - hat jemand Erfahrung ?
 
tag.

hat jemand erfahrung mit embedded sql datenbank ? wenn ja welche sind zu empfehlen und vorallem delphi kompatibel ?
was ich unter embedded verstehe, ist eine datenbank, deren komponenten direkt in der exe liegen und mitkompiliert werden, ohne das man nen server, netzwerk oder eine exe als server auf dem system benötigt.
ich glaube firebird und mysql stellen sowas zur verfügung. ist das zu empfehlen ?
gibt es für delphi komponenten, die die datenbank verwaltung übernehmen, so dass man diese einbindet, benutzt und anschließend quasi einen sql server in der exe hat, als thread z.b.?

ich rede jetzt nicht soetwas wie xml, access oder mybase. es sollte schon sql sein und eine gute performance liefern.

mirage228 22. Jan 2009 18:15

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Ich habe mal für ein Projekt Firebird Embedded benutzt in Zusammenarbeit mit den frei erhältlichen ZEOS Komponenten. Du brauchst nur 1 oder 2 Dateien im Programmverzeichnis (die Firebird DLL und noch eine andere). Die erzeugte Datenbank wird auch in einer einzelnen Datei angelegt. Performance kann ich aber nur bedingt etwas zu sagen, weil ich jetzt nicht sooo viele Daten hatte ... Die Kombination (FBEmbedded & ZEOS) kann ich Dir aber sonst nur empfehlen.

Viele Grüße

DeddyH 22. Jan 2009 18:19

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat aus der README_embedded.txt von Firebird (2.0):
Zitat:

3. USAGE

Just copy fbembed.dll, icudt30.dll, icuin30.dll and
icuuc30.dll into the directory with your application.
Then rename fbembed.dll to either fbclient.dll or
gds32.dll depending on your database connectivity software.
Then start your application and it will use the embedded
server as a client library and will be able to access
local datasases. You should also copy firebird.msg and
firebird.conf (if necessary) to the same directory.

If external libraries are required for your application,
then you should have them separately. Most probably, it
will be INTL support (fbintl.dll and fbintl.conf) or UDF
libraries. To be able to use them, you should place them
into the directory tree which emulates the Firebird server
one, i.e. has subdirectories like /intl or /udf:

c:\my_app\app.exe
c:\my_app\gds32.dll
c:\my_app\ib_util.dll
c:\my_app\icudt30.dll
c:\my_app\icuin30.dll
c:\my_app\icuuc30.dll
c:\my_app\firebird.conf
c:\my_app\firebird.msg
c:\my_app\intl\fbintl.dll
c:\my_app\intl\fbintl.conf
c:\my_app\udf\fbudf.dll

If you want to place the Firebird files (excluding the
renamed fbembed.dll) in another directory, you need to
modify your firebird.conf and set RootDirectory to the
Firebird directory tree. Example:

c:\my_app\app.exe
c:\my_app\gds32.dll
c:\my_app\ib_util.dll
c:\my_app\icudt30.dll
c:\my_app\icuin30.dll
c:\my_app\icuuc30.dll
c:\my_app\firebird.conf
d:\fb\firebird.msg
d:\fb\intl\fbintl.dll
c:\fb\intl\fbintl.conf
d:\fb\udf\fbudf.dll

firebird.conf:
RootDirectory = d:\fb

haentschman 22. Jan 2009 18:20

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Die Kombination (FBEmbedded & ZEOS) kann ich Dir aber sonst nur empfehlen.
...dem stimme ich vorbehaltlos zu. :thumb:

...und solltest du einmal von Embedded die Nase voll haben kannst du auch mit dieser Kombination eine Client Server Version basteln. 8)

RWarnecke 22. Jan 2009 18:37

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Du kannst Dir ja mal Code-Orakel von mir anschauen. Das ist auf eine Embedded Firebird Datenbank aufgebaut.

g1o2k4 22. Jan 2009 19:27

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Zitat von RWarnecke
Du kannst Dir ja mal Code-Orakel von mir anschauen. Das ist auf eine Embedded Firebird Datenbank aufgebaut.

das sieht ganz gut aus. das mit den dlls ist klar, da hab ich auch nichts gegen.
hat jemand links zu den komponenten von zeos und fbembedded für delphi ?


edit: @RWarnecke: kannst du vielleicht etwas zur performance sagen ?

RWarnecke 22. Jan 2009 21:06

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Lokal ist die Geschwindigkeit spitzenmäßig. Zum Server kann ich nicht viel sagen, da ich es so nicht nutze.

Zeos
Firebird

Bernhard Geyer 22. Jan 2009 22:19

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Zitat von g1o2k4
ich glaube firebird und mysql stellen sowas zur verfügung. ist das zu empfehlen ?

Beide benötigen externe DLL's gegenüber einer "richtigen" Embedded Datenbank die komplett in der Exe ist. Bei MySQL mußt du mit der Lizenzierung aufpassen wenn du eine Closed-Source App hast.

Eine sehr gute Embedded Desktop DB ist z.B. ADS Local Server wenn man kein Unicode/Mehrsprachigkeit benötigt. Alternativen wären z.B. Absolute Database oder TurboDB.

g1o2k4 22. Jan 2009 23:21

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Zitat von Bernhard Geyer
Eine sehr gute Embedded Desktop DB ist z.B. ADS Local Server wenn man kein Unicode/Mehrsprachigkeit benötigt. Alternativen wären z.B. Absolute Database oder TurboDB.


werd ich mir mal ansehn, da mir aufgefallen ist, dass zeos nur als alpha für delphi 2009 vorhanden ist und nach dem installieren dieser alpha, das beispielprojekt für embedded fb bei mir auch nicht funktionierte.

unicode wäre schon nicht schlecht. haben turbodb oder absolute db das ?


edit: achja vergessen zu fragen. hat delphi 2009 eine embedded db zufälligerweise schon eingebaut ? was datenbanken angeht ist delphi ja fast die umfangreichste sprache für enterprise entwicklung. ich kenne keine sprache in der es soviele möglichkeiten gibt datenbankprogrammierung zu betreiben: ado, dbexpress, interbase, mybase, xml, bde, datensteuerung, datenzugriff....etc

ist da nichts dabei, was eine sql datenbank plus server in die exe integriert ? ich glaub bei interbase hab ich sowas gelesen, kann das sein ? benötigt man dazu noch dlls oder ist alles in der exe ?

Hansa 22. Jan 2009 23:50

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Zitat von g1o2k4
...ist da nichts dabei, was eine sql datenbank plus server in die exe integriert ?

Es gibt gute Gründe, das nicht zu machen. Z.B. lassen sich Bestandteile leichter modifizieren, ohne an der EXE rumfummeln zu müssen.


Aber es geht ja hierum :

Embedded Datenbanken - hat jemand Erfahrung ?

Ist durchaus zu empfehlen, z.B. für Demo-Versionen (CD etc.) oder Einzelplatzlösungen. Die paar FB-Dateien richtig kopieren, eigenes Programm, DB etc. und fertig. Allerdings kann nun ein kapitaler Fehler für Ärger sorgen : man versucht aus der Delphi-IDE das fertige Programm zu starten. Aber wehe ein Dataset ist in der IDE geöffnet. Dann ist pillo. Es kann nur einen geben. Dasselbe gilt, sofern noch ein Admin-Tool die DB im Zugriff hat. Dann jagt man eventuell den Poltergeist. Schon oft gesehen. :mrgreen:

Deshalb : programmieren mit der richtigen (Server) Version. Das fertige Programm dann ohne Server embedded austesten.

omata 23. Jan 2009 00:24

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Zitat von Hansa
... Aber wehe ein Dataset ist in der IDE geöffnet...

Das ist richtig.
Allerdings sollte man alle Datenbankkomponenten über eine gemeinsame Connection auf die Datenbank zugreifen lassen. Ist also noch irgendwo ein Dataset geöffnet, so braucht man nur die eine Connection schliessen und schon ist alles wieder ok. Es ist also nicht nötig großartig rumzusuchen. Es gibt genau eine Stelle im Programm, an der man das Problem löst.

Hansa 23. Jan 2009 00:36

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Zitat von omata
..Es gibt genau eine Stelle im Programm, an der man das Problem löst.

Auch (fast) richtig. Nur, welches Programm ? Was ist, wenn das Programm zweimal gestartet werden soll/muss oder auch nur IBExpert etc. Zugriff hat ? Mir ists egal, aber ich sage trotzdem : Finger weg von der embedded in der Entwicklungsphase ! Das bringt nämlich folgendes : Vorteile : keine. Nachteile : viele, eventuell gar hartnäckige, weil es manchmal schon klar sein sollte und man siehts auf Anhieb trotzdem nicht.

Während mein Programm aus der IDE heraus läuft, ist in 80 % der Fälle auch IBExpert geöffnet, um das vom Programm gemachte zu überprüfen. Mit nicht geöffneten Datasets lässt sich nicht mal der Debugger sinnvoll benutzen.

hoika 23. Jan 2009 06:17

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Hallo,

ich habe hier noch ne alte BDE-App.
Die läuft aber schon auf Firebird.

Wie ich das gelesen habe, müssen die FB-Dlls ins BDE-Verzeichnis.
Klappt dann denn zusätzlich noch der "normale" Zugriff auf eine im Netz liegende DB?
Kennt sich jemand damit aus ?

Danke


Heiko

joachimd 23. Jan 2009 08:18

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Zitat von Hansa
Auch (fast) richtig. Nur, welches Programm ? Was ist, wenn das Programm zweimal gestartet werden soll/muss oder auch nur IBExpert etc. Zugriff hat ? Mir ists egal, aber ich sage trotzdem : Finger weg von der embedded in der Entwicklungsphase ! Das bringt nämlich folgendes : Vorteile : keine. Nachteile : viele, eventuell gar hartnäckige, weil es manchmal schon klar sein sollte und man siehts auf Anhieb trotzdem nicht.

Während mein Programm aus der IDE heraus läuft, ist in 80 % der Fälle auch IBExpert geöffnet, um das vom Programm gemachte zu überprüfen. Mit nicht geöffneten Datasets lässt sich nicht mal der Debugger sinnvoll benutzen.

Glücklich der, der eine embedded Datenbank verwendet, die auch Multi-User kann. Für mich wäre das Single-User-Prinzip Grund genug, kein FB Embedded einzusetzen.

mkinzler 23. Jan 2009 08:37

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Glücklich der, der eine embedded Datenbank verwendet, die auch Multi-User kann. Für mich wäre das Single-User-Prinzip Grund genug, kein FB Embedded einzusetzen.
Diese Beschränkung soll wegfallen

Joachim Uersfeld 23. Jan 2009 08:40

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Ich verwende für solche Aufgaben die Nexus Datenbank. Schnell und stabil.

Zitat:

Zitat von g1o2k4
hat jemand erfahrung mit embedded sql datenbank ? wenn ja welche sind zu empfehlen und vorallem delphi kompatibel ?
was ich unter embedded verstehe, ist eine datenbank, deren komponenten direkt in der exe liegen und mitkompiliert werden,


Bernhard Geyer 23. Jan 2009 09:10

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Zitat von g1o2k4
unicode wäre schon nicht schlecht. haben turbodb oder absolute db das ?

Fast jede aktiv Entwickelte Embedded DesktopDB kann Unicode. Bei meinen letzten Test war TurboDB bei komplexen Queries langsam und AbsoluteDB nicht Unicodefähig wenn man mit SetRange & Co. arbeitet.

Zitat:

Zitat von g1o2k4
edit: achja vergessen zu fragen. hat delphi 2009 eine embedded db zufälligerweise schon eingebaut ?

Ja: Blackfish-SQL. Ist jedoch .NET-Basierend so das hier m.E. keine Embedded DB vorliegt. Aber wie die weiterentwicklung/forcierung aussieht nachdem Delphi.NET gestorben ist ...

Zitat:

Zitat von g1o2k4
was datenbanken angeht ist delphi ja fast die umfangreichste sprache für enterprise entwicklung. ich kenne keine sprache in der es soviele möglichkeiten gibt datenbankprogrammierung zu betreiben: ado, dbexpress, interbase, mybase, xml, bde, datensteuerung, datenzugriff....etc

Die möglichkeiten sind auch in .NET oder teilweise Java vorhanden. DB-Sensitive Controls sind aber nur für nicht zu komplexe Apps einsetzbar, so das Java hier besser ist. Und bei Java ist mit JDBC eine Schnittstelle vorhanden die nicht alle 2-3 Jahre wechselt und die DB-Unterschiede etwas besser als bei Delphi kapselt, da auch viele Methoden für Metadatenabfrage besser standardisiert ist.

Zitat:

Zitat von g1o2k4
ist da nichts dabei, was eine sql datenbank plus server in die exe integriert ? ich glaub bei interbase hab ich sowas gelesen, kann das sein ? benötigt man dazu noch dlls oder ist alles in der exe ?

Für Java gibt es sowas, aber für Delphi wäre mir das neu ...

mkinzler 23. Jan 2009 09:44

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Zitat:

Ja: Blackfish-SQL. Ist jedoch .NET-Basierend so das hier m.E. keine Embedded DB vorliegt. Aber wie die weiterentwicklung/forcierung aussieht nachdem Delphi.NET gestorben ist ...
Diese ist bei Prism auch dabei

g1o2k4 23. Jan 2009 10:50

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
also ne andere sprache als delphi kommt nicht in frage weil ich es nativ halten wollte.

im speziallen ging es hierum: http://www.delphipraxis.net/internal...t.php?t=146170
vielleicht haben es einige von euch gesehn. (im moment down)

ich wollte das ganze in eine download version packen, damit man auf seinem rechner seine datenbank scannen kann oder sich direkt eine datenbank mit herunterlädt und diese mit seiner lib erweitert.

d.h. der sql teil ist im prinzip schon fertig, ich brauch also nur eine embedded db, die einfach zu implementieren und zu bedienen ist. mehr als sql querys ausführen, zu connecten und zu disconnecten brauch ich ja im prinzip nicht. multi-user fähigkeit braucht das teil also nicht, weil ich keine weitere connections zur db auf haben werde als die vom programm. das programm soll auf dem clientrechner auch nur als eine instanz laufen und danach nicht mehr ausführbar sein. da liegen also keine probleme.

die nexus db sieht auch ganz gut aus. leider gibts die auch nicht für delphi 2009.

wie siehts mit einer embedded interbase db aus ?

Scooty78 25. Jan 2009 16:03

Re: Embedded Datenbanken - hat jemand Erfahrung ?
 
Dann scheint doch embedded Firebird perfekt für dich zu sein. Vor allem brachst Du dir keine Gedanken zum Thema Lizenzen machen.

Ich würde bei der Entwicklung aus bereits genannten Gründen allerdings den Superserver installieren und erst beim deployment daraus eine embedded Version machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz