اسمحوا لي أن أقدم لكم لمحة سريعة عن MongoDB.
لماذا هو مونغودب مثيرة للاهتمام؟
كيف هو مفيد لطلبنا؟
وما هي بعض الميزات البارزة لـ MongoDB
على النقيض من قواعد بيانات SQL التقليدية؟
لذلك لن تكون هذه معاهدات أو قواعد بيانات كاملة.
أفترض أن لديك معرفة كافية لقواعد البيانات.
لذلك ما أود أن أعرض ما MongoDB سيكون من السهل عليك اتباعه.
من معرفتك السابقة بقواعد البيانات،
أفترض أنك تفهم بالفعل أن قواعد البيانات تستخدم لتخزين البيانات المنظمة
وأيضا تمكنك
من تنفيذ عمليات مختلفة للبيانات بما في ذلك الاستعلام عن البيانات،
وإدراج السجلات في قاعدة البيانات،
وتحديث سجل موجود في قاعدة البيانات أو حذف سجل من قاعدة البيانات.
عمليات crud النموذجية التي يتم دعمها في قواعد البيانات.
لقد كانت لغة الاستعلام المنظمة أو قواعد البيانات المستندة إلى SQL
شائعة جدًا لفترة طويلة كوسيلة لتخزين البيانات.
ميسكل هو مثال واحد من قاعدة البيانات المستندة إلى سكل.
وقد كانت فعالة جدا في تخزين
البيانات ومن ثم تلبية العديد من احتياجات التطبيقات.
في الواقع، العديد من المواقع تستخدم بالفعل قواعد بيانات SQL كخلفية لتخزين البيانات بالنظر إلى
أن السبب في عدم وجود قواعد بيانات SQL
مهمة مع أنواع جديدة من التطبيقات التي تأتي عبر الإنترنت.
هناك طلب متزايد على
ميزات جديدة ليس كل من قواعد البيانات المستندة إلى SQL يمكن أن تعالج.
لذلك هذا هو المكان الذي قاعدة البيانات المستندة إلى NoSQL ليست فقط
قاعدة البيانات المستندة إلى SQL تكتسب الكثير من المنح،
MongoDB كونها أحد الأمثلة على ذلك.
لذلك تم تصميم قواعد بيانات NoSQL
لمعالجة بعض أوجه القصور في قواعد البيانات المستندة إلى SQL.
يمكن تصنيف قواعد بيانات NoSQL نفسها إلى أربع فئات مختلفة.
لدينا قواعد بيانات تستند إلى المستندات مثل MongoDB،
لدينا قواعد بيانات أكثر بساطة تستند إلى القيمة الرئيسية مثل Redis،
وقواعد البيانات المستندة إلى العمود العائلي مثل Cassandra ثم أحدث قواعد بيانات الرسم البياني مثل
Neo4J وبالفعل هناك الآن أكثر في السوق من هذه الأمثلة التي أعطيتها.
ولكن بالطبع في هذه الدورة،
سوف نركز في المقام الأول على قواعد البيانات المستندة إلى الوثائق، MongoDB على وجه الخصوص.
لذلك سأراجع المزيد عن MongoDB في بقية هذه المحاضرة.
قواعد بيانات المستندات، كما يوحي الاسم،
مبنية حول المستندات.
الوثيقة هي وحدة معلومات مستقلة ويمكن أن تكون في العديد من الأشكال المختلفة،
JSON هي واحدة من الأشكال الأكثر شعبية لتخزين الوثائق في قاعدة بيانات المستندات.
على سبيل المثال، يتم عرض مستند JSON هنا
وهذا سيكون شيئًا يتم منحه في قاعدة بيانات مستندات نموذجية.
يمكن تنظيم الوثائق نفسها في مجموعات.
لذا فإن المجموعة عبارة عن مجموعة من المستندات، وبدورها،
يمكن اعتبار قاعدة البيانات نفسها كمجموعة من المجموعات.
لذا ستحدث هذه المصطلحات، «مجموعات المستندات» و «قاعدة البيانات»
بشكل متكرر عندما نناقش حول قواعد بيانات المستندات و MongoDB على وجه الخصوص.
لماذا قواعد بيانات NoSQL ذات أهمية بالنسبة لنا؟ على
وجه الخصوص، قابلية التوسع هي واحدة من
الأسباب التي تجعل قواعد بيانات NoSQL قد ألقت بشكل جيد للغاية.
الآن من حيث قابلية التوسع،
عندما ننظر إلى المتطلبات اثنين؛
توافر واتساق قواعد البيانات، عادة،
تجد قواعد بيانات SQL أنه من الصعب جدا تلبية كلا المتطلبات في وقت واحد.
لذلك هناك مقايضة بين التوافر والاتساق.
لذلك هذا هو المكان الذي كانت قواعد بيانات NoSQL
أكثر نجاحًا في تلبية كلا المتطلبات.
هذا هو المكان الذي يبرز الجانب الثالث هنا،
التسامح التقسيم، ويأتي أيضا حيز التنفيذ.
الآن تقسيم قاعدة بيانات SQL ثم توزيعها ليس بسيطًا.
في حين أن قاعدة بيانات NoSQL أكثر قابلية
للتقسيم الفرعي ثم توزيعها عبر خوادم متعددة.
الجانب الثاني من سبب شعبية قواعد بيانات NoSQL هو سهولة النشر.
عند استخدام قاعدة بيانات SQL،
هناك حاجة لمطابقة السجلات في قاعدة بيانات SQL الخاصة بك مرة أخرى
إلى كائنات بلغتك الأصلية مثل Java أو Javascript وما إلى ذلك.
لذلك هناك حاجة لرسم الخرائط العلائقية للكائن وهذا هو
المكان الذي تحتاج فيه بوابة وسيطة لملء هذا الشرط.
مع قاعدة بيانات NoSQL مثل قاعدة بيانات تستند إلى المستند تخزن البيانات في شكل JSON،
يصبح التعيين مستقيمًا تمامًا وهذا أحد الأسباب التي جعلت
قواعد بيانات NoSQL تحظى بشعبية كبيرة في منطقة تطوير الويب.
القادمة إلى MongoDB على وجه الخصوص،
MongoDB هي قاعدة بيانات وثيقة.
يمكن للخادم نفسه دعم قواعد بيانات متعددة.
قاعدة البيانات على وجه الخصوص هي مجموعة من المجموعات
والمجموعة نفسها كما ناقشنا في وقت سابق هي مجموعة من الوثائق.
لذلك يصبح المستند وحدة المعلومات في حالة MongoDB.
المستند في MongoDB ليس سوى مستند JSON.
في الواقع، يقوم MongoDB بتخزين المستند في شكل أكثر إحكاما يسمى بتنسيق BSON.
سنتحدث عن ذلك في الشريحة التالية
في حين أن MongoDB عبارة عن قاعدة بيانات تستند إلى المستند،
فإنها تخزن مستندات JSON في نموذج مضغوط
يسمى بتنسيق BSON أو تنسيق JSON الثنائي.
الآن يدعم هذا بادئة الطول على كل قيمة
بحيث يصبح التخطي عبر حقل أكثر سهولة.
كما ترى، يدعم MongoDB ميزات إضافية من قاعدة بيانات مستندات بسيطة.
يتم أيضًا تخزين المعلومات حول نوع قيمة الحقل.
وبالإضافة إلى ذلك، داخل وثيقة JSON،
يتم تخزين أنواع بدائية إضافية والتي تكون مفيدة
عند تنفيذ عمليات على قاعدة البيانات.
أشياء مثل تنسيق تاريخ UTC،
فإنه يدعم أيضًا ثنائي خام ويستخدم أيضًا تنسيق معرف
الكائن لتخزين معرف كل مستند في قاعدة البيانات إذا اخترت ذلك.
دعونا نتحدث عن ذلك بمزيد من التفصيل في الشريحة التالية.
دعونا نتحدث عن معرف كائن MongoDB.
يجب أن يكون لكل مستند في قاعدة بيانات MongoDB حقل
معرف، حقل معرف تسطير سفلي،
والذي يعمل كمفتاح أساسي للمستند.
وهذا الحقل فريد لكل مستند.
يمكن استخدام حقل المعرف نفسه في
العديد من التنسيقات وتنسيق معين
يعينه MongoDB تلقائيًا في حالة عدم اختيار استخدام حقل المعرف الخاص بك
هو معرف الكائن الذي يتم إنشاؤه افتراضيًا بواسطة MongoDB.
لذا فإن معرف الكائن نفسه هو
جزء منظم من المعلومات ولكن يتم تخزينه كمعرف للمستند.
على سبيل المثال،
يحتوي حقل المعرف الذي يتم تعيينه تلقائيًا بواسطة Mongo في حالة عدم تحديد حقل معرف، على معرف الكائن في شكل سلسلة طويلة.
الآن تحتوي هذه السلسلة على تنسيق محدد
يمكّنها من تخزين عدد من أجزاء المعلومات داخل معرف الكائن.
دعونا ننظر إلى بنية معرف الكائن نفسه في الشريحة التالية.
كما ذكرت، حقل معرف الكائن نفسه هو
حقل 12 بايت الذي يخزن المعلومات بتنسيق معين.
تتضمن البايت الأربعة الأولى طابع زمني،
الطابع الزمني Unix النموذجي في دقة ثانية واحدة.
لذلك يقال هذا في البايت الأربعة الأولى.
ثم وحدات البايت الثلاثة التالية نحو معرف الجهاز،
الجهاز الذي يعمل عليه خادم Mongo
والبايتيتان التاليتان هما معرف العملية،
وعملية Mongo المحددة التي أنشأت
هذا المستند ثم الحقل الأخير هو زيادة.
الآن كما تفهم،
حقل الطابع الزمني نفسه هو في دقة ثانية.
لذلك إذا كان لديك مستندات متعددة يتم تخزينها في نفس الثانية،
فسيميز حقل الزيادة بين المستندات.
أنها زيادة الحقل هو حقل التزايد الذاتي.
لذلك ستحصل كل مستند جديد تم إنشاؤه خلال ثانية على قيمة زيادة جديدة.
لذلك جنبا إلى جنب مع هذين الاثنين،
يمكنك بسهولة التمييز بين
المستندات المختلفة التي يتم تخزينها داخل قاعدة بيانات المستند الخاص بك.
لذلك هذا يتيح لك إعطاء معرف فريد بوضوح لكل مستند.
ليس ذلك فقط، بالنظر إلى معرف،
يمكنك بسهولة استرداد المعلومات من هذا المعرف.
على سبيل المثال، يمكنك الحصول على عقد من ObjectID ثم استدعاء
طريقة getTimestamp لمعرف الكائن
وهذا سيعود الطابع الزمني بتنسيق تاريخ ISO.
لذلك سوف تمكنك من تحديد متى تم إنشاء هذا المستند.
مع هذا الفهم السريع لـ MongoDB،
دعنا ننتقل إلى التمرين حيث سنقوم أولاً بتثبيت MongoDB على جهاز الكمبيوتر الخاص بنا
ثم نتفاعل مع قاعدة بيانات MongoDB باستخدام تموج Mongo،
وقراءة تقييم حلقة الطباعة التي تدعمها Mongo.
الآن بعد ذلك، سننظر في كيفية الوصول
إلى خادم Mongo من داخل تطبيق العقدة في الدرس التالي.