データベースの配置は、書き込みレイテンシ、整合性の保証、依存関係の数、そして同時に復旧しなければならないコンポーネントの数を変えることで、Home Assistantの信頼性に影響します。
忙しい家庭では、ダッシュボードが履歴を照会し、オートメーションがイベントを書き込み、バックアップが同じストレージにアクセスしている間にも、状態変更が発生します。データベースは、ローカルSSD上でHome Assistantの隣に置くことも、別のローカルコンテナ内に置くことも、ネットワーク経由で別のホストに置くこともできます。信頼性を左右するのは物理的な距離よりも、トランザクションの経路全体が高速で、一貫性があり、可観測で、復旧可能な状態を保てるかどうかです。
データベースの配置はトランザクション経路を変える
Home Assistantは、履歴レコードを抽象的な1つの処理だけで作成しているわけではありません。エンティティの更新がイベントシステムに入り、Recorderが関連する変更をデータベース処理に変換し、データベースがストレージにコミットし、後からクエリがその行を読み戻します。配置によって、その経路に含まれるスケジューラ、ファイルシステム、ネットワークホップ、独立したサービスの数が決まります。
Recorderの増大が目に見えるのは、繰り返される状態変更が、元のデバイスデータだけでなく、行、インデックス、保持された履歴として蓄積するためです。ある運用者によるデータベース増大に関する報告は、保持期間とエンティティの選択によって、配置が処理しなければならない作業量が変わる理由を示しています。
観測される結果は、単にファイルが大きくなることではありません。コミット経路が長くなったり変動したりすると、Recorderの処理が遅れ、バースト時のキューが増加し、履歴や起動処理がライブ処理と競合する可能性があります。したがって、データベースが別のデバイスに移動したかどうかではなく、必要な処理の中で最も遅いステップが変わるかどうかによって、配置は信頼性を変化させます。
ローカルSSDへの配置は調整を最小限に抑える
ローカルSSD上のデータベースでは、アプリケーション呼び出し、ファイルシステムのロック、永続的な書き込みが1台のホスト内に収まります。これにより、適度な規模のHome Assistantインスタンスでは、通常、最短で最も予測しやすい経路が実現します。特にSQLiteは、アプリケーションとデータベースライブラリが同じマシンとストレージスタックを通じて連携するため、ローカルファイルシステムのセマンティクスの恩恵を受けます。
ローカル配置のアーキテクチャ上の利点は、SQLiteがアプリケーションと同じ実行コンテキストで動作するシステムに見られます。同一プロセス内でのSQLiteアクセスに関する技術的な説明は、Home Assistantの正確なワークロードやストレージエンジンは異なるものの、通信境界をなくすことでレイテンシを削減できる仕組みを示しています。
ローカル配置にしても、システム障害がなくなるわけではありません。ホスト、ファイルシステム、データベースは依然として1つの障害ドメインを共有するため、システムディスクが故障すると、Home Assistantと稼働中のRecorder状態の両方が失われる可能性があります。ローカルSSDへの配置は通常のトランザクション経路を改善しますが、相関した損失に備えるには、独立したバックアップと復元テストが必要です。
別のデータベースホストは分離と依存関係を交換する
データベースを別のサービスやホストに移すと、データベースのメモリ、ストレージ容量、保守作業をHome Assistantのプロセスから分離できます。また、クライアントサーバーアクセス向けに設計されたエンジンを利用できる場合もあります。その代わり、すべての書き込みと履歴クエリが、データベースの可用性、ネットワーク到達性、名前解決、認証情報、互換性のあるスキーマ処理に依存するようになります。
SQLiteとクライアントサーバーデータベースでは、配置に関するルールをそのまま置き換えることはできません。SQLiteの本番環境での制約に関する実用ガイドでは、単一ライターかつ単一マシンを前提とする特性が説明されています。そのため、データベースファイル自体をリモート共有に置くことと、ネットワーク経由でデータベースサーバーに接続することは異なります。
より安全な外部配置のパターンは、データベースサービスを分離しながら、そのストレージをデータベースホストのローカルに保つことです。ZimaSpaceの外部Home Assistantデータベースの利用に関する手順では、運用上の確認事項が扱われています。ここで重要なのは、分離によって可用性と復旧の目標に含めるべき依存関係が1つ増えるというアーキテクチャ上の点です。
配置は復旧単位も定義する
信頼性の高い設計では、どの状態を一緒に取得しなければならないかを特定する必要があります。Home Assistantの設定、シークレット、インテグレーションの状態、Recorderのデータは異なるスケジュールで変更される可能性がありますが、復元時には互換性のあるバージョンと一貫した時点が必要になる場合があります。これらを複数のホストに分散すると、ハードウェア障害の相関損失は減らせますが、バックアップと復元時の調整は増えます。
バックアップコピーは、同じ障害を免れ、既知の環境に復元できる場合にのみ役立ちます。独立した3-2-1バックアップモデルは、コピー、メディア、保管場所を分離します。これは、データベースの配置とバックアップの配置を1つの物理的なリスクにまとめるべきではない理由を示しています。
復旧単位とは、意味のあるサービスを再開するために必要な最小限のコンポーネントの集合です。別のデータベースを復元できても、Home Assistantに一致する認証情報や設定がなければ、そのアーキテクチャは復旧時の依存関係を減らせていません。配置によって信頼性が向上するのは、文書化され、リハーサル済みの復旧順序がある場合だけです。
リモート配置が不十分になる場合
追加した経路の信頼性が、解消できる競合より低い場合、リモート配置は役に立たなくなります。SMBやNFS上のデータベースファイルでは、ローカルファイル向けエンジンに適さないロックやレイテンシの前提が生じる可能性があります。不安定なWi-Fi経由のクライアントサーバーデータベースでは、短時間のネットワーク中断が書き込みの失敗や履歴の利用不能につながることがあります。
この境界はSQLiteで特に明確です。ネットワークファイルシステムは、ローカルのロックモデルを損なう可能性があります。最新のSQLite本番運用ガイドでは、NFSとSMBはデータベースファイルには適さないと説明されており、リモートファイル配置と、サポートされたデータベースサーバーへの接続が区別されています。
ネットワークが有線で監視され、エンジンがリモートクライアント向けに設計され、バックアップが両方のシステムを対象としている場合、リモートデータベースの方が優れた設計になることもあります。逆に、ローカルホストに十分なSSDの余裕があり、競合も少ない場合は、小規模なデータベースを移動しても、測定可能な信頼性向上が得られないまま障害要因だけが増える可能性があります。
4つの観点で配置をテストする
何かを移動する前に、現在の設計を測定します。通常時とバースト時の書き込みレイテンシ、履歴クエリの時間、バックログの挙動、最も忙しい現実的な1時間におけるストレージ使用率を記録します。その後、エンティティ数、保持期間、ダッシュボードのクエリ、オートメーションの負荷を一定に保ちながら、再起動後とバックアップ中にも測定を繰り返します。
コンテナとホストの測定は、CPU、メモリ、ネットワーク、ブロックI/Oをまとめて観測すると最も役立ちます。このコンテナリソース監視ガイドでは、これらの指標を使って、データベースのボトルネックと、より広範なホストまたはネットワークの制約を見分ける方法が説明されています。
コミットレイテンシが一定の範囲に収まり、履歴が利用可能で、計画した障害をデータベースが乗り越え、復元が目標時間内に完了するなら、その配置を維持します。同じ制約関係が繰り返しテストで確認された場合にのみ変更してください。この4つの観点による確認により、より高速なベンチマークを、より信頼性の高いHome Assistantアーキテクチャと取り違えることを防げます。
テック&AIハブ
もっと読む

アップグレード後、Home Assistantはなぜ既存のデータを再処理するのですか?
Home Assistantは、保存された状態、インデックス、キャッシュ、統合機能を新しいコードと互換性のあるものにするため、アップグレード後に既存のデータを再確認する場合があります。

Home Assistantの実際のパフォーマンス上限を最も左右する依存関係は何ですか?
Home Assistantのパフォーマンスは、ホストCPUではなく、イベントから結果に至る経路で必要となる依存関係のうち最も遅いものによって制限されます。

Home Assistantのネットワーク:検出、DNS、ルーティングによって到達性が実現される仕組み
Home Assistantへの接続には、検出、正しい名前解決、有効なルート、許可されたトラフィック、そして待ち受けエンドポイントが必要です。

