انتقل إلى المحتوى
HexaTransfer
العودة إلى المدونة
السحابة والتخزين

تخزين الكائنات مقابل تخزين الكتل: أيهما أفضل

قارن بين تخزين الكائنات وتخزين الكتل لتطبيقات نقل الملفات. تحليل الأداء والتكلفة وقابلية التوسع وحالات الاستخدام.

تخزين الكائنات يتفوق للملفات التي يرفعها المستخدمون والأصول الثابتة والنسخ الاحتياطية والأرشيفات — كل ما تصل إليه عبر HTTP ونادراً ما تُعدِّله في مكانه. تخزين الكتل يتفوق حين تحتاج كتابات عشوائية بزمن استجابة منخفض: قواعد البيانات وأقراص التشغيل وأنظمة الملفات عالية المعاملات. لأحمال عمل نقل الملفات تحديداً، تخزين الكائنات صحيح في شبه كل الحالات لأنه يتوسع أفقياً، ويكلف 0.015-0.023 دولار/جيجابايت/شهر مقابل 0.08-0.125 دولار/جيجابايت/شهر لتخزين الكتل، ويتعامل مع دلاء بالبيتابايت بدون إعادة تقسيم.

كيف يختلفان فعلاً من الداخل

تخزين الكتل يكشف جهازاً خاماً (LUN أو EBS volume) يُنسِّقه نظام التشغيل بـ ext4 أو XFS أو NTFS. القراءات والكتابات تحدث في كتل بحجم ثابت، عادةً 4 KB أو 16 KB، عبر iSCSI أو NVMe-oF أو SCSI. نظام التشغيل يملك نظام الملفات؛ جهاز الكتل لا يعرف شيئاً عن الملفات، فقط الإزاحات.

تخزين الكائنات يكشف واجهة HTTP (S3, Azure Blob, GCS) حيث لكل كائن مفتاح وبايتات وبيانات وصفية. لا يوجد نظام ملفات تحته — الكائنات وحدات ذرية تضع (PUT) وتجلب (GET) بالكامل. الكتابات تُولِّد إصدارات جديدة؛ لا يمكنك تعديل البايت رقم مليون في كائن بحجم 2 جيجابايت دون إعادة كتابة الكائن كله. هذه الثبات ميزة: تُمكِّن التكرار متعدد المناطق والإصدار وقواعد دورة الحياة التي يتعذَّر على تخزين الكتل مطابقتها.

مقارنة سريعة

| البُعد | تخزين الكائنات | تخزين الكتل | |--------|----------------|-------------| | الواجهة | S3 HTTP REST | POSIX + iSCSI/NVMe | | التكلفة (AWS الساخن) | 0.023 دولار/جيجابايت/شهر | 0.08 دولار/جيجابايت/شهر (gp3) | | الحجم الأقصى للوحدة | 5 تيرابايت لكل كائن | 64 تيبيبايت لكل EBS volume | | زمن الاستجابة | 10-100 مللي ثانية | أقل من مللي ثانية | | القراء المتزامنون | غير محدود | مضيف واحد عادةً | | ادعاء المتانة | 11 تسعة (S3) | 5-6 تسعة (EBS) | | جيد لـ | الملفات والوسائط والنسخ الاحتياطية | قواعد البيانات وأقراص التشغيل | | سيئ لـ | الكتابات العشوائية في ملفات كبيرة | التوسع الأفقي فوق volume واحد |

الإنتاجية مقابل زمن الاستجابة: فائزون مختلفون

EBS volume من نوع gp3 يُقدِّم قراءات 4 KB في أقل من 1 مللي ثانية؛ S3 GET لنفس الـ 4 KB يستغرق 20-80 مللي ثانية حسب المنطقة. لسجل PostgreSQL write-ahead يُنفِّذ 5,000 معاملة في الثانية، فجوة زمن الاستجابة هذه مُدمِّرة. لمستخدم يُنزِّل ملف .zip بحجم 500 ميجابايت، لا أهمية لها لأن تأخير البايت الأول يختفي خلف الإنتاجية.

على الإنتاجية المتسلسلة، تخزين الكائنات كثيراً ما يتفوق على الحجم. S3 يستطيع خدمة دلو واحد بـ 5,500 طلب GET/ثانية لكل بادئة، ومع تقسيم معدل الطلبات (مفاتيح ببادئة hash) يصل إلى عشرات الآلاف. EBS volume واحد يتوقف عند 1,000 ميجابايت/ثانية و16,000 IOPS. لعشرة مستخدمين متزامنين يُنزِّلون ملف 10 جيجابايت، تخزين الكائنات يُشبِع خطوطهم؛ تخزين الكتل يصبح عنق زجاجة.

التكلفة على الحجم

لـ 100 تيرابايت من الوسائط شبه الباردة:

  • S3 Standard: 2,300 دولار/شهر
  • S3 Standard-IA: 1,250 دولار/شهر
  • S3 Glacier Instant Retrieval: 400 دولار/شهر
  • S3 Glacier Deep Archive: 99 دولار/شهر
  • EBS gp3: 8,000 دولار/شهر
  • EBS st1 (HDD محسَّن للإنتاجية): 4,500 دولار/شهر

تخزين الكتل لا يُؤرشَف. تدفع بأسعار الوصول الذروي لبيانات تلمسها مرة سنوياً. قواعد دورة حياة تخزين الكائنات تُحرِّك الكائنات تلقائياً: ساخن لـ 30 يوماً، وStandard-IA لـ 60، وGlacier بعد 90. لخدمة نقل ملفات تخزِّن رفعات بانتهاء صلاحية 7 أيام، تخزين الكائنات مع قاعدة Expiration أرخص جذرياً من تشغيل خادم مدعوم بـ EBS.

الاتساق والتزامن

S3 يُقدِّم الآن اتساقاً قوياً للقراءة بعد الكتابة لـ PUTs وDELETEs، عالمياً. Azure Blob وGCS يتطابقان. هذا أزال أحد الانتقادات التاريخية لتخزين الكائنات — كنت ترى مفاجآت "الاتساق اللاحق" حيث ملف رُفِع حديثاً يُعطي 404 لبضع ثوانٍ.

لكن الكتّاب المتزامنون لا يزالون مهمين. تخزين الكتل يفترض عادةً كاتباً واحداً؛ أوضاع multi-attach موجودة لكنها تُضيف تعقيداً. تخزين الكائنات يسمح لمليون عميل بالوضع (PUT) في آنٍ، مع دلالات آخر كاتب يفوز (أو الإصدار للاحتفاظ بالجميع). لنظام مشاركة ملفات حيث قد يرفع مستخدمان ملفين مختلفين بنفس المفتاح، الإصدار على الدلو يحفظ الاثنين.

حين تحتاج تطبيقات نقل الملفات لتخزين الكتل رغم ذلك

التحفظ: التطبيق الذي يخدم تخزين الكائنات كثيراً ما يعمل على مضيفين مدعومين بالكتل. واجهة رفع ملفات تحتاج قرصاً محلياً للتخزين المؤقت (أجزاء متعددة وفحص مضادات الفيروسات)، وتخزين البيانات الوصفية (عادةً في PostgreSQL على EBS)، والسجلات. الكائنات نفسها تذهب إلى S3/R2/Blob؛ الآلية حولها تعيش على الكتل.

للرفعات المتدفقة عالية الإنتاجية، خطوط الأنابيب في الذاكرة تتفوق على القرص. مكتبات مثل aws-sdk-js وboto3 تدعم الرفعات المتعددة الأجزاء المتدفقة التي لا تصل أبداً إلى القرص المحلي. خدمة رفع محسَّنة جيداً يمكنها دفع ملف 5 جيجابايت من العميل إلى تخزين الكائنات بأقل من 500 ميجابايت من RAM وصفر ملفات مؤقتة.

البيانات الوصفية: الفارق الخفي

تخزين الكائنات يحمل بيانات وصفية مع كل كائن: بيانات وصفية النظام (الحجم، mtime، etag)، وبيانات وصفية المستخدم (أزواج مفتاح-قيمة عشوائية، ترويسات x-amz-meta-*)، والوسوم. يمكنك البحث بالبيانات الوصفية عبر S3 Object Lambda وتقارير Inventory أو الاقتران مع DynamoDB. تخزين الكتل يترك البيانات الوصفية كلياً لنظام الملفات، مما يعني أن وسم 10 ملايين ملف يتطلب قاعدة بيانات مخصصة.

لتطبيق نقل يحتاج الإجابة على "ابحث عن كل الملفات فوق 100 ميجابايت رُفِعت الأسبوع الماضي من مستخدمين في فرنسا" فوراً، بيانات وصفية الكائنات مع جرد Parquet تتيح الاستعلام بـ Athena في ثوانٍ. نفس السؤال على volume كتل مُوصَل بـ NFS هو أمر find يستغرق ساعات.

التشفير والتحكم في الوصول

كلا نوعَي التخزين يدعمان التشفير في الحفظ بـ AES-256. تخزين الكائنات يُسهِّل التحكم في الوصول لكل كائن: سياسات الدلو، وعناوين URL الموقَّعة مسبقاً، وقوائم ACL للكائنات، وشروط IAM. وصول تخزين الكتل أكثر خشونةً — الـ volume بالكامل مُوصَل أو لا.

لمشاركة الملفات الآمنة بروابط تنزيل محدودة الوقت، عناوين S3 الموقَّعة مسبقاً (صالحة 7 أيام كحد أقصى) هي النمط المعياري. للنقل بدون كشف نص واضح من جانب الخادم، التشفير من جانب العميل قبل الرفع يعمل مع أي مخزن كائنات. HexaTransfer يُشفِّر بـ AES-256-GCM في المتصفح ويخزِّن النص المشفَّر فقط — الخلفية ترى بايتات بلا معنى.

قاعدة القرار البسيطة

اطرح ثلاثة أسئلة:

  1. هل تصل إلى البيانات عبر واجهة نظام ملفات (POSIX, SMB, NFS)؟ إذا نعم، تخزين الكتل أو الملفات.
  2. هل تصل إليها عبر HTTP، ونادراً ما تُعدِّلها، وتريد توسعاً غير محدود؟ إذا نعم، تخزين الكائنات.
  3. هل مجموعة البيانات فوق 10 تيرابايت وتنمو؟ تخزين الكائنات في شبه كل الحالات.

لأحمال عمل نقل الملفات، الإجابة على (2) دائماً نعم. استخدم S3 أو R2 أو Azure Blob أو GCS للملفات نفسها، واحتفظ بتخزين الكتل لقاعدة البيانات وطبقة الويب التي تُديرها.

جرّبها على hexatransfer.com — مجاناً، بدون حساب، حتى 10 جيجابايت.

أرسل ملفات كبيرة بأمان مع تشفير من طرف إلى طرف

انقل ملفات حتى 10 جيجابايت مجاناً مع تشفير من طرف إلى طرف. لا حاجة لحساب. يتم تشفير ملفاتك في متصفحك قبل الرفع — لا أحد آخر يستطيع قراءتها.

إرسال ملف