Quand Home Assistant doit-il utiliser une base de données ou un hôte de stockage distinct ?

Eva Wong est la rédactrice technique et bricoleuse résidente chez ZimaSpace. Geek depuis toujours, passionnée par les homelabs et les logiciels open source, elle se spécialise dans la traduction de concepts techniques complexes en guides accessibles et pratiques. Eva croit que l’auto-hébergement doit être amusant, pas intimidant. À travers ses tutoriels, elle donne à la communauté les moyens de démystifier les configurations matérielles, depuis la construction de leur premier NAS jusqu’à la maîtrise des conteneurs Docker.

Home Assistant ne devrait utiliser une base de données ou un hôte de stockage séparé que lorsque cette séparation résout un problème mesuré de capacité, de conservation, de sauvegarde ou de domaine de panne. Déplacer l’état hors du contrôleur n’est pas automatiquement une amélioration.

Pour de nombreux foyers, une base de données Recorder SQLite locale sur un stockage SSD fiable constitue la solution la plus simple, car elle élimine les dépendances au réseau, à l’authentification, au DNS et au démarrage d’un serveur de base de données. Avant de créer un autre hôte, déterminez d’abord si le véritable problème vient d’un nombre excessif d’écritures du Recorder, d’une conservation trop longue, de requêtes d’historique lentes, d’une capacité locale limitée ou du besoin de récupérer un service indépendamment.

Réglez le Recorder avant d’ajouter un serveur de base de données

La croissance du Recorder dépend des entités et événements enregistrés, de leur fréquence de changement et de la durée de conservation de l’historique. Si des capteurs bruyants ou des domaines inutiles dominent les écritures, déplacer la même charge vers un serveur de base de données plus grand ne fait que déplacer le problème au lieu de le résoudre.

Un processus actuel de réglage du Recorder montre comment la conservation, les règles d’inclusion et d’exclusion ainsi que le comportement des validations influencent la charge d’écriture avant d’envisager une migration de base de données. Mesurez la taille de la base de données, le temps des requêtes d’historique, la latence du stockage et l’activité d’écriture après le réglage.

Conservez la base de données en local lorsque la charge réglée reste réactive, que les sauvegardes se terminent dans la fenêtre de maintenance et que la capacité SSD disponible reste confortable. La séparation doit répondre à une exigence non satisfaite, et non à l’idée générale que les bases de données client-serveur sont toujours plus rapides.

Utilisez une base de données externe lorsque ses avantages opérationnels sont réels

Un hôte MariaDB, MySQL ou PostgreSQL séparé peut être pertinent lorsque Home Assistant partage une plateforme de base de données déjà bien administrée, lorsque la conservation d’un historique long crée une pression durable sur les requêtes, lorsque l’hôte du contrôleur doit rester léger ou remplaçable, ou lorsque la sauvegarde et la supervision de la base de données doivent suivre un cycle de vie indépendant.

Un exemple de migration de SQLite vers MariaDB illustre les nouveaux éléments introduits par ce choix : service de base de données, identifiants, adresse réseau, initialisation du schéma, procédure de migration, validation et restauration. Un cas concret de migration d’une base de données Home Assistant plus conséquent montre pourquoi un historique long et de grands volumes de données peuvent justifier cette administration supplémentaire.

L’article de ZimaSpace consacré à la fiabilité des mises à niveau avec une base de données externe définit la limite de maintenance correspondante : la base de données doit être sauvegardée, mise à niveau et restaurée comme un service à part entière, plutôt que considérée comme une infrastructure invisible.

Ne placez pas par défaut une base de données SQLite active sur un partage réseau

Un serveur de base de données distant et un fichier de base de données stocké sur SMB ou NFS correspondent à deux architectures différentes. Une base de données client-serveur gère les verrous et les transactions au sein du service de base de données et échange des requêtes sur le réseau. SQLite gère le verrouillage de son fichier de base de données via le système de fichiers ; la sémantique du système de fichiers réseau, la disponibilité du montage, la latence et le comportement des verrous deviennent donc partie intégrante de chaque transaction.

L’analyse détaillée du verrouillage de SQLite explique pourquoi les systèmes de fichiers réseau peuvent produire un comportement différent de celui d’un disque local. Un cas de panne sur un partage réseau de Home Assistant montre le risque concret lorsque la base de données active du Recorder dépend d’un montage distant.

Utilisez librement un NAS pour les copies de sauvegarde, les exportations, les fichiers multimédias et autres données conçues pour le stockage réseau. Si l’état actif du Recorder doit résider sur une autre machine, préférez une base de données client-serveur prise en charge plutôt que de déplacer le fichier SQLite sur un partage.

Séparez le stockage en volume de l’état actif de Home Assistant

Tous les répertoires Home Assistant qui grandissent n’ont pas leur place dans le même niveau de stockage. La configuration, l’état des intégrations, la base de données active du Recorder, les fichiers multimédias, les clips des caméras, les exportations et les sauvegardes ont des besoins différents en matière de latence et de récupération. Conservez l’état de petite taille et fréquemment mis à jour sur un stockage local à faible latence, sauf si un service séparé le gère délibérément.

Déplacez les fichiers multimédias volumineux ou les générations de sauvegarde vers la capacité d’un NAS derrière des points de montage stables. Documentez si Home Assistant est autorisé à démarrer sans ce montage. L’absence d’une archive de photos ne devrait pas empêcher le démarrage des automatisations d’éclairage, tandis que l’absence de la base de données active devrait produire un état dégradé explicite plutôt qu’une solution de repli silencieuse que personne ne remarque.

Rôle des données Emplacement par défaut Raison de la séparation
Configuration et état actif SSD local Faible latence et récupération simple
SQLite du Recorder SSD local Éviter les dépendances au verrouillage des systèmes de fichiers réseau
Base de données SQL externe Hôte local ou hôte de base de données séparé Mise à l’échelle, conservation, sauvegarde et administration indépendantes
Fichiers multimédias et exportations Stockage local ou NAS La capacité compte souvent davantage que la latence
Sauvegardes Au moins une copie hors hôte Résister à la perte de l’hôte actif

Validez le démarrage, les pannes et la restauration avant de rendre la séparation permanente

Préparez le nouveau rôle de base de données ou de stockage sans supprimer l’ancien chemin de récupération. Redémarrez l’hôte de la base de données avant Home Assistant, redémarrez Home Assistant avant que la base de données soit prête, interrompez le réseau, renouvelez les identifiants, remplissez le système de fichiers cible jusqu’à proximité de son seuil de réserve et restaurez la base de données sur une instance vierge.

Mesurez le temps des requêtes d’historique au 95e percentile, la latence des automatisations lors d’une forte activité du Recorder, le temps de redémarrage, la durée des sauvegardes et le temps de récupération après une panne de l’hôte de la base de données. Si la séparation améliore une mesure, mais transforme le redémarrage de trente secondes du contrôleur en procédure de récupération impliquant plusieurs services, incluez ce coût opérationnel dans la décision.

Conservez le stockage local lorsqu’il atteint déjà l’objectif fixé. Utilisez un hôte de base de données séparé lorsque les opérations client-serveur et la récupération indépendante offrent de véritables avantages. Utilisez un hôte de stockage séparé pour les données en volume et les sauvegardes, mais ne rendez pas le contrôle local critique dépendant d’un système de fichiers distant sans raison testée.

Configuration NAS et serveur

Plus à lire

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.