Quando deve o Home Assistant usar uma base de dados ou um anfitrião de armazenamento separado?

Eva Wong é a redatora técnica e entusiasta residente na ZimaSpace. Uma geek desde sempre, apaixonada por homelabs e software de código aberto, dedica-se a traduzir conceitos técnicos complexos em guias práticos. A Eva acredita que a auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ajuda a comunidade a desmistificar configurações de hardware, desde montar o primeiro NAS até dominar os contentores Docker.

O Home Assistant só deve utilizar uma base de dados ou um anfitrião de armazenamento separado quando essa separação resolver um problema comprovado de capacidade, retenção, cópias de segurança ou domínio de falha. Transferir o estado para fora do controlador não é automaticamente uma melhoria.

Para muitas casas, uma base de dados Recorder SQLite local num SSD fiável é a opção mais simples, pois elimina as dependências de rede, autenticação, DNS e arranque do servidor de bases de dados. Antes de criar outro anfitrião, determine primeiro se o verdadeiro problema é o excesso de escritas do Recorder, a retenção prolongada, as consultas lentas ao histórico, a capacidade local limitada ou a necessidade de recuperar um serviço de forma independente.

Otimize o Recorder antes de adicionar um servidor de bases de dados

O crescimento do Recorder é determinado pelas entidades e pelos eventos armazenados, pela frequência com que mudam e pelo tempo durante o qual o histórico é conservado. Se os sensores ruidosos ou os domínios desnecessários dominarem as escritas, transferir a mesma carga de trabalho para um servidor de bases de dados maior apenas desloca o problema, em vez de o eliminar.

Um fluxo de trabalho atual de otimização do Recorder mostra como a retenção, as regras de inclusão/exclusão e o comportamento das confirmações afetam a carga de escrita antes de se considerar uma migração da base de dados. Após a otimização, meça o tamanho da base de dados, o tempo das consultas ao histórico, a latência do armazenamento e a atividade de escrita.

Mantenha a base de dados local quando a carga de trabalho otimizada continuar a responder rapidamente, as cópias de segurança forem concluídas dentro da janela de manutenção e a capacidade disponível do SSD continuar a ser suficiente. A separação deve responder a um requisito que não está a ser cumprido, não a uma crença genérica de que as bases de dados cliente-servidor são sempre mais rápidas.

Utilize uma base de dados externa quando os benefícios operacionais forem reais

Um anfitrião MariaDB, MySQL ou PostgreSQL separado pode fazer sentido quando o Home Assistant partilha uma plataforma de bases de dados já bem gerida, quando a retenção prolongada gera uma pressão contínua sobre as consultas, quando o anfitrião do controlador tem de continuar leve ou ser substituível, ou quando as cópias de segurança e a monitorização da base de dados precisam de um ciclo de vida independente.

Um exemplo de migração do SQLite para MariaDB ilustra os novos elementos introduzidos por essa opção: serviço de base de dados, credenciais, endereço de rede, inicialização do esquema, procedimento de migração, validação e reversão. Um caso real de migração da base de dados do Home Assistant em maior escala demonstra por que razão um histórico prolongado e grandes volumes de dados podem justificar a administração adicional.

O artigo da ZimaSpace sobre fiabilidade das atualizações da base de dados externa estabelece o limite de manutenção correspondente: a base de dados tem de ser objeto de cópias de segurança, atualizada e restaurada como um serviço independente, em vez de ser tratada como uma infraestrutura invisível.

Não coloque, por predefinição, uma base de dados SQLite ativa numa partilha de rede

Um servidor de bases de dados remoto e um ficheiro de base de dados armazenado em SMB ou NFS são arquiteturas diferentes. Uma base de dados cliente-servidor efetua o bloqueio e as transações dentro do serviço de base de dados e envia pedidos pela rede. O SQLite efetua o bloqueio dos ficheiros da base de dados através do sistema de ficheiros, pelo que a semântica do sistema de ficheiros de rede, a disponibilidade da montagem, a latência e o comportamento dos bloqueios passam a fazer parte de cada transação.

A análise mais abrangente dos bloqueios do SQLite explica por que razão os sistemas de ficheiros de rede podem apresentar um comportamento de bloqueio diferente do de um disco local. Um caso de falha do Home Assistant numa partilha de rede demonstra o risco prático de a base de dados ativa do Recorder depender de uma montagem remota.

Utilize um NAS sem restrições para cópias de segurança, exportações, multimédia e outros dados concebidos para armazenamento em rede. Se o estado ativo do Recorder tiver de ficar noutro computador, prefira uma base de dados cliente-servidor compatível, em vez de mover o ficheiro SQLite para uma partilha.

Separe o armazenamento em massa do estado ativo do Home Assistant

Nem todos os diretórios do Home Assistant que crescem pertencem ao mesmo nível de armazenamento. A configuração, o estado das integrações, a base de dados ativa do Recorder, os ficheiros multimédia, os vídeos das câmaras, as exportações e as cópias de segurança têm necessidades diferentes de latência e recuperação. Mantenha o estado pequeno e atualizado com frequência no armazenamento local de baixa latência, a menos que um serviço separado o esteja a gerir deliberadamente.

Transfira os ficheiros multimédia em massa ou as gerações de cópias de segurança para a capacidade do NAS, usando pontos de montagem estáveis. Documente se o Home Assistant pode arrancar sem essa montagem. A ausência de um arquivo de fotografias não deve impedir o arranque das automatizações de iluminação, enquanto a ausência da base de dados ativa deve criar um estado degradado explícito, em vez de uma alternativa silenciosa que ninguém deteta.

Função dos dados Localização predefinida Motivo para separar
Configuração e estado ativo SSD local Baixa latência e recuperação simples
SQLite do Recorder SSD local Evite dependências de bloqueio do sistema de ficheiros de rede
Base de dados SQL externa Local ou servidor de base de dados separado Escala, retenção, cópias de segurança e administração independentes
Multimédia e exportações Local ou NAS A capacidade é muitas vezes mais importante do que a latência
Cópias de segurança Pelo menos uma cópia fora do servidor Resistir à perda do servidor ativo

Comprove o arranque, as falhas e o restauro antes de tornar a separação permanente

Prepare a nova função de base de dados ou armazenamento sem eliminar o caminho de recuperação antigo. Reinicie o servidor de base de dados antes do Home Assistant, reinicie o Home Assistant antes de a base de dados estar pronta, interrompa a rede, altere as credenciais, encha o sistema de ficheiros de destino até perto do limite de reserva e restaure a base de dados numa instância limpa.

Meça o tempo de consulta do histórico no percentil 95, a latência das automatizações durante atividade intensa do Recorder, o tempo de reinício, a duração das cópias de segurança e o tempo de recuperação após uma falha do servidor de base de dados. Se a separação melhorar uma métrica, mas transformar o reinício de trinta segundos do controlador num procedimento de recuperação com vários serviços, inclua esse custo operacional na decisão.

Mantenha o armazenamento local quando já satisfaz o objetivo. Use um servidor de base de dados separado quando as operações cliente-servidor da base de dados e a recuperação independente forem vantagens reais. Use um servidor de armazenamento separado para dados em massa e cópias de segurança, mas não faça com que o controlo local crítico dependa de um sistema de ficheiros remoto sem uma razão testada.

Configuração de NAS e servidor

Mais para ler

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.