مفتاح المسافة في Cassandraمثال على الإنشاء والتعديل والحذف

⚡ ملخص ذكي

مفتاح المسافة في Cassandra هو حاوية البيانات الخارجية، وهو ما يعادل قاعدة البيانات في النظام العلائقي، ويحدد كيفية تكرار كل جدول بداخله. تتناول هذه الصفحة إنشاء الجداول وتعديلها وحذفها.ping مساحة المفاتيح، بالإضافة إلى خصائصها ومساحات مفاتيح النظام.

  • 🗄️ التعريف الأساسي: تحتوي مساحة المفاتيح على الجداول والفهارس والأنواع المعرفة من قبل المستخدم، وتخزن إعدادات النسخ المتماثل التي ترثها جميعها.
  • 🧭 اختيار الاستراتيجية: تناسب استراتيجية SimpleStrategy مركز بيانات واحد؛ بينما تحدد استراتيجية NetworkTopologyStrategy عامل تكرار لكل مركز بيانات.
  • 🔢 عامل النسخ: ثلاث نسخ متماثلة هي الإعداد القياسي للإنتاج، لأنها تصمد في حالة فشل عقدة واحدة في نظام QUORUM.
  • ✏️ تغيير الحدود: يمكن تغيير الاستراتيجية وعامل النسخ وكتابات البيانات الدائمة؛ أما اسم مساحة المفاتيح فلا يمكن تغييره.
  • 💾 كتابة متينة: يؤدي ضبط هذا الخيار على "خطأ" إلى تخطي سجل الالتزام، مما يضحي بسلامة البيانات في حالة الأعطال مقابل سرعة الكتابة.
  • 🗑️ سلوك الإسقاط: قطرةping يقوم بحذف جميع الجداول والفهارس، بعد ذلك Cassandra يلتقط لقطة تلقائية.

Cassandra إنشاء نسخة احتياطية في مساحة المفاتيح

ما هو Keyspace في Cassandra?

مساحة المفاتيح في Cassandra هو حاوية بيانات، تشبه قاعدة البيانات في أنظمة إدارة قواعد البيانات العلائقية (RDBMS). Cassandra تحدد Keyspace كيفية نسخ البيانات على العقد.

بما أن عملية النسخ تُحدد على مستوى مساحة المفاتيح وليس على مستوى الجداول الفردية، فإن كل جدول يُنشأ داخلها يرث نفس الاستراتيجية ومعامل النسخ. وهذا يجعل مساحة المفاتيح هي القرار الأول في أي مخطط.

كيفية إنشاء مساحة المفاتيح في Cassandra

مساحة المفاتيح هي كائن يحتوي على عائلات الأعمدة والأنواع التي يحددها المستخدم. في Cassandra، مساحة المفاتيح مشابهة لـ RDBMS قاعدة البيانات. تحتوي Keyspace على عائلات الأعمدة والفهارس والأنواع المحددة من قبل المستخدم والوعي بمركز البيانات والاستراتيجية المستخدمة في keyspace وعامل النسخ وما إلى ذلك.

يأمر "إنشاء مساحة المفاتيح"يتم استخدامه لإنشاء مساحة مفاتيح في Cassandra.

بناء الجملة

CREATE KEYSPACE KeyspaceName WITH replication = {
    'class': 'StrategyName',
    'replication_factor': 3
};

مكونات مختلفة من Cassandra مفتاح

  • الإستراتيجيات: أثناء الإعلان عن اسم الإستراتيجية في Cassandra. هناك نوعان من الاستراتيجيات المعلنة في Cassandra بناء الجملة.
  1. استراتيجية بسيطة:تستخدم الإستراتيجية البسيطة عندما يكون لديك مركز بيانات واحد فقط. في هذه الإستراتيجية، يتم وضع النسخة المتماثلة الأولى على العقدة التي حددها المقسم. يتم وضع العقد المتبقية في اتجاه عقارب الساعة في الحلقة دون مراعاة موقع الرف أو العقدة.
  2. استراتيجية طوبولوجيا الشبكة:تستخدم استراتيجية طوبولوجيا الشبكة عندما يكون لديك أكثر من مركز بيانات. في هذه الاستراتيجية، عليك توفير عامل تكرار لكل مركز بيانات على حدة. تضع استراتيجية طوبولوجيا الشبكة النسخ المتماثلة في العقد في اتجاه عقارب الساعة في نفس مركز البيانات. تحاول هذه الاستراتيجية وضع النسخ المتماثلة في رفوف مختلفة.
  • عامل النسخ: عامل النسخ هو عدد النسخ المتماثلة للبيانات الموضوعة على العقد المختلفة. لعدم وجود فشل، 3 هو عامل النسخ الجيد. أكثر من عاملي تكرار يضمن عدم وجود نقطة فشل واحدة. في بعض الأحيان، يمكن أن يكون الخادم معطلاً، أو يمكن أن تحدث مشكلة في الشبكة، ثم توفر النسخ المتماثلة الأخرى الخدمة دون أي فشل.
  • على سبيل المثال: فيما يلي لقطة للأمر الذي تم تنفيذه "إنشاء مساحة مفتاحية" والذي سيؤدي إلى إنشاء مساحة مفاتيح فيها Cassandra.

إنشاء مساحة المفاتيح في Cassandra

CREATE KEYSPACE University WITH replication = {
    'class': 'SimpleStrategy',
    'replication_factor': 3
};

بعد التنفيذ الناجح للأمر "إنشاء Keyspace"، سيتم إنشاء جامعة Keyspace في Cassandra باستخدام الاستراتيجية "SimpleStrategy" وعامل النسخ 3. لاحظ أنه يجب وضع اسم الاستراتيجية بين علامتي اقتباس؛ سيتم رفض القيمة غير المقتبسة باعتبارها خطأ في بناء الجملة.

تغيير مساحة المفاتيح Cassandra

يغير الأمر "Alter Keyspace" عامل النسخ المتماثل واسم الإستراتيجية وخصائص الكتابة الدائمة في مساحة المفاتيح التي تم إنشاؤها فيها Cassandra.

بناء الجملة

ALTER KEYSPACE KeyspaceName WITH replication = {
    'class': 'StrategyName',
    'replication_factor': 3
}
AND DURABLE_WRITES = true;

الجوانب الرئيسية أثناء تغيير Keyspace في Cassandra

  • اسم مساحة المفاتيح: لا يمكن تغيير اسم مساحة المفاتيح Cassandra.
  • اسم الإستراتيجية: يمكن تغيير اسم الإستراتيجية عن طريق تحديد اسم إستراتيجية جديد.
  • عامل النسخ المتماثل: يمكن تغيير عامل النسخ المتماثل عن طريق تحديد عامل النسخ المتماثل الجديد.
  • DURABLE_WRITES: يمكن تغيير قيمة DURABLE_WRITES بتحديدها إما true أو false. القيمة الافتراضية هي true. إذا تم تعيينها إلى false، فلن تُكتب أي تحديثات في سجل الالتزامات، والعكس صحيح.
  • التنفيذ: إليك لقطة للأمر الذي تم تنفيذه "Alter Keyspace" والذي يغير إستراتيجية keyspace من "SimpleStrategy" إلى "NetworkTopologyStrategy" وعامل النسخ من 3 إلى 1 لـ DataCenter1.

تغيير مساحة المفاتيح Cassandra

ALTER KEYSPACE University WITH replication = {
    'class': 'NetworkTopologyStrategy',
    'DataCenter1': 1
};

بعد التنفيذ الناجح للأمر "Alter Keyspace"، سيتم تغيير اسم الاستراتيجية من "SimpleStrategy" إلى "NetworkTopologyStrategy" وسيتم تغيير عامل النسخ من 3 إلى 1 لـ "DataCenter1".

هام: لا يؤدي رفع عامل النسخ إلى نسخ البيانات الموجودة تلقائيًا. قم بتشغيل إصلاح أداة نوديتوول على مساحة المفاتيح المتأثرة بعد ذلك، وإلا ستظل النسخ المتماثلة الجديدة فارغة حتى يحدث إصلاح قراءة يمس كل صف.

Cassandra إسقاط مساحة المفاتيح

يأمر 'إسقاط مساحة المفاتيحيسقط مساحة المفاتيح بما في ذلك جميع البيانات وعائلات الأعمدة والأنواع والفهارس المحددة من قبل المستخدم Cassandraقبل السقوطping مساحة المفاتيح، Cassandra يأخذ لقطة من مساحة المفاتيح. إذا كانت مساحة المفاتيح غير موجودة في ملف Cassandra, Cassandra سيُرجع خطأ ما لم يتم استخدام IF EXISTS.

بناء الجملة

DROP KEYSPACE IF EXISTS KeyspaceName;

مثال

فيما يلي لقطة للأمر الذي تم تنفيذه "Drop Keyspace" والذي سيؤدي إلى إسقاط جامعة keyspace.

Cassandra إسقاط مساحة المفاتيح

DROP KEYSPACE University;

بعد التنفيذ الناجح للأمر "Drop keyspace University"، سيتم إسقاط جامعة keyspace من Cassandra مع كافة البيانات والمخطط.

فيما يلي اللقطة التي يظهر فيها الخطأ عند محاولة الوصول إلى مساحة المفاتيح غير الموجودة.

Cassandra إسقاط مساحة المفاتيح

ملاحظات: لا يوجد فرق في إسقاط مساحة المفاتيح وحذف مساحة المفاتيح. إسقاط مساحة المفاتيح يساوي حذف مساحة المفاتيح.

خصائص مساحة المفاتيح ومساحات مفاتيح النظام

ما وراء الإنشاء والإسقاطpingتغطي ثلاثة أوامر تقريبًا جميع أعمال مساحة المفاتيح اليومية في cqlsh.

DESCRIBE KEYSPACES;
DESCRIBE KEYSPACE University;
USE University;

يعرض الأمر الأول كل مساحة مفاتيح على المجموعة، ويطبع الأمر الثاني المخطط الكامل لمساحة مفاتيح واحدة بما في ذلك جداولها، ويقوم الأمر الثالث بتعيين مساحة المفاتيح الحالية بحيث لا تحتاج أسماء الجداول إلى بادئة.

إلى جانب مساحات مفاتيح المستخدم، Cassandra تحتوي على العديد من الميزات الخاصة بها. تظهر هذه الميزات في مخرجات الأمر DESCRIBE KEYSPACES، ومن الأفضل التعرف عليها بدلاً من حذفها.

  • النظام: حالة العقدة المحلية، بما في ذلك نطاقات الرموز الخاصة بها والنظراء الذين تعرفهم.
  • مخطط النظام: تعريفات كل مساحة مفتاح، وجدول، وعمود، وفهرس على المجموعة.
  • system_auth: الأدوار والأذونات وبيانات الاعتماد عند تمكين المصادقة.
  • system_distributed: سجل الإصلاحات وغيرها من السجلات على مستوى المجموعةping.
  • نظام_tracهو: سؤال tracتم التقاطها عندما tracتم تشغيل ing.

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

أخطاء شائعة في مساحة المفاتيح وحلولها

معظم حالات فشل مساحة المفاتيح تُنتج رسالة قصيرة يمكن التعرف عليها.

خطأ السبب والحل
مساحة مفاتيح غير معروفة لم يتم تحديد أي مساحة مفاتيح. قم بتشغيل الأمر USE KeyspaceName، أو أضف البادئة Keyspace.Table إلى الجدول.
خطأ في بناء الجملة في 'SimpleStrategy' اسم الاستراتيجية غير مُحاط بعلامات اقتباس. اكتب 'class': 'SimpleStrategy' مع علامات اقتباس.
خيار استراتيجية غير معروف {replication_factor} تم استخدام عامل النسخ المتماثل مع استراتيجية طوبولوجيا الشبكة. وتعتمد هذه الاستراتيجية على عامل لكل اسم مركز بيانات بدلاً من ذلك.
لا يمكن إضافة مساحة مفاتيح موجودة مساحة المفاتيح موجودة بالفعل. أضف شرط "إذا لم تكن موجودة"، أو احذف المساحة القديمة أولاً.
البيانات مفقودة بعد رفع عامل التكرار متوقع. قم بتشغيل أداة إصلاح العقدة على مساحة المفاتيح حتى يتم ملء النسخ المتماثلة الجديدة.

بمجرد إنشاء مساحة المفاتيح، تتمثل الخطوة التالية في تحديد مساحة التخزين داخلها، وهو ما تم تناوله في Cassandra جدول البرنامج التعليمي.

الأسئلة الشائعة

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

نعم، إذا تم تمكين خاصية اللقطة التلقائية. Cassandra يكتب لقطة قبل الحذفpingلذلك يمكن استعادة جداول SSTables باستخدام sstableloader بعد إعادة إنشاء المخطط.

يُستخدم فقط للبيانات التي يمكن إعادة إنشائها، مثل ذاكرة التخزين المؤقت أو التحليلات المشتقة. تخطيping يعني سجل الالتزام أن عمليات الكتابة التي لا تزال موجودة في جدول الذاكرة ستفقد إذا توقفت العقدة بشكل غير متوقع.

بناءً على تصميم مركز البيانات ومستوى التوافر المستهدف، يمكن للذكاء الاصطناعي اقتراح استراتيجية وعوامل لكل مركز. تأكد من أسماء مراكز البيانات باستخدام حالة أداة العقدة، لأن أي خطأ إملائي قد يؤدي إلى نقص في النسخ.

يتعامل البرنامج مع الصيغة الروتينية بكفاءة، ولكنه غالباً ما ينقل عادات علائقية، مثل أسماء الاستراتيجيات غير المقتبسة أو المفاتيح الخارجية. لذا، يُنصح بتشغيل كل نص برمجي مُنشأ على مساحة مفاتيح اختبارية أولاً.

تلخيص هذه التدوينة بـ: