Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank in Delphi Programm integrieren (https://www.delphipraxis.net/139192-datenbank-delphi-programm-integrieren.html)

benwen 25. Aug 2009 12:51

Datenbank: PostgresQL • Version: 8.4 • Zugriff über: ODBC

Datenbank in Delphi Programm integrieren
 
Hallo zusammen!

Ich baue gerade eine Anwendung in D2009, die eng mit einer PostgresQL-Datenbank zusammenarbeitet.
Wenn das Tool an den Kunden ausgeliefert wird ist diese Datenbank dementsprechend mit zu liefern. Wie kann ich das anstellen?
a) Gibt es eine Möglichkeit die PostgresQL-DB in das Delphi Programm (als Ressource??) zu integrieren?
b) Falls a) nicht geht, kann man Datenbank und Programm zusammen durch einen Installer beim Kunden installieren lassen? (Notlösung, da Installation nach Möglichkeit vermieden werden soll.
c) Ist es doch besser, eine in Delphi integrierte Datenbank oder sonst irgend ein anderes DBMS zu nutzen?

Danke!

Grüße, benwen

shmia 25. Aug 2009 13:13

Re: Datenbank in Delphi Programm integrieren
 
Zitat:

Zitat von benwen
a) Gibt es eine Möglichkeit die PostgresQL-DB in das Delphi Programm (als Ressource??) zu integrieren?

Ein ganz klares Nein!!
Eine Datenbank muss ständig veränderbar sein, während Resourcen in einer EXE fix sind.

mkinzler 25. Aug 2009 13:15

Re: Datenbank in Delphi Programm integrieren
 
Nur die Datenbank wird dir nicht sonderlich viel bringen oder existiert von PostGreSQL eine embedded-Variante?

Bernhard Geyer 25. Aug 2009 13:31

Re: Datenbank in Delphi Programm integrieren
 
Zitat:

Zitat von benwen
c) Ist es doch besser, eine in Delphi integrierte Datenbank oder sonst irgend ein anderes DBMS zu nutzen?

Hier gibt es viele möglichkeiten: ADS Local Server, TurboDB, Accuracer oder embedde-Versionen von "richtigen" SQL-Servern wie mySQL oder Firebird.

benwen 25. Aug 2009 13:50

Re: Datenbank in Delphi Programm integrieren
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von benwen
c) Ist es doch besser, eine in Delphi integrierte Datenbank oder sonst irgend ein anderes DBMS zu nutzen?

Hier gibt es viele möglichkeiten: ADS Local Server, TurboDB, Accuracer oder embedde-Versionen von "richtigen" SQL-Servern wie mySQL oder Firebird.

Danke für die Hinweise! Welches dieser sog. embedded DBMS ist Lizenz-technisch am besten zum kommerziellen Vertrieb der SW geeignet? Was ist mit sqlite, gibts da Erfahrungen?

Bernhard Geyer 25. Aug 2009 14:03

Re: Datenbank in Delphi Programm integrieren
 
Zitat:

Zitat von benwen
Danke für die Hinweise! Welches dieser sog. embedded DBMS ist Lizenz-technisch am besten zum kommerziellen Vertrieb der SW geeignet? Was ist mit sqlite, gibts da Erfahrungen?

ADS Local Server ist problematisch (Serverlizenz nötig bei Betrieb über RemoteDeskto/Citrix).
SQLite war bei meinen Test ziemlich langsam.

ConstantGardener 25. Aug 2009 17:42

Re: Datenbank in Delphi Programm integrieren
 
Hallo benwen,

ich empfehle mal wieder NEXUSDB. Die embedded Variante ist Freeware und lässt sich voll in die exe compilieren. Sehr gute SQL-Unterstützung, schnell usw...

cu cg

mkinzler 25. Aug 2009 18:05

Re: Datenbank in Delphi Programm integrieren
 
Brauchst du MultiUser-Zugriff? Wenn nicht wäre auch FireBird embedded eine Option

Bernhard Geyer 25. Aug 2009 21:01

Re: Datenbank in Delphi Programm integrieren
 
Nexus-DB ist auch nicht ohne wenn es um Weiterverteilung geht (z.B. Player/Viewer-Anwendung die dein Kunde weiter verteilt). Hier fallen Lizenzkosten pro Kunde an (Jedenfalls wurde das mir vor ca. 2-3 Jahre angeboten)

ConstantGardener 26. Aug 2009 06:44

Re: Datenbank in Delphi Programm integrieren
 
@Bernhard

...laut Lizenzbdingungen für die embedded Version ist alles Royality Free. Also pro Entwickler eine Version, Verteilungg ohne weitere Kosten usw. Die einzige Ausnahme ist der AWE Server. Hier fallen Lizenzkosten je Maschine an, aber wer den einsetzt kann auch dafür zahlen. Deine Anwendung wurde damals vielleicht als "Entwicklungsumgebung" eingestuft ?

cg

Bernhard Geyer 26. Aug 2009 07:46

Re: Datenbank in Delphi Programm integrieren
 
Zitat:

Zitat von ConstantGardener
... Deine Anwendung wurde damals vielleicht als "Entwicklungsumgebung" eingestuft ?

Könnte sein. Auch wenn unsere Kunde nur Exe's von uns weiterverteilt (welche von Kunden befüllte DB-Inhalt verwenden).

olaf 27. Aug 2009 08:58

Re: Datenbank in Delphi Programm integrieren
 
Hallo,

noch ein Wort zu den Geschwindigkeiten der Datenbanken. Ich habe Advantage, TurboDB, Accuracer, Absolut Database, Embedde-Versionen SQLite und Firebird, auf z.B. 20000 Datensätze einfügen, Filtern und Suchen getestet.
Extrem langsam waren SQLite und Firebird, die brauchten circa 50 Sekunden zum Einfügen von 20000 Datensätzen. Die anderen Datenbanken waren circa 100 mal schneller. Beim Filtern war der Unterschied ungefähr Faktor 10-20. Accuracer war die negative Ausnahme, fast so lahm wie Firebird. Mit Advantage habe ich ein Projekt laufen mit 30 Clients. Super stabil und schnell. Läßt sich unter Delphi sehr einfach durch Komponenten einbinden.
Am schnellsten waren Absolut Database und Turbodb, wobei Turbodb nochmal in allen Tests schneller war. Bisher das Beste (mit speziellen Funktionen) was ich an Datenbank hatte, nicht billig aber habe ich sofort gekauft. Absolut Database hatte ich vorher, war damit zufrieden, sie erzeugte jedoch bei mir einen Indexfehler, den sich auch der Support nicht erklären konnte, deshalb habe ich das Vertrauen in diese Datenbank verloren, denn auf solche Fehler, kann ich zusätzlich zu meinen, gut verzichten.

Olaf

Bernhard Geyer 27. Aug 2009 09:17

Re: Datenbank in Delphi Programm integrieren
 
Ok, hier auch noch meine Testergebnisse:

Testablauf: Diverse Inserts/Selects/Updates/Deletes/Blob-Aktionen/...
Code verwendet wo parametrisierte Abfragen bzw. bei Selects die bei Desktop-DB's schnelleren SetRange/ApplyRange-Methoden

Vergleich:
- ADS Local Server 6.11 (Neue Version sind Lizenzrechtlich Problematisch das Remote Desktop Serverlizenz nötig macht).
- Absolute Database 5.18
- TurboDB 5.15
- SQLite 3,61 mit ZEOS 6.6.3
- Accuracter 4.3 bzw. 4.7Pre4
- H2 per JNI angebunden


Außen vor:
- MySQL Embedded (Lizenzrechtlich Problematisch bzw. sehr Teuer)
- MS SQL Everywhere (.NET Framework nötig)
- PostgreSQL: Keine Embedded Betrieb möglich
- Blackfish SQL: Lizenzkosten bzw. DB-Größe beschränkt. .NET nötig
- Firebird: Portierung Quellcode nicht mehr fertig bekommen im Test
- NexusDB: Lizenzkosten für unseren Anwendungsfall (Pro Kunde 150$ nötig da weiterverteilung von Exe mit DB)
- ElevateDB: Höherer Portierungsaufwand da etwas andere Logik bei Verwendung parametrisierter Abfragen. Portierung abgebrochen.


Ergebnis:
ADS: Im allgemeinen sehr schnell und stabil, jedoch aufgrund fehlender Unicode-Unterstützung Problematisch (UTF8-Codierung + Nachfilterung nötig -> Performance) sowie teilweise bei Like-Abfragen langsam

AbsoluteDB: Bugs in Like-Abfragen mit Unicode (Fehlerhafte Ergebnismenge), Updates sehr langsam

TurboDB: Performanceprobleme bei komplexen Abfragen über mehrer Tabellen mit JOINS. Einige ältere Versionen hatten fehlerhafte Behandlung von JOINS (Falsche Ergebnismenge).

SQLite: Performanceproblem bei Update's und Delets

Accuracer: Fehlerhaftes Handling von Parametrisierten Abfragen. Auch mit nachgelieferten Betaversionen nicht gelöst.

H2: In weiten teilen (trotz JNI + Java) sehr schnell. In eigenen Testszenarien konnte von der Performance nur ADS Local Server mithalten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 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