استكشاف تخزين الملفات
القدرة على تخزين البيانات في الملفات هو عنصر أساسي في أي نظام حوسبة. يمكن تخزين الملفات في أنظمة ملفات محلية على القرص الثابت للكمبيوتر الشخصي وعلى الوسائط القابلة للإزالة مثل محركات USB، ولكن تُخزن ملفات البيانات الهامة في معظم المؤسسات مركزيًا في نوع من أنظمة تخزين الملفات المشتركة. يُستضاف موقع التخزين المركزي هذا على نحو متزايد في السحابة، ما يتيح تخزينًا اقتصاديّا آمنًا موثوقًا به لكميات ضخمة من البيانات.
يعتمد تنسيق الملف المستخدم لتخزين البيانات على عدة عوامل، منها:
- نوع البيانات المُخزنة (منظمة أو شبه منظمة أو غير منظمة).
- التطبيقات والخدمات التي تحتاج إلى قراءة وكتابة ومعالجة البيانات.
- الحاجة إلى ملفات البيانات ليمكن للبشر قراءتها، أو مُحسنة للتخزين والمعالجة الفعّالين.
نُوقشت بعض تنسيقات الملفات الشائعة أدناه.
ملفات نص محدد
تُخزن البيانات غالبًا بتنسيق نص عادي مع محدّدات حقول معينة ونهايات صف. التنسيق الأكثر شيوعًا للبيانات المحدّدة هو ملف قيم مفصولة بفاصلة (CSV) حيث تُفصل الحقول بفواصل، وتنتهي الصفوف برجوع إلى أول السطر / سطر جديد. قد يتضمن السطر الأول، اختياريًا، أسماء الحقول. تتضمن التنسيقات الشائعة الأخرى ملف قيم تفصلها علامات الجدولة (TSV) وفواصل مسافة (حيث تُستخدم علامات التبويب أو المسافات لفصل الحقول)، وبيانات ذات عرض ثابت يُخصص فيها عدد ثابت من الأحرف لكل حقل. النص المحدد هو خيار جيد للبيانات المنظمة التي تحتاج عِدة تطبيقات وخدمات الوصول إليها بتنسيق يمكن للبشر قراءته.
يُظهر المثال التالي بيانات العملاء بتنسيق محدد بفاصلة:
FirstName,LastName,Email
Joe,Jones,joe@litware.com
Samir,Nadoy,samir@northwind.com
تدوين كائن JavaScript (JSON)
JSON هو تنسيق شامل حيث يُستخدم مخطط مستند هرمي لتعريف كيانات البيانات (الكائنات) التي لها سمات متعددة. قد تكون كل سمة كائنًا (أو مجموعة من الكائنات)، جعل JSON تنسيقًا مرنًا مناسبًا لكل من البيانات المنظمة وشبه المنظمة.
يُظهر المثال التالي مستند JSON يحتوي على مجموعة عملاء. لكل عميل ثلاث سمات (firstName، lastName، contact)، وتحتوي سمة contact على مجموعة كائنات تُمثل أسلوب اتصال واحد أو عِدة أساليب (البريد الإلكتروني أو الهاتف). الكائنات محاطة بأقواس ({..}) والمجموعات محاطة بأقواس مربعة ([..]). يتم تمثيل السمات بالاسم:أزواج القيم ومفصولة بفواصل (،).
{
"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 (كائنات ثنائية كبيرة الحجم).
تنسيقات الملفات المُحسنة
في حين أن تنسيقات البيانات المنظمة وشبه المنظمة التي يمكن للبشر قراءتها قد تكون مفيدة، إلا أنها عادة غير مُحسنة لمساحة التخزين أو المعالجة. بمرور الوقت، طُورت بعض تنسيقات الملفات المتخصصة التي تُمكن الضغط والفهرسة والتخزين والمعالجة الفعالين.
بعض صيغ الملفات المحسنة الشائعة التي قد تراها تشمل ParquetوAvro:
- باركيه هو تنسيق بيانات عمودي وهو المعيار الفعلي لمنازل البيانات الحديثة في البحيرات. إنه مشروع أباتشي. يحتوي ملف باركيه على مجموعات صفوف. يتم تخزين البيانات الخاصة بكل عمود معًا في نفس مجموعة الصفوف. تحتوي كل مجموعة صفوف على جزء واحد أو أكثر من البيانات. يتضمن ملف Parquet بيانات تعريف تصف مجموعة الصفوف الموجودة في كل مجموعة. يمكن لأي تطبيق استخدام بيانات التعريف هذه لتحديد موقع المجموعة الصحيح لمجموعة معينة من الصفوف بسرعة، واسترداد البيانات في الأعمدة المحددة لهذه الصفوف. تتخصص باركيت في تخزين ومعالجة أنواع البيانات المتداخلة بكفاءة وتدعم أنظمة ضغط وترميز فعالة.
- Avro هو تنسيق قائم على الصفوف. تم إنشاؤها من قِبل Apache. يحتوي كل ملف على رأس يصف هيكل البيانات داخل الملف. يتم تخزين هذا العنوان بتنسيق JSON. يتم تخزين البيانات كمعلومات ثنائية في كتل أو أكثر من السجلات. يستخدم التطبيق المعلومات الموجودة في الرأس لتحليل البيانات الثنائية واستخراج الحقول التي تحتوي عليها. Avro تنسيق جيد لضغط البيانات وتقليل متطلبات التخزين والنطاق الترددي للشبكة.
- دلتا ليك هي صيغة تخزين مفتوحة المصدر تبني على باركيت من خلال إضافة سجل معاملات، مما يتيح معاملات ACID، وإصدار البيانات، والتحديثات الموثوقة فوق الملفات المخزنة في بحيرة البيانات.