خلاصة أولًا: لضغط 10,000 ملف دفعةً واحدة في المؤسسات، الحل الأساسي هو ثلاثية «قائمة المهام + الضغط المتوازي + الاستئناف من نقطة التوقف». تستند نسخة SmartSlim (Enterprise) الشبكية إلى توزيع مهام Celery، ومعالجة متوازية بـ12 تزامنًا، وتسجيل نقاط التوقف في MySQL. تم اختبارها ميدانيًا: مكتبة مستندات بسعة 500GB تم ضغطها إلى 82GB في 4 ساعات، بمعدل ضغط 83.6%. توضح هذه المقالة تحديات الضغط المؤسسي الدفعي، وبنية الحل، وحالات تطبيقية، وخيارات النشر.
إذا لم تكن على دراية باختيار أدوات الضغط الدفعي بين سطر الأوامر/الواجهة الرسومية/API، فننصح بقراءة اختيار أدوات الضغط الدفعي: سطر الأوامر مقابل الواجهة الرسومية مقابل API.
أولًا: التحديات الثلاثة للضغط المؤسسي الدفعي
الضغط المؤسسي الدفعي مسألة بمقاييس مختلفة تمامًا عن الضغط الفردي. ضغط 100 ملف فرديًا يمكن إنجازه بالسحب والإفلات في بضع دقائق، لكن ضغط 10,000 ملف مؤسسيًا يواجه تحديات ثلاثية الأبعاد: الحجم، وتنوع الصيغ، والأمان. فهم التحديات هو مفتاح تصميم الحل المناسب.
| بُعد التحدي | السيناريو الفردي | السيناريو المؤسسي | الفرق الجوهري |
|---|---|---|---|
| عدد الملفات | عشرات إلى مئات | أكثر من 10,000 | 100 ضعف، المعالجة التسلسلية غير ممكنة |
| تنوع الصيغ | 1–3 صيغ رئيسية | 10 فئات تضم 40+ صيغة | تخصيص استراتيجية ضغط حسب الصيغة |
| الأمان والامتثال | يكفي التشغيل المحلي | نشر خاص + تدقيق + حماية بمستوى معين | البيانات لا تخرج، العمليات قابلة للتتبع |
| متطلبات الاستقرار | إعادة المحاولة عند الفشل | لا انقطاع، استئناف من نقطة التوقف | فشل ملف واحد لا يعيق العمل الجمعي |
| قدرات التزامن | مسار واحد | 12+ تزامن | استغلال موارد الخوادم متعددة الأنوية |
| الجدولة | تشغيل يدوي | تشغيل مجدول + بناءً على الأحداث | دمج تلقائي في سير العمل التشغيلي |
الأهم هو حجم الملفات والاستقرار. معالجة 10,000 ملف بشكل تسلسلي، حتى لو استغرق كل ملف 10 ثوانٍ فقط، تستلزم 28 ساعة — وهذا غير مقبول بطبيعة الحال. يختصر الضغط المتوازي هذا الوقت إلى 2–4 ساعات، لكنه يضيف تعقيدات جدولة المهام، والتنافس على الموارد، وعزل الاستثناءات. أما الاستئناف من نقطة التوقف فهو خط الدفاع للاستقرار: إذا تعطلت مهمة 500GB في الساعة الثانية، فبدونه يتعين البدء من الصفر.
ثانيًا: بنية حل الضغط المؤسسي الدفعي
تعتمد النسخة الشبكية المؤسسية (Enterprise) من SmartSlim بنية من خمس طبقات: طبقة العرض الأمامية → طبقة بوابة API → طبقة منطق الأعمال → طبقة الخوارزميات الأساسية → طبقة تخزين البيانات. تتركز القدرات الجوهرية في قائمة المهام بطبقة منطق الأعمال، والضغط المتوازي بطبقة الخوارزميات الأساسية.
| القدرة الجوهرية | التنفيذ التقني | المشكلة المُعالجة | المعاملات الرئيسية |
|---|---|---|---|
| تقطيع المهام | قائمة مهام Celery | تقسيم الكميات الكبيرة إلى دفعات صغيرة | 50 ملفًا لكل دفعة افتراضيًا |
| الضغط المتوازي | عمليات متعددة + محرك Rust | استغلال تعدد الأنوية | 12 تزامنًا (قابل للضبط) |
| الاستئناف من نقطة التوقف | تسجيل الحالات في MySQL | الاستئناف بعد الانقطاع | كتابة الحالة بالمللي ثانية |
| عزل الاستثناءات | try-catch لكل ملف | فشل ملف واحد لا يعيق البقية | إعادة المحاولة تلقائيًا 3 مرات |
| سجلات التدقيق | سجلات مهيكلة | قابلية تتبع العمليات | تسجيل المستخدم/الوقت/الهاش |
| إدارة التخزين | تخزين كائنات MinIO | تخزين الملفات الضخمة | حد أقصى 10GB للملف الواحد |
تقطيع المهام هو مقدمة للتوازي. لا تُرسل 10,000 ملف دفعةً واحدة إلى محرك الضغط، بل تُقسَّم عبر قائمة مهام Celery إلى 200 دفعة (50 ملفًا لكل دفعة)، ويستهلك 12 عاملًا (Worker) القائمة بالتوازي. كل دفعة تُرسَل وتُسجَّل حالتها باستقلالية، وفشل دفعة واحدة لا يؤثر على البقية.
مبدأ عمل الاستئناف من نقطة التوقف: تُكتب حالة «قيد المعالجة» في MySQL قبل بدء ضغط كل ملف، وعند الاكتمال تُحدَّث إلى «مكتمل» مع تسجيل الحجم المضغوط والهاش. عند إعادة تشغيل الخدمة، تُفحص جدول الحالات لتجاوز الملفات «المكتملة» والاستئناف من قائمة «قيد المعالجة». أثبتت هذه الآلية فعاليتها ميدانيًا في حالة 500GB — بعد انقطاع في الساعة الثانية، تم الاستئناف بتكلفة إضافية 12 دقيقة فقط.
تتوفر ثلاث طرق للنشر، يختار منها وفق حجم المؤسسة وميزانيتها.
| طريقة النشر | الحجم المناسب | قدرة التزامن | تعقيد النشر | متطلبات الموارد |
|---|---|---|---|---|
| Docker Compose على خادم واحد | 10,000 ملف/يوم | 12 تزامنًا | منخفض (نشر بنقرة واحدة لـ9 خدمات) | 8 أنوية و16GB |
| مجموعة Kubernetes | 50,000 ملف/يوم | 36–120 تزامنًا | متوسط (HPA من 3 إلى 10 نسخ) | 3 عقد × 8 أنوية |
| خادم فعلي خاص | بيئة سرية/سيادة تقنية | 12 تزامنًا/للخادم | عالٍ (يتطلب نشرًا ميدانيًا) | حسب الطلب |
معظم المؤسسات تكتفي بنشر Docker Compose على خادم واحد لتلبية احتياجاتها — خادم بـ8 أنوية و16GB، و12 تزامنًا، يعالج 10,000 ملف يوميًّا. لا حاجة لمجموعة K8s إلا عند تجاوز هذا الحجم. أما البيئات السرية أو بيئات السيادة التقنية، فيلزم حتمًا النشر على خادم فعلي خاص، بحيث لا تخرج البيانات من الشبكة الداخلية.
ثالثًا: حالة عملية — ضغط مكتبة مستندات 500GB إلى 82GB
احتاجت إحدى شركات التصنيع إلى أرشفة وضغط مكتبتها التاريخية من المستندات. تضم المكتبة 500GB من الملفات، بإجمالي نحو 12,000 ملف، موزعة على الصيغ: PDF (35%)، والصور (25%)، ومستندات Office (30%)، والفيديو (5%)، وغيرها (5%). يُطلب تخزين الملفات المضغوطة على خادم الأرشيف مع الاحتفاظ بها لمدة 3 سنوات. تم استخدام النسخة الشبكية من SmartSlim، ونشرها عبر Docker Compose على خادم بـ8 أنوية و32GB، بـ12 تزامنًا.
معاملات التنفيذ:
| بند المعاملات | القيمة المضبوطة | الوصف |
|---|---|---|
| شكل النشر | Docker Compose على خادم واحد | تنسيق 9 خدمات حاوية |
| عدد التزامن | 12 | عدد عمليات Celery Worker |
| تقطيع المهام | 50 ملفًا لكل دفعة | 12,000 ملف مقسمة إلى 240 دفعة |
| مستوى الضغط | high | المستوى الثالث من أصل 4 مستويات |
| مستوى الأمان | MEDIUM | المستوى الافتراضي |
| واجهة التخزين | MinIO | تخزين كائنات، حد أقصى 10GB للملف |
| مستوى السجل | INFO + تدقيق | تسجيل المستخدم/الوقت/الهاش |
الوقت المستغرق وتغير الحجم لكل مرحلة:
| المرحلة | الوقت المستغرق | الحجم التراكمي | معدل الضغط | العمليات الرئيسية |
|---|---|---|---|---|
| المسح والتصنيف | 40 دقيقة | 500GB | 0% | التعرف على الصيغ وتوزيع الاستراتيجيات |
| ضغط PDF | ساعة و10 دقائق | 305GB | 39% | تخفيض دقة الصور المدمجة + تحويل إلى JPEG |
| ضغط الصور | 55 دقيقة | 195GB | 61% | توزيع حسب النوع، تحويل الصور إلى JPEG |
| ضغط Office | 35 دقيقة | 112GB | 78% | استخراج الموارد المدمجة وضغطها + إعادة التجميع |
| ضغط الفيديو | 10 دقائق | 85GB | 83% | تحويل الترميز إلى H.264 + خفض معدل البت |
| التحقق والأرشفة | 30 دقيقة | 82GB | 83.6% | التحقق من الهاش + الكتابة في الأرشيف |
النتيجة: تم ضغط 500GB إلى 82GB، بمعدل ضغط 83.6%، في 4 ساعات إجمالًا. حدث انقطاع واحد في الساعة الثانية و10 دقائق بسبب تذبذب ذاكرة الخادم، واستغرق الاستئناف من نقطة التوقف 12 دقيقة، ليصل الوقت الكلي إلى 4 ساعات و12 دقيقة. اجتازت جميع الملفات فحص الهاش، وسجَّلت سجلات الضغط بيانات المُشغِّل والطوابع الزمنية وهاش الملفات ومعاملات الضغط بالكامل، مستوفيةً متطلبات التدقيق المؤسسي للأرشفة. حقق الفيديو ومستندات Office أعلى معدلات ضغط (83%/78%) بفضل الموارد المدمجة القابلة للضغط؛ في حين بلغ معدل ضغط PDF 39% لأن بعض ملفات PDF كانت ملفات ممسوحة ضوئيًا محسَّنة سلفًا.
رابعًا: توصيات الحلول حسب الحجم والسيناريو
ليس كلما كان حل الضغط المؤسسي الدفعي أكبر كان أفضل، بل يجب مطابقته مع الحجم الفعلي. يعرض الجدول التالي التوصيات وفق عدد الملفات والسيناريو.
| حجم المؤسسة | متوسط عدد الملفات اليومي | الحل الموصى به | طريقة النشر | الاستثمار التقديري |
|---|---|---|---|---|
| المؤسسات الصغيرة والمتوسطة | أقل من 1,000 | إصدار الخادم API | خدمة Docker واحدة | ترخيص Standard |
| المؤسسات المتوسطة | 1,000–10,000 | النسخة الشبكية على خادم واحد | Docker Compose | ترخيص Professional |
| المؤسسات الكبرى | 10,000–50,000 | النسخة الشبكية على مجموعة | K8s HPA 3 نسخ | ترخيص Enterprise |
| المجموعات/الجهات الحكومية | أكثر من 50,000 | النسخة الشبكية + عدة عقد | K8s HPA 10 نسخ | Enterprise + تخصيص |
| الجهات السرية | غير محدد | النسخة الشبكية الخاصة | نشر ميداني على خوادم فعلية | حل مخصص |
نصائح الاختيار: لأقل من 1,000 ملف يومي يكفي إصدار الخادم API (ترخيص Standard، تزامن 4)، بأقل تكلفة؛ ولـ1,000–10,000 ملف استخدم النسخة الشبكية على خادم واحد (ترخيص Professional، تزامن 12)، وهي أعلى نسبة أداء مقابل السعر؛ ولا حاجة لمجموعة K8s إلا عند تجاوز 10,000 ملف يومي. أما الجهات السرية فيجب عليها حتمًا النشر الخاص بصرف النظر عن حجم الملفات، بحيث لا تخرج البيانات من الشبكة الداخلية.
لمتطلبات الامتثال في سيناريوهات الحكومة والجهات السرية، يمكن الرجوع إلى ضغط مستندات أنظمة OA الحكومية: حل المعالجة الدفعية لـOFD/PDF. ولمزيد من التفاصيل التقنية حول تصميم قائمة المهام، انظر شرح مفصّل لتصميم قائمة مهام الضغط.
خامسًا: الأسئلة الشائعة FAQ
س1: ما الحل الأنسب لضغط 10,000 ملف مؤسسيًا دفعة واحدة؟
نوصي باستخدام النسخة الشبكية (Enterprise) من SmartSlim، المبنية على بنية قائمة المهام + الضغط المتوازي + الاستئناف من نقطة التوقف. تُوزَّع 10,000 ملف عبر قائمة مهام Celery، وتُعالَج بـ12 تزامنًا، مع تخزين MinIO وذاكرة تخزين مؤقت Redis. نسخة الخادم الواحدة (تزامن 12) تستوعب حتى نحو 50,000 ملف يوميًّا؛ وللحجم الأكبر تُستخدم مجموعة K8s بتوسعة HPA من 3 إلى 10 نسخ. تم اختبار مكتبة 500GB ميدانيًا: ضُغطت إلى 82GB في 4 ساعات، بمعدل ضغط 83.6%.
س2: كم يستغرق ضغط مكتبة 500GB إلى 82GB؟
الوقت الفعلي المُقاس 4 ساعات، باستخدام النسخة الشبكية من SmartSlim، بـ12 مهمة متزامنة، منشورة على خادم بـ8 أنوية و32GB. موزعة على 3 مراحل: المسح والتصنيف 40 دقيقة، والضغط المتوازي ساعتان و50 دقيقة، والتحقق والأرشفة 30 دقيقة. معدل الضغط 83.6% (من 500GB إلى 82GB)، بمتوسط 29 ثانية لكل جيجابايت. وعند رفع التزامن إلى 24، يُتوقَّع اختصار الوقت إلى 2.5 ساعة. حدث انقطاع واحد في المنتصف، واستغرق الاستئناف 12 دقيقة فقط.
س3: ماذا لو انقطع الضغط الدفعي في منتصفه؟
تدعم النسخة الشبكية من SmartSlim الاستئناف من نقطة التوقف. تُكتب حالة كل ملف قبل الضغط وبعده في MySQL، وتُسجِّل قائمة المهام تقدم المعالجة. بعد إعادة تشغيل الخدمة، يقرأ النظام نقاط التوقف تلقائيًا ويستأنف من الملفات غير المعالجة، دون تكرار الملفات المضغوطة. في الاختبار الميداني، انقطعت مهمة 500GB في الساعة الثانية، وبعد الاستئناف بلغ الوقت الكلي 4 ساعات و12 دقيقة (شاملًا 12 دقيقة تكلفة الاستئناف). هذه قدرة ضرورية للسيناريوهات المؤسسية.
س4: كيف يضمن حل الضغط المؤسسي أمن البيانات؟
أربعة مستويات من الحماية: أولًا، النشر الخاص، بحيث لا تغادر البيانات شبكة المؤسسة ولا تمر عبر أي خوادم طرف ثالث؛ ثانيًا، 5 مستويات أمان (DISABLED/LOW/MEDIUM/HIGH/MAXIMUM)، الافتراضي هو MEDIUM؛ ثالثًا، 7 قدرات أمنية تشمل التحقق من صحة معاملات الأوامر، والتحقق من سلامة الملفات، وفحص الشيفرات الخبيثة، وسجلات التدقيق، وتحديد المعدل، والإدارة الآمنة للملفات المؤقتة، وفرض حدود حجم الملفات؛ رابعًا، سجلات تدقيق الضغط، حيث يُسجَّل في كل عملية ضغط بيانات المُشغِّل والوقت وهاش الملف ومعاملات الضغط، مستوفيةً متطلبات امتثال حماية المستوى 2.0.
الخلاصة
جوهر الضغط المؤسسي الدفعي هو ثلاثية «قائمة المهام + الضغط المتوازي + الاستئناف من نقطة التوقف»، التي تحل مشكلات الحجم والكفاءة والاستقرار. تستند النسخة الشبكية من SmartSlim إلى قائمة مهام Celery ومحرك ضغط Rust، وقد ضُغطت مكتبة 500GB ميدانيًا إلى 82GB في 4 ساعات، بمعدل ضغط 83.6%، مع تكلفة استئناف 12 دقيقة فقط عند الانقطاع. يتدرج الحل حسب الحجم: المؤسسات الصغيرة والمتوسطة تستخدم إصدار الخادم API، والمؤسسات المتوسطة تستخدم النسخة الشبكية على خادم واحد، والمؤسسات الكبرى تستخدم مجموعة K8s، والجهات السرية يجب عليها النشر الخاص.
احفظ ثلاث نقاط عند اختيار الحل المؤسسي: أولًا، حدد شكل النشر (خادم واحد/مجموعة/خاص) وفق متوسط عدد الملفات اليومي؛ ثانيًا، حدد مستوى الأمان (الافتراضي MEDIUM، وللبيانات السرية MAXIMUM) وفق متطلبات الأمان والامتثال؛ ثالثًا، تحقق من الحاجة إلى سجلات التدقيق (إلزامية وفقًا لمتطلبات حماية المستوى 2.0). باختيار الحل المناسب، لن يكون ضغط 10,000 ملف دفعة واحدة كابوسًا تشغيليًا.
توصيات ذات صلة
هل تحتاج إلى ضغط الملفات؟ جرّب SmartSlim
مدعوم بمحرك ضغط Rust المطوّر داخليًا، يدعم 10 فئات رئيسية تضم 40+ صيغة بما في ذلك PDF/الصور/الفيديو/Office/OFD، وضغط محلي لا تغادر فيه البيانات نطاقك.