Beispiel C/S Datenbank

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Andy Nightingale
Beiträge: 93
Registriert: Mo 13. Jan 2025, 12:11

Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

Hallo Leute,
gibt es irgendwo ein Beispiel für eine kleine Client Server Datenbank? Grüße. :D

Stevie
Beiträge: 147
Registriert: Di 27. Feb 2024, 22:40

Re: Beispiel C/S Datenbank

Beitrag von Stevie »

... wir befinden uns hier nicht direkt im Bereich von "klein", aber zumindest kann man mit Synopse seine eigene Client Server Datenbank bauen (https://synopse.info/fossil/wiki?name=SQLite3+Framework) und alle Quellen sind vorhanden um zu schauen, wie es gemacht wird.

Andy Nightingale
Beiträge: 93
Registriert: Mo 13. Jan 2025, 12:11

Re: Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

Hallo Stevie,
ich kann das Package nicht installieren. Keine Ahnung was ich falsch mache. Als Anfänger ist das manchmal echt blöd. Man kommt sich total doof vor. Naja vielleicht bin ich das auch.
Wie kann man eigentlich ein Package Manuell installieren? Wie sind da die Schritte. Habs versucht, aber irgendwo mache ich was falsch. Wenn das sich falsch installiert,- muß man es dann wieder deinstallieren und was muß man beachten? Grüße.- Danke

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

Re: Beispiel C/S Datenbank

Beitrag von af0815 »

Das Murmeltier aka Mormot ist ein volle, extrem komplexe C/S Umgebung die mit Rest über Computer bzw. Devicegrenzen arbeitet. Nicht unbedingt was für Anfänger. Und wenn, so wūrde ich mir einmal die Doku echt reinziehen. Komm ich mit der klar, kann man es auch installieren.

Für die Installation sollte man unbedingt der Doku zur Installation folgen. Dann geht's auch.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Stevie
Beiträge: 147
Registriert: Di 27. Feb 2024, 22:40

Re: Beispiel C/S Datenbank

Beitrag von Stevie »

Ich glaube, die grundsätliche Frage ist, was Andy anhand des Beispiels sehen bzw. lernen will. Denn (verteilte) Datenbanken sind nun einmal eine sehr komplexe Materie, die man - ähnlich wie die Datenverschlüsselung - besser diejenigen mit der Erfahrung machen lässt. Ansonsten kann man sich sowohl Fuß als auch Knie wegschießen. Aber Synopse Mormot ist vermutlich die am besten gepflegte und betreute Persistenz-Layer im FPC/Lazarus-Universum. Wenn es also produktiv werden und skalierbar sein soll, kann man damit nichts falsch machen, denke ich.

Andy Nightingale
Beiträge: 93
Registriert: Mo 13. Jan 2025, 12:11

Re: Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

Hallo Stevie,
ich muß das dieses Jahr hinbekommen. Egal ob es schwer ist oder nicht. Ich muß mir praktisch das Knie wegschießen. Das Problem im Moment ist das ich das Package mit dem OPM nicht installieren kann, obwohl ich alles durchgelesen habe. KOmmt das eigentlich öfters vor? Mir bleibt nichts anderes übrig als alles selbst zu erlernen. Ich möchte meinen Kunden einfach helfen auf ein neues System zu wechseln, das nicht tausende von Euros kostet.- da es um ein Projekt in der Forschung mit Krebs bei Kindern geht. Es liegt mir wirklich sehr am Herzen. Grüße und Danke an alle.

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

Re: Beispiel C/S Datenbank

Beitrag von af0815 »

Mormot ist eines der Softwarepakete, die ich nicht von OPM installieren würde, sondern direkt aus dem Repo. Mormot ist nicht die aktuellste Version, es gibt bereits einen Nachfolger. Den würde ich mir installieren. Und wichtig, installier den laut Anleitung. Das Framework ist sehr umfangreich.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Andy Nightingale
Beiträge: 93
Registriert: Mo 13. Jan 2025, 12:11

Re: Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

Danke dir für den Hinweis.

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

Re: Beispiel C/S Datenbank

Beitrag von af0815 »

Und wenn es so pressiert und es so ein soziales Projekt ist. Wenn du besser beschreibst was du machen willst, kann man dich besser unterstützen.
Weil gerade als Anfänger ist es sehr zeitraubend, wenn man mit nicht zusammenpassenden Programmstücken und Komponenten arbeitet, Erfahrunggemäß sind dann unnötige Reibungsverluste die grössten Zeitfresser.
Auch das Projekt einmal mit GIT öffentlich aufzusetzen kann das ganze beschleunigen, weil es gibt hier Leute mit Erfahrung in Großprojekten und auch Betreuer von etlichen Paketen. Nur braucht man eine vision vom ganzen sonst bleiben die Infos immer nur flickwerk was unter Umständen nicht zusammenpasst.
Wenn der Code öffentlich ist, so kann man sich den ansehen und in Teilbereichen sich einbringen und du kannst immer noch entscheiden ob dir das in den Kram passt oder nicht. Ach ja, mit Feedback muss man natürlich umgehen können, ist manchmal auch nicht so leicht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Zvoni
Beiträge: 268
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Beispiel C/S Datenbank

Beitrag von Zvoni »

Vielleicht sollte Andy mal erst die Begriffe definieren.

Was versteht er denn unter "Client/Server"?

eine C/S-Anwendung hat per se erst mal nichts zwingend mit Datenbanken zu tun.
Eine Chat-Anwendung kann man nämlich auch als C/S-Anwendung betrachten.
Ein Programm, was zentral lauft ist der "Server", welches "Anmeldungen" von "Clients" akzeptiert (Bsp. per Sockets mit IP und Gedöns), und die Clients können dann Nachrichten an andere "Clients" senden, welche aber über den "Server" geschleift werden. (Erinnert sich noch irgendjemand an ICQ? War im Prinzip so etwas)

Wenn Andy's Frage nach "C/S Datenbank" das Szenario beschreibt "Ein Datenbank-Server (Bsp. MS SQL, MySQL) mit vielen Clients/Usern", dann wird man mOrmot wohl kaum brauchen.
Dann sollte man sich eher mit den Funktionen des Datenbank-Servers selbst vertraut machen, sowie den entsprechenden packages/units von sqldb bzw. ZEOS.

Hinweis: Eine beliebte Stolperfalle hier ist das berüchtigte "Application-User" vs. "Database-User", wo man derbe auf die Schnauze fliegen kann
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Stevie
Beiträge: 147
Registriert: Di 27. Feb 2024, 22:40

Re: Beispiel C/S Datenbank

Beitrag von Stevie »

Wenn du besser beschreibst was du machen willst, kann man dich besser unterstützen.
Full Ack! :-)

Andy Nightingale
Beiträge: 93
Registriert: Mo 13. Jan 2025, 12:11

Re: Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

Hallo Leute,
danke sehr. Das Problem ist, dass dieses Institut von mir verlangte eine Verschwiegensheitserklärung zu bestätigen wegen Datenschutz der Patienten die an der Studie der Krebsforschung beteiligt sind. Die natürlich Bestandteil der Software sind. Eigentlich auch wichtig und logisch.

Es ist eine echte Client / Server Lösung. Der Server mit der Datenbank ( über 460.000 Daten ) liegt auf einem Windows Server. Beim Server kann man automatische Backups einstellen. ( und einiges mehr )Zugang bekommen die Clients in Ihren Abteilungen über einen Port( in der Clientsoftware öffnet sich ein Fenster wo man die IP 198... :Portnummer ) eintragen muß.

Das muß der Client nur einmal machen. Wird automatisch in einer Datei beim Client abgespeichert, sodass der Client sich dann nur noch am Anmeldesystem beim Server mit Namen und Passwort anmelden muß. Die Professoren und Labormitarbeiter klicken sich mit ihrer Client Software in den Server ein mittels Passwortsystem. Die Software beinhaltet ein Hauptfenster von dem man andere Fenster öffnen kann. Patientenfenster, Laborfenster, Arbeitsfenster, Berichtefenster, Auswertungsfenster, Archivfenster, Kalenderfenster, Ein Fenster um Daten mittels Scanner einzuscannen. Ein Fenster wo man Daten importieren und exportieren kann.

Das ist so der grobe Umriss. Das habe ich fast 20 Jahre entwickelt. Nun wurde wie gesagt das Tool aufgekauft und die Lizenzen sind so teuer geworden das dieses Institut es für diese Lizenzen nicht mehr halten kann. Die Software läuft noch ein Jahr. Danach brauchen die eine Lösung. Habe mir sehr viele Tools angesehen. 3 sind in nähere Wahl gekommen, darunter auch Lazarus. Lazarus liegt mir nach meiner Intuition am besten. Ich habe auch Python getestet, was anscheinend auch cool ist, aber ich habe vor zwei Jahren einmal in diesem Institut einen Lazarus Programmierer kennen gelernt, der für eine andere Abteilung ein Hammer Software entwickelt hat mit der Firebird Datenbank mit über 16 Millionen Daten. Leider wurde der von einer Firma nach Amerika gelockt....nu isa weg. Aber aus diesem Grunde würde ich das alles mit Lazarus entwickeln.

Ich weiß das ist eine große Aufgabe, aber ich möchte nie wieder von einem Lizenzmodell abhängig sein. Was ich bei Lazarus noch nicht so checke ist wenn man einen coolen Code von einem Lazarus Beispiel hat, wie implementiert man den in das eigene Lazarus Model? Wenn ich das verstanden habe dann kann ich ja ein Grundgerüst mit der Firebird Datenbank erstellen und euch zeigen. Aber bis dahin muß ich natürlich noch einiges lernen. Bin gerade dabei die Lernvideos nachzuahmen und alles durchzuarbeiten. Ist schon eine Menge Arbeit.

Aber ich denke ich kann das schaffen,- mit eurer Hilfe :D

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

Re: Beispiel C/S Datenbank

Beitrag von af0815 »

Ich habe bei einem internationalen (ehemalig holländischen) Kornzern mit Datenbanken zu tun gehabt die millionen von Datensätzen pro Jahr gespeichert haben. Das ist nicht das Problem. Mann muss nur mit den Tools des Datenbankhersteller richtig umgehen bzw. darinnen geschult sein. Dann kann man auch mit Datenmengen umgehen. Nur man muss es begreifen und die Tools anwenden können. Bei mir waren es etliche MS-DB-Schulungen. Da ist es dann (fast) egal mit welcher Programmiersprache du arbeitest. Ich habe dabei gelernt, das man manche Teile dann entsprechend direkt auf den DB Server auslagern muß, alleine um die Datenmenge sinnvoll zu begrenzen damit die Aurwertbar wird. Das macht am Client keinen SInn. Da sind die DB-Systeme egal ob MS, Oracle oder IBM deutlich im Vorteil. Und da wird es je System sehr speziell.

Bezüglich Backups - sorry, das ist aber Arbeit des DB-Admins oder den Server-Leuten. Das darf den Applikationsprogrammierer aber nicht die Bohne interessieren -oder du geht 'all in' und gehst damit unter.

Du hast 20 Jahre entwickelt - warum der Umstieg ? Ein Detail: Bei deiner Anmeldesteuerung, so wie beschrieben, fällt mir dazu ein - wer soll für die SIcherheit sorgen, das in den letzten Jahren zu einer echten Herausforderung geworden ? Da hat sich in den letzen 5 Jahren sehr viel am Focus gändert.
Patientenfenster, Laborfenster, Arbeitsfenster, Berichtefenster, Auswertungsfenster, Archivfenster, Kalenderfenster, Ein Fenster um Daten mittels Scanner einzuscannen. Ein Fenster wo man Daten importieren und exportieren kann.
Das schaut schnell mal auch nach 100 Mannjahren aus. Ok, du hast daran schon mal 20 Jahre entwickelt. Kling für mich so nach SAP - auch wegen der Lizenzen :-) Nur sowas in eine Jahr, klingt für mich .... sehr sportlich gedacht.

Patientenfenster = Patientenverwaltung
Arbeitsfenster = Arbeitsplanung
Berichtsfenster = Berichtswesen
Auswertungfenster = Vorstufe Berichtswesen
Archivfenster = Verwaltung alter Daten
Kalenderfenster = Zeitmanagment

Ok, Mormot könnte da eher zu einem Hindernis werden, weil für reine persistenzen das ganze zu Unhomogen erscheint.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Soner
Beiträge: 720
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Beispiel C/S Datenbank

Beitrag von Soner »

Ich würde in deiner Stelle folgendes nehmen:
- Datenbank --> Firebird,
- Datenbank-Komponenten --> SQLDB oder ZEOS,
- Berichte --> LazReport + Grids + HTML + PascalScript,
- PDF --> Chromium,
- Scan --> Twain,
damit bist du sehr gut aufgehoben. Verwende kein Appserver, kommuniziere direkt mit Firebird-Server. AppServer machen Programme nur komplizierter.
Nach deiner Aufgabenstellung hier hier ist das nur ein paar Monate Arbeit, so schwer ist das nicht maximal 3-4 Monate.

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

Re: Beispiel C/S Datenbank

Beitrag von af0815 »

Soner hat geschrieben: Mo 3. Feb 2025, 23:55 Ich würde in deiner Stelle folgendes nehmen:
- Datenbank --> Firebird,
Ich bin da nicht ganz einig - In etlichen Firmen ist MS-SQL Server oder IBM DB2 Standard. Vor allen würde ich mich da an die Server-Fritzen wenden, was die verwenden, weil mit einem Exot im Serverpool wird auf lange Sicht keiner glücklich.

BTW: Es ist den meisten nicht bekannt, das der MS SQL Server nicht nur unter Windows läuft, sondern auch excellent unter Linux Ubuntu. MS hat dazu auch eine sehr gute Doku für die Installation. Das kann man dann beliebig skalieren, vom kleinen Access Ersatz (Express !!) bis zum Vollen Server ist es dieselbe Engine und die Administrierung und Performancetools sind ja da auch kostenlos (für private Zwecke und Evaluierung).

Express:
SQL Server 2022 Express ist eine kostenlose Edition von SQL Server, ideal für die Entwicklung und Produktion von Desktop-, Web- und kleinen Serveranwendungen.
Administrieren muss man von einem Windows PC aus, das ist klar.

Link zur Linuxinstallation: https://learn.microsoft.com/de-de/sql/l ... ubuntu2004 Kommt eine neue Langzeitversion von Ubuntu heraus, folgt kurz darauf auch MS mit einer neuen Installationsanleitung.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten