Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Welche Datenbank (https://www.delphipraxis.net/96532-welche-datenbank.html)

whiteholly 26. Jul 2007 01:53

Datenbank: das ist die Frage • Zugriff über: noch nicht klar

Welche Datenbank
 
Hallo liebes Forum

Ich hoffe diese Frage wurde noch nicht gestellt, aber die Suche hat nichts ergeben.


Ich möchte ein Programm schreiben, dass für eine öffentliche Einrichtung "Einträge" verwaltet.
Die Anforderung ist: nur ein Datenbestand, von dem Clients (mein Programm) zugreifen können.

Toll wäre es natürlich, wenn die "Einrichtung" einen DB-Server hätte... dem ist aber nicht so :wink:


Und nun die Frage: welche Datenbank (oder Engine) ist dafür geeignet?
Sie müsste halt direkt in Dateien schreiben.... wichtig ist nur, dass sie sich nicht als Service, oder ähnlich "fest" installiert, sodern eher "out of the box" funktioniert.

Wäre ADO und Access ne Idee, oder gibt es da vielleicht ne Open Source Datenbank da ich natürlich mit Lizenzen aufpassen muss.

P.S. Gleichzeitiger Zugriff wäre natürlich perfekt, aber nicht unbedingt erforderlich.


Würde mich über jede Idee oder Anregung freuen.


mfg WhiteHolly

Bernhard Geyer 26. Jul 2007 06:21

Re: Welche Datenbank
 
Es gibt auch "richtige" Datenbankserver als Nicht-Installations-Version (MySQL, Interbase, Firebird, ...). Es kommt noch darauf an wieviel Geld du ausgeben kannst bzw. willst. Bei 0€ ist die Auswahl natürlich viel stärker eingeschänkt als wenn du eine Entwicklerversion kaufen kannst/darfst die du dann kostenlos verteilen darfst.

Falls du ein paar € ausgeben kannst ist die Auwahl riesig und ohne genauere weiteren Anforderungen wird jede dieser DB's geeignet sein.

hoika 26. Jul 2007 07:09

Re: Welche Datenbank
 
Hallo,

wenn du Ärger vermeiden willst,
nimm keine Desktop-Datenbank,
einmal das Nez kurz weg -> Daten ev. futsch

Wenn keine DB-Server da ist, muss einer angeschafft werden.

Ansonsten, siehe mein Vorredner.

Heiko

Bernhard Geyer 26. Jul 2007 07:23

Re: Welche Datenbank
 
Zitat:

Zitat von hoika
wenn du Ärger vermeiden willst,
nimm keine Desktop-Datenbank,
einmal das Nez kurz weg -> Daten ev. futsch

Wir haben vor allem mit Access probleme (gehabt - DB ist nicht mehr im Betrieb). Regelmäßig war die DB zerschossen. Und je mehr User auf einer Access-DB gleichzeitig zugreiffen desto schneller ist sie zerschossen.

RavenIV 26. Jul 2007 08:39

Re: Welche Datenbank
 
Ich kann mich da nur anschliessen.

Du hast ja quasi ein verteiltes Umfeld.
Die User haben alle ihre Stationen und die Daten sollen zentral verwaltet werden.

Es gibt prinzipiell zwei Möglichkeiten.

a) eine sogenannte Desktop-Datenbank (BDE/Paradox, Access, usw.)
Hier liegen die Daten (meistens) in einem File auf dem zentralen Server.
Die Clients greifen eben mit der Desktop-Datenbank auf die Daten zu.
Natürlich kann da nur immer ein User gleichzeitig zugreifen, weil die Clients ja nichts voneinander wissen.
BDE/Paradox kann zwar z.B. gewisse Blockierungen aktivieren, das ist aber auch kein sicherer Mechanismus.
Auf jeden Fall ist die Chance auf Datenverlust bei allen Kandidaten sehr hoch.

b) Ein DB-Server (MySQL, FireBird, PostgreSQL, MS-SQL, Oracle, usw.)
Der DB-Server (eigentlich das DBMS) verwaltet die Daten und die Zugriffe.
Die DBMS unterscheiden sich in der Funktionsvielfalt nicht grossartig.
Und Komponenten für den Datenzugriff gibt es für Delphi auch jede Menge.
Lediglich der Preis der DBMS ist interessant.
Firebird ist kostenlos.
PostgreSQL ist kostenlos.
MySQL ist kostenlos für privat, man kann aber mit der deutschen Niederlassung verhandeln.
MS-SQL kosten Geld.

Nun musst Du halt überlegen, was Du brauchst...

whiteholly 26. Jul 2007 13:34

Re: Welche Datenbank
 
Erstmal vielen Dank für die netten und informationsreichen Antworten.

Ich habe mich noch einmal erkundigt und ein Datenbank-Server ist leider nicht möglich...
Auch wurde mir gesagt, dass es kaum vorkommen sollte, dass zwei User gleichzeigig arbeiten wollen (es wäre nur ein Client aktiv im Einstatz, zwei andere nur als "nice-to-have" um "mal eben schnell was nachsehen zu können")

Sprich das ganze endet wohl oder übel in einer Desktop-Datenbank.
Das Problem ist auch, dass ich kein Geld für die Datenbank ausgeben kann.

Ich einem früheren (Java) Projekt habe ich die Datenbank hsql benutzt, welche auch als Desktop-Datenbank funktionierte und sehr sicher lief.
Die Datenbank erlaubte nur eine Connection, weitere wurden verweigert.
Dieses Prinzip könnte ich auch hier anwenden.

Vielleicht werde ich hsql wieder benutzen. HSQLDB
Was meint ihr dazu?


mfg Whiteholly

Bernhard Geyer 26. Jul 2007 13:48

Re: Welche Datenbank
 
[quote="whiteholly"]Ich habe mich noch einmal erkundigt und ein Datenbank-Server ist leider nicht möglich...

Zitat:

Zitat von whiteholly
Auch wurde mir gesagt, dass es kaum vorkommen sollte, dass zwei User gleichzeigig arbeiten wollen (es wäre nur ein Client aktiv im Einstatz, zwei andere nur als "nice-to-have" um "mal eben schnell was nachsehen zu können")

Hast du das schriftlich? Wenn nicht wird der Multiuser-Zugriff 2 Tage vor der Abnahme gefordert und als katastrophalen Mangel der SW hingestellt.

Zitat:

Zitat von whiteholly
Das Problem ist auch, dass ich kein Geld für die Datenbank ausgeben kann.

Kann? Arbeitest du wohl für Lau (1€ Job bzw. Praktikum dort) oder sind dort so unwissende IT-Verantwortliche am Werk? Du könntest natürlich dein Programm so aufsetzen das du sehr einfach die verwendete DB wechseln kannst. Ist halt mehr Aufwand.

mkinzler 26. Jul 2007 13:58

Re: Welche Datenbank
 
Der Preis für eine Datenbank ist belanglos, wenn diese nichts kostet.

whiteholly 26. Jul 2007 13:59

Re: Welche Datenbank
 
Ich kann ja mal kurz erklären in welcher Situation ich mich befinde :wink:

Zur Zeit habe ich (mehr oder weniger) viel Freizeit... Abi gerade hinter mir, bald Zivildienst.
Ich beschäftige mich sehr gerne mit Programmierung und wollte mal wieder in eine neue Programmiersprache "hinein schnuppern".

Leider hat mir ein richtiges Projekt gefehlt um das ganze Praxisnah durchzuführen. Durch Zufall bin ich dann auf diese öffentliche Einrichtung gestoßen.
Ich arbeite nur aus Spass, erhalte natürlich später ein "paar Euro"... aber worum es mir eigentlich geht ist praxisnahe Erfahrungen zu sammeln und ein bisschen Delphi zu erlernen.

Von daher würde ich mich freuen, wenn ich eine Datenbank zur Verfügung hätte, die mich nichts kostet.


mfg Whiteholly

mkinzler 26. Jul 2007 14:06

Re: Welche Datenbank
 
Zitat:

Firebird ist kostenlos.
PostgreSQL ist kostenlos.
MySQL ist kostenlos für privat, man kann aber mit der deutschen Niederlassung verhandeln.
Von MSSql, DB2 und Oracle gibt es ebenfalls kleine kostenlose Versionen.

RavenIV 26. Jul 2007 14:07

Re: Welche Datenbank
 
Wie wäre es mit Firebird Embedded?
Da hast Du eine DLL oder eine LIB. Die LIB kannst Du direkt in deine EXE einkompilieren.
Die Datenbank gibst Du dann mit \\Server\PfadZurDatenbank\DatenbankFile an.
Zugreifen kannst Du z.B. mit den ZEOS-Komponenten.

whiteholly 26. Jul 2007 14:16

Re: Welche Datenbank
 
War gerade auch auf Firebird Embedded gestoßen.

Hört sich sehr gut an. Ich werde es mal damit testen.


mfg Whiteholly

trashcandesign 26. Jul 2007 16:33

Re: Welche Datenbank
 
Immerhin kannste mit Firebird Embedded sicherstellen, dass nur einer gleichzeitig damit arbeitet. :wink:

Die Embedded-Version hat den Nachteil, dass die DB nur lokal liegen darf, also noch nicht einmal auf einer Freigabe im Netzwerk.
Damit sollte das für deinen Zweck (mögliche Mehrbenutzer) wohl gestorben sein.

Ich habe für unser Projekt auch ne Weile rumgeschaut, ob ich eine DB ohne Installation bekomme, auf die mehrere gleichzeitig zugreifen können.

Aber das einzige was man dafür finde ist sowas wie Access und dessen Nachteile wurden hier schon sehr oft diskutiert.

holliesoft 26. Jul 2007 17:31

Re: Welche Datenbank
 
Hallo,

wie wäre es mit SQLite? Ich benutze es für ein kleines Tool auf der Arbeit (Verwaltung von Informationen zu Fehlerreports). Gleichzeitiger Lesezugriff ist kein Problem, nur gleichzeitig schreiben geht nicht.
Dies sollte aber bei 2-3 Arbeitsplätzen kein Problem darstellen, denn die Wahrscheinlichkeit, dass genau in der selben Sekunde 2 oder 3 von 3 Usern einen Datsatz bearbeiten/speichern, ist meiner Meinung nach sehr gering.

Ich benutze die Unit SQLiteTable3 für den Zugriff. Zwar nicht so ganz komfortabel wie mit datensensitiven Komponenten (TDataset), aber für mich reicht es :-)

mkinzler 26. Jul 2007 17:47

Re: Welche Datenbank
 
SQLite hat aber das selbe Problem wie FB embedded. warum eigentlich ne embedded und kein richtiger Server?

holliesoft 26. Jul 2007 18:09

Re: Welche Datenbank
 
Zitat:

Zitat von mkinzler
SQLite hat aber das selbe Problem wie FB embedded.

Welches Problem meinst Du konkret? Zugriff übers Netz? Das funktioniert einwandfrei mit SQLite.

Wie gesagt, ich habe eine Anwendung mit SQLite als Datenbank auf der Arbeit am Laufen. Mehrere User können problemlos gleichzeitig lesend auf die DB zugreifen. Das sieht SQLite auch vor, nachzulesen auf SQLite.org.
Das gleichzeitige Schreiben geht nicht.
Zitat von SQLite.org:

Zitat:

Multiple processes can have the same database open at the same time. Multiple processes can be doing a SELECT at the same time. But only one process can be making changes to the database at any moment in time, however.
weiter:

Zitat:

We are aware of no other embedded SQL database engine that supports as much concurrancy as SQLite. SQLite allows multiple processes to have the database file open at once, and for multiple processes to read the database at once. When any process wants to write, it must lock the entire database file for the duration of its update. But that normally only takes a few milliseconds. Other processes just wait on the writer to finish then continue about their business. Other embedded SQL database engines typically only allow a single process to connect to the database at once.

Hansa 26. Jul 2007 20:09

Re: Welche Datenbank
 
Zitat:

Zitat von mkinzler
SQLite hat aber das selbe Problem wie FB embedded. warum eigentlich ne embedded und kein richtiger Server?

Schon mal Demos verschickt ? Was wäre, wenn auf dem Hauptsystem bereits der FB-Server 1.0 oder sonst einer bereits installiert ist ? Dann wird ein neuer installiert, z.B FB 2.0. Wer dann lediglich sein Programm nicht verkäuft, der kommt noch mit blauem Auge weg. :twisted: Wie siehts aus mit CDs ? Manche Leute scheuen sich zurecht davor, ein Programm auf die Festplatte zu installieren, die Registry nach "Windows-Standard" zu verschandeln usw. Das geht alles nur sauber mit embedded. Ist klar, dass sowieso ein Server installiert wird, dann besteht die Frage sogar immer noch. Kann die installierte DB tatsächlich ohne weiteres ersetzt werden ? :shock:

mkinzler 26. Jul 2007 23:47

Re: Welche Datenbank
 
Man kann auch einen Server verwenden ohne ihn (als Dienst) zu installieren

Hansa 27. Jul 2007 00:17

Re: Welche Datenbank
 
Was hat denn das mit Diensten zu tun ? Bei FB weiß ichs genau : es ist standardmäßig alles in den Checkboxen bei der Installation (und das als Dienst) so abgehakt, dass eine vorherige Installation überschrieben wird. Du glaubst ja wohl nicht ernsthaft, dass ein DAU in der Lage ist eine 2-malige Frage "Sind sie sicher" zu lesen und notfalls mal N zu klicken ? :lol: Nene, bin gerade in genau dieser Situtation : keiner weiß, welche DB vorhanden ist und ich werde einen Teufel tun und dem noch den FB-Server schicken (hat allerdings mit FB nur bedingt zu tun) um eventuell die ganze Fa. lahmzulegen. :wall: Wenn der jetzt mein Programm täglich einsetzt, es läuft bereits ein Jahr und dann kommt einer an mit Tips aus der DP, der meine Installation kaputt macht, na dann ist zumindest klar wohin die Rechnung mit den Fahrtkosten, der Arbeitszeit und der Hotelübernachtung hingeht. :mrgreen:

whiteholly 27. Jul 2007 00:21

Re: Welche Datenbank
 
Ich habe jetzt ein kleines Test-Programm geschrieben um die Datenbank SQlite zu testen.

Die Datenbank gefällt mir sehr gut. Mit dem hier im Thread vorgeschlagenen Wrapper ist das ganze ziemlich simpel.
Freigaben gehen nicht, aber mit Netzlaufwerk läuft alles wunderbar...

Und das ganze sind nur 3 Dateien... Client, Datenbank-Datei, Datenbank-dll.
Kopieren oder direkt von Netzlaufwerk ausführen geht wunderbar :wink:
Sprich: keine Installation notwendig.

Das Lesen von verschiedenen Clients (10stck) ging ohne Probleme. Auch konnte ich die Datenbank nicht zerschießen, als ich versucht habe gleichzeitig zu schreiben... (was ich aber nicht ausschließen kann, aber es ist mir nicht gelungen :-D ).

mfg Whiteholly

mkinzler 27. Jul 2007 08:23

Re: Welche Datenbank
 
@Hansa: Ich redete von nicht installieren. man kann den server auch mitliefern und manuell als Programm auf abweichenden Port starten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr.

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