Home Assistant recorder veritabanı arka uçları

Home Assistant SQLite ile gelir ve bu bir hafta için iyidir. Sonra kontrol paneli grafikleri yavaşlamaya başlar, geçmiş paneli açılması on saniye sürer ve Zigbee sensörleriniz 30 saniyede bir yazı yazdığı için recorder veritabanı birkaç gigabayta büyür. Recorder arka ucunu değiştirmek bunu düzeltir. Aynı örneğe karşı altı veritabanını çalıştırdık (kabaca 140 varlık, 30 günlük saklama) hangisinin akıllı evi gerçekten yeniden hızlı hissettirdiğini görmek için.

Bu özet, Home Assistant kurulumu varsayılan veritabanının ötesinde büyüyen herkes için. Docker veya bare-metal, her arka ucun getirdiği tradeoff’ları, göç sırasında ne kırıldığını ve uzun vadeli Grafana panoları da istiyorsanız hangisini seçeceğini ele alıyoruz.

Home Assistant recorder arka ucunda ne arayacağız

Birkaç şey ham kıyaslamalardan daha önemlidir:

Hızlı karşılaştırma

Arka uç En iyi Lisans Depolama modeli Üzerinde çalışır
PostgreSQL Çoğu kurulum PostgreSQL Row-store, ACID Linux, Windows, macOS
MariaDB Plug-and-play değişiklik GPL Row-store, ACID Linux, Windows, macOS
TimescaleDB Uzun vadeli sensör geçmişi Apache 2.0 / TSL Postgres üstünde Hypertables Linux, Docker
InfluxDB 2.x Panolar, alt örnekleme MIT (core) Time-series columnar Linux, Windows, macOS
MySQL Mevcut MySQL altyapısı GPL Row-store, ACID Linux, Windows, macOS
VictoriaMetrics Ölçekteki metrikler Apache 2.0 Time-series columnar Linux, Windows, macOS

Arka uçlar

1. PostgreSQL, en iyi genel recorder değişikliği

PostgreSQL, emin değilseniz seçilecek olandır. Home Assistant onu yerel olarak destekler, psycopg2 sürücü kararlıdır ve veritabanı 10 GB’ı geçtikten sonra sorgu planlaması ayakta kalır. SQLite’de sekiz saniye süren geçmiş paneli, dizinler ısındıktan sonra mütevazı dört çekirdekli bir kutuda bir saniyenin altına düşer. states ve events tablolarına TOAST sıkıştırması ekleyin ve disk kullanımı makul kalır.

Başarısız olduğu yer: gerçek bir veritabanını çalıştırmanız ve yedeklemeniz gerekir. Bu pg_dump cron’u, point-in-time kurtarmayı önemsiyorsanız WAL arşivi ve disk dolduğunda ne olacağı için bir plan anlamına gelir. Hiçbir şey egzotik değil, ama tek bir .db dosyasından daha fazla iş.

Fiyat: Ücretsiz, PostgreSQL lisansı altında açık kaynak. Ücretli tier yok.

Platformlar: Linux, Windows, macOS, Docker ve Postgres paketi olan herhangi bir NAS.

İndir: postgresql.org

Sonuç: Önce PostgreSQL’i seçin ve belirli bir nedeniniz yoksa başka yere bakmayın.

2. MariaDB, çoğu kılavuzun hala varsaydığı fork

MariaDB, Home Assistant belgelerinin örneğinde varsayılan olarak kullandığı arka uçtur ve zaten çalıştıran herkes için sağlam bir seçim olarak kalır. Kurulum tam recorder: YAML bloğuna kadar belgelenmiştir ve kurulumu sizin için gerçekleştiren Home Assistant OS’de bir MariaDB eklentisi vardır. Performans, recorder iş yükü için Postgres ile aynı seviyededir.

Başarısız olduğu yer: ağır yazma yükü altında şema göçleri bazen states tablosunu kaydedici geri basınç uyarıları kaydetmesi için yeterince uzun kilitler. Hiçbir şey felaket değil, ama bunu görüyorsunuz. MySQL lezzetli araçlar da Postgres ekosisteminden daha eski görünür.

Fiyat: Ücretsiz, GPLv2 altında açık kaynak.

Platformlar: Linux, Windows, macOS, Docker, yerel HAOS eklentisi.

İndir: mariadb.org

Sonuç: Desteklenen, belgelenmiş bir yolu en az sürprizle istiyorsanız en güvenli seçim.

3. TimescaleDB, sensör geçmişi için ayarlanmış Postgres

TimescaleDB, PostgreSQL uzantısı olarak çalışır ve zaman serisi tablolarını otomatik olarak zaman tarafından bölümlenen hypertables’a dönüştürür. Günde binlerce durum değişikliğini kaydeden akıllı bir ev için, bu, bir yıllık veri saklayabileceğiniz ve yine de alt saniye aralığı sorgularını alabileceğiniz anlamına gelir. Sürekli agregat’lar, Grafana panellerinin ham satırları taramasını önlemek için günlük ortalamaları önceden hesaplamayı sağlar.

Başarısız olduğu yer: Home Assistant’ın recorder’ını normalde Postgres üzerinden yönlendirmeniz, ardından tabloları manuel SQL komutuyla hypertables’a dönüştürmeniz gerekir. Zor değil, ama bir onay kutusu değil. Bazı kurumsal özellikler üzerinde Timescale Lisansı (TSL) tam olarak açık kaynak değildir, ancak topluluk sürümü recorder’ın ihtiyaç duyduğu her şeyi kapsar.

Fiyat: Ücretsiz topluluk sürümü; ücretli Timescale Cloud barındırılan örnekler için yaklaşık 30$/ay’dan başlar.

Platformlar: Linux, Docker, Timescale Cloud. Yerel Windows veya macOS paketleri yok, ancak WSL çalışıyor.

İndir: timescale.com

Sonuç: Altıdan en iyi uzun vadeli saklama hikayesi, Postgres üstünde bir uzantı çalıştırmaktan rahatsız ederseniz.

4. InfluxDB 2.x, kayıt cihazından daha çok panolar

InfluxDB gerçekten bir recorder değişikliği değildir, Home Assistant’ın yanında yaşayan klasik eşleştirmedir. influxdb tümleştirmesi durum değişikliklerini InfluxDB’ye kayıt cihazının kullandığı herhangi bir SQL arka ucuna paralel olarak aktarır ve Grafana güzel panolar için Influx’tan çeker. Flux sorguları cronjobs olmadan alt örneğine gitmenizi sağlar.

Başarısız olduğu yer: Influx sorgu dili 1.x, 2.x ve 3.x arasında değişti, bu nedenle bulduğunuz öğreticilerin yarısı güncel değildir. Ve kayıt cihazını değiştirmediğinden, bir yerine iki veritabanı çalıştırıyorsunuz.

Fiyat: Ücretsiz açık kaynak InfluxDB 2.x OSS; InfluxDB Cloud ücretsiz bir katmana ve üzeri ödeme yapan fiyatlandırmaya sahiptir.

Platformlar: Linux, Windows, macOS, Docker, HAOS eklentisi.

İndir: influxdata.com

Sonuç: Ciddi Grafana panolarını istediğinizde SQL kayıt cihazının yanında kullanın, recorder değişikliği olarak değil.

5. MySQL, ancak bunu zaten çalıştırıyorsanız

MySQL Home Assistant ile çalışır ve başka bir hizmet için zaten çalışan bir MySQL sunucunuz varsa, ona bir recorder veritabanı eklemek basittir. mysqlclient sürücüsü iyi giyilmedir ve recorder onu sert bastırmaz.

Başarısız olduğu yer: MariaDB, çoğu Home Assistant kılavuzunun doğrudan hedefladığı plug-and-play değişikliğidir, bu nedenle talimatları tercüme edersiniz. MySQL Enterprise etrafında Oracle’ın lisanslama, ücretli destek istiyorsanız bir kıvırma ekler.

Fiyat: Ücretsiz MySQL Community Edition; ücretli Enterprise katmanları yaklaşık $2.000/yıl’dan başlar.

Platformlar: Linux, Windows, macOS, Docker.

İndir: mysql.com

Sonuç: Yalnızca zaten yeniden kullanmak istediğiniz bir MySQL örneğiniz varsa seçin.

6. VictoriaMetrics, recorder darboğaz olduğunda

VictoriaMetrics, yüzlerce varlığınız olduğunda ve recorder’ın kendisi yavaş kısım olduğunda parlak. Prometheus uyumlu uç nokta üzerinden alır, bu nedenle Home Assistant prometheus tümleştirmesi onu doğrudan besler. Depolama, aynı veriler için InfluxDB’den kabaca 10 kat daha kompakttır.

Başarısız olduğu yer: sadece metriklerdir. Kayıt cihazının size verdiği şekilde durum geçmişi elde edemezsiniz, bu nedenle yerleşik geçmiş paneli hala bir SQL arka ucuna ihtiyaç duyar. Bu bir ek olmaktan değil, bir değiştirmedir.

Fiyat: Ücretsiz açık kaynak; büyük dağıtımlar için VictoriaMetrics Enterprise özel fiyatlandırmaya sahiptir.

Platformlar: Linux, Windows, macOS, Docker.

İndir: victoriametrics.com

Sonuç: Prometheus ihraçları hacimli olduğunda ve Influx ağır görünmeye başladığında ulaşacak metrik deposu.

Doğru olanı nasıl seçebileceğiniz

Pano’nuzun hızlı hissetmesini istiyorsanız: PostgreSQL ve buradan okumayı bırakın.

Kılavuzları yakından takip eder ve belgelenmiş yolu istiyorsanız: MariaDB.

Yıllarca sensör geçmişi saklama ve daha sonra sorgulama planladığınızda: PostgreSQL üstünde TimescaleDB.

Hedefiniz gerçekten güzel Grafana panoları alt örneklemesi ile ise: kaydediciyi Postgres veya MariaDB’de tutun ve metrik katmanı için InfluxDB ekleyin.

Home Assistant kurulumunuz gerçekten devasa ise (500+ varlık, günde milyon+ durum değişiklikleri): PostgreSQL’i Prometheus tarzı metrikler için VictoriaMetrics ile kayıt cihazı olarak eşleştirin.

Zaten başka bir şey için çalıştırmıyorsanız MySQL’i atlayın.

Sıkça sorulan sorular

PostgreSQL Home Assistant için SQLite’ten daha mı hızlı?

Evet, veritabanınız birkaç gigabaytı aştıktan sonra. Küçük kurulumlarda SQLite karşılaştırılabilir, ancak veriler büyüdükçe geçmiş ve logbook panelleri PostgreSQL’de gözle görülür şekilde daha hızlıdır, çünkü sorgu planlama ve eşzamanlı okumalar daha iyi ölçeklendirilir.

SQLite geçmişimi veri kaybı olmadan PostgreSQL’e taşıyabilir miyim?

Evet, pgloader veya manuel dump/restore kullanarak, ama kötü. Çoğu kullanıcı yeni arka uçla yeniden başlar ve şema dönüştürmesiyle savaşmaktan ziyade eski geçmiş kaybını kabul eder.

Home Assistant InfluxDB’yi recorder değişikliği olarak destekliyor mu?

Hayır. InfluxDB influxdb tümleştirmesi aracılığıyla recorder’ın yanında çalışır, durum değişikliklerini paralel olarak akıtır. Recorder’ın kendisine yine de SQLite, PostgreSQL, MariaDB veya MySQL gerekir.

Home Assistant uzun vadeli geçmiş için en iyi arka uç nedir?

TimescaleDB. Sürekli agregat ve zaman tabanlı bölümleme, bir yıl veya daha fazla veri tutmanıza ve yine de hızlı sorgular almanıza sağlar. VictoriaMetrics sadece sayısal metrikler hakkında önemsiyorsanız yakındır.

Recorder arka ucunu değiştirmek otomasyonlarımı kıracak mı?

Hayır. Otomasyonlar Home Assistant’ın durum makinesinden okur, recorder veritabanından değil. Arka ucu değiştirmek geçmiş, istatistik ve uzun vadeli saklamayı etkiler, canlı durum değil.