Loading...

التخزين · قراءة 9 دقائق

ما هو تخزين الكائنات؟ شرح التخزين المتوافق مع S3

يحفظ تخزين الكائنات (object storage) الملفات ككائنات قائمة بذاتها داخل buckets، يُعنون كلٌّ منها بمفتاح بدلًا من مسار على قرص. يتوسّع دون أقسام أو نقاط تركيب (mount points)، ولأن كل مزوّد تقريبًا يتحدّث واجهة S3 فإن الأدوات وحِزم SDK نفسها تعمل في كل مكان. يشرح هذا الدليل كيف يختلف عن تخزين الملفات والكتل، وما هي الـ buckets ومفاتيح الوصول والـ endpoint، ومتى يكون وضع CDN أمامه منطقيًا.

Updated

ما هو تخزين الكائنات؟ شرح التخزين المتوافق مع S3

تخزين الكائنات مقابل تخزين الملفات مقابل تخزين الكتل

تخزين الكتل (block storage) هو قرص خام: سريع، ومرتبط بجهاز واحد، وهو الوحدة التي تريدها قاعدة بياناتك. أما تخزين الملفات (NFS وأمثاله) فهو شجرة مجلدات مشتركة: مألوفة، لكن القفل والبيانات الوصفية يصبحان عنق الزجاجة مع نموّها. وتخزين الكائنات يتخلّى عن الشجرة كليًا — فكل كائن يعيش في فضاء أسماء مسطّح داخل bucket، ويُعنون بمفتاح مثل "invoices/2026/08/1234.pdf". يبدو هذا المفتاح كمسار، لكنه مجرّد اسم؛ ولا شيء مضطر لأن يكون "داخل" شيء آخر.

هذا الخيار التصميمي وحده هو سبب توسّع تخزين الكائنات بهذا الهدوء. فلا مجلد يُقفل، ولا نظام ملفات يحتاج fsck، ولا وحدة تخزين تحتاج تغيير الحجم. تدفع مقابل ما تخزّنه، وينمو المخزن من الميغابايتات إلى التيرابايتات دون أي ترحيل. المقابل: تُستبدل الكائنات كاملةً ولا تُحرَّر في مكانها، ولا وجود لدلالات POSIX — وهذا بالضبط ما يجعله المكان الخطأ لقاعدة بيانات حيّة، والمكان الصحيح لكل ما يقدّمه تطبيقك أو يؤرشفه تقريبًا.

ما الذي يعنيه "متوافق مع S3" فعليًا

أُطلقت Amazon S3 عام 2006، وصارت واجهتها عبر HTTP المعيار الفعلي لتخزين الكائنات كما صارت SQL معيارًا لقواعد البيانات. والخدمة المتوافقة مع S3 تطبّق الواجهة نفسها، فتعمل معها المنظومة الكاملة المبنيّة حول S3 — AWS CLI، وحِزم SDK بكل اللغات، وrclone، وrestic، وأداة mc من MinIO، وإضافات النسخ الاحتياطي، وأدوات نشر المواقع الثابتة — دون تغيير. توجّه الأداة إلى رابط endpoint مختلف وتحتفظ بعاداتك كما هي.

والمعنى العملي بالنسبة لك: لا ارتباط بمزوّد على مستوى الأدوات. فالشيفرة المكتوبة لواجهة S3 تنتقل بين المزوّدين بتغيير سطرين من الإعدادات — الـ endpoint وبيانات الاعتماد. كما يعني ذلك أنك تستطيع الاختبار محليًا مقابل تطبيق S3 ما، ثم النشر مقابل آخر دون لمس شيفرة التطبيق.

Buckets ومفاتيح وendpoint — الكلمات الثلاث المهمة

الـ bucket هو الحاوية العليا، واسمه فريد داخل الخدمة — اعتبره "القرص" الذي تنشئه لكل مشروع أو لكل غرض (الملفات المرفوعة، النسخ الاحتياطية، الأصول). وزوج مفاتيح الوصول هو وسيلة البرنامج للمصادقة: معرّف مفتاح الوصول يعرّفه، والمفتاح السرّي يوقّع كل طلب. عامِل المفتاح السرّي ككلمة مرور — فهو يُعرض مرة واحدة عند الإنشاء، لذا احفظه في مدير الأسرار لديك لا في الشيفرة.

أما الـ endpoint فهو الرابط الذي تعيش عليه واجهة S3. على AWS يأخذ شكل المنطقة (s3.eu-central-1.amazonaws.com)؛ ولدى المزوّدين الآخرين يكون رابطهم الخاص — وعلى cdn.com.tr هو s3.cdn.com.tr. وكل أداة S3 تقبل تجاوز الـ endpoint؛ وهذا الخيار الواحد هو ما يعنيه "متوافق مع S3" عمليًا.

أداة AWS CLI نفسها التي تعرفها — يتغيّر الـ endpoint فقط

# create a bucket
aws --endpoint-url https://s3.cdn.com.tr s3 mb s3://app-uploads

# upload and list
aws --endpoint-url https://s3.cdn.com.tr s3 cp ./photo.jpg s3://app-uploads/2026/photo.jpg
aws --endpoint-url https://s3.cdn.com.tr s3 ls s3://app-uploads/2026/

# sync a whole folder (deploys, backups)
aws --endpoint-url https://s3.cdn.com.tr s3 sync ./public s3://app-uploads/site

ما الذي تضعه فيه (وما الذي تُبقيه خارجه)

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

وأبقِ خارجه كل ما يحتاج تحريرًا في مكانه أو قفلًا: ملفات قواعد البيانات الحيّة، والذواكر المؤقتة الساخنة ذات التوقعات بأجزاء من الميلي ثانية، والملفات التي تُلحق بها العمليات باستمرار. مكان هذه على تخزين الكتل أو في قاعدة بيانات مُدارة؛ ويلتقط تخزين الكائنات المخرجات الدائمة التي تنتجها.

لماذا مكان الـ CDN أمام الكائنات العامة

التخزين والتوصيل مهمتان مختلفتان. يحفظ التخزين النسخة المرجعية بشكل دائم؛ بينما تجيب CDN عن الطلب نفسه آلاف المرات من مواقع edge قريبة من مستخدميك. قدّم ملفًا شائعًا مباشرة من أي نظام تخزين وسيسافر كل تنزيل إلى الخادم الأصلي؛ ضع edge أمامه فيجيب الخادم الأصلي مرة واحدة تقريبًا لكل ملف فريد بينما يستوعب الـ edge الحشد.

وعلى cdn.com.tr يشكّل الاثنان جزأين من منصّة واحدة: يمكن ربط الـ buckets بتطبيقات الحاويات لديك، ويُقدَّم المحتوى العام عبر الشبكة العالمية نفسها التي تتقدّم بقية حسابك — لوحة واحدة وفاتورة واحدة، دون مفاجآت خروج بيانات بين مزوّدين مختلفين لتخزينك وشبكتك.

الأخطاء التي تكلّف الناس أموالًا

ثلاثة أنماط تفسّر معظم متاعب تخزين الكائنات. الأول: الـ bucket العام — تركه قابلًا للقراءة من الجميع بينما يحوي بيانات خاصة. اجعل الأصل خاصًا، ولا تجعل بادئات بعينها عامة إلا حين يُقصد بها ذلك فعلًا. الثاني: تقديم ملفات عالية الحركة مباشرة من التخزين لدى مزوّدين يحاسبون على الخروج بالغيغابايت — فاتورة تكبر مع نجاحك؛ وذاكرة edge مؤقتة أمامها تُسطّحها. الثالث: بيانات الاعتماد داخل الشيفرة — فمفتاح سرّي مسرَّب هو تذكرة وصول كامل إلى كل شيء في الحساب. استخدم مفاتيح منفصلة لكل غرض، واحفظها في متغيّرات البيئة أو مدير أسرار، وبدّل أي مفتاح تشكّ ولو قليلًا في تسرّبه.

الأسئلة الشائعة

هل تخزين الكائنات هو نفسه S3 bucket؟

تقريبًا. "S3" منتج لشركة Amazon؛ والـ bucket هو مفهوم الحاوية الذي شاع بفضله. أما تخزين الكائنات فهو الفئة العامة، ولأن معظم المزوّدين يطبّقون واجهة S3 فإن عبارة "S3 bucket" تعني في الاستخدام الدارج "bucket على أي خدمة متوافقة مع S3".

هل يمكنني استضافة موقع كامل من تخزين الكائنات؟

الأجزاء الثابتة نعم — HTML وCSS وJS والصور مُقدَّمة عبر CDN نمط كلاسيكي. أما أي شيء ديناميكي (PHP أو Node.js أو قاعدة بيانات) فيحتاج بيئة تشغيل؛ وعلى cdn.com.tr هذا ما توفّره منصّات WordPress وPHP والحاويات المُدارة، مع bucket يحتفظ بالأصول.

هل تعمل أدوات S3 وشيفرة SDK الموجودة لديّ؟

نعم — وهذا هو جوهر التوافق مع S3. وجّه AWS CLI أو حزمة SDK إلى الـ endpoint https://s3.cdn.com.tr بزوج مفاتيح الوصول الخاص بـ bucket لديك، وستتصرّف الأوامر التي تستخدمها أصلًا (cp، sync، الروابط الموقّعة مسبقًا، الرفع متعدد الأجزاء) بالطريقة نفسها.

بماذا يختلف هذا عن Google Drive أو Dropbox؟

تلك منتجات مزامنة ملفات موجّهة للبشر: تطبيقات ونوافذ مشاركة وعملاء مزامنة. أما تخزين الكائنات فهو بنية تحتية للبرامج: واجهة يستدعيها تطبيقك لتخزين الكائنات واستردادها على نطاق واسع. لن تبني ميزة الرفع في تطبيقك على Dropbox، ولن تزامن سطح مكتبك مع bucket.