AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Neues Datenbank-Backend für meine Anwedung - Welches?

Neues Datenbank-Backend für meine Anwedung - Welches?

Ein Thema von berens · begonnen am 28. Mai 2020 · letzter Beitrag vom 3. Jun 2020
Antwort Antwort
Seite 1 von 2  1 2   
berens

Registriert seit: 3. Sep 2004
401 Beiträge
 
Delphi 2010 Professional
 
#1

Neues Datenbank-Backend für meine Anwedung - Welches?

  Alt 28. Mai 2020, 14:48
Datenbank: ? • Version: ? • Zugriff über: Delphi Komponenten
Hallo zusammen,
wie aus meinen vorherigen Beiträgen zu sehen ist, verwendet meine Software (CMS für Infobildschirme) als Datenbank die guten alten .mdb-Dateien: das Datenbankformat von Access 2003.

Dieses Format wird zwar viel belächet (auch in Anbetracht des abgelaufenen Supports und des Alters), aber bei sogut wie allen Kunden kam es gut an, dass wir unsere "Netzwerk"-Software direkt ohne Server und Portfreigaben in der Firewall in Betrieb nehmen können, einfach nur durch den gemeinsamen Zugriff auf die Datenbank über ein Netzlaufwerk. Bei vielen Kunden wäre die Installation eines *SQL-Servers für nur zwei Geräte [zu] viel Aufwand, bei anderen -großen- Kunden müssten erst intern Anträge geschrieben werden etcetc (Projektverzögerungen / -kosten), und mit dieser rein dateibasieren Lösung können eigentlich Alle ganz gut leben. Auch werden -im Vergleich zu den neueren Access-Datenbanken (.accdb) und MySqL keine Drittanbieterprogramme benötigt (Access Runtime blabla, MySQL ODBC Treiber (für TAdoConnection!), ...) Ein entscheidender Vorteil (war) auch, dass man die Datenbank mit einem USB-Stick auf einen Infobildschirm aufspielen kann, der über keinerlei Netzwerkanbindung verfügt.

Jedoch leben wir nun in 2020, und aktuelle Probleme zwingen uns, uns schon vor einer neuen Hauptversion mit der Migration auf ein neues Datenbanksystem zu beschäftigen.

Bei Access-Datenbanken treten gelegentlich folgende Probleme auf:

1) Datenbank ist nach dem Schreiben in inkonsitentem Zustand und kann nicht über MDAC/OLEDB/JET repariert werden, nur direkt über Access. Beim Kunden steht "alles still" weil bis zum Reparieren kein Infobildschirm mehr auf die Datenbank zugreifen kann.

2) Datenbank wächst rasant an (dazu gibt es auch Themen hier im Forum): Die Transaktionsprotokolle sorgen dafür, dass die Datenbank innerhalb eines Tages um ~60 MB anwächst, und das, obwohl in der konkreten Situation "nur" alle 15 Minuten ca. 100 Einträge gelöscht und neu geschrieben werden. Nach einigen Tagen erreicht Diese theoretisch 2GB und kollabiert dann (bekanntes Problem). Datenbank "reparieren und komprimieren" in Access hilft - bis zum nächsten Tag. Zudem kann die Datenbank nicht repariert und komprimiert werden, da/sobald ein weiteres Gerät über Netzwerk darauf zugreift, was aber eigentlich immer der Fall ist, da die Infobildschirm eigentlich den ganzen Tag laufen.

3) Aktuelles Problem mit den Mai 2020 Windows Updates, wobei auch auf Einzelplatzinstallationen Windows die Datenbank beim Schreiben einer einzigen Zeile komplett "zerschießt", weil irgendwass mit dem generellen Schreibzugriff von Anwendungen auf die Festplatte geändert wurde.

4) Problem, wenn die Netzlaufwerks-Freigabe (SMB) mit der Datenbank auf einem Windows 2008/2016 Server liegt: Es können nicht mehr als zwei Leute gleichzeitig die Anwendung geöffnet haben. Unbekannte Ursache / Lösung.


Ich höre schon eure Einwände: Access-Datenbank mit Multiuser gleichzeitig? Die AdoConnection den ganzen Tag geöffnet? Kunden arbeiten über Netzlaufwerk (ggf. sogar über VPN!) mit einer .mdb-Datei? "Ohje-Ohje". Ja, geht eindeutig professioneller, ist aber -ganz ehrlich-: Pflegeleicht und hat bis dato immer gut geklappt - Ausnahmen siehe Oben.

Hier im Forum wird ja im "pinned" Thema mehrere Datenbanksysteme für Delphi vorgestellt. Jetzt stehen natürlich auf den Webseiten und den Produktdatenblättern viele tolle Sachen drin. Ich brauche 4-5 Tabellen. In der Größten stehen max. 300 Zeilen mit ~10 String-Spalten, die meisten anderen Tabellen sind i.d.R. leer - das ist also wohl kein Kriterium für die Suche. Was mich interessiert ist der Erfahrungswert, den Ihr mit einem bestimmten Datenbanksystem habt, und wie sich das auf meine u.g. Punkte anwenden lässt.

Aktuell arbeite ich mit TAdoConnection und eigentlich nur TAdoQuery, keine Stored Procedures oder Ähnliches. Das Programm ist -sagen wir- "historisch gewachsen" und ich müsste nun natürlich an vielen Stellen Alles, was mit Datenbanken zu tun hat, auf eine neue Komponente/Abfragesprache anpassen. Sei es drum, muss halt.

Generell spiele ich ja mit dem Gedanken, einen Microsoft SQL Express Server zu verwenden. Die Ansteuerung im Programm wäre fast unverändert, die Migration bei den Kunden "machbar". Leider bin ich da ein wenig ein "gebranntes Kind" weil ich im Leben schon viele, viele Probleme mit SQL-Express hatte, z.B. wenn diese als Datenbanken für OnPremise-Virenscanner (Symantec, Sophos Antivirus) zu Einsatz kamen: Ein riesen Trara bis das Alles installiert ist, dann gibt es schon eine Instanz "SQL-Express", dann hat die neue Instanz andere Portnummern etc., Backup und Wiederherstellung -ohne weitergehende Beschäftigung damit- scheinbar auch größere Aktion. Zunächst Alles nur Vorurteile von mir für Versionen von vor > 10 Jahren, vielleicht kann man ja jemand dies bzgl. eines Besseren belehren?
Auch macht mir Sorgen, ob/wie einfach ich dann auch Daten mal von einem PC auf einen anderen Migrieren kann (eigentlich ja wieder nur das Backup/Restore "Problem" - wahrscheinlich heutzutage zwei Klicks und alles ist gut), bzw. falls der Kunde eine merkwürdige Situation in unserem CMS erreicht hat, wäre es auch gut, wenn er uns "mal schnell" die Datenbank zusenden kann (Aktuell: .mdb als .zip in den E-Mail Anhang, mit MS SQL Express denke ich mal ein wenig aufwändiger, aber machbar).

Generell bin ich auch offen für anderen Datenbanksysteme. Ich bin nach wie vor eigentlich tatsächlich ein Fan von dateibasierten Datenbanken, aber bei jedem Datenbankanbieter habe ich wieder gewisse Bedenken, und ich wäre euch sehr dankbar, wenn ihr sie ausräumen würdet:

1) Folgekosten: Hier muss ich den "Pinned" Thread im Detail durchlesen, speziell wegen Lizenzen etc. Mein zukünfiges Datenbanksystem sollte idealerweise mit dem Kauf von Delphi von für den Einsatz bei allen Kunden lizenziert sein ("Royality Free"?), oder generell so kostenlos sein, dass ich es mit meinem Installer ausliefern darf, ohne Verklagt zu werden, ohne meinen Quellcode komplett offenlegen zu müssen oder einen Betrag von X € pro Installation bezahlen zu müssen. Dito für die Delphikomponenten, die ich dann in meiner Anwendung einsetze. Einmaliger Kauf bis in den 4stelligen Bereich wäre in Ordnung.

2) Kompatibilität: Meine Software ist (und bleibt?) ein reines Windows Programm. Das Datenbanksystem muss also auf Windows laufen.

3) Stabilität: Siehe Probleme oben. Die Datenbank darf nicht so dermaßen anwachsen, dass ich Sie /nur/ im Exklusiv-Zugriff komprimieren kann. Auch sollte sie nie in einen "inkonsistenten Zustand" verfallen, den die Vermittlerkomponente von Delphi (Datenbankschicht) nicht von alleine -automatisch- reparieren kann. Könnte mir vorstellen, dass das für rein dateibasierte Datenbanken schon technisch nicht möglich ist. Reine XML-Dateien wäre für die paar wenigen Daten schon ne feine Sache, aber dort habe ich auch wieder "Angst", dass schon ein falsch interpretiertes "<" ausreicht, und die komplette Datenbank zu zerschießen.

4) "Threadsicherheit": Wenn ich in einem Thread eine Datenbankverbindung herstelle und etwas lese/schreibe, muss sich das in keiner Weise in Echtzeit auf Abfragen in anderen Threads und den Hauptsthread auswirken. Wenn ich im Thread was schreibe, erwarte ich eine ordnungsgemäß ge"post"ete Zeile, deren AutoIncrement-Wert für "ID" korrekt ist, und nach dem Schreibvorgang die Datenbank garantiert immernoch in einem konsistenten Zustand ist. Es sollen/dürfen keine Exceptions auftreten, wenn zwei Threads mit der selben Tabelle arbeiten (jeweils nur abgeschlossene Operationen, immer nur eine Zeile wird verändert, keine Änderungen an der Tabellenstruktur im Thread).

4) Administrator-Freundlichkeit: Interessenten und Administratoren möchten unsere Software natürlich auch mal auf dem eigenen PC schnell in Betrieb nehmen. Bei MS SQL Express stelle ich mich das schon aufwändiger -dennoch machbar- vor. Dennoch sollte der Server schnell installiert sein, ohne tiefergehende Konfiguration. In unserem Programm darf dann max. IP-Adresse/Port, User, Passwort angegeben werden; die Software legt dann Tabelle und Daten an. Sollte jede Software können? Brauchen manche MEHR Konfiguration?

5) Keine erzwungenen Callbacks: Mit Delphi 2010 asynchron zu der eigentlichen Prozedur selbsgebastelt JSON-Antworten auszuwerten, ist ein Graus. Ich sollte schon alles in einem rutsch schreiben können, z.B. eine Zeile schreiben, eindeutige ID auslesen, in der anderen Tabelle verweis auf diese ID machen etc. Sollte Standard sein, kann aber auch sein, dass das halt wie in diesem Beispiel nicht überall Standard ist? (Mit neuem Delphi dürfte auch JSON einfacher sein...)

6) Multi-User: Hier kommt nun ein Knackpunkt: Das Datenbanksystem sollte problemlos mit 15 Clients zurecht kommen, die exemplarisch 1x die Minute auf eine Abfrage 20 Zeilen zurückgeliefert bekommen. Idealerweise sollte das auch mit bis zu allerhöchstens 50 Clients gehen, die durchschnittliche Installation kommt auf 1-2 Clients. Auch sollte es es kein Weltuntergang sein, wenn ein (1) Client im Netzwerk über eine ~2 MBit VPN Leitung angebunden ist und etwas abfragen will (wie gesagt: ~20 Zeilen als Ergebnis der Abfrage).

7) Keine "Exoten". Das neue Datenbanksystem sollte "generell bekannt sein" und die Verwendbarkeit auch in 10 Jahren sicher sein (Ansteuerbarkeit mit Delphi --> Komponenten; Backend/Server installierbar auf dem dann jeweils aktuellen Windows OS).


Mir ist bewusst, dass Ihr mir mit Antworten zu dem Thema viele, viele Stunden Recherchearbeit zu den einzelnen Anbietern abnehmt, was eigentlich unverschämt von mir ist auszunutzen. Aber viele Sachen -gerade bei der Programmierung- stecken im Detail, und bevor ich jetzt "laut Prospekt" das scheinbar am Besten für mich passende heraussuche, und nachher -wenn die Probleme da es- es heißt "Hättest du mal vorher gefragt" - frage ich nun halt vorher. Vielleicht wisst ihr ja zu den einzelnen Punkten K.O. Kriterien, wo Datenbanksystem X schon generell rausfliegt.

Vielen Dank im Voraus!
Delphi 2010 32-Bit auf Windows 10 Pro 64-Bit
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
469 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Neues Datenbank-Backend für meine Anwedung - Welches?

  Alt 28. Mai 2020, 16:27
Also ich würde Firebird nehmen. Ist kostenlos, einfach zu installieren, wartungsarm und auch der Zugriff über Netzwerk erfordert nur eine Freigabe in der Firewall. Mehrere Zugriffe sind auch kein Problem; natürlich können nicht zwei Clients gleichzeitig eine Datensatz bearbeiten aber das geht wohl in keiner Datenbank.

Weiter Infos findet man z.B. bei IBExpert.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Blackpit

Registriert seit: 27. Feb 2019
75 Beiträge
 
#3

AW: Neues Datenbank-Backend für meine Anwedung - Welches?

  Alt 28. Mai 2020, 16:45
Also ich würde Firebird nehmen. ...
Schließe mich an, erfodert ein wenig Einarbeitung.
Bei der genannten Konstellation würde aber der Umzug auf einen MS-SQL(Express würde vmtl. reichen) möglicherweise weniger Aufwand machen.

Gruß BP
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
813 Beiträge
 
#4

AW: Neues Datenbank-Backend für meine Anwedung - Welches?

  Alt 28. Mai 2020, 17:28
Mein Vorschlag: Access Datenbank mit dem "SingleFile.MDB" einfach beibehalten!

Da wo das MDB File physisch liegt, arbeitet die Applikation mit aktiviertem "TMS-RemoteDB-Server".
Auf allen anderen Clients arbeitet die Applikation via TMS-RemoteDB-Connection (RemoteDatasets/Querys... logisch & funktional im Prinzip 1:1 austauschbar mit ADOconnection, ADOdataset, ADOquery).

Wirklich langsamen ext. Clients kann man via Batch basierter Autoreplikation ("TMS-Echo") eine quasi lokale DB zum arbeiten bieten, und diese die Replikation läuft via Push/Pull Commits oder extra SyncRequest bei Bedarf.

Speziell wenn es bisher durchaus möglich&üblich mal fix das komplette DB-File gepackt hin&her zu schicken oder im Support so selbst schnell zwischen verschiedenen Mandanten-MDB-Files wechseln zu können... bietet sich das TMS Zeug auch schon ohne Nutzung von deren ORM durchaus an.
(~400€ will TMS dafür als "TMS Business Subscription" fürs erste Jahr haben, ab 2. Jahr dann jeweils 30% für die Update&Support-Verlängerung. Keine weiteren sonstigen Lizenz oder Installationskosten.)


https://tmssoftware.com/site/remotedb.asp
https://tmssoftware.com/site/tmsecho.asp
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
29 Beiträge
 
#5

AW: Neues Datenbank-Backend für meine Anwedung - Welches?

  Alt 28. Mai 2020, 17:37
Ich traue mich mal, das Open Source Framework mORMot ins Spiel zu bringen. Eine ausführliche Hilfe findest du hier:
https://synopse.info/files/html/Synopse mORMot Framework SAD 1.18.html

Weitere Informationen findest du hier:
https://synopse.info/fossil/wiki?name=Downloads
https://synopse.info/forum

mORMot musst du nicht installierten. Es reicht aus, die entsprechenden Bibliothekspfade einzufügen.

Deine Anforderungen sind so gering, dass du alles mit dem integrierte ORM und embedded SQLite3 locker erledigen kannst. Um die Einbindung der SQLite Engine musst du dich nicht kümmern, wird automatisch in deine EXE mit einkompiliert. Du kannst dann gleich auf eine RESTful/SOA architecture umsteigen (klingt viel schlimmer, als es in Wirklichkeit ist). Deine eigentliche Arbeit ist mit mORMot schnell erledigt, das Problem dürfte sein, dich in mORMot einzuarbeiten. Es steht eine ausführliche Hilfe, viele Beispiele und ein freundliches Forum zur Verfügung.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
401 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Neues Datenbank-Backend für meine Anwedung - Welches?

  Alt 28. Mai 2020, 20:15
Vielen Dank zunächst für die bisherigen Antworten.

Firebird klingt ja generell erstmal interessant, und die gemeinsame Geschichte mit Interbase und Delphi ist generell ein gutes Zeichen für die Integrierbarkeit in und Migriegbarkeit für meine Anwendung. Da beide ja den selben Ursprung haben dachte ich eben flux, dass ich dann lieber die "Professionelle" Lösung von Interbase nehme, die bei Delphi mit dabei ist (je nach Version?), aber dann habe ich erst gesehen, was für Kosten da schon schnell für eine einfache Installation beim Kunden entstehen können, da muss ja "alles" pro-Kunde dazugekauft werden. Somit denke ich ist InterBase raus, die Auswahl wird kleiner und übersichtlicher.

Firebird: Einfache Installation, direkte Verbindung über TCP/IP, Datenbanken als einfache (leicht sicher und tauschbare) Datei auf der Festplatte. Brauche dann entweder andere Komponenten in Delphi als die TAdoConnection, oder den ODBC-Treiber - den müsste ich dann mit meinem Installer mitliefern (sollte Lizenztechnisch nix kosten; aber was sagen die Admins zu dem zusätzlichen Programm auf jedem PC). "Sorge" macht mir in diesem Fall -leider!- das "OpenSource", weil gerade bei den großen Kunden manche Administratoren Nachweise für Wartungsverträge für /alle/ Softwaretitel im Haus liefern müssen. Gibt's hierfür bestimmt auch zu kaufen, wäre aber so ein "Naja-Punkt". Trotzdem erstmal ein großes Plus. Liegen hier Erfahrungswerte vor, "wie oft" schon mal eine Datenbank korrupt/inkonsisten geworden ist (nicht durch Hardwaredefekt, nur im "Normalbetrieb" von jetzt auf eben)? Wie einfach oder "möglich" ist eine Reparatur? Danke @Neumann

Die Idee von @Mensch72 finde ich super mitgedacht; von TMS setzte ich schon erfolgreich andere (nicht-Datenbank) Komponenten ein. K.O. Argument ist hier leider dann doch wieder die Access-Datenbank, die sich pro Tag um ~60 MB aufbläht, auch wenn nur lokal gearbeitet wird. Natürlich könnte man auf dem "Server" dann besser die DB mal kurz schließen und im Exklusivmodus komprimieren/reparieren aber ... wenn ich jetzt schon die Software grundlegend ändere, dann versuche ich wirklich die o.g. Punkte abzudecken (gerade auch das tagesaktuelle Patchday 05/2020 Problem wäre damit nicht gelöst, aber egal: bis -hoffentlich- Microsofts Update für das Update kommt, habe ich eh mein Programm nicht auf ein anderes System umgestellt. Ich denke aber, dass andere Datenbanken (SQL, ...) wohl von diesem Patchdayproblem nicht (so) betroffen sind, wie mdb-Dateien ...). Von der Idee her trotzdem sehr gut.

Die Idee von @mytbo ist auch nicht verkehrt. REST und SOAP hab ich ja jetzt auch schon öfters gehört, speziell in Verbindung mit meinem Delphi 2010 (neue Version kaufe ich mir noch in diesem Jahr irgendwann ...) stellen sich mit aber beim Gedanken an REST APIs mit selbstgebastelten Indy-Threads und zusammengestückelten JSON-Interpretern alle Nackenhaare. Wenn du das empfiehlst gehe ich davon aus, dass es für Delphi gute Komponenten gibt, die sich um das Alles kümmern, und ich mich wirklich nur mit dem eigentlichen Datenbank-Kram beschäfigen muss. Da wir jetzt leider zwischen zwei Hauptversionen diese Datenbankumstellung ungewollt "übers Knie brechen müssen" -zwar nicht als Schnellschuss, aber dennoch "als Feature mit höchster Priorität", hätte ich glaube ich ziemlich Bauchweh damit, schon alleine ein Backend einzusetzen, das ich nicht auf Anhieb verstehe. Firebird und *SQL ist klar: Server installieren, Datenbank anlegen, mein überarbeiteter Client verbindet sich drauf - fertig. Bei Synopse -und das kann ich jetzt nach kurzem Überfliegen der Dokumentation nur vermuten- schein ja (weil "Framework") /mehr/ dabei zu sein, (HTTP Client und Server, JS Enging, ein MongoDB Server, ...) als das was ich jetzt als klassischen Datenbankserver abstempeln würde. Sicherlich ist dieses Framework für die vorgesehenen Verwendungszwecke genial, aber ich stehe gerade davor wie k.a. ... ein Automechaniker der einen zweiwöchigen Lehrgang für die Reparatur von einer neuen Generation Autos haben möchte, und er ein Angebot für einen Lehrgang bekommt, der alle Themen für Autos, Züge, Luftfahr und Schiffe abdeckt. Dauer des Lehrgangs nicht absehbar; der Nutzen für die erweiterten Fähigkeiten verpufft, weil Arbeitgeber=Autowerkstatt. Long story short: Ich glaube, dieses Framework würde mich gnadenlos überfordern. Bei einer komplett neuen, sauber konzeptionierten Software mit ausreichend Zeitpuffer für die Einarbeitung könnte ich mir das durchaus vorstellen, hier in diesem konkreten Fall aber glaube ich würde zu viel Energie verpuffen, weil ich mich wahrscheinlich mit trivialen Problemen "von Null" beschäftigen müsste, die ich nun mit ADO nach vielen Jahren endlich halbwegs gemeistert habe. Zudem kommt: Ich muss ja ein wenig Support beim Kunden leisten können, falls mit der DB-Server Software was klemmt, und ich glaube da wäre ich bei dem Framework echt raus. Vielleicht finde ich mal auf Youtube ein kleines Tutorial zu diesem Server und 'ner beispielhaften Delphiimplementierung, aber ich denke ihr wisst was ich meine wenn das Bauchgefühl sagt "das passt nicht", auch wenn ich es fachlich nicht ordentlich begründen kann.

> zwischen verschiedenen Mandanten-MDB-Files wechseln zu können
In der Tat ist es so, dass wir projektbezogen auch [die Inhalte der] Datenbanken für Kunden vorbereiten und Ihnen dann die Daten schicken. Bis dato konnte das auch eine Sekretärin durch das austauschen der .mdb erledigen. Mit *SQL stelle ich mir das schwerer vor, da man einerseits auf die Serverkonsole Zugriff haben muss (nagut, nofalls über die MMC als externe Konsole, bzw. Remotedesktop mit Admin-Daten). In jedem Fall muss der Admin wieder bemüht werden.

Bei diesen ganzen Überlegungen hat @Blackpit natürlich auch recht: Die (ungeplante) Migration meiner Software wäre wahrscheinlich auf MS SQL Express am einfachsten umzusetzen. Sofern ich nicht falsch liege, hätten meine "großen" Kunden dann ja auch die Möglichkeit, die Datenbank auf "ihrem" eigenen richtigen SQL-Server zu hosten, so dass eine zusätzliche Instanz von SQL Express nicht notwendig ist. Zudem haben viele Administratoren zumindest grundlegende Erfahrungen mit Microsoft SQL (Express), so dass diese bei Datenbankproblemen besser agieren können, als jetzt mit dem mORMot Framework wo zwei Ahnungslose dann miteinander telefonieren würden. Ja, natürlich! Vor der Implementierung muss auch ich mich mit der neuen Serversoftware beschäftigen und mich "nicht nur" grundlegend damit auskennen, aber ich wisst was ich meine: Grundlegende SQL-Server Kenntnisse sind bei mir vorhanden, bei dem Framework würde ich bei "weniger als Null" anfangen. Auch der Bekanntheitsgrad und die Updates von Microsoft sollten eigentlich viele Bedenken zerstreuen, "der Admin weiß, was bei Ihm installiert wird", wenn ich's mal so sagen darf.

Mir ist bewusst dass ich mich gerade anhöre wie "Will er eigentlich uns überzeugen, oder sich selbst? Scheint als hätte er schon eine feste Meinung..." aber mehr oder weniger ist es das ja auch. Letztendlich will ich von Fachleuten aus dem Gebiet hören: "Ja, für dein Vorhaben ist das genau richtig.". Es muss nicht die beste Lösung sein die technisch möglich ist - es muss nur mind. genauso gut funktionieren wie vorher und ich darf jetzt nicht die nächsten Monate und Jahre mit dem neu-lernen anderer Datenbankgebilde verbringen...
Firebird wäre *echt* cool, aber für das gute Gelingen unseren Projekten spielt auch immer das Bauchgefühl vom Administrator des Kunden eine wichtige Rolle. Wenn ich auf dem "großen Server" eines neuen Kunden ein Programm/Dienst als Administrator installieren will, und der Admin fragt "Watt ist Firebört, und was macht das auf meinem Server?" wirkt das anders als wenn ich Frage: Haben Sie einen eigene SQL-Server, oder soll ich den auf dem Infobildschirm mit drauf machen (gnaaa, braucht dann feste IP oder Hostnamen etc....)? Klar, Firebird kann ich auch auf "meinen" Infobildschirm-PC drauf machen, aber es beruhigt -denke ich mal- den Admin sehr, wenn er schon die Drittanbieterprogramme /kennt/ die evtl. da einfach so mitinstalliert werden.


Wenn wir jetzt mal den direkten Vergleich Firebird <--> MS SQL Express angehen... Was muss ich beachten?

1) Können auf Beide -beispielhaft!- bis zu 50 Clients gleichzeitig zugreifen? Lizenztechnisch okay? Wird wohl nie passieren, ich will mich aber nicht vorab künstlich beschränken. (Kann des MS-SQL Server das? Soweit ich weiß gibt's dann dafür die CALs im 25er(?) Pack.)

2) Frage nach der Stabilität/Inkonsitenzen speziell Firebird unter den o.g. Aspekten, bzw. störungsanfälligkeit von MS SQL (Dienst/Agent startet nicht, Port nicht erreichbar, Datenbankdatei-Probleme, ...)

3) Wie einfach ist das Deployment des Server über meinen Installer? Rechtliche Probleme / Folgekosten / Lizenzierung bei Firebird <--> MS SQL Express?

Freue mich auf Antworten, danke soweit!
Delphi 2010 32-Bit auf Windows 10 Pro 64-Bit
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
201 Beiträge
 
Delphi XE5 Professional
 
#7

AW: Neues Datenbank-Backend für meine Anwedung - Welches?

  Alt 28. Mai 2020, 20:36
Hallo,
schau doch mal hier rein: http://www.componentace.com/bde_repl...e_database.htm
Vielleicht ist es was für Dich: Absolute Database als embedded Database. Relativ einfach zu benutzen, alles wird – ähnlich wie bei Access – in einer einzigen Datei gespeichert.
Gruß, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher.
John C. Cornelius
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
976 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Neues Datenbank-Backend für meine Anwedung - Welches?

  Alt 28. Mai 2020, 20:50
Also ich würde auch für Firebird plädieren. Da hast du auch lizenztechnisch keinerlei Probleme. Ob sich die Installation der Clients in deine Installation integrieren lässt (also nicht lizenztechnisch sondern rein technisch) kann ich dir nicht sagen. Als Zugriffskomponenten kann ich dir aus eigener Erfahrung IBDAC von DevArt ans Herz legen. Auch hier entstehen dir für die einzelnen Installationen keine weiteren Folgekosten. Preislich völlig okay, für etwas mehr Geld gibt es den Source auch dazu.

Viel Erfolg bei deinem Vorhaben.

Auch für FireBird sprechen die Cracks hier im Forum
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
976 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Neues Datenbank-Backend für meine Anwedung - Welches?

  Alt 28. Mai 2020, 20:55
Hallo,
schau doch mal hier rein: http://www.componentace.com/bde_repl...e_database.htm
Vielleicht ist es was für Dich: Absolute Database als embedded Database. Relativ einfach zu benutzen, alles wird – ähnlich wie bei Access – in einer einzigen Datei gespeichert.
Gruß, Andreas
Sehr gut, verwende ich auch. Allerdings wird von ComponentAce das Ablegen der Datei auf einem Netzwerkordner nicht empfohlen. Ich verwende es für einen Terminplaner mit ca. 100 Einträgen pro Tag. Das einlesen über das Netzwerk von 90 Tagen geht ratz fatz. Allerdings habe ich mir einen eigenen Server geschrieben der sich um die Datenbank kümmert, der Server kommuniziert über ein eigenes „Protokoll“ mit den Clients. Das heißt die Clients greifen nicht direkt auf die Datenbank zu. Möchte auch mittelfristig auf FireBird wechseln (auch einfach aus Interesse). Da habe ich momentan allerdings weder Zeit noch Lust. Verwende es nur „privat“ bzw. im eigenen Geschäft.

Aber prinzipiell eine tolle Datenbank die ich - vor allem für lokale Projekte - uneingeschränkt empfehlen kann!!!
Michael Kübler
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
401 Beiträge
 
Delphi 2010 Professional
 
#10

AW: Neues Datenbank-Backend für meine Anwedung - Welches?

  Alt 28. Mai 2020, 21:34
Danke für hinzugekommenen Einträge.

Absolute Database scheint generell ein tolles Projekt zu sein, sich aber jetzt -bis auf Details- nicht viel mit FireBird zu geben, dazu gibt es ja hier im Forum auch einige Beiträge, u.a. https://www.delphipraxis.net/147300-...die-frage.html . Ich will auf keinen Fall ADB schlecht reden, aber das Bauchgefühl sagt mir, dass die Jungs&Mädels von FireBird sich -auch wenn OpenSource- komplett auf ihr Kerngeschäft konzentrieren können und alle Energie für den Datenbankserver zur Verfügung haben, wohingegen ADB -auf den ersten Blick- so wirkt, wie eine von vielen Komponenten von TMS oder LMD... Keine externen Tools/Schnittstellen, nur für Delphi, und "Know-How" für Administrator und Probleme "nur" bei den Entwicklern (Herausgeber und die Programmierer als "Nutzer"), nicht bei den Nutzern oder Administratoren der Kunden. Ich will das auf keinen Fall schlecht reden; lediglich, naja... bemerken. Wenn die Datenbankproblemlos läuft - alles gut. Wenn's ein Problem gibt kann einem der ein oder andere Admin eines Kunden bei SQL vielleicht weiterhelfen.

Was ich noch wichtiges vergessen habe zu erwähnen:
Windows hat immer noch einen netten Bug, wo trotz fortlaufender Recherchen Netzlaufwerke manchmal die Verbindung verlieren - rotes X vor dem Laufwerksbuchstaben. Im Windows Explorer hilft ein einfacher "Klick" drauf, schon wird der Inhalt geladen. Diesen "Klick" kann man programmiertechnisch nur durch sehr viel gemauschel nachstellen (unsichtbares Öffnen einer unsichtbaren Windows-Explorer instanz auf diesem Netzlaufwerk und dannach TaskKill), und das leider auch nicht immer zuverlässig, bzw. die TAdoConnection kann sich dann nicht unbedingt neu Verbinden lassen. DriveExists und FileExists liefern dann einfach immer False zurück, bis das Programm neu gestartet wird. Da dieses Problem unabhängig von dem Datenbanksystem auch in Zukunft immer wieder auftreten wird, würde ich schon sagen, dass ein Server via TCP/IP her muss, und dateibasierte Datenbanken /via Netzlaufwerk/ nun in der Entscheidungsfindung eher ein Ausschlusskriterium sind. Korrigiert mich...

Ich glaube, letztendlich wird es auf FireBird oder MS SQL Express hinauslaufen.

Zu meinen Fragen:

1) Können auf Beide -beispielhaft!- bis zu 50 Clients gleichzeitig zugreifen?
> Laut https://www.mcseboard.de/topic/14685...l-db-connects/ gibt es keine Beschränkungen bei der Clientzahl bei SQL Express (bzw. 32tausend). Somit sollten beide Systeme geeignet sein. Somit erledigt.

2) Frage nach der Stabilität/Inkonsitenzen speziell Firebird unter den o.g. Aspekten, bzw. störungsanfälligkeit von MS SQL (Dienst/Agent startet nicht, Port nicht erreichbar, Datenbankdatei-Probleme, ...)
> Erfahrungswerte? Irgendwer?

3) Wie einfach ist das Deployment des Server über meinen Installer? Rechtliche Probleme / Folgekosten / Lizenzierung bei Firebird <--> MS SQL Express?

> Lassen wir bei Microsoft mal die lizenzrechtliche Frage außen vor. Der SQL-Express Installer ist ausschließlich als Online-Installation (300MB Download) erhältlich, Offline-Installer gibt's afaik zwar auch im MSDN, aber das würde unser Installationspaket ja auch auf satte ~330 MB aufblähen. Entweder müsste man einen Assistenten für die Installations des SQL-Servers einprogrammieren (Link zum Download, Anleitung, ...) oder sich was anderes einfallen lassen. Eine kleine, und vor allem: schnelle Demo-Installation und Teststellung unserer Software wäre für technisch nicht versierte Interessenten dann schon ein großes Hindernis --> kein Kauf. Das wäre wiederum ein klarer Vorteil für FireBird. Ich muss das mal ne Nacht drüber schlafen und das mit dem Kollegen besprechen...
Delphi 2010 32-Bit auf Windows 10 Pro 64-Bit

Geändert von berens (28. Mai 2020 um 21:37 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf