شرح · واحد
معظم ما يجعل هذا البرنامج سريعًا ليس مسارًا شبكيًا أسرع. بل أن البيانات تتحرك مرة واحدة فقط. وهذا ما يعنيه ذلك عمليًا، ولماذا هو شيء مختلف عن فك الضغط المباشر، وأي أشكال الأرشيف تنجو منه، وكم يساوي فعلًا على جهاز حقيقي إلغاءُ دورة الكتابة ثم إعادة القراءة.
نقطة البداية
المنشور آلاف المقالات الصغيرة المرمَّزة التي تشكّل معًا مجموعة مجلدات أرشيف، وهي بدورها تحتوي الملف الذي تريده فعلًا. والانتقال من الأول إلى الثاني كان تقليديًا أربع مهام منفصلة، تنتهي كل واحدة قبل أن تبدأ التالية.
كل مرحلة صحيحة، والنتيجة سليمة. لكن المحتوى كُتب مرتين، وقُرئ مرتين على الأقل، وعند الذروة اضطر القرص أن يحمل نسختين كاملتين من مهمة لم ترد منها إلا نسخة واحدة. والساعة التي تعيشها هي المراحل الأربع بالتتابع، ولهذا يستطيع برنامج أن يعلن تنزيلًا سريعًا ويبقيك منتظرًا.
التغيير
التمريرة الواحدة تعني أن البايتات تذهب من الشبكة إلى وجهتها النهائية دون أن تصير قط ملف أرشيف على قرصك. لا توجد مرحلة ثانية ولا ثالثة، لأن عمل كلتيهما يجري بينما المرحلة الأولى لا تزال تعمل.
عمليًا، تُفكّ ترميز كل مقالة في الذاكرة فور وصولها وتُسلَّم مباشرةً إلى أمرين في آن واحد. المتحقِّق يطابقها فورًا ببيانات التماثل، فتثبت الصحة والبيانات تهبط، لا بإعادة قراءتها لاحقًا. والمستخرِج يعامل البايتات الواردة كموضع داخل الأرشيف، ويحسب إلى أي جزء من أي ملف محتوى تنتمي، ويكتبها هناك.
ولا تُجمَّع مجلدات الأرشيف أبدًا. إنها موجودة كبنية يفهمها المستخرِج والتنزيل في الجو، والشيء الوحيد الذي يبلغ قرصك هو الملف الذي أردته. وحين تصل المقالة الأخيرة لا يبقى في الجوهر ما يُفعل، ولهذا تقع أزمنة إنهائنا قريبةً من زمن التنزيل نفسه لا من تنزيل يتبعه ذيل.
النتيجة القابلة للقياس: للمهمة نفسها نكتب نحو النصف، ونعيد قراءة أقل بكثير، ونحتاج تقريبًا حجم المحتوى نفسه مساحةً حرة لا ضِعفه. وفي إصدار بحجم 190 GB يعني ذلك نحو 157 GB مساحة حرة مقابل نحو 313 GB، ونحو ثلث حركة القرص.
أمران يجعلان هذا أصعب مما يبدو، وهما سبب ندرته. المقالات لا تصل بالترتيب، فعلى المستخرِج أن يتدبّر بايتات تهبط في مواضع اعتباطية لا كتيار من البداية. والأرشيف المضغوط لا يمكن فك ضغطه من منتصفه، فأي جزء من العمل يقتضي الترتيب حقًا لا بد أن يُعرَف ويُعالَج على نحو آخر بدل تجاوزه بافتراض.
المقارنة التي يسأل عنها الناس
فكّ الضغط المباشر ميزة جيدة، والبرامج التي تملكها أفضل حالًا بها. وهو أيضًا يحل جزءًا آخر من المشكلة، والفارق يظهر تحديدًا حيث يهم.
يبدأ فكّ الضغط المباشر بالاستخراج قبل انتهاء التنزيل، فتتداخل المرحلة الثالثة مع الأولى بدل أن تتبعها. أما ما لا يفعله فهو إلغاء المرحلة الأولى. فمجلدات الأرشيف ما زالت تُكتب كاملةً على قرصك، لأن فاكّ الضغط تقليدي يقرأ ملفات تقليدية؛ وفكّ الضغط المباشر يكتفي بتشغيله أبكر. النسختان ما زالتا موجودتين، والكتابتان ما زالتا تحدثان، وحاجة المساحة الحرة لم تتغير.
| كتابة المجلدات على القرص | المساحة الحرة اللازمة | عدد مرات كتابة المحتوى | |
|---|---|---|---|
| نزّل ثم فُكّ الضغط | نعم، ثم إعادة قراءة | ~2× المهمة | 2 |
| فكّ ضغط مباشر | نعم، تُقرأ أبكر | ~2× المهمة | 2 |
| تمريرة واحدة | لا تُكتب أبدًا | ~1× المهمة | 1 |
والفارق الثاني هو ما يحدث حين لا يكون الشكل بسيطًا. فلأن فكّ الضغط المباشر يسلّم العمل إلى فاكّ ضغط تقليدي كلما ظهرت المجلدات، فإنه يحتاج وضعًا خاليًا من التعقيد: المجلدات حاضرة بترتيب صالح، ولا إصلاح معلّق، ولا شيء يجب فتحه أولًا، وأرشيف محتواه ليس أرشيفات بدوره. وحين يتخلّف أي من ذلك، فالصواب أن ينسحب ويعود إلى فك الضغط في النهاية، وهذا ما يحدث. فتحصل على نتيجة صحيحة وعلى التوقيت المعتاد.
ولأن مستخرِجنا مبنيّ منذ البداية حول بايتات غير مرتبة، فتلك الأوضاع ليست استثناءات عنده. وهذا هو الفرق الحقيقي: ليس أننا نبدأ أبكر، بل أننا لا نعتمد على شروط كثيرًا ما لا تتحقق.
ما الذي ينجو منه فعلًا
تصميم كهذا لا يستحق إلا إذا انطبق على المنشورات التي تصادفها فعلًا، لا على حالة مثالية نظيفة. الوضع الحالي: لا صيغة حاوية تُعالَج على القرص وحده. فـ RAR و7z وzip كلها تمرّ عبر مسار التمريرة الواحدة.
| الشكل | تمريرة واحدة | ملاحظات |
|---|---|---|
| RAR، مخزَّن (بلا ضغط) | نعم | الحالة الشائعة في إصدارات الوسائط |
| RAR، مضغوط | نعم | بما في ذلك أرشيف مضغوط كطبقة خارجية |
| RAR 1.5 و3 و4 و5 | نعم | أجيال الصيغة الأربعة كلها |
| 7z | نعم | بما في ذلك المحتوى المضغوط بـ deflate |
| zip | نعم | بما في ذلك محتوى bzip2 وLZMA |
| محتوى مشفَّر | نعم | بكلمة سر، بما في ذلك zip المشفَّر |
| ترويسات مشفَّرة | نعم | حيث تكون أسماء الملفات مخفية أيضًا |
| سلاسل كلمات السر | نعم | كلمة سر كل طبقة معبّأة في الطبقة التي فوقها |
| أرشيفات متداخلة | نعم | تُفكّ من التداخل أثناء العمل، حتى عمق قابل للضبط |
| تالف في عدة طبقات | نعم | إصلاح في كل مستوى، وما زالت تمريرة واحدة |
| مجموعات مقسَّمة رقميًا | نعم | تقسيمات على نمط name.001 |
| أرشيفات ذاتية الاستخراج | تمريرة قرص | الأرشيف لا يبدأ عند بداية الملف |
zip مقسَّم (.z01) | تمريرة قرص | وبعض أنواع zip الأندر |
| مهام مستأنَفة | تمريرة قرص | المهمة التي تستكمل بعد إعادة تشغيل تنتهي بالطريقة التقليدية |
الرفضات الثلاثة صادقة وتتصرف على النحو نفسه: تكتمل المهمة صحيحةً عبر المسار التقليدي، وتحصل لذلك التنزيل على التوقيت المعتاد ذي النسختين. لا شيء يفشل؛ إنما يكفّ عن كونه سريعًا بالمعنى الذي يصفه بقية هذه الصفحة. والأرشيفات ذاتية الاستخراج تُرفَض لسبب بنيوي لا لقلة جهد، إذ إن تمييز أرشيف من بايتاته الأولى لا يمكن أن يعمل حين تكون البايتات الأولى برنامجًا.
صفّا التداخل والتشفير هما اللذان يستحقان الأخذ بجدية، لأنهما حيث ترد إليك معظم البرامج المهمة. فعلى مجموعة مولَّدة من عشرة أشكال متداخلة، مصحَّحة ببصمة المحتوى كي ينال البرنامج الذي يعيد تسمية المحتوى تقديرَه أيضًا، أنجزنا 9 من 10 دون تدخل؛ وأنجز البرنامج التالي 5، وأنجز اثنان آخران 2. والشكل الذي لا ننجزه تلقائيًا سُلَّم من عشرة مستويات، ينتهي نظيفًا عند حد العمق الافتراضي خمسة تاركًا أعمق طبقة أرشيفًا سليمًا، ويكتمل تمامًا إن رفعت الحد. وتلك الجولات في صفحة قياس الأداء مع الشبكة الكاملة.
لماذا يستحق الأمر
إنه أسرع، لسبب غير بهيّ. فكتابة 60 GB وإعادة قراءتها ليست مجانية حتى على قرص صلب الحالة سريع، وعلى أي شيء أبطأ كثيرًا ما تكون عنق الزجاجة الحقيقي بدل الشبكة. وإزالة كتابة وقراءتين تزيل ذلك الوقت من ساعتك كلها. والمكسب أكبر ما يكون تحديدًا حيث يلاحظه الناس أكثر: المهام الكبيرة، والأجهزة التي ليس قرصها أسرع أجزائها.
يقلّص التآكل إلى النصف. فأقراص الحالة الصلبة فيها عدد منتهٍ من الكتابات، والمنزِّل الذي يكتب كل محتوى مرتين ينفق تلك الميزانية بضعف السرعة دون فائدة تعود عليك. وعبر بضع مئات من التيرابايتات من التنزيل، وهي سنة عادية لمستخدم نشط، يكون الفارق جزءًا معتبَرًا من عمر القرص.
يغيّر ما الذي يتّسع. فالمساحة الحرة ليست خاصية أداء، بل نعم أو لا. والمهمة التي تحتاج ضعف حجمها متسعًا إما أن تعمل أو لا. والاحتياج إلى نحو حجم المحتوى يعني أن مهامًا تكتمل على أجهزة وأقراص يتوقف عندها النهج التقليدي ببساطة، ولهذا يتّسع إصدار بحجم 190 GB هنا في نحو 157 GB من المساحة الحرة بدل نحو 313 GB.
يكلّف وقت معالجة أقل. فعدم تمرير البيانات عبر القرص مرتين يزيل عملَ ذلك، والتحقق أثناء التنزيل يعني ألا تمريرة ثانية على المحتوى لفحصه. وتبقى كلفة معالجتنا مستوية عند نحو 1.7 ثانية معالج لكل غيغابايت، من مهمة 35 GB إلى مهمة 190 GB، وهذه هي الخاصية المفيدة: الكلفة لكل غيغابايت لا تنمو بنمو المهمة.
يعمل بذاكرة أقل، وبذاكرة محدودة. لأن البايتات تُستهلك فور وصولها بدل أن تتراكم، فمجموعة العمل ميزانية تحددها أنت لا دالةٌ في حجم المهمة. وهذا ما يتيح معالجة إصدار بحجم 190 GB على جهاز يتوفر فيه نحو 1.1 GB. والتمييز المهم ليس الرقم بل الشكل: الذاكرة التي تنمو مع المهمة ستصادف في النهاية مهمة لا يستطيع جهازك إنهاءها، وتفشل بالتبديل إلى القرص أو بأن تُقتل لا بأن تخبرك.
ومجتمعةً، هذه الأمور تتعلق بمكان قدرة البرنامج على العمل أصلًا أكثر مما تتعلق بالفوز في قياس. فالتصميم الذي يحتاج نصف المساحة الحرة ونصف الكتابات وقدرًا محدودًا من الذاكرة يعمل على خادوم منزلي صغير أو حاسوب محمول أقدم أو جهاز NAS، وهناك يعيش قسم كبير من هذا البرنامج فعلًا.
كل رقم في هذه الصفحة مقيس ومنشور بجانبه الإصدار والتاريخ في صفحة قياس الأداء، بما في ذلك الجولات التي نخسرها. والثِّقل المقابل الصادق، وهو مذكور هناك أيضًا: المستخرِج والمصلِح المبنيّان لمرافقة تنزيل جارٍ يحجزان ذاكرة مقيمة أكثر من أداة مستقلة تُشغَّل مرة واحدة من سطر الأوامر، فإن كان قيدك أصغر أثر ممكن لمهمة واحدة على ملف تملكه سلفًا، فالأدوات المخصصة تكسب ذلك العمود.