Trotz aller guten Vorsätze habe ich es leider immer noch nicht geschafft, mich mal mit den mit Delphi mitgelieferten Datenbanken zu beschäftigen.
Evtl. gibt es jetzt aber einen Anlass dafür: Ich möchte mein Datenbank-Programm bzw. meine eigene Datenbanklösung (InMemory) dahingehend erweitern, dass ich nun auch binäre oder Text-Dateien in die Datenbank speichern kann.
Dafür will ich aber nicht mein eigenes Datenbankformat erweitern, sondern mit Hilfe eines kleinen Umwegs eine Delphi-Datenbank verwenden, wo ich die Dateien in Blob-Feldern als Filestreams speichere. Um nicht mehrere Datenbank-Dateien zu verwenden, würde ich der Einfachheit halber im ersten Blob-Feld halt meine eigene Datenbank speichern und in den anderen Blobfeldern halt die Dateien, die in die Datenbank übernommen werden sollen. Der User muss daher weiterhin nur mit einer "Datenbankdatei" umgehen.
Wenn ich also die so konstruierte Datenbankdatei öffnen will, öffne ich das erste Blobfeld, wo "meine" Datenkbank im eigenen Format gespeichert ist und lese diese und den Rest benötige ich nur, wenn ich externe Dateien hinzufügen oder bereits hinzugefügte Dateien ansehen möchte.
Bräuchte in der Delphi-Datenbank also nur 2 Felder: "Index" (indiziert), welche einen eindeutigen Bezeichner für die Datei enthält (der kommt aus "meiner" Datenbank) und "FileStream" was halt den Stream der Datei enthält.
Nun hat Delphi so viele unterstützte Datenbank-Typen, dass es wohl ziemlich lange dauern würde, herauszufinden, was ich brauche.
Daher hoffe ich hier auf einen Tipp:
* Meine Anwendung ist ein FMX-Programm und ich benötige Daher eine
DB, die unter Windows, macos und Linux läuft.
* Die
DB soll bei Bedarf mehrere 100 GB oder noch größer speichern können.
* Ferner soll keine Installation oder Einrichtung für die Datenbank erforderlich sein. Am liebsten wäre mir also, ich müsste lediglich ein oder 2 Komponenten in mein Programm einfügen und ich könnte dann dort die entsprechenden Dateien hinzufügen, bzw. abrufen oder löschen.
* Das alles muss möglich sein, ohne dass man eine extra Lizenz erwerben muss, wenn z.B. im Netzwerk mehrere Leute damit arbeiten (hinweis: Brauche keine Client-Server Datenbank, lokal reicht, denn meine Datenbank kann sowohl als Stand-Alone Lösung verwendet werden oder aber im Client-Server betrieb (dann verwaltet das Serverprogramm die Datei).
Was könnte hierfür also eine einfache Lösung sein?
Also welcher Datenbank-typ, z.B. FireDAC, SQLLite, etc.?
Welche Komponenten müsste ich dafür exakt verwenden?