You are not logged in.

  • Login

ho-st

Unregistered

1

Friday, January 6th 2012, 10:41am

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]

2

Saturday, January 7th 2012, 11:48am

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.

3

Saturday, January 7th 2012, 1:01pm

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,...

arz

Unregistered

4

Monday, January 9th 2012, 5:22pm

danke schonmal für die Antwort:

Quoted

> 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!

5

Tuesday, January 10th 2012, 7:11pm

PostgreSQL klingt nach einer vernünfigen Wahl.

Informiere dich erstmal über die Normalformen:
http://de.wikipedia.org/wiki/Normalisierung_%28Datenbank%29
Versuche sie richtig zu verstehen (also warum es diese Schitte gibt und wozu sie da sind).

Quoted

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:
http://www.postgresql.org/docs/current/s…reateindex.html

ho-st

Unregistered

6

Thursday, January 12th 2012, 5:09pm

danke für die links!

7

Saturday, January 14th 2012, 10:09pm

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

Janniboj

Unregistered

8

Saturday, January 14th 2012, 10:49pm

An sich hat MySQL keine Probleme mit großen Datenmengen, so steht es hier: http://dev.mysql.com/doc/refman/5.1/de/table-size.html

Du solltest auf jeden Fall die Datenbank normalisieren und darauf achten, keine Daten soppelt zu speichern.

Theoretisch kann man für jede Messstation auch eine neue Tabelle anlegen, anstatt alle in eine zu ballern. Mit PHP geht das ja easy.

9

Sunday, January 15th 2012, 12:58am

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:
http://de.wikipedia.org/wiki/NoSQL

Auch hier gibt es kostenlose Datenbanksysteme:
http://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.

10

Sunday, January 15th 2012, 12:12pm

Also 1 Eintrag pro Sekunde kriegt ein normales MySQL locker hin. Auf wieviel GB kommst du denn so pro Tag/Monat?

Wir speichern übrigens 100.000 Einträge pro Sekunde auf einem einzigen Redis Server.
Für NoSQL Datenbanken musst du dir halt noch eine sinnvolle Struktur überlegen, die auf deine Daten passen.

11

Sunday, January 15th 2012, 3:42pm

Naja, ein Eintrag pro Sekunde und Messstation.
Aber ja, wenn es wirklich nur der Messwert, ein Zeitstempel und eine Referenz auf die Messstation ist, dann sollte es wohl reichen.
Das Beste ist es wohl, es einfach einmal zu testen.

12

Monday, January 16th 2012, 9:21am

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.

Social bookmarks