ما الفرق بين قاعدتَي البيانات Cassandra وHBase؟
إن Apache Cassandra وApache HBase هما اثنتان من قواعد بيانات NoSQL التي تخزن البيانات بتنسيق غير جدولي. وتخزن قاعدتا البيانات هاتان البيانات باعتبارهما مخازن القيمة الرئيسية في البنية التحتية للبيانات الكبيرة من أجل إدارة وحدات تخزين البيانات الضخمة بدقة وفعالية. ومع ذلك، فإن لديهما اختلافات من حيث البنية تناسب حالات الاستخدام المختلفة بشكل أفضل. فعلى سبيل المثال، توفر Cassandra أداءً سريعًا عند القراءة والكتابة، بينما توفر HBase قدرًا أكبر من اتساق البيانات. وتتميز HBase أيضًا بأنها أكثر فعالية عند التعامل مع مجموعات البيانات الكبيرة والمتفرقة. تستخدم المؤسسات قاعدتي البيانات Cassandra وHBase في حالات الاستخدام المختلفة للبيانات الكبيرة.
أوجه التشابه: Cassandra وHBase
Cassandra وHBase هما قاعدتا بيانات من النوع NoSQL يمكنهما تخزين مليارات من مجموعات البيانات ومعالجتها واستردادها. وتجمع بينهما أوجه تشابه في المجالات التالية.
تطبيق البيانات الكبيرة
يمكنك تخزين كميات هائلة من البيانات غير المهيكلة وغير الارتباطية باستخدام كل من Cassandra وHBase. وهما تختلفان عن نظام قاعدة البيانات التقليدي، الذي يخزن البيانات في صفوف بسيطة من الأعمدة. يمكنك استخدام Cassandra وHBase لتخزين الصور والصوت ومقاطع الفيديو وأنواع البيانات غير المهيكلة الأخرى بغرض المعالجة على نطاق واسع.
المصدر المفتوح
تنشر مؤسسة Apache Software كلاً من Cassandra وHBase وتديرهما باعتبارهما مشروعين مفتوحَي المصدر. استند تطوير HBase إلى المفهوم الذي قدمته Google BigTable وأصدرته Apache للجمهور في عام 2008. وتُعد Cassandra مبادرة أُنشئت لحل مشكلات البحث في البريد الوارد على Facebook. وهي تستخدم ميزات معينة من BigTable وميزات أخرى من Amazon Dynamo.
قابلية التوسع
يمكنك توسيع نطاق HBase لتلبية متطلبات البيانات المتزايدة عن طريق إضافة المزيد من خوادم المنطقة إلى مجموعة HBase. يمكن لنظام قاعدة بيانات NoSQL بعد ذلك توزيع عُقد البيانات إلى مناطق جديدة عندما تتجاوز سعة معينة. يمكن لمجموعة Cassandra أيضًا دعم العُقد المتعددة لتوسيع إمكانات إدارة البيانات لديها. من خلال إضافة المزيد من العُقد، يمكنك توزيع البيانات بالتساوي ومنع اختناقات حركة المرور بشكل فعال.
استعادة البيانات
تتسم عُقد البيانات في كل من Cassandra وHBase بأنها متحمّلة للأعطال. في Cassandra، تدعم كل عقدة النسخ المتماثل للبيانات. وتُصدر عملية الكتابة تلقائيًا لجميع العُقد المعيَّنة إلى البيانات المحددة. لدى HBase نهج مماثل لتكرار البيانات يكون مؤتمتًا بواسطة نظام الملفات الموزّعة لـ Hadoop (HDFS) الذي يعمل عليه. ينشئ نظام الملفات الموزّعة لـ Hadoop (HDFS) نُسخًا مكررة من البيانات ويحافظ عليها على خوادم مختلفة. وتكرر قاعدتا بيانات NoSQL عُقد البيانات في شبكات مادية مختلفة استنادًا إلى عامل النسخ المتماثل لتقليل مخاطر الأعطال على مستوى الشبكة.
مسار الكتابة
تنظم كل من Cassandra وHBase البيانات في أعمدة. عند تخزين البيانات، تبحث كل قاعدة بيانات عن مجموعة الأعمدة المناسبة التي تحوي المعلومات ذات الصلة معًا. وتكتب قاعدتا البيانات أيضًا البيانات في ملفات السجل عند إلحاقها بقاعدة البيانات أو تخزينها ضمن عمود بها.
الاختلافات البنيوية: المقارنة بين Cassandra و HBase
تعمل Cassandra وHBase بشكل متوائم مع خصائص مختلفة لنظرية الاتساق والتوفر وتحمّل التقسيم (CAP). تحدد نظرية الاتساق والتوفر وتحمّل التقسيم أن الأنظمة الموزَّعة يمكن أن تمتلك اثنتين من السمات التالية في أي وقت:
- الاتساق
- التوفر
- تحمّل التقسيم
بما أن تحمّل التقسيم هو سمة إلزامية لقواعد البيانات التي تخزن مجموعات بيانات ضخمة، فإن Cassandra وHBase تختلفان في التوفر والاتساق. تتمتع Cassandra بدرجة عالية من التوفر وتحمّل التقسيم بسبب ترتيب العُقد على أساس بنية نظير إلى نظير. وتوفر HBase الاتساق مع تحمّل التقسيم لأن عقدة HBase رئيسية واحدة تكرر البيانات إلى جميع العُقد.
بعد ذلك، نوضح المزيد من الاختلافات من حيث البنية في كيفية إدارة قاعدتَي البيانات لطلبات البيانات.
نموذج البيانات
تنظِّم كل من Cassandra وHBase البيانات في مجموعات وصفوف وأعمدة، ولكن كل قاعدة بيانات تستخدم في ذلك تخطيطات مختلفة. في Cassandra، تُخزن أعمدة البيانات ذات الصلة في صفوف ضمن فئة أوسع تُسمى مساحة المفاتيح (keyspace). على سبيل المثال، قد تحتوي قاعدة بيانات Cassandra على مساحة المفاتيح ومجموعات الأعمدة وترتيب الخلايا كما يلي:
- Keyspace : CustomerOrders
- Column family: Client
- ID, FirstName, LastName
- Column family: Orders
- ID, Item, Price
- Column family: Client
تقع مجموعة عمود العميل في تقسيم يعلو مجموعة عمود الطلبات. في التطبيقات العملية، تجمِّع مساحة المفاتيح مجموعات أعمدة متعددة معًا.
توفر بنية HBase تخطيطًا يشبه قواعد البيانات الارتباطية التقليدية. بدلاً من وجود معرِّف لكل مجموعة أعمدة، تستخدم HBase مفاتيح الصفوف المتسلسلة في جدول، ثم ترتب الأعمدة التي تنتمي إلى مجموعة الأعمدة نفسها بجوار بعضها لاسترداد البيانات بسهولة. إليك المثال التالي:
- Table; CustomerOrders
- Row Key, Column Family: Client {First Name, LastName}, Column Family: Order {Item, Price}
القراءة عن قواعد البيانات الارتباطية
المكونات الأساسية
تستخدم Cassandra تقنية تُسمى التجزئة المتسقة لتمكين كل عقدة من العثور على بيانات محددة بسرعة في شبكات نظير إلى نظير. وتشمل مكوناتها الرئيسة جداول الذاكرة (memtable) وسجل الإجراءات (commit log)، وجداول السلاسل المرتبة (SS). وتشكل معًا مسار الكتابة للعُقد ومراكز البيانات والمجموعات في بنية Cassandra.
تتخذ HBase من نظام الملفات الموزّعة لـ Hadoop (HDFS) أساسًا لها. وهي تستخدم عقدة HBase الرئيسية وخادم المنطقة وZookeeper لتوفير إدارة البيانات.
وتوفر Cassandra إدارة البيانات وتخزين البيانات بشكل مستقل، وتتطلب HBase أنظمة خارجية لمنح إمكانيات تخزين البيانات.
التصميم الأساسي
تعمل Cassandra على بنية العُقد النشطة المتعددة، حيث تستجيب كل عقدة لعمليات الكتابة والطلبات. حتى إذا كانت عقدة معينة لا تخزن البيانات المطلوبة، فإنها تستردها من العُقد الأخرى باستخدام طريقة اتصال نظير إلى نظير تُسمى بروتوكول gossip.
تستخدم HBase إعدادًا أساسيًا وثانويًا، حيث تتحكم عقدة HBase الرئيسية في خوادم المنطقة للعقدة الأخرى. تقدم بنية HBase نقطة فشل واحدة في حالة عدم وجود نُسخ متماثلة من عقدة HBase الرئيسية. ويمكنك تكرار العديد من عُقد HBase الرئيسية، ولكنه لا توجد إلا واحدة منها مسؤولة عن جميع خوادم المنطقة.
تُظهر الصورة التالية الإعداد الأساسي والثانوي في HBase.
لغة الاستعلام
تتيح Cassandra معالجة البيانات في قاعدة البيانات باستخدام لغة Cassandra Query Language (CQL). يمكنك استخدام لغة CQL لإضافة السجلات أو إزالتها أو تحديثها في تعليمات وصفية مشابهة للغة SQL. تتكون لغة استعلام HBase من أوامر الغلاف (shell) الأساسية التي يتطلب تعلمها المزيد من الجهد.
الأداء: Cassandra مقابل HBase
توفر كل من Cassandra وHBase وصولاً عالي السرعة إلى مجموعات البيانات الكبيرة لتحليلات البيانات الضخمة. ثمة اختلافات في الأداء من حيث الجوانب التالية بين قاعدتَي البيانات هاتين.
وقت الاستجابة
وقت الاستجابة هو الفجوة الزمنية بين إرسال التعليمات إلى نظام قاعدة البيانات وتخزين البيانات أو استردادها. بشكل عام، تُظهر HBase وقت استجابة أقل مع زيادة عدد عمليات قراءة البيانات وكتابتها. والعكس صحيح بالنسبة لـ Cassandra، التي تُظهر تأخيرات أكبر لأنها تحضر المزيد من البيانات.
معدل الانتقال
يقيس معدل النقل عدد عمليات القراءة أو الكتابة التي تعالجها قاعدة البيانات لكل ثانية. تحافظ HBase على معدل نقل ثابت يتراوح بين 100000 و200000 عملية، ولكنها تُظهر زيادة بعد الوصول إلى 250000 عملية. يزداد معدل نقل Cassandra كلما زاد مقدار البيانات التي تُجرى كتابتها أو قراءتها.
أداء القراءة
تتطلب عملية القراءة في Cassandra العثور على الموقع الدقيق للبيانات المخزَّنة على الجدول المقسَّم. إذا كان البحث ينطوي على مفتاح ثانوي أو جدول غير مقسَّم، فإن Cassandra تستغرق وقتًا أطول للبحث في كل عقدة في المجموعة. بالإضافة إلى ذلك، تحدث حالات عدم اتساق البيانات عندما يحتوي العديد من العُقد على إصدارات مختلفة من البيانات نفسها.
تتمتع HBase بأداء قراءة أفضل من Cassandra؛ لأنها تكتب جميع البيانات على خادم واحد. على عكس Cassandra، فقراءة البيانات في HBase لا تستدعي من نظام قاعدة البيانات البحث في الجداول المقسَّمة. يوفر نظام الملفات الموزّعة لـ Hadoop (HDFS) الذي تستخدمه HBase لتخزين البيانات عوامل تصفية الازدهار (bloom) وذواكر التخزين المؤقت لكتل البيانات، ما يسرِّع استرداد البيانات.
أداء الكتابة
تكمل Cassandra عملية الكتابة بشكل أسرع من HBase. باستخدام Cassandra، يمكنك كتابة البيانات في السجل وذاكرة التخزين المؤقت بشكل متزامن. لا تدعم HBase الكتابة المتزامنة. بدلاً من ذلك، يمر تطبيق عميل HBase عبر Zookeeper لبدء عملية الكتابة، حيث توفر عقدة HBase الرئيسية العنوان لتخزين البيانات. تبطئ الخطوات الإضافية في HBase عملية كتابة البيانات.
اختلافات رئيسة أخرى: Cassandra مقابل HBase
يمكنك استخدام كل من Cassandra وHBase لإنشاء تطبيقات علم البيانات، ولكن ثمة اختلافات طفيفة تؤثر في قرار اختيار إحداهما بدون الأخرى.
الأمان
باستخدام Cassandra، يمكنك تنظيم الوصول إلى مستوى صف السجلات. وهي توفر أيضًا تشفير SSL لحماية تبادل البيانات بين العُقد. على عكس Cassandra، توفر HBase ميزات إضافية تتمثل في التشفير على مستوى الخلية والتشفير العام والمصادقة.
تقسيم البيانات
تدعم Cassandra التقسيم المرتب، ويمكنها فحص السجلات المرتبة بالتسلسل باستخدام عمود، مثل مفتاح التقسيم. على الرغم من أن هذا قد يكون مفيدًا، فإن التقسيم المرتب يعقِّد موازنة التحميل، حيث تتم عمليات الكتابة المتعددة على عقدة واحدة. لا يدعم جدول HBase التقسيم المرتب.
اتصالات العُقد
في بنية Cassandra، تُعد العُقد الأولية هي النقاط الرئيسة للاتصالات بين المجموعات. تستخدم هذه العُقد بروتوكول gossip لنقل البيانات بين المجموعات المختلفة. تستخدم HBase عقدة HBase رئيسية نشطة لتنسيق الاتصال بين العديد من خوادم المنطقة. في هذه البنية، تخضع حركة البيانات للتفاوض من خلال البروتوكول Zookeeper.
حالات استخدام Cassandra مقابل HBase
يمكن أن تساعد كل من قاعدتَي بيانات Cassandra وHBase أنواعًا مختلفة من تطبيقات البيانات الكبيرة. بعد ذلك، نشارك قاعدة البيانات الموزعة التي ستعمل بشكل أفضل من الأخرى في ظروف مختلفة.
التوافر مقابل الاتساق
تُعد Cassandra مناسبة لحالات الاستخدام التي تتطلب كتابة بيانات متكررة، ولكنها ليست محسّنة لتحديث البيانات أو حذفها بشكل متكرر. على سبيل المثال، تستخدم المؤسسات Cassandra لإنشاء أنظمة المراسلة وحلول معالجة البيانات التفاعلية ومخزن بيانات أجهزة الاستشعار في الوقت الفعلي. تُعد HBase أفضل للتطبيقات التي تتطلب اتساق البيانات والمعالجة المتكررة. على سبيل المثال، فإنها تستخدم الحلول المصرفية والرعاية الصحية والاتصالات HBase لتحليل كميات كبيرة من البيانات.
إعداد قاعدة البيانات
من السهل إعداد Cassandra؛ لأنها منتج مستقل يحتوي على جميع مكونات قاعدة البيانات الضرورية. على عكس Cassandra، تعتمد HBase على العديد من مكونات Hadoop للتشغيل، مثل Zookeeper وعقدة نظام الملفات الموزّعة لـ Hadoop (HDFS) الرئيسية وHDFS DataNode. وقد يكون إعدادها بسيطًا، ولكن الحفاظ على العديد من الترابطات قد يمثل تحديًا في تطبيقات الحياة الواقعية. إذا كنت تستخدم بالفعل بنية Hadoop التحتية، فقد تجد أن الترحيل إلى HBase أسهل من الترحيل إلى Cassandra.
ملخص الاختلافات: Cassandra مقابل HBase
Cassandra |
HBase |
|
التصميم الأساسي |
تستخدم بنية العُقد النشطة المتعددة. تعالج جميع العُقد طلبات القراءة/الكتابة. |
تستخدم البنية الأساسية-الثانوية. تتحكم عقدة HBase الرئيسية في العديد من خوادم المنطقة. |
المكونات الأساسية |
جداول الذاكرة (Memtable)، وسجل الإجراءات (commit log)، وجداول السلاسل المرتبة (SS). |
عقدة HBase الرئيسية، وخادم المنطقة، وZookeeper. |
نموذج البيانات |
تخزِّن صفوفًا من مجموعات الأعمدة ذات الصلة في مساحة المفاتيح. |
تكون مجموعات الأعمدة مرتبة أفقيًا باستخدام مفتاح صف تسلسلي. |
لغة الاستعلام |
تستخدم لغة Cassandra Query Language. |
تستخدم أوامر الغلاف (shell). |
وقت الاستجابة |
وقت استجابة أعلى مع زيادة عمليات إحضار البيانات. |
وقت استجابة أقل مع زيادة عمليات البيانات. |
معدل الانتقال |
يزداد معدل النقل مع زيادة عمليات البيانات. |
يزداد معدل النقل بعد عدد معين من العمليات. |
أداء القراءة |
قراءة بطيئة. ترجع إلى الجدول المقسَّم لتحديد موقع القراءة. قد تحدث حالات من عدم اتساق البيانات. |
أداء أفضل للقراءة واتساق البيانات. |
أداء الكتابة |
أداء أفضل للكتابة. تكتب للتسجيل والتخزين في ذاكرة التخزين المؤقت بشكل متزامن. |
هناك خطوات إضافية. تمر عبر Zookeeper وعقدة HBase الرئيسية. |
الأمان |
تنظِّم الوصول على مستوى الدور كحد أقصى. |
تنظِّم الوصول على مستوى الخلية كحد أقصى. |
تقسيم البيانات |
تدعم التقسيم المرتب. |
لا تدعم التقسيم المرتب. |
اتصالات العُقد |
تستخدم بروتوكول gossip. |
تستخدم بروتوكول Zookeeper. |
كيف يمكن لـ AWS المساعدة في تلبية متطلبات Cassandra وHBase؟
توفر Amazon Web Services (AWS) خدمات قواعد بيانات سحابية قابلة للتوسعة يمكنك استخدامها لتطبيق تقنيات علم البيانات بكفاءة وبتكلفة معقولة. بدلاً من توفير البنية التحتية الأساسية بشكل يدوي، يمكنك استخدام خدمات AWS التالية لدعم قواعد بيانات Cassandra وHBase:
- Amazon Keyspaces (for Apache Cassandra)، وهي خدمة قاعدة بيانات عبر الإنترنت لتشغيل أعباء عمل Cassandra ذات معدل النقل المرتفع. باستخدام Amazon Keyspaces، يمكنك توسيع نطاق التطبيقات مع الحفاظ على أوقات الاستجابة وإبقائها بقيمة بالمللي ثانية مكونة من رقم واحد.
- باستخدام Amazon EMR، يمكنك نشر مجموعات HBase لتطبيقات معالجة البيانات الواسعة النطاق. يثمر تشغيل HBase على EMR عن تحسين إمكانية استعادة البيانات عن طريق النسخ الاحتياطي للبيانات المخزنة على خدمة التخزين البسيطة في Amazon (Amazon S3).
ابدأ استخدام تحليلات البيانات الضخمة على AWS عن طريق إنشاء حساب اليوم.