Vorgefertigte Prozeduren und Trigger sind mächtige Funktionen, die Abfragen in MariaDB beschleunigen.
MariaDB gehört zu den beliebtesten Open-Source-Datenbanken zur Entwicklung einfacher Web-Anwendungen. Die kleine, schnelle Datenbank kommt in vielen Projekten zum Einsatz und läuft selbst auf einem Raspberry Pi ohne Probleme. Dabei beherrscht MariaDB mittlerweile Funktionen, die sonst nur große kommerzielle Vertreter wie Oracle mitbringen. Um es nicht allzu theoretisch zu gestalten, dient im Folgenden das Erfassen von Messdaten, aus denen eine Software automatisch Statistiken erzeugt, als Beispiel für die Fähigkeiten.
Für das Experiment mit Prozeduren benötigen Sie zunächst eine Datenbank und eine Quelle für die Testdaten. Mit den Kommandos aus Listing 1 installieren Sie die Datenbank und alle nötigen Tools auf einem Raspberry Pi. Als Datenquelle kommt der Sensor BMP280 [1] zum Einsatz, der über die I2C-Schnittstelle mit dem RasPi verbunden ist.
Listing 1
Kommandos zur Installation
$ sudo apt update $ sudo apt upgrade $ sudo apt install mariadb-server python3-smbus i2c-tools python3-pip $ sudo pip3 install adafruit-circuitpython-bmp280 $ sudo pip3 install adafruit-blinka $ pip3 install mariadb
Die Schnittstelle aktivieren Sie mit dem Tool Raspi-config unter 3 Interface Options | P5 I2C. Der BMP280 misst Luftdruck und Temperatur. Die Tabelle “BMP280 anschließen” zeigt, wie Sie den Baustein mit dem Raspberry Pi verbinden. Beachten Sie, dass Sie SDO auf 3,3 Volt legen, damit der Sensor die richtige I2C-Adresse verwendet. Mit dem Tool I2cdetect überprüfen Sie, ob die Verbindung steht (Listing 2). Der BMP280 meldet sich unter der Adresse 0x77.
|
Header |
BMP280 |
|---|---|
|
Pin 1 (3,3V) |
VCC |
|
Pin 1 (3,3V) |
SDO |
|
Pin 3 (SDA) |
SDA |
|
Pin 5 (SCL) |
SCL |
|
Pin 9 (GND) |
GND |
Listing 2
Überprüfen der I<+>2<+>C-Verbindung
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
[...]
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77
Um auf dem Raspberry Pi die Datenbank und einen Datenbankbenutzer anzulegen, verwenden Sie die Befehle aus Listing 3. Listing 4 zeigt den Befehl, mit dem Sie das SQL-Skript anwenden und zugleich die Befehle, mit denen Sie den Zugriff von außen erlauben. Das letzte Kommando startet den Server neu, damit dieser die Änderungen übernimmt. Damit sind die Vorbereitungen beendet und die Datenbank steht bereit.
Listing 3
Datei create-user.sql
CREATE USER 'sensor'@'%' identified by 'sensor123!'; CREATE DATABASE sensor; GRANT ALL PRIVILEGES ON sensor . * TO 'sensor'@'%'; FLUSH PRIVILEGES;
Listing 4
Datenbank anlegen
sudo mysql < create-user.sql cd /etc/mysql sudo echo "bind-address = 0.0.0.0" | sudo tee -a mariadb.conf.d/50-server.cnf sudo systemctl restart mariadb
Gutes Werkzeug
Wie immer im Leben sind Geschick und Wissen nur die halbe Miete. Um effizient mit MariaDB zu arbeiten, benötigen Sie ein gutes Werkzeug, das Ihnen die Arbeit erleichtert. Es gibt viele Tools, die hier zur Auswahl stehen. Der Autor verwendet aktuell gern DBeaver [2]. Das Tool steht kostenlos für Windows, MacOS und Linux bereit. Für Linux gibt es unterschiedliche Varianten, unter anderem ein Paket für den RasPi.
Darüber hinaus gibt es ein Paket für die moderne und sehr mächtige Paketverwaltung Snap. Falls Sie tatsächlich kein Paket finden sollten, das zu Ihrem Betriebssystem passt, laden Sie den Quellcode aus Github [3] herunter. Ein Blick in diesen zeigt, dass die Entwickler noch fleißig an dem Projekt arbeiten. Es besteht also keine Gefahr, dass sie Bugs nicht mehr fixen.
DBeaver unterstützt von Haus aus über 80 Datenbanksysteme und bietet extrem viele Funktionen für den Entwickler. Zusätzlich sind die typischen Funktionen für den Administrator von Datenbanksystemen mit dabei. Bei Bedarf steuern Sie MariaDB klassisch von der Kommandozeile aus. Es fällt aber gerade Einsteigern erheblich einfacher, Prozeduren mit DBeaver zu erstellen und zu bearbeiten.
Um mit einer Datenbank zu arbeiten, legen Sie zuerst in DBeaver eine Verbindung an. Klicken Sie dazu oben links auf das Icon mit dem Stecker und wählen Sie MariaDB aus. Abbildung 1 zeigt die für das Beispiel nötigen Werte. Achten Sie darauf, die IP-Adresse Ihres RasPis einzutragen. Das Passwort lautet sensor123!. Mit Verbindung testen… überprüfen Sie, ob die eingegebenen Werte in Ordnung sind. Ein Klick auf Fertigstellen speichert die Verbindung zur Datenbank.
Legen Sie nun über DBeaver eine neue Tabelle für die Temperaturmesswerte an. Klicken Sie sich dazu im Baum auf der rechten Seite bis auf die Ebene der Tabellen durch (Database Navigator | sensor | Tables). Ein Rechtsklick auf Tables öffnet ein Kontextmenü, in dem Sie Anlegen Tabelle auswählen (Abbildung 2).
Zum Speichern der Tabelle klicken Sie auf Save. Das Programm zeigt Ihnen noch einmal das SQL-Statement, das es gegen die Datenbank ausführt. Das hat den Vorteil, dass Sie es noch einmal kontrollieren können. Der Button Persistieren speichert die Tabelle in der Datenbank.








