Forum: PC-Programmierung Parameter-Verwaltung mit Datenbanken


von Jürgen W. (lovos)


Lesenswert?

Hallo,
für eine Steuerungsanwendung (C++) auf einem Alix-Board unter Linux 
brauche ich eine Lösung, wie ich Parameter verwalten kann.
Die Parameter können durch webserver (appweb) geändert werden, durch 
LAN-Netzwerk, möglicherweise auch andere Netzwerke, da mehrere Boards 
vernetzt sind und ein Master die Parameter seiner Slaves ändern kann.
Bei Änderung beeinflussen sie die Regelung.


Meine erste Idee war sqlite3.
Nun ist ja das kein typischer Fall für Relationale Datenbanken, aber 
grundsätzlich machbar. (eine spalte Parametername varchar(16), andere 
Spalten Wert, min/max-Grenzen, Zugriffsrechte, ...)

Welche Alternativen gibt es?
Auf die Parameter wird von verschiedenen Prozessen/Threads zugegriffen.
Gruss

von Robert L. (lrlr)


Lesenswert?

(wenn es nicht gerade millionen an parametern sind)

ein lock file und ein file für die parameter und fertig

von Patrick (Gast)


Lesenswert?

Insbesondere mit der Zugriffsrechte-Sache halte ich SQLite für eine gar 
nicht mal so falsche Wahl - insbesondere, wenn man die Zugriffsrechte 
noch etwas hierarchisch aufsplitten möchte (z. B. nach Anwendung, 
Benutzergruppen etc.), ist es schon sehr komfortabel, das Ganze 
"dreidimensional" über mehrere Tabellen aufteilen zu können.
Auch spart man sich durch integriertes Locking, Journaling usw. doch 
schon Einiges an Arbeit außenherum.

Eine Alternative wäre vielleicht noch eine NoSQL-Datenbank wie 
DesktopCouch.

Aber von der Verwendung "einfacher" Config-Files würde ich speziell im 
Hinblick auf die Rechteverwaltung absehen - zumal das Parsen etc. ja 
auch einen nicht unerheblichen Aufwand erfordert, der kaum geringer als 
eine "richtige" Datenbank ausfallen dürfte.

von Jürgen W. (lovos)


Lesenswert?

> (wenn es nicht gerade millionen an parametern sind)

hundert sind es schon.
Allerdings verschiedene Typen, 95% sind 'int', der Rest 'string' und 
'float'.
Und das ist nicht so schön, da ich deswegen mindestens 3 Tabellen 
brauche.

> eine NoSQL-Datenbank wie DesktopCouch.

Das schaue ich mir mal an

von Robert L. (lrlr)


Lesenswert?

>deswegen mindestens 3 Tabellen

warum, einfach 3 spalten (pro datentyp eine)

von Jürgen W. (lovos)


Lesenswert?

> warum, einfach 3 spalten (pro datentyp eine)

Dann auch extra Spalten für Min,Max, Default-Value ...

Ich hatte schon überlegt, eine Mastertable zu erstellen mit Spalten 
"Variablen-Name" und Referenz.
Die Referenz kann auf eine Zeile in einer der 3 Tabellen verweisen.
Aber das scheint mit sqlite nicht möglich zu sein.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Nur so als Hinweis du kannst verschiedene Datentypen in einer SQLite 
Spalte speichern:
http://www.sqlite.org/faq.html#q3
Müßtest also nur für dich eine Spalte haben wo du dir merkst ob gerade 
ein int/boolean/float drinsteht.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Patrick schrieb:
> Aber von der Verwendung "einfacher" Config-Files würde ich speziell im
> Hinblick auf die Rechteverwaltung absehen - zumal das Parsen etc. ja
> auch einen nicht unerheblichen Aufwand erfordert, der kaum geringer als
> eine "richtige" Datenbank ausfallen dürfte.

Ich arbeite gerne mit SQLite.

Aber da ist das echt mit Kanonen auf Spatzen geschossen. Nebenbei
spielt auch die Performance eine Rolle. SQL ist, im Vergleich zu
"normalen" Textdateien, grottenlangsam.

Nebenbei mußt die aus der Datenbank erhaltenen Werte ja auch erst
einmal interpretieren - das nimmt Dir keine Datenbank ab.

In einer Webanwendung dann einfach die Textdatei komplett laden,
modfizieren und wieder ablegen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.