Was es jetzt braucht, sind Testdaten und Werkzeuge wie Pgbench [35] samt Ablauf für automatisierte Tests. Erstere erzeugen Sie entweder selbst oder greifen auf gesammelte Daten zurück. Sofern solche nicht vorrätig sind, bekommen Sie sie etwa von Meteostat [36],[37]. Dieser spendenfinanzierte Dienst bietet Messwerte für Temperatur, Niederschlag, Windgeschwindigkeit, Windrichtung und Luftdruck zum Herunterladen an. Dazu kombiniert er Messwerte verschiedener Stationen im Umkreis, um ein realistischeres Ergebnis für die Region zu erhalten.
Abbildung 1 zeigt den Temperaturverlauf für sieben Tage für die Region Neuenburg/Neuchâtel in der Nordwestschweiz. Einbezogen in die Berechnung werden hier Stationen, die sich im Umkreis von etwa 50 bis 100 Kilometern um den Messpunkt befinden. Benachbarte Stationen sind etwa Payerne im Süden, Bern im Südosten, Grenchen im Nordosten und Montbéliard im Norden.
Fazit
Wie Sie gesehen haben, ist der Betrieb eines Messnetzes aus Datenbanksicht mit überschaubarem Aufwand möglich. Schwachpunkt im Beispiel ist der zentrale Knoten mit dem DBMS. Um die Ausfallsicherheit zu erhöhen, bestünde die Möglichkeit, die Datenbank auf einem RAID (Redundant Array of Independent Disks) zu betreiben. Der Nachteil ist aber offensichtlich: Befinden sich alle Komponenten des RAIDs am selben Ort und der Strom fällt aus, ist das System trotzdem nicht zu erreichen.
Alternativ richten Sie einen Puffer für 48 Stunden auf den Messstationen ein. Damit überbrücken Sie einen Netzwerkausfall für diesen Zeitraum. Außerdem bietet es sich an, die Daten verteilt zu speichern oder in einem regelmäßigen Abgleich untereinander, über ein Meshnet oder mittels mehrerer Instanzen der PostgreSQL-Datenbank auszutauschen. Ein Raspberry Pi gibt das seitens der Hardware her.
Alle diese Varianten führen zu Themen, die den Rahmen dieses Beitrags sprengen würden und die sich einzeln genauer beleuchten ließen. Geht es Ihnen um ein tieferes Verständnis des DBMS PostgreSQL, sind die Tutorials [38] ein guter Startpunkt zum Nachlesen. (agr)
Danksagung
Die Autoren bedanken sich bei Axel Beckert und Julie Göschl für ihre Unterstützung bei der Vorbereitung des Artikels.
Über die Autoren
Frank Hofmann arbeitet zumeist von unterwegs aus als Entwickler, Trainer und Autor. Er gehört zu den Verfassern des Debian-Paketmanagement-Buches. Der gebürtige Kanadier Gerold Rupprecht wohnt seit 25 Jahren in Genf und hat sich auf Finanzsoftware sowie die Evaluierung und Optimierung IT-bezogener Prozessabläufe spezialisiert.
Infos
- “Temperaturmessung mit dem RasPi”: https://test-wetterstation.de/temperaturmessung-mit-dem-raspberry-pi
- “Mehrere DS1820 (DS18b20) Temperatursensoren mit dem Raspberry auslesen”: https://test-wetterstation.de/mehrere-ds1820-ds18b20-temperatursensoren-mit-dem-raspberry-auslesen
- Feinstaubmessung: Frank Hofmann, “Dicke Luft”, RPG 12/2017, S. 8, https://www.raspi-geek.de/39497
- Luftdaten.info: https://luftdaten.info
- PostgreSQL: https://www.postgresql.org
- PhpMyAdmin: https://www.phpmyadmin.net
- PgAdmin: https://www.pgadmin.org
- GraphQL: https://graphql.org
- PC Engines: https://www.pcengines.ch
- Lenovo ThinkEdge SE30: https://www.lenovo.com/ch/de/desktops-and-all-in-ones/thinkcentre/m-series-tiny/ThinkEdge-SE30/p/LEN102C0004
- Docker: https://www.docker.com
- Podman: https://podman.io
- Long Range Wide Area Network (LoRaWAN): https://de.wikipedia.org/wiki/Long_Range_Wide_Area_Network
- Datenbankmanagementsysteme: https://de.wikipedia.org/wiki/Liste_der_Datenbankmanagementsysteme
- eXist-DB: https://github.com/exist-db/exist/
- BaseX: https://github.com/BaseXdb/basex
- Neo4j: https://neo4j.com
- SQLite: https://www.sqlite.org
- MariaDB: https://mariadb.org
- RSQL: https://www.rsql.ch
- Zope: https://zope.org
- CouchDB: https://couchdb.apache.org
- MongoDB: https://www.mongodb.com
- Libpq: https://www.postgresql.org/docs/14/libpq.html
- DBD:pg: https://metacpan.org/pod/DBD::Pg
- Psycopg2: https://pypi.org/project/psycopg2/
- Py-postgresql: https://github.com/python-postgres/fe
- Pg8000: https://pypi.org/project/pg8000/
- Datentypen in PostgreSQL: https://www.postgresql.org/docs/13/datatype.html
- “On Rocks and Sand”: https://www.2ndquadrant.com/en/blog/on-rocks-and-sand/
- RSQL: Frank Hofmann, Gerold Rupprecht, Mandy Neumeyer, “Datenstapler”, LU 01/2018, S. 58, https://www.linux-community.de/39861
- “PostgreSQL – How to Return a Result Set from a Stored Procedure”: https://sqlines.com/postgresql/how-to/return_result_set_from_stored_procedure
- Cursor in PGSQL: https://www.postgresql.org/docs/14/plpgsql-cursors.html
- PL/pgSQL Cursor: https://www.postgresqltutorial.com/plpgsql-cursor/
- Pgbench: https://www.postgresql.org/docs/14/pgbench.html
- Meteostat (Entwicklerseite): https://dev.meteostat.net
- Meteostat: https://github.com/meteostat
- PostgreSQL-Tutorial: https://www.postgresqltutorial.com






