أباتشي كاساندرا

| نوع | |
|---|---|
| نسبة التسمية | |
| نظام التشغيل | |
| النموذج المصدري |
حقوق التأليف والنشر محفوظة [لغات أخرى] |
| المطور الأصلي | |
| المطورون |
أفيناش لاكشمان، وبراشانت مالك فيسبوك |
| موقع الويب |
| لغة البرمجة | |
|---|---|
| الإصدار الأول |
يوليو 2008 [5] |
| الإصدار الأخير |
|
| المستودع | |
| الرخصة |
أباتشي كاساندرا هو نظام إدارة قواعد بيانات مجاني ومفتوح المصدر، مصمم للتعامل مع كميات هائلة من البيانات عبر خوادم متعددة. يُعطي النظام الأولوية للتوافر وقابلية التوسع على الاتساق، مما يجعله مناسبًا بشكل خاص للأنظمة التي تتطلب إنتاجية كتابة عالية بفضل طبقة تخزين فهرسة تعتمد على شجرة الدمج المنظمة على شكل سجل (LSM).[8] وباعتباره قاعدة بيانات واسعة الأعمدة، يدعم أباتشي كاساندرا المخططات المرنة ويتعامل بكفاءة مع نماذج البيانات ذات الأعمدة المتفرقة العديدة. يوفر أباتشي كاساندرا نظاما محسنا للتطبيقات التي تتمتع بأنماط وصول بيانات محددة جيدًا يمكن دمجها في تصميم المخطط.[8] كما يدعم أباتشي كاساندرا مجموعات الحواسيب التي قد تمتد عبر مراكز بيانات متعددة،[9] ويتميز بتكرار غير متزامن وبدون وحدة رئيسية. كما يسمح بعمليات منخفضة الكمون لجميع العملاء، ويدمج تقنيات التخزين والتكرار الموزعة دينامو التابعة لشركة أمازون، إلى جانب نموذج محرك تخزين البيانات بيغتيبل الخاص بشركة جوجل.[10]
التاريخ
طُوّر أباتشي كاساندرا في البداية لصالح شركة فيسبوك (ميتا حاليا) على يد كل من براشانت مالك وأفيناش لاكشمان، المؤلف المشارك في مشروع دينامو، وهو نظام تخزين البيانات الخاص شركة أمازون، كأداة لدعم وظيفة البحث في البريد الوارد في موقع فيسبوك، وقد أطلقا عليه هذا الاسم نسبة إلى كاساندرا عرافة طروادة الأسطورية، في إشارة إلى لعنتها المتمثلة في نبوءاتها التي لم تُصدق أبدا.[11] طرحت شركة فيسبوك أباتشي كاساندرا بعد ذلك كبرنامج مفتوح المصدر على منصة جوجل كود في يوليو (تموز) 2008.[12] وفي مارس (آذار) 2009، أصبح أباتشي كاساندرا مشروعًا تابعًا لحاضنة أباتشي.[13] وفي 17 فبراير (شباط) 2010، ارتقى إلى مستوى أعلى.[14]
المميزات والعيوب
يستخدم أباتشي كاساندرا بنية موزعة حيث تؤدي جميع العقد وظائف متطابقة، مما يلغي نقاط الفشل الفردية. يستخدم النظام استراتيجيات تكرار قابلة للتكوين لتوزيع البيانات عبر المجموعات، مما يدعم التكرار وقدرات التعافي من الكوارث. كما يتمتع النظام بالقدرة على التوسع الخطي، وهو ما يزيد من معدل القراءة والكتابة بإضافة عقد جديدة، مع الحفاظ على استمرارية الخدمة.
يُصنف أباتشي كاساندرا كنظام قائم على التوافر وتحمل التقسيم، حيث يُركز على التوافر على حساب اتساق البيانات، وعلى الرغم من أنه يُوفّر مستويات اتساق قابلة للضبط لكلٍّ من عمليات القراءة والكتابة، فإن بنيته تجعله أقل ملاءمةً لحالات الاستخدام التي تتطلب ضمانات اتساق صارمة.[8] وعلاوة على ذلك، فإن أباتشي كاساندرا يتوافق أيضًا مع برنامج أباتشي هدوب والأدوات ذات الصلة بالتكامل مع سير عمل معالجة البيانات الضخمة الحالية، ويتم الحفاظ على الاتساق النهائي باستخدام أدوات إدارة البيانات لإدارة عمليات القراءة والتحديث والحذف. تعاني قدرات الاستعلام في النظام من نقاط ضعف ملحوظة، إذ لا يدعم أباتشي كاساندرا أنماط الاستعلام المتقدمة مثل عمليات الربط متعددة الجداول، أو التجميعات المخصصة، أو الاستعلامات المعقدة.[8] ويعود ذلك إلى بنيته الموزعة، التي تُحسّن قابلية التوسع والتوافر بدلاً من عمليات الاستعلام المعقدة.
نموذج البيانات
بصفته مخزنًا واسع الأعمدة، يجمع أباتشي كاساندرا بين ميزات كلٍّ من أنظمة قواعد البيانات ذات القيمة المفتاحية والجدولية، ويُطبّق نموذج مخزن صفوف مُقسّم بمستويات اتساق قابلة للتعديل.[15] ويُقارن الجدول التالي بين نموذج أباتشي كاساندرا لإدارة قواعد البيانات وبين نماذج إدارة قواعد البيانات العلائقية:
| الخاصية | نموذج أباتشي كاساندرا | نماذج إدارة قواعد البيانات العلائقية |
|---|---|---|
| التنظيم | مساحة المفاتيح - جدول - صف | قاعدة بيانات - جدول - صف |
| بنية الصف | الأعمدة الديناميكية | مخطط ثابت |
| بيانات العمود | الاسم، النوع، القيمة، الطابع الزمني | الاسم، النوع، القيمة |
| إجراء التغييرات في المخطط | يتيح التعديل أثناء التشغيل | عادة ما يتطلب التوقف |
| نموذج البيانات | غير مطبع | يتم تطبيقع باستخدام عمليات الربط |
يتكون نموذج البيانات من عدة مكونات هرمية:
مساحة المفاتيح
تُشبه مساحة المفاتيح في أباتشي كاساندرا قاعدة البيانات في أنظمة إدارة قواعد البيانات العلائقية. تحتوي مساحة المفاتيح على جداول متعددة وتُدير معلومات التكوين، بما في ذلك استراتيجية التكرار والأنواع المُعرّفة من قِبَل المستخدم (UDTs).[8]
الجداول
كانت الجداول في نموذج أباتشي كاساندرا تُعرف في السابق باسم «عائلات الأعمدة»، وهي عبارة عن هي حاويات لصفوف البيانات. يكون لكل جدول اسم ومعلومات تكوين لبياناته المُخزّنة. ويُمكن إنشاء الجداول أو حذفها أو تعديلها أثناء التشغيل دون حظر التحديثات والاستعلامات.[16]
الصفوف والأعمدة
يُعرّف كل صف بمفتاح أساسي ويحتوي على أعمدة. ويكون المكون الأول للمفتاح الأساسي للجدول هو مفتاح القسم. وفي داخل القسم، تُجمّع الصفوف حسب الأعمدة المتبقية من المفتاح.[17]
تحتوي الأعمدة على بيانات الصف، وتتكون من:
- اسم
- نوع
- قيمة
- بيانات تعريف الطابع الزمني، والتي تُستخدم لحل تعارضات الكتابة من خلال آخر عملية كتابة ناجحة.
وعلى عكس جداول أنظمة إدارة قواعد البيانات العلائقية التقليدية، يمكن في نموذج أباتشي كاساندرا أن تحتوي الصفوف داخل الجدول نفسه على أعمدة مختلفة، مما يوفر بنية مرنة، كما يمكن فهرسة أعمدة أخرى بشكل منفصل عن المفتاح الأساسي.. تُميز هذه المرونة قواعد بيانات أباتشي كاساندرا عن قواعد البيانات العلائقية، حيث لا يلزم تحديد جميع الأعمدة لكل صف. [18]
نموذج التخزين
يستخدم أباتشي كاساندرا فهرس شجرة الدمج الهيكلية اللوغاريتمية لتحسين معدل الكتابة، على عكس فهارس شجرة بي المستخدمة في معظم قواعد البيانات الأخرى. ويوضح الجدول التالي الاختلاف في نموذج التخزين بين أباتشي كاساندرا وأنظمة قواعد البيانات علائقية:
| الخاصية | نموذج أباتشي كاساندرا | نماذج إدارة قواعد البيانات العلائقية |
|---|---|---|
| بنية الفهرس | شجرة الدمج المنظمة على شكل سجل | شجرة بي |
| عملية الكتابة | الإضافة في سجل الذاكرة | سجل التحديثات |
| مكونات التخزين | سجل الإجراءات، وجداول الذكرة، وجداول السلاسل المرتبة | ملفات البيانات، سجل المعاملات |
| استراتيجية التحديث | يتطلب كل تغيير عمليات إدخال جديدة | يمكن تعديل البيانات الموجودة |
| إمكانية الحذف | تتم من خلال أداة الحذف | يثمكن الحذف مباشرةً |
| تحسين القراءة | ثانوي | أولي |
| تحسين الكتابة | أولي | ثانوي |
تتكون بنية نموذج التخزين في أباتشي كاساندرا من ثلاثة مكونات رئيسية:
المكونات الأساسية
- سجل الإجراءات: سجل كتابة مسبقة يضمن استمرارية الكتابة.
- جدول الذاكرة: بنية بيانات في الذاكرة تخزن عمليات الكتابة، مرتبة حسب المفتاح الأساسي.
- جدول السلاسل المرتبة: وهي ملفات ثابتة تحتوي على بيانات مسحت من جداول الذاكرة.
عمليات الكتابة والقراءة
تمر عمليات الكتابة في أباتشي كاساندرا بمرحلتين:
- تُسجل عملية الكتابة في سجل الإجراءات وتُضاف إلى جدول الذاكرة.
- عندما يصل جدول الذاكرة إلى الحجم أو الوقت الأقصى، يتم مسحه ونقله إلى جدول الذاكرة.
عمليات القراءة:
- التحقق من جدول الذاكرة للبحث عن أحدث البيانات.
- البحث في جداول الذاكرة من الأحدث إلى الأقدم باستخدام عوامل تصفية الازدهار لزيادة الكفاءة.
إدارة البيانات
أداة الحذف
تُنشئ كل عملية (إنشاء/تحديث/حذف) مُدخلًا جديدًا، ويتم التعامل مع عمليات الحذف من خلال أداة الحذف «تومبستون». وعلى الرغم من شيوعها في العديد من قواعد البيانات، إلا أن أداة تومبستون قد تُسبب انخفاضًا في الأداء في أحمال العمل التي تتطلب حذفًا مكثفًا.[19]
الضغط
يُدمج الضغط جداول سلاسل مرتبة متعددة لتحقيق ما يلي:
- تقليل استخدام مساحة التخزين
- إزالة أداة تومبستون من الصفوف المحذوفة
- تحسين أداء القراءة
لغة الاستعلام
يستخدم نموذج أباتشي كاسادرا لغة استعلام كاساندرا (CQL) كواجهة للوصول بدلا من استخدام لغة الاستعلام الهيكلية (SQL) التقليدية. تضيف لغة استعلام كاسادرا طبقة تجريد تُخفي تفاصيل تطبيق هذه البنية، وتوفر صيغًا أصلية للمجموعات والترميزات الشائعة الأخرى. كما تتوفر برامج تشغيل للغات الجافا (جي دي بي سي)، والبايثون (دي بي إيه بي 12)، والنود.جي إس (داتاستاكس)، وسي++.[20]
مساحة المفاتيح في أباتشي كاساندرا هي مساحة اسم تُعرّف تكرار البيانات عبر العقد. لذلك، يُعرّف التكرار على مستوى مساحة المفاتيح. وفيما يلي مثال على إنشاء مساحة المفاتيح، وعائلة الأعمدة باستخدام لغة استغلام كاساندرا CQL 3.0:[21]
CREATE KEYSPACE MyKeySpace
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
USE MyKeySpace;
CREATE COLUMNFAMILY MyColumns (id text, lastName text, firstName text, PRIMARY KEY(id));
INSERT INTO MyColumns (id, lastName, firstName) VALUES ('1', 'Doe', 'John');
SELECT * FROM MyColumns;
والتي ينتج عنها:
id | lastName | firstName
----+----------+----------
1 | Doe | John
(1 rows)
البنية الموزعة
بروتوكول تبادل المعلومات
يستخدم أباتشي كاساندرا بروتوكول تبادل المعلومات من ند إلى ند لاتصالات المجموعة. تتبادل العقد بشكل روتيني معلومات حول حالة المجموعة، بما في ذلك:
- حالة توفر العقدة
- إصدارات المخطط
- طوابع زمنية للإنشاء (وقت تشغيل العقدة)
- أرقام الإصدارات (قيم الساعة المنطقية)
يستخدم النظام ساعات متجهة لتتبع تداول المعلومات وتجاهل بيانات الحالة القديمة.
العقد الأساسية
تُحدد البنية عقدًا معينة كعقد أساسية، والتي تقوم بما يلي:
- تشغل المجموعة
- تعمل كنقاط اتصال تبادل معلومات مضمونة
- تمنع تجزئة المجموعة
- تبقى قابلة للاكتشاف باستخدام أساليب اكتشاف الخدمة
يُزيل هذا التصميم نقاط الفشل الفردية مع الحفاظ على اتساق المعرفة التشغيلية على مستوى المجموعة.
التعامل مع الأعطال
يستخدم أباتشي كاساندرا نظام كاشف فشل التراكم Phi لإدارة أعطال العقد أثناء تشغيل المجموعة.[22] من خلال هذا النظام، تُقيّم كل عقدة بشكل مستقل مدى توفر العقد الأخرى أثناء تبادل البيانات. وعند فشل أي عقدة في الاستجابة، تُمنع وتُزال من عمليات الكتابة، مع إمكانية انضمامها مجددًا إلى المجموعة عند استئناف تلقي الإشارات.
وللحفاظ على سلامة البيانات أثناء انقطاعات العقد، يستخدم أباتشي كاساندرا آلية يُطلق عليها اسم «التسليم بالتلميح»، فعند الكتابة إلى عقدة غير متصلة بالإنترنت، تُخزّن عقدة المنسق بيانات الكتابة مؤقتًا كتلميح، وبمجرد عودة العقدة غير المتصلة بالإنترنت إلى الخدمة، تُعاد توجيه هذه التلميحات لاستعادة اتساق البيانات. تجدر الإشارة إلى أن أباتشي كاساندرا لا تُزيل العقد نهائيًا إلا من خلال إيقاف التشغيل الإداري الصريح أو إعادة البناء، مما يمنع حدوث أعطال مؤقتة في الاتصالات أو إعادة التشغيل من إعادة توازن البيانات غير الضرورية.
الإدارة والمراقبة
يُعتبر أباتشي كاساندرا نظامًا قائمًا على الجافا، وبالتالي يُمكن إدارته ومراقبته من خلال ملحقات إدارة الجافا (JMX). على سبيل المثال، يُمكن استخدام أداة إدارة العقد المتوافقة مع ملحقات إدارة الجافا لإدارة مجموعة أباتشي كاساندرا.[23] توفر أداة العقد أيضًا عددًا من الأوامر لإرجاع مقاييس أباتشي كاساندرا المتعلقة باستخدام القرص، وزمن الوصول، والضغط، وجمع البيانات المهملة، وغيرها.[24] وقد صدرت لأباتشي كاساندرا منذ إطلاق الإصدار كاسادرا 2.0.2 عام 2013 عدة مقاييس من خلال إطار عمل دروبويزرد للمقاييس،[25] والتي ويمكن الاستعلام عنها من خلال ملحقات إدارة الجافا باستخدام أدوات مثل جيكونسول أو تمريرها إلى أنظمة مراقبة خارجية عبر مكونات إضافية متوافقة مع إطار عمل دروبويزرد للمقاييس.[26]
الإصدارات
يوضح الجدول التالي قائمة الإصدارات التي طُرحت حتى الآن من نظام أباتشي كاساندرا:
| الإصدار | تاريخ الإصدار الأول | آخر تحديث | تاريخ إطلاق آخر تحديث | الحالة[27] |
|---|---|---|---|---|
| 0.6 | 12 أبريل (نيسان) 2010 | 0.6.13 | 18 أبريل (نيسان) 2011 | لم يعد متوفر |
| 0.7 | 10 يناير (كانون الثاني) 2011 | 0.7.10 | 31 أكتوبر (تشرين الأول) 2011 | لم يعد متوفر |
| 0.8 | 3 يونيو (حزيران) 2011 | 0.8.10 | 13 فبراير (شباط) 2012 | لم يعد متوفر |
| 1.0 | 18 أكتوبر (تشرين الأول) 2011 | 1.0.12 | 4 أكتوبر (تشرين الأول) 2012 | لم يعد متوفر |
| 1.1 | 24 أبريل (نيسان) 2012 | 1.1.12 | 27 مايو (أيار) 2013 | لم يعد متوفر |
| 1.2 | 2 يناير (كانون الثاني) 2013 | 1.2.19 | 18 سبتمبر (أيلول) 2014 | لم يعد متوفر |
| 2.0 | 3 سبتمبر (أيلول) 2013 | 2.0.17 | 21 سبتمبر (أيلول) 2015 | لم يعد متوفر |
| 2.1 | 16 سبتمبر (أيلول) 2014 | 2.1.22 | 31 أغسطس (آب) 2020 | لم يعد متوفر |
| 2.2 | 20 يوليو (تموز) 2015 | 2.2.19 | 4 نوفمبر (تشرين الثاني) 2020 | لم يعد متوفر |
| 3.0 | 9 نوفمبر (تشرين الثاني) 2015 | 3.0.29 | 15 مايو (أيار) 2023 | لم يعد متوفر |
| 3.11 | 23 يونيو (حزيران) 2017 | 3.11.15 | 5 مايو (أيار) 2023 | لم يعد متوفر |
| 4.0 | 26 يوليو (تموز) 2021 | 4.0.13 | 20 مايو (أيار) 2023 | متوفر جزئيا حتى إطلاق التحديث 5.1.0 |
| 4.1 | 17 يونيو (حزيران) 2022 | 4.1.6 | 19 أغسطس (آب) 2024 | متوفر جزئيا حتى إطلاق التحديث 5.2.0 |
| 5.0 | 5 سبتمبر (أيلول) 2024 | 5.0.4 | 10 أبريل (نيسان) 2025 | متوفر حى إطلاق الإصدار الأحدث 5.3.0 |
مراجع
- ↑ وصلة مرجع: http://kellabyte.com/2013/01/04/the-meaning-behind-the-name-of-apache-cassandra/. مسار الأرشيف: https://web.archive.org/web/20130205153018/http://kellabyte.com/2013/01/04/the-meaning-behind-the-name-of-apache-cassandra/.
- ↑ وصلة مرجع: https://en.paradigmadigital.com/dev/cassandra-lady-nosql-databases/.
- ↑ وصلة مرجع: https://api.github.com/repos/apache/cassandra. الوصول: 24 يوليو 2018.
- 1 2 3 وصلة مرجع: https://projects.apache.org/json/projects/cassandra.json. الوصول: 8 أبريل 2020.
- ↑ وصلة مرجع: https://cwiki.apache.org/confluence/display/INCUBATOR/March2009. الوصول: 9 مارس 2023.
- ↑ "Release cassandra-5.0.2".
- ↑ وصلة مرجع: https://cassandra.apache.org/_/download.html. الوصول: 9 مارس 2023.
- 1 2 3 4 5 Carpenter، Jeff؛ Hewitt، Eben (2022). Cassandra: The Definitive Guide (ط. 3rd). أوريلي ميديا. ISBN:978-1-4920-9710-5.
- ↑ Casares، Joaquin (5 نوفمبر 2012). "Multi-datacenter Replication in Cassandra". DataStax. مؤرشف من الأصل في 2019-07-16. اطلع عليه بتاريخ 2013-07-25.
Cassandra's innate datacenter concepts are important as they allow multiple workloads to be run across multiple datacenters...
- ↑ "Apache Cassandra Documentation Overview". مؤرشف من الأصل في 2021-04-16. اطلع عليه بتاريخ 2021-01-21.
- ↑ "The meaning behind the name of Apache Cassandra". مؤرشف من الأصل في 2016-11-01. اطلع عليه بتاريخ 2016-07-19.
Apache Cassandra is named after the Greek mythological prophet Cassandra. [...] Because of her beauty Apollo granted her the ability of prophecy. [...] When Cassandra of Troy refused Apollo, he put a curse on her so that all of her and her descendants' predictions would not be believed. [...] Cassandra is the cursed Oracle[.]
- ↑ Hamilton، James (12 يوليو 2008). "Facebook Releases Cassandra as Open Source". مؤرشف من الأصل في 2014-07-06. اطلع عليه بتاريخ 2009-06-04.
- ↑ "Is this the new hotness now?". Mail-archive.com. 2 مارس 2009. مؤرشف من الأصل في 2010-04-25. اطلع عليه بتاريخ 2010-03-29.
- ↑ "Cassandra is an Apache top level project". Mail-archive.com. 18 فبراير 2010. مؤرشف من الأصل في 2010-03-28. اطلع عليه بتاريخ 2010-03-29.
- ↑ DataStax (15 يناير 2013). "About data consistency". مؤرشف من الأصل في 2013-07-26. اطلع عليه بتاريخ 2013-07-25.
- ↑ Ellis، Jonathan (2 مارس 2012). "The Schema Management Renaissance in Cassandra 1.1". DataStax. اطلع عليه بتاريخ 2013-07-25.
- ↑ Ellis، Jonathan (15 فبراير 2012). "Schema in Cassandra 1.1". DataStax. اطلع عليه بتاريخ 2013-07-25.
- ↑ Ellis، Jonathan (3 ديسمبر 2010). "What's new in Cassandra 0.7: Secondary indexes". DataStax. اطلع عليه بتاريخ 2013-07-25.
- ↑ Rodriguez، Alain (27 يوليو 2016). "About Deletes and Tombstones in Cassandra".
- ↑ "DataStax C/C++ Driver for Apache Cassandra". DataStax. اطلع عليه بتاريخ 2014-12-15.
- ↑ "CQL". مؤرشف من الأصل في 2016-01-13. اطلع عليه بتاريخ 2016-01-05.
- ↑ Hayashibara، Naohiro؛ Défago، Xavier؛ Yared، Rami؛ Katayama، Takuya (2004). "The Φ Accrual Failure Detector". IEEE Symposium on Reliable Distributed Systems. ص. 66–78. DOI:10.1109/RELDIS.2004.1353004.
- ↑ "NodeTool". Cassandra Wiki. مؤرشف من الأصل في 2016-01-13. اطلع عليه بتاريخ 2016-01-05.
- ↑ "How to monitor Cassandra performance metrics". Datadog. 3 ديسمبر 2015. اطلع عليه بتاريخ 2016-01-05.
- ↑ "Metrics". Cassandra Wiki. مؤرشف من الأصل في 2015-11-12. اطلع عليه بتاريخ 2016-01-05.
- ↑ "Monitoring". Cassandra Documentation. اطلع عليه بتاريخ 2018-02-01.
- ↑ "Cassandra Server Releases". cassandra.apache.org. اطلع عليه بتاريخ 2015-12-15.