الدليل النهائي لقواعد بيانات NoSQL

نشرت: 2022-03-11

ليس هناك شك في أن الطريقة التي تتعامل بها تطبيقات الويب مع البيانات قد تغيرت بشكل كبير خلال العقد الماضي. يتم جمع المزيد من البيانات ويزيد عدد المستخدمين الذين يصلون إلى هذه البيانات بشكل متزامن أكثر من أي وقت مضى. هذا يعني أن قابلية التوسع والأداء يمثلان تحديًا أكثر من أي وقت مضى لقواعد البيانات العلائقية القائمة على المخطط وبالتالي قد يكون من الصعب قياسها.

تطور NoSQL

تم التعرف على مشكلة قابلية التوسع في SQL من قبل شركات Web 2.0 التي لديها احتياجات ضخمة ومتنامية من البيانات والبنية التحتية ، مثل Google و Amazon و Facebook. لقد توصلوا إلى حلولهم الخاصة للمشكلة - تقنيات مثل BigTable و DynamoDB و Cassandra.

نتج عن هذا الاهتمام المتزايد عددًا من أنظمة إدارة قواعد بيانات NoSQL (DBMS) ، مع التركيز على الأداء والموثوقية والاتساق. تم إعادة استخدام عدد من هياكل الفهرسة الحالية وتحسينها بغرض تحسين أداء البحث والقراءة.

أولاً ، كانت هناك أنواع خاصة (مغلقة المصدر) من قواعد بيانات NoSQL طورتها الشركات الكبرى لتلبية احتياجاتها الخاصة ، مثل BigTable من Google ، والذي يُعتقد أنه أول نظام NoSQL ، و DynamoDB من أمازون.

أدى نجاح هذه الأنظمة الاحتكارية إلى تطوير عدد من أنظمة قواعد البيانات مفتوحة المصدر والمملوكة ، وأكثرها شيوعًا هي Hypertable و Cassandra و MongoDB و DynamoDB و HBase و Redis.

ما الذي يجعل NoSQL مختلفة؟

يتمثل أحد الاختلافات الرئيسية بين قواعد بيانات NoSQL وقواعد البيانات العلائقية التقليدية في حقيقة أن NoSQL هو شكل من أشكال التخزين غير المنظم .

هذا يعني أن قواعد بيانات NoSQL لا تحتوي على بنية جدول ثابتة مثل تلك الموجودة في قواعد البيانات العلائقية.

مزايا وعيوب قواعد بيانات NoSQL

مزايا

تتمتع قواعد بيانات NoSQL بالعديد من المزايا مقارنة بقواعد البيانات العلائقية التقليدية.

يتمثل أحد الاختلافات الأساسية الأساسية في أن قواعد بيانات NoSQL لها بنية بسيطة ومرنة. فهي خالية من المخططات.

على عكس قواعد البيانات العلائقية ، تستند قواعد بيانات NoSQL إلى أزواج من القيم الرئيسية.

تتضمن بعض أنواع المخزن لقواعد بيانات NoSQL مخزن الأعمدة ومخزن المستندات ومخزن القيمة الأساسية ومخزن الرسم البياني ومخزن العناصر ومخزن XML وأنماط تخزين البيانات الأخرى.

عادة ، كل قيمة في قاعدة البيانات لها مفتاح. تسمح بعض مخازن قواعد بيانات NoSQL أيضًا للمطورين بتخزين العناصر المتسلسلة في قاعدة البيانات ، وليس فقط قيم السلسلة البسيطة.

لا تتطلب قواعد بيانات NoSQL مفتوحة المصدر رسوم ترخيص باهظة ويمكن تشغيلها باستخدام أجهزة غير مكلفة ، مما يجعل نشرها فعالاً من حيث التكلفة.

أيضًا ، عند العمل مع قواعد بيانات NoSQL ، سواء كانت مفتوحة المصدر أو مملوكة ، يكون التوسيع أسهل وأرخص من العمل مع قواعد البيانات العلائقية. هذا لأنه يتم من خلال القياس الأفقي للحمل وتوزيعه على جميع العقد ، بدلاً من نوع القياس الرأسي الذي يتم عادةً باستخدام أنظمة قواعد البيانات العلائقية ، والتي تحل محل المضيف الرئيسي بأخرى أكثر قوة.

سلبيات

بالطبع ، قواعد بيانات NoSQL ليست مثالية ، وليست دائمًا الاختيار الصحيح.

لسبب واحد ، لا تدعم معظم قواعد بيانات NoSQL ميزات الموثوقية التي يتم دعمها محليًا بواسطة أنظمة قواعد البيانات العلائقية. يمكن تلخيص ميزات الموثوقية هذه على أنها الذرية والاتساق والعزلة والمتانة. هذا يعني أيضًا أن قواعد بيانات NoSQL ، التي لا تدعم هذه الميزات ، تعمل على التناسق التجاري للأداء وقابلية التوسع.

من أجل دعم ميزات الموثوقية والاتساق ، يجب على المطورين تنفيذ رمز الملكية الخاص بهم ، مما يضيف المزيد من التعقيد إلى النظام.

قد يحد هذا من عدد التطبيقات التي يمكنها الاعتماد على قواعد بيانات NoSQL لإجراء معاملات آمنة وموثوقة ، مثل الأنظمة المصرفية.

تتضمن أشكال التعقيد الأخرى الموجودة في معظم قواعد بيانات NoSQL عدم التوافق مع استعلامات SQL. هذا يعني أن هناك حاجة إلى لغة استعلام يدوية أو خاصة ، مما يضيف المزيد من الوقت والتعقيد.

NoSQL مقابل قواعد البيانات العلائقية

يقدم هذا الجدول مقارنة ميزات موجزة بين NoSQL وقواعد البيانات العلائقية:

ميزة قواعد بيانات NoSQL قواعد البيانات العلائقية
أداء متوسط قليل
الموثوقية مسكين جيد
التوفر جيد جيد
التناسق مسكين جيد
مخزن البيانات الأمثل للبيانات الضخمة متوسط ​​الحجم إلى كبير
قابلية التوسع متوسط مرتفع (لكن أغلى ثمناً)


وتجدر الإشارة إلى أن الجدول يوضح مقارنة على مستوى قاعدة البيانات ، وليس أنظمة إدارة قواعد البيانات المختلفة التي تنفذ كلا النموذجين. توفر هذه الأنظمة تقنيات الملكية الخاصة بها للتغلب على بعض المشكلات وأوجه القصور في كلا النظامين ، وفي بعض الحالات ، تعمل على تحسين الأداء والموثوقية بشكل كبير.

أنواع مخزن بيانات NoSQL

متجر القيمة الرئيسية

في نوع مخزن قيمة المفتاح ، يتم استخدام جدول تجزئة يشير فيه مفتاح فريد إلى عنصر.

يمكن تنظيم المفاتيح في مجموعات منطقية من المفاتيح ، ولا تتطلب سوى أن تكون المفاتيح فريدة داخل مجموعتها الخاصة. هذا يسمح لمفاتيح متطابقة في مجموعات منطقية مختلفة. يعرض الجدول التالي مثالاً لمتجر ذي قيمة رئيسية ، حيث يكون المفتاح هو اسم المدينة ، والقيمة هي عنوان جامعة أولستر في تلك المدينة.

مفتاح قيمة
"بلفاست" {"جامعة أولستر ، حرم بلفاست الجامعي ، شارع يورك ، بلفاست ، BT15 1ED"}
"كوليرين" {"جامعة أولستر ، حرم كوليرين الجامعي ، طريق كرومور ، شركة لندنديري ، BT52 1SA"}


توفر بعض تطبيقات متجر القيمة الرئيسية آليات تخزين مؤقت ، مما يعزز أداءها بشكل كبير.

كل ما هو مطلوب للتعامل مع العناصر المخزنة في قاعدة البيانات هو المفتاح. يتم تخزين البيانات في شكل سلسلة أو JSON أو BLOB (كائن ثنائي كبير).

أحد أكبر العيوب في هذا الشكل من قواعد البيانات هو عدم الاتساق على مستوى قاعدة البيانات. يمكن للمطورين إضافة ذلك باستخدام التعليمات البرمجية الخاصة بهم ، ولكن كما ذكرنا من قبل ، فإن هذا يضيف المزيد من الجهد والتعقيد والوقت.

قاعدة بيانات NoSQL الأكثر شهرة والتي تم إنشاؤها على متجر القيمة الرئيسية هي DynamoDB من Amazon.

متجر المستندات

تشبه مخازن المستندات مخازن القيمة الرئيسية من حيث أنها تفتقر إلى المخطط وتستند إلى نموذج قيمة المفتاح. كلاهما ، لذلك ، يشتركان في العديد من نفس المزايا والعيوب. كلاهما يفتقر إلى التناسق على مستوى قاعدة البيانات ، مما يفسح المجال للتطبيقات لتوفير المزيد من ميزات الموثوقية والاتساق.

ومع ذلك ، هناك اختلافات رئيسية بين الاثنين.

في مخازن المستندات ، توفر القيم (المستندات) تشفيرًا للبيانات المخزنة. يمكن أن تكون هذه الترميزات XML أو JSON أو BSON (ثنائي التشفير JSON).

أيضا ، يمكن إجراء الاستعلام على أساس البيانات.

تطبيق قاعدة البيانات الأكثر شيوعًا الذي يعتمد على Document Store هو MongoDB.

مخزن العمود

في قاعدة بيانات Column Store ، يتم تخزين البيانات في أعمدة ، بدلاً من تخزينها في صفوف كما هو الحال في معظم أنظمة إدارة قواعد البيانات العلائقية.

يتكون Column Store من مجموعة أعمدة واحدة أو أكثر تقوم بتجميع أعمدة معينة بشكل منطقي في قاعدة البيانات. يتم استخدام مفتاح لتعريف عدد من الأعمدة في قاعدة البيانات والإشارة إليها ، مع سمة keyspace التي تحدد نطاق هذا المفتاح. يحتوي كل عمود على مجموعات من الأسماء والقيم ، مرتبة ومفصولة بفواصل.

مخازن الأعمدة لديها وصول سريع للقراءة / الكتابة إلى البيانات المخزنة. في مخزن الأعمدة ، يتم تخزين الصفوف التي تتوافق مع عمود واحد كإدخال قرص واحد. هذا يجعل الوصول أسرع أثناء عمليات القراءة / الكتابة.

تتضمن قواعد البيانات الأكثر شيوعًا التي تستخدم متجر الأعمدة من Google BigTable و HBase و Cassandra.

قاعدة الرسم البياني

في قاعدة بيانات Graph Base NoSQL ، يتم استخدام هيكل الرسم البياني الموجه لتمثيل البيانات. يتكون الرسم البياني من حواف وعقد.

رسمياً ، الرسم البياني هو تمثيل لمجموعة من الكائنات ، حيث ترتبط بعض أزواج الكائنات بواسطة روابط. يتم تمثيل الكائنات المترابطة بواسطة تجريدات رياضية تسمى الرؤوس ، وتسمى الروابط التي تربط بعض أزواج الرؤوس بالحواف. يقال إن مجموعة الرؤوس والحواف التي تربطها هي رسم بياني.

رسم بياني حول الرسوم البيانية. في أعلى الوسط يوجد مربع يسمى "رسم بياني" يخرج منه سهمان. كلا السهمين يسمى "السجلات" ؛ يشير أحدهما إلى مربع "العقد" والآخر يشير إلى مربع "العلاقات". يحتوي مربع "العلاقات" على سهم "تنظيم" يشير إلى مربع "العقد". كل من "العقد" و "العلاقات" لها أسهم تسمى "لها" تشير إلى مربع أخير واحد ، "خصائص". بمعنى آخر ، يسجل الرسم البياني العلاقات والعقد ، ولكل منهما خصائص ، وتنظم العلاقات العقد.

يوضح هذا بنية قاعدة بيانات الرسم البياني التي تستخدم الحواف والعقد لتمثيل البيانات وتخزينها. يتم تنظيم هذه العقد من خلال بعض العلاقات مع بعضها البعض ، والتي يتم تمثيلها بالحواف بين العقد. كل من العقد والعلاقات لها بعض الخصائص المحددة.

عادةً ما تستخدم قواعد بيانات الرسم البياني في تطبيقات الشبكات الاجتماعية. تسمح قواعد بيانات الرسم البياني للمطورين بالتركيز أكثر على العلاقات بين الكائنات بدلاً من التركيز على الكائنات نفسها. في هذا السياق ، فهي تسمح بالفعل ببيئة قابلة للتطوير وسهلة الاستخدام.

تعد InfoGrid و InfiniteGraph أكثر قواعد بيانات الرسم البياني شيوعًا حاليًا.

أنظمة إدارة قواعد بيانات NoSQL

لمقارنة مختصرة بين قواعد البيانات ، يقدم الجدول التالي مقارنة موجزة بين أنظمة إدارة قواعد بيانات NoSQL المختلفة.

قوي طريقة الاستعلام واجهه المستخدم لغة برمجة المصدر المفتوح تكرار
كاساندرا مخزن العمود التوفير API تقطير جافا نعم غير متزامن
MongoDB متجر المستندات مونجو الاستعلام TCP / IP سي ++ نعم غير متزامن
جدول فرعي مخزن العمود HQL تقطير جافا نعم غير متزامن
CouchDB متجر المستندات مابريديوس راحة إرلانج نعم غير متزامن
طاولة كبيرة مخزن العمود مابريديوس TCP / IP سي ++ رقم غير متزامن
HBase مخزن العمود مابريديوس راحة جافا نعم غير متزامن


يحتوي MongoDB على مخطط تخزين مرن ، مما يعني أن الكائنات المخزنة ليست مطلوبة بالضرورة أن يكون لها نفس الهيكل أو الحقول. لدى MongoDB أيضًا بعض ميزات التحسين ، والتي توزع مجموعات البيانات عبر ، مما يؤدي إلى تحسين الأداء العام ونظام أكثر توازناً.

أنظمة قواعد بيانات NoSQL الأخرى ، مثل Apache CouchDB ، هي أيضًا قاعدة بيانات من نوع مخزن المستندات ، وتشارك الكثير من الميزات مع MongoDB ، باستثناء أنه يمكن الوصول إلى قاعدة البيانات باستخدام واجهات برمجة تطبيقات RESTful.

REST هو أسلوب معماري يتكون من مجموعة منسقة من القيود المعمارية المطبقة على المكونات والموصلات وعناصر البيانات ، داخل شبكة الويب العالمية. وهو يعتمد على بروتوكول اتصالات عديم الحالة وخادم العميل وقابل للتخزين المؤقت (على سبيل المثال ، بروتوكول HTTP).

تستخدم تطبيقات RESTful طلبات HTTP للنشر وقراءة البيانات وحذف البيانات.

بالنسبة لقواعد بيانات قاعدة الأعمدة ، فإن Hypertable هي قاعدة بيانات NoSQL مكتوبة بلغة C ++ وتستند إلى BigTable من Google.

يدعم Hypertable توزيع مخازن البيانات عبر العقد لزيادة قابلية التوسع ، تمامًا مثل MongoDB و CouchDB.

واحدة من أكثر قواعد بيانات NoSQL استخدامًا هي Cassandra ، التي طورها Facebook.

Cassandra هي قاعدة بيانات مخزن أعمدة تتضمن الكثير من الميزات التي تهدف إلى الموثوقية والتسامح مع الخطأ.

بدلاً من تقديم نظرة متعمقة على كل من NoSQL DBMS ، سيتم استكشاف Cassandra و MongoDB ، وهما من أكثر أنظمة إدارة قواعد بيانات NoSQL استخدامًا ، في الأقسام الفرعية التالية.

كاساندرا

Cassandra هو نظام لإدارة قواعد البيانات تم تطويره بواسطة Facebook.

كان الهدف من Cassandra هو إنشاء DBMS ليس له نقطة فشل واحدة ويوفر أقصى قدر من الإتاحة.

Cassandra هي في الغالب قاعدة بيانات مخزن أعمدة. أشارت بعض الدراسات إلى Cassandra كنظام هجين ، مستوحى من BigTable من Google ، وهي قاعدة بيانات لمتجر الأعمدة ، و DynamoDB من Amazon ، وهي قاعدة بيانات ذات قيمة أساسية.

يتم تحقيق ذلك من خلال توفير نظام قيم المفتاح ، لكن المفاتيح في Cassandra تشير إلى مجموعة من عائلات الأعمدة ، مع الاعتماد على نظام الملفات الموزعة BigTable من Google وميزات توفر Dynamo (جدول التجزئة الموزع).

تم تصميم Cassandra لتخزين كميات هائلة من البيانات الموزعة عبر العقد المختلفة. Cassandra هو نظام DBMS مصمم للتعامل مع كميات هائلة من البيانات ، منتشرة عبر العديد من الخوادم ، مع توفير خدمة عالية التوفر مع عدم وجود نقطة فشل واحدة ، وهو أمر ضروري لخدمة كبيرة مثل Facebook.

تشمل الميزات الرئيسية لكاساندرا ما يلي:

  • لا توجد نقطة واحدة للفشل. لتحقيق ذلك ، يجب أن تعمل كاساندرا على مجموعة من العقد ، بدلاً من جهاز واحد. هذا لا يعني أن البيانات الموجودة في كل مجموعة هي نفسها ، ولكن برنامج الإدارة هو نفسه. عندما يحدث فشل في إحدى العقد ، فلن يمكن الوصول إلى البيانات الموجودة على تلك العقدة. ومع ذلك ، لا يزال من الممكن الوصول إلى العقد (والبيانات) الأخرى.
  • التجزئة الموزعة عبارة عن مخطط يوفر وظائف جدول التجزئة بطريقة لا تؤدي إضافة أو إزالة فتحة واحدة إلى تغيير تعيين المفاتيح إلى الفتحات بشكل كبير. يوفر هذا القدرة على توزيع الحمل على الخوادم أو العقد وفقًا لسعتها ، وبالتالي تقليل وقت التوقف عن العمل.
  • واجهة العميل سهلة الاستخدام نسبيًا . تستخدم Cassandra Apache Thrift لواجهة العميل الخاصة بها. يوفر Apache Thrift عميل RPC متعدد اللغات ، لكن معظم المطورين يفضلون البدائل مفتوحة المصدر المبنية على Apple Thrift ، مثل Hector.
  • ميزات التوافر الأخرى. إحدى ميزات كاساندرا هي نسخ البيانات. بشكل أساسي ، يعكس البيانات إلى العقد الأخرى في الكتلة. يمكن أن يكون النسخ المتماثل عشوائيًا أو محددًا لزيادة حماية البيانات عن طريق وضعه في عقدة في مركز بيانات مختلف ، على سبيل المثال. ميزة أخرى موجودة في Cassandra هي سياسة التقسيم. تحدد سياسة التقسيم مكان العقدة التي سيتم وضع المفتاح عليها. يمكن أن يكون هذا أيضًا عشوائيًا أو مرتبًا. عند استخدام كلا النوعين من سياسات التقسيم ، يمكن أن تحقق Cassandra توازنًا بين موازنة الحمل وتحسين أداء الاستعلام.
  • التناسق. ميزات مثل النسخ المتماثل تجعل الاتساق صعبًا. هذا يرجع إلى حقيقة أن جميع العقد يجب أن تكون محدثة في أي وقت بأحدث القيم ، أو في الوقت الذي يتم فيه تشغيل عملية القراءة. في النهاية ، على الرغم من ذلك ، تحاول Cassandra الحفاظ على التوازن بين إجراءات النسخ وإجراءات القراءة / الكتابة من خلال توفير هذه القابلية للتخصيص للمطور.
  • قراءة / كتابة الإجراءات. يرسل العميل طلبًا إلى عقدة Cassandra واحدة. تقوم العقدة ، وفقًا لسياسة النسخ المتماثل ، بتخزين البيانات في الكتلة. تقوم كل عقدة أولاً بإجراء تغيير البيانات في سجل الالتزام ، ثم تقوم بتحديث بنية الجدول بالتغيير ، وكلاهما يتم بشكل متزامن. عملية القراءة أيضًا متشابهة جدًا ، حيث يتم إرسال طلب القراءة إلى عقدة واحدة ، وهذه العقدة المفردة هي التي تحدد العقدة التي تحتفظ بالبيانات ، وفقًا لسياسة التقسيم / التنسيب.

MongoDB

MongoDB هي قاعدة بيانات خالية من المخططات ، موجهة للمستندات مكتوبة بلغة C ++. تعتمد قاعدة البيانات على مخزن المستندات ، مما يعني أنها تخزن القيم (يشار إليها باسم المستندات) في شكل بيانات مشفرة.

اختيار التنسيق المشفر في MongoDB هو JSON. هذا أمر قوي ، لأنه حتى إذا كانت البيانات متداخلة داخل مستندات JSON ، فستظل قابلة للاستعلام عنها وقابلة للفهرسة .

تصف الأقسام الفرعية التالية بعض الميزات الرئيسية المتوفرة في MongoDB.

شظايا

التقاسم هو تقسيم البيانات وتوزيعها عبر أجهزة متعددة (عقد). القشرة عبارة عن مجموعة من عُقد MongoDB ، على عكس كاساندرا حيث يتم توزيع العقد بشكل متماثل. يعني استخدام الأجزاء أيضًا القدرة على التوسع أفقيًا عبر عقد متعددة. في حالة وجود تطبيق يستخدم خادم قاعدة بيانات واحد ، يمكن تحويله إلى مجموعة مجزأة مع تغييرات قليلة جدًا على كود التطبيق الأصلي لأن الطريقة التي يتم بها التجزئة تتم بواسطة MongoDB. يتم فصل oftware بالكامل تقريبًا عن واجهات برمجة التطبيقات العامة المكشوفة لجانب العميل.

لغة Mongo Query

كما تمت مناقشته سابقًا ، يستخدم MongoDB واجهة برمجة تطبيقات RESTful. لاسترداد مستندات معينة من مجموعة db ، يتم إنشاء مستند استعلام يحتوي على الحقول التي يجب أن تتطابق معها المستندات المطلوبة.

أجراءات

في MongoDB ، توجد مجموعة من الخوادم تسمى أجهزة التوجيه. يعمل كل واحد كخادم لعميل واحد أو أكثر. وبالمثل ، تحتوي المجموعة على مجموعة من الخوادم تسمى خوادم التكوين. كل واحد يحمل نسخة من البيانات الوصفية التي تشير إلى الجزء الذي يحتوي على البيانات. يتم إرسال إجراءات القراءة أو الكتابة من العملاء إلى أحد خوادم جهاز التوجيه في المجموعة ، ويتم توجيهها تلقائيًا بواسطة هذا الخادم إلى الأجزاء المناسبة التي تحتوي على البيانات بمساعدة خوادم التكوين.

على غرار Cassandra ، تحتوي القشرة في MongoDB على مخطط نسخ البيانات ، والذي يُنشئ مجموعة نسخ متماثلة من كل جزء يحتوي على نفس البيانات تمامًا. يوجد نوعان من مخططات النسخ المتماثلة في MongoDB: النسخ المتماثل الرئيسي والتابع والنسخ المتماثل لمجموعة النسخ المتماثلة. توفر مجموعة النسخ المتماثلة مزيدًا من التشغيل الآلي ومعالجة أفضل للفشل ، بينما يتطلب Master-Slave تدخل المسؤول أحيانًا. بغض النظر عن مخطط النسخ المتماثل ، في أي وقت في مجموعة النسخ المتماثلة ، تعمل قطعة واحدة فقط كقطعة أولية ، وجميع قطع النسخ المتماثلة الأخرى هي قطع ثانوية. تنتقل جميع عمليات الكتابة والقراءة إلى الجزء الأساسي ، ثم يتم توزيعها بالتساوي (إذا لزم الأمر) على الأجزاء الثانوية الأخرى في المجموعة.

في الرسم أدناه ، نرى بنية MongoDB الموضحة أعلاه ، والتي تظهر خوادم جهاز التوجيه باللون الأخضر وخوادم التكوين باللون الأزرق والأجزاء التي تحتوي على عقد MongoDB.

أربعة شظايا مرقمة تحتوي كل منها على 3 عقد "mondgod". يتم تلوين Shard4 باللون الرمادي ويظهر تحت عنوان "مجموعة النسخ المتماثلة". يتم توصيل Shard1 بمجموعة من ثلاث عقد "C1 mongod" زرقاء تسمى "خوادم التكوين ؛" المجموعة وكل جزء من القطع متصلة بسلسلة من العقد الخضراء "النمس". هذه السلسلة ، بدورها ، متصلة بسلسلة من العملاء.

وتجدر الإشارة إلى أن التجزئة (أو مشاركة البيانات بين الأجزاء) في MongoDB تتم بشكل تلقائي تمامًا ، مما يقلل من معدل الفشل ويجعل MongoDB نظامًا لإدارة قواعد البيانات قابلاً للتوسع بدرجة كبيرة.

هياكل الفهرسة لقواعد بيانات NoSQL

الفهرسة هي عملية إقران مفتاح بموقع سجل البيانات المقابل في نظام إدارة قواعد البيانات. هناك العديد من هياكل بيانات الفهرسة المستخدمة في قواعد بيانات NoSQL. ستناقش الأقسام التالية بإيجاز بعض الطرق الأكثر شيوعًا ؛ وهي فهرسة B-Tree وفهرسة T-Tree وفهرسة O2-Tree.

فهرسة B-Tree

تعد B-Tree واحدة من أكثر هياكل الفهرس شيوعًا في نظم إدارة قواعد البيانات.

في الأشجار B ، يمكن أن تحتوي العقد الداخلية على عدد متغير من العقد الفرعية ضمن نطاق محدد مسبقًا.

يتمثل أحد الاختلافات الرئيسية عن الهياكل الشجرية الأخرى ، مثل AVL ، في أن B-Tree تسمح للعقد بأن يكون لها عدد متغير من العقد الفرعية ، مما يعني موازنة أقل للشجرة ولكن المزيد من المساحة الضائعة.

B + -Tree هي واحدة من أكثر المتغيرات شيوعًا من B-Trees. B + -Tree هو تحسين على B-Tree يتطلب بقاء جميع المفاتيح في الأوراق.

فهرسة T- شجرة

تم تصميم بنية بيانات T-Trees من خلال الجمع بين ميزات من AVL-Trees و B-Trees.

AVL-Trees هي نوع من أشجار البحث الثنائية ذاتية التوازن ، بينما B-Trees غير متوازنة ، ويمكن أن تحتوي كل عقدة على عدد مختلف من الأطفال.

في T-Tree ، يشبه الهيكل إلى حد بعيد AVL-Tree و B-Tree.

تخزن كل عقدة أكثر من مجموعة {key-value، pointer}. أيضًا ، يتم استخدام البحث الثنائي مع العقد متعددة المجموعات لإنتاج تخزين وأداء أفضل.

تحتوي شجرة T على ثلاثة أنواع من العقد: العقدة T التي لها طفل يمين ويسار ، وعقدة ورقية ليس بها أطفال ، وعقدة نصف ورقة مع طفل واحد فقط.

من المعتقد أن T-Trees لديها أداء عام أفضل من AVL-Trees.

فهرسة شجرة O2

تعد O2-Tree في الأساس تحسينًا على الأشجار ذات اللون الأحمر والأسود ، وهي شكل من أشكال شجرة البحث الثنائي ، حيث تحتوي العقد الطرفية على مجموعات {القيمة الرئيسية ، المؤشر}.

تم اقتراح O2-Tree لتحسين أداء طرق الفهرسة الحالية. تفي شجرة O2 بترتيب m (m ≥ 2) ، حيث m هي الدرجة الدنيا للشجرة ، بالخصائص التالية:

  • كل عقدة إما حمراء أو سوداء. الجذر أسود.
  • يتم تلوين كل عقدة ورقية باللون الأسود وتتكون من كتلة أو صفحة تحتوي على أزواج من "القيمة الرئيسية ، مؤشر التسجيل".
  • إذا كانت العقدة حمراء ، فإن طفليها يكونان من السود.
  • لكل عقدة داخلية ، تحتوي جميع المسارات البسيطة من العقدة إلى العقد الطرفية الفرعية على نفس عدد العقد السوداء. تحتوي كل عقدة داخلية على قيمة مفتاح واحدة.
  • العقد الورقية عبارة عن كتل بها أزواج بين ⌈m / 2⌉ و m "قيمة مفتاح ، مؤشر سجل".
  • إذا كانت الشجرة تحتوي على عقدة واحدة ، فيجب أن تكون ورقة ، وهي جذر الشجرة ، ويمكن أن تحتوي على ما بين 1 إلى م من عناصر البيانات الرئيسية.
  • العقد الورقية مرتبطة بشكل مزدوج في اتجاهين للأمام والخلف.

هنا ، نرى مقارنة أداء مباشرة بين O2-Tree و T-Tree و B + -Tree و AVL-Tree و Red-Black Tree:

رسم بياني يقارن "إجمالي الوقت بالثواني" (0-250) على المحور ص و "نسبة التحديث" (0-100) على المحور س. تبدأ جميع أنواع الأشجار الخمسة بإجمالي مرات أقل من 100 على اليسار ، ثم تزيد على اليمين. تزداد O2-Tree و T-Tree و AVL-Tree بشكل أبطأ من الأخريين نحو اليمين ، حيث تنتهي AVL-Tree حول 125 ، وتنتهي O2-Tree حول 75 ، و T-Tree في مكان ما بينهما. يحتوي Red-Black Tree و B + -Tree على المزيد من الصعود والهبوط ، وينتهي كلاهما بالقرب من بعضهما البعض في أعلى اليمين ، مع وجود Red-Black Tree ذات قيمة أعلى قليلاً هناك.

كان ترتيب T-Tree و B + -Tree و O2-Tree المستخدم م = 512.

يتم تسجيل الوقت لعمليات البحث والإدراج والحذف بنسب تحديث تتراوح بين 0٪ -100٪ لمؤشر 50 مليون سجل ، مع العمليات التي أدت إلى إضافة 50 مليون سجل أخرى إلى الفهرس.

من الواضح أنه مع نسبة تحديث تبلغ 0-10٪ ، فإن أداء B-Tree و T-Tree أفضل من O2-Tree. ومع ذلك ، مع زيادة نسبة التحديث ، يؤدي فهرس O2-Tree أداءً أفضل بكثير من معظم هياكل البيانات الأخرى ، حيث يعاني هيكل B-Tree و Red-Black Tree أكثر من غيره.

ما هي قضية NoSQL؟

مقدمة سريعة لقواعد بيانات NoSQL ، تسلط الضوء على المجالات الرئيسية التي تقصر فيها قواعد البيانات العلائقية التقليدية ، تؤدي إلى الوجبات الجاهزة الأولى:

بينما توفر قواعد البيانات العلائقية الاتساق ، إلا أنها لم يتم تحسينها لتحقيق أداء عالٍ في التطبيقات التي يتم فيها تخزين البيانات الضخمة ومعالجتها بشكل متكرر.

اكتسبت قواعد بيانات NoSQL الكثير من الشعبية بسبب الأداء العالي وقابلية التوسع العالية وسهولة الوصول ؛ ومع ذلك ، لا يزالون يفتقرون إلى الميزات التي توفر التناسق والموثوقية.

لحسن الحظ ، هناك عدد من أنظمة إدارة قواعد بيانات NoSQL التي تعالج هذه التحديات من خلال تقديم ميزات جديدة لتعزيز قابلية التوسع والموثوقية.

لا تعمل جميع أنظمة قواعد بيانات NoSQL بشكل أفضل من قواعد البيانات العلائقية.

يتمتع كل من MongoDB و Cassandra بأداء مشابه ، وفي معظم الحالات أفضل ، من أداء قواعد البيانات العلائقية في عمليات الكتابة والحذف.

لا توجد علاقة مباشرة بين نوع المتجر وأداء NoSQL DBMS. تخضع تطبيقات NoSQL لتغييرات ، لذلك قد يختلف الأداء.

لذلك ، يجب دائمًا تحديث قياسات الأداء عبر أنواع قواعد البيانات في الدراسات المختلفة بأحدث إصدارات برامج قواعد البيانات حتى تكون هذه الأرقام دقيقة.

على الرغم من أنه لا يمكنني تقديم حكم نهائي بشأن الأداء ، فإليك بعض النقاط التي يجب وضعها في الاعتبار:

  • تُستخدم الفهرسة التقليدية B-Tree و T-Tree بشكل شائع في قواعد البيانات التقليدية.
  • عرضت إحدى الدراسات تحسينات وتحسينات من خلال الجمع بين خصائص هياكل الفهرسة المتعددة للتوصل إلى O2-Tree.
  • تفوق O2-Tree على الهياكل الأخرى في معظم الاختبارات ، خاصة مع مجموعات البيانات الضخمة ونسب التحديث العالية.
  • قدمت بنية B-Tree أسوأ أداء لجميع هياكل الفهرسة التي تمت تغطيتها في هذه المقالة.

يمكن وينبغي القيام بمزيد من العمل لتعزيز اتساق أنظمة NoSQL DBMS. يعد تكامل كلا النظامين ، NoSQL وقواعد البيانات العلائقية ، مجالًا لمزيد من الاستكشاف.

أخيرًا ، من المهم ملاحظة أن NoSQL هي إضافة جيدة لمعايير قواعد البيانات الحالية ، ولكن مع بعض التحذيرات المهمة. تستخدم NoSQL ميزات الموثوقية والاتساق من أجل الأداء الهائل والقابلية للتوسع. هذا يجعله حلاً متخصصًا ، حيث لا يزال عدد التطبيقات التي يمكنها الاعتماد على قواعد بيانات NoSQL محدودًا.

الاتجاه الصعودي؟ قد لا يوفر التخصص الكثير من المرونة ، ولكن عندما ترغب في إنجاز مهمة متخصصة بأسرع ما يمكن وكفاءة ، فلن تحتاج إلى سكين الجيش السويسري. أنت بحاجة إلى NoSQL.

الموضوعات ذات الصلة: منصة ذكاء الأعمال: برنامج تعليمي باستخدام خط تجميع MongoDB