التخزين المستمر: الذاكرة طويلة المدى في عصر الحاويات
نشرت: 2023-04-17يشير التخزين الدائم إلى الاحتفاظ بالبيانات بطريقة غير متطايرة بحيث تظل متاحة حتى بعد إيقاف تشغيل الجهاز أو التطبيق أو إعادة تشغيله. يسمح تخزين البيانات واسترجاعها لتطبيقات الويب بحفظ معلومات المستخدم وحالاته والعمل بشكل موثوق.
في التطبيقات المتجانسة ، يكون الوصول إلى التخزين مباشرًا لأن الخادم والتخزين يعيشان معًا. ومع ذلك ، فإن الأنظمة الموزعة جغرافيًا تجعل الوصول أكثر تعقيدًا ، حيث يجب أن يظل نظام التخزين متاحًا لجميع المكونات في جميع أنحاء العالم.
تزيد عملية الحاوية من تعقيد المشكلة لأن الحاويات خفيفة الوزن وعديمة الحالة وسريعة الزوال - وهي خصائص غير مناسبة لتخزين البيانات. لذلك ، يجب أن يكون أي حل تخزين دائم قادرًا على العمل بسلاسة مع الحاويات ، مما يضيف طبقة أخرى من التعقيد.
تتعمق هذه المقالة في التخزين المستمر من خلال استكشاف أنواعها وبنيتها وحالات استخدامها. كما يوفر عرضًا عمليًا يوضح الفرق بين تخزين وحدة التخزين وتخزين الحجم الثابت في Docker.
أنواع التخزين الدائم
هناك عدة أنواع من التخزين غير المتطاير ، بما في ذلك الأقراص الدوارة التقليدية (محركات الأقراص الثابتة أو محركات الأقراص الثابتة) ومحركات الأقراص ذات الحالة الصلبة (SSD) والتخزين المتصل بالشبكة (NAS) وشبكات منطقة التخزين (SAN).
- محركات الأقراص الصلبة هي أجهزة تخزين بيانات كهروميكانيكية تقوم بتخزين واسترداد البيانات الرقمية باستخدام أقراص دوارة للوسائط المغناطيسية. تستخدم الأقراص رؤوسًا مغناطيسية على ذراع مشغل متحرك لقراءة البيانات وكتابتها.
- تستخدم محركات الأقراص ذات الحالة الثابتة ، التي تسمى أحيانًا أجهزة تخزين أشباه الموصلات ، أو أجهزة الحالة الصلبة ، أو أقراص الحالة الصلبة ، تجميعات الدوائر المتكاملة لتخزين البيانات باستمرار ، وعادةً ما تستخدم أجهزة فلاش متصلة لا تحتوي على أجزاء متحركة. طبيعتها الثابتة تجعلها أسرع وأكثر موثوقية من محركات الأقراص الصلبة.
- التخزين المتصل بالشبكة عبارة عن مجموعة من محركات الأقراص الثابتة أو محركات أقراص الحالة الصلبة أو كليهما ، متصلة عبر شبكة محلية باستخدام نظام ملفات مثل نظام ملفات التكنولوجيا الجديدة (NTFS) أو نظام الملفات الممتد الرابع (EXT4).
- شبكات SAN هي أجهزة تخزين ذات سرعة عالية ومتصلة بالشبكة ، مثل مكتبات الأشرطة أو صفيفات الأقراص. يبدو اتصالهم بنظام التشغيل كتخزين محلي ولا يمكن الوصول إليه من خلال شبكة المنطقة المحلية (LAN).
هندسة التخزين الثابتة
هناك ثلاث طرق للتخزين المستمر ، ولكل منها حالات استخدام فريدة وقيود.
بنية الكائن الثابتة
يستخدم نهج البنية الثابتة للكائن رسم الخرائط العلائقية للكائن (ORM) لتخزين البيانات ككائنات في قاعدة بيانات علائقية أو قاعدة بيانات ذات قيمة مفتاح. يكون هذا الأسلوب مفيدًا عندما لا تحتوي البيانات على مخطط محدد ، حيث يتولى ORM تخزينها واسترجاعها.
منع العمارة المستمرة
تستخدم البنية الثابتة للحظر أجهزة تخزين على مستوى الكتلة ، والتي تكون مفيدة عند تخزين الملفات الكبيرة. هذا الأسلوب مفيد عند تخزين كميات كبيرة من البيانات ، حيث يمكنك استخدام كتل متعددة لزيادة سعة التخزين.
الهندسة المعمارية الثابتة Filestore
كما يوحي الاسم ، يستخدم نهج البنية الثابتة لملف الملف نظام ملفات لتخزين البيانات. تتضمن إحدى الطرق استخدام خوادم قواعد البيانات ، والتي توفر طريقة مركزية لتخزين البيانات. تستخدم حلول الاستضافة السحابية مثل Kinsta خوادم قواعد البيانات التي يمكن ربطها بسهولة بالتطبيقات وتوفر الثبات.
تعد بنية Filestore المستمرة مفيدة في التطبيقات التي تتطلب استردادًا متكررًا للملفات وعندما تحتاج إلى واجهة لإدارتها.
حالات استخدام التخزين المستمر
يناقش هذا القسم بعض حالات الاستخدام لكل نوع تخزين.
التخزين الثابت للكائن
- التخزين السحابي: يُستخدم التخزين الثابت للكائن بشكل شائع في حلول التخزين السحابي لتخزين واسترداد كميات كبيرة من البيانات غير المهيكلة ، مثل الصور ومقاطع الفيديو والمستندات. يستخدم موفرو السحابة تخزين الكائنات لتزويد العملاء بخدمات تخزين قابلة للتطوير ومتاحة للغاية ودائمة.
- تحليلات البيانات الكبيرة: يتم استخدام التخزين الثابت للكائن في تحليلات البيانات الضخمة لتخزين وإدارة مجموعات البيانات الكبيرة المستخدمة غالبًا لتحليل البيانات والتعلم الآلي والذكاء الاصطناعي. يسمح تخزين الكائنات بالوصول إلى البيانات بسرعة وكفاءة ، مما يجعلها مكونًا رئيسيًا لهياكل البيانات الضخمة.
- شبكات تسليم المحتوى: يتم استخدام التخزين الثابت للكائن في شبكات تسليم المحتوى (CDN) لتخزين وتوزيع المحتوى ، مثل الصور ومقاطع الفيديو والملفات الثابتة ، عبر شبكة عالمية من الخوادم. يسمح تخزين الكائنات لشبكات CDN بتقديم محتوى عالي السرعة للمستخدمين في جميع أنحاء العالم ، بغض النظر عن الموقع.
منع التخزين الدائم
- الحوسبة عالية الأداء (HPC) : بيئات HPC معالجة سريعة وفعالة لأحجام كبيرة من البيانات. يسمح التخزين الدائم للكتل لمجموعات HPC بتخزين واسترداد مجموعات البيانات الكبيرة ، مثل المحاكاة العلمية ونمذجة الطقس والتحليل المالي. غالبًا ما يُفضل التخزين الكتلي لـ HPC لأنه يوفر وصولاً عالي الأداء وزمن انتقال منخفض للبيانات ، ويسمح بعمليات الإدخال / الإخراج المتوازية (I / O) ، والتي يمكن أن تحسن أوقات المعالجة بشكل كبير.
- تحرير الفيديو: تتطلب تطبيقات تحرير الفيديو وصولاً عالي الأداء وزمن وصول منخفض إلى ملفات الفيديو الكبيرة. يجب أن تستوعب أيضًا عددًا كبيرًا من عمليات الإدخال / الإخراج في الثانية وزمن انتقال منخفض لعرض ملفات الفيديو وتحريرها في الوقت الفعلي. يوفر التخزين الكتلي هذه الإمكانات ، مما يجعله حلاً مثاليًا لعمليات سير عمل تحرير الفيديو.
- الألعاب: تتطلب تطبيقات الألعاب أيضًا أداءً عاليًا وزمن انتقال منخفضًا للوصول إلى أصول اللعبة وبيانات المشغل. يخزن التخزين الكتلي ويسترد كميات كبيرة من البيانات بسرعة ، مما يضمن تحميل بيئات اللعبة على الفور واستجابتها أثناء اللعب.
التخزين الثابت Filestore
- الوسائط والترفيه: عادةً ما تستخدم تطبيقات تحرير الفيديو والرسوم المتحركة والعرض التخزين الدائم. تتطلب هذه التطبيقات وصولاً عالي الأداء وزمن وصول منخفض إلى ملفات الوسائط الكبيرة ، مثل الفيديو والصوت والصور. يوفر Filestore نظام ملفات مشتركًا يمكن الوصول إليه بواسطة عملاء متعددين ، مما يجعله حل تخزين مثاليًا لهذه التطبيقات.
- إدارة محتوى الويب: تستخدم أنظمة إدارة محتوى الويب (CMSs) تخزين الملفات المستمر في أنظمة الملفات المشتركة لتخزين وإدارة محتوى موقع الويب ، مثل النصوص والصور وملفات الوسائط المتعددة. يوفر Filestore موقعًا مركزيًا لمحتوى موقع الويب ، مما يسهل إدارته وتحديثه. كما أنه يمكّن العديد من المستخدمين من العمل في نفس الوقت على نفس المحتوى ، مما يحسن التعاون والإنتاجية.
التخزين الدائم في حاويات
الحاويات خفيفة الوزن ومحمولة وآمنة وواضحة وتوفر اندماجًا بين التطبيقات المختلفة. يجب أن يكون لديهم آلية لاستمرار البيانات بين إعادة تشغيل الحاوية وإزالتها. تحتوي الحاويات على تخزين ملفات أو نظام ملفات مثل التطبيقات التقليدية ، ولكن كلما قمت بإعادة بنائها باستخدام تغييرات جديدة ، ستفقد جميع البيانات غير الدائمة.
لهذا السبب تقدم الحاويات خيار تضمين تخزين وحدة التخزين أو تركيب وحدة تخزين. تعامل الحاويات أحجام التخزين كدليل. أي بيانات مكتوبة على وحدة التخزين تذهب إلى نظام الملفات المضيف.
يجب أن يعمل التخزين المستمر للحاويات بهذه الطريقة لأن إعادة تشغيل الحاوية يؤدي إلى إنشاء مثيل جديد وتجاهل المثيل القديم. إذا لم تتضمن الحاوية عرضًا متسقًا للبيانات ، فستختفي البيانات عند إعادة تشغيل الحاوية. يحافظ حجم التخزين على البيانات عبر الجلسات وإعادة تشغيل الحاوية ، مما يسمح للحاوية بالحفاظ على حالتها حتى إذا تم نقلها أو إعادة تشغيلها.
الحجم مقابل الحجم الثابت
توفر الحاويات طريقتين لتخزين البيانات الثابتة: استخدام الأحجام والأحجام الثابتة. هناك فرق كبير بينهما. تقوم الحاوية بإدارة البيانات في وحدة التخزين. عند إيقاف الحاوية ، تظل البيانات متاحة عند إعادة تشغيل الحاوية. ومع ذلك ، عندما تحذف حاوية أو تزيلها ، تُفقد البيانات لأنك تحذف أيضًا تخزين وحدة التخزين الأساسية.
يعد تخزين وحدة التخزين الثابتة أو حوامل الربط طريقة لتخزين البيانات خارج نظام ملفات الحاوية. بهذه الطريقة ، لا تُفقد البيانات حتى عند حذف الحاوية. يظل ثابتًا حتى يتم حذفه يدويًا.
يوضح القسم التالي كلا نوعي الحجم مع أمثلة.
العرض التوضيحي للتخزين الدائم للحاوية
لقد أنشأنا تطبيق ويب صغيرًا لإظهار التخزين الدائم باستخدام حاويات Docker. يمكنك المتابعة عن طريق تثبيت Docker والحصول على الكود من مستودع GitHub هذا.
التطبيق عبارة عن نموذج أولي يحتوي على حقلين لإدخال المستخدم:
- عنوان
- نص الوثيقة
بمجرد حفظ إدخال المستخدم ، يمكنك الوصول إليه عن طريق فتح الملف في دليل الملاحظات بالاسم الوارد في حقل العنوان . الإدخال من حقل نص المستند هو محتوى الملف.
كيفية استخدام سعة التخزين
بمجرد تثبيت التطبيق على جهازك الخاص ، يمكنه استخدام تخزين وحدة التخزين كما هو موضح في Dockerfile .
الآن ، تقوم ببناء الصورة وتشغيل الحاوية. للقيام بذلك ، قم بتنفيذ الأوامر التالية.
docker build -t feedback-node:volumes . docker run -d -p 3000:80 --name feedback-app feedback-node:volumes
بمجرد تشغيل التطبيق ، انتقل إلى localhost: 3000 لإرسال التعليقات.
انقر فوق حفظ وانتقل إلى المضيف المحلي: 3000 / feedback / test.txt لمعرفة ما إذا تم تخزين الإدخال بنجاح أم لا.
قم بإزالة الحاوية وإعادة تشغيلها لمعرفة ما إذا كان الإدخال مستمرًا.
docker stop feedback-app docker start feedback-app
إذا قمت الآن بزيارة نفس عنوان URL ، فسترى أن التعليقات لا تزال موجودة. ولكن ماذا يحدث إذا قمت بإزالة الحاوية وإعادة تشغيلها؟
docker stop feedback-app docker rm feedback-app docker run -d -p 3000:80 --name feedback-app feedback-node:volumes
بمجرد إعادة التشغيل ، إذا عدت إلى عنوان URL هذا ، فإنه لم يعد موجودًا لأن البيانات فقدت عند إزالة الحاوية. تستمر بيانات الحجم فقط عند إيقاف الحاوية ، وليس عند إزالتها.
للتخفيف من هذه المشكلة واستمرار البيانات حتى عند إزالة الحاوية ، يجب عليك استخدام تخزين ثابت أو تخزين مسمى. أولاً ، يجب تنظيف الحاويات والصور.
docker stop feedback-app docker rm feedback-app docker rmi feedback-node:volumes
كيفية استخدام سعة التخزين الثابتة
قبل اختبار ذلك ، يجب عليك إزالة سمة VOLUME من Dockerfile وإعادة إنشاء الصورة.
docker build -t feedback-node:volumes . docker run -d -p 3000:80 --name feedback-app -v feedback:/app/feedback feedback-node:volumes
كما ترى ، في الأمر الثاني ، يمكنك استخدام العلامة -v
لتحديد الحجم الثابت خارج الحاوية ، والذي يستمر حتى عند إزالة الحاوية.
مثل الخطوة السابقة ، حاول إضافة التعليقات والوصول إليها بمجرد إيقاف الحاوية وإزالتها وإعادة تشغيلها.
docker stop feedback-app docker rm feedback-app docker run -d -p 3000:80 --name feedback-app -v feedback:/app/feedback feedback-node:volumes
كما ترى ، حتى بعد إيقاف الحاوية وإزالتها ، يمكن الوصول إلى البيانات وتظل كذلك.
ملخص
يعد التخزين الدائم أمرًا حيويًا للتطبيقات المعبأة في حاويات لأنه يسمح باستمرار البيانات خارج دورة حياة الحاوية. النوعان الرئيسيان للتخزين الدائم للتطبيقات المعبأة في حاويات هما الأحجام وحوامل الربط ، ولكل منها فوائدها وحالات استخدامها.
يتم تخزين وحدات التخزين داخل نظام ملفات الحاوية ، بينما يمكن الوصول إلى حوامل الربط مباشرة على الجهاز المضيف.
يتيح التخزين الدائم مشاركة البيانات بين الحاويات ، مما يجعل من الممكن إنشاء تطبيقات معقدة ومتعددة المستويات. يعد التخزين المستمر أمرًا ضروريًا لضمان استقرار واستمرارية التطبيقات المعبأة في حاويات ، مما يوفر طريقة موثوقة ومرنة لتخزين البيانات الهامة.
وإذا كنت تستخدم Docker لتطوير تطبيقات الويب الخاصة بك ، فستجد أنه من السهل تكوين عمليات نشر Dockerfile مع خدمة استضافة التطبيقات من Kinsta.