الفصل الثالث

تخزين البيانات الضخمة

كانت سعة تخزين القرص الصلب الأول، الذي ابتكرته شركة آي بي إم وباعته في مدينة سان خوزيه بولاية كاليفورنيا، حوالي ميجابايت، وكان يحتوي على ٥٠ قرصًا يبلغ قطر كلٍّ منها ٢٤ بوصة. كان هذا القرص الصلب أحدث تقنية موجودة عام ١٩٥٦. كان حجم الجهاز هائلًا؛ فقد كان يزن ما يزيد عن الطن، وكان يمثِّل جزءًا من جهاز كمبيوتر مركزي. عند هبوط الرحلة أبوللو ١١ على سطح القمر عام ١٩٦٩، كان مركز وكالة ناسا لرحلات الفضاء المأهولة في هيوستن يستخدم أجهزة كمبيوتر مركزية، احتوى كلٌّ منها على ذاكرة مساحتها تصل إلى ٨ميجابايت. المثير للدهشة أن الكمبيوتر الذي كان على متن سفينة الفضاء أبوللو ١١ التي هبطت على سطح القمر، والتي كان يقودها نيل أرمسترونج، كان يحتوي على ذاكرة مساحتها ٦٤كيلوبايت فقط.

تطوَّرت تقنيات الكمبيوتر سريعًا، وبحلول بداية ازدهار أجهزة الكمبيوتر الشخصية في ثمانينيات القرن العشرين، كان متوسط حجم القرص الصلب في الكمبيوتر الشخصي ٥ميجابايت إذا كان الكمبيوتر يتضمَّن قرصًا صلبًا بالفعل؛ إذ لم يكن الحال على هذا المنوال دائمًا. وهذه المساحة تكفي لتخزين صورة أو صورتَين في يومنا هذا. زادت سعة تخزين أجهزة الكمبيوتر بسرعة كبيرة، وعلى الرغم من أن سعة تخزين الكمبيوتر الشخصي لم تواكب تخزين البيانات الضخمة، فإنها زادت على نحو كبير في السنوات الأخيرة. أصبح بإمكانك حاليًّا شراء كمبيوتر شخصي مساحة قرصه الصلب ثمانية تيرابايت أو أكثر. وأصبحت محركات الأقراص المحمولة متوافرةً حاليًّا بسعة تخزين ١تيرابايت، وهو ما يكفي لتخزين حوالي ٥٠٠ ساعة من الأفلام أو ما يزيد على ٣٠٠ ألف صورة. ستبدو هذه السعات كبيرةً حتى نقارنها بحجم البيانات الجديدة التي تُنتَج كلَّ يوم، والذي يُقدَّر بحوالي ٢٫٥إكسابايت.

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

قانون مور

عام ١٩٦٥، تنبَّأ جوردون مور، الذي أصبح أحد الشركاء المؤسِّسين لشركة إنتل، بأنه على مدار السنوات العشر القادمة، سيتضاعف تقريبًا عدد الترانزستورات التي يمكن وضعها في شريحةٍ كلَّ ٢٤ شهرًا. وعام ١٩٧٥، غيَّر مور من تنبُّئه وقال إن التعقيد سيتضاعف كلَّ ١٢ شهرًا على مدار خمس سنوات، ثم عاد مرةً أخرى ليقول إنه سيتضاعف كلَّ ٢٤ شهرًا. اقترح ديفيد هاوس، وهو زميلٌ من شركة إنتل، بعد وضع السرعة المتزايدة للترانزستورات في الاعتبار، أن «أداء» الشرائح الإلكترونية المصغرة سيتضاعف كلَّ ١٨ شهرًا، وهذا التنبؤ الأخير هو الأكثر استخدامًا حاليًّا فيما يخصُّ قانون مور. أثبتَ هذا التنبؤ دقته البالغة؛ فقد أصبحت أجهزة الكمبيوتر حقًّا أسرع، وأرخص، وأقوى ممَّا كانت عليه عام ١٩٦٥، إلا أن مور نفسه يشعر بأن هذا «القانون» لن يستمر طويلًا.

طبقًا لِمَا كتبه إم ميتشل والدروب في مقاله الذي نُشِر في عدد شهر فبراير ٢٠١٦ من مجلة «نيتشر» العلمية، فقد اقتربت نهاية قانون مور. المعالج الدقيق هو الدائرة المتكاملة المسئولة عن تنفيذ التعليمات التي يقدِّمها برنامج الكمبيوتر. يتكوَّن هذا المعالج عادةً من مليارات الترانزستورات المُكدَّسة في مساحة صغيرة للغاية على شريحة مصغَّرة من السيليكون. وثمة بوابة في كل ترانزستور تسمح بتشغيله أو إلغاء تشغيله حتى يمكن استخدامه في تخزين صفر أو واحد. ويتدفَّق تيار دَخْل ضئيل للغاية عبر كل بوابة ترانزستور، ويُنتِج تيار خَرْج مُضَخَّم عند إغلاق البوابة. كان ميتشل والدروب مهتمًّا بالمسافة بين البوابات، وهي حاليًّا عبارة عن فجوات يبلغ حجم الواحدة منها ١٤ نانومترًا في أفضل أنواع المعالِجات الدقيقة، وصرَّح بأن مشكلات ارتفاع درجة الحرارة الناتجة عن تقارب الدوائر الإلكترونية، وكيف يمكن تشتيتها بفاعلية، تتسبَّب في تداعي النمو الأُسِّي الذي تنبَّأ به قانون مور، الأمر الذي لفت انتباهنا إلى الحدود القصوى الأساسية التي رأى أننا نقترب منها بسرعة.

النانومتر الواحد يساوي ١٠  متر، أو جزءًا من المليون من الملليمتر. ولوضع هذا القياس ضمن سياق، يبلغ قطر الشعرة لدى الإنسان حوالي ٧٥ ألف نانومتر، ويتراوح قطر الذرة ما بين ٠٫١ و٠٫٥ نانومتر. زعم باولو جارجيني، أحد العاملين في شركة إنتل، أن الحد الأقصى للفجوات سيكون ٢ أو ٣ نانومترات، وأننا سنصل إلى هذا الحد الأقصى في المستقبل القريب، ربما حين ندخل عشرينيات القرن الحادي والعشرين. تنبَّأ والدروب أنه «بهذا المعدل، سيكون سلوك الإلكترونات محكومًا بمبدأ عدم اليقين الكَمِّي الذي سيجعل الترانزستورات غير موثوقة على نحو ميئوس منه». وكما سنرى في الفصل السابع، من المرجَّح جدًّا فيما يبدو أن أجهزة الكمبيوتر الكَمِّية، وهي تقنية لا تزال في مهدها، هي التي سترسم في نهاية المطاف الخطوات المقبلة في هذا الشأن.

لا يزال قانون مور قابلًا للتطبيق حتى يومنا هذا على معدَّل نمو البيانات؛ إذ يبدو أن كمية البيانات المُنتجة تتضاعف تقريبًا كلَّ عامَين. كما تزداد كمية البيانات بزيادة سعة التخزين وزيادة القدرة على معالجة البيانات. ونحن المستفيدون من ذلك: أصبحت نتفليكس، والهواتف الذكية، وإنترنت الأشياء (طريقة ملائمة لتسمية العدد الهائل من أجهزة الاستشعار الإلكترونية المتصلة بالإنترنت)، والحوسبة السحابية (شبكة عالمية من الخوادم المتصلة فيما بينها)، من بين خدماتٍ أخرى، ممكنةً بفضل النمو الأُسي الذي تنبَّأ به قانون مور. كلُّ هذه البيانات المُنتجة بحاجة إلى التخزين، وهذا ما سنتناوله فيما يلي.

تخزين البيانات الهيكلية

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

من الجليِّ أنه يجب تصميم الجداول بعناية، وقد يتطلَّب الأمرُ الكثير من العمل لإجراء تغييراتٍ كبيرة. ولكن، ينبغي عدم التقليل من شأن النموذج الارتباطي. فمقارنةً بالكثير من تطبيقات البيانات الهيكلية، يُعد هذا النموذج سريعًا وموثوقًا. يتضمَّن أحد الجوانب المهمة لتصميم قواعد البيانات الارتباطية عمليةً تُسمَّى «التسوية»، وتشمل تقليل تكرار البيانات إلى الحد الأدنى؛ ومن ثمَّ، الحد من متطلَّبات التخزين. وتسمح هذه العملية بإجراء استعلامات أسرع، ولكن، رغم ذلك، كلما زاد حجم البيانات تراجعَ أداء قواعد البيانات التقليدية هذه.

تكمن المشكلة في قابلية التوسُّع. بما أن قواعد البيانات الارتباطية صُمِّمت في الأساس لتعمل على خادم واحد فقط، فإن سرعتها وموثوقيتها تتراجعان كلما أُضيفَ المزيد من البيانات. الحل الوحيد لتحقيق قابلية التوسُّع هو إضافة المزيد من القدرة الحاسوبية، والتي لها حدٌّ أقصى أيضًا. يُعرَف هذا باسم «قابلية التوسُّع الرأسية». على الرغم من أن البيانات الهيكلية عادةً ما تُخزَّن وتُدار في نظام إدارة قواعد بياناتٍ ارتباطية، فإن كفاءة نظام إدارة قواعد البيانات الارتباطية تقل، حتى مع البيانات الهيكلية، عندما تكون البيانات ضخمة؛ أي عندما يكون حجمها بالتيرابايت أو البيتابايت أو أكثر.

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

تخزين البيانات غير الهيكلية

فيما يخصُّ البيانات غير الهيكلية، لا يصلح استخدام نظام إدارة قواعد البيانات الارتباطية لعدة أسباب، لا سيَّما أنه بمجرد إنشاء مخطط قاعدة البيانات الارتباطية، يُصبح من الصعب تغييره. علاوةً على ذلك، لا يمكن تنظيم البيانات غير الهيكلية في صفوف وأعمدة بما يحقِّق سهولة الاستخدام. وكما رأينا سابقًا، عادةً ما تكون البيانات الضخمة عالية السرعة وتُنتَج في الوقت الحقيقي وتتطلَّب معالجة آنية؛ ولذا على الرغم من أن نظام إدارة قواعد البيانات الارتباطية يصلح بامتياز للعديد من الأغراض ويفيدنا كثيرًا، فقد أُجريت على ضوء انفجار البيانات الحالي أبحاثٌ مكثَّفة في أساليب التخزين والإدارة الجديدة.

لتخزين مجموعات البيانات الهائلة هذه، تُوزَّع البيانات على خوادم. وكلما زاد عدد الخوادم المُتضمَّنة، زادت أيضًا احتمالية حدوث عُطل في مرحلة ما، وعليه، فمن المهم أن تكون لدينا عدة نسخ متطابقة من البيانات نفسها، وتُخزَّن كلُّ نسخة على خادم مختلف. وممَّا لا شك فيه أنه في ضوء كميات البيانات الهائلة الجاري معالجتها حاليًّا، أصبح يُنظر إلى أعطال الأنظمة على أنها أمرٌ حتمي؛ ومن ثمَّ أصبحت طرق التغلُّب عليها مُضمَّنةً في أساليب التخزين. كيف تُلبَّى إذن متطلَّباتُ السرعة والموثوقية؟

نظام هادوب للملفات الموزَّعة

يوفِّر نظام الملفات الموزَّعة قدرةً تخزينية فعالة وموثوقة للبيانات الضخمة عبر الكثير من أجهزة الكمبيوتر. من منطلق تأثره بالأفكار التي نُشرَت في أكتوبر ٢٠٠٣ بواسطة شركة جوجل في ورقة بحثية عن إطلاق نظام ملفات جوجل، بدأ دوج كاتينج، الذي كان يعمل في ذلك الوقت في شركة ياهو، وزميله مايك كافاريلا، طالب الدراسات العليا في جامعة واشنطن، العمل على تطوير نظام هادوب للملفات الموزَّعة. يُعَد هادوب، وهو أحد أشهر أنظمة الملفات الموزَّعة، جزءًا من مشروع أكبر للبرامج المفتوحة المصدر يُسمَّى «هادوب إيكوسيستم». سُمي النظام باسم هادوب تيمُّنًا بدُمية صفراء محشوة على هيئة فيل كانت مملوكةً لابن كاتينج، والمشروع مكتوب بلغة البرمجة الشهيرة جافا. إذا كنت تستخدم فيسبوك، أو تويتر، أو إيباي، على سبيل المثال، فاعلم أن هادوب يعمل في الخلفية أثناء ذلك. يسمح النظام بتخزين البيانات شبه الهيكلية وغير الهيكلية، ويوفر منصةً لتحليل البيانات.

عندما نستخدم نظام هادوب للملفات الموزَّعة، تُوزَّع البيانات عبر الكثير من العُقَد التي يُقدَّر عددُها بنحو عشرات الآلاف، والموجودة فعليًّا في مراكز بيانات في جميع أنحاء العالم. يوضِّح شكل ٤ البنية الأساسية لمجموعة واحدة من نظام هادوب للملفات الموزَّعة، والتي تتكوَّن من عُقدة اسم رئيسية واحدة والكثير من عُقَد البيانات الفرعية.

تتعامل عُقدة الاسم NameNode مع جميع الطلبات التي تصل من كمبيوتر عميل، وتوزِّع مساحة التخزين، وتتابع المساحة المتوافرة للتخزين وموقع البيانات. كما أنها تدير جميع عمليات الملفات الأساسية (مثل فتح الملفات وإغلاقها) وتتحكَّم في الوصول إلى البيانات بواسطة أجهزة الكمبيوتر العميل. أمَّا عُقَد البيانات DataNodes، فإنها تكون مسئولةً عن التخزين الفعلي للبيانات، ولفعل ذلك تنشئ الكتل وتحذفها وتنسخها حسب الضرورة.
يُعَد النسخ المتماثل للبيانات إحدى السمات الرئيسية لنظام هادوب للملفات الموزَّعة. على سبيل المثال، بالنظر إلى شكل ٣-١، نرى أن الكتلة أ مُخزَّنة في كلٍّ من عقدة البيانات ١ وعقدة البيانات ٢. ومن المهم أن تُخزَّن عدة نسخ من كل كتلة، فإن حدث خلل في إحدى عقد البيانات، يمكن لعُقدٍ أخرى أن تتولى زمام الأمور وتواصل مهام المعالجة من دون فقد البيانات. لمتابعة عُقَد البيانات، إن وُجدت، وتحديد ما تعطَّل منها، تتسلم عقدة الاسم رسالةً من كلٍّ منها على حدة كلَّ ثلاث ثوانٍ، تُسمَّى «رسالة كشف أخطاء الاتصال»، وإذا لم تتسلم رسالة، فإنها تفترض أن عقدة البيانات المَعنية قد تعطَّلت عن العمل. وعليه، إذا تعطَّلت عقدة البيانات ١ في إرسال رسالة كشف أخطاء الاتصال هذه، فستصبح عقدة البيانات ٢ هي العقدة المسئولة عن عمليات الكتلة أ. ويختلف الوضع إذا فُقدت عقدة الاسم، وفي كلتا الحالتَين يجب استخدام نظام النسخ الاحتياطي المُضمَّن.
fig3
شكل ٣-١: عرضٌ مُبسَّط لجزءٍ من مجموعة في نظام هادوب للملفات الموزَّعة.

تُكتَب البيانات في عقدة البيانات لمرة واحدة، ولكنها ستُقرأ بواسطة التطبيقات لمراتٍ كثيرة. تبلغ مساحة كل كتلة عادةً ٦٤كيلوبايت فقط، ومن ثمَّ، فإن هناك الكثير منها. إحدى وظائف عقدة الاسم هي تحديد أفضل عقدة بياناتٍ لاستخدامها بِناءً على الاستخدام الحالي، ما يضمن سرعة الوصول إلى البيانات ومعالجتها. ومن ثمَّ، يصل الكمبيوتر العميل إلى كتلة البيانات عبر العقدة المختارة. تُضاف عقد البيانات طبقًا لزيادة متطلَّبات التخزين وعندما توجد ضرورة لذلك، وهي السمة المعروفة باسم «قابلية التوسُّع الأفقية».

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

قواعد البيانات غير الارتباطية للبيانات الضخمة

قواعد البيانات غير الارتباطية (NoSQL) هي الاسم الشامل الذي يشير إلى نوع من قواعد البيانات التي «لا تستخدم لغة الاستعلام الهيكلية فقط». لماذا طرأت الحاجة إلى نموذج غير ارتباطي لا يستخدم لغة الاستعلام الهيكلية؟ الإجابة المختصرة عن هذا السؤال هي أن النموذج غير الارتباطي يسمح لنا بإضافة بياناتٍ جديدة باستمرار. وللنموذج غير الارتباطي بعض السمات الضرورية لإدارة البيانات الضخمة، وهي قابلية التوسُّع، والتوفُّر، والأداء. مع قواعد البيانات الارتباطية، لن يمكنك مواصلة التوسُّع رأسيًّا من دون خسارة قدراتها الوظيفية، بينما يمكنك التوسُّع أفقيًّا مع قواعد البيانات غير الارتباطية، الأمر الذي يسمح بالحفاظ على الأداء. قبل أن نَصِف البنية التحتية لقاعدة البيانات الموزَّعة غير الارتباطية، وسبب كونها مناسبةً للبيانات الضخمة، علينا أولًا أن نتناول نظرية CAP.

نظرية الاتساق، والتوفُّر، والسماح بخطأ انقطاع الاتصال

عام ٢٠٠٠، قدَّم إيريك بروير، أستاذ علوم الكمبيوتر في جامعة كاليفورنيا بيركلي، نظرية الاتساق والتوفُّر والسماح بخطأ انقطاع الاتصال (CAP). في سياق نظام قواعد البيانات الموزَّعة، يشير الاتساق إلى المَطلب الخاص بضرورة تماثل جميع نسخ البيانات عبر العُقد. وعليه، في شكل ٣-١، على سبيل المثال، يجب أن تكون الكتلة أ في عقدة البيانات ١ هي نفسها الكتلة أ في عقدة البيانات ٢. ويشترط التوفُّر أنه إذا تعطَّلت إحدى العُقد، فإن العُقد الأخرى تظل تؤدي وظيفتها؛ أي إذا تعطَّلت عقدة البيانات ١، فيجب أن تظل عقدة البيانات ٢ تعمل. البيانات؛ ومن ثمَّ عقد البيانات، تكون موزَّعةً فعليًّا عبر خوادم متفرقة، ويُمكن أن يتوقَّف الاتصال بين هذه الأجهزة في بعض الأحيان. وعندما يحدث ذلك، فإننا نكون بصدد ما يُسمَّى بخطأ «انقطاع الاتصال في الشبكة». يتطلَّب السماح بهذا الخطأ ضرورة أن يواصل النظام عمله حتى وإن حدث ذلك.

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

توجد ثلاث خصائص تصف هذا الوضع بطريقة ملائمة وهي: متوفر دائمًا، ومرن، ومتسق في النهاية. ويبدو أن هذه الخصائص الثلاث جاءت على النقيض من الخصائص الأربع لقواعد البيانات الارتباطية. تشير كلمة «مرن» هنا إلى المرونة في متطلَّبات الاتساق. وليس الهدف هو تجاهل أيٍّ من هذه المعايير الثلاثة، بل إيجاد طريقة لتحسينها جميعها، وهي التوفيق بينها في الأساس.

بِنية قواعد البيانات غير الارتباطية

اشتُقَّت تسمية قواعد البيانات غير الارتباطية (NoSQL) من حقيقة أن لغة الاستعلام الهيكلية (SQL) لا يمكن استخدامها للاستعلام في قواعد البيانات هذه. وعليه، فإن الروابط على غرار ما رأيناه في شكل ٤ على سبيل المثال، لن تكون مُمكِنة. ثمة أربعة أنواع من قواعد البيانات غير الارتباطية: قاعدة بيانات المفتاح والقيمة، وقاعدة البيانات القائمة على الأعمدة، وقاعدة بيانات المستند، وقاعدة بيانات التمثيل البياني، وتفيد جميعها في تخزين الكميات الكبيرة من البيانات الهيكلية وشبه الهيكلية. أبسط هذه الأنواع هي قاعدة بيانات المفتاح والقيمة، وتتكوَّن من مُعرِّف (المفتاح) والبيانات المرتبطة بهذا المفتاح (القيمة)، كما هو موضَّح في جدول ٣-١. لاحظ أن «القيمة» يمكن أن تتضمَّن عناصر عديدة من البيانات.
جدول ٣-١: قاعدة بيانات المفتاح والقيمة.
المفتاح القيمة
جاين سميث العنوان: ٣٣ أي طريق، أي مدينة
توم براون النوع: ذكر؛ الحالة الاجتماعية: متزوج؛ عدد الأبناء: ٢؛ الأفلام المُفضَّلة: سندريلا، دراكولا، باتون

قد توجد بالطبع الكثير من أزواج المفتاح والقيمة تلك، وأن إضافة أزواج جديدة أو حذف أزواج قديمة أمر سهل للغاية؛ ممَّا يجعل قاعدة البيانات قابلةً للتوسُّع أفقيًّا إلى حدٍّ كبير. القدرة الرئيسية لهذا النوع هي أننا نستطيع البحث عن القيمة الخاصة بمفتاح معين. على سبيل المثال، باستخدام المفتاح «جاين سميث»، سنتمكَّن من العثور على عنوانها. وبتوفر كميات ضخمة من البيانات، يوفر هذا النوع من قواعد البيانات حلًّا سريعًا، وموثوقًا، وقابلًا للتوسُّع بسهولة للتخزين، ولكنه محدود بسبب عدم وجود لغة استعلام. تُعَد قواعد البيانات القائمة على الأعمدة وقواعد بيانات المستند، مُلحقَين لنموذج المفتاح والقيمة.

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

في هذا المثال، تُمثِّل العُقَد الأسماء والأقسام، والخطوط المستقيمة هي العلاقات بينها. وتُستخرج البيانات من التمثيل البياني عن طريق تتبُّع هذه الخطوط. إذن، إذا أردت إيجاد «أسماء موظفي قسم تكنولوجيا المعلومات الذين يعولون أطفالًا»، على سبيل المثال، فسنجد أن بوب يحقِّق هذَين المعيارَين. ولاحظ أن هذا التمثيل البياني ليس مُوجَّهًا؛ أي إننا لا نتبع اتجاهات الأسهم، بل نبحث عن وجود روابط.

fig4
شكل ٣-٢: قاعدة بيانات التمثيل البياني.
في الوقت الحالي، ثمة مقاربة تحاول الحصول على بعض الزخم تُسمَّى NewSQL. عن طريق الدمج بين أداء قواعد البيانات غير الارتباطية والخصائص الأربع للنموذج الارتباطي، فإن الهدف من هذه التقنية المُرتقَبة هو حلُّ مشكلات قابلية التوسُّع المصاحبة للنموذج الارتباطي بما يجعله أكثر ملائمةً للاستخدام مع البيانات الضخمة.

التخزين السحابي

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

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

تُعَدُّ شركة أمازون أكبر مزوِّد للخدمات السحابية، إلا أن كمية البيانات التي تُديرها تُعامَل على أنها سر تجاري. ويمكننا أن نأخذ فكرةً عن أهمية هذه الشركة في مجال الحوسبة السحابية من خلال تناول حادثة وقعت في فبراير ٢٠١٧ عندما تعرَّضَ نظام التخزين السحابي لمنصة «خدمات أمازون ويب» (إس ثري) إلى «عطل» كبير (أي انقطاع الخدمة). استمرَّ العطل نحو خمس ساعات، ونتجَ عنه انقطاع الاتصال بالكثير من مواقع الويب والخدمات الإلكترونية، بما في ذلك نتفليكس، وإكسبيديا، وهيئة الأوراق المالية والبورصات الأمريكية. أعلنت أمازون فيما بعد أن سبب العطل كان خطأً بشريًّا، حيث ذكرت أن أحد موظفيها تسبَّب في قطع الاتصال عن الخوادم دون قصد. واستغرقت إعادة تشغيل هذه الأنظمة الضخمة وقتًا أكبر من المتوقع، ولكنها تمَّت في النهاية بنجاح. ورغم ذلك، سلَّطت هذه الحادثة الضوءَ على قابلية الإنترنت للتعطُّل، سواءٌ كان ذلك بسبب خطأ غير مقصود أو عملية قرصنة خبيثة المَقصِد.

ضغط البيانات غير المنقوص

في ٢٠١٧، قدَّرت مؤسسة البيانات الدولية الشهيرة أنَّ إجمالي حجم الكون الرقمي هائل ويبلغ ١زيتابايت؛ وهو عدد يتعذَّر إدراكه يساوي ١٦ × ١٠٢١بايت. وبالتالي، فإنه مع النمو المطرد للكون الرقمي، سيصبح من الضروري الإجابة عن الأسئلة المتعلِّقة بماهية البيانات التي يجب أن نخزِّنها فعليًّا، وعدد النسخ التي يجب الاحتفاظ بها، ومدة الاحتفاظ بها. وهذا بالأحرى يشكِّل تحديًا لوجود البيانات الضخمة؛ إذ يدفعنا إلى حذف بياناتٍ من مخازن البيانات بصورة منتظمة أو حتى أرشفتها؛ وذلك لأن هذه العملية في ذاتها مكلِّفة، ومن المحتمل أن تُفقَد بيانات قيمَّة بما أننا لا نعلم بالضرورة ماهية البيانات التي قد تكون مهمةً لنا في المستقبل. ولكن، مع كميات البيانات الهائلة الجاري تخزينها، أصبح ضغط البيانات ضروريًّا لزيادة مساحة التخزين المتاحة إلى الحد الأقصى.

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

ثمة نوعان رئيسيان من الضغط: الضغط غير المنقوص والضغط المنقوص. في «الضغط غير المنقوص»، يُحتفَظ بالبيانات كلها دون فقد أي منها؛ ومن ثمَّ، يفيد هذا النوع تحديدًا مع النصوص. على سبيل المثال، الملفات، التي لها الامتداد .ZIP تُضغَط دون فقد أي معلومات، ما يعني أن فك ضغطها يعيدنا إلى الملف الأصلي. إذا ضغطنا سلسلةً من الأحرف aaaaabbbbbbbbbb على هيئة 5a10b، فمن السهل أن نعرف كيفية فك ضغط هذه السلسلة وإعادتها مرةً أخرى إلى السلسلة الأصلية. يوجد الكثير من الخوارزميات المُستخدَمة في ضغط البيانات، ولكن سيفيدنا أولًا أن نتعرَّف على كيفية تخزين الملفات دون ضغطها.
يُعَدُّ نظام ASCII (الشفرة القياسية الأمريكية لتبادل المعلومات) الطريقة القياسية لترميز البيانات حتى يمكن تخزينها على أجهزة الكمبيوتر. يُخصَّص لكلِّ حرف أو رمز عددٌ ترتيبي، وهو رمز ASCII الخاص به. ومثلما رأينا سابقًا، تُخزَّن البيانات على هيئة سلسلة من قيم الأصفار والآحاد. يُسمَّى كلٌّ من هذه الأرقام الثنائية «بِت». ويستخدِم نظام ASCII القياسي ٨بت (وهو ما يُعرَف أيضًا بأنه يعادل ١بايت) لتخزين كل حرف ورمز. على سبيل المثال، في نظام ASCII، يُرمَز للحرف a بالعدد ٩٧ والذي يتحوَّل إلى ٠١١٠٠٠٠١ بالنظام الثنائي. هذه القيم مُدرجَة في جدول نظام ASCII القياسي، الذي وضعنا جزءًا صغيرًا منه في نهاية هذا الكتاب. وفيما يخصُّ الأحرف الإنجليزية الكبيرة، فإنَّ لها رموزًا مختلفة في نظام ASCII.
دعونا نتناول كيفية ترميز سلسلة الأحرف added كما هو معروضٌ في جدول ٣-٢.
جدول ٣-٢: سلسلة أحرف بعد ترميزها
سلسلة الأحرف d e d d a
ASCII ١٠٠ ١٠١ ١٠٠ ١٠٠ ٩٧
النظام الثنائي ٠١١٠٠١٠٠ ٠١١٠٠١٠١ ٠١١٠٠١٠٠ ٠١١٠٠١٠٠ ٠١١٠٠٠٠١
إذن، تَشْغَل سلسلة الأحرف added مساحة تخزين مقدارها ٥بايت أو ٥ × ٨ =٤٠بت. وبالنظر إلى شكل ٧، يتحقَّق فك الترميز باستخدام جدول رموز ASCII. لا تُعَد هذه طريقةً اقتصادية لترميز البيانات وتخزينها؛ إذ إن تعيين ٨بت لكل حرف يبدو مساحةً مُبالَغًا فيها ولا تأخذ في الاعتبار حقيقة أن بعض الحروف في المستندات النصية تُستخدَم بوتيرة أكثر تكرارًا من غيرها. يوجد الكثير من نماذج ضغط البيانات دون فقدها، مثل خوارزمية هوفمان، التي تستخدم مساحة تخزين أقل عن طريق الترميز المتغير الطول، وهو أسلوب يعتمد على مدى تكرار حرف معين. تُعيَّن للأحرف الأكثر تكرارًا رموز أقصر طولًا.
بالرجوع إلى سلسلة الأحرف added مرةً أخرى، نلاحظ أن الحرف a يظهر مرةً واحدة، والحرف e يظهر مرةً واحدة، والحرف d يظهر ثلاث مرات. وبما أن الحرف d هو الأكثر تكرارًا، فلا بد أن يُخصَّص له أقصر رمز. لإيجاد رمز هوفمان لكل حرف، نَعِد الأحرف المكوِّنة لكلمة added على النحو الآتي:
بعد ذلك، نبحث عن الحرفَين الأقل تكرارًا؛ أي الحرفَين a وe، ثم نُنشئ التركيب الموضَّح في شكل ٣-٣، ويُسمَّى «الشجرة الثنائية». العدد ٢ في أعلى الشجرة هو حاصل جمع عدد مرات تكرار الحرفَين الأقل تكرارًا.
fig5
شكل ٣-٣: شجرة ثنائية.
نوضِّح في شكل ٣-٤ العقدة الجديدة التي تمثِّل التكرارات الثلاثة للحرف d.
fig6
شكل ٣-٤: الشجرة الثنائية مع إضافة عقدة جديدة.
يوضِّح شكل ٣-٤ الشجرة الكاملة وقد وُضِع في أعلاها العددُ الإجمالي لتكرارات الحرف. ويتم ترميز كل طرفٍ في الشجرة إمَّا بصفر وإمَّا بواحد، كما هو موضَّح في شكل ٣-٥، ويكون التوصل إلى الرموز المقابلة من خلال تتبُّع المسارات حتى أعلى الشجرة.
fig7
شكل ٣-٥: الشجرة الثنائية كاملة.
وعليه، يتم ترميز كلمة added كالآتي: a = ٠٠، وd = ١، وd = ١، وe = ١٠، وd = ١، وهذا يعطينا ٠٠١١١٠١. باستخدام هذه الطريقة نلاحظ أن مساحة التخزين المستخدمة هي ٣بت لتخزين الحرف d، و٢بت لتخزين الحرف a، و٢بت لتخزين الحرف e، ما يعطينا مساحةً إجمالية مقدارها ٧ بت. وهذه المساحة أفضل بكثير من المساحة الأصلية التي تبلغ ٤٠بت.

ثمة طريقة لقياس مدى كفاءة عملية الضغط، وهي حساب نسبة ضغط البيانات، وتُعرَّف بأنها حجم أحد الملفات دون ضغط مقسومًا على حجمه مضغوطًا. في هذا المثال، النسبة ٤٥ / ٧ تساوي تقريبًا ٦٫٤٣، وهي نسبة ضغط عالية تدل على توفير جيد لمساحة التخزين. ومن الناحية العملية، تكون هذه الأشجار كبيرةً للغاية؛ ومن ثمَّ تُستخدَم أساليب رياضية معقَّدة لتحسينها. وهكذا يوضِّح لنا هذا المثال كيف يمكننا ضغط البيانات دون فقد أيٍّ من المعلومات المتضمَّنة في الملف الأصلي، ومن هنا جاءت تسمية هذا النوع من ضغط البيانات بالضغط غير المنقوص.

ضغط البيانات المنقوص

في المقابل، عادةً ما تكون ملفات الصوت والصور أكبر بكثير من ملفات النصوص؛ ومن ثمَّ، يُستخدم معها أسلوب مختلف يُسمَّى «الضغط المنقوص». ويرجع هذا إلى أنَّ تطبيق أساليب الضغط غير المنقوص عند التعامل مع ملفات الصوت والصور قد لا يُسفر عن نسبة ضغط عالية بما يكفي ليكون تخزين البيانات بهذه الطريقة مُجديًا. هذا بالإضافة إلى أن فقد بعض البيانات من ملفات الصوت والصور أمرٌ مقبول. يستغل الضغط المنقوص هذه السمة الأخيرة، ويحذف بعض البيانات في الملف الأصلي؛ ومن ثمَّ يُقلِّل من مساحة التخزين اللازمة. تتمحور الفكرة الرئيسية حول حذف بعض التفاصيل دون أن يؤثِّر ذلك بدرجة كبيرة على إدراكنا للصورة أو الصوت.

على سبيل المثال، لنفترض أنَّ لدينا صورةً فوتوغرافية بالأبيض والأسود، أو بوصفٍ أدق «صورة ذات تدرُّج رمادي»، لطفل يتناول الآيس كريم على شاطئ البحر. يحذف الضغط المنقوص كميتَين متماثلتَين من البيانات من صورة الطفل ومن صورة البحر. تُحسَب نسبة البيانات المحذوفة بحيث لا يكون لها تأثير كبير على إدراك الناظِر للصورة الناتجة (المضغوطة)؛ فالضغط المفرط سيؤدي إلى صورة مُشوَّشة. ذلك حيث تأتي زيادة مستوى الضغط على حساب جودة الصورة.

إذا أردنا ضغط صورة ذات تدرُّج رمادي، فإننا نقسِّمها أولًا إلى مربعات تبلغ مساحة كلٍّ منها ٨ بكسل × ٨ بكسل. وبما أن هذه المساحة صغيرة للغاية، فستكون جميع وحدات البكسل متشابهةً بوجه عام من حيث الشكل. ومن ثمَّ، تمثِّل هذه الملاحظة، بالإضافة إلى الإلمام بآلية إدراكنا للصور، أحد أساسيات الضغط المنقوص. يحتوي كلُّ بكسل على قيمة عددية تتراوح ما بين صفر للأسود الخالص و٢٥٥ للأبيض الخالص، وتُمثِّل الأعدادُ التي تندرج بينهما ظلالَ اللون الرمادي. وبعد إجراء بعض المعالجة الإضافية باستخدام طريقة تُسمَّى «خوارزمية جيب التمام المتقطع»، نحصل على متوسط قيمة الكثافة لكل كتلة، وتُقارَن النتائج مع كلٍّ من القيم الفعلية لكتلةٍ معينة. وبما أننا نقارن هذه القيم الفعلية بمتوسط القيمة، فإن معظمها سيكون صفرًا أو سيصبح صفرًا عند تقريبه. تجمع خوارزمية الضغط المنقوص جميع هذه الأصفار معًا، وهو ما يمثِّل المعلومات المأخوذة من وحدات البكسل الأقل أهميةً بالنسبة إلى الصورة. تُجمَع كلُّ هذه القيم، التي تناظر المناطق ذات الترددات العالية في الصورة، معًا وتُحذَف المعلومات المُكرَّرة، باستخدام أسلوب يُسمَّى «التكميم»؛ ومن ثمَّ يحدث الضغط. على سبيل المثال، إذا كان لدينا ٦٤ قيمةً يلزم لتخزين كلٍّ منها بايت واحد، وكان لدينا ٢٠ صفرًا، فإن كلَّ ما سنحتاجه بعد الضغط هو مساحة تخزين مقدارها ٤٥بايت فقط. وتُكرَّر هذه العملية مع جميع الكتل المكوِّنة للصورة؛ ومن ثمَّ تُحذَف المعلومات المُكرَّرة منها جميعًا.

فيما يخصُّ الصور الملوَّنة، تتعرَّف خوارزمية «جيه بي إي جي» (المجموعة المشتركة لخبراء التصوير الفوتوغرافي)، على سبيل المثال، على الألوان الأحمر والأزرق والأخضر، وتُعيِّن لكلٍّ منها بُعدًا مختلفًا بِناءً على الخصائص المعروفة للإدراك البصري لدى البشر. يُعيَّن لِلَّون الأخضر أقصى بُعد؛ لأن العين البشرية أكثر إدراكًا للَّون الأخضر عن اللَّونَين الأحمر والأزرق. ويُعيَّن لكل بكسل في الصور الملوَّنة قيمة كثافة لمكونات اللون الأحمر والأزرق والأخضر فيها، ويُمثَّل هذا بالقيمة الثلاثية R, G, B. ولأسباب تِقْنيَّة، عادةً ما تُحوَّل قيم R, G, B الثلاثية إلى قيمة ثلاثية أخرى، مثل YCbCr حيث يمثِّل حرف Y كثافة اللون، وكلٌّ من Cb وCr هما قيمتا التشبُّع اللوني، اللتان تصفان اللون الفعلي. وباستخدام خوارزمية رياضية معقَّدة، يمكن تقليل قيم كل بكسل وإجراء ضغط منقوص في نهاية المطاف من خلال تقليل عدد وحدات البكسل المحفوظة.

بوجه عام، يتم ضغط ملفات الوسائط المتعدِّدة باستخدام أساليب الضغط المنقوص نظرًا لأحجامها الكبيرة. فكلما زاد مستوى ضغط الملف، تراجعت جودة إعادة إنتاجه، ولكن، نظرًا للتضحية ببعض البيانات، يمكن تحقيق نسب ضغط أكبر، بما يجعل الملف أصغر حجمًا.

بعد أن وضعت المجموعةُ المشتركة لخبراء التصور الفوتوغرافي معيارًا دوليًّا لضغط الصور للمرة الأولى عام ١٩٩٢، أصبحَ تنسيق الملف JPEG هو الطريقة الأكثر شيوعًا لضغط الصور الفوتوغرافية سواءٌ الملونة أم ذات التدرج الرمادي. ولا تزال هذه المجموعة تزاول نشاطها وتعقد اجتماعاتها عدة مرات كلَّ عام.

لنَعُد مجدَّدًا إلى مثال الصورة الفوتوغرافية ذات اللونَين الأبيض والأسود الملتقطة لطفل يتناول الآيس كريم على شاطئ البحر. من البديهي أن نراعي عند ضغط هذه الصورة أن يظل الجزء الذي يُظهر الطفل واضحًا؛ ومن ثمَّ فإننا نُضحِّي في سبيل ذلك بجزءٍ من وضوح تفاصيل الخلفية. أصبح هذا الأمر ممكنًا مع الطريقة الجديدة المسماة «ضغط البيانات عن طريق تمويهها»، التي ابتكرها الباحثون في كلية هنري سامويلي للهندسة والعلوم التطبيقية، بجامعة كاليفورنيا في لوس أنجلوس. وفيما يخصُّ القراء المهتمين بالتفاصيل، يُرجى مراجعة جزء «قراءات إضافية» في نهاية هذا الكتاب.

رأينا كيف يمكن استخدام نظام ملفات البيانات الموزَّعة في تخزين البيانات الضخمة. وتمَّ التغلُّب على مشكلات التخزين، حتى إنه أصبح من الممكن حاليًّا استخدام مصادر البيانات الضخمة في الإجابة عن الأسئلة التي كانت تتعذَّر الإجابة عنها سابقًا. وكما سنرى في الفصل الرابع، تُستخدم طريقة خوارزمية تُسمَّى «ماب رديوس» في معالجة البيانات المخزنة في نظام هادوب للملفات الموزَّعة.

جميع الحقوق محفوظة لمؤسسة هنداوي © ٢٠٢٤