センサーの保持は、エンティティ数、サンプル頻度、記録のオーバーヘッド、インデックスの増加、バックアップ履歴を時間とともに増加させることで、スマートホームサーバーのストレージを駆動します。
家庭では最初にいくつかの温度や動作のエンティティから始まり、次に電力メーター、空気質センサー、漏水検知器、ドアコンタクト、気象データ、家電のテレメトリ、計算された統計情報が追加されることがあります。各値は小さいですが、サーバーはタイムスタンプ、識別子、属性、インデックス、トランザクション記録、そしてしばしば複数のバックアップコピーをそれらの周囲に保存します。以下のセクションでは、保持が単純な「センサーあたりのバイト数」の計算ではなくデータライフサイクルの決定である理由と、集約が長期的な曲線をどのように変えるかを示します。
ストレージの増加は単位時間あたりのサンプル数から始まる
最初の変数は、各エンティティが新しい記録を作成する頻度です。5分ごとに報告する温度センサーは1日に288回の読み取りを生成しますが、5秒ごとに報告する電力メーターは17,280回になります。
長期のESPHome展開では、高頻度センサーデータを低解像度の履歴データから分離することがよくあります。生のレートは初期の書き込み負荷と後の分析に利用可能な詳細度を決定します。
報告頻度にエンティティ数と保持期間を掛け合わせます。1つの高頻度エネルギーチャンネルは、ゆっくり変化する数十のコンタクトセンサーよりも多くの行を生成することがあります。
1つのセンサー値は数値ペイロード以上の容量を占める
浮動小数点値は数バイトしか使わないかもしれませんが、データベースの行にはタイムスタンプ、エンティティ参照、スキーマフィールド、ページスペース、トランザクションメタデータ、時には繰り返される属性や状態文字列も必要です。
時系列システムはタイムスタンプ付き記録に最適化されていますが、ストレージにはチャンクメタデータ、インデックス、ライトアヘッドログ、圧縮オーバーヘッドも含まれます。記録がまばらでテキストが多く、頻繁にインデックスされる場合、ペイロードサイズとディスク上のサイズの差が最も大きくなります。
このため、「読み取りあたり8バイト」という保持の推定は信頼できません。正しい測定は、実際のスキーマ、記録設定、センサーミックスに基づく1日あたりのデータベース成長量です。
属性が多いエンティティは、記述的なJSONが頻繁に変わったり履歴行で重複したりすると特にコストがかかります。
インデックスとクエリ速度は独自のストレージコストを追加する
履歴ダッシュボードは、時間範囲内で1つのエンティティを特定し、複数のセンサーを比較し、日次または月次の集計を計算する必要があります。インデックスは追加の検索可能な構造を保存することでこれらのクエリを高速化します。
時系列データベースの比較研究によると、書き込み性能、圧縮、クエリ動作、ストレージ効率はデータベース設計によって異なります。高速な最近のクエリに最適化されたレイアウトは、単純な追記専用アーカイブよりも多くのインデックスやメモリリソースを使用することがあります。
すべてのインデックスを削除するとスペースは節約できますが、数年分のチャートやトラブルシューティングが実用的でなくなる可能性があります。したがって、保持計画は生の容量と家庭が実行することを期待するクエリのバランスを取る必要があります。
生の保持と履歴保持は異なる解像度を必要とする
最近のトラブルシューティングでは5秒ごとの電力読み取りが必要な場合がありますが、5年分のエネルギー比較では時間単位や日単位の合計だけで十分なことがあります。両方を生の解像度で保持すると容量を無駄にし、有用な長期詳細を追加しません。
最新のTSDBは保持ポリシー、圧縮、ロールアップを使用してデータを異なる層に経年変化させます。生の記録は数週間または数ヶ月で期限切れになり、時間単位、日単位、月単位の集計は数年間保持されます。
集約関数はセンサーに合わせる必要があります。温度は最小値、最大値、平均が必要かもしれません。エネルギーカウンターは差分が必要で、コンタクトセンサーは算術平均ではなく継続時間や遷移回数が必要な場合があります。
生の行が削除されると、集計はすべての短いスパイクやイベントを再構築できません。将来どの質問に答えられる必要があるかを決めてからロールアップを選択してください。
バックアップは保持されたデータベースのフットプリントを増やす
ライブデータベースは1つのコピーに過ぎません。スケジュールされたスナップショット、アプリケーションバックアップ、ファイルシステムスナップショット、レプリカ、エクスポートされたアーカイブ、オフサイトコピーは、同じ履歴で消費される実効ストレージを増やすことがあります。
時系列ストレージは頻繁な書き込みを使用するため、ストレージパーティションと圧縮パターンがスナップショットの変更保存効率に影響します。データベース全体を繰り返しコピーするバックアップシステムは、増分ブロックやネイティブエクスポートをキャプチャするものよりも速く成長する可能性があります。
したがって、保持はライブシステムとそのバックアップの両方で定義する必要があります。アクティブなデータベースから古い行を削除しても、そのスナップショットが期限切れになるまでは不変のスナップショットからスペースは回収されません。
保持期間を選ぶ前に日次成長を測定する
意図したセンサーを少なくとも代表的な1週間稼働させ、データベースサイズ、日次行数、書き込み量、バックアップ差分、最大エンティティを記録します。通常の平日、HVACサイクル、高消費電力家電、再接続や繰り返し状態をスパムするデバイスを含めてください。
専用の長期データストアは、詳細な自動化履歴を数年分の分析から分離できます。ZimaSpaceのスマートホームストレージプランは、ライブレコーダー、長期集計、データベースメンテナンス、バックアップ保持のための容量を別々に確保すべきです。
測定した日次成長を生の保持期間にわたって投影し、インデックスのオーバーヘッド、圧縮のための空き容量、保持されるすべてのバックアップ世代を加えます。これにより、一般的なセンサー数ではなく実際の家庭に基づいた容量の閾値が得られます。
よくある質問
イベントのみのセンサーはほとんどストレージを使わないのですか?
通常、高頻度の測定よりも少ない行を作成しますが、繰り返される属性、利用不可状態、再接続、自動化で生成されたエンティティが履歴サイズを増加させることがあります。
圧縮により保持制限は不要になりますか?
いいえ。圧縮は1レコードあたりのストレージを減らしますが、無制限のストリームは成長し続け、そのバックアップ、インデックス、メンテナンスウィンドウも増加します。
すべてのセンサー履歴は同じ保持期間を使うべきですか?
いいえ。短期間の診断データ、セキュリティイベント、エネルギー統計、環境トレンドは異なる解像度と保持期間を必要とすることが多いです。
テック&AIハブ
もっと読む

ホームサーバーにサービスを追加すると、Home Assistantのアーキテクチャはなぜ変化するのか?
サービスを追加して共有状態、キュー、デバイス、更新サイクル、または障害ドメインが増えると、単にコンテナが増えるだけでなく、Home Assistantのアーキテクチャが変わります。

キャッシュを容量と取り違えずにHome Assistantのパフォーマンスを測定する方法
ウォーム状態での結果は、容量ではなく再利用を示します。コールドスタート、ウォーム時の定常状態、繰り返し負荷、テールレイテンシ、そして最初に飽和するリソースを測定してください。

Home Assistantで家全体を制御するには、どれくらいの自動化同時実行数が必要ですか?
家全体の自動化の多くは、重複実行数に上限を設けるだけで十分です。実行時間×トリガー発生率で同時実行数を見積もり、その後、下流システムが安全に処理できる容量を上限にします。

