+Datenbanken -> welche ist geeignet
romy
- programmiertechnik
einen guten Morgen liebes Forum,
Ich hätte gern mal einen Rat.
Ich programmiere gerade eine Clientanwendung mit Datenbank und ich bräuchte mal Tipps für die Richtige.
Das Problem ist, dass die Kunden, die dieses Programm bekommen etwas problematisch sind (*g*) und nicht noch zusätzlich irgendwelche Dinge installiert haben wollen.
Welche Datenbank wäre nun am Vernünftigsten, bei folgenden Kriterien:
Sie muss keine grossen Leistungen bringen. Im Prinzip würde es mysql tun. (Eher eine Abfragebank, keine allzu Dynamische *g*)
Problem: ich müsste für mysql doch sicherlich einen Mysql-Server mitinstallieren oder habe ich da etwas falsch verstanden?
Lässt sich das alles auch über ODBC ansprechen und ist ODBC auf Windowsrechnern eigentlich Standardmässig eingerichtet?
ciao
romy
Halihallo romy
Das Problem ist, dass die Kunden, die dieses Programm bekommen etwas problematisch sind (*g*) und nicht noch zusätzlich irgendwelche Dinge installiert haben wollen.
Oha :-(
In welcher Sprache gedenkst du das Programm zu erstellen? - Es gibt z.B. in C die
Möglichkeit die mysql-library mit in das Programm einzulinken. Bei einer Script-Sprache
wirst du jedoch bei der Verwendung einer Datenbank immer die Datenbank installieren
müssen und ob dies dem Kunden zumutbar ist...
Welche Datenbank wäre nun am Vernünftigsten, bei folgenden Kriterien:
- Schnelligkeit
- möglichst kompatibel und auch auf Linuxsystemen findbar
- möglichst wenig Installieraufwand (Datenbankserver)
... und wahrscheinlich konstenlos? - Der Kunde will sich wahrscheinlich nicht noch eine
zweite Lizenz für Datenbanken kaufen, nehme ich an. Nun, kennen tue ich eigentlich nur
MySQL und PostgreSQL. Beide auf mehrere Systeme portierbar und vorallem in Abfragen
sehr schnell.
Problem: ich müsste für mysql doch sicherlich einen Mysql-Server mitinstallieren oder habe ich da etwas falsch verstanden?
Nein, das muss sein. Aber für fast alle Systeme gibt es binaries oder packages, die
sich ziemlich einfach installieren lassen. Zudem ist es bei diesen Datenbanken notwendig,
dass der mysql-server läuft.
Lässt sich das alles auch über ODBC ansprechen und ist ODBC auf Windowsrechnern eigentlich Standardmässig eingerichtet?
Bei MySQL über ODBC geht das ganz gut; für PostgreSQL gibt es bestimmt auch einen ODBC-
Treiber. Und ja, ODBC ist auf jedem Rechner installiert.
---
Falls du eine andere einfache Datenbank suchst:
SQLite, http://www.hwaci.com/sw/sqlite/, hier kannst du die library direkt in das
Programm einbinden. Ein Datenbankserver-Prozess gibt es nicht (was bei fast jeder anderen
Datenbank der Fall ist); hier ist es einfach ein in C eingebundene library. Die
Geschwindigkeit ist gut, aber die Sicherheit, Zuverlässigkeit, ... ist eventuell weniger
gegeben, als bei "grossen" Datenbanken. Ich habe die vor langer Zeit bei mir auf FreeBSD
installiert, aber getestet und verwendet habe ich sie nicht. Ich denke jedoch, dass dies
für ein clientseitiges Programm genau das richtige sein könnte; denn hier muss man nicht
noch einen Datenbankserver laden/installieren. Einfach die library mit in den Code linken
und fertig. Es gibt sogar ein Perl-DBD-Modul für SQLite ;-)
Viele Grüsse
Philipp
Hi Philipp,
In welcher Sprache gedenkst du das Programm zu erstellen?
in delphi
- Es gibt z.B. in C die
Möglichkeit die mysql-library mit in das Programm einzulinken.
Einlinken heisst, ich habe keinen zusätzlichen Installationsaufwand?
Lässt sich das alles auch über ODBC ansprechen und ist ODBC auf Windowsrechnern eigentlich Standardmässig eingerichtet?
Bei MySQL über ODBC geht das ganz gut;
muss dazu ein mysql-server laufen oder macht das das ODBC, ich habe mich noch nie so richtig damit beschäftigt und weiss gar nicht, wozu ODBC da ist und was es macht (sicher könnte ich es bei google finden -> ich guck gleich mal)
Falls du eine andere einfache Datenbank suchst:
SQLite, http://www.hwaci.com/sw/sqlite/, hier kannst du die library direkt in das
Programm einbinden. Ein Datenbankserver-Prozess gibt es nicht
das klingt eigentlich sehr gut, aber ich habe Schwierigkeiten zu verstehen, wohin ich das Ganze compilieren muss und ob es überhaupt auch mit Delphi geht.
vielen vielen Dank
ciao
romy
Halihallo romy
In welcher Sprache gedenkst du das Programm zu erstellen?
in delphi
BDE? - Borland Database Engine. Am besten zusammen mit der OpenSource Datenbank aus dem
selben Hause: InterBase. Ist ggf. auch eine Möglichkeit. Oder statt BDE gleich auf ODBC
mit z.B. ADO (ActiveDataObjects) zugreifen. Nun ja, BDE, ich habe wo gelesen, dass die
Entwicklung eingestellt wurde.
- Es gibt z.B. in C die
Möglichkeit die mysql-library mit in das Programm einzulinken.
Einlinken heisst, ich habe keinen zusätzlichen Installationsaufwand?
Ja, falls es möglich ist, die C-library zu kompilieren und daraus eine .dll/.lib zu
generieren, die du in das Delphi-Programm mit einlinkst, dann wäre die Datenbank gleich
fest mit deinem Programm "verknüpft". Der Kunde müsste sie sich nicht selber
installieren, da sie ein fester, bereits integrierter Bestandteil deines Programmes wird.
Aber bei den meisten Datenbanken, meistens sogar in der Embedded-Version, brauchst du
dennoch den Datenbank-Server (da bringt das Einbetten nicht viel).
Du musst entscheiden:
Willst du, dass der Kunde eine Datenbank installieren muss, oder nicht? - Wenn ja, dann
ist es für dich sehr einfach. Dann kannst du mit Delphi einfach ODBC benutzen. Falls
nein, hat es der Kunde einfach, aber du musst eine Datenbank finden, die vollständig
autark (also unabhängig) als embedded-Version funktioniert. Dies ist bei den _meisten_
Datenbanken nicht so, denn diese basieren auf einem Client-Server-Prinzip, mit anderen
Worten: Dein Programm wählt sich über eine Verbindung in die Datenbank ein und kann über
die Verbindung Anweisungen absetzen. "Problem" ist hier einfach, dass der Server laufen
muss und dies muss der Kunde veranlassen (+Installation).
Lässt sich das alles auch über ODBC ansprechen und ist ODBC auf Windowsrechnern eigentlich Standardmässig eingerichtet?
Bei MySQL über ODBC geht das ganz gut;
muss dazu ein mysql-server laufen oder macht das das ODBC, ich habe mich noch nie so richtig damit beschäftigt und weiss gar nicht, wozu ODBC da ist und was es macht (sicher könnte ich es bei google finden -> ich guck gleich mal)
Eine kleine Beschreibung:
ODBC ist eine Schicht zwischen Anwendungsprogramm und Datenbank. Da man auf jede
Datenbank anders zugreifen muss und jede auch unterschiedliche SQL-Dialekte und
Datentypen hat, schaffte M$ eine Art "Super-Datenbank", die über alle Datenbanken
bescheid weiss und die Abfragen und Daten konvertieren kann. So kannst du in dem Delphi
Programm z.B. auf eine Datenbank über die DSN zugreifen und brauchst dich nicht um den
SQL-Dialekt oder die Datentypen zu kümmern; diese sind zentral durch die ODBC definiert.
Falls du dann von der MySQL-Datenbank auf eine MSSQL oder Access-Datenbank umsteigst
(oder besser umgekehrt *g*), dann brauchst du in deinem Programm nur die DSN ändern (wenn
überhaupt).
Falls du eine andere einfache Datenbank suchst:
SQLite, http://www.hwaci.com/sw/sqlite/, hier kannst du die library direkt in das
Programm einbinden. Ein Datenbankserver-Prozess gibt es nicht
das klingt eigentlich sehr gut, aber ich habe Schwierigkeiten zu verstehen, wohin ich das Ganze compilieren muss und ob es überhaupt auch mit Delphi geht.
Das geht mir leider nicht anders. Irgendwie bekommt man über einen C-Compiler für Windows
zu einer .dll und diese kannst du dann mit dem Delphi-Programm linken. Aus dem Delphi-
Programm kannst du dann auf die Funktionen von SQLite zugreifen. Aber bitte frag nicht
mich, wie das funktioniert :-)
Viele Grüsse
Philipp
Hallo,
BDE? - Borland Database Engine.
Würde ich abraten, da, wie Du schon sagtest, das eine veraltet Technologie ist, und, abgesehen davon, ziemlich langsam.
Am besten zusammen mit der OpenSource Datenbank aus dem
selben Hause: InterBase.
Nur die Version 6.0 von Interbase ist OpenSource. alles davor und danach ist wieder ClosedSource. Firebird ist die OpenSource-Weiterentwicklung von Interbase. In der VErsion 1.5 sogar eine komplette Neuimplementierung in C++.
Ist ggf. auch eine Möglichkeit. Oder statt BDE gleich auf ODBC
mit z.B. ADO (ActiveDataObjects) zugreifen.
Mit ADO kann man zwar unter Delphi arbeiten, jedoch ist das nicht die bessere Variante.
Zum Rest bezüglich verlinken von irgendwelchen Bibliotheken kann ich nur abraten, weil es erheblich komplizierter ist, als der übliche Delphi-Weg.
Grüße
Klaus
Halihallo Klaus
BDE? - Borland Database Engine.
Würde ich abraten, da, wie Du schon sagtest, das eine veraltet Technologie ist, und, abgesehen davon, ziemlich langsam.
Am besten zusammen mit der OpenSource Datenbank aus dem
selben Hause: InterBase.
Nur die Version 6.0 von Interbase ist OpenSource. alles davor und danach ist wieder ClosedSource. Firebird ist die OpenSource-Weiterentwicklung von Interbase. In der VErsion 1.5 sogar eine komplette Neuimplementierung in C++.
Danke für die Infos. Ich bin in Sachen Delphi und Borland nicht auf dem laufenden, wie
es scheint :-)
Ist ggf. auch eine Möglichkeit. Oder statt BDE gleich auf ODBC
mit z.B. ADO (ActiveDataObjects) zugreifen.
Mit ADO kann man zwar unter Delphi arbeiten, jedoch ist das nicht die bessere Variante.
Was gibt es für Alternativen (ernstgemeint, ich kenne mich wenig aus und lerne gern
dazu)? - OK, zugreifen muss man eh über ODBC oder OLEDB, ADO dienen IMHO nur der
Datenrepräsentation.
Zum Rest bezüglich verlinken von irgendwelchen Bibliotheken kann ich nur abraten, weil es erheblich komplizierter ist, als der übliche Delphi-Weg.
Ja, ich halte auch wenig davon; aber das hängt damit zusammen, dass ich menschlich bin
und somit vor Unbekanntem immer Angst habe ;)
Der übliche Weg führt über ODBC/OLEDB/...? - Das Problem hier ist eben, dass man den
Kunden wohl kaum vor einer Installation einer Datenbank retten kann.
Viele Grüsse
Philipp
Hallo,
Mit ADO kann man zwar unter Delphi arbeiten, jedoch ist das nicht die bessere Variante.
Was gibt es für Alternativen (ernstgemeint, ich kenne mich wenig aus und lerne gern
dazu)? - OK, zugreifen muss man eh über ODBC oder OLEDB, ADO dienen IMHO nur der
Datenrepräsentation.
Naja, man arbeitet unter Delphi meist sowieso mit Datasets, und die befüllt man neuerdings über sog. DataSetProvidern, wobei die dann an ADO/ODBC, BDE oder direkte Anbindungen zu den Datenbanken aufgehängt sind. Bei Delphi 7 ist die von Borland bevorzugte Schnittstelle DBExpress mit Anbindungen für DB2, Informix, Interbase/Firebird, MSSQL, mySQL und Oracle. ANdere Treiber gibt's von Drittanbietern. Auch XML-Provider sind inzwischen vorhanden.
Das klingt alles etwas komplizierter als es in Wirklichkeit ist. .NET ist z.B. auf diesem Sektor doch um einiges weiter, aber hat dafür andere Fallen, in die man beinahe zwangsläufig tappt;-)
Der übliche Weg führt über ODBC/OLEDB/...? - Das Problem hier ist eben, dass man den
Kunden wohl kaum vor einer Installation einer Datenbank retten kann.
Wie ich schon sagte, kann man bei Interbase/Firebird die Installation relativ einfach in die GEsamt-Installation einbauen. ein paar Dateien auf den Rechner installieren und ein Service einrichten (wenn notwendig, sonst den Server im Hintergrund beim Anwendungsstart hochfahren) ist wirklich nicht so schwer.
Grüße
Klaus
Hallo,
- möglichst kompatibel
Kompatibel zu was?
Lässt sich das alles auch über ODBC ansprechen und ist ODBC auf Windowsrechnern eigentlich Standardmässig eingerichtet?
Grundsätzlich könnte Firebird [1] http://www.ibphoenix.com etwas für Dich sein.
1.) ziemlich einfach zu installieren (kann auch als embedded Version verwendet werden)
2.) einfahc zu warten (Datenbankfiles können auch zur not im laufenden Betrieb weggesichert werden).
3.) kann im Prinzip alles, was notwendig ist und noch einiges mehr
4.) Gibts für Windows, Linux MoacOS X, FreeBSD, Solaris, AIX und HP-UX
5.) ist kompatibel (zu Interbase *g*)
6.) Schnittstellen für praktisch alle relevanten/modernen Programmiersprachen bzw auch ODBC & Co.
7.) OpenSource
8.) Eine Vielzahl von Tools sind verfügbar (auch kostenfreie)
Äh, habe ich schon erwähnt, dass ich diese Datenbank für kleinere und mittlere Lösungen wirklich mag?
imho führt sie zu Unrecht ein Schattendasein, da sie wesentlich mehr kann als beispielsweise mxSQL und vor allem auch wesentlich einfacher zu bedienen ist.
Grüße
Klaus
[1] unglücklicherweise wurde der neue Mozilla-Browser gleich benannt. der ist aber hier nicht gemeint;-)
Hi Klaus,
- möglichst kompatibel
Kompatibel zu was?
zu Delphi
Linux/Windows
Grundsätzlich könnte Firebird [1] http://www.ibphoenix.com etwas für Dich sein.
1.) ziemlich einfach zu installieren (kann auch als embedded Version verwendet werden)
klingt gut, aber wo finde ich Infos zur embedded Version?
habe nur Installationsanweisungen gefunden.
danke vielmals
ciao
romy
Hallo,
- möglichst kompatibel
Kompatibel zu was?
zu Delphi
Linux/Windows
Bingo, Firebird ist Dein Ding. Firebird ist ein Abgelger der Opensource-Version von Interbase, die von Borland vertrieben wird. Delphi und Kylix haben an sich schon eine gute Anbindung zu Interbase/Firebird integriert. Es gibt auch mit IBObjects eine Delphi-Bibliothek, mit der Du weit mehr machen könntest als nur die Datenbank abzufragen (leider nur unter Windows).
Mit etwas Vorsicht und einiger Planung im Vorfeld (Einsatz von CLX-Komponenten anstelle der 'alten' VCL-Komponenten) kann man auhc recht gut Programme unter Delphi 7 bzw. Kylix 3 schreiben, welche zumindest Source-kompatibel sind. Das Projekt einfach unter Windows mit Delphi schreiben, dann auf einen Linux-Rechner kopieren und dort nochmals mit Kylix kompilieren.
Es gibt zwar einige Fallen, aber wenn Du eben Delphi 7 und Kylix 3 benutzt, dann sollte es doch ein leichtes sein, die ANwendungen für beide Plattformen zu entwickeln (hab' ich schon gemacht).
Grundsätzlich könnte Firebird [1] http://www.ibphoenix.com etwas für Dich sein.
1.) ziemlich einfach zu installieren (kann auch als embedded Version verwendet werden)
klingt gut, aber wo finde ich Infos zur embedded Version?
habe nur Installationsanweisungen gefunden.
Außer in der unterschiedlichen Installationweise und der beschränkung auf den lokalen Rechner verhält sich die embedded Version gleich wie die Server-Version. Wobei ich sagen muß, daß die Server-Variante so einfach zu installieren ist (könnte auch das Anwendungssetup mi erledigen) und einen so geringen Systemverbrauch, dass ich Dir empfehlen würde, gleich mit damit zu arbeiten.
Ich habe vor einiger Zeit bei einem CRM-Projekt mitgearbeitet, wobei die Anwender sich das ganze System mit einem einzigen Setup-Programm installieren konnnten. Und dabei wurde auch Interbase 6.0 eingesetzt.
Wie gesagt, gerade wenn Delphi eingesetzt wird, solltest Du Dir Interbase/Firebird genauer ansehen.
Grüße
Klaus
Halihallo romy
BTW: Warum verwendest du nicht einfach Access? - Ist auf den meisten Windows-Rechnern
installiert, lässt sich über ODBC leicht mit Delphi verwalten. Die meisten Kunden haben
Access bereits installiert. Man braucht nicht mit "embedded" und Linken zu spielen.
Natürlich, auf Linux ist dann nix mehr zu wollen, aber ziehst du es in Betracht das Ding
auf Kylix/Linux zu portieren?
Viele Grüsse
Philipp