Salut à tous !
Pour ceux qui n’ont pas suivi ce sujet, je travaille depuis fin juin sur une mise à jour majeure de Gladys.
Cette mise à jour va changer la façon dont le stockage des valeurs historiques de capteurs fonctionne dans Gladys, en passant d’un stockage dans une base de donnée OLTP (SQLite) à une base de donnée OLAP (DuckDB).
Nous conservons SQLite pour toutes les données relationnelles (utilisateurs, maison, scènes, etc…), c’est uniquement les valeurs de capteurs qui seront stockées dans DuckDB.
Concrètement, cette mise à jour va offrir à tous les utilisateurs :
- Des bases de données beaucoup plus petites. @GBoulvin est passé d’une base de donnée de 11 Go à 65 Mo avec DuckDB, pour 11 millions d’états stockés. Cela est possible car ces 2 systèmes de base de données ne fonctionnent pas du tout de la même manière, et que DuckDB compresse agressivement les données time-series.
- Des graphiques précis et ultra-rapide, même sur des longues périodes. Fini les données agrégées peu précise de Gladys, il est maintenant possible de faire des graphiques sur des longues durées, mélangeant vieille donnée et valeurs live d’un capteur, chose qui n’était pas possible jusqu’ici !
- Une meilleure performance de Gladys en général : fini les process d’agrégations de données toutes les heures qui occupaient la bande passante disque sur les petites machines.
Pourquoi avoir attendu jusqu’à maintenant pour passer à ce système révolutionnaire ?
DuckDB est la seule base de donnée OLAP-fichier du marché.
Jusque-là, DuckDB était en alpha/beta, et chaque version amenait encore des changements breaking, ce qui n’était pas compatible avec notre besoin de stabilité dans Gladys.
En juin 2024, DuckDB est passé en 1.0 (stable), et j’ai immédiatement commencé les chantiers pour passer à ce système.
La suite
J’ai déjà installé cette version sur mon instance chez moi depuis le début de la semaine afin de vérifier que tout va bien, et pour l’instant tout se déroule parfaitement.
Si tout continue comme ça, je vais sortir cette version le lundi 26 août
Migrer dès maintenant ?
Si tu es à l’aise avec la ligne de commande, et que tu veux migrer toi aussi dès maintenant vers cette version, tu peux ! (Et me faire un retour).
L’image Docker est disponible à cette adresse :
gladysassistant/gladys:duckdb
Tu peux pull cette version:
docker pull gladysassistant/gladys:duckdb
Puis stopper ton container Gladys existant:
docker stop gladys && docker rm gladys
Puis relancer un container Gladys avec l’image DuckDB :
docker run -d \
--log-driver json-file \
--log-opt max-size=10m \
--cgroupns=host \
--restart=always \
--privileged \
--network=host \
--name gladys \
-e NODE_ENV=production \
-e SERVER_PORT=80 \
-e TZ=Europe/Paris \
-e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/gladysassistant:/var/lib/gladysassistant \
-v /dev:/dev \
-v /run/udev:/run/udev:ro \
gladysassistant/gladys:duckdb
(N’oublie pas de modifier cette commande pour ton cas personnel)
Ensuite tu pourras voir l’état de la migration sur ton tableau de bord.
Et une fois que la migration sera finie, tu pourras supprimer les anciens états SQLite dans les paramètres → « Système » de Gladys :
Note: Il faudra bien-sûr repasser à l’image gladysassistant/gladys:v4
une fois la mise à jour déployée !
Si tu veux attendre un peu
Si tu n’es pas chez toi le 26 août et que tu veux éviter que la mise à jour se déroule automatiquement quand tu n’es pas là, tu peux mettre en pause Watchtower d’ici là et relancer Watchtower à ton retour, ce qui t’évitera d’éventuels problèmes que tu ne pourrais pas régler à distance.
Je n’oppose pas SQLite et DuckDB
SQlite est un outil formidable, que l’on continue d’utiliser dans Gladys.
Cependant, pour un cas d’usage précis que nous avons (stockage de donnée time-serie), DuckDB est beaucoup plus adapté.
Pour le reste des tables, SQLite reste la meilleure solution sur le marché pour notre usage, et je reste un convaincu de SQLite !
Je n’oppose donc pas du tout ces deux bases de données, ce sont deux produits radicalement différents
Merci à ceux qui testeront, j’ai vraiment hâte de voir cette nouvelle techno dans vos mains !