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 10.4 32-Bit auf Windows 10 Pro 64-Bit, ehem. Delphi 2010 32-Bit auf Windows 10 Pro 64-Bit