إنشاء وإسقاط INDEX في Cassandra
⚡ ملخص ذكي
أنشئ واحذف الفهرس في Cassandra يُمكّن هذا الخيار من تصفية الأعمدة التي لا تُشكّل جزءًا من المفتاح الأساسي. تتناول هذه الصفحة أوامر إنشاء الفهرس وحذفه، وقواعد التسمية، وأنواع الفهارس المتاحة، والحالات التي يكون فيها الفهرس خيارًا غير مناسب.
Cassandra إنشاء فهرس
يقوم الأمر "إنشاء فهرس" بإنشاء فهرس في العمود المحدد من قبل المستخدم. إذا كانت البيانات موجودة بالفعل للعمود الذي تريد فهرسته، Cassandra يقوم بإنشاء فهارس على البيانات أثناء تنفيذ عبارة "إنشاء فهرس".
- بعد إنشاء الفهرس، Cassandra يقوم بفهرسة البيانات الجديدة تلقائيًا عند إدراج البيانات.
- لا يمكن إنشاء الفهرس على المفتاح الأساسي حيث أن المفتاح الأساسي مفهرس بالفعل.
- يتم دعم الفهارس على أعمدة المجموعة، باستخدام نموذج KEYS أو VALUES أو ENTRIES حسب ما يجب البحث عنه.
- بدون فهرسة على العمود ، Cassandra لا يمكن تصفية هذا العمود إلا إذا كان مفتاحًا أساسيًا.
لهذا السبب، لتصفية الأعمدة في Cassandraيجب إنشاء الفهارس.
بناء الجملة
CREATE INDEX IndexName ON KeyspaceName.TableName (ColumnName);
مثال
فيما يلي اللقطة التي تمت فيها محاولة تصفية عمود "القسم" دون إنشاء الفهرس. ردا على ذلك، تم إرجاع الخطأ.
هذه هي اللقطة حيث يتم إنشاء الفهرس في عمود القسم.
CREATE INDEX DeptIndex ON University.Student (dept);
فيما يلي اللقطة التي سيتم فيها تصفية عمود "القسم" بنجاح.
SELECT * FROM University.Student WHERE dept = 'CS';
اسم الفهرس اختياري. حذفه يسمح Cassandra قم بإنشاء واحد تلقائيًا، وهو أمر مهم عندما يتعين حذف الفهرس لاحقًا.
CREATE INDEX IF NOT EXISTS ON University.Student (dept);
Cassandra إسقاط الفهرس
الأمر "إسقاط الفهرس" يسقط الفهرس المحدد. إذا لم يتم تقديم اسم الفهرس أثناء إنشاء الفهرس، فسيكون اسم الفهرس هو TableName_ColumnName_idx.
- إذا لم يكن الفهرس موجودًا، فسيُرجع خطأ ما لم يتم استخدام IF EXISTS فسيُرجع no-op.
- يجب عليك تحديد اسم مساحة المفاتيح مع اسم الفهرس، وإلا سيتم البحث عن الفهرس في مساحة المفاتيح الحالية.
بناء الجملة
DROP INDEX IF EXISTS KeyspaceName.IndexName;
مثال
فيما يلي لقطة للأمر الذي تم تنفيذه "Drop Index" والذي يؤدي إلى إسقاط الفهرس DeptIndex.
DROP INDEX IF EXISTS University.DeptIndex;
بعد تنفيذ الأمر بنجاح، سيتم إسقاط DeptIndex من مساحة المفاتيح. الآن لا يمكن تصفية البيانات حسب قسم العمود.
للتأكد من وجود الفهارس قبل حذفهاping أولاً، صف الجدول واقرأ تعريفات الفهرس في أسفل المخرجات.
DESCRIBE TABLE University.Student;
أنواع الفهارس في Cassandra
يقوم الأمر أعلاه بإنشاء فهرس ثانوي قياسي، ولكن توجد ثلاث آليات متميزة وتتصرف بشكل مختلف تمامًا.
| النوع | كيف يعمل | أفضل ل |
|---|---|---|
| الفهرس الثانوي | كل عقدة تقوم بفهرسة بياناتها المحلية فقط، لذلك يجب على الاستعلام بدون مفتاح تقسيم الاتصال بكل عقدة. | أعمدة ذات عدد عناصر متوسط يتم الاستعلام عنها جنبًا إلى جنب مع مفتاح التقسيم. |
| مؤشر SASI | فهرس مرفق يدعم مطابقة البادئات واللواحق LIKE بالإضافة إلى النطاقات الرقمية. | أنماط البحث النصي. لا تزال هذه الميزة تجريبية، لذا يُرجى اختبارها قبل استخدامها في الإنتاج. |
| فهرس التخزين المرفق (SAI) | قدم في Cassandra 5.0، مشاركة بنية فهرس واحدة عبر الأعمدة مع تقليل الحمل الزائد للكتابة. | البديل الحديث لكليهما أعلاه على Cassandra 5 مجموعات. |
يستخدم فهرسة عمود المجموعة مُعدِّلاً يحدد الجزء المراد فهرسته.
CREATE INDEX ON University.Teacher (VALUES(Email)); CREATE INDEX ON University.Course (KEYS(prereq)); CREATE INDEX ON University.Course (ENTRIES(prereq));
يبحث الأمر VALUES عن عناصر مجموعة أو قائمة، بينما يبحث الأمر KEYS عن مفاتيح الخريطة، ويقوم الأمر ENTRIES بمطابقة زوج من المفتاح والقيمة. سيتم تناول فهرسة المجموعات بمزيد من التفصيل في... Cassandra مجموعات البرنامج التعليمي.
متى لا يُنصح باستخدام الفهرس في Cassandra
يُعدّ الفهرس الثانوي مفيدًا، ولكنه ليس فهرسًا علائقيًا، واستخدامه في غير موضعه الصحيح سبب شائع لبطء التجميع. تتطلب أربع حالات اتباع نهج مختلف.
- عدد كبير جداً. إن فهرسة شيء قريب من أن يكون فريدًا، مثل عنوان البريد الإلكتروني، يعني أن كل قسم تقريبًا يحتوي على صف مطابق واحد، لذلك ينتشر الاستعلام عبر المجموعة بأكملها لإرجاع سجل واحد.
- عدد قليل جداً. يؤدي فهرسة علامة ذات قيمتين مثل نشط أو غير نشط إلى إنتاج أقسام فهرس ضخمة، وقراءة واحدة منها تعيد نصف الجدول.
- أعمدة يتم تحديثها بشكل متكرر. كل تغيير يكتب مدخل فهرس وعلامة حذف للمدخل القديم، لذا فإن تراكم علامات الحذف يؤدي إلى تدهور عمليات القراءة بمرور الوقت.
- الاستعلامات بدون مفتاح تقسيم. وبدون ذلك، يجب على المنسق الاتصال بكل عقدة ودمج النتائج، وهو أمر لا يتناسب مع إضافة العقد.
يتمثل البديل الدائم في جدول ثانٍ مفهرس بالعمود الذي يحتاج إلى البحث، ويتم إنشاؤه في نفس وقت إنشاء الجدول الأول. وهذا يتبع مبدأ الاستعلام أولاً الموضح في Cassandra قواعد نموذج البياناتوهو يحتفظ بكل عملية قراءة في قسم واحد على عقدة واحدة.
كقاعدة عامة، يُناسب الفهرس عمودًا ذا عدد قيم معتدل يتم الاستعلام عنه مع مفتاح تقسيم معروف. أما ما لا ينطبق على ذلك، فيُفضل استخدام جدول مُصمم خصيصًا لهذا الغرض.





