ينبغي أن يستخدم Home Assistant مضيفًا منفصلًا لقاعدة البيانات أو التخزين فقط عندما يحل هذا الفصل مشكلة مُثبتة تتعلق بالسعة أو الاحتفاظ أو النسخ الاحتياطي أو نطاق الأعطال. فنقل الحالة بعيدًا عن وحدة التحكم ليس ترقية تلقائيًا.
بالنسبة إلى كثير من المنازل، تُعد قاعدة بيانات Recorder المحلية بصيغة SQLite على وحدة تخزين SSD موثوقة الخيار الأبسط، لأنها تزيل الاعتماديات المتعلقة بالشبكة والمصادقة وDNS وبدء تشغيل خادم قاعدة البيانات. وقبل إنشاء مضيف آخر، حدّد أولًا ما إذا كانت المشكلة الحقيقية هي كثرة عمليات كتابة Recorder، أو طول مدة الاحتفاظ، أو بطء استعلامات السجل، أو محدودية السعة المحلية، أو الحاجة إلى استعادة خدمة واحدة بشكل مستقل.
اضبط Recorder قبل إضافة خادم قاعدة بيانات
يتحدد نمو Recorder بالكيانات والأحداث التي يجري تخزينها، ومدى تكرار تغيّرها، ومدة الاحتفاظ بالسجل. فإذا كانت المستشعرات كثيرة التغيّر أو النطاقات غير الضرورية تستحوذ على معظم عمليات الكتابة، فإن نقل الحمل نفسه إلى خادم قاعدة بيانات أكبر ينقل المشكلة بدلًا من إزالتها.
يوضح سير عمل ضبط Recorder الحالي كيفية تأثير مدة الاحتفاظ وقواعد التضمين والاستبعاد وسلوك الإيداع في حمل الكتابة قبل التفكير في ترحيل قاعدة البيانات. قِس حجم قاعدة البيانات، ووقت استعلامات السجل، وزمن استجابة التخزين، ونشاط الكتابة بعد الضبط.
أبقِ قاعدة البيانات محلية عندما يظل الحمل المضبوط سريع الاستجابة، وتكتمل النسخ الاحتياطية ضمن نافذة الصيانة، وتبقى سعة SSD المتاحة مريحة. ينبغي أن يستند الفصل إلى متطلب لا يتحقق، لا إلى اعتقاد عام بأن قواعد بيانات العميل والخادم تكون دائمًا أسرع.
استخدم قاعدة بيانات خارجية عندما تكون فوائدها التشغيلية حقيقية
قد يكون مضيف MariaDB أو MySQL أو PostgreSQL منفصلًا مناسبًا عندما يشارك Home Assistant منصة قواعد بيانات مُدارة جيدًا، أو عندما يؤدي الاحتفاظ الطويل إلى ضغط مستمر على الاستعلامات، أو عندما يجب أن يظل مضيف وحدة التحكم خفيفًا أو قابلًا للاستبدال، أو عندما تحتاج عمليات النسخ الاحتياطي والمراقبة الخاصة بقاعدة البيانات إلى دورة حياة مستقلة.
يوضح مثال الترحيل من SQLite إلى MariaDB المكونات الجديدة التي يضيفها هذا الخيار: خدمة قاعدة البيانات، وبيانات الاعتماد، وعنوان الشبكة، وتهيئة المخطط، وإجراءات الترحيل، والتحقق، والتراجع. كما توضح حالة واقعية أكبر لترحيل قاعدة بيانات Home Assistant سبب تبرير السجل الطويل ومجموعات البيانات الكبيرة للإدارة الإضافية.
توفر مقالة ZimaSpace حول موثوقية الترقية باستخدام قاعدة بيانات خارجية حدّ الصيانة المقابل: يجب إجراء النسخ الاحتياطي لقاعدة البيانات وترقيتها واستعادتها باعتبارها خدمة مستقلة، لا اعتبارها بنية تحتية غير مرئية.
لا تضع قاعدة بيانات SQLite قيد التشغيل على مشاركة شبكية افتراضيًا
يختلف خادم قاعدة البيانات البعيد عن ملف قاعدة بيانات مخزن على SMB أو NFS؛ فقاعدة بيانات العميل والخادم تنفذ القفل والمعاملات داخل خدمة قاعدة البيانات وترسل الطلبات عبر الشبكة. أما SQLite فتنفذ قفل ملف قاعدة البيانات عبر نظام الملفات، ولذلك تصبح دلالات نظام الملفات الشبكي وتوافر نقطة التحميل وزمن الاستجابة وسلوك القفل جزءًا من كل معاملة.
يوضح تحليل قفل SQLite الأوسع سبب اختلاف سلوك القفل في أنظمة الملفات الشبكية عن القرص المحلي. كما توضح حالة فشل على مشاركة شبكية في Home Assistant الخطر العملي عندما تعتمد قاعدة بيانات Recorder قيد التشغيل على نقطة تحميل بعيدة.
استخدم NAS بحرية للنسخ الاحتياطية والتصديرات والوسائط والبيانات الأخرى المصممة للتخزين الشبكي. وإذا كان يجب أن تعيش حالة Recorder النشطة على جهاز آخر، ففضّل قاعدة بيانات مدعومة بنموذج العميل والخادم بدلًا من نقل ملف SQLite إلى مشاركة.
افصل التخزين الكبير عن حالة Home Assistant النشطة
ليست كل الأدلة المتنامية في Home Assistant بحاجة إلى طبقة التخزين نفسها. فالإعدادات وحالة التكاملات وقاعدة بيانات Recorder النشطة والوسائط ومقاطع الكاميرات والتصديرات والنسخ الاحتياطية لها احتياجات مختلفة من حيث زمن الاستجابة والاستعادة. أبقِ الحالة الصغيرة والمتكررة التحديث على تخزين محلي منخفض زمن الاستجابة، ما لم تكن هناك خدمة منفصلة تديرها عمدًا.
انقل الوسائط الكبيرة أو أجيال النسخ الاحتياطية إلى سعة NAS عبر نقاط تحميل مستقرة. ووثّق ما إذا كان يُسمح لـ Home Assistant بالإقلاع من دون نقطة التحميل تلك. ينبغي ألا يمنع غياب أرشيف الصور تشغيل أتمتة الإضاءة، بينما يجب أن يؤدي غياب قاعدة البيانات النشطة إلى حالة تدهور واضحة بدلًا من إجراء تراجع صامت لا يلاحظه أحد.
| دور البيانات | الموقع الافتراضي | سبب الفصل |
|---|---|---|
| الإعدادات والحالة النشطة | SSD محلي | زمن استجابة منخفض واستعادة بسيطة |
| SQLite الخاصة بـ Recorder | SSD محلي | تجنب الاعتماديات المتعلقة بقفل أنظمة الملفات الشبكية |
| قاعدة بيانات SQL خارجية | مضيف محلي أو منفصل لقاعدة البيانات | توسّع مستقل واحتفاظ ونسخ احتياطي وإدارة مستقلة |
| الوسائط والتصديرات | محلي أو NAS | غالبًا ما تكون السعة أهم من زمن الاستجابة |
| النسخ الاحتياطية | نسخة واحدة على الأقل خارج المضيف | تحمّل فقدان المضيف النشط |
تحقق من الإقلاع والفشل والاستعادة قبل جعل الفصل دائمًا
اختبر دور قاعدة البيانات أو التخزين الجديد دون حذف مسار الاستعادة القديم. أعد تشغيل مضيف قاعدة البيانات قبل Home Assistant، وأعد تشغيل Home Assistant قبل جاهزية قاعدة البيانات، واقطع الشبكة، وبدّل بيانات الاعتماد، واملأ نظام الملفات الهدف حتى يقترب من حد الاحتياطي، واستعد قاعدة البيانات على نسخة نظيفة.
قِس زمن استعلامات السجل عند النسبة المئوية 95، وزمن استجابة الأتمتة أثناء نشاط Recorder الكثيف، ووقت إعادة التشغيل، ومدة النسخ الاحتياطي، ووقت الاستعادة بعد انقطاع مضيف قاعدة البيانات. وإذا حسّن الفصل مقياسًا واحدًا لكنه حوّل إعادة تشغيل وحدة التحكم التي تستغرق ثلاثين ثانية إلى إجراءات استعادة متعددة الخدمات، فأدرج هذه التكلفة التشغيلية في القرار.
احتفظ بالتخزين المحلي إذا كان يحقق الهدف بالفعل. واستخدم مضيف قاعدة بيانات منفصلًا عندما تكون عمليات قاعدة بيانات العميل والخادم والاستعادة المستقلة مزايا حقيقية. واستخدم مضيف تخزين منفصلًا للبيانات الكبيرة والنسخ الاحتياطية، لكن لا تجعل التحكم المحلي الحرج يعتمد على نظام ملفات بعيد دون سبب مختبر.
إعداد التخزين الشبكي والخادم
المزيد للقراءة

إعداد RAG محلي للأبحاث والملاحظات والوثائق الخاصة
اجعل المستندات الأصلية المرجع المعتمد، واجعل الفهرسة قابلة للتكرار، واشترط الاستشهادات، وافصل النماذج القابلة للاستبدال عن بيانات المصدر الخاصة.

لماذا يستخدم المطورون عقدة بوابة لنظام DNS الخاص وشبكات VPN والتطبيقات التجريبية؟
تمنح عقدة البوابة التطبيقات الخاصة اسمًا واحدًا ومسار وصول مُتحكَّمًا فيه، بينما تظل عقد الحوسبة غير مكشوفة وقابلة للاستبدال.

كيفية بناء حزمة تطبيقات قابلة لإعادة الإنتاج باستخدام ملفات Compose والأسرار والبيانات المستمرة المفصولة
حافظ على قابلية نقل تعريفات Compose، واحمِ الأسرار، وأنشئ نسخًا احتياطية مستقلة لبيانات التطبيقات حتى يمكن إعادة بناء المكدس على مضيف نظيف.

