الهدف من تصميم Cassandra هو التعامل مع أعباء عمل البيانات الضخمة عبر عقد متعددة دون أي نقطة فشل واحدة. لدى كاساندرا نظام توزيع نظير إلى نظير عبر العقد nodes الخاصة بها، ويتم توزيع البيانات بين جميع العقد في المجموعة.
تلعب كافة العقد node الموجودة في المجموعة نفس الدور. كل عقدة node مستقلة وفي نفس الوقت مترابطة مع العقد الأخرى.
يمكن لكل عقدة node في المجموعة قبول طلبات القراءة والكتابة، بغض النظر عن مكان وجود البيانات فعليًا في المجموعة.
عندما تتعطل إحدى العقد node، يمكن تقديم طلبات القراءة/الكتابة من العقد الأخرى في الشبكة.
النسخ المتماثل للبيانات Data Replication في كاساندرا
في Cassandra، تعمل واحدة أو أكثر من العقد الموجودة في المجموعة كنسخ متماثلة لجزء معين من البيانات. إذا تم اكتشاف أن بعض العقد استجابت بقيمة قديمة، فسوف تقوم Cassandra بإرجاع القيمة الأحدث إلى العميل. بعد إرجاع القيمة الأحدث، تقوم Cassandra بإجراء إصلاح القراءة في الخلفية لتحديث القيم القديمة.
يوضح الشكل التالي عرضًا تخطيطيًا لكيفية استخدام Cassandra لتكرار البيانات بين العقد في المجموعة لضمان عدم وجود نقطة فشل واحدة.
ملاحظة – تستخدم Cassandra بروتوكول Gossip في الخلفية للسماح للعقد بالتواصل مع بعضها البعض واكتشاف أي عقد معيبة في المجموعة.
مكونات Cassandra
المكونات الرئيسية لكاساندرا هي كما يلي –
العقدة Node – هي المكان الذي يتم فيه تخزين البيانات.
مركز البيانات Data center – عبارة عن مجموعة من العقد ذات الصلة.
المجموعة Cluster – المجموعة عبارة عن مكون يحتوي على مركز بيانات واحد أو أكثر.
سجل الالتزام Commit log – سجل الالتزام عبارة عن آلية لاستعادة الأعطال في Cassandra. تتم كتابة كل عملية كتابة في سجل الالتزام.
جدول الذاكرة Mem-table – جدول الذاكرة عبارة عن بنية بيانات مقيمة في الذاكرة. بعد سجل الالتزام، سيتم كتابة البيانات إلى جدول الذاكرة. في بعض الأحيان، بالنسبة لعائلة ذات عمود واحد، سيكون هناك العديد من جداول الذاكرة.
SSTable – إنه ملف قرص يتم مسح البيانات إليه من جدول الذاكرة عندما تصل محتوياته إلى قيمة العتبة.
مرشح بلوم Bloom filter – هذه ليست سوى خوارزميات سريعة وغير حتمية لاختبار ما إذا كان العنصر عضوًا في مجموعة. إنه نوع خاص من ذاكرة التخزين المؤقت. يتم الوصول إلى مرشحات بلوم بعد كل استعلام.
لغة الإستعلام في Cassandra
يمكن للمستخدمين الوصول إلى Cassandra من خلال عقدها باستخدام لغة استعلام Cassandra (CQL). تعامل CQL قاعدة البيانات (Keyspace) كحاوية للجداول. يستخدم المبرمجون cqlsh: موجه للعمل مع CQL أو برامج تشغيل لغة التطبيق المنفصلة.
يقترب العملاء من أي من العقد لعمليات القراءة والكتابة الخاصة بهم. تقوم هذه العقدة (المنسق) بتشغيل وكيل بين العميل والعقد التي تحتوي على البيانات.
عمليات الكتابة
يتم التقاط كل نشاط كتابة للعقد من خلال سجلات الالتزام المكتوبة في العقد. سيتم لاحقًا التقاط البيانات وتخزينها في جدول الذاكرة. عندما يكون جدول الذاكرة ممتلئًا، سيتم كتابة البيانات في ملف بيانات SStable. يتم تقسيم كافة عمليات الكتابة وتكرارها تلقائيًا عبر المجموعة. تقوم Cassandra بشكل دوري بدمج جداول SSTables، مع التخلص من البيانات غير الضرورية.
عمليات القراءة
أثناء عمليات القراءة، تحصل Cassandra على القيم من جدول الذاكرة وتفحص مرشح الازدهار للعثور على SSTable المناسب الذي يحتوي على البيانات المطلوبة.