Cassandra نموذج البيانات مع مثال قاعدة بيانات بسيطة
بالرغم ان Cassandra لغة الاستعلام تشبه SQL اللغة، وأساليب نمذجة البيانات الخاصة بهم مختلفة تماما.
In Cassandraيمكن أن يؤدي نموذج البيانات السيئ إلى تدهور الأداء، وخاصةً عندما يحاول المستخدمون تنفيذ مفاهيم RDBMS على Cassandra. من الأفضل أن تضع في اعتبارك بعض القواعد المفصلة أدناه.
Cassandra قواعد نموذج البيانات
In Cassandra، يكتب ليست باهظة الثمن. Cassandra لا يدعم عمليات الانضمام، أو التجميع حسب، أو عبارة OR، أو التجميعات، وما إلى ذلك. لذلك يتعين عليك تخزين بياناتك بطريقة تجعلها قابلة للاسترجاع بالكامل. لذلك يجب أن توضع هذه القواعد في الاعتبار أثناء نمذجة البيانات Cassandra.
تعظيم عدد الكتابات
In Cassandra، الكتابة رخيصة جدًا. Cassandra تم تحسينه لأداء الكتابة العالي. لذا حاول تعظيم ما تكتبه للحصول على أداء أفضل للقراءة وتوافر البيانات. هناك مقايضة بين كتابة البيانات وقراءة البيانات. لذلك، قم بتحسين أداء قراءة البيانات من خلال زيادة عدد البيانات المكتوبة.
تعظيم تكرار البيانات
إن عدم تسوية البيانات وتكرار البيانات أمر واقع Cassandra. مساحة القرص ليست أكثر تكلفة من الذاكرة ومعالجة وحدة المعالجة المركزية وتشغيل عمليات الإدخال والإخراج. Cassandra هي قاعدة بيانات موزعة، لذا فإن تكرار البيانات يوفر توفرًا فوريًا للبيانات ولا توجد نقطة فشل واحدة.
Cassandra أهداف نمذجة البيانات
يجب أن يكون لديك الأهداف التالية أثناء نمذجة البيانات في Cassandra:
نشر البيانات بالتساوي حول Cluster
تريد كمية متساوية من البيانات على كل عقدة Cassandra Clusterيتم توزيع البيانات على العقد المختلفة بناءً على مفاتيح التقسيم التي تشكل الجزء الأول من المفتاح الأساسي. لذا، حاول اختيار الأعداد الصحيحة كمفتاح أساسي لتوزيع البيانات بالتساوي في جميع أنحاء المجموعة.
تقليل عدد الأقسام المقروءة أثناء الاستعلام عن البيانات
القسم عبارة عن مجموعة من السجلات التي لها نفس مفتاح القسم. عند إصدار استعلام القراءة، فإنه يجمع البيانات من عقد مختلفة من أقسام مختلفة.
إذا كان هناك العديد من الأقسام، فيجب زيارة جميع هذه الأقسام لتجميع بيانات الاستعلام.
وهذا لا يعني أنه لا ينبغي إنشاء الأقسام. إذا كانت بياناتك كبيرة جدًا، فلن تتمكن من الاحتفاظ بهذه الكمية الضخمة من البيانات على قسم واحد. سيتم إبطاء القسم الفردي.
لذا حاول اختيار عدد متوازن من الأقسام.
مفتاح أساسي جيد في Cassandra
لنأخذ مثالاً ونكتشف أي مفتاح أساسي هو الأفضل.
هنا هو الجدول MusicPlaylist.
Create table MusicPlaylist ( SongId int, SongName text, Year int, Singer text, Primary key(SongId, SongName) );
في المثال أعلاه، جدول MusicPlaylist،
- Songid هو مفتاح القسم، و
- SongName هو عمود التجميع
- سيتم تجميع البيانات على أساس SongName. سيتم إنشاء قسم واحد فقط باستخدام SongId. لن يكون هناك أي قسم آخر في جدول MusicPlaylist.
سيكون استرداد البيانات بطيئًا بواسطة نموذج البيانات هذا بسبب المفتاح الأساسي السيئ.
هنا قائمة تشغيل موسيقى أخرى.
Create table MusicPlaylist ( SongId int, SongName text, Year int, Singer text, Primary key((SongId, Year), SongName) );
في المثال أعلاه، جدول MusicPlaylist،
- Songid وYear هما مفتاح القسم، و
- SongName هو عمود التجميع.
- سيتم تجميع البيانات على أساس SongName. في هذا الجدول، سيتم إنشاء قسم جديد كل عام. ستكون جميع أغاني العام على نفس العقدة. سيكون هذا المفتاح الأساسي مفيدًا جدًا للبيانات.
سيكون استرجاع البيانات لدينا سريعًا من خلال نموذج البيانات هذا.
نموذج بياناتك في Cassandra
ينبغي أن تؤخذ الأمور التالية في الاعتبار أثناء نمذجة استعلاماتك:
حدد الاستعلامات التي تريد دعمها
أولاً، حدد الاستعلامات التي تريدها.
على سبيل المثال، هل تحتاج؟
- ينضم
- مجموعة من
- التصفية على أي عمود وما إلى ذلك.
إنشاء جدول وفقا لاستفساراتك
إنشاء جدول وفقا لاستفساراتك. قم بإنشاء جدول يلبي استفساراتك. حاول إنشاء جدول بحيث يلزم قراءة أقل عدد ممكن من الأقسام.
التعامل مع العلاقة الفردية في Cassandra
العلاقة واحد لواحد تعني أن هناك جدولين لهما تطابق واحد لواحد. على سبيل المثال، يمكن للطالب تسجيل مقرر دراسي واحد فقط، وأريد البحث عن الطالب في أي مقرر تم تسجيل طالب معين فيه.
لذا في هذه الحالة، يجب أن يشتمل مخطط الجدول الخاص بك على جميع تفاصيل الطالب المقابلة لتلك الدورة التدريبية المعينة مثل اسم الدورة، ورقم قيد الطالب، واسم الطالب، وما إلى ذلك.
Create table Student_Course ( Student rollno int primary key, Student_name text, Course_name text, );
التعامل مع علاقة واحدة لكثيرة في Cassandra
العلاقات من واحد إلى العديد تعني وجود واحد إلى العديد من المراسلات بين جدولين.
على سبيل المثال، يمكن دراسة الدورة من قبل العديد من الطلاب. أريد البحث عن جميع الطلاب الذين يدرسون مقررًا معينًا.
ومن خلال الاستعلام عن اسم المقرر، سيكون لدي العديد من أسماء الطلاب الذين سيدرسون مقررًا معينًا.
Create table Student_Course ( Student_rollno int, Student_name text, Course_name text, );
يمكنني استرجاع جميع الطلاب لدورة معينة عن طريق الاستعلام التالي.
Select * from Student_Course where Course_name='Course Name';
التعامل مع العديد من العلاقات في Cassandra
تعني العلاقات من كثير إلى كثير وجود العديد من المراسلات بين جدولين.
على سبيل المثال، يمكن دراسة مقرر دراسي من قبل العديد من الطلاب، ويمكن للطالب أيضًا دراسة العديد من المقررات.
أريد البحث عن جميع الطلاب الذين يدرسون مقررًا معينًا. وأريد أيضًا البحث في جميع المقررات الدراسية التي يدرسها طالب معين.
لذلك في هذه الحالة، سيكون لدي جدولين، أي تقسيم المشكلة إلى حالتين.
أولاً، سأقوم بإنشاء جدول يمكنك من خلاله العثور على الدورات التدريبية لطالب معين.
Create table Student_Course ( Student_rollno int primary key, Student_name text, Course_name text, );
أستطيع العثور على جميع الدورات التي يدرسها طالب معين عن طريق الاستعلام التالي.
Select * from Student_Course where student_rollno=rollno;
ثانيًا، سأقوم بإنشاء جدول يمكنك من خلاله معرفة عدد الطلاب الذين يدرسون مقررًا معينًا.
Create table Course_Student ( Course_name text primary key, Student_name text, student_rollno int );
يمكنني العثور على طالب في دورة معينة عن طريق الاستعلام التالي.
Select * from Course_Student where Course_name=CourseName;
الفرق بين RDBMS و Cassandra نمذجة البيانات
RDBMS | Cassandra |
---|---|
يخزن البيانات في شكل طبيعي | يخزن البيانات في شكل غير طبيعي |
نظام إدارة قواعد البيانات القديم؛ البيانات المنظمة | متجر واسع الصف، ديناميكي؛ البيانات المنظمة وغير المنظمة |
الملخص
- نمذجة البيانات في Cassandra يختلف عن غيرها قواعد بيانات RDBMS.
- Cassandra نمذجة البيانات لديها بعض القواعد. يجب اتباع هذه القواعد لنمذجة البيانات الجيدة. إلى جانب هذه القواعد، رأينا ثلاث حالات مختلفة لنمذجة البيانات وكيفية التعامل معها.
- العلاقة واحد لواحد تعني أن هناك جدولين لهما تطابق واحد لواحد.
- العلاقات من واحد إلى العديد تعني وجود واحد إلى العديد من المراسلات بين جدولين.
- تعني العلاقات من كثير إلى كثير وجود العديد من المراسلات بين جدولين.