Quando dovrebbe Home Assistant utilizzare un database o un host di archiviazione separato?

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

Home Assistant dovrebbe usare un database o un host di archiviazione separato solo quando tale separazione risolve un problema misurato di capacità, conservazione, backup o dominio di errore. Spostare lo stato fuori dal controller non è automaticamente un miglioramento.

Per molte abitazioni, un database Recorder SQLite locale su uno storage SSD affidabile è la soluzione più semplice, perché elimina le dipendenze da rete, autenticazione, DNS e avvio del server di database. Prima di creare un altro host, occorre innanzitutto individuare se il problema reale è un numero eccessivo di scritture del Recorder, una conservazione troppo lunga, query della cronologia lente, capacità locale limitata o la necessità di ripristinare un singolo servizio in modo indipendente.

Ottimizza il Recorder prima di aggiungere un server di database

La crescita del Recorder dipende dalle entità e dagli eventi memorizzati, dalla frequenza con cui cambiano e dalla durata della conservazione della cronologia. Se i sensori rumorosi o i domini non necessari generano la maggior parte delle scritture, spostare lo stesso carico su un server di database più grande trasferisce il problema invece di eliminarlo.

Un’attuale procedura di ottimizzazione del Recorder mostra come la conservazione, le regole di inclusione/esclusione e il comportamento dei commit influenzino il carico di scrittura prima di prendere in considerazione una migrazione del database. Dopo l’ottimizzazione, misura le dimensioni del database, il tempo delle query della cronologia, la latenza dello storage e l’attività di scrittura.

Mantieni il database locale quando il carico ottimizzato rimane reattivo, i backup terminano entro la finestra di manutenzione e la capacità SSD disponibile resta adeguata. La separazione dovrebbe seguire un requisito non soddisfatto, non la convinzione generica che i database client-server siano sempre più veloci.

Usa un database esterno quando i vantaggi operativi sono concreti

Un host separato con MariaDB, MySQL o PostgreSQL può essere utile quando Home Assistant condivide una piattaforma di database già gestita correttamente, quando una conservazione prolungata crea una pressione costante sulle query, quando l’host del controller deve rimanere leggero o sostituibile oppure quando il backup e il monitoraggio del database richiedono un ciclo di vita indipendente.

Un esempio di migrazione da SQLite a MariaDB illustra i nuovi elementi introdotti da questa scelta: servizio di database, credenziali, indirizzo di rete, inizializzazione dello schema, procedura di migrazione, convalida e rollback. Un caso reale più ampio di migrazione del database di Home Assistant mostra perché una cronologia lunga e grandi quantità di dati possano giustificare un’amministrazione aggiuntiva.

L’articolo di ZimaSpace sull’affidabilità degli aggiornamenti con un database esterno definisce il relativo confine di manutenzione: il database deve essere sottoposto a backup, aggiornato e ripristinato come servizio autonomo, anziché essere trattato come infrastruttura invisibile.

Non mettere per impostazione predefinita un database SQLite attivo su una condivisione di rete

Un server di database remoto e un file di database archiviato su SMB o NFS sono architetture diverse. Un database client-server gestisce blocchi e transazioni all’interno del servizio di database e invia le richieste attraverso la rete. SQLite gestisce il blocco del file di database tramite il filesystem, quindi la semantica del filesystem di rete, la disponibilità del mount, la latenza e il comportamento dei blocchi diventano parte di ogni transazione.

L’analisi dei blocchi di SQLite spiega perché i filesystem di rete possano produrre un comportamento dei blocchi diverso da quello di un disco locale. Un caso di errore su una condivisione di rete di Home Assistant mostra il rischio concreto quando il database Recorder attivo dipende da un mount remoto.

Usa liberamente un NAS per copie di backup, esportazioni, contenuti multimediali e altri dati progettati per lo storage di rete. Se lo stato attivo del Recorder deve risiedere su un’altra macchina, preferisci un database client-server supportato invece di spostare il file SQLite su una condivisione.

Separa lo storage dei dati voluminosi dallo stato attivo di Home Assistant

Non tutte le directory in crescita di Home Assistant appartengono allo stesso livello di storage. Configurazione, stato delle integrazioni, database Recorder attivo, contenuti multimediali, clip delle telecamere, esportazioni e backup hanno esigenze diverse in termini di latenza e ripristino. Mantieni lo stato di piccole dimensioni e aggiornato frequentemente su uno storage locale a bassa latenza, a meno che un servizio separato non lo gestisca deliberatamente.

Sposta i contenuti multimediali voluminosi o le generazioni di backup su una capacità NAS accessibile tramite mount point stabili. Documenta se Home Assistant può avviarsi senza quel mount. L’assenza di un archivio fotografico non dovrebbe impedire l’avvio delle automazioni di illuminazione, mentre l’assenza del database attivo dovrebbe generare uno stato degradato esplicito, anziché un fallback silenzioso che nessuno nota.

Ruolo dei dati Posizione predefinita Motivo della separazione
Configurazione e stato attivo SSD locale Bassa latenza e ripristino semplice
SQLite del Recorder SSD locale Evitare dipendenze dal blocco dei filesystem di rete
Database SQL esterno Host locale o host DB separato Scalabilità, conservazione, backup e amministrazione indipendenti
Contenuti multimediali ed esportazioni Locale o NAS La capacità è spesso più importante della latenza
Backup Almeno una copia fuori dall’host Sopravvivere alla perdita dell’host attivo

Verifica avvio, guasti e ripristino prima di rendere permanente la separazione

Prepara il nuovo ruolo del database o dello storage senza eliminare il vecchio percorso di ripristino. Riavvia l’host del database prima di Home Assistant, riavvia Home Assistant prima che il database sia pronto, interrompi la rete, cambia le credenziali, riempi il filesystem di destinazione fino quasi alla soglia di riserva e ripristina il database su un’istanza pulita.

Misura il tempo p95 delle query della cronologia, la latenza delle automazioni durante un’attività intensa del Recorder, il tempo di riavvio, la durata del backup e il tempo di ripristino dopo un’interruzione dell’host del database. Se la separazione migliora un parametro ma trasforma il riavvio del controller da trenta secondi in una procedura di ripristino con più servizi, includi anche questo costo operativo nella decisione.

Mantieni lo storage locale quando soddisfa già l’obiettivo. Usa un host di database separato quando le operazioni client-server e il ripristino indipendente offrono vantaggi concreti. Usa un host di storage separato per i dati voluminosi e i backup, ma non rendere il controllo locale critico dipendente da un filesystem remoto senza una motivazione verificata.

Configurazione NAS e Server

Altro da leggere

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.