einfache Datenbank



  • Hy
    Ich will eine einfache Datenbank schreiben die Zahlen ganznormal Speichert.
    Mein Problem dieser Prototyp soll dann auf ein System mit einem Microcontroler übertragen werden und da erscheinen mir Datenbanksysteme wie MySql usw. nicht die besten Voraussetzungen zu haben. Ich wollt wissen ob jemand fürleicht ein Gutes Tutorial oder Buch kennt oder selber ein paar Tipps hat.

    Schon mal vielen Dank für alle Antworten.



  • wenn du nue normale Zahlen speichern willst, wieso nicht einfach eine Textdatei pro Tabelle und die Wete mit ; getrennt?

    Alternative könntest du sqlite verwenden.



  • supertux schrieb:

    wenn du nue normale Zahlen speichern willst, wieso nicht einfach eine Textdatei pro Tabelle und die Wete mit ; getrennt?

    Alternative könntest du sqlite verwenden.

    weil das für zahlen nicht so effizient ist? für text spielt es ja keine rolle 😉



  • Hallo,

    Zahlen speichern kann man einfach mit fwrrite

    Wie willst du die Zahlen denn adressieren ?
    Ein wenig mehr Aufgabenstellung wäre nicht schlecht:

    Anzahl der Zahlen, wie organisiert, ...

    Gruß Frank



  • Für reine Zahlen könntest du ein mehrdimensionales Array anlegen und das binär abspeichern. Dann musst du dir nur einen "Dateikopf" ausdenken, der dir sagt, wie groß die Tabelle ist, wie viele Spalten sie hat, wie groß (=Typ) die einzelnen Spalten sind, etc. Das lässt sich über ne Struktur ganz nett aufbauen. Microchip hat so etwas für die Graphis-Library gemacht, vielleicht holst du dir in der Doku anregungen (BMP and Font Converter, Dokumentation durchsuchen).
    Text ist zwar nicht so effizient, aber deutlich leichter zu handhaben, weil du feste Steuerzeichen hast. CSV wäre da das Stichwort, erfordert natürlich einen gewissen Aufwand an Datenkonvertierung...



  • Die Zahlen will ich wie Heimelchen schon sagt über ein Mehrdimensionales Array Adressieren was später dan in mehreren RAM Bausteinen untergebracht ist, und Bin eine SD Karte oder so gespeichert werden soll. Mein Problem ist das das lesen und schreiben der Datenbank zum teil sehr schnell gehen muss und ich mehrere Microprozessoren bei ihren Zugriffen Koordinieren muss.



  • Einen schnelleren Zugriff als mit dem Array wirst du nicht kriegen, zumindest solange die Datenbank direkt im RAM liegt. Vielleicht lohnt sich, eine kleine Pseudo-Anwendung zu schreiben, die die Datenbank für alle Controller gemeinsam handelt. Dann gibts keine Synchronisierungsprobleme. Dann musst du dir nur noch eine schöne Schnittstelle ausdenken...



  • hmm,

    Das Ganze läuft dann schon auf einen eigene Lösung zu.

    Es wurde schon gesagt, am schnellsten sind hier entsprechende Structs,
    die man 'gnadenlos' mit fread füllt.

    Oder besser noch das File direkt vollständig in RAM läd und dann verpointert ...
    Aber dann dürfen die Structs dann keine Pointer selbst beinhalten,
    sondern nur Positionen auf andere Elemente.
    Mit Hilfe der Basis adresse im RAM kannst du dir dann die echten pointer berechnen und "gnadenlos" casten.

    Wenn du diesen Ansatz verfolgst solltest du davon ausgehen,
    das dir das 'Ding', bis es richtig läuft ein paar mal 'um die Ohren fliegt'.
    Also möglichst viel von dem Code voher im Debugger untersuchen.

    Viel Spaß damit, ich hatte mal eine ähnliche Aufgabe,
    wobei ich noch nicht mal alles in Ram geladen hatten, sonder zunächst nur die grundstrukturen + indizes. Und danach nur soviel (on demmand),
    wie gerade nötigt war. Das war im Grunde ein Ansatz für einen eigenen Memory Manager.

    Ich gehe davon aus daß du beim Microcontroller den Memory selbst mangagen musst.
    Ansonsten geht soetwas recht schön mit memory mapped files.

    Viel Spass noch mit dem Thema ...

    Gruß Frank


Anmelden zum Antworten