mongodb, influxdb mariadb,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf ·...

23
MariaDB, MongoDB, InfluxDB Alexander Brunner, Bernd Lechner

Upload: others

Post on 08-May-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

MariaDB, MongoDB, InfluxDB

Alexander Brunner, Bernd Lechner

Page 2: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Modellierung der Daten - MariaDB● Jeder Sensor als eigene Tabelle?

ODER

● eine Tabelle für alle Messwerte?

Page 3: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Befüllen der Datenbanken - erste ErfahrungenMariaDB

● Erste (naive) Idee: LOAD DATA LOCAL INFILE values.csv ... mit AUTO_INCREMENT value_id, PRIMARY KEY (value_id)

○ Befüllen: ca. 2 Std. 20 Min.

● Bessere Idee: PRIMARY KEY (point_uid, time_stamp)○ Befüllen: ca. 1 Std. 36 Min.○ nicht vorhandene Werte mit NULL gefüllt

Page 4: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Befüllen der DatenbankenMongoDB

● Import-Tool für CSV-Dateien - mongoimport (Schalter -- headerline?, tail

-n +2 values.csv > values_new.csv)

○ Befüllen mit Daten aus values.csv ca. 50 Min.

● Beobachtung: timestamps in DB + 2 Std.

○ Adaptiertes Python-Skript (Bibliothek pymongo), aber 16 Min. für Testdatensatz (ca. 1

Mio. Messwerte)

Page 5: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Modellierung der Daten - MongoDB● Philosophie von MongoDB/Dokumentendatenbanken

○ möglichst eingebettete Daten, nicht viele Collections (“Tabellen”)

● Versuch: Mergen mit points.csv

○ mongoimport gibt ohne Fehlermeldung nach ein paar Datensätzen auf

○ Möglichkeit: mit Python-Skript zuerst CSV-Dateien mergen (eigene Big Data - Bibliotheken:

pandas, pyspark)

Page 6: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

MongoDB Laufzeit

Page 7: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Befüllen der DatenbankenInfluxDB

● Versucht mit diversen Python-Skripts● Versucht mit telegraf● Ergebnis:

○ beide Python-Skripts gescheitert○ telegraf startete nicht, weder in der VM noch in der ”Bash on Ubuntu on Windows”

Page 8: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

AbfragenMariaDB

● Wie richtige Spalte auslesen? ○ COALESCE (boolean_value, integer_value, float_value, string_value)

● probehalber mit “naiver” DB (AUTO_INCREMENT) ○ z.B. Durchschnitt Messpunkt 21: 0.04 Sek. | 37.49 Sek.

-> (automatisch) Index über PRIMARY KEY (point_uid, timestamp)

Page 9: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Lineare Interpolation (letzter/nächster Wert)

Page 10: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam
Page 11: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Softsensor “Raumklima”Temperatur + Luftfeuchtigkeit in Raum pz206026 (Inffeldg. 13/6. St.)

Mittelwert aus beiden Werten (fill-forward)

Page 12: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam
Page 13: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

AbfragenMongoDB

● z.B. Maximum/Minimum für einen Sensor innerhalb eines Zeitrahmens

Page 14: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam
Page 15: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Tool: MongoDB NoSQLBooster● https://nosqlbooster.com/● Tool womit man “einfache” SQLStatements in MongoDB laufen lassen

kann

Page 16: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam
Page 17: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Ein Laufzeiten MariaDB vs. MongoDBLaufzeiten MariaDB MongoDB MongoDB

(ohne Index über point_uid)

Letzter Wert (fill-forward) (Nr. 31) vor 2018-01-01, 0:00

0.00 Sek 9.4 Sek > 3 Min

Max.wert (Nr. 31), 2017-05-06(Anz. Messwerte: 3920)

0.03 Sek 13. 2 Sek > 3 Min

Durchn. (Nr. 31), 2017-05-06

0.03 Sek 9.5 Sek > 3 Min.

Page 18: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Hypothesen1. Un/zuverlässigkeit der Sensoren des Tinkerforge-Sets 03/pz206026 im Vergleich?

● Sensoren Nr. Nr. 21-24, 26-32

● Beobachtung: alle Sensoren liefern im Normalbetrieb 1 Messwert pro 5 Sekunden

● Idee: Maß für missing values:

○ (Letzter Timestamp eines Sensors - erster Timestamp/5) -> erwartete Anzahl an

Messpunkten

○ Prozentzahl: tatsächliche Werte/erwartete Werte

Page 19: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Sensor Nr.

Messwerte Uptime in % vom ersten bis letzten Messwert

21 Beschl.(?) 89,6

22 Höhe(?) 86,6

23 Beschl.(?) 89,6

24 Lautstärke 49,5

26 Beschl.(?) 89,6

27 Luftdruck 86,2

28 Helligkeit 59,9

29 Chip-Temperatur 40,8

30 Luftfeuchtigkeit 51,4

31 Temperatur 21,6

32 CO2 22,1

Page 20: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Hypothesen2. Korrelation zwischen zwischen Innentemperatur und Außentemperatur

● Sensor Nr. 40 Temperatur in Graz: halbstündlich Werte

● Sensor Nr. 38 Innentemperatur in Raum pz206026: alle 5 Sekunden Werte

zu halbstündlichen Außentemperaturwerten mittels forward-fill Innentemperaturwert

-> 2 Messreihen, damit Pearson-Korrelationskoeffizient

Problem: SQL-Abfrage noch sehr ineffizient (für 10 Werte ca. 10 Sekunden)

Page 21: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Rückschläge● NoSQL Abfrage der Interpolation● NoSQL Abfrage des Softsensors● InfluxDB laden

Page 22: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Lessons learned (1)● Besonderheiten im Umgang mit “big data” (u.a. “Datenblindheit”,Geschw.)

● MongoDB-Abfragen schnell unübersichtlich

● Langsamer als SQL-Abfragen in MariaDB

● InfluxDB mühsam zum Laufen zu bringen: kein praktischer Import von

CSV-Dateien - MongoDB: Tool “mongoimport”

● InfluxDB wahrscheinlich besser geeignet für unsere Aufgabe

○ Für Zeitreihen optimiert

Page 23: MongoDB, InfluxDB MariaDB,kti.tugraz.at/staff/rkern/courses/dbase2/2018/team_1.pdf · MongoDB-Abfragen schnell unübersichtlich Langsamer als SQL-Abfragen in MariaDB InfluxDB mühsam

Lessons learned (2)● MariaDB sehr kompliziert bei statistischen Auswertungen

○ InfluxDB besser geeignet?

● Gut gewählte Indizes haben große Auswirkung auf Laufzeit