Forum: Mikrocontroller und Digitale Elektronik embedded Datenbanksystem


von Jürgen (Gast)


Lesenswert?

Hallo zusammen,

ich überlege im Moment wie man im embedded Bereich eine große Menge an 
Daten verwalten könnte.

Es gibt folgende Daten:
-  Aktueller Wert [8/16/32 bit groß]
-  Grenzwert Min [8/16/32 bit groß]
-  Grenzwert Max [8/16/32 bit groß]
-  Attribut 1 [16 bit]
-  Attribut 2 [16 bit]

Macht in Summe für einen Datensatz (bei max. bit Größe): 32 + 32 + 32 + 
16 + 16 = 128 bit = 128 bit [16 byte]

Geplant sind min. 500 bis max. 1000 Parameter, daher wurde ein 32 mbit 
Dataflash vorgesehen.

Da ich mich mit Access ganz gut auskenne, habe ich mit gedacht das 
Prinzip einer lokalen Datenbank auch ein embedded System zu übertragen.

Aufbau über Index-Tabellen die einen Pointer auf den jeweiligen 
Speicherbereich eines Parameters enthalten.

-  Parameter ID (quasi der Primärschlüssel)
-  Index akt. Wert
-  Index Grenzwert Min
-  Index Grenzwert Max
-  Index Attribut 1
-  Index Attribut 2

Die Daten plane ich hintereinander in vorher definierten 
Speicherbereichen abzulegen, immer mit einem Speicherplatz von 32 bit 
bzw. bei den Attributen mit je 16 bit. Die Parameter werden nicht linear 
hochgezählt, es existieren Lücken. Für diese Lücken würde ich den 
Speicherplatz einfach reservieren. In einem normalen DB-System würde ich 
die Daten einfach in die Tabelle hinten anfügen.

Gibt es so was wie Access für µC?

von Peter II (Gast)


Lesenswert?

auf embedded System ist sqllite sehr beliebt. Hat aber keine GUI wie 
Access. Ist mehr eine richte DB als ein aufgebortes Excel.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Peter II schrieb:
> Hat aber keine GUI wie Access
Gängige Datenbanktools könne auch mit SQLite was anfangen, wenn eh nur 
angefügt werden soll vom uC könnte man aber auch CSV nehmen.

von Axel S. (a-za-z0-9)


Lesenswert?

Jürgen schrieb:

> ich überlege im Moment wie man im embedded Bereich eine große Menge an
> Daten verwalten könnte.

Für IMHO merkwürdige Mengen an "groß"

> Es gibt folgende Daten:
> -  Aktueller Wert [8/16/32 bit groß]
> -  Grenzwert Min [8/16/32 bit groß]
> -  Grenzwert Max [8/16/32 bit groß]

Und die muß man wirklich speichern? Ergeben die sich nicht implizit 
aus dem aktuellen Wert über einen bestimmten Zeitraum?

> -  Attribut 1 [16 bit]
> -  Attribut 2 [16 bit]
>
> Macht in Summe für einen Datensatz (bei max. bit Größe): 32 + 32 + 32 +
> 16 + 16 = 128 bit = 128 bit [16 byte]

Also praktisch nix. OK, nicht nix. Aber weniger als ein 
durchschnittlicher µC in Registern halten kann.

Apropos: sollte da nicht noch ein Timestamp sein?

> Da ich mich mit Access ganz gut auskenne, habe ich mit gedacht das
> Prinzip einer lokalen Datenbank auch ein embedded System zu übertragen.

Komisch. Access ist doch gar keine Datenbank. Das ist doch nur ein GUI.

> Aufbau über Index-Tabellen die einen Pointer auf den jeweiligen
> Speicherbereich eines Parameters enthalten.
>
> -  Parameter ID (quasi der Primärschlüssel)
> -  Index akt. Wert
> -  Index Grenzwert Min
> -  Index Grenzwert Max
> -  Index Attribut 1
> -  Index Attribut 2

Örks.

Sieh doch mal zu, ob du noch ein Textbook zum Thema ISAM findest. Das 
ist so in etwa die Essenz deiner Idee und seit 40(?) Jahren Stand der 
Technik. Uni-Bibliothek. Die Ecke mit den ausgesonderten Fachbüchern.

> Gibt es so was wie Access für µC?

Nein. Es gibt auch keine Anhängerkupplungen, um Wohnwagen an RC-Modelle 
zu hängen. SQLite wurde ja schon genannt.

Ansonsten http://de.wikipedia.org/wiki/Eingebettetes_Datenbanksystem 
lesen oder Google nach "embedded database" fragen.


XL

von Martin S. (der_nachbauer)


Lesenswert?

Bei dem geringen [eine richtige DB umfasst eher mehr Datensätze] kommt 
eher eine flat file DB in Frage.

Was mir aber tatsächlich die Haare sträubt, ist das Index-Konzept.
Üblicherweise sollte der Primärschlüssel ausreichen - die konkrete 
Adresse der Werte innerhalb des dadurch bereits identifizierten 
Datensatzes ergibt sich dann schlicht durch deren Offset.

von Rolf M. (rmagnus)


Lesenswert?

Jürgen schrieb:
> Macht in Summe für einen Datensatz (bei max. bit Größe): 32 + 32 + 32 +
> 16 + 16 = 128 bit = 128 bit [16 byte]
>
> Geplant sind min. 500 bis max. 1000 Parameter, daher wurde ein 32 mbit
> Dataflash vorgesehen.

Was meinst du mit "Parameter"? Einen Datensatz? Das wären dann also 
insgesamt maximal 16.000 Bytes. Das passt damit 262 mal in deinen 
Dataflash.

Jürgen schrieb:
> Aufbau über Index-Tabellen die einen Pointer auf den jeweiligen
> Speicherbereich eines Parameters enthalten.

Wozu der Umweg über diese ganzen Pointer?

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.