Forum: PC-Programmierung Datenbank sinnvoll oder übertrieben?


von Datenbankfragender (Gast)


Lesenswert?

Folgendes Szenario:

Gegeben sind mehrere Messerfassungsbausteine, die kontinuierlich 
Messwerte an einen FTP-Server senden. Die Ergebnisse liegen in 
XML-Dateien vor. Pro Messzyklus wird eine XML-Datei erstellt, also 
entstehen pro Tag einige hundert kleine XML-Dateien.

Ich möchte die Rohdaten im nächsten Schritt visualieren und Berechnungen 
mit durchführen.

Ist es an dieser Stelle sinnvoll, die Daten weiterhin in den XML-Dateien 
zu laden, wenn man sie braucht - oder ist dafür eine Datenbank sinnvoll?

Ich habe noch nie mit einer Datenbank gearbeitet, stelle mir aber jetzt 
die Frage, ob es Sinn macht, sich damit etwas zu befassen und z.B. ein 
Tool zu schreiben, dass mehrmals täglich ausgeführt wird und die in 
XML-Format vorliegenden Daten in eine Datenbank migriert und ich für die 
nachfolgende Auswertung dann auf die Datenbank zugreife?

Oder ist dort eher mit Kanonen auf Spatzen geschossen?

von Peter II (Gast)


Lesenswert?

kommt auf die Stuktur der Daten an. Wenn es etwas ist was sich sehr gut 
als Tabelle darstellen lässt, würde ich es auf jeden Fall mit einer DB 
machen.

von MaWin (Gast)


Lesenswert?

Bereits in einem Tag ist, bei pro Tag mehrere hundert Datensätze,
eine Visualisierung durch Lsden der XML Dateien vollkommener Blödsinn.
Natürlich kommen die Daten in eine (SQL-)Datenbank,
dann kann man auch auswählen, ob man die Werte von einem Tag, von einem 
Monat, die Mittewerte wochenweise aus den Daten der letzten 1 Jahre 
haben will.
Du solltest eher darüber nachdenken, ob nicht das Format der 
Datenlieferdatei von XML auf ein vernünftiges Format umgestellt wird.

Ich würde allerdings die Dateien aufbewahren und nicht löschen,
denn dann kann an die Datenbank notfalls neu laden, falls du
auf Grund deiner Unerfahrenheit mit Datenbanken nochmal was
ändern willst, oder die die Datenbank mit Datenverlust abschmiert.

von (prx) A. K. (prx)


Lesenswert?

Wenn Messwerte je nach Alter in zunehmenden Zeitintervallen 
zusammengefasst werden sollen, dann können Oetikers rrdtools sinnvoll 
sein.

von Datenbankfragender (Gast)


Lesenswert?

Danke für Eure Antworten!

MaWin schrieb:
> Du solltest eher darüber nachdenken, ob nicht das Format der
> Datenlieferdatei von XML auf ein vernünftiges Format umgestellt wird.

Was wäre denn ein vernünftiges Format? Es ginge bei manchen noch der 
CSV-Datei-Export, da lägen dann die Daten schon in tabellierter Form vor 
und das Migriertool würde wahrscheinlich weniger Lesezyklen benötigen, 
um die Daten aus der csv-Datei zu lesen.

von Manuel K. (manuel1139)


Lesenswert?

Würde mich jetzt auch interessieren was hier besser als XML sein sollte. 
Mit Sicherheit nicht CSV.

von Andy P. (bakaroo)


Lesenswert?

Eine Datenbank wäre sinnvoll, wenn du auf die Rohdaten mehr als einmal 
zugreifst. (z.B, Mehrere verschiedene Berechnungen mit jeweils denselben 
Daten). Wenn die Daten nur einmal angefasst werden, ist eine Datenbank 
hierbei einfach überdimensionierter Schwachsinn.
XML ist schon in Ordnung. Wenn du fit in eine der typischen Quick & 
Dirty-Scriptsprachen bist, würde sich Perl oder PHP anbieten. Dann 
kannst du z.b. einfach html-dateien basteln, die dir jeder Browser wie 
eine PowerPointPräsentation anzeigen kann ;)

: Bearbeitet durch User
von ui. (Gast)


Lesenswert?

eine einzelne datei fuer alles ist sicher sinnvoller wie zehntausende 
kleiner dateien. falls die daten immer dieselben sind, wuerde ich eher 
eine CSV dater verwenden als eine datenbank.

von Seano L. (Gast)


Lesenswert?

Manuel Kampert schrieb:
> Würde mich jetzt auch interessieren was hier besser als XML sein sollte.
> Mit Sicherheit nicht CSV.
XML ist doch Overkill für Messdaten (oder sind die so komplex 
strukturiert?), da reicht normalerweise CSV dicke aber das ist hier gar 
nicht der Punkt. Ich würde das wie Mawin machen, alles in eine DB rein, 
dann kannst du sinnvoll, flexibel und schnell damit arbeiten, XML und 
CSV lassen sich einfach in eine DB einpflegen. Und wie MaWin schon 
schrieb, behalte die XML Dateien vorerst, falls du mit einer DB noch 
nicht sicher umgehen kannst.

von Bastler (Gast)


Lesenswert?

Schon mal http://de.wikipedia.org/wiki/RRDtool gesehen?
Das sammelt Meßwerte und malt schöne Bilder.

von Mar V. (marvol)


Lesenswert?

Datenbank hört sich am Anfang etwas mächtig an, aber wie bereits von 
einigen im Vorfeld erwähnt, ist es sicherlich dann sinnvoll, wenn die 
Daten verrechnet oder einfach modifiziert werden müssen. Ich habe gute 
Erfahrungen mit sqlite (http://www.sqlite.org) gemacht, es ist 
eigentlich nur eine Programmbibliothek, die aber gut SQL Befehle 
verarbeitet. Mit MySql oder anderen müsstest Du noch einen Server 
aufsetzen, was etwas oversize sein könnte. Ich denke auch, dass das 
ständige Parsen der XML-Dateien auf die Dauer zu lange dauern wird. 
Allerdings ist zu beachten, dass sqlite nur bedingt Multiuserfähig ist, 
was MySQL ohne Probleme erledigt.

von MaWin (Gast)


Lesenswert?

> Was wäre denn ein vernünftiges Format? Es ginge bei manchen noch der
> CSV-Datei-Export, da lägen dann die Daten schon in tabellierter Form vor
> und das Migriertool würde wahrscheinlich weniger Lesezyklen benötigen,
> um die Daten aus der csv-Datei zu lesen

Ein vernünftiges Format wäre ein Format was auch eingelesen werden kann, 
nicht nur von deinem Zielprogramm, sondern von möglichst vielen 
Hilfsprogrammen.

Ein "Hilfsprogramm" ist das menschliche Auge, und da verfehlt XML schon 
mal jede Übersichtlichkeit Dank 99% overhead.

CSV wäre sicher eine Option, denn der einzige Nachteil von CSV ist die 
gegenüber XML fehlende Möglichkeit einen fremden Zeichensatz zu 
spezifizieren - bei Zahlen ist der so was von sinnlos wie ein Loch im 
Knie.

Du redest bei CSV von tabellierter Form, also mehrere Datensätze in 
einer Datei, und bei XML von einem Datensatz pro Datei. Wenn ich das 
richtig verstehe reduziert das also die Anzahl der Datein unter CSV 
gegenüber XML drastisch, ein klares Argument zugunsten von CSV.

Beliebt sind auch Dateien die direkt SQL Anweisungen zum Insert der 
Daten in die Datenbank enthalten, aber wenn deine Quellen das nicht 
liefern können, bleibt ja nur die Auswahl zwischen XML und CSV.

von Jörg K. (ingjki)


Lesenswert?

>
> Ich habe noch nie mit einer Datenbank gearbeitet, stelle mir aber jetzt
> die Frage, ob es Sinn macht, sich damit etwas zu befassen und z.B. ein
> Tool zu schreiben, dass mehrmals täglich ausgeführt wird und die in
> XML-Format vorliegenden Daten in eine Datenbank migriert und ich für die
> nachfolgende Auswertung dann auf die Datenbank zugreife?
>
> Oder ist dort eher mit Kanonen auf Spatzen geschossen?

Datenbank macht schon Sinn , und Du mußt auch nicht mit 
Kanonen(Oracle11,IBM-DB2oder MS-SQL)auf deine Datenspatzen schießen.
SQLite (o.ä.) reicht dafür (für den Anfang)bestimmt aus.
Wenn Du Firefox als Browser verwendest, brauchst Du als DB-Manger nur
folgendes Adon: 
https://addons.mozilla.org/de/firefox/addon/sqlite-manager/?src=search .
weitere Hilfe/DB-treiber usw. auf SQLite.org ,
die DB-Egine zum einbinden gibt es für zig Programmiersprachen
(von Basic über C , Pascal bis Java und noch Weitere , für Windows 
,Linux.. )

von Datenbankfragender (Gast)


Lesenswert?

MaWin schrieb:
> Du redest bei CSV von tabellierter Form, also mehrere Datensätze in
> einer Datei, und bei XML von einem Datensatz pro Datei. Wenn ich das
> richtig verstehe reduziert das also die Anzahl der Datein unter CSV
> gegenüber XML drastisch, ein klares Argument zugunsten von CSV.

Nicht alle Messgeräte liefern CSV-Dateien, aber alle XML-Dateien. Darum 
hab ich auch alle auf XML umgestellt. Aber ich seh kein so großes 
Problem darin, die Daten - z.b. um 12 Uhr und um 18 Uhr - durch ein 
kleines Programm in die Datenbank zu schreiben.

Ich hab mir jetzt einfach mal den MySQL-Server heruntergeladen, muss den 
aber erstmal zum Starten kriegen. Ich stelle mir das kleine C-Programm 
einfach so vor - ich öffne die XML-Dateien, hole die Infos raus und 
schreibe sie einfach mit nem Datenbankbefehl iin die Datenbank rein, so 
kompliziert scheint das nicht zu sein, und das Hilfsprogramm kann ich 
durch nen Batch auf dem Server zu gewünschen Uhrzeiten starten.

von Johannes E. (cpt_nemo)


Lesenswert?

Datenbankfragender schrieb:
> Ich hab mir jetzt einfach mal den MySQL-Server heruntergeladen,

Ich würde auch SQLite empfehlen, ist wesentlich einfacher in der 
Anwendung und sollte für deine Bedürfnisse genau das richtige sein.

Wenn du zum Einlesen der XML-Files Python verwendest, musst du nichts 
weiter installieren, da SQLite in Python schon integriert ist.

von Seano L. (Gast)


Lesenswert?

Johannes E. schrieb:

> Wenn du zum Einlesen der XML-Files Python verwendest, musst du nichts
> weiter installieren, da SQLite in Python schon integriert ist.
Ebenso Perl, PHP und Ruby also überall.

von Johannes E. (cpt_nemo)


Lesenswert?

Schwen Gel schrieb:
> Ebenso Perl, PHP und Ruby also überall.

Ja richtig, überall außer bei C.

Datenbankfragender schrieb:
> Ich stelle mir das kleine C-Programm einfach so vor ...

von chris (Gast)


Lesenswert?

Was sind das fuer Messgeraete, welche Daten ueber xml liefern, und diese
dann ueber FTP raufladen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Johannes E. schrieb:
> Ja richtig, überall außer bei C.

SQLite in C zu nutzen ist allerdings trivial.

von MaWin (Gast)


Lesenswert?

Datenbankfragender schrieb:
> Nicht alle Messgeräte liefern CSV-Dateien, aber alle XML-Dateien.

Das ist schade und natürlich ein Grund für XML

> Ich hab mir jetzt einfach mal den MySQL-Server heruntergeladen, muss den
> aber erstmal zum Starten kriegen. Ich stelle mir das kleine C-Programm
> einfach so vor

Hättest du CSV, müsste das Programm die Daten gar nicht anfassen, 
sondern bloss den Auftrag zum Reinladen der CSV-Datei in MySQL geben:

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE `datatab`
FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'
(`field1`, `field2`)";

von Frank (Gast)


Lesenswert?

Lade dir doch mal das Paket XAMPP, wenn du einen "richtigen" Rechner als 
Server verwenden willst - das gibts für Win, Mac und Linux. Da sind dann 
fertig konfiguriert ein MySQL sowie ein Apache mit PHP (nebst PHP My 
Admin) und ein FTP-Server drin - sozusagen ein "Rundum-Glücklich-Paket". 
Musst du nur noch programmieren ... :-)

Alterntive: Hast du schon mal an ein NAS (z.B. Qnap oder Synology) 
gedacht? Neben der Festplatte gibts auch für diese Dinger MySQL, Apache 
mit PHP, FTP usw. Sowas nutze ich z.B. erfolgreich für die Entwicklung 
von GPS-Tracker-Software ...

von Johann L. (radiostar)


Lesenswert?

Manuel Kampert schrieb:

> Würde mich jetzt auch interessieren was hier besser als XML sein sollte.
> Mit Sicherheit nicht CSV.

JSON, zum Bleistift. Und was ist gegen CSV auszusetzen?

von Seano L. (Gast)


Lesenswert?

Johannes E. schrieb:
> Ja richtig, überall außer bei C.
Das ist eine C-Bib. die lässt sich überall dazulinken, dafür wurde sie 
auch entwickelt.

von so what`? (Gast)


Lesenswert?

Wenn die XML-Dateien auf einem schnellen SSD-Laufwerk kannst du die auch 
jedesmal komplett einlesen, sollte auch bei tausenden von Dateien sehr 
schnell gehen. Auf einer normalen Festplatte per at-job scriptbasiert in 
die datenbank schaufeln.

gruß jo

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.