استكشاف تخزين الملفات

مكتمل

القدرة على تخزين البيانات في الملفات هو عنصر أساسي في أي نظام حوسبة. يمكن تخزين الملفات في أنظمة ملفات محلية على القرص الثابت للكمبيوتر الشخصي وعلى الوسائط القابلة للإزالة مثل محركات USB، ولكن تُخزن ملفات البيانات الهامة في معظم المؤسسات مركزيًا في نوع من أنظمة تخزين الملفات المشتركة. يُستضاف موقع التخزين المركزي هذا على نحو متزايد في السحابة، ما يتيح تخزينًا اقتصاديّا آمنًا موثوقًا به لكميات ضخمة من البيانات.

يعتمد تنسيق الملف المحدد المستخدم لتخزين البيانات على عدد من العوامل، بما في ذلك:

  • نوع البيانات المُخزنة (منظمة أو شبه منظمة أو غير منظمة).
  • التطبيقات والخدمات التي ستحتاج إلى قراءة البيانات وكتابتها ومعالجتها.
  • الحاجة إلى ملفات البيانات ليمكن للبشر قراءتها، أو مُحسنة للتخزين والمعالجة الفعّالين.

نُوقشت بعض تنسيقات الملفات الشائعة أدناه.

ملفات نص محدد

تُخزن البيانات غالبًا بتنسيق نص عادي مع محدّدات حقول معينة ونهايات صف. التنسيق الأكثر شيوعًا للبيانات المحدّدة هو ملف قيم مفصولة بفاصلة (CSV) حيث تُفصل الحقول بفواصل، وتنتهي الصفوف برجوع إلى أول السطر / سطر جديد. قد يتضمن السطر الأول، اختياريًا، أسماء الحقول. تتضمن التنسيقات الشائعة الأخرى ملف قيم تفصلها علامات الجدولة (TSV) وفواصل مسافة (حيث تُستخدم علامات التبويب أو المسافات لفصل الحقول)، وبيانات ذات عرض ثابت يُخصص فيها عدد ثابت من الأحرف لكل حقل. النص المحدد هو خيار جيد للبيانات المنظمة التي تحتاج عِدة تطبيقات وخدمات الوصول إليها بتنسيق يمكن للبشر قراءته.

يُظهر المثال التالي بيانات العملاء بتنسيق محدد بفاصلة:

FirstName,LastName,Email
Joe,Jones,joe@litware.com
Samir,Nadoy,samir@northwind.com

JavaScript Object Notation (JSON)

JSON هو تنسيق شامل حيث يُستخدم مخطط مستند هرمي لتعريف كيانات البيانات (الكائنات) التي لها سمات متعددة. قد تكون كل سمة كائنًا (أو مجموعة من الكائنات)، جعل JSON تنسيقًا مرنًا مناسبًا لكل من البيانات المنظمة وشبه المنظمة.

يُظهر المثال التالي مستند JSON يحتوي على مجموعة عملاء. لكل عميل ثلاث سمات (firstName، lastName، contact)، وتحتوي سمة contact على مجموعة كائنات تُمثل أسلوب اتصال واحد أو عِدة أساليب (البريد الإلكتروني أو الهاتف). لاحظ أن العناصر محاطة بأقواس ({..}) والمجموعات محاطة بين قوسين معقوفين ([..]). يُمثل زوج name:value السمات ويُفصل بفواصل (,).

{
  "customers":
  [
    {
      "firstName": "Joe",
      "lastName": "Jones",
      "contact":
      [
        {
          "type": "home",
          "number": "555 123-1234"
        },
        {
          "type": "email",
          "address": "joe@litware.com"
        }
      ]
    },
    {
      "firstName": "Samir",
      "lastName": "Nadoy",
      "contact":
      [
        {
          "type": "email",
          "address": "samir@northwind.com"
        }
      ]
    }
  ]
}

لغة التمييز قابلة الامتداد (XML)

XML هو تنسيق بيانات يمكن للبشر قراءته شاع في التسعينيات والقرن العشرين. لقد اُستبدل إلى حد كبير بتنسيق JSON أقل تفصيلًا، ولكن لا تزال هناك بعض الأنظمة التي تستخدم XML لتمثيل البيانات. يستخدم XML علامات مضمنة في أقواس الزاوية (<../>) لتعريف العناصر والسمات، كما هو موضح في هذا المثال:

<Customers>
  <Customer name="Joe" lastName="Jones">
    <ContactDetails>
      <Contact type="home" number="555 123-1234"/>
      <Contact type="email" address="joe@litware.com"/>
    </ContactDetails>
  </Customer>
  <Customer name="Samir" lastName="Nadoy">
    <ContactDetails>
      <Contact type="email" address="samir@northwind.com"/>
    </ContactDetails>
  </Customer>
</Customers>

كائن ثنائي كبير الحجم (BLOB)

في نهاية المطاف، تُخزن جميع الملفات كبيانات ثنائية (1's و0's)، ولكن بتنسيقات يُمكن للبشر قراءتها كما ناقشنا أعلاه، يُعيّن عدد من البايت من البيانات الثنائية إلى أحرف قابلة للطباعة (عادةً على الرغم من نظام ترميز حرف مثل ASCII أو Unicode). مع ذلك، بعض تنسيقات الملفات، خاصة بالنسبة للبيانات غير المنظمة، تُخزن البيانات كثنائي أولي يجب أن تفسره التطبيقات وتعرضه. تتضمن الأنواع الشائعة من البيانات المخزنة كثنائي الصور والفيديو والصوت والمستندات الخاصة بالتطبيق.

عند العمل مع بيانات مثل هذه، غالبًا ما يشير محترفو البيانات إلى ملفات البيانات باسم BLOBs (كائنات ثنائية كبيرة الحجم).

تنسيقات الملفات المُحسنة

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

تتضمن بعض تنسيقات الملفات المُحسنة الشائعة التي قد تراها Avro، ORC، Parquet:

  • Avro هو تنسيق قائم على الصفوف. تم إنشاؤها من قِبل Apache. يحتوي كل سجل على عنوان يصف بنية البيانات في السجل. يتم تخزين هذا العنوان بتنسيق JSON. يتم تخزين البيانات كمعلومات ثنائية. يستخدم التطبيق المعلومات الموجودة في الرأس لتحليل البيانات الثنائية واستخراج الحقول التي تحتوي عليها. Avro تنسيق جيد لضغط البيانات وتقليل متطلبات التخزين والنطاق الترددي للشبكة.

  • ينظم ORC (التنسيق المحسن لأعمدة الصفوف) البيانات في أعمدة بدلاً من صفوف. طورته HortonWorks لتحسين عمليات القراءة والكتابة في Apache Hive (Apache Hive هو نظام مستودع بيانات يدعم تلخيص البيانات بسرعة والاستعلام عن مجموعات البيانات الضخمة). يحتوي ملف ORC على خطوط شريحة البيانات. يحتفظ كل شريط ببيانات عمود أو مجموعة من الأعمدة. يحتوي الشريط على فهرس في الصفوف الموجودة في الشريط، وبيانات كل صف، وتذييل صفحة يحتوي على معلومات إحصائية (العدد، والمجموع، والحد الأقصى، والحد الأدنى، وما إلى ذلك) لكل عمود.

  • Parquet هو تنسيق بيانات عمودي آخر. تم إنشاؤه بواسطة Cloudera وTwitter. يحتوي ملف Parquet على مجموعات صفوف. يتم تخزين البيانات الخاصة بكل عمود معًا في نفس مجموعة الصفوف. تحتوي كل مجموعة صفوف على جزء واحد أو أكثر من البيانات. يتضمن ملف Parquet بيانات تعريف تصف مجموعة الصفوف الموجودة في كل مجموعة. يمكن لأي تطبيق استخدام بيانات التعريف هذه لتحديد موقع المجموعة الصحيح لمجموعة معينة من الصفوف بسرعة، واسترداد البيانات في الأعمدة المحددة لهذه الصفوف. يتخصص Parquet في تخزين ومعالجة أنواع البيانات المتداخلة بكفاءة. وهو يدعم أنظمة الضغط والترميز الفعالة للغاية.