Ús de MariaDB per emmagatzemar dades de la Internet de les Coses

De binefa.com
Salta a la navegació Salta a la cerca

Instal·lació de la base de datos MariaDB[modifica]

GNU/Linux[modifica]

Un tutorial d'instal·lació de MariaDB en Debian 11

Passos de la instal·lació des de el terminal:

sudo apt update
sudo apt install mariadb-server
sudo mysql_secure_installation (en aquest pas el sistema pregunta una contrasenya per a l'usuari root)

Windows[modifica]

Descàrrega de MariaDB per Windows

Instal·lació a Windows

Primera interacció[modifica]

Un tutorial de creació d'usuaris amb diferents permisos (privilegis)

Des del terminal del sistema operatiu es demana entrar al terminal de MariaDB. El primer cop com a usuari root:

mysql -u root -p
(el sistema demana la contrasenya de l'usuari root)

Dins del terminal de MariaDB es creen els usuaris iot i convidat amb les seves respectives contrasenyes. Es crea la base de dades aula508, s'atorguen tots els permisos a l'usuari iot i tan sols lectura a l'usuari convidat:

CREATE USER 'iot'@'localhost' IDENTIFIED BY 'iot';
CREATE USER 'convidat'@'localhost' IDENTIFIED BY 'benvingut';

CREATE DATABASE aula508;
SHOW DATABASES;
USE aula508;

GRANT ALL PRIVILEGES ON aula508.* TO 'iot'@'localhost';
GRANT SELECT ON aula508.* TO 'convidat'@'localhost';
FLUSH PRIVILEGES;

Accés a la base de dades des del terminal[modifica]

Per a accedir a la base de dades hi ha tres usuaris amb permisos diferents:

- root: Té tots els permisos. POt crear usuaris i bases de dades.

- iot: Té permisos de lectura i escriptura sobre la base de dades aula508.

- convidat: Té permisos de lectura sobre la base de dades aula508.

Per a accedir al terminal de MariaDB com usuari iot:

mysql -u iot -p
(el sistema pregunta per la contrasenya de d'aquest usuari. És la que surt a l'apartat anterior després de IDENTIFIED BY)

Per a accedir al terminal de MariaDB com usuari convidat:

mysql -u convidat -p
(el sistema pregunta per la contrasenya de d'aquest usuari. És la que surt a l'apartat anterior després de IDENTIFIED BY)

Creació de taules[modifica]

Per a crear taules a la base de dades cal que l'usuari tingui permisos d'escriptura a la base de dades (iot té permisos d'escriptura a la base de dades aula508. convidat no té permisos d'escriptura a la base de dades aula508).

Es comparteix la mateixa base dedades (aula508), les dades a introduir les podem diferenciar per nom de taula.

mysql -u iot -p
(el sistema pregunta per la contrasenya de d'aquest usuari. És la que surt a l'apartat anterior després de IDENTIFIED BY)
USE aula508;
CREATE TABLE m28XX_Temperatura (
 time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 value FLOAT,
 PRIMARY KEY (time));

value es el nom del valor que s'introdueix a la taula. Es declara com a FLOAT (nombre real. Permet decimals).

Esborrat de taules[modifica]

Aneu amb compte al moment d'esborrar una taula. El procés esborra totes les dades i la mateixa taula. No és possible recuperar les dades de les taules si no heu fet una còpia de seguretat.

Per a esborrar taules a la base de dades cal que l'usuari tingui permisos d'escriptura a la base de dades (iot té permisos d'escriptura a la base de dades aula508. convidat no té permisos d'escriptura a la base de dades aula508).

mysql -u iot -p
(el sistema pregunta per la contrasenya de d'aquest usuari. És la que surt a l'apartat anterior després de IDENTIFIED BY)
USE aula508;
DROP TABLE m28XX_Temperatura;

Inserció de dades[modifica]

La inserció (també coneguda per escriptura) de dades ha de fer-la un usuari amb permisos suficients (l'usuari iot pot escriure).

Exemple d'inserció del valor 23.4 como a valor al camp value.

insert into m28XX_Temperatura (value) values (23.4);

Lectura de dades[modifica]

La lectura de dades ha de fer-la un usuari amb permisos suficients (els usuaris iot i convidat poden llegir).

Documentación oficial de la orden SELECT.

Visualització de totes les dades a la taula m28XX_Temperatura:

select * from m28XX_Temperatura;

Exemple de resposta al terminal de MariaDB:

MariaDB [aula508]> select * from m28XX_Temperatura;
+---------------------+-------+
| time                | value |
+---------------------+-------+
| 2023-04-05 17:23:59 |  23.4 |
| 2023-04-05 17:28:29 |  23.7 |
+---------------------+-------+
2 rows in set (0.001 sec)

Getting Data from MariaDB

Creació de taules vista[modifica]

Per a poder fer servir la base de dades a sistemes externs de graficació caldrà que el registre del moment d'inserció de la dada sigui expressat en format de l'època UNIX. Exemple de visualització d'una taula vista amb el valor del temps en format Unix:

MariaDB [aula508]> select * from m28XX_Temperatura_v;
+------------+-------+
| time       | value |
+------------+-------+
| 1680708239 |  23.4 |
| 1680708509 |  23.7 |
+------------+-------+
2 rows in set (0.000 sec)

Creació de la taula vista m28XX_Temperatura_v amb la unitat de temps canviada (prenent com a origen la taula m28XX_Temperatura):

CREATE VIEW m28XX_Temperatura_v AS select UNIX_TIMESTAMP(time) as time, value from m28XX_Temperatura;

Inserció i lectura de dades múltiples[modifica]

Habitualment caldrà introduir un grup de dades alhora. Per exemple, aquesta taula conté tres valores al moment de fer-se el registre:

MariaDB [aula508]> select * from m28XX_T_RH_P_v;
+------------+--------+---------+---------+
| time       | valueT | valueRH | valueP  |
+------------+--------+---------+---------+
| 1680884504 |   23.4 |   45.64 | 1002.34 |
| 1680884734 |   23.7 |   45.21 | 1003.04 |
| 1680885724 |  17.89 |   44.32 | 1001.23 |
| 1680885726 |  19.03 |   40.65 | 1002.11 |
| 1680885728 |  15.43 |   56.78 | 1000.87 |
| 1680886069 |  19.03 |   40.65 | 1002.11 |
+------------+--------+---------+---------+
6 rows in set (0.000 sec)
  • Creació de la taula amb dades múltiples (valueT, valueRH i valueP):
CREATE TABLE `m28XX_T_RH_P` (
 `time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 `valueT` FLOAT,
 `valueRH` FLOAT,
 `valueP` FLOAT,
 PRIMARY KEY (`time`))
ENGINE = InnoDB;
  • Inserció de dades múltiples:
insert into m28XX_T_RH_P (valueT,valueRH,valueP) values (23.4,45.64,1002.34);
  • Lectura de dades múltiples:
select * from m28XX_T_RH_P;
  • Creació de la taula vista:
CREATE VIEW m28XX_T_RH_P_v AS select UNIX_TIMESTAMP(time) as time, valueT, valueRH, valueP from m28XX_T_RH_P;