Datenbanken -> wie anfangen?, erste allgemeine Tipps

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datenbanken -> wie anfangen?, erste allgemeine Tipps

    Hallo,

    ich hab die Aufgabe bekommen Messdaten, die bisher in einer Ordnerstruktur verwaltet werden, in eine Datenbank zu überführen. Da es sich um Daten von Dauermessstationen handelt, laufen sehr große Datenmengen auf. Derzeit ca. 30 Stationen die Sekundendaten messen und einmal täglich als .txt Datei an einen Server schicken.

    Die Idee ist nun, die txt Dateien auszulesen und die Rohdaten in eine Datenbank einzusortieren um zur Auswertung flexibel darauf zugreifen zu können.

    Die Anforderungen sind also:

    - verwalten großer Datenmengen
    - flexibles Ein- und Auslesen der Daten
    - Internetanbindung

    Da ich bisher wenig mit Datenbanken zu tun hatte, wäre ich dankbar, wenn mir jemand einen Tipp geben könnte wie ich die Sache am Besten angehe. Meine Fragen sind zunächst also:

    - welches Datenbanksystem eignet sich für die o.g. Anforderungen
    - gibt es empfehlenswerte Literatur zur Einführung (Internet, Buch ...)

    [font='&quot']Danke und Gruß![/font]
  • welche DB ist im einsatz?
    haben die datein festen satz aufbau?

    in oracle besteht die möglichkeit mit hilte einer external table die daten i neiner tabelle anzubilden.

    sonst die datei als clob einlesen und dann verarbeiten. dies kann dann direkt in der db mit hilfe des stored procedures gemacht werden.
    MfG ShureG

    There are 10 kinds of people. Those who understand binary notation, and those who do not.
  • Wie sieht die txt aus? ist es eher ein csv Aufbau?
    mit welcher Programmiersprache soll das bewerkstelligt werden?

    um wieviele Daten handelt es sich genau?
    60 Einträge pro Minute x 60 Minute x 24 = 86400 Zeilen/Station wieviel Spalten hat eine Zeile? und welche Daten sind es? float, int?

    was soll mit den Daten dann passieren? gibt es da eine Grafische Auswertung? wenn ja wie wird die Dargestellt? Web-basierend oder GUI für PC.

    welche Datenbanken stehen zur Verfügung?

    Ich würd mich an deiner Stelle mal mit SQL beschäftigen, Datenbanken gibt es sehr viele zB Oracle (Kostenpflichtig ab bestimmte Größe), MySQL, Firebird, PostgreSQL,...
  • danke schonmal für die Antwort:

    > um wieviele Daten handelt es sich genau?
    genau 86400 Zeilen/Station pro Tag, dann jeweils mit Zeitstempel + 3,4 Floatwerte. Die Stationen laufen wie beschrieben teilweise mehrere Jahre ...

    > was soll mit den Daten dann passieren? gibt es da eine Grafische Auswertung? wenn ja wie wird die Dargestellt? Web-basierend oder GUI für PC.
    optimalerweise beides.

    Ich bin mittlerweile soweit, dass ich PostgreSQL favorisiere. Und dann pro Messstation bzw Projekt eine Tabelle anlege. Soweit ich das verstanden habe ist der Vorteil bei PostgreSQL der schnelle Zugriff und auch die Möglichkeit Projekte komfortabel innerhalb einer Tabelle zu verwalten (und trotzdem maximale Flexibilität bei der späteren Auswertung/Vergleiche/Manipulation auch mehrerer Tabellen habe) .

    Wie gesagt, danke für die Antworten!
  • PostgreSQL klingt nach einer vernünfigen Wahl.

    Informiere dich erstmal über die Normalformen:
    de.wikipedia.org/wiki/Normalisierung_%28Datenbank%29
    Versuche sie richtig zu verstehen (also warum es diese Schitte gibt und wozu sie da sind).
    Und dann pro Messstation bzw Projekt eine Tabelle anlege.
    Allein schon dieses Zitat zeigt mir, das du dich bisher nicht damit beschäftigt hast.

    Dann brauchst du ein Programm, dass die TXT-Files ausliest und die Inhalte in die Datenbank schreibt. Das kann einer Programmiersprache deiner Wahl geschrieben werden C++, C', Java, ...
    Vielleicht geht es auch mit einen Shellscript.

    Den Zugriff auf deine Daten kannst du im Übrigen im Indexen beschleunigen. Kann kann solche Indexe über ein oder mehrere Datenbankspalten anlegen und damit anfragen exorbitant schneller machen:
    postgresql.org/docs/current/static/sql-createindex.html
  • hab jetzt genau das gleiche Problem.

    Allerdings muss ich MySQL verwenden.

    Meine Anforderungen sind das zB eine Messstation über die Wolke jede Stunde 3600 Einträge macht.

    Das sind insgesamt 16 Werte unter anderen auch die Station ID.

    Insgesamt sind das 5 Messstationen und erweiterbar.
    Somit hätte ich ungefähr 86400x5 = 432000 Einträge/Tag mit 5 Stationen wenn da jetzt welche dazukommen...

    Wenn die Stationen jetzt 1 Jahr laufen würden das 158112000 Einträge/Jahr sein.

    hat da jemand Erfahrung mit solchen Datenmengen? Mit Datenbanken im Allgemeinen hab ich erfahrung allerdings bis jetzt nur im Webbereich und da hab ich nicht so eine Datenmenge.

    normalerweise würde ich sagen ich brauch dazu nur eine Tabelle damit Sie einfach erweiterbar ist. Allerdings bei so einer Datenmenge hab ich echt keinen Plan.

    Danke
    Jonny
  • Ich würde sagen, bei solchen Datenmengen mit so viel Schreibzugriffen kann es sinnvoll sein, nicht auf relationale Datenbanken zu setzen.

    Sogenannte NoSQL-Datenbanken sind eher für das gemacht, was du möchtest:
    de.wikipedia.org/wiki/NoSQL

    Auch hier gibt es kostenlose Datenbanksysteme:
    java.dzone.com/articles/open-source-nosql-databases

    Allerdings kennen sich auf diesem Gebiet weit weniger Leute aus. Du musst dich also selbst schlau machen.
  • Danke für die Antworten.
    Ja es sind höchstwahrscheinlicht 10 boolean Werte + 5 float Werte dazu noch Zeitstempel und Stationnr.

    bzgl. PHP und Tabellen erstellen, das Problem ist das auf den Microcontroller zwar ein Webserver läuft allerdings kein PHP.
    ok Danke, dann werd ich das einfach mal probieren wie das funktioniert wenn ich 1x pro Stunde 60 Werte in die Tabelle eintrage wie schnell das ganze funktioniert usw.

    Wenn das ganze nicht so einfach geht, werde ich eine csv zum Server mittels TCP transferieren und der Server soll das ganze in die DB oder was auch immer eintragen.