Бэкенды базы данных Home Assistant recorder

Home Assistant поставляется с SQLite, и это нормально на неделю. Потом графики на панели управления начинают отставать, панель истории открывается десять секунд, а база данных recorder растёт на несколько гигабайт, потому что датчики Zigbee пишут каждые 30 секунд. Смена бэкенда recorder это исправляет. Мы протестировали шесть баз данных на одном экземпляре (примерно 140 сущностей, хранение 30 дней), чтобы понять, какая действительно сделает умный дом снова отзывчивым.

Эта подборка для тех, чей Home Assistant вырос из базы данных по умолчанию. Docker или голое железо, мы рассказываем о компромиссах каждого бэкенда, что ломается при миграции, и какой выбрать, если вы также хотите долгосрочные дашборды Grafana.

На что обратить внимание при выборе бэкенда Home Assistant recorder

Несколько вещей имеют значение больше, чем сырые бенчмарки:

Быстрое сравнение

Backend Лучше всего для Лицензия Модель хранения Работает на
PostgreSQL Большинства установок PostgreSQL Row-store, ACID Linux, Windows, macOS
MariaDB Прямая замена GPL Row-store, ACID Linux, Windows, macOS
TimescaleDB Долгосрочная история датчиков Apache 2.0 / TSL Hypertables поверх Postgres Linux, Docker
InfluxDB 2.x Дашборды, понижение разрешения MIT (core) Time-series columnar Linux, Windows, macOS
MySQL Существующая инфраструктура MySQL GPL Row-store, ACID Linux, Windows, macOS
VictoriaMetrics Метрики в масштабе Apache 2.0 Time-series columnar Linux, Windows, macOS

Бэкенды

1. PostgreSQL, лучшая общая замена для recorder

PostgreSQL — это выбор, если вы не уверены. Home Assistant нативно поддерживает интеграцию с ним, драйвер psycopg2 стабилен, и планирование запросов держится, когда база растёт больше 10 ГБ. Панель истории, которая занимала восемь секунд на SQLite, падает ниже одной секунды на скромной четырёхъядерной машине, как только прогреются индексы. Добавьте сжатие TOAST на таблицы states и events, и использование диска останется разумным.

Где это не работает: нужно запускать и делать резервное копирование настоящей базы данных. Это означает cron pg_dump, архив WAL, если вас интересует восстановление до точного момента времени, и план на случай переполнения диска. Ничего экзотического, но это больше работы, чем один файл .db.

Цена: Бесплатно, открытый исходный код под лицензией PostgreSQL. Нет платного уровня.

Платформы: Linux, Windows, macOS, Docker и любой NAS с пакетом Postgres.

Скачать: postgresql.org

Вывод: Выбирайте PostgreSQL сначала и смотрите в другие стороны, только если у вас есть конкретная причина.

2. MariaDB, форк, который большинство руководств предполагают

MariaDB — это бэкенд, который документация Home Assistant использует по умолчанию в примере, и это остаётся твёрдым выбором для тех, кто уже его запускает. Настройка задокументирована вплоть до точного блока recorder: YAML, и в Home Assistant OS есть добавка MariaDB, которая управляет установкой для вас. Производительность находится в том же диапазоне, что и Postgres для нагрузки recorder.

Где это не работает: миграции схемы при интенсивной нагрузке записи иногда блокируют таблицу states достаточно долго, чтобы recorder регистрировал предупреждения об обратном давлении. Ничего катастрофического, но вы это видите. Инструменты MySQL также кажутся старше, чем экосистема Postgres.

Цена: Бесплатно, открытый исходный код под лицензией GPLv2.

Платформы: Linux, Windows, macOS, Docker, встроенная добавка HAOS.

Скачать: mariadb.org

Вывод: Самый безопасный выбор, если вы хотите поддерживаемый, задокументированный путь с наименьшим количеством неожиданностей.

3. TimescaleDB, Postgres настроенный для истории датчиков

TimescaleDB работает как расширение PostgreSQL и превращает таблицы временных рядов в гипертаблицы, которые автоматически разбиваются по времени. Для умного дома, записывающего тысячи изменений состояния в день, это означает, что вы можете хранить год данных и всё ещё получить запросы меньше секунды. Непрерывные агрегаты позволяют предварительно вычислять ежедневные средние значения, чтобы панели Grafana не сканировали необработанные строки.

Где это не работает: нужно маршрутизировать recorder Home Assistant через Postgres нормально, потом преобразовать таблицы в гипертаблицы с помощью команды SQL. Не сложно, но это не галочка. Лицензия Timescale (TSL) на некоторые корпоративные функции не полностью открыта, но издание сообщества охватывает всё, что нужно для recorder.

Цена: Бесплатно издание сообщества; платная Timescale Cloud начинается примерно с $30/месяц для хостированных экземпляров.

Платформы: Linux, Docker, Timescale Cloud. Нет нативных пакетов Windows или macOS, хотя WSL работает.

Скачать: timescale.com

Вывод: Лучшая история долгосрочного хранения из шести, если вы готовы запускать расширение поверх Postgres.

4. InfluxDB 2.x, дашборды больше, чем recorder

InfluxDB — это не совсем замена recorder, это классическое сочетание, которое живёт рядом с Home Assistant. Интеграция influxdb передаёт изменения состояния в InfluxDB параллельно с любым SQL-бэкендом, который использует recorder, а Grafana вытягивает из Influx для красивых дашбордов. Запросы Flux позволяют вам понизить разрешение без cronjob.

Где это не работает: язык запросов Influx изменился между 1.x, 2.x и 3.x, так что половина найденных вами руководств устарела. И поскольку это не заменяет recorder, вы запускаете две базы данных вместо одной.

Цена: Бесплатно InfluxDB 2.x OSS; InfluxDB Cloud имеет бесплатный уровень и оплату по мере использования выше него.

Платформы: Linux, Windows, macOS, Docker, добавка HAOS.

Скачать: influxdata.com

Вывод: Используйте его рядом с SQL-recorder, когда вы хотите серьёзные дашборды Grafana, не как замена recorder.

5. MySQL, только если вы уже его запускаете

MySQL работает с Home Assistant, и если вы уже имеете сервер MySQL, гудящий для другого сервиса, добавление базы данных recorder к нему является простым. Драйвер mysqlclient хорошо изношен, и recorder не давит его сильно.

Где это не работает: MariaDB — это форк прямой замены, на который большинство руководств Home Assistant направлены напрямую, так что вы заканчиваете переводом инструкций. Лицензирование Oracle вокруг MySQL Enterprise добавляет морщину, если вы когда-либо хотели платной поддержки.

Цена: Бесплатно MySQL Community Edition; платные корпоративные уровни начинаются примерно с $2000/год.

Платформы: Linux, Windows, macOS, Docker.

Скачать: mysql.com

Вывод: Выбирайте это только если вы уже имеете экземпляр MySQL, который хотите переиспользовать.

6. VictoriaMetrics, когда recorder — узкое место

VictoriaMetrics сияет, когда у вас сотни сущностей и сам recorder становится медленной частью. Он поглощает через совместимую с Prometheus конечную точку, поэтому интеграция prometheus Home Assistant питает его напрямую. Хранилище примерно в 10 раз более компактно, чем InfluxDB для одних и тех же данных.

Где это не работает: это только метрики. Вы не получаете историю состояния так же, как recorder вам даёт, поэтому встроенная панель истории все ещё нуждается в SQL-бэкенде. Это дополнение, а не замена.

Цена: Бесплатно открытый исходный код; VictoriaMetrics Enterprise для больших развёртываний имеет индивидуальное ценообразование.

Платформы: Linux, Windows, macOS, Docker.

Скачать: victoriametrics.com

Вывод: Хранилище метрик, которое нужно использовать, когда ваши экспорты Prometheus становятся объёмными и Influx начинает ощущаться тяжёлым.

Как выбрать правильный

Если вы просто хотите, чтобы ваш дашборд работал быстро: PostgreSQL и прекратите читать здесь.

Если вы тщательно следуете руководствам и хотите задокументированный путь: MariaDB.

Если вы планируете хранить годы истории датчиков и запрашивать её позже: TimescaleDB поверх PostgreSQL.

Если ваша цель действительно красивые дашборды Grafana с понижением разрешения: держите recorder на Postgres или MariaDB и добавьте InfluxDB для слоя метрик.

Если ваша установка Home Assistant действительно огромна (500+ сущностей, миллионы+ изменений состояния в день): соедините PostgreSQL как recorder с VictoriaMetrics для метрик в стиле Prometheus.

Пропустите MySQL, если вы не запускаете его уже для чего-то другого.

Часто задаваемые вопросы

PostgreSQL быстрее SQLite для Home Assistant?

Да, как только ваша база превышает несколько гигабайт. На небольших установках SQLite сопоставим, но панели истории и журнала ощутимо быстрее на PostgreSQL, когда данные растут, потому что планирование запросов и параллельные чтения масштабируются лучше.

Могу ли я перенести историю SQLite в PostgreSQL без потери данных?

Да, используя pgloader или ручной dump/restore, но это непросто. Большинство пользователей начинают с нуля на новом бэкенде и принимают потерю старой истории, а не борются с преобразованием схемы.

Home Assistant поддерживает InfluxDB как замену recorder?

Нет. InfluxDB работает рядом с recorder через интеграцию influxdb, передавая изменения состояния параллельно. Сам recorder всё ещё нуждается в SQLite, PostgreSQL, MariaDB или MySQL.

Какой лучший бэкенд для долгосрочной истории Home Assistant?

TimescaleDB. Непрерывные агрегаты и разбиение по времени позволяют вам хранить год или больше данных и всё ещё получать быстрые запросы. VictoriaMetrics близко, если вас интересуют только числовые метрики.

Изменение бэкенда recorder сломает мои автоматизации?

Нет. Автоматизации читают из машины состояния Home Assistant, а не базы данных recorder. Смена бэкенда влияет на историю, статистику и долгосрочное хранение, а не на актуальное состояние.