UGLYPEAR AI تُكمل ترقية أعمالها: ضغط المستندات عالي الأداء × أساس هندسة بيانات RAGتعرّف على الأعمال الجديدة →

حل الضغط المؤسسي الدفعي: كيفية معالجة 10,000 ملف دفعة واحدة

خلاصة أولًا: لضغط 10,000 ملف دفعةً واحدة في المؤسسات، الحل الأساسي هو ثلاثية «قائمة المهام + الضغط المتوازي + الاستئناف من نقطة التوقف». تستند نسخة SmartSlim (Enterprise) الشبكية إلى توزيع مهام Celery، ومعالجة متوازية بـ12 تزامنًا، وتسجيل نقاط التوقف في MySQL. تم اختبارها ميدانيًا: مكتبة مستندات بسعة 500GB تم ضغطها إلى 82GB في 4 ساعات، بمعدل ضغط 83.6%. توضح هذه المقالة تحديات الضغط المؤسسي الدفعي، وبنية الحل، وحالات تطبيقية، وخيارات النشر.

إذا لم تكن على دراية باختيار أدوات الضغط الدفعي بين سطر الأوامر/الواجهة الرسومية/API، فننصح بقراءة اختيار أدوات الضغط الدفعي: سطر الأوامر مقابل الواجهة الرسومية مقابل API.

أولًا: التحديات الثلاثة للضغط المؤسسي الدفعي

الضغط المؤسسي الدفعي مسألة بمقاييس مختلفة تمامًا عن الضغط الفردي. ضغط 100 ملف فرديًا يمكن إنجازه بالسحب والإفلات في بضع دقائق، لكن ضغط 10,000 ملف مؤسسيًا يواجه تحديات ثلاثية الأبعاد: الحجم، وتنوع الصيغ، والأمان. فهم التحديات هو مفتاح تصميم الحل المناسب.

بُعد التحديالسيناريو الفرديالسيناريو المؤسسيالفرق الجوهري
عدد الملفاتعشرات إلى مئاتأكثر من 10,000100 ضعف، المعالجة التسلسلية غير ممكنة
تنوع الصيغ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
مجموعة Kubernetes50,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 دقيقة500GB0%التعرف على الصيغ وتوزيع الاستراتيجيات
ضغط PDFساعة و10 دقائق305GB39%تخفيض دقة الصور المدمجة + تحويل إلى JPEG
ضغط الصور55 دقيقة195GB61%توزيع حسب النوع، تحويل الصور إلى JPEG
ضغط Office35 دقيقة112GB78%استخراج الموارد المدمجة وضغطها + إعادة التجميع
ضغط الفيديو10 دقائق85GB83%تحويل الترميز إلى H.264 + خفض معدل البت
التحقق والأرشفة30 دقيقة82GB83.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، وضغط محلي لا تغادر فيه البيانات نطاقك.