Cassandra المجموعات: تعيين وقائمة وخريطة في CQL مع مثال
⚡ ملخص ذكي
Cassandra تُخزّن المجموعات عدة قيم داخل عمود واحد باستخدام أنواع البيانات set وlist وmap. تشرح هذه الصفحة كل نوع، وصيغة CQL لإنشائها وتعبئتها، وكيفية تحديث العناصر، وحدود الحجم التي تحدد متى يكون استخدام المجموعة غير مناسب.

ما هي Cassandra مجموعات؟
Cassandra تعتبر المجموعات طريقة جيدة للتعامل مع المهام. يمكن تخزين عناصر متعددة في مجموعات. هناك قيود في Cassandra مجموعات.
- لا يمكن لعمود المجموعة تخزين أكثر من 64 كيلوبايت من البيانات في قيمة واحدة.
- حافظ على حجم المجموعة صغيرًا لتجنب عبء الاستعلام عن المجموعة، لأنه تتم قراءة المجموعة بأكملها حتى عندما تكون هناك حاجة إلى عنصر واحد فقط.
- تخزين أكثر من 64 كيلوبايت يعني أنه لا يمكن الاستعلام إلا عن أول 64 كيلوبايت، مما يؤدي إلى فقدان البيانات.
- تقتصر المجموعة غير المجمدة على ما يقرب من 65,535 عنصرًا، ويتم قراءة كل عنصر معًا كوحدة واحدة.
تشير هذه القيود إلى قاعدة واحدة: تُناسب المجموعات عددًا محدودًا من السمات المرتبطة بصف، وليس قائمة مفتوحة تتوسع مع الاستخدام. أي شيء يستمر في التوسع يجب أن يُوضع في أعمدة التجميع في جدول خاص به.
انواع من Cassandra المجموعات
هناك ثلاثة أنواع رئيسية من المجموعات التي Cassandra يدعم:
- بكج
- قائمة
- خريطة
Cassandra مجموعة المجموعة
تقوم المجموعة بتخزين مجموعة من العناصر التي تقوم بإرجاع العناصر المصنفة عند الاستعلام.
بناء الجملة
هذا هو بناء جملة مجموعة المجموعات التي تخزن عناوين البريد الإلكتروني المتعددة للمعلم.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
مثال
هذه هي الصورة حيث تم إنشاء الجدول "المعلم" مع عمود "البريد الإلكتروني" كمجموعة.
فيما يلي اللقطة التي يتم فيها إدراج البيانات في المجموعة.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
تتم إضافة العناصر الفردية أو إزالتها دون إعادة كتابة المجموعة بأكملها، وهي الميزة الرئيسية لترك المجموعة غير مجمدة.
UPDATE University.Teacher SET Email = Email + {'new@guru99.com'} WHERE id = 1; UPDATE University.Teacher SET Email = Email - {'xyz@hotmail.com'} WHERE id = 1;
Cassandra مجموعة قائمة
عندما يكون ترتيب العناصر مهمًا، يتم استخدام القائمة.
مثال
فيما يلي لقطة شاشة توضح مكان إضافة عمود "الدورات" من نوع القائمة في جدول "المعلم".
ALTER TABLE University.Teacher ADD coursenames list<text>;
فيما يلي اللقطة التي يتم فيها إدراج البيانات في عمود "أسماء الدورات التدريبية".
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
هذه هي اللقطة التي توضح حالة قاعدة البيانات الحالية بعد الإدراج.
يمكن إضافة العناصر إلى البادئة أو إلحاقها بها، على الرغم من أن الإلحاق بالبادئة والتحديث بواسطة الفهرس يتطلبان Cassandra لقراءة القائمة أولاً، مما يجعلها أبطأ من الإلحاق.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra مجموعة الخرائط
الخريطة هي نوع مجموعة يُستخدم لتخزين أزواج القيمة الأساسية. وكما يوحي اسمها، فهي تربط شيئًا بآخر.
على سبيل المثال، إذا كنت تريد حفظ اسم المقرر الدراسي مع اسم المقرر الدراسي المطلوب مسبقًا، فيمكن استخدام مجموعة الخرائط.
مثال
فيما يلي اللقطة التي يتم فيها إنشاء نوع الخريطة لاسم الدورة التدريبية واسم الدورة التدريبية المطلوبة مسبقًا.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
فيما يلي اللقطة التي يتم فيها إدراج البيانات في نوع مجموعة الخرائط.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
يتم تعيين أو إزالة إدخال واحد دون المساس ببقية الخريطة.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
المجموعة مقابل القائمة مقابل الخريطة: اختيار مجموعة
تبدو الأنواع الثلاثة قابلة للتبديل، لكنها تختلف في ضمانات الطلب وتكلفة التحديث.
| البعد | بكج | قائمة | خريطة |
|---|---|---|---|
| تنظيم | مرتبة حسب القيمة | تم الحفاظ على ترتيب الإدخال | مرتبة حسب المفتاح |
| التكرارات | غير مسموح | مسموح به | مفاتيح فريدة |
| تحديث التكلفة | رخيص، لا يتطلب قراءة | الإلحاق رخيص؛ الإضافة في البداية وتحديث الفهرس يتطلبان قراءة | سعر المفتاح رخيص |
| أفضل ل | الوسوم، عناوين البريد الإلكتروني، التصنيفات الفريدة | الخطوات المرتبة التي تكون فيها التكرارات ذات مغزى | سمات مُسماة بمفاتيح غير متوقعة |
يُفضّل استخدام مجموعة على قائمة إلا إذا كان الترتيب مهمًا حقًا، لأن عمليات فهرسة القوائم تُنشئ علامات حذف وقد تُنتج نتائج غير متوقعة عند الكتابة المتزامنة. إضافة مجمد إلى أي من المخازن الثلاثة كقيمة واحدة غير قابلة للتغيير، مما يسمح للمجموعة بالظهور في مفتاح أساسي ولكنه يزيل التحديثات على مستوى العنصر.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
عندما يتجاوز عدد عناصر المجموعة بضع عشرات، قم بنمذجتها كجدول منفصل مع اعتبار العنصر عمودًا للتجميع، وذلك باتباع النهج المتبع في Cassandra قواعد نموذج البياناتيتطلب تصفية محتويات المجموعة وجود فهرس، وهو ما تم تناوله في إنشاء وحذف الفهرس البرنامج التعليمي.






