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

Eva Wong è la redattrice tecnica e appassionata di tecnologia di ZimaSpace. Geek da sempre, appassionata di homelab e software open source, è specializzata nel tradurre concetti tecnici complessi in guide pratiche. Eva crede che l’hosting autonomo debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, aiuta la community a comprendere meglio le configurazioni hardware, dalla costruzione del primo NAS alla padronanza dei container Docker.

Home Assistant dovrebbe usare un database o uno storage host separato solo quando questa separazione risolve un problema misurabile di capacità, conservazione, backup o isolamento dai guasti. Spostare i dati dal controller non è automaticamente un miglioramento.

Per molte abitazioni, un database Recorder SQLite in locale su uno storage SSD affidabile è la soluzione più semplice, perché elimina le dipendenze di rete, autenticazione, DNS e avvio del server di database. Prima di creare un altro host, individua la vera causa del problema: troppe scritture di Recorder, una lunga conservazione dei dati, query sulla cronologia lente, capacità locale limitata o la necessità di ripristinare un servizio in modo indipendente.

Ottimizza Recorder prima di aggiungere un server di database

La crescita di Recorder dipende dalle entità e dagli eventi salvati, dalla frequenza con cui cambiano e dalla durata della conservazione della cronologia. Se i sensori troppo attivi o i domini non necessari generano la maggior parte delle scritture, trasferire lo stesso carico di lavoro su un server di database più grande sposta il problema, invece di risolverlo.

Un flusso di lavoro attuale per ottimizzare Recorder mostra come la conservazione dei dati, le regole di inclusione/esclusione e il comportamento di commit influiscano sul carico di scrittura prima di valutare una migrazione del database. Dopo l’ottimizzazione, misura le dimensioni del database, il tempo delle query sulla cronologia, la latenza dello storage e l’attività di scrittura.

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

Usa un database esterno quando offre vantaggi operativi concreti

Un host MariaDB, MySQL o PostgreSQL separato può essere una scelta sensata quando Home Assistant condivide una piattaforma di database già gestita correttamente, quando una lunga conservazione dei dati genera 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 gli elementi introdotti da questa scelta: servizio database, credenziali, indirizzo di rete, inizializzazione dello schema, procedura di migrazione, convalida e ripristino della versione precedente. Un caso reale più ampio di migrazione del database di Home Assistant mostra perché una cronologia lunga e grandi quantità di dati possono giustificare l’amministrazione aggiuntiva.

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

Di norma, non mettere 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 i lock e le transazioni all’interno del servizio database e invia le richieste tramite rete. SQLite gestisce i lock del file di database tramite il file system, quindi la semantica del file system di rete, la disponibilità del mount, la latenza e il comportamento dei lock influiscono su ogni transazione.

L’analisi più ampia dei lock di SQLite spiega perché i file system di rete possono produrre un comportamento dei lock diverso da quello di un disco locale. Un caso di malfunzionamento 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 pensati per l’archiviazione in rete. Se lo stato attivo di Recorder deve risiedere su un’altra macchina, preferisci un database client-server supportato invece di spostare il file SQLite su una condivisione.

Separa lo spazio di archiviazione di massa dallo stato attivo di Home Assistant

Non tutte le directory di Home Assistant che crescono devono appartenere allo stesso livello di archiviazione. Configurazione, stato delle integrazioni, database attivo di Recorder, contenuti multimediali, clip delle telecamere, esportazioni e backup hanno esigenze diverse in termini di latenza e ripristino. Mantieni lo stato ridotto e aggiornato di frequente su un'archiviazione locale a bassa latenza, a meno che un servizio separato non se ne occupi intenzionalmente.

Sposta i contenuti multimediali voluminosi o le generazioni di backup su una capacità NAS tramite punti di montaggio stabili. Documenta se Home Assistant può avviarsi senza quel montaggio. La mancanza di un archivio fotografico non dovrebbe impedire l'avvio delle automazioni delle luci, mentre la mancanza del database attivo dovrebbe generare uno stato degradato esplicito, non un ripiego silenzioso che nessuno nota.

Ruolo dei dati Posizionamento predefinito Motivo della separazione
Configurazione e stato attivo SSD locale Bassa latenza e ripristino semplice
SQLite di Recorder SSD locale Evita dipendenze dal blocco dei file system di rete
Database SQL esterno Locale o host database separato Scalabilità, conservazione, backup e amministrazione indipendenti
Contenuti multimediali ed esportazioni Locale o NAS Spesso la capacità conta più della latenza
Backup Almeno una copia su un altro host Resistere alla perdita dell'host attivo

Verifica l'avvio, i guasti e il ripristino prima di rendere permanente la separazione

Predisponi il nuovo ruolo di database o archiviazione senza eliminare il vecchio percorso di ripristino. Riavvia l'host database prima di Home Assistant, riavvia Home Assistant prima che il database sia pronto, interrompi la rete, cambia le credenziali, porta il filesystem di destinazione quasi alla soglia di riserva e ripristina il database su un'istanza pulita.

Misura il tempo delle query sulla cronologia al 95° percentile, 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 database. Se la separazione migliora una metrica ma trasforma il riavvio di trenta secondi del controller in una procedura di ripristino che coinvolge più servizi, includi questo costo operativo nella decisione.

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

Configurazione NAS e server

Altre letture

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.