Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TCP-Buffer, welche DB? (https://www.delphipraxis.net/127587-tcp-buffer-welche-db.html)

alzaimar 15. Jan 2009 21:47

Datenbank: Das ist die Frage • Version: ? • Zugriff über: Mir egal

TCP-Buffer, welche DB?
 
Hallo,

Wir haben ein Messgerät, das per TCP Datentelegramme verschickt. Wenn nun kein Abnehmer vorhanden ist, sollen diese Telegramme (XML, 100-5000 Byte) zwischengespeichert werden. Sobald ein Abnehmer vorhanden ist, sollen zuerst die zwischengespeicherten, und dann die Life-Daten verschickt werden.
Das Gerät hat einen IPC mit HD, nicht sonderlich flott, reicht aber. Es werden maximal 20 Telegramme pro Sekunde verschickt.

In einer Quick and Dirty Version habe ich einen BufferWriter, der die Daten vom Gerät abholt und die Telegramme in eine kleine Firebird-DB schreibt. Dort wird über einen INSERT-Trigger ein FB-EVENT auslöst.

Ein Buffer-Reader verbindet sich mit dem TCP-Ziel und -wenn eins da ist- reagiert er auch auf die Firebird-Events. Wenn so ein Event eintritt, liest er die Tabelle aus, löscht die Einträge und verschickt sie.

Das ist natürlich eine ziemlich unperformante Vorgehensweise, aber es funktioniert und ist stabil, nur vielleicht ein kleiner Overkill. Firebird ist zwar kompakt, aber irgendwie ein ausgewachsenes RDBMS und damit ein wenig zu mächtig für diese Lösung.

Auf die FB-Events kann ich verzichten, bzw. sie durch TCP o.ä. nachbilden.

Frage: Gibt es eine kleinere 2-Benutzer-DB mit kleinem Footprint und einfacher (Silent)Installation?

mirage228 15. Jan 2009 22:08

Re: TCP-Buffer, welche DB?
 
Vielleicht ist ja SQLite oder MS SQL CE etwas für dich?
Habe jetzt keine Erfahrungen damit, aber laut den Wikipedia-Artikeln sahen die beiden ganz brauchbar aus.

Viele Grüße

Bernhard Geyer 16. Jan 2009 06:02

Re: TCP-Buffer, welche DB?
 
Falls es wirklich nur ein Puffer ist würde ich nicht unbedingt eine DB nehmen. Lege die Date z.B. mit laufender Nummer oder Zeitstempel + Laufende Nummer in ein Verzeichnis ab. Wenn jetzt ein Verbindung wieder aufgebaut wird so kannst du sehr einfach feststellen welche Telegramme als erstes versendet werden sollen.

alzaimar 16. Jan 2009 06:28

Re: TCP-Buffer, welche DB?
 
An eine Dateilösung dachte ich auch schon. Meinst Du, das wäre performanter bzw. resourcenschonender? Ach, ich probiere es mal aus. Und die SQLLite-Geschichte auch (ich dachte immer ,SQLite wäre eine Single-User-Lösung).

MSSQL scheidet leider aus, weil es doch recht viele Daten werden können, und die Expressversion diese 2GB-Grenze hat, wenn ich mich nicht irre.

Ich werde die 'Lösung' zu einem späteren Zeitpunkt hier posten.

Edit: Danke Euch beiden für die Anregungen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz