أساسيات الحوسبة السحابية
خدمات التخزين
التخزين الكائني والكتلي والملفي: كيف ينظّم كل واحد البيانات بطريقة مختلفة، وأي حمل عمل يناسب كل منها فعلياً، والخطأ المفضّل في الاختبارات وهو معاملتها كأنها قابلة للتبديل.
- ميّز بين التخزين الكائني والكتلي والملفي من حيث تنظيم البيانات وطريقة الوصول إليها
- طابق نوع التخزين مع حمل العمل بناءً على نمط الوصول
- اشرح لماذا المتانة والإتاحة ضمانان منفصلان لا ضمان واحد
- حدد منتجات التخزين الكائني والكتلي والملفي التي تقدّمها AWS وAzure وGoogle Cloud
الكلمة نفسها، 3 مهام مختلفة تماماً
يبدو "التخزين" شيئاً واحداً حتى تحتاجه فعلياً. تطبيق مشاركة صور يخزّن 50 مليون صورة مستخدم، وقاعدة بيانات تكتب آلاف التحديثات الصغيرة كل ثانية، و5 خوادم ويب تحتاج جميعها قراءة مجلد الإعدادات المشترك نفسه، هذه 3 مشكلات مختلفة تماماً، ولا يوجد تصميم تخزين واحد يحلّها الثلاث جيداً. يشحن مزوّدو السحابة 3 أنواع تخزين متمايزة لهذا السبب بالضبط: الكائني، والكتلي، والملفي. التفريق بينها بحسب ما بُنيت لفعله، لا بحسب أسمائها فقط، هو المهارة الفعلية التي يعلّمها هذا الدرس.
التخزين الكائني: سلال ملفات موسومة
ابدأ بتطبيق مشاركة الصور. تُرفع كل صورة مرة واحدة، وتُقرأ مرات كثيرة، ولا تُعدَّل في مكانها أبداً؛ تستبدل صورة، لا تعدّل 4 كيلوبايت منها. تنظّم Amazon S3، النموذج المرجعي للتخزين الكائني، البيانات حول هذا النمط بالضبط: السلة (bucket) حاوية، وكل ملف بداخلها كائن (object)، يُعنوَن بمفتاح فريد بدل مسار مجلد. لا توجد هرمية مجلدات فعلية أسفل ذلك، فقط مساحة تسمية مسطّحة حيث يبدو المفتاح "photos/vacation/beach.jpg" كمسار لكنه في الحقيقة مجرد سلسلة نصية.
يتنازل التخزين الكائني عن التعديل في المكان مقابل نطاق ضخم وتكلفة منخفضة ومتانة قوية؛ صُمِّمت S3 لمتانة 99.999999999% (11 تسعات)، محقَّقة بتخزين البيانات بتكرار عبر عدة مناطق إتاحة. هذا المزيج هو سبب كون التخزين الكائني الخيار الافتراضي لبحيرات البيانات، والنسخ الاحتياطية، وأصول المواقع الثابتة، وملفات الوسائط: أحمال يحدّدها نمط الكتابة مرة والقراءة كثيراً، لا التعديلات الصغيرة المستمرة.
التخزين الكتلي: قطع مرقّمة لجهاز واحد
فكّر الآن في قاعدة بيانات علائقية تكتب صفوفاً وتعيد كتابتها باستمرار. يحتاج هذا الحمل زمن كمون منخفضاً والقدرة على تغيير أجزاء صغيرة من البيانات في مكانها، وهو بالضبط ما لا يقدّمه التخزين الكائني. يقسّم التخزين الكتلي، المبني على نموذج Amazon EBS، الحجم إلى قطع ثابتة الحجم، مُعنونة برقم، ويربط ذلك الحجم بنسخة واحدة، تماماً كارتباط قرص صلب بحاسوب واحد. يستطيع نظام التشغيل العامل على تلك النسخة تهيئة الحجم وتركيبه ومعاملته كقرص محلي، لأنه، وظيفياً، هو ذلك بالضبط.
التخزين الكتلي مرتبط بمنطقة إتاحة: يعيش حجم EBS في منطقة إتاحة واحدة بعينها ولا يرتبط إلا بنسخ في المنطقة نفسها، وهذا بالضبط سبب حاجة قاعدة بيانات جالسة على حجم EBS واحد إلى استراتيجية تكرار أو نسخ احتياطي خاصة بها للنجاة من عطل تلك المنطقة. مقابل هذا القيد، يقدّم التخزين الكتلي الأداء المنخفض الكمون وعالي عمليات الإدخال والإخراج الذي تحتاجه فعلاً قاعدة بيانات عاملة، أو قرص إقلاع جهاز افتراضي.
التخزين الملفي: شجرة مجلدات واحدة، أجهزة كثيرة
السيناريو الثالث، 5 خوادم ويب تشارك مجلد الإعدادات نفسه، يحتاج شيئاً لا يقدّمه أي من النوعين الآخرين مباشرة: وصول متزامن من عدة أجهزة إلى بنية المجلدات الهرمية نفسها. يحل التخزين الملفي، المبني على نموذج Amazon EFS، هذا باستخدام بروتوكول نظام ملفات شبكي (NFS)، بحيث يُركِّب كل خادم نظام الملفات نفسه ويرى المجلدات والملفات نفسها، مع ظهور تغييرات خادم واحد للآخرين فوراً. خلافاً لحجم EBS ذي الارتباط الواحد، يتوسّع نظام ملفات مثل EFS تلقائياً مع إضافة البيانات، ويستطيع أن تُركِّبه عدة نسخ EC2 وحاويات، وحتى خوادم محلية، في آن واحد.
الحد الفاصل، جنباً إلى جنب
| الخاصية | الكائني | الكتلي | الملفي |
|---|---|---|---|
| تنظيم البيانات | مساحة تسمية مسطّحة من كائنات مُعنونة بمفتاح | قطع مرقّمة ثابتة الحجم | مجلدات وملفات هرمية |
| الارتباط | يُوصَل إليه عبر الشبكة من أي عميل مخوَّل | نسخة واحدة عادةً | عدة نسخ في آن واحد |
| نمط الوصول الأفضل | كتابة مرة، قراءة كثيراً، بلا تعديل في المكان | قراءات وكتابات متكررة صغيرة، كمون منخفض | قراءات وكتابات مشتركة عبر أجهزة |
| الاستخدام النمطي | نسخ احتياطية، وسائط، بحيرات بيانات، أصول ثابتة | قواعد بيانات، أحجام إقلاع، أحمال معاملاتية | محتوى مشترك، مجلدات منزلية، إعدادات مشتركة عبر أسطول |
| منتج AWS | S3 | EBS | EFS |
| منتج Azure | Blob Storage | Managed Disks | Azure Files |
| منتج Google Cloud | Cloud Storage | Persistent Disk | Filestore |
مثال محلول: موقع تجارة إلكترونية واحد، 3 قرارات تخزين
يحتاج موقع تجارة إلكترونية إلى تخزين 3 أنواع مختلفة من البيانات، والإجابة الصحيحة مختلفة في كل مرة. صور المنتجات، الملايين منها، تُرفع مرة وتُقدَّم للمتسوقين باستمرار: التخزين الكائني، لأن لا شيء في صورة منتج يحتاج تعديلاً في مكانها، ويناسب الحجم نطاق التخزين الكائني وتكلفته. قاعدة البيانات المعاملاتية التي تتبّع الطلبات والمخزون: التخزين الكتلي، لأن كل عملية دفع تكتب صفوفاً وتعيد كتابتها وتحتاج زمن الكمون المنخفض الذي يمنحه فقط حجم مرتبط مباشرة. مجلد مشترك من ملفات ذاكرة تخزين مؤقت للجلسات، تحتاج 6 خوادم ويب متطابقة خلف موازن حمل قراءته وكتابته معاً: التخزين الملفي، لأنه الوحيد من الثلاثة المبني للوصول المتزامن من عدة أجهزة إلى شجرة المجلدات نفسها.
بدّل أي اثنين من هذه الاختيارات، وينهار النظام كلياً، لن تعمل قاعدة بيانات بشكل مقبول على تخزين كائني، أو يعمل لكن يهدر المال والأداء على عدم تطابق لم يكن يحتاجه.
الالتباس: الأرخص لا يعني القابل للتبديل
من المغري النظر إلى سعر التخزين الكائني المنخفض لكل غيغابايت وافتراض أنه ببساطة "الخيار الاقتصادي" الذي تستطيع استبداله في أي مكان. ليس كذلك. التخزين الكائني رخيص بالضبط لأنه يتنازل عن الوصول العشوائي منخفض الكمون في المكان الذي تعتمد عليه قاعدة بيانات عاملة أو حجم إقلاع. نقل ملفات بيانات قاعدة بيانات إلى تخزين كائني لا يوفّر المال على نظام يعمل، بل ينتج نظاماً لا يعمل، لأن نوع التخزين ونمط الوصول يجب أن يتطابقا. السعر نتيجة للمقايضة، لا بديل عن فهمها.
إلى أين يقودك هذا
3 أسئلة تفرز أي قرار تخزين تقريباً: هل تُعدَّل البيانات في مكانها أم تُكتب مرة وتُقرأ فقط، هل تحتاج مشاركة بين عدة أجهزة في آن واحد، وهل تحتاج إقلاع نظام تشغيل أو تشغيله مباشرة. يجيب التخزين الكائني بـ"كُتبت مرة، قُرئت كثيراً، بلا حاجة مشاركة". يجيب التخزين الكتلي بـ"مرتبط بجهاز واحد، يُعدَّل باستمرار، يحتاج سرعة". يجيب التخزين الملفي بـ"مجلد مشترك، عدة أجهزة". ينتقل الدرس التالي من التخزين الخام إلى الطبقة التي تتحدث معها أغلب التطبيقات مباشرة: قواعد البيانات.
