أباتشي HBase
- 18 دقائق
ويعد Apache HBase قاعدة بيانات غير علائقية مفتوحة المصدر على غرار نظام التخزين الموزع BigTable من Google وتدعمه مؤسسة برامج Apache. كما يعد HBase قاعدة بيانات موزعة، قابلة للتحجيم، عالية الأداء، قابلة للتجزئة. تم تصميم البنية الأساسية لـ HBase لتخزين مليارات الصفوف في أعمدة بيانات في جداول محددة على نطاق أوسع، مثل جدول الويب الموصوف سابقاً. يحتوي الفيديو التالي على نظرة عامة حول HBase.
تمامًا كما تم تصميم إصدارات RDBMS التقليدية لتشغيل تبعًا لنظام الملفات المحلية، كما تم تصميم HBase لعمل لنظام الملفات الموزعة Hadoop. كما هو موضح سابقًا، يعد نظام الملفات الموزعة Hadoop هو نظام الملفات الموزعة التي تخزن الملفات ككتل منسوخة نسخًا متماثلاً عبر خوادم متعددة. يرسل نظام الملفات الموزعة Hadoop نظام ملفات موثوق بها وقابلة للتحجيم الموجودة على الخادم لـ HBase.
نموذج بيانات HBase
تقوم التطبيقات بتخزين البيانات المنظمة كصفوف وأعمدة في جدول، والتي تشبه الجداول في RDBMS على نطاق واسع. للتوضيح، نقو بتنظيم جدول الويب كمثال على غرار جدول HBase:
الشكل 2: جدول في HBase
يتم الرجوع إلى صف في HBase باستخدام مفتاح صف، والذي يمكن اعتباره المفتاح الأساسي للجدول في RDBMS. يجب أن يكون المفتاح الأساسي للجدول فريدًا ومن ثم الرجوع إلى صف واحد فقط. على عكس الموجودة في إصدارات RDBMS (التي تطلب مفاتيح أساسية لتكون ضمن أنواع معينة)، ومفاتيح الصفوف عبارة عن صفائف بايت أولية، لذلك نظرياً، أي شيء يتراوح بين سلاسل وتمثيلات ثنائية من أعداد صحيحة طويلة، تعويم، أو حتى هياكل البيانات الكاملة التي تم تسلسلها (تحويلها إلى شكل صفيف بايت) يمكن أن تكون بمثابة مفتاح الصف. يقوم HBase بفرز صفوف الجدول تلقائيًا بمفتاح الصف عندما يقوم بتخزينها. بشكل افتراضي، يتم الترتيب وفقًا للبايت.
الأعمدة في HBase تحمل اسمًا للعمود، والذي يمكن استخدامه للإشارة إلى عمود. يمكن تجميع الأعمدة بشكل أكبر في مجموعات الأعمدة. جميع أعضاء عائلة العمود لديهم بادئة شائعة، لذلك، في مثال webtable، الأعمدة Metadata:Type و Metadata:Language كلاهما أعضاء في Metadata عائلة العمود، بينما Content:Data تنتمي إلى Content العائلة. بشكل افتراضي، يحدد حرف العمود (:) كبادئة العمود من فرد العائلة. يجب أن تتألف بادئة مجموعة العمود من أحرف قابلة للطباعة. يمكن إجراء ذيل مؤهل من أي وحدات البايت الأساسية.
يختلف HBase عن RDBMS لأن الأعمدة لا تحتاج إلى كتابة؛ ويتم تفسيرها على أنها سلاسل بايت أولية. يتيح هذا التفسير لـ HBase بتخزين أي نوع من البيانات في الجدول ولكن أيضاً يعوق قدرتها على التحقق من صحة قيم البيانات تلقائياً عند تحميلها في الجدول.
على الرغم من أنه يجب تعريف مجموعات العمود في الجدول مقدمًا عند إنشاء الجدول، ويمكن إضافة أفراد المجموعة حسب الطلب. يخزن HBase كافة أفراد مجموعة العمود معًا على نظام الملفات الأساسي. وبالتالي، HBase هي قاعدة بيانات عمودية.
يتم إصدار عدة نسخ من خلايا الجدول، تقاطع إحداثيات الصفوف والأعمدة، (أي، يخزن HBase إصدارات متعددة [افتراضية وهي ثلاثة إصدارات] من القيم المخزنة في جداوله). إصدار قيمة خلية الجودة يتم تطبيعها زمنياً وتعيينها تلقائياً بواسطة HBase في وقت إدراج الخلية أو تحديثها. ومن ثم، تصف المجموعة {الصف، العمود، الإصدار} بشكل كامل قيمة فريدة مخزنة في جدول HBase.
عمليات HBase
لدى HBase أربع عمليات أساسية على نموذج البيانات: Get و Put و Scan و Delete.
تعمل عملية الحصول على استرجاع كافة الخلايا لصف محدد، والتي تتم الإشارة إليها بواسطة مفتاح صف. يمكن لعملية وضع إما إضافة صفوف جديدة إلى الجدول عند استخدامها مع مفتاح جديد أو تحديث صف إذا كان المفتاح موجودًا بالفعل. المسح الضوئي عبارة عن عملية تقوم بتكرار عدة صفوف استنادًا إلى بعض الشروط، مثل قيمة مفتاح صف أو سمة عمود. تقوم عملية الحذف بإزالة صف من جدول. تقوم عمليات المسح الضوئي والحصول دائمًا باسترجاع البيانات بترتيب مفروز. يتم فرز البيانات أولاً حسب مفتاح الصف، ثم حسب مجموعة العمود، ثم حسب أفراد المجموعة، وأخيرًا حسب الطابع الزمني (بحيث تظهر أحدث القيم أولاً).
بشكل افتراضي، يتم تنفيذ عمليات الحصول والمسح الضوئي والحذف على جدول HBase على البيانات ذات الإصدار الأحدث. تقوم عملية Put دومًا بإنشاء إصدار جديد من البيانات التي يتم وضعها في HBase. بشكل افتراضي، حذف عمليات حذف صف بأكمله ولكن يمكن أيضًا استخدامه لحذف إصدارات معينة من البيانات في صف. ويمكن أيضًا أن يتم توجيه كل عملية إلى رقم إصدار صريح.
بنية HBase
يُنظم HBase في شكل كتلة من عقد HBase. تُعدّ تلك العُقد ذات نوعين: عُقدة رئيسية وعقدة ثانوية واحدة أو أكثر (يُطلق عليها اسم RegionServers؛ انظر الشكل 3). يستخدم HBase Apache ZooKeeper كخدمة تنسيق توزيع لكتلة HBase بأكملها. على سبيل المثال، فإنه يعالج التحديد الرئيسي (اختيار إحدى العقد لتكون العقدة الرئيسية)، والبحث عن -ROOT- جدول الكتالوج (تم تناوله بالشرح منذ فترة قصيرة)، وتسجيل العقدة (عند إضافة regionservers جديدة). تقوم العقدة الرئيسية التي يتم اختيارها من قبل ZooKeeper بمعالجة وظائف مثل تخصيص المنطقة، وتجاوز الفشل، وموازنة التحميل.
الشكل 3: بنية HBase
كما هو الحال مع معظم قواعد البيانات، يتمكن HBase من الاحتفاظ بالبيانات باستخدام نظام الملفات الأساسي. تم تصميم HBase لاستخدام نظام الملفات الموزعة Hadoop الموجودة بالفعل على الخادم ولكن أيضًا يدعم أنواعًا مختلفة من أنظمة الملفات، بما في ذلك نظام الملفات المحلية وأنظمة الملفات السحابية منها مخزن البيانات الأساسية Azure. عادة ما يُعتبر كل خادم منطقة في HBase أيضًا عقدة بيانات DataNode في نظام الملفات الموزعة Hadoop (خادم ملفات نظام الملفات الموزعة Hadoop)، ولكن هذا ليس إلزاميًا في HBase.
تقسيم البيانات
تم تصميم HBase لتحجيم الجداول إلى عدد كبير من الصفوف والأعمدة (لعدة ملايين)، باستخدام حجم كل جدول قيد التشغيل بالتيرابايت أو بالبيتابايت. وعند استخدام هذا التحجيم، لا يمكن استضافة البيانات على عقدة واحدة. لتوزيع البيانات المخزنة في HBase عبر العقد في نظام مجموعة، يقوم HBase تلقائيا بتقسيم الجداول (الأجزاء) إلى مناطق، وهي مجموعات من الصفوف المتتالية في جدول:
الشكل 4: تقسيم جدول إلى مناطق متعددة في HBase
يتم تعريف كل منطقة بواسطة الصف الأساسي (شاملاً) والصف الأخير (استثنائيًا) بالإضافة إلى معرّف المنطقة (رقم تم إنشاؤه بشكل عشوائي). يتم تخزين الجداول بشكل مبدئي في منطقة واحدة، ولكن عندما يبلغ حجم الجدول حداً معيناً، فإن HBase تنشئ تلقائياً منطقة جديدة من خلال تقسيم البيانات إلى منطقتين متساويتين تقريباً. تستمر هذه العملية مع استمرار الجداول في الحصول على حجم أكبر.
وصول العميل
يمكن اتصال عملاء HBase به ليتمكنوا من تنفيذ العمليات على جداول HBase كما هو موضح في نموذج البيانات. ومع ذلك، يجب أن يحدد العملاء مكان العقدة المناسبة في مقطع تخزين HBase الذي يخزّن منطقة الجدول التي بحاجة إلى الوصول إليها. لتعقب جميع المناطق وموقعها في مقطع تخزين HBase، يكون لدى HBase جدولان من الكتالوج، يعرفان باسم -ROOT- و.META. في لغة HBase. يتم أيضًا معاملة هذه الجداول كجداول HBase ويمكن تخزينها في أي مكان في كتلة HBase لأغراض التسامح مع الخطأ.
-ROOT- يكون الجدول دائما مكتفيا ذاتيا في منطقة واحدة، بينما .META. قد يتم تقسيم الجدول إلى مناطق متعددة. يتصل العميل أولا بالمجموعة لمعرفة موقع -ROOT- الجدول (عبر ZooKeeper) ثم يستعلم عن -ROOT- الجدول لاستحضار موقع .META. الجدول.
.META. يقوم الجدول بعد ذلك بإرجاع موقع الصف الفعلي المطلوب من قبل العميل. بمجرد قيام العميل بحل "خادم المنطقة"، يتفاعل العميل مباشرة مع ذلك الخادم ويقوم بتنفيذ عمليات الصف المطلوبة.
يُخزن العميل أيضاً جداول -ROOT- و.META. مؤقتاً بعد الوصول الأول بحيث لا تتطلب عمليات العميل المتتالية عمليات بحث إضافية لهذه الجداول. سيستمر العميل في استخدام النسخة المخزنة مؤقتًا من جداول الكتالوجات حتى يواجه خطأ، ما يعني عادةً أنه تم تحديث جداول الكتالوجات بعد نقل موقع منطقة الجدول. يحدث العميل النسخة المخزنة مؤقتًا من جداول الكتالوجات ويستمر في إجراء العملية.
عمليات الكتابة
يقوم خادم المنطقة بعملية الكتابة على النحو التالي: يتم إلحاق عملية الكتابة إلى سجل الالتزامات على نظام الملفات الموزعة Hadoop (الذي يتم نسخه ثلاث مرات بشكل افتراضي)، وبعد ذلك تتم إضافة عملية الكتابة إلى ذاكرة التخزين المؤقت. عندما يتم ذلك بالكامل في ذاكرة التخزين المؤقت من المنطقة الخادم، يتم إفراغ المحتوى إلى نظام الملفات.
وذلك بسبب تخزين سجل الالتزامات على نظام الملفات الموزعة Hadoop، الذي يبقى متاحًا حنى عند تعطل المنطقة. وعندما تقوم العقدة الرئيسية بالإشعار أنه لم يعد يمكن الوصول إلى خادم المنطقة، فإنه يسترد سجل الالتزامات ويُقسِّم التغييرات عبر المناطق. يحصل كل خادم منطقة على جزء من سجل الالتزامات ويعيد عمليات التحرير لإحضار نظام الملفات إلى حالته المتناسقة ما قبل الفشل.
عمليات القراءة
بالسبة إلى عمليات القراءة، يرجع HBase دائمًا إلى ذاكرة التخزين المؤقت ذات الصلة بمنطقة ما. إذا تم العثور على إصدارات كافية من البيانات لتلبية الاستعلام، فحينها يتم استرجاع البيانات. وإلا يتم الرجوع إلى الملفات التي تم تفريغها في ترتيب من الأحدث إلى الأقدم للبحث عن البيانات المطلوبة أو حتى لا يكون هناك المزيد من ملفات المحاذاة للرجوع إليها. تعمل المعالجة الخلفية على تفريغ الملفات المضغوطة بصورة دورية بمجرد أن يبلغ رقمها حداً معيناً من خلال تجميع العديد من الملفات المفرغة في ملف واحد. في أثناء الضغط، يتم مسح أي إصدارات الخلايا خارج حد تكوين المستخدم (القيمة الافتراضية هي 3) من الصفوف المحذوفة.
خصائص ACID في HBase
HBase، مثل العديد من قواعد بيانات NoSQL، ليس متوافقاً تماماً مع خصائص ACID حسب التصميم. لا يضمن HBase الامتثال بخصائص ACID لصف ولكن ليس على العمليات التي تعمل على تمديد الصفوف. خصائص ACID في HBase هي كما يلي:
- الذرية: يوفر HBase آلية ذرية للعمليات التي تحدث الصفوف الفردية. أي عملية وضع إما أن تنجح في مجملها أو تفشل. يمكن أن تنجح العمليات التي تقوم بتحديث صفوف متعددة أو تفشل في الصفوف الفردية، وسيقوم HBase باسترجاع الحالة لكل صف.
- التناسق: يوفر HBase طريقة عرض متناسقة لقاعدة بيانات للحصول على عمليات على صف واحد. ستكون البيانات التي تم استرجاعها بيانات موجودة في وقت ما في تاريخ الجدول. بالإضافة إلى ذلك، ستتم رؤية أي تعديلات تتم على الجدول بالترتيب الذي تم إكماله. ومع ذلك، تكون عملية المسح الضوئي التي يقوم بها HBase غير متناسقة بدقة. على سبيل المثال، إذا كانت عملية المسح الضوئي تعمل في نفس الوقت مع عملية تحديث صف واحد أو أكثر التي هي جزء من المسح الضوئي، قد تقوم عملية المسح الضوئي باسترجاع الصفوف التي تم تحديثها أو التي لم يتم تحديثها. من المهم ملاحظة أن الصف يتم تحديثه بالكامل ولا يتم تحديثه جزئيًا.
- العزل: يتم تنفيذ العمليات على صف بالترتيب ومن ثم يتم عزلها بشكل صارم عن بعضها البعض. ومع ذلك، كما هو موضح في التعداد النقطي السابق، لا يتم عزل عمليات المسح الضوئي من العمليات الأخرى التي تتم على الصفوف الفردية.
- المتانة: يضمن HBase القدرة على الصمود على جميع البيانات المرئية. ستكون أي بيانات يتم استرجاعها من قراءة على قرص في شكل ما.
حالات الاستخدام HBase
يتيح HBase واجهات متعددة لاستخدامها في أثناء العمل. يمكن استخدام واجهة Java كواجهة لـ HBase عند استخدام MapReduce. بالإضافة إلى ذلك، لدى HBase واجهة REST، والتي يمكن استخدامها لاسترداد البيانات المخزنة في HBase من خلال استدعاءات خدمة HTTP.
يقدم HBase نفس حالات استخدام Google's Big Table لدى جوجل. HBase هي مخزن البيانات الموزع الذي يمكنه تخزين مليارات من الأعمدة والصفوف.
HBase هو الأنسب لتخزين البيانات الضخمة، الأمر الذي يتطلب الوصول السريع إلى صفوف متعددة في وقت لتجميعات، مثل الجميع أو متوسط. كما يسمح النموذج بالمرونة في إضافة أعمدة إلى قاعدة البيانات في أي وقت. تكون خاصية تعيين الإصدار لدى HBase أيضًا مفيدة لتخزين المعلومات التي تتغير مع مرور الوقت ولكن الإصدارات السابقة من البيانات مفيدة أيضًا. على سبيل المثال جدول الموقع، يمكن تخزين إصدارات متعددة لصفحة ويب للمقارنة.
لا يدعم HBase عملية الربط، حيث يتم ضم البيانات من جدولين أو أكثر على عمود مشترك لإنشاء جدول آخر. إذا كان التطبيق الخاص بك يعتمد على عمليات الربط، فقد لا يكون HBase الخيار الأمثل. بالإضافة إلى ذلك، يضع نموذج التناسق المريح ل HBase أعباء إضافية على مطور التطبيق، على سبيل المثال، للتحقق من نتائج عمليات الفحص.
اختبر معلوماتك
الملاحظات
هل كانت هذه الصفحة مفيدة؟
لا
هل تحتاج إلى مساعدة مع هذا الموضوع؟
هل تريد محاولة استخدام Ask Learn لتوضيح هذا الموضوع أو إرشادك خلاله؟