وحدة تخزين البيانات

في مجال الحوسبة (وتحديدًا نقل البيانات وتخزينها ) ، تُعرف الكتلة [ 1 ] ، والتي تُسمى أحيانًا السجل المادي ، بأنها سلسلة من البايتات أو البتات ، تحتوي عادةً على عدد صحيح من السجلات ، ولها طول ثابت؛ يُسمى حجم الكتلة . [ 2 ] يُقال إن البيانات المُهيكلة بهذه الطريقة مُجزأة . تُسمى عملية وضع البيانات في كتل "التجميع" ، بينما تُسمى عملية استخراج البيانات من الكتل "فك التجميع ". تُخزن البيانات المُجزأة عادةً في مخزن مؤقت للبيانات ، وتُقرأ أو تُكتب كتلة كاملة في كل مرة. يُقلل التجميع من الحمل الزائد ويُسرّع معالجة تدفق البيانات . [ 3 ] بالنسبة لبعض الأجهزة، مثل أشرطة التخزين المغناطيسية وأجهزة أقراص CKD ، يُقلل التجميع من مقدار التخزين الخارجي المطلوب للبيانات. يُستخدم التجميع بشكل شبه عالمي عند تخزين البيانات على أشرطة التخزين المغناطيسية ذات 9 مسارات ، وذاكرة فلاش NAND ، والوسائط الدوارة مثل الأقراص المرنة والأقراص الصلبة والأقراص الضوئية .

تعتمد معظم أنظمة الملفات على وحدة تخزين كتلية ، وهي مستوى تجريدي للأجهزة المسؤولة عن تخزين واسترجاع كتل محددة من البيانات، مع العلم أن حجم الكتلة في أنظمة الملفات قد يكون من مضاعفات حجم الكتلة الفعلي. يؤدي هذا إلى عدم كفاءة استخدام المساحة بسبب التجزئة الداخلية ، حيث أن أطوال الملفات غالبًا لا تكون مضاعفات صحيحة لحجم الكتلة، وبالتالي قد تبقى الكتلة الأخيرة من الملف فارغة جزئيًا. ينتج عن ذلك مساحة غير مستخدمة . تحاول بعض أنظمة الملفات الحديثة، مثل Btrfs و FreeBSD UFS2 ، حل هذه المشكلة من خلال تقنيات تُسمى تخصيص الكتل الفرعية ودمج الذيل . تدعم أنظمة ملفات أخرى، مثل ZFS، أحجام كتل متغيرة. [ 4 ] [ 5 ]

عادةً ما يتم تجريد تخزين الكتل بواسطة نظام الملفات أو نظام إدارة قواعد البيانات (DBMS) لاستخدامه من قِبل التطبيقات والمستخدمين النهائيين. قد تكون وحدات التخزين المادية أو المنطقية التي يتم الوصول إليها عبر إدخال/إخراج الكتل أجهزة داخلية للخادم، متصلة مباشرةً عبر SCSI أو Fibre Channel ، أو أجهزة بعيدة يتم الوصول إليها عبر شبكة منطقة التخزين (SAN) باستخدام بروتوكول مثل iSCSI أو AoE . غالبًا ما تستخدم أنظمة إدارة قواعد البيانات إدخال/إخراج الكتل الخاصة بها لتحسين الأداء وإمكانية الاسترداد مقارنةً بوضع نظام إدارة قواعد البيانات فوق نظام الملفات.

في نظام لينكس، يبلغ حجم الكتلة الافتراضي لمعظم أنظمة الملفات 4096 بايت. ويمكن استخدام الأمر stat، وهو جزء من أدوات GNU الأساسية، للتحقق من حجم الكتلة.

في اللغات

لغة سي++

في لغة C++ ، يمكن قراءة كتلة باستخدام std::ifstream(تدفق ملف الإدخال).

استيراد std ؛باستخدام std :: array ؛ باستخدام std :: byte ؛ باستخدام std :: ifstream ؛ باستخدام std :: ios ؛constexpr size_t BLOCK_SIZE = 4096 ;حاول { ifstream file ( "example.bin" , ios :: binary ); file.exceptions ( ios :: failbit | ios :: badbit ); array < byte , BLOCK_SIZE > buf ; file.read ( reinterpret_cast < char *> ( buf.data ( ) ), BLOCK_SIZE ); } catch ( const ios :: failure & e ) { std :: println ( stderr , " خطأ في الإدخال/الإخراج: { } " , e.what ( ) ) ; }

سي شارب

في لغة C# ، يمكن قراءة كتلة باستخدام FileStreamالفئة. [ 6 ]

باستخدام System.IO ؛static const int BLOCK_SIZE = 4096 ;باستخدام ( FileStream stream = File.Open ( " example.bin " , FileMode.Open ) ) { byte [ ] block = new byte [ BLOCK_SIZE ] ; await stream.ReadAsync ( block , 0 , BLOCK_SIZE ) ; }

جافا

في لغة جافا ، يمكن قراءة كتلة باستخدام java.io.FileInputStream.

استيراد java.io.FileInputStream ؛ استيراد java.io.IOException ؛static final int BLOCK_SIZE = 4096 ;try ( FileInputStream file = new FileInputStream ( "example.bin" )) { byte [ ] buf = new byte [ BLOCK_SIZE ] ; file.read ( buf ) ; } catch ( IOException e ) { e.printStackTrace ( ) ; }

بايثون

في لغة بايثون ، يمكن قراءة الكتلة باستخدام readطريقة أي شيء يتم تنفيذه io.IOBase.

حجم الكتلة : عدد صحيح = 4096with open ( "example.bin" , " rb" ) as file : # file is of type io.BufferedReader block : bytes = file.read ( BLOCK_SIZE )

الصدأ

في لغة Rust ، يمكن قراءة كتلة باستخدام read_exactطريقة std::fs::File. [ 7 ]

استخدم std :: fs :: File ؛const BLOCK_SIZE : usize = 4096 ;إذا كان الملف ` example.bin` موجودًا ، فسيتم فتحه باستخدام الدالة ` File :: open ( " example.bin " ) ` . ثم يتم قراءة محتويات الملف باستخدام الدالة ` file.read_exact ( & mut buf ) ` .

مراجع

  1. بلاو، جيريت آن ؛ بروكس الابن، فريدريك فيليبس ؛ بوخهولز، فيرنر (1962)، "4: وحدات البيانات الطبيعية" (ملف PDF) ، في بوخهولز، فيرنر (محرر)، تخطيط نظام حاسوبي - مشروع ستريتش ، شركة ماكجرو هيل للنشر / شركة مابل برس، يورك، بنسلفانيا، الصفحات 39-40 ، رقم مكتبة الكونغرس 61-10466 ، مؤرشف (ملف PDF) من الأصل في 3 أبريل 2017 ، تم استرجاعه في 3 أبريل 2017 ، [...] المصطلحات المستخدمة هنا لوصف البنية التي يفرضها تصميم الجهاز، بالإضافة إلى البت ، مدرجة أدناه. يشير البايت إلى مجموعة من البتات المستخدمة لترميز حرف، أو عدد البتات المرسلة بالتوازي من وإلى وحدات الإدخال والإخراج. يُستخدم مصطلح آخر غير "حرف" هنا لأن الحرف الواحد قد يُمثَّل في تطبيقات مختلفة بأكثر من رمز، وقد تستخدم الرموز المختلفة أعدادًا مختلفة من البتات (أي أحجام بايتات مختلفة). في عملية نقل البيانات بين المدخلات والمخرجات، قد يكون تجميع البتات عشوائيًا تمامًا ولا علاقة له بالأحرف الفعلية. (المصطلح مشتق من كلمة "bite " ولكن تم تغيير تهجئتها لتجنب التحريف العرضي إلى "bit "). تتكون الكلمة من عدد بتات البيانات المنقولة بالتوازي من الذاكرة أو إليها في دورة ذاكرة واحدة. وبالتالي، يُعرَّف حجم الكلمة كخاصية هيكلية للذاكرة. (صاغ مصممو حاسوب Bull GAMMA 60 مصطلح "catena" لهذا الغرض ). تشير الكتلة إلى عدد الكلمات المنقولة من أو إلى وحدة الإدخال والإخراج استجابةً لتعليمات إدخال وإخراج واحدة. حجم الكتلة هو خاصية هيكلية لوحدة الإدخال والإخراج؛ وقد يكون ثابتًا في التصميم أو يُترك للبرنامج ليُغيِّره.  
  2. "مساحة القرص الصلب المتاحة، وأحجام الكتل، ومصطلحات الحجم" . سي نت . 5 مايو 2009. تم الاطلاع عليه بتاريخ 29 أبريل 2014 .
  3. تشانغ، إس كيه. "الهياكل الفيزيائية" . الكابتن إس كيه . تم الاطلاع عليه بتاريخ 29 أبريل 2014 .
  4. باليك، راشيل (29 مارس 2013). "أسئلة برونينغ: حجم سجل ZFS" . جوينت . تم الاسترجاع في 29 مارس 2013 .
  5. بوربونيه، روش (7 يونيو 2006). "ضبط حجم سجلات ZFS" . أوراكل .
  6. "FileStream.ReadAsync Method (System.IO)" . learn.microsoft.com . مؤرشف من الأصل بتاريخ 26 ديسمبر 2025. تم الاطلاع عليه بتاريخ 2 فبراير 2025 .
  7. "القراءة في std::io - Rust" . doc.rust-lang.org . مؤرشف من الأصل في 28 يناير 2026. تم الاطلاع عليه في 2 فبراير 2025 .