أهلاً. مرحبًا بكم في الدرس 1 ،
هذه مقدمة لنمذجة البيانات. في هذا الدرس ، سوف تفهم نقاط القوة والضعف في الأنواع المختلفة من قواعد البيانات العلائقية وقواعد البيانات غير العلائقية ، وأساسيات نمذجة البيانات لكلا النوعين من قواعد البيانات.
اسمي أماندا موران ، وسأكون معلمك في هذه الدورة.
خلال هذه الدروس ، سأقدم لك مفهوم نمذجة البيانات وكيف يمكنك استخدامها لتنظيم بياناتك التي يمكن لمؤسستك الاستعلام عنها واستخدامها بسهولة.
لذا قبل أن نبدأ ، أردت فقط أن أخبركم قليلاً عن نفسي.
أنا حاصل على بكالوريوس علوم في علم الأحياء من جامعة واشنطن وماجستير في علوم وهندسة الكمبيوتر من جامعة سانتا كلارا.
عملت كمهندس برمجيات في HP و SGEN و Luckheed Martin و Teradata على ثلاث قواعد بيانات موزعة مختلفة.
أنا ملتزم في Apache وأنا عضو في لجنة إدارة المشروع لمشروع مفتوح المصدر يسمى Apache travodia.
بالنسبة لمكدسات البيانات ، أنا مطور محامي.
Developer Advocate هو مهندس برمجيات يقع في الطبقة الوسطى بين مؤسستنا الهندسية الداخلية ومستخدمينا ومطورينا وعملائنا
قبل أن نبدأ في الغوص في Postgres و Apache Cassandra ، دعنا جميعًا نتطرق إلى نفس الصفحة فيما يتعلق بالضبط بنمذجة البيانات. تتمحور نمذجة البيانات على مستوى عالٍ حول التجريد الذي ينظم عناصر البيانات وكيفية ارتباطها ببعضها البعض. لقد اعتدنا جميعًا على جداول البيانات والطريقة التي يتم بها تنظيم البيانات بهذه الطريقة. من لم يقم بعمل جدول بيانات لتنظيم فواتير منزله أو التخطيط لرحلة؟ فكر في العملية التي مررت بها لإنشاء المجموعة الأولى من الصفوف والأعمدة. هذا هو نمذجة البيانات. عملية تكوين نماذج البيانات لنظام المعلومات. يمكن ترجمة نمذجة البيانات بسهولة إلى نمذجة قاعدة البيانات ، لأن هذه هي الحالة النهائية الأساسية. يمكن اعتبار نمذجة البيانات عملية مجردة. ولكن مع استمرار عملية إنشاء نماذج البيانات ، ستبدأ في نمذجة البيانات لنظام إعلامي معين. يمكن تسمية نمذجة البيانات بسهولة بنمذجة قاعدة البيانات ، حيث ستكون هذه هي حالتك النهائية أو موطن بياناتك. تتمثل عملية نمذجة البيانات في تنظيم البيانات في نظام قاعدة بيانات لضمان استمرار بياناتك وسهولة استخدامها في مؤسستك. نمذجة البيانات هي عملية لدعم كل من عملك وتطبيقات المستخدم الخاصة بك. دعونا نناقش الفرق بين هذين الحاجتين. لنفترض أننا امتلكنا متجرًا عبر الإنترنت ، فسنحتاج إلى تخزين هذه البيانات حتى نتمكن من فهم كمية المخزون الذي قمنا ببيعه من عنصر معين.
هذه عملية تجارية ، وسنحتاج أيضًا إلى تخزين معلومات حول عملائنا أثناء قيامهم بتسجيل الدخول إلى موقعنا على الويب ، وهو تطبيق مستخدم.
لبدء عملية نمذجة البيانات ، يجب على الفريق جمع المتطلبات من فريق التطبيق ومستخدمي الأعمال والمستخدمين النهائيين لدينا لفهم أنه يجب الاحتفاظ بالبيانات وتقديمها كعمل تجاري أو كمستخدم نهائي. نحتاج أولاً إلى تحديد أنه يجب تخزين بياناتنا واستمرارها وكيف سترتبط هذه البيانات ببعضها البعض. بعد ذلك نريد التركيز على نمذجة البيانات المفاهيمية. تبدأ عملية أو عملية القيام بنمذجة البيانات الفعلية بنمذجة البيانات المفاهيمية مع تعيين الكيانات. يمكن القيام بذلك يدويًا أو باستخدام العديد من الأدوات للقيام بهذا العمل. نمذجة البيانات المفاهيمية كما تبدو. هذا هو تعيين مفاهيم البيانات التي لديك أو ستكون لديك. مرة أخرى ، فكر في جداول بيانات Excel التي قمت بإنشائها في الماضي. اللحظة التي تقوم فيها بتدوين بعض الملاحظات والعناوين لاستدعاء الأعمدة الخاصة بك ، تشبه نمذجة البيانات المفاهيمية. فكر في هذا كجلسة بيضاء عملاقة مع جميع أعضاء فريقك. سيتم تنظيم العلاقة بين بياناتك في هذه العملية. فكر في متجرنا على الإنترنت. يمكننا أن نتخيل وجود صندوق عميل متصل بصندوق المبيعات الخاص بنا ومتصل بصندوق المخزون الخاص بنا. هنا ، عندما أقول مربع ، فأنا أشير حقًا إلى شيء مثل هذا ، هذا رسم تخطيطي لكيان. التالي سيكون القيام بنمذجة البيانات المنطقية. من نمذجة البيانات المنطقية الخاصة بهم تتم حيث يتم تعيين النماذج السياقية إلى النماذج المنطقية باستخدام مفهوم الجداول والمخططات والأعمدة. الآن علينا أن نبدأ في التفكير بشكل عملي أكثر وننقل تلك الصناديق والأسهم التي رسمناها على السبورة البيضاء إلى الجداول ذات الأعمدة.
دعونا نفكر في الصندوق الذي أنشأناه لعملائنا. بطبيعة الحال ، سيكون لكل جدول عميل أعمدة مثل الاسم والعنوان ورقم الهاتف. من هناك ، يتم إجراء نمذجة البيانات المادية لتحويل نموذج البيانات المنطقي إلى لغة تعريف بيانات قواعد البيانات أو DDL ، لتتمكن من إنشاء قواعد البيانات والجداول والمخططات. الآن نحن بحاجة إلى البدء في كتابة التعليمات البرمجية. سنقوم بكتابة DDLs الخاصة بنا لإنشاء جداول بطريقة تفهمها قاعدة البيانات. كل قاعدة بيانات تفعل ذلك بنسبة 99 بالمائة تقريبًا ، ولكن دائمًا مع بعض التعديلات. ستحتاج إلى Google عند العمل مع قاعدة بيانات جديدة. إذن DDL ، مرة أخرى ، هذا التعريف هو لغة تعريف البيانات. في هذه الدورة ، سنركز على نموذج البيانات المادية لإنشاء DDLs في قواعد البيانات العلائقية وغير العلائقية. سنركز على الجمع بين نمذجة البيانات البيولوجية والفيزيائية في هذه الفئة ، مع كل من Postgres و Apache Cassandra.
والآن بعد أن فهمنا ماهية نمذجة البيانات ، فلنتحدث عن سبب أهمية نمذجة البيانات. لذا فإن تنظيم البيانات أمر بالغ الأهمية. لذا فإن تنظيم بياناتك لتطبيقاتك أمر بالغ الأهمية
مهم. يحدد تنظيم البيانات استخدام البيانات لاحقًا. يعد وجود نموذج بيانات منظم ومدروس جيدًا أمرًا بالغ الأهمية لكيفية استخدام هذه البيانات لاحقًا. قد تصبح الاستعلامات التي كان من الممكن أن تكون مباشرة وبسيطة استعلامات معقدة إذا لم تكن نمذجة البيانات مدروسة جيدًا. لا ترغب في القيام بربط على أربعة جداول فقط للحصول على بريد إلكتروني للعميل عندما يكون من السهل إضافة هذا العمود إلى جدول العملاء الخاص بي. هذا مجرد مثال بسيط لمحاولة جعلك تفكر في الطريقة التي نريد بها التأكد من أن استفساراتنا بسيطة ومباشرة قدر الإمكان. بعد ذلك ، ابدأ قبل إنشاء التطبيقات ونماذج الأعمال والنماذج التحليلية.
لذلك تبدأ عملية نمذجة البيانات قبل إنشاء التطبيقات ومنطق الأعمال والنماذج التحليلية. إنها بالتأكيد عملية تكرارية. لذا فأنت تريد التأكد من أن نمذجة بيانات البداية الخاصة بك في وقت مبكر مع نصف مؤسستك ، فمن المحتمل ألا يكون ذلك شيئًا يمكنك القيام به بمفردك لتكون ناجحًا. هذا ليس شيئًا تريد تركه حتى اللحظة الأخيرة. مرة أخرى ، إنها عملية تكرارية. سوف تساعد المرونة كلما توفرت معلومات جديدة. ربما ستحتاج إلى إضافة عمود إلى جدول لم تكن تتوقعه. ربما ترغب في إضافة عمود إلى جدول العملاء أو إنشاء جدول جديد يركز على العملاء الجدد.
لقد تحدثنا عن ماذا ولماذا ، والآن دعونا نتحدث عن من ، ولا أعني الفرقة. من يقوم بنمذجة البيانات؟
نمذجة البيانات هي مهارة مهمة. إنه مهم لعلماء البيانات ومهندسي البرمجيات ومهندسي البيانات. أي شخص يشارك في عملية استخدام البيانات وتحليلها. لذلك حقًا ، الجميع. إذا كنت ستعمل مع البيانات ، فأنت تريد أن يكون لديك أساسيات نمذجة البيانات في مجموعة الأدوات الخاصة بك.
لذلك دعونا نتحدث قليلاً عن قواعد البيانات العلائقية و NoSQL. لقد تحدثنا عن من وماذا ولماذا نمذجة البيانات. لنبدأ الآن في التركيز على كيفية القيام بذلك لكل نوع من قواعد البيانات. تقوم قواعد البيانات العلائقية وغير العلائقية بنمذجة البيانات بشكل مختلف ، ومن خلال التعرف على الفرق بين هذين النوعين من قواعد البيانات ، سوف نتعلم لماذا يتعين علينا اتباع أساليب مختلفة لنمذجة البيانات. لذلك دعونا نركز أولاً على قواعد البيانات العلائقية.
النموذج العلائقي. ينظم هذا النموذج البيانات في جدول واحد أو أكثر أو علاقات أعمدة وصفوف بمفتاح فريد يحدد كل صف. بشكل عام ، يمثل كل جدول نوع كيان واحد مثل عميلك ، منتجك ، فكر على هذا المنوال.
إذن لدينا هنا مجرد مثال. هنا هو مجموعتنا أو صفنا ،
لدينا السمة أو العمود ، ثم يسمى الأمر برمته علاقة أو جدول. إذن ، على مستوى أساسي للغاية ، فإن الجدول عبارة عن مجموعة من الصفوف والأعمدة. قاعدة البيانات العلائقية هي قاعدة بيانات رقمية تعتمد على النموذج العلائقي للبيانات. نظام برمجيات يستخدم للصيانة
قواعد البيانات العلائقية هي نظام إدارة قواعد البيانات العلائقية أو RDBMS. تم اختراع النموذج العلائقي وقاعدة البيانات الارتباطية في شركة IBM و Edgar Codd في أواخر الستينيات وأوائل السبعينيات.
إنها قاعدة بيانات رقمية تم تصميمها على غرار النموذج العلائقي للبيانات.
يشار إلى نظام البرنامج للحفاظ على قاعدة بيانات علائقية باسم RDBMS. إذن مجرد ملاحظة هنا ، سوف تسمع هذا المصطلح كثيرًا. لذا كن على دراية بهذا الاختصار ، والذي يمثل مرة أخرى نظام إدارة قواعد البيانات العلائقية. لذا فإن SQL أو لغة الاستعلام الهيكلية هي اللغة المستخدمة في جميع أنظمة قواعد البيانات العلائقية تقريبًا للاستعلام عن قاعدة البيانات وصيانتها. لذا فإن SQL هي لغة ستستخدمها للتفاعل مع قاعدة البيانات. لذلك بعض الأنواع الشائعة من قواعد البيانات العلائقية. لقد أدرجت هنا عددًا قليلاً جدًا وهناك الكثير ، ولكن إليك بعض النقاط البارزة.
لدينا Oracle و Teradata و MySql و Postgres ، والتي سنستخدمها في هذه الدورة التدريبية و Sqlite. لقد طلبت هذه الأشياء تقريبًا بترتيب جاهزية إنتاج المؤسسة. يتم استخدام Oracle من قبل كل مؤسسة تقريبًا كنظام الحقيقة الخاص بها الذي يتعامل مع معاملات الأصول ، والمزيد حول هذا لاحقًا. تعمل الأنظمة المصرفية وما إلى ذلك على Oracle. في المقابل ، فإن Sqlite هي قاعدة بيانات بتنسيق ملف ، وتستخدم بشكل عام في تطوير مهام بسيطة للغاية في أحد التطبيقات. لذا دعنا نواصل على الأساسيات. تسمى قاعدة البيانات ، أو في بعض أنظمة قواعد البيانات بالمخطط ،
عبارة عن مجموعة من الجداول. الجدول أو العلاقة عبارة عن مجموعة من الصفوف تشترك في نفس العناصر أو الأعمدة المسماة. إذن لدينا هنا قاعدة البيانات والمخطط ، مرة أخرى مجموعة من الجداول ، أو الجداول أو العلاقة عبارة عن مجموعة من الصفوف تشترك في نفس العناصر المسماة. لذلك دعونا نلقي نظرة على طاولة العملاء لدينا هنا. إذاً جدول العملاء لدينا ، في هذه الحالة ، هو طاولة ، لذا فمن المحتمل أنها تعيش في الداخل ، وتوجد في قاعدة بيانات. لذلك فهو يحتوي على مجموعة متنوعة من الأعمدة والاسم والبريد الإلكتروني والمدينة. ثم الصفوف هنا.
لدينا أعمدة أو سمات ، وهي العناصر المسماة. مرة أخرى ، في هذه الحالة ، اسمنا أو بريدنا الإلكتروني أو مدينتنا. ثم لدينا صفوف وصفوف.
لذلك في هذا المثال ، سيكون عنصرًا واحدًا. لذلك قد يكون الصف الأول في طاولتي ، وهو أماندا. ثم بريدي الإلكتروني ، جين دو في xyz ، والمدينة ، نيويورك.
دعنا نتحدث عن وقت استخدام قاعدة البيانات العلائقية. بعد ذلك ، سنراجع متى نستخدم قاعدة بيانات علائقية ، وسنستعرض هذا في الشرائح القليلة التالية. لذا فإن ميزة استخدام قاعدة بيانات علائقية وسنستعرض عددًا قليلاً من الخيارات هنا. لذا فإن أول شيء هنا هو سهولة الاستخدام ، وخاصة استخدام SQL. سهولة كتابة الاستعلامات في SQL ، إنها لغة استعلام قاعدة بيانات شائعة جدًا ومباشرة جدًا. التالي هو القدرة على القيام JOINS. هذا أحد أسباب رغبتنا في استخدام قاعدة بيانات علائقية. القدرة على استخدام JOINS ، والجمع بين أكثر من جدول واحد على مفتاح مشترك أو للحصول على مزيد من المعلومات. هذا شيء فريد لقواعد البيانات العلائقية ويجعلها قوية للغاية. القدرة على القيام بالتجميعات والتحليلات ، والقدرة على القيام بذلك على بياناتك ، للقيام بالتحليلات والتجميعات. هذا هو حقًا ما تم بناء قاعدة البيانات الارتباطية من أجله ، إلى جانب كونها مخزن بيانات دائم. GROUP BY ، ORDER BY ، بعض الأمثلة لن ندخلها في هذه الدورة ، لكنها أمثلة جيدة للتجميعات. إذا كان لديك أحجام بيانات أصغر ، فمن المحتمل أن يكون استخدام قاعدة بيانات علائقية فكرة جيدة. إذا كان لديك حجم بيانات أصغر ، بشكل أساسي ، إذا لم يكن لديك بيانات كبيرة ، يمكنك استخدام قاعدة بيانات علائقية للبساطة. بعد ذلك ، من الأسهل تغيير متطلبات العمل. تسهل قواعد البيانات الارتباطية تغيير متطلبات العمل ، حيث يمكنك إجراء استعلامات مخصصة على قاعدة البيانات الخاصة بك بسهولة. مرة أخرى ، ستتمتع بالمرونة لتشغيل العديد من الاستعلامات المختلفة والاستعلامات الجديدة حول بياناتك. فكر في استعلام جديد ، جربه ، طالما أن لديك أذونات بالطبع. نمذجة البيانات ، وليس نمذجة الاستعلامات. باستخدام قواعد البيانات العلائقية ، ستقوم بنمذجة البيانات نفسها ، وليس نمذجة بياناتك إلى الاستعلامات. تعد نمذجة البيانات مستقلة في بعض ما يتعلق بطلبات البحث الخاصة بك ، خاصة عند مقارنتها بقواعد البيانات غير العلائقية. سنتعلم المزيد عن هذا لاحقًا في الدرس التالي. ستحصل أيضًا على فائدة إضافية من الفهارس الثانوية. إذن ماذا نعني بالمؤشرات الثانوية؟ دعنا نراجع الشريحة التالية. إذن في هذه الحالة ، مفهوم أساسي آخر هو فكرة الفهارس الثانوية. ترغب في هيكلة بياناتك بكفاءة من خلال فهرس ليس مفتاحك الأساسي. يمكنك إضافة فهرس ثانوي للبحث السريع. في هذا المثال ، مفتاحنا الأساسي موجود على المدينة. هذا ما نستخدمه عادة في استفساراتنا. دعنا نقول هذا هنا. لنفترض تخيل أننا عادة نجري طلبات البحث باستخدام المدينة ، لكننا نجد أننا كثيرًا ما نستخدم رمز البلد في استفساراتنا. يمكننا إنشاء فهرس ثانوي لتسريع عملية الاسترجاع. كن على علم ، الفهارس الثانوية تتطلب موارد إضافية. دعنا نعود إلى مزايا استخدام قواعد البيانات العلائقية. هنا ، ربما يكون الأهم على الإطلاق هو حقيقة أن قواعد البيانات العلائقية تضيف القدرة على إجراء معاملات ACID. تعني فائدة معاملات ACID أنه سيكون لديك تكامل قوي للبيانات ، وبشكل أساسي أن بياناتك صحيحة. ماذا نعني بمعاملات حامض؟ دعونا نلقي نظرة على هذا بعمق أكبر.
يمكن أن نقضي درسًا كاملاً أو حتى فصلًا دراسيًا جامعيًا حول موضوع قاعدة البيانات العلائقية المتقدمة ، ولكن دعنا نقدم مقدمة موجزة عن ACID ، وما يرمز إليه ، ولماذا هو مهم. ربما تكون قد سمعت عن معاملات ACID من قبل ، ولكن إذا لم تكن قد سمعت عنها ، فستفعل الآن. لذا فإن خصائص ACID هي خصائص لمعاملة قاعدة بيانات تهدف إلى ضمان الصلاحية حتى في حالة حدوث أخطاء أو انقطاع التيار الكهربائي. ومن الأمثلة الجيدة على ذلك التفكير في تحويل الأموال في معاملة بنكية. يجب أن تحدث خطوات متعددة حتى يكون هذا ناجحًا وصحيحًا. كل هذه الخطوات تعتبر معاملة واحدة. تضمن معاملات ACID سلامة البيانات ، وأن الإجابة المقدمة التي تحصل عليها صحيحة. في سياق قواعد البيانات ، فإن تسلسل عمليات قاعدة البيانات التي تفي بخصائص ACID ، والتي يمكن اعتبارها عملية منطقية واحدة ، هو ما يسمى بالمعاملة. دعنا نتصفح كل واحدة من هذه الخصائص. الذرية والاتساق والعزلة والمتانة. دعنا نتصفح كل مصطلح. الذرية ، تتم معالجة المعاملة بالكامل أو لا يتم إعادة معالجة أي شيء. هذا كل شيء أو لا شيء. لنفكر في معاملة مصرفية لتحويل الأموال من الشيك إلى حساب التوفير الخاص بي. هذه عملية من خطوتين. يجب إزالة الأموال من الشيك وإضافتها إلى مدخراتي في كتلة واحدة. إذا لم نكن بحاجة إلى القيام بذلك في كتلة أو معاملة ACID ، فقد ينتهي بي الأمر بإزالة الأموال من حسابي الجاري ومن ثم عدم إيداعها في حساب التوفير الخاص بي. الاتساق ، تتم كتابة المعاملات التي تلتزم بالقيود والقواعد فقط في قاعدة البيانات. خلاف ذلك ، تحتفظ قاعدة البيانات بالحالة السابقة. هذا واضح جدا. إذا قمت بتعريف عمود على أنه عمود منطقي ، فلنفترض أنه صواب أو خطأ ، فلن تتمكن من إدخال قيمة لهذا الصف في هذا العمود تساوي "مرحبًا". هذه سلسلة. سيتم رفضه ولن تكتمل هذه المعاملة. العزلة ، تتم معالجة المعاملات بشكل مستقل وآمن. النظام لا يهم. إذا كانت هناك استعلامات متعددة تنفذ إجراءات ، حتى في حالة متزامنة ، فستستمر هذه الاستعلامات في التفاعل مع البيانات بنفس الطريقة كما لو تم تشغيل الاستعلامات بشكل متسلسل. عندما يأتي استعلام في الصف أو الصفوف التي يؤثر عليها ، سيتم قفله حتى تكتمل المعاملة. من هناك ، لا تستطيع الاستعلامات الأخرى التفاعل مع هذه البيانات. هذا يضمن صحة البيانات للعديد من المستخدمين الذين يقومون بتشغيل استعلامات مقابل قاعدة البيانات. يتم حفظ المتانة والمعاملات المكتملة في قاعدة البيانات حتى في حالات فشل النظام. هذا التعريف مربك بعض الشيء. تبدو مستحيلة. لذلك دعونا نقسمها. تضمن المتانة أنه بمجرد تنفيذ المعاملة ، فهذا هو المفتاح ، وستظل ملتزمة ، حتى في حالة تعطل النظام أو انقطاع التيار الكهربائي أو تعطله. هذا يعني عادةً أن المعاملات المكتملة أو آثارها يتم تسجيلها في ذاكرة غير متقلبة. في الأساس ، ما يعنيه هذا كله يعود إلى حقيقة أن قاعدة بياناتنا هي مخزن بيانات دائم. بمجرد حدوث المعاملة واكتمالها ، حتى إذا قمت بسحب المكونات في قاعدة البيانات ، عند إعادة توصيلها ، ستكون هذه البيانات موجودة.
لقد راجعنا للتو متى يجب استخدام قاعدة البيانات العلائقية ، لكن دعنا نتحدث عن متى لا نستخدم قاعدة البيانات العلائقية. لذا قبل أن نجري بعض المراجعة ، دعنا نستعرض بعض الأساسيات. لذلك لنفترض أنه إذا كان لديك كميات كبيرة من البيانات أو كنت بحاجة إلى أن تكون قادرًا على تخزين البيانات في تنسيقات بيانات مختلفة ، فإن قواعد البيانات العلائقية ليست قواعد بيانات موزعة بسبب ذلك ، فيمكنها التوسع عموديًا فقط عن طريق إضافة المزيد من التخزين في الجهاز نفسه. أنت مقيد بالمقدار الذي يمكنك قياسه وكمية البيانات التي يمكنك تخزينها على جهاز واحد. لا يمكنك إضافة المزيد من الأجهزة كما يمكنك في قواعد بيانات NoSQL. إذا كنت بحاجة إلى إنتاجية عالية أو قراءة سريعة ، فهذا هو الوقت الذي يجب ألا تستخدم فيه قاعدة البيانات العلائقية بينما تجلب المعاملات الحمضية فوائد ، كما أنها تبطئ عملية قراءة البيانات وكتابتها. إذا كنت بحاجة إلى عمليات قراءة وكتابة سريعة جدًا باستخدام قاعدة بيانات علائقية ، فقد لا تناسب احتياجاتك. إذا كنت بحاجة إلى مخطط مرن ، يمكن أن تسمح المخططات المرنة بإضافة أعمدة لا يلزم استخدامها بواسطة كل صف ، وهذا يوفر مساحة على القرص. إذا استوفيت توافرًا عاليًا ، وحقيقة أن قواعد البيانات العلائقية غير موزعة ، وحتى عندما تكون كذلك ، فإن لديهم بنية عامل منسق ، ولديهم نقطة فشل واحدة. عندما تنخفض قاعدة البيانات ، يجب أن يحدث فشل في نظام النسخ الاحتياطي ، وهذا يستغرق وقتًا. إذا كنت بحاجة إلى أن تكون قادرًا على التوسع أفقيًا. قابلية التوسع الأفقي ، هي القدرة على إضافة المزيد من الآلات أو العقد إلى نظام لزيادة الأداء وإضافة مساحة للبيانات. سنستعرض هاتين النقطتين الأخيرتين في لحظة. هذه المشكلات التي نراها هنا هي التي تؤدي إلى إنشاء قواعد بيانات NoSQL وغير علائقية. التوافر العالي ، يصف هذا قاعدة البيانات حيث يكون هناك وقت تعطل ضئيل للغاية للنظام ، ودائمًا ما يكون قيد التشغيل ويعمل ، لذلك فإن النظام المتاح بشكل كبير لديه القليل جدًا من التعطل أو حتى منعدمة. قابل للتحجيم أفقيًا ، والقدرة على إضافة خوادم إلى النظام. تعني قابلية توسيع قاعدة البيانات أنه يمكنني إضافة المزيد من العقد أو الخوادم إلى النظام ، وسيزداد الأداء في مساحة النظام. العديد من قواعد البيانات التقليدية وخاصة قواعد البيانات العلائقية لا يمكنها إضافة خوادم إضافية.
لذلك دعونا نتحدث عن قاعدة البيانات العلائقية التي سنستخدمها في هذه الدورة التدريبية لتمارين نماذج البيانات العلائقية والعروض التوضيحية. ما هي PostgreSQL؟ PostgreSQL هو نظام قاعدة بيانات علائقية للكائنات مفتوح المصدر ويستخدم لغة SQL ويبني عليها. لذلك فهو يستخدم لغة قاعدة بيانات SQL مدمجة في ثناياه عوامل من خلال توفير ميزات متنوعة تخزن بشكل موثوق أحمال عمل البيانات المعقدة على نطاق واسع. يختلف بناء جملة PostgreSQL عن قواعد SQL الخاصة بقاعدة البيانات العلائقية الأخرى. لكن هذه مجرد ملاحظة صغيرة. تميل جميع قواعد البيانات العلائقية وغير العلائقية إلى امتلاك بناء جملة SQL الخاص بها والعمليات التي يمكنك إجراؤها. هناك اختلافات بين أنواع التطبيقات. معظمهم يحتاجون فقط إلى بحث سريع في Google لفهم الفرق. هذه الملاحظة فقط لإعلامك بهذا. مفاهيم نمذجة البيانات هي ما تحتاج إلى التركيز عليه في هذه الدروس ، وليس كثيرًا على بناء الجملة
تمام. لذلك دعونا نصل إلى الشيء المفضل لدي وهو العروض التوضيحية. لذلك سننتقل إلى العرض التوضيحي 0 لأننا جميعًا خبراء الكمبيوتر هنا. بالطبع ، سنبدأ بصفر بدلاً من البدء بواحد. لذلك دعونا ننشئ جدولًا باستخدام PostgreSQL. هنا كما ترون ، لدي دفتر ملاحظات جوبيتر مفتوح. أحب التفاعل مع Jupyter واستخدام ذلك لأنه من الجيد جدًا وجود بيانات نظيفة هنا ،
لذلك فهو حقًا الشيء المفضل لدي. لذلك سنركز على استخدام دفاتر jupyter واستخدام أغلفة Python لتنفيذ استفساراتنا. كل هذه الاستعلامات قادرة أيضًا على القيام بها فقط في أي من قشرة Postgres ، لكننا سنركز فقط على استخدام غلاف Python لهذه. في الواقع ، سأتحدث فقط عن شيء قد تضغط عليه عندما تعمل مع Postgres وهو يتعلق بالالتزامات التلقائية. لذا عرض الدرس الأول 0: PostgreSQL و AutoCommits. لذلك في هذه الحالة ، سنستخدم حزمة بايثون هذه هنا. دعنا نمضي قدما وندير ذلك. سنستخدم هذا كغلاف لحزمة Python هذه للالتفاف حول Postgres. في حالتي أنا أعمل على الجهاز الخاص بي. يبدو أنني حصلت على خطأ هنا ، لكنه في الواقع مثبت بشكل صحيح ، فعندئذٍ إذا قمت بتشغيله مرة أخرى ، فإنه يعمل. لذا ، إذا كنت تعمل بمفردك ورأيت سهمًا كهذا ، فاقرأه بعناية ، لكنه قد يكون مجرد شيء في الواقع يشير فقط إلى أنهم سيغيرون الاسم قريبًا. لذلك فهو تحذير جميل ولكنه ليس ضروريًا حقًا. لذلك دعونا ننشئ اتصالاً بقاعدة البيانات الخاصة بنا. هذا يربط في حالتي بمثيل محلي لـ Postgres. من هناك سنستخدم قاعدة البيانات والمخطط وهو في هذه الحالة الطالب ديسيبل ، ثم اسم المستخدم وكلمة المرور. تذكر أن هذا مجرد عرض توضيحي ، لذا فإن كلمة المرور مكتوبة بنص واضح ولكنك لن تفعل ذلك أبدًا في الإنتاج. سيصل هذا الاتصال إلى قاعدة البيانات ويضمن أن لدينا الامتيازات الصحيحة للاتصال بقاعدة البيانات.
دعنا ندير ذلك وقد تم تشغيله بنجاح. بعد ذلك ، دعنا نستخدم الاتصال للحصول على مؤشر ، وسنستخدم ذلك لتنفيذ الاستعلام.
لدينا المؤشر الآن. لذلك دعونا نحاول تشغيل استعلام بالفعل. لنبدأ من اختبار واحد ، اثنان ، ثلاثة. لا ، لدينا خطأ. تمام. تقول أن اختبارات العلاقة واحد ، اثنان ، ثلاثة غير موجودة. تمام. هذه ليست مشكلة.
لذلك كان لدينا خطأ ، لكننا كنا نتوقع ذلك. لذلك دعونا نصلح هذا الخطأ عن طريق إنشاء جدول. لذلك سأقوم بإنشاء جدول اختبار واحد ، اثنان ، ثلاثة. هذا مجرد مثال ، لدي ثلاثة أعمدة وكلها Ints. سأقوم بتشغيل هذا. لقد حصلت على خطأ آخر. تم إحباط المعاملة الحالية ، وتجاهل الأمر حتى نهاية كتلة المعاملة. هذا ليس ما كنت أتوقعه على الإطلاق. لذلك عندما تستخدم Postgres ، فإن ما نحتاج إلى التأكد من أننا نفهمه هو ذلك مرة أخرى لأننا نعمل مع قاعدة بيانات حمضية نحتاجها للتأكد من أننا نلتزم بمعاملاتنا. لذلك عندما كان لدي هذا الخطأ في استفساري ، لم أقم بتنفيذ معاملتي ولذا حصلت على خطأ.
لذلك نظرًا لأننا لم نلتزم بالمعاملة ، فقد حدث خطأ في كتلة المعاملة الخاصة بنا. في هذه المرحلة ، تم حظرنا حتى نعيد تشغيل الاتصال ، أو يمكن أن نلتزم بالمعاملة.
لذلك دعونا نعيد الاتصال بنا. تمام. لذلك سنقوم بالاتصال بقاعدة البيانات الخاصة بنا ، ثم سنحصل على المؤشر. الهدف من هذا العرض التوضيحي في هذه التمارين هو بدلاً من القلق بشأنه
بعد كل معاملة أو الحصول على هذا الخطأ الغريب الذي وصلنا إليه للتو ، دعنا فقط نضبط الالتزام التلقائي على "true". هذا يعني أنه بعد كل مكالمة خلال هذه الجلسة ، قم بتنفيذ هذا الإجراء ولا تقم بفتح المعاملة لأي إجراءات أخرى. لذا فإن إجراء واحد يساوي معاملة واحدة. بالنسبة لهذا العرض التوضيحي ، سنقوم بتعيين الالتزام التلقائي في الجلسة على صحيح. إذن هذا الخط هنا. لن نضطر إلى استدعاء con.commit لكل أمر ، ويتم تنفيذ ذلك بنجاح. لذلك دعونا نحاول هذا مرة أخرى.
لنقم بتحديد نجمة من اختبار واحد ، اثنان ، ثلاثة. تمام. لدينا خطأ ،
هذا ما توقعناه. الآن دعنا نذهب هنا ودعونا نحاول إنشاء هذا الجدول. لنحل مشكلتنا. إنشاء اختبار الجدول الأول والثاني
ثلاثة مع ثلاثة أعمدة لدينا ، وتنفيذها بنجاح. رائع هذا بالضبط ما أردناه. عندما قمنا بتنفيذ هذا الرمز مرة أخرى مع ضبط الالتزام التلقائي على "true" ، لم نواجه أية مشكلات مع حظر المعاملات ، ولم نكن بحاجة إلى إعادة تشغيل اتصالنا.
لذلك دعونا نحدد نجمة من الاختبار الأول والثاني والثالث ، وبما أنه ليس لدينا أي شيء هناك ، فإننا لم نسترد أي شيء ، ودعنا نحدد النجوم ونعدها ، ونرى أن لدينا صفر صفوف في الجدول لأننا لم نضف أي شيء. ثم دعونا نترك الطاولة. لذلك كان هذا مجرد عرض توضيحي للتأكد من أنك تفهم سبب تعيين الالتزام التلقائي في كل واحد من عروضنا التوضيحية.
من هنا ، ننتقل إلى الدرس 1 ، العرض التوضيحي 1 ، وهذا كله يتعلق بإنشاء جدول في Postgres. لذلك في هذا العرض التوضيحي ، سنستعرض أسس إنشاء جدول و Postgres. إدخال صفوف من البيانات وإجراء استعلام SQL بسيط للتحقق من صحة هذه المعلومات. كما قلت من قبل ، سنستخدم غلاف Python ، ويمكنك العثور على مزيد من المعلومات حوله هنا. إذا لم يكن مثبتًا على جهازك المحلي ، فقد قمت أيضًا بتضمين الأمر الذي يمكنك تشغيله لتثبيته على جهازك المحلي ، ولكن يجب تثبيته في مساحة عملك. سنقوم باستيراد المكتبة ، مرة أخرى ، إذا ظهر خطأ ، فتأكد من قراءته جيدًا ، ولكن قد يكون شيئًا يمكنك تجاهله. حسنًا ، لنقم بإنشاء اتصال بقاعدة البيانات. هذا يتصل بمثيلنا المحلي في حالتنا Postgres ، ومن هناك سنستخدم قاعدة البيانات والمخطط. سيصل هذا الاتصال إلى قاعدة البيانات ويضمن أن لدينا الامتيازات الصحيحة لربط قاعدة البيانات هذه. لذا أريد فقط أن أخبرك أن هذه ملاحظة فقط هذه الكتلة من التعليمات البرمجية التي تراها هنا ، ستكون قياسية جدًا في جميع دفاتر الملاحظات لدينا. نحن نضيف كتلة try-except هذه للتأكد من اكتشاف الأخطاء وفهمها. هذه مجرد تقنيات وممارسات ترميز جيدة. لذلك تحتاج إلى الحصول على ذلك فقط للتأكد من أنك تكتشف أي أخطاء ، لكنك تريد حقًا التركيز على ما يوجد في الأمر try. الباقي هو مجرد معيار إلى حد ما ، وسنستخدمه مرارًا وتكرارًا. لذلك دعونا نشغل هذه الكتلة من التعليمات البرمجية التي سنقوم بإجراء اتصالنا بها ، وبعد ذلك سنستخدم هذا الاتصال للحصول على مؤشر ، حتى نتمكن من استخدام هذا المؤشر لتنفيذ الاستعلامات ، وأننا لم نكن نعرف الأخطاء ألقيت. لذا مرة أخرى ، بالنسبة لهذا العرض التوضيحي ، سنستخدم الالتزام التلقائي لكل إجراء يتم تنفيذه دون الحاجة إلى استدعاء هذا السلوك بعد كل أمر. تعد القدرة على التراجع عن المعاملات وتنفيذها سمة من سمات قواعد البيانات العلائقية. لذلك دعونا نختبر اتصالنا ومعالجة الأخطاء لدينا. لنقم بتحديد نجمة على طاولة لم نقم بإنشائها بعد. يجب أن نتوقع رؤية خطأ تم التعامل معه بشكل جيد. لذلك دعونا نقوم بتحديد نجمة من مكتبة udacity.music_library. حسنًا ، جيد. لقد رأينا خطأ. مكتبة udacity.music_library غير موجودة. بالضبط. لم نقم بإنشائه حتى الآن ورأينا خطأً حيث تمكنا من الاتصال بقاعدة البيانات الخاصة بنا بنجاح. لذلك دعونا في الواقع ننشئ قاعدة بيانات حتى نتمكن من القيام بعملنا. لذلك دعونا ننشئ قاعدة البيانات Udacity. لذلك قم بإنشاء قاعدة بيانات Udacity. رائع. حسنًا ، في هذه الحالة ، إنه موجود بالفعل بالنسبة لي ، ولكن عند تشغيله ، ستنشئه لأول مرة. دعنا نغلق اتصالنا بقاعدة البيانات الافتراضية هذه ، ذلك الاتصال الأول الذي قمنا به وإعادة الاتصال بقاعدة بيانات Udacity والحصول على مؤشر جديد. لذا كما ترون هنا سنغلق الاتصال ، ومن هناك سنقوم بالاتصال بقاعدة البيانات الجديدة الخاصة بنا ، ومن ثم سنحصل على المؤشر. لذلك سيحدث كل ذلك في نفس الخلية ، وقمنا أيضًا بتعيين التزامنا التلقائي على true وتم تشغيل كل ذلك بنجاح. والآن بعد أن قمنا ببعض هذا العمل مقدمًا ، فلنبدأ بالفعل في التفكير في إنشاء طاولتنا. فلنتخيل أننا سنبدأ في إنشاء مكتبة موسيقية للألبومات. يحتوي كل ألبوم على الكثير من المعلومات التي يمكننا إضافتها إلى جدول مكتبة الموسيقى هذا ، لكننا سنبدأ فقط باسم الألبوم واسم الفنان والسنة. يبدو أن نوع الجدول الذي نريد إنشاءه والأعمدة التي نحتاجها تسقط بشكل طبيعي جدًا. فلنتخيل أن اسم طاولتنا سيكون مكتبة موسيقى. سيكون لدينا ثلاثة أعمدة ، أحدها يسمى اسم الألبوم واسم الفنان والسنة. والآن نريد ترجمة هذا إلى إنشاء بيان جدول. لذلك إذا كنت ترغب في مراجعة المزيد من الوثائق حول Postgres وأنواع بياناتها ، يمكنك العثور على هذه المعلومات هنا في هذا الرابط الذي قدمته. لذا مرة أخرى ، في كتلة المحاولة ، سنقوم بإنشاء جدول إن لم يكن موجودًا. لذلك إذا لم يكن موجودًا بالفعل ، قم بإنشائه ، وإذا كان موجودًا ، فلا تقم بإنشائه. سنطلق عليها اسم مكتبة الموسيقى وسيكون لدينا اسم ألبومنا المكون من ثلاثة أعمدة ، وسيكون هذا عبارة عن varchar مثل السلسلة ، اسم فناننا ، مرة أخرى ، varchar مشابه لسلسلة ، وسنة نحن إعادة استخدام int ، عدد صحيح. سنقوم بتشغيل ذلك. لذلك لم يتم العثور على أخطاء. لذلك دعونا نتحقق للتأكد من أن الجدول قد تم إنشاؤه بالفعل. لنحدد عدد النجوم الذي يجب أن يعيد الصفر لأننا لم ندرج أي صفوف. رائع. نرى الصفر هنا في الأسفل ، ويمكنك أن ترى المكان الذي قمنا فيه بتنفيذ اختيار عدد النجوم من مكتبة الموسيقى. لذلك دعونا نبدأ في عملية إدخال نطاقين عاميين. لذلك أريدك حقًا أن تلاحظ التركيب اللغوي هنا لكيفية قيامنا بذلك في بيان الإدراج هذا لأنك ستفعل ذلك مرارًا وتكرارًا خلال تماريننا. إذن هذه هي الصيغة التي ستستخدمها. لذلك سنقوم بالإدراج في مكتبة الموسيقى الخاصة بنا ، وسنقوم بإدراج أعمدةنا ، ثم سنستخدم قيمنا وسنستخدم علامة النسبة المئوية و S ، ثم نذهب إلى في الواقع نضيف فاصلة ، ثم نضيف القيم الفعلية التي سنقوم بإدخالها. لذلك في هذه الحالة لدينا مكتبة موسيقى. إذن لدينا خوارزمية تسمى Let it B ، فنانونا هم فرقة البيتلز والسنة التي تم إنتاجها كانت 1970. لذلك نحن نفعل الشيء نفسه هنا لألبوم آخر. لذلك سنقوم بإدخال صفين. دعنا نتحقق من أن بياناتك قد تم إدراجها بالفعل في الجدول ، لذلك سنقوم بعمل حلقة أثناء وسنستخدمها لطباعة النتائج. إذا كنت تنفذ هذا الاستعلام وقذيفة Postgres فلن تحتاج حقًا إلى حلقة while. لكن في هذه الحالة نقوم بذلك لأننا نستخدم مكتبة Python. لذلك إذا انتهى بك الأمر إلى تشغيل رمز بيان الإدراج هذا أكثر من مرة ، فستشاهد بالفعل نسخًا مكررة من بياناتك. لذا فإن Postgres تسمح لك جميعًا بمعرفة أنها تسمح بالتكرارات. حسنًا ، رائع. لذلك قمنا بتحديد نجمة من Music Library ، وتمكنا من طباعة نتائجنا حتى تم تحميلها بنجاح في الجدول. لذلك فقط من أجل هذا العرض التوضيحي ، سأقوم بإسقاط الطاولة وسنقوم أخيرًا بإغلاق الاتصال بقاعدة البيانات الخاصة بنا. إذن هذه هي نهاية العرض التوضيحي 1.
حسنًا ، ها هو الحل للدرس 1 ، التمرين 1 ، إنشاء جدول في Postgres. إذاً ، بعض هذه العناصر التي قمنا بالفعل بتصفحها في العرض التوضيحي. لذلك قد أراجعها بسرعة وسنصل إلى الحل. مرة أخرى ، سنقوم باستيراد تلك المكتبة ، ومرة أخرى إذا وجدت هذا الخطأ ، فتجاهله. سنقوم بإنشاء اتصال بقاعدة البيانات الخاصة بنا. في هذه الحالة ، سترى هنا لقد قمت للتو بالاتصال بالمثيل المحلي الخاص بي. لذلك لم أحتاج في الواقع إلى تقديم أي معلومات اتصال ، ولكن أي اتصال تقوم به هو ما يربطه جيدًا. مرة أخرى ، سنحصل على المؤشر الخاص بنا وسنقوم بتعيين الالتزامات التلقائية على صواب ، ثم سنختبر الاتصالات الأخرى. لذلك دعونا نضع حججنا. فقط قم بتعيين اتصالاتنا ، لذلك سنحاول تحديد نجمة من الأغاني. ما يجب أن نتوقع رؤيته هو هذا الخطأ الذي تم التعامل معه بشكل جيد ، وهو ما نقوم به. الأغاني غير موجودة ، رائعة. لذلك دعونا ننشئ قاعدة البيانات هذه للقيام بعملنا. لذلك في هذه الحالة ، أنشأنا قاعدة البيانات Udacity. في حالتي ، إنه موجود بالفعل ، لكن بالنسبة لك يجب أن يتم تنفيذه في المرة الأولى. لذا مرة أخرى ، سنغلق هذا الاتصال ثم نعيد الاتصال بقاعدة البيانات التي أنشأناها. ثم سنحصل على مؤشر ، وسنقوم بتعيين الالتزام التلقائي ، كل الأشياء التي رأيتها في العرض التوضيحي. لذلك نحن الآن على استعداد للبدء وإنشاء طاولتنا بالفعل. لذلك في هذه الحالة ، نتخيل أننا سننشئ مكتبة أغاني في العرض التوضيحي الذي أنشأنا مكتبة الموسيقى الخاصة بنا مع الألبومات. في هذه الحالة ، سنذهب إلى الأغاني ، من بين جميع الأغاني التي نعرفها. تحتوي كل أغنية على الكثير من المعلومات التي يمكننا إضافتها إلى جدول مكتبة الأغاني ، لكننا سنبدأ فقط باسم الأغنية واسم الفنان والسنة والألبوم الذي جاءت منه ، وإذا كانت أغنية فردية . مرة أخرى ، عنوان الأغنية والفنان والسنة والألبوم والأغنية. الآن ، دعنا نترجم ذلك إلى بيان الإنشاء الخاص بنا. لذلك هذا هو حقا المفتاح هنا. إذن ما نريد تنفيذه هو جدول الإنشاء إذا لم يكن موجودًا ، وسنقوم باستدعاء طاولتنا ، في هذه الحالة ، إنها الأغاني ، ولكن يمكنك أن تسميها أي شيء تشعر بالراحة تجاهه. ثم سيكون لدينا عمود يسمى عنوان الأغنية ، وهو varchar ، واسم الفنان أيضًا varchar ، ولا تشعر أنك بحاجة إلى الحصول على نفس أسماء الأعمدة التي أستخدمها بالضبط. طالما أنه وصفي ، فإنه يعمل بشكل رائع. ثم سيكون لدينا عام كامل ، سيكون لدينا اسم ألبومنا ، varchar آخر. ثم هناك شيء مثير للاهتمام قليلاً لم نعرضه في العرض التوضيحي ، هو أننا سنقرر ما إذا كانت أغنية واحدة ، إذا لم تكن جزءًا من ألبوم.
لبقية هذا الدرس ، سنركز على قواعد البيانات غير العلائقية. إذن ما هي قاعدة بيانات NoSQL؟ لذا فإن قاعدة بيانات NoSQL تتميز بتصميم أبسط ، وقياس أفقي أبسط ، وتحكم أكثر دقة في الإتاحة. تختلف هياكل البيانات المستخدمة عن تلك الموجودة في قاعدة البيانات العلائقية وهي تجعل بعض العمليات أسرع. لذا فإن NoSQL لا تساوي SQL فقط. NoSQL و non-relational هي مصطلحات قابلة للتبادل. من الآن فصاعدًا ، ربما تسمعني فقط أقول NoSQL. مرة أخرى ، هناك أنواع مختلفة من قواعد بيانات NoSQL ، وسنتحدث قليلاً عن ذلك في دقيقة واحدة فقط. لذلك كما قلنا في الدرس الأخير ، تم إنشاء قواعد بيانات NoSQL للقيام ببعض المشكلات التي تواجه قواعد البيانات العلائقية. تذكر جميع الأسباب التي ذكرناها لعدم استخدام قاعدة بيانات علائقية؟ كانت NoSQL موجودة أيضًا منذ سبعينيات القرن الماضي ، لكنها أصبحت أكثر شيوعًا واستخدمت خلال العقد الأول من القرن الحادي والعشرين مع زيادة أحجام البيانات وتقليل حالات الانقطاع ووقت التوقف عن العمل. إذن ، إليك فقط بعض الأنواع الشائعة من قواعد بيانات NoSQL. كما قلت من قبل ، هناك قواعد بيانات NoSQL مختلفة وأنواع مختلفة من التطبيقات التي ستتماشى بشكل أفضل مع حالات الاستخدام المختلفة. لذا فإن أول ما سنناقشه هنا هو Apache Cassandra وهو ما سنستخدمه في الأمثلة لدينا. هذا هو متجر صف التقسيم. يتم توزيع البيانات عن طريق الأقسام عبر العقد أو الخوادم ، ويتم تنظيم البيانات في تنسيق الأعمدة والصفوف. بعد ذلك ، لدينا MongoDB ، وهو متجر مستندات. تتمثل إحدى الخصائص المحددة لقاعدة البيانات الموجهة للمستندات في أنه بالإضافة إلى عمليات البحث عن المفاتيح التي يتم إجراؤها بواسطة مخزن القيمة الرئيسية ، توفر قاعدة البيانات أيضًا واجهة برمجة تطبيقات أو لغة استعلام تسترد المستند بناءً على محتوياته. فكر في أنه من السهل بشكل أساسي إجراء البحث في المستندات. بعد ذلك ، لدينا DynamoDB وهو متجر ذو قيمة أساسية. مخزن القيمة الرئيسية هو في الأساس يتم تمثيل البيانات كمجموعة من أزواج المفاتيح والقيمة. بعد ذلك ، لدينا Apache HBase وهو متجر أعمدة واسع. يستخدم أيضًا الجداول والصفوف والأعمدة ، ولكن بخلاف قاعدة البيانات العلائقية ، يمكن أن تختلف أسماء الأعمدة وتنسيقها من صف إلى آخر في نفس الجدول. هذا مخطط مرن تحدثنا عنه من قبل. التالي ، Neo4j. Neo4j هي قاعدة بيانات رسم بياني حيث تكون العلاقات بين الكيانات هي محور التركيز. مع قواعد بيانات الرسم البياني ، يتعلق الأمر برمته بالعلاقات ، ويتم تمثيل البيانات كعقد وحواف. لذلك في هذه الدورة ، سنركز على Apache Cassandra لشرح مفاهيم نمذجة البيانات لقواعد بيانات NoSQL. نمذجة البيانات لجميع قواعد بيانات NoSQL لديها الكثير من القواسم المشتركة ، ولكن كل واحدة لها طابعها الفريد الذي سيلعب بشكل منفصل. ولكن بمجرد حصولك على الأساس ، سيكون التكيف مع التغييرات الصغيرة أمرًا سهلاً للغاية. هذه مجموعة من المصطلحات خاصة بـ Apache Cassandra. ستستخدم قواعد بيانات NoSQL الأخرى مصطلحات مختلفة قليلاً ، لكن المفاهيم هي نفسها. إذن إليك بعض أساسيات Apache Cassandra. لدينا Keyspace ، وهو عبارة عن مجموعة من الجداول. لذلك من الناحية العلائقية ، ستكون هذه قاعدة بيانات. لدينا جدول ، وهو عبارة عن مجموعة من الأقسام. لدينا صفوف ، وهي عنصر واحد. كل هذه الأمور واضحة جدًا. دعنا نتحدث عن بعض الأشياء المحددة حقًا لـ Apache Cassandra. لدينا قسم ، وهو الوحدة الأساسية للوصول ، وهو عبارة عن مجموعة من الصفوف ، وهي كيفية توزيع البيانات. لدينا مفتاح أساسي. يتكون المفتاح الأساسي من مفتاح القسم وأعمدة التجميع. ثم لدينا أعمدة ، لدينا أعمدة تجميعية وأعمدة بيانات وهذه هي العناصر المسماة. من هنا ، يمكنك أن ترى أننا نقسم حسب الاسم الأخير لأن هذا هو القسم الخاص بنا. لدينا بعض أعمدة التجميع حول الاسم الأول واسم العائلة ، ثم لدينا هنا بعض أعمدة البيانات ، والتي هي فقط عنواننا والبريد الإلكتروني. مرة أخرى ، سنتحدث عن هذه المفاهيم بعمق كبير في الدرس 3. لذا إذا بدا الأمر محيرًا الآن ، فلا تقلق.
إذن ما هو أباتشي كاساندرا؟ لنتحدث عن قاعدة بيانات NoSQL التي سنستخدمها في العروض التوضيحية والأمثلة في هذه الدورة. يوفر Apache Cassandra قابلية التوسع والتوافر العالي دون المساس بالأداء. إن قابلية التوسع الخطي والتسامح المؤكد مع الأخطاء على الأجهزة الأساسية أو البنية التحتية السحابية تجعله النظام الأساسي المثالي للبيانات المهمة للمهمة. تستخدم Apache Cassandra لغة الاستعلام الخاصة بها والتي تسمى للتو CQL أو لغة Cassandra Query ، ولكنها ستشعر بأنها مشابهة جدًا لـ SQL.
لذلك دعونا نتحدث عن وقت استخدام قاعدة بيانات NoSQL. لذلك إذا كان لديك كميات كبيرة من البيانات ، فقد تم تصميم NoSQL للبيانات الضخمة. كلما زادت البيانات لديك والقدرة على التوسع حسب الحاجة لزيادة المساحة والأداء ، هذا ما كان يدور في خلدك حقًا. إذا كنت بحاجة إلى التوسع الأفقي ، فقد تحتاج إلى قاعدة بيانات NoSQL. القدرة على إضافة المزيد من العقد أو الخوادم إلى النظام لزيادة الأداء. إذا كنت بحاجة إلى إنتاجية عالية ، فقد ترغب في التفكير في استخدام قاعدة بيانات NoSQL. القدرة على القيام بالقراءة والكتابة بسرعة لقاعدة البيانات. يمكنك إجراء جملة insert بسرعة وأيضًا بيان select بسرعة. إذا كنت بحاجة إلى مخطط مرن. يمكنني تغيير مخطط بياني حسب الضرورة. ليس من الضروري أن يكون لدي نفس مجموعة الأعمدة لكل صف من صفوفي. إذا كنت بحاجة إلى هذا النوع من المرونة ، فقد ترغب في التفكير في قاعدة بيانات NoSQL. إذا كنت بحاجة إلى توافر عالية. إذا كنت بحاجة إلى الإتاحة العالية دون توقف ، مرة أخرى ، هذا هو ما تم بناء NoSQL من أجله. هذا شيء قد ترغب في التفكير فيه. إذا كنت بحاجة إلى أن تكون قادرًا على تخزين أنواع بيانات مختلفة وتنسيقات مختلفة لأنواع البيانات ، فقد ترغب في التفكير في قاعدة بيانات NoSQL. مرة أخرى ، إنها أكثر مرونة في هذا المجال. إذا تم توزيع المستخدمين لديك وما زلت ترغب في الحصول على زمن انتقال منخفض لهؤلاء المستخدمين. إذا كان مستخدمو قاعدة البيانات الخاصة بي والتطبيقي الذي تخدمه موزعين جغرافيًا ، ولهذا السبب أردت أن أكون قادرًا على خدمة كل مستخدم لدي بأقل قدر من التأخير بين وقت تنفيذ استعلام ووقت تلقي الاستجابة ، قد نرغب في اعتبار قاعدة بيانات موزعة مثل قاعدة بيانات NoSQL. كما ترى ، فإن جميع أسباب عدم استخدام قاعدة بيانات علائقية هي أسباب استخدام قاعدة بيانات NoSQL. يمكنك أن ترى أن هذا ليس بالصدفة. تم إنشاء NoSQL للتعامل مع القيود الموجودة في قواعد البيانات العلائقية. إذا كنت تعرف محفوظات قاعدة البيانات الخاصة بك ، فأنت تعلم أن NoSQL أصبحت شائعة في العقد الأول من القرن الحادي والعشرين حيث بدأت شبكة الويب في النمو وزادت أحجام البيانات. تم إنشاء NoSQL للبيانات الضخمة. تم إنشاء NoSQL أيضًا لتزويد المستخدمين بزمن انتقال منخفض جدًا. فقط لإعلام الجميع ، في غضون تأخير ثانٍ على موقع ويب ، سينتقل معظم الأشخاص إلى موقع ويب أو تطبيق آخر. إذن هذا مجرد مثال. لقد قدمت هذا للتو لأريكم مثالًا سريعًا على Apache Cassandra وأدائها ، وهذا أساسًا يتعلق بقابلية التوسع الخطي. إذن كلمة سريعة حول قابلية التوسع الخطي وقابلية التوسع. ما يعنيه هذا هو أنه يمكنك إضافة عقد وسيزداد الأداء بطريقة خطية. إذن هذا المحور x هو عدد العقد والمحور y هو عدد عمليات القراءة والكتابة التي يمكن إجراؤها. في هذه الحالة ، يكتب فقط. لذلك كلما أضفت المزيد من العقد ، سيزداد أدائك بطريقة خطية ويمكنك أن ترى من هذا السطر هنا. كلما زاد عدد العقد التي تضيفها ، ستتمكن من جعل العميل يكتب إلى قاعدة البيانات وسيزداد هذا أيضًا. يمكنك أن ترى أن هذه هي المعلومات التي نشرتها Netflix بالفعل.
متى لا تستخدم قاعدة بيانات NoSQL؟ لذا فإن أول شيء هنا في المقدمة هو ، إذا كنت بحاجة إلى معاملات ACID. إذا كنت بحاجة إلى قاعدة بيانات متسقة مع معاملات ACID ، فلن تتمكن NoSQL من تلبية هذه الحاجة. قواعد بيانات NoSQL متسقة في النهاية ولا توفر معاملات ACID. سنتحدث عن هذا أكثر بكثير في الدرس 3. إذا كنت بحاجة إلى القدرة على تنفيذ JOINS ، فإن NoSQL لا تسمح بالقدرة على تنفيذ JOINS. هذا غير مسموح به لأنه سينتج عنه مسح كامل للجدول. يعد فحص جدول كامل أمرًا مستاءً للغاية نظرًا لأن البيانات قد تنتشر على مئات أو آلاف الخوادم. القدرة على عمل التجميعات والتحليلات. للأسباب نفسها ، المذكورة للتو ، التجميعات والتحليلات ليست مخصصة لقواعد بيانات NoSQL بدون تحسينات. منتج مثل مؤسسة مجموعات البيانات ، أضف دعمًا لهذا بمزيج من Apache Cassandra و Apache Spark في منتجهم ، لكنه لا يأتي مباشرة من الصندوق. وجود متطلبات العمل المتغيرة. الاستعلامات المخصصة ممكنة مع قاعدة بيانات NoSQL بالطبع ، ولكنها صعبة لأن نموذج البيانات تم إجراؤه ليلائم استعلامًا معينًا. ستحتاج إلى الحصول على استفساراتك مسبقًا مع قاعدة بيانات NoSQL للقيام بنمذجة بيانات مناسبة ، إذا لم تكن متوفرة أو كنت بحاجة إلى أن تكون قادرًا على التحلي بالمرونة في كيفية الاستعلام عن بياناتك ، فستحتاج إلى الالتزام بقاعدة بيانات علائقية . إذا كان لديك مجموعة بيانات صغيرة ، فقد تم إنشاء قواعد بيانات NoSQL مرة أخرى لمجموعات البيانات الكبيرة وليس مجموعات البيانات الصغيرة. بينما لا يعمل ، لم يتم إنشاؤه لذلك. لن تكون النفقات العامة ضرورية ، ولكن يجب عليك دائمًا تقييم حالة الاستخدام الخاصة بك عند اتخاذ هذه القرارات. كما ترى ، فإن جميع أسباب عدم استخدام قاعدة بيانات NoSQL هي أسباب استخدام قاعدة بيانات علائقية. بمرور الوقت ، تعمل قواعد بيانات NoSQL على تحسين وإضافة ميزات ، ولكن هناك بعض الميزات التي لا تتوفر حسب التصميم. قواعد بيانات NoSQL متسقة في النهاية. مرة أخرى ، المزيد حول هذا في الدرس 3 ، وليس لديهم معاملات ACID. لا يُسمح بالقدرة على القيام بـ JOINS نظرًا لأن فحص الجدول الكامل أمر مستاء للغاية ، حيث قد تنضم إلى الجداول عبر مئات أو آلاف الخوادم. تذكر أن قواعد بيانات NoSQL وقواعد البيانات العلائقية لا تحل محل بعضها البعض في جميع المهام. كلاهما يقوم بمهام مختلفة بشكل جيد للغاية ويجب استخدامهما لحالات الاستخدام التي تناسبهما بشكل أفضل.
حسنًا ، دعنا ننتقل إلى العرض التوضيحي التالي وهو إنشاء جدول باستخدام Apache Cassandra. لذا سننتقل هنا مرة أخرى إلى دفتر Jupyter الخاص بنا ، وسنفتح العرض التوضيحي 2 للدرس 1. لذلك سنقوم بإنشاء جدول. الكثير من كود البداية هذا الذي لدينا هنا سيبدو في الواقع مشابهًا تمامًا لما فعلناه للتو في التمرين 1. لذا في هذا العرض التوضيحي ، سنستعرض أساس إنشاء جدول في Apache Cassandra ، وإدخال الصفوف ، والقيام باستعلام SQL بسيط للتحقق من صحة المعلومات. مرة أخرى سنستخدم غلاف الثعبان ، وفي هذه الحالة يسمى "سائق كاساندرا". إنه برنامج تشغيل Python لـ Cassandra ، ويمكن العثور على المزيد من الوثائق هنا. لذلك سنقوم باستيراد الحزمة ، على الرغم من أننا قمنا بتثبيتها باستخدام برنامج تشغيل Cassandra ، فهي في الحقيقة مجرد Cassandra. لاستيراد حزمة Python هذه. لنقم الآن بإنشاء اتصال بقاعدة البيانات. هذا يتصل بمثيلنا المحلي من Apache Cassandra. مرة أخرى ، سوف يصل الاتصال إلى قاعدة البيانات ويضمن أن لدينا الامتيازات الصحيحة للاتصال. بمجرد استعادة كائن الكتلة ، نحتاج إلى الاتصال ثم نقوم بإنشاء جلسة ، حتى نتمكن من تنفيذ الاستعلامات. مرة أخرى ، ستكون كتلة التعليمات البرمجية هذه قياسية جدًا في جميع أجهزة الكمبيوتر المحمولة الخاصة بنا. لذلك تمكنا من الاتصال ، فلنختبر اتصالنا. نحن نحاول تحديد نجمة في جدول لم ننشئه بعد. لذلك يجب أن نتوقع رؤية خطأ تم التعامل معه بشكل جيد. رائع رائع نرى خطأ ، لكن هذا ما توقعناه. لذلك لم نحدد مساحة المفاتيح الخاصة بنا بعد ، فإن keyspace يشبه قاعدة البيانات الخاصة بنا. لذلك نحن بحاجة إلى أن نكون قادرين على القيام بذلك قبل أن نتمكن من اختيار نجمة. لذلك دعونا ننشئ مساحة المفاتيح هذه لنقوم بعملنا. لذلك في هذه الحالة ، تجاهل فقط استراتيجية النسخ ، وعامل النسخ المتماثل في الوقت الحالي. سنتحدث عن ذلك في وقت لاحق ، ولكن عليك أن تعلم أنه في حالة عقدة واحدة ، ستكون هذه دائمًا استراتيجيتك وعامل النسخ الخاص بك ، وقليلًا عن عامل النسخ الذي يعني عدد مرات بياناتك منسوخًا ، وبما أننا في عقدة واحدة ، فلا نريد نسخها عبر عقد متعددة لأننا لا نمتلكها مهمة حقًا. لذلك سننشئ مساحة المفاتيح الخاصة بنا إذا لم تكن موجودة ، وفي هذه الحالة ، سننشئ مساحة مفتاح تسمى "udacity" ، وبعد ذلك مع النسخ المتماثل ، سنستخدم الإستراتيجية البسيطة و عامل واحد. لذلك دعونا ننفذ ذلك وهذا ما تم تشغيله ، ثم دعنا نتصل بمساحة المفاتيح الخاصة بنا. لذلك في هذه الحالة ، نحتاج فقط إلى تحديد مساحتنا الرئيسية. هذا هو الأمر هنا باستخدام غلاف python ، ثم نقوم بتوصيله بمساحة المفاتيح التي أنشأناها للتو. لذا قارن هذا بالطريقة التي تمكنا بها من إنشاء جلسة جديدة في PostgreSQL ، فنحن قادرون فقط على ضبط مسافة المفاتيح هنا. لا نحتاج إلى إجراء اتصال جديد. إنها مريحة للغاية.
لذلك لنبدأ في إنشاء طاولاتنا. لنتخيل أننا نرغب في البدء في إنشاء مكتبة موسيقية للألبومات. يحتوي كل ألبوم على الكثير من المعلومات التي يمكننا استخدامها ، لكننا سنبدأ فقط باسم الألبوم واسم الفنان والسنة. لكن ، توقف ، انتظر. نحن نعمل مع Apache Cassandra على قاعدة بيانات NoSQL. لا يمكننا نمذجة بياناتنا وإنشاء طاولتنا دون مزيد من المعلومات. ما هي الاستفسارات التي سأقوم بتنفيذها على هذه البيانات؟ في هذه الحالة ، أرغب في الحصول على كل ألبوم تم إصداره في عام معين. عرض هذا الاستعلام هنا. اختر نجمة من مكتبة الموسيقى حيث العام يساوي 1970. ولهذا السبب ، أحتاج إلى أن أكون قادرًا على القيام بمكان في السنة. سيصبح العام مفتاح القسم الخاص بي ، وسيكون اسم الفنان هو عمود التجميع الخاص بي لجعل كل مفتاح أساسي فريدًا. تذكر ، لا توجد نسخ مكررة في Apache Cassandra. لذلك إذا لم يكن لدي مفتاح فريد ، فسيتم الكتابة فوقه. في هذه الحالة ، سيكون اسم الجدول الخاص بي هو مكتبة الموسيقى ، وسيكون العمود الخاص بي هو اسم الألبوم ، واسم الفنان ، والسنة ، ثم هذا هو المفتاح ، المفتاح الأساسي. سأقوم بالتقسيم حسب السنة ثم أدرج اسم الفنان الخاص بي لجعله فريدًا لأننا نتخيل أن فنانًا لا ينشئ أكثر من ألبوم واحد في عام واحد. إنه مجرد افتراض نقوم به لهذا العرض التوضيحي وقد يكون في الواقع غير صحيح. ولكن فقط من أجل العرض التوضيحي ، هذا ما نفترضه. الآن دعنا نترجم هذه المعلومات إلى بيان إنشاء جدول. لمزيد من المعلومات حول أنواع البيانات في Apache Cassandra ، يمكنك عرض هذا المستند هنا. الآن ، لا تقلق إذا كان كل هذا يبدو محيرًا بعض الشيء. سننفق كل الدرس 3 على هذه الموضوعات. لذلك سنقوم بإنشاء جدول إذا لم يكن موجودًا ، music_library. ثم من هناك ، سيكون لدينا العام الذي سنمثله كـ int ، اسم فناننا الذي سنمثله كنص ، مرة أخرى مثل سلسلة أو varchar في Postgres ، اسم ألبومنا كنص وها نحن إعادة تعيين مفتاحنا الأساسي والمفتاح الأساسي والسنة واسم الفنان ، ويجب أن يكون ذلك بين قوسين. لذلك سنقوم بتنفيذ هذا. لذلك إذا لم يتم العثور على أخطاء ، ولكن دعنا نتحقق للتأكد من إنشاء جدولنا. لنقم بتحديد نجمة العد والتي يجب أن تعود كصفر ، لأننا لم ندرج أي صفوف. الآن اعتمادًا على إصدار Apache Cassandra الذي قمت بتثبيته ، قد يؤدي هذا الأمر في الواقع إلى حدوث خطأ ، أو قد يُظهر إجابة الصفر. هذا ما كنت اتوقعه. مرة أخرى ، لا يتم إجراء هذه الأنواع من الاستعلامات عادةً على مجموعات بيانات كبيرة لأننا نقوم فقط بعمل عرض توضيحي وأردت فقط أن أوضح لك أن الجدول قد تم إنشاؤه. أنا أقوم بفعل هذا. ولكن على مجموعة بيانات كبيرة ، ربما تنتشر عبر طاولة ، منتشرة عبر آلاف العقد. أنت لا تريد أن تقوم بتحديد عدد النجمة أو تحديد نجمة. لكننا نفعل ذلك فقط من أجل العرض التوضيحي. حسنًا ، رائع ، لقد قمت بتحديد نجم الكونت الخاص بي من مكتبتي الموسيقية واستعدت عدد صفر. لذا مرة أخرى ، دعنا ندخل الصفين. بناء جملة مشابه جدًا لما رأيناه في Postgres ، مختلف قليلاً. لذلك سنقوم بإدراجها في music_library. لذلك في هذه الحالة ، نقوم فقط بإعداد متغير استعلام واحد حتى نتمكن من استخدامه مرارًا وتكرارًا. كان بإمكاننا أيضًا القيام بذلك كما فعلنا في تمرين Postgres ، لكن هذا جعله أكثر نظافة قليلاً. ولكن كما ترى ، لدينا الملحق الخاص بنا ، لدينا أعمدةنا المدرجة هنا ، ثم قيمنا مع النسبة المئوية s. سنقوم بعد ذلك بملء تلك باستخدام session.execute ، ثم الاستعلام الخاص بنا ، ثم المعلومات التي سنقدمها إلى عبارات الاستعلام هذه ليتم تنفيذها. لذلك كل عام اسم الفنان واسم الألبوم. فلنتحقق من صحة إدراج بياناتنا في الجدول. لذلك في هذه الحالة ، فقط من أجل العرض التوضيحي ، كما قلت من قبل ، سنقوم بعمل نجمة محددة من الجدول. لكن في نظام إنتاج حقيقي ، لن نقوم بهذا الاستعلام أبدًا. حسنًا ، وحصلنا على إجاباتنا. لذلك تمكنا من الاستعلام عن هذا الجدول بنجاح وقمنا بتحميل هذا الجدول. مرة أخرى ، نظرًا لأن Apache Cassandra لا يسمح بالتكرارات ، يمكنني تشغيل عبارة insert عدة مرات كما أريد ، ولن نحصل أبدًا على أكثر من صفين. لذلك دعونا نتحقق من صحة نموذج البيانات الخاص بنا باستخدام الاستعلام الأصلي. حدد نجمة من مكتبة الموسيقى حيث العام يساوي 1970. لذا ها هو استفساري هنا ، وسأقوم بتنفيذه بهذا الجلب والتنفيذ ، وبعد ذلك سأقوم بطباعة الصفوف الخاصة بي. رائع ، لقد استعدت المعلومات التي احتاجها. لذا لدي عام 1970 ، فليكن وفرقة البيتلز. من أجل العرض التوضيحي ، سأقوم بإسقاط هذه الطاولة. ثم ننتهي أخيرًا من هذه الجلسة واتصال الكتلة.
دعنا نتحدث عن حل الدرس الأول ، التمرين الثاني ، إنشاء طاولة باستخدام Apache Cassandra. في هذا التمرين ، استعرضنا أساسيات إنشاء جدول في Apache Cassandra وإدخال صفوف من البيانات. قمنا بعد ذلك بإجراء استعلام CQL بسيط للتحقق من صحة قول استعلام CQL للتحقق من صحة المعلومات. لذلك ، في أي مكان رأيت فيه علامة الجنيه ، ستحتاج إلى ملء هذا الرمز. لذلك بالطبع سنقوم "باستيراد" برنامج تشغيل Python الخاص بنا ، و "استيراد" Cassandra. بعد ذلك ، سننشئ هذا الاتصال بقاعدة البيانات ، ثم سنختبر اتصالنا ، فقط للتأكد من أنه على الرغم من أننا لم نتلق أي خطأ ، فلنتحقق مرة أخرى من أننا إعادة الاتصال بقاعدة البيانات. رائعة. ليس هناك مفتاح مسافة. لقد حصلنا على خطأ ، وهو ما كنا نتوقعه. لم يتم تحديد مسافة مفتاح. استخدم مفتاح مسافة أو انطق اسم keyspace.table بشكل صريح. حسنًا ، هذا منطقي ، لذلك دعونا ننشئ مساحة المفاتيح الخاصة بنا حتى نتمكن من القيام بعملنا من خلالها. تجاهل استراتيجية النسخ المتماثل ومعلومات العوامل في الوقت الحالي. سوف تناقش هذا في وقت لاحق. فقط اعلم أن مثيلًا محليًا لعقدة واحدة ، سيكون هذا هو استراتيجيتك وعامل النسخ المتماثل. لذلك سنقوم بإنشاء مسافة مفتاح إذا لم تكن موجودة. وبعد ذلك سنقوم بالاتصال بمساحة المفاتيح الخاصة بنا. حسنًا ، دعنا ننتقل إلى نمذجة البيانات. لنتخيل أننا نرغب في البدء في إنشاء مكتبة أغاني تضم جميع الأغاني التي نمتلكها. تحتوي كل أغنية على الكثير من المعلومات التي يمكننا إضافتها إلى جدول مكتبة الأغاني ، لكننا سنبدأ فقط باسم الأغنية ، واسم الفنان ، والسنة ، والألبوم الذي جاءت منه ، وإذا كانت أغنية فردية ، إذا لم تكن ' ر جزء من الألبوم. إذن ، عنوان الأغنية ، الفنان ، السنة ، الألبوم ثم الفردي. لكن توقف. نحن نعمل مع Apache Cassandra ، وهي قاعدة بيانات NoSQL. لا يمكننا نمذجة بياناتنا وإنشاء طاولتنا دون مزيد من المعلومات. ما هي الاستفسارات التي سأقوم بتنفيذها على هذه البيانات؟ إذا كنت تتذكر طرح هذا السؤال كلما كنت تقوم بنمذجة البيانات في Apache Cassandra ، فأنت في وضع جيد. في هذه الحالة ، أرغب في الحصول على كل أغنية لفنانين معينين تم إصدارها في عام معين. حدد "بدء" من الأغاني حيث العام يساوي 1970 ، واسم الفنان يساوي البيتلز. لهذا السبب ، يجب أن أكون قادرًا على القيام بوعي على مدار العام. سيصبح العام مفتاح القسم الخاص بنا ، وقد نقوم بتجميع العمود لجعل كل مفتاح أساسي فريدًا. تذكر ، لا توجد نسخ مكررة في Apache Cassandra. الآن ترجم هذا إلى إنشاء بيان الجدول.
لا تقلق إذا كان أي من هذا يبدو محيرًا. سنركز بشدة في الدرس الثالث على هذه الموضوعات. أنشئ الجدول إذا لم يكن موجودًا يسمى الأغاني. سيكون لدينا عام من Int. عنوان الأغنية نص ، اسم الفنان نص ، نص اسم الألبوم وبعد ذلك سنعرف ما إذا كانت أغنية فردية أم لا وسنقوم بتمثيل ذلك باستخدام Boolean. من هناك سنقوم بعمل مفتاحنا الأساسي كعام وأمي فنان.
لنقم بإنشاء هذا الجدول. رائعة. لم يتم العثور على خطأ. لكن دعنا نتحقق للتأكد من إنشاء طاولتنا. لنقم بتحديد سريع لنجمة العد ، والتي يجب أن ترجع صفرًا لأننا لم نجب على أي صفوف. اعتمادًا على نسختك من Apache Cassandra التي لم تحلها ، قد يؤدي ذلك إلى ظهور خطأ في التصفية والسماح به بدلاً من نتيجة الصفر. هذا أمر متوقع حيث لا ينبغي إجراء هذا النوع من الاستعلام على مجموعات البيانات الكبيرة. نحن نفعل هذا فقط من أجل العرض التوضيحي. مرة أخرى ، المزيد عن هذا في الدرس الثالث. حدد عدد النجوم من الأغاني. لذلك في حالتي ، قمت بالفعل بإنشاء هذا الجدول وأدرجت صفوفًا وهذا هو سبب عدم رؤيتك للصفر وترى اثنين. دعونا ندخل صفين عبر الكون. البيتلز 1970 يسقط وليكن. والصف الثاني ، The Beatles Think for yourself يسقط عام 1965 و Rubber Soul. لذلك سنقوم بإدخال هؤلاء. مرة أخرى ، لاحظ الاستعلام هنا. لاحظ عبارة insert مع القيم ثم نقوم بإدخال القيم. رائع. التحقق من صحة البيانات الخاصة بك تم إدراجها في الجدول. يتم استخدام حلقة for لطباعة النتائج. في حالة تنفيذ هذا الاستعلام في CQLSH ، وهو برنامج شيل يمكنك استخدامه لتشغيل استعلامات CQL ، فلن يكون هذا مطلوبًا. اعتمادًا على إصدار Apache Cassandra الذي قمت بتثبيته ، قد يؤدي هذا مرة أخرى إلى ظهور خطأ في التصفية والسماح به بدلاً من وضع الصفين اللذين أدخلناهما للتو. هذا أمر متوقع حيث لا ينبغي إجراء هذا النوع من الاستعلام على مجموعات البيانات الكبيرة. نحن نفعل هذا فقط من أجل العرض التوضيحي. مرة أخرى أكثر من ذلك بكثير في الدرس الثالث. رائع ، لقد استعدنا الصفين. دعنا نتحقق من صحة نموذج البيانات الخاص بنا من خلال استعلامنا الأصلي. حدد نجمة من الأغاني حيث العام يساوي 1970 واسم الفنان يساوي البيتلز. رائع ، لقد عدنا إلى صفنا. رائعة. النجاح. أخيرًا ، لنختتم جلستنا واتصال المجموعة. وقد انتهينا من التمرين.
لذلك دعونا نختتم ما تعلمناه. لقد تعلمنا ما هو نمذجة البيانات ، ومن يقوم بنمذجة البيانات ، ومتى يجب عدم استخدام قواعد البيانات العلائقية ، ومتى يجب عدم استخدام قواعد بيانات NoSQL ، وكيفية إنشاء جدول بسيط و PostgreSQL ، وكيفية إنشاء جدول بسيط في Apache Cassandra. سنركز أكثر في الدرس الثاني على كيفية عمل نمذجة البيانات باستخدام PostgreSQL. سنركز أكثر في الدرس الثالث على كيفية عمل نمذجة البيانات في Apache Cassandra.