Shared Library

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Displaced
Beiträge: 83
Registriert: So 12. Jul 2009, 10:08

Shared Library

Beitrag von Displaced »

Moin,

Ich bin auf der Suche nach einer Lösung zu folgendem Problem:

Programm A läd Library A und Library B.
Library B muss allerdings ebenfalls auf Library A zugreifen. Wobei Library A aber Daten Enthält die Programm A und Library B nutzen.
Diese Daten müssen für Programm A und Library B Identisch sein.
Sprich wenn Programm A ein Set ausführt, und Library B ein Get, muss Library B die Änderungen sehen die Programm A durchgeführt hat.

Meine Ideen bislang waren ja eigentlich Library B (Weil es ja eh eine Datenbank ist) auszubinden und über TCP Anzubinden.
Dann könnte ich aber glaube ich gleich SQLite / Firebird / MySQL nehmen. Die frage ist, ob sich das nicht in der Geschwindigkeit bemerkbar macht..
Weil es könnte schon sein dass ziemlich oft irgendetwas gelesen werden muss und jedes mal nen Paket von Library B nach Library A oder Programm A zu schmeißen halte ich für wenig Sinnvoll.
Temporäres laden ist da ebenfalls Ausgeschlossen weil es zum Teil Daten sind die sich ständig ändern können.

Hat da wer vielleicht ne super Lösung parat?

Gruß
Niko

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Shared Library

Beitrag von Socke »

Displaced hat geschrieben:Hat da wer vielleicht ne super Lösung parat?
Das nicht, aber Ideen und Vorschläge.

Die Idee wäre: Bibliothek A stellt eine Datenhandle bereit; dieses wird bei sämtlichen Funktionsaufrufen übergeben und identifiziert die Daten/den Speicherbereich, die/der verwendet wird. Das Programm erhält also ein solches Handle und gibt es an Bibliothek B weiter, damit diese ebenfalls damit arbeiten kann.

Eine Alternative ist, dass dein Programm eben dieses Datenhandle bereitstellt und an Bibliothek B ausleiht (ggf. auch umgekehrt); Sofern A sowieso nur die Daten verwaltet, wäre sie dann überflüssig.

Ob da eine Datenbank in Frage kommt, hängt von der Datenmenge und der Datenstruktur ab. Bei Daten, die sich sehr gut in Tabellen erfassen lassen, kann SQLite eine gute Wahl sein, da die Datenbank-Bilbiothek an sich recht klein ist und keinen zusätzlichen Installationsaufwand mit sich bringt. Die Daten kannst du hier auch komplett im Speicher ablegen (jedes Datenbankverbindung ist dabei eine eigene Datenbank). Bei Daten, die eher miteinander in Verbindung stehen (Graphen), gibt es effizientere Technologien.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Displaced
Beiträge: 83
Registriert: So 12. Jul 2009, 10:08

Re: Shared Library

Beitrag von Displaced »

Handle... Handle.. Handle..
Du hast mich auf eine Idee gebracht! Ich übergebe einfach den anderen Librarys das Handle von Library A. Damit können Library B - Z alle auf die selbe Library A zugreifen wie Programm A.
Das einzige worum ich mich nur noch kümmern muss ist, dass auf die Daten nicht zufällig 2 Prozesse gleichzeitig schreiben dürfen.
Oder gibt es da noch etwas zu beachten?

Antworten