Datenbankzugriff auf proprietäre Datenbank - geeignetes generisches Interface?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Nimral
Beiträge: 381
Registriert: Mi 10. Jun 2015, 11:33

Datenbankzugriff auf proprietäre Datenbank - geeignetes generisches Interface?

Beitrag von Nimral »

Hi,

heute brauche ich nur einen guten Rat (keine Details, außer eventuell ein paar Links zu weiterführenden Dokus).

Ausgangssituation: ich brauche Datensätze aus einer Datenbank, der Zugriff ist vom Endkunden zur Verfügung zu stellen. Je nachdem was sich dieser so vorstellt, kann es sein, dass ich direkten Datenbankzugriff auf irgendeine SQL Datenbankmaschine bekomme, möglicherweise über ODBC, oder aber ich bekomme irgendeine wilde Web-Schnittstelle oder eventuell sogar nur eine Datei wie XML oder CSV. Auch der innere Aufbau der Dateien die ich bekomme ist ziemlich beliebig, es kann sein dass ich meine Datensätze mundgerecht geliefert bekomme, es kann auch sein, dass ich sie mir erst zusammenbauen muss, kann sein dass ich geringfügige Anpassungen (Zeichensätze, Datumswerte usw) machen muss. Ihr seht schon, ich bin nicht in der Position, dem Kunden Vorschriften zu machen, sondern muss mich danach richten was er mir auf dem Tisch packt und das Beste draus machen.

Die Daten selber sind nicht weiter komplex, ich brauche auch nur Lesefunktionen und verarbeitungsmäßig die absoluten Basics, also in SQL ausgedrückt nicht viel mehr als "Select * from "Table" [where Feldname = ...]" für Rückgabe einer Liste oder einen einzelnen Datensatz. Performance ist auch kein allzu vordringliches Thema.

Ich möchte jetzt eine Zwischenschicht programmieren, welche die Daten auseinanderklaubt und über ein einheitliches Interface zur Verfügung stellt. Ich habe solche Aufgaben schon gelöst über ein paar Zugriffsobjekte (Generics und Interfaces) und die generische Liste aus der fgl Bibliothek als Datenspeicher.

Jetzt die Frage: mir selber ein Interface definieren ist nicht das Problem. Die aufbereiteten Datensätze werden nicht in einer lokalen GUI dargestellt, jedenfalls nicht vorrangig, sondern als JSON zu Web-Clients weitergereicht. Wenn ich die Datensätze an eine LCL GUI verfüttern könnte wärs aber natürlich möglicherweise ein Zusatznutzen, z.B. für Demos und Debugging. Ich weiß im Ansatz, dass Lazarus einen Haufen generische Datenbankkomponenten zur Verfügung stellt. Eventuell wäre es nützlich, denke ich, mich da einzuhängen statt etwas Eigenes zu machen. Dann müsste ich - so der Gedanke - eventuell nur noch abgeleitete Komponenten für die exotischen Formate machen, Standards wie SQL Datenbanken und XML Dateien würden mir eventuell einfach in den Schoß fallen.

Was ratet ihr mir? Gibt es eine Lazarus Library auf die ich aufsetzen kann, die also einfach genug zu verstehen und zu programmieren ist dass ich es [für diese doch relativ überschaubare Aufgabenstellung] nicht besser gleich selber mache?

Thnx, Armin.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5068
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Datenbankzugriff auf proprietäre Datenbank - geeignetes generisches Interface?

Beitrag von af0815 »

Zeos kann ein paar DB mehr, besonders wenn man unter Windows ist. Das geht nicht nur ODBC sondern meines Wissens auch ADO. Auch über sqlite lässt sich noch einiges machen, dort mal bei Mormot2 sich ansehen was die für Ideen da hinterlegt haben.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Nimral
Beiträge: 381
Registriert: Mi 10. Jun 2015, 11:33

Re: Datenbankzugriff auf proprietäre Datenbank - geeignetes generisches Interface?

Beitrag von Nimral »

Ach ja, OS soll gleichberechtigt entweder Windows oder Linux sein.

PascalDragon
Beiträge: 520
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Datenbankzugriff auf proprietäre Datenbank - geeignetes generisches Interface?

Beitrag von PascalDragon »

Du könntest dir das SDF Dataset oder das CSV Dataset anschauen, welche beide letztlich ein TDataset bereitstellen, welches auf Dateien mit einem Separator arbeiten. Oder das JSON Dataset, welches das gleiche für eine JSON Datei macht. Hat den Vorteil, das du (falls nötig) alles was mit TDataset und TDataSource zusammen hängt auch für was auch immer du vom Kunden bekommst nutzen kannst. Und wenn du tatsächlich ODBC Zugang bekommst, dann nimmst du einfach das ODBC Dataset von SqlDB. ;)
FPC Compiler Entwickler

Antworten