Backend basis data Home Assistant recorder

Home Assistant dilengkapi dengan SQLite, dan itu cukup baik selama seminggu. Kemudian grafik dashboard mulai tertinggal, panel riwayat butuh sepuluh detik untuk dibuka, dan basis data recorder tumbuh menjadi beberapa gigabyte karena sensor Zigbee menulis setiap 30 detik. Menukar backend recorder memperbaikinya. Kami menjalankan enam basis data terhadap instans yang sama (kira-kira 140 entitas, retensi 30 hari) untuk melihat mana yang benar-benar membuat rumah pintar terasa responsif lagi.

Ringkasan ini adalah untuk siapa saja yang instalasi Home Assistant-nya sudah berkembang melampaui basis data default. Docker atau bare-metal, kami mencakup trade-off yang dibawa setiap backend, apa yang putus selama migrasi, dan mana yang dipilih jika Anda juga ingin dashboard Grafana jangka panjang.

Yang harus dicari dalam backend Home Assistant recorder

Beberapa hal lebih penting daripada benchmark mentah:

Perbandingan cepat

Backend Terbaik untuk Lisensi Model penyimpanan Berjalan di
PostgreSQL Sebagian besar instans PostgreSQL Row-store, ACID Linux, Windows, macOS
MariaDB Penggantian drop-in GPL Row-store, ACID Linux, Windows, macOS
TimescaleDB Riwayat sensor jangka panjang Apache 2.0 / TSL Hypertables di atas Postgres Linux, Docker
InfluxDB 2.x Dashboard, downsampling MIT (core) Time-series columnar Linux, Windows, macOS
MySQL Infrastruktur MySQL yang ada GPL Row-store, ACID Linux, Windows, macOS
VictoriaMetrics Metrik dalam skala besar Apache 2.0 Time-series columnar Linux, Windows, macOS

Backend

1. PostgreSQL, pengganti recorder terbaik secara keseluruhan

PostgreSQL adalah yang dipilih jika Anda tidak yakin. Home Assistant mendukungnya secara native, driver psycopg2 stabil, dan perencanaan kueri bertahan saat basis data tumbuh melampaui 10 GB. Panel riwayat yang butuh delapan detik di SQLite turun di bawah satu detik di kotak empat-inti sederhana setelah indeks hangat. Tambahkan kompresi TOAST pada tabel states dan events dan penggunaan disk tetap masuk akal.

Tempat ia jatuh pendek: Anda harus menjalankan dan mem-backup basis data yang sebenarnya. Itu berarti cron pg_dump, arsip WAL jika Anda peduli tentang pemulihan point-in-time, dan rencana untuk apa yang terjadi ketika disk penuh. Tidak ada yang eksotis, tetapi itu lebih banyak pekerjaan daripada satu file .db.

Harga: Gratis, open-source di bawah lisensi PostgreSQL. Tidak ada tier berbayar.

Platform: Linux, Windows, macOS, Docker, dan setiap NAS dengan paket Postgres.

Unduh: postgresql.org

Kesimpulan: Pilih PostgreSQL terlebih dahulu, dan hanya lihat tempat lain jika Anda memiliki alasan tertentu.

2. MariaDB, fork yang sebagian besar panduan masih asumsikan

MariaDB adalah backend yang default dokumentasi Home Assistant di contoh mereka, dan tetap menjadi pilihan solid untuk siapa saja yang sudah menjalankannya. Setup didokumentasikan hingga blok recorder: YAML yang tepat, dan ada add-on MariaDB di Home Assistant OS yang menangani instalasi untuk Anda. Kinerja berada di ballpark yang sama dengan Postgres untuk beban kerja recorder.

Tempat ia jatuh pendek: migrasi skema di bawah beban penulisan berat kadang-kadang mengunci tabel states cukup lama sehingga recorder mencatat peringatan backpressure. Tidak ada yang bencana, tetapi Anda melihatnya. Tooling berasa MySQL juga terasa lebih tua daripada ekosistem Postgres.

Harga: Gratis, open-source di bawah GPLv2.

Platform: Linux, Windows, macOS, Docker, add-on HAOS native.

Unduh: mariadb.org

Kesimpulan: Pilihan teraman jika Anda menginginkan jalur yang didukung, didokumentasikan dengan kejutan minimal.

3. TimescaleDB, Postgres diatur untuk riwayat sensor

TimescaleDB berjalan sebagai ekstensi PostgreSQL dan mengubah tabel time-series menjadi hypertable yang secara otomatis dipartisi berdasarkan waktu. Untuk rumah pintar yang mencatat ribuan perubahan status per hari, itu berarti Anda dapat menyimpan setahun data dan masih mendapatkan kueri sub-detik. Agregat berkelanjutan memungkinkan Anda menghitung sebelumnya rata-rata harian sehingga panel Grafana tidak memindai baris mentah.

Tempat ia jatuh pendek: Anda harus mengarahkan recorder Home Assistant melalui Postgres secara normal, kemudian mengubah tabel menjadi hypertable dengan perintah SQL manual. Tidak sulit, tetapi bukan kotak centang. Lisensi Timescale (TSL) pada beberapa fitur enterprise tidak sepenuhnya open source, meskipun edisi komunitas mencakup semua yang dibutuhkan recorder.

Harga: Edisi komunitas gratis; Timescale Cloud berbayar dimulai sekitar $30/bulan untuk instans yang dihosting.

Platform: Linux, Docker, Timescale Cloud. Tidak ada paket Windows atau macOS native, meskipun WSL bekerja.

Unduh: timescale.com

Kesimpulan: Cerita retensi jangka panjang terbaik dari enam, jika Anda nyaman menjalankan ekstensi di atas Postgres.

4. InfluxDB 2.x, dashboard lebih dari recorder

InfluxDB bukan benar-benar pengganti recorder, itu adalah pasangan klasik yang hidup di sebelah Home Assistant. Integrasi influxdb mengalirkan perubahan status ke InfluxDB secara paralel dengan backend SQL apa pun yang digunakan recorder, dan Grafana menarik dari Influx untuk dashboard yang cantik. Kueri Flux memungkinkan Anda untuk downsample tanpa cronjobs.

Tempat ia jatuh pendek: bahasa kueri Influx berubah antara 1.x, 2.x, dan 3.x, jadi setengah dari tutorial yang Anda temukan sudah ketinggalan zaman. Dan karena itu tidak menggantikan recorder, Anda menjalankan dua basis data bukan satu.

Harga: InfluxDB 2.x OSS open-source gratis; InfluxDB Cloud memiliki tier gratis dan harga pay-as-you-go di atasnya.

Platform: Linux, Windows, macOS, Docker, add-on HAOS.

Unduh: influxdata.com

Kesimpulan: Gunakan bersama recorder SQL ketika Anda menginginkan dashboard Grafana serius, bukan sebagai pengganti recorder.

5. MySQL, hanya jika Anda sudah menjalankannya

MySQL bekerja dengan Home Assistant, dan jika Anda sudah memiliki server MySQL yang berjalan untuk layanan lain, menambahkan basis data recorder ke dalamnya cukup mudah. Driver mysqlclient sudah dikenakan, dan recorder tidak mendesaknya dengan keras.

Tempat ia jatuh pendek: MariaDB adalah fork penggantian drop-in yang sebagian besar panduan Home Assistant targetkan langsung, jadi Anda berakhir menerjemahkan instruksi. Perizinan Oracle di sekitar MySQL Enterprise menambah kerutan jika Anda pernah menginginkan dukungan berbayar.

Harga: MySQL Community Edition gratis; tier Enterprise berbayar dimulai sekitar $2.000/tahun.

Platform: Linux, Windows, macOS, Docker.

Unduh: mysql.com

Kesimpulan: Pilih hanya jika Anda sudah memiliki instans MySQL yang ingin Anda gunakan kembali.

6. VictoriaMetrics, ketika recorder adalah bottleneck

VictoriaMetrics bersinar ketika Anda memiliki ratusan entitas dan recorder itu sendiri menjadi bagian yang lambat. Ini menelan melalui endpoint yang kompatibel dengan Prometheus, jadi integrasi prometheus Home Assistant memberinya makan langsung. Penyimpanan kira-kira 10x lebih kompak daripada InfluxDB untuk data yang sama.

Tempat ia jatuh pendek: itu hanya metrik. Anda tidak mendapatkan riwayat status dengan cara yang sama seperti recorder memberikannya kepada Anda, jadi panel riwayat built-in masih memerlukan backend SQL. Ini adalah suplemen, bukan pengganti.

Harga: Open-source gratis; VictoriaMetrics Enterprise untuk deployment besar memiliki harga kustom.

Platform: Linux, Windows, macOS, Docker.

Unduh: victoriametrics.com

Kesimpulan: Penyimpan metrik yang dipilih ketika ekspor Prometheus Anda menjadi besar dan Influx mulai terasa berat.

Cara memilih yang tepat

Jika Anda hanya menginginkan dashboard Anda terasa cepat: PostgreSQL, dan berhenti membaca di sini.

Jika Anda mengikuti panduan dengan cermat dan menginginkan jalur yang didokumentasikan: MariaDB.

Jika Anda berencana menyimpan bertahun-tahun riwayat sensor dan menanyakannya nanti: TimescaleDB di atas PostgreSQL.

Jika tujuan Anda benar-benar dashboard Grafana yang bagus dengan downsampling: simpan recorder di Postgres atau MariaDB, dan tambahkan InfluxDB untuk lapisan metrik.

Jika instalasi Home Assistant Anda benar-benar besar (500+ entitas, jutaan+ perubahan status per hari): pasangkan PostgreSQL sebagai recorder dengan VictoriaMetrics untuk metrik gaya Prometheus.

Lewati MySQL kecuali Anda sudah menjalankannya untuk sesuatu yang lain.

FAQ

Apakah PostgreSQL lebih cepat dari SQLite untuk Home Assistant?

Ya, setelah basis data Anda melampaui beberapa gigabyte. Pada instans kecil SQLite sebanding, tetapi panel riwayat dan logbook kami secara nyata lebih cepat di PostgreSQL seiring pertumbuhan data, karena perencanaan kueri dan pembacaan bersamaan scaling lebih baik.

Bisakah saya bermigrasi riwayat SQLite ke PostgreSQL tanpa kehilangan data?

Ya, menggunakan pgloader atau dump/restore manual, tetapi itu tidak rapi. Sebagian besar pengguna memulai segar dengan backend baru dan menerima hilangnya riwayat lama daripada berjuang dengan konversi skema.

Apakah Home Assistant mendukung InfluxDB sebagai pengganti recorder?

Tidak. InfluxDB bekerja bersama recorder melalui integrasi influxdb, mengalirkan perubahan status ke dalamnya secara paralel. Recorder itu sendiri masih memerlukan SQLite, PostgreSQL, MariaDB, atau MySQL.

Apa backend terbaik untuk riwayat Home Assistant jangka panjang?

TimescaleDB. Agregat berkelanjutan dan partisi berbasis waktu memungkinkan Anda menyimpan setahun atau lebih data dan masih mendapatkan kueri cepat. VictoriaMetrics dekat jika Anda hanya peduli tentang metrik numerik.

Apakah mengubah backend recorder akan merusak otomasi saya?

Tidak. Otomasi membaca dari mesin status Home Assistant, bukan basis data recorder. Menukar backend mempengaruhi riwayat, statistik, dan retensi jangka panjang, bukan status live.