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

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

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

الاستخدام

دعم للبحث السريع

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

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

الفهرس هو أي بنية بيانات تعمل على تحسين أداء البحث. هناك العديد من هياكل البيانات المختلفة المستخدمة لهذا الغرض. هناك مقايضات تصميم معقدة تتضمن أداء البحث وحجم الفهرس وأداء تحديث الفهرس. تُظهر العديد من تصميمات الفهرس أداء بحث لوغاريتمي ( O (log(N))) وفي بعض التطبيقات من الممكن تحقيق أداء مسطح ( O (1)).

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

تُستخدم الفهارس لمراقبة قيود قاعدة البيانات ، مثل UNIQUE وEXCLUSION و PRIMARY KEY و FOREIGN KEY . يمكن إعلان الفهرس على أنه UNIQUE، مما ينشئ قيدًا ضمنيًا على الجدول الأساسي. عادةً ما تنشئ أنظمة قواعد البيانات فهرسًا ضمنيًا على مجموعة من الأعمدة المعلنة على أنها PRIMARY KEY، وبعضها قادر على استخدام فهرس موجود بالفعل لمراقبة هذا القيد. تتطلب العديد من أنظمة قواعد البيانات فهرسة كل من مجموعات الأعمدة المرجعية والمشار إليها في قيد FOREIGN KEY، وبالتالي تحسين أداء عمليات الإدراج والتحديث والحذف للجداول المشاركة في القيد.

تدعم بعض أنظمة قواعد البيانات قيد الاستبعاد الذي يضمن أنه بالنسبة لسجل تم إدخاله أو تحديثه حديثًا، لا ينطبق شرط معين على أي سجل آخر. يمكن استخدام هذا لتنفيذ قيد فريد (مع شرط المساواة) أو قيود أكثر تعقيدًا، مثل التأكد من عدم تخزين نطاقات زمنية متداخلة أو كائنات هندسية متقاطعة في الجدول. مطلوب فهرس يدعم البحث السريع عن السجلات التي تلبي الشرط لمراقبة مثل هذا القيد. [1]

هندسة الفهرس وطرق الفهرسة

غير مجمعة

توجد البيانات بترتيب عشوائي، ولكن الترتيب المنطقي يتم تحديده بواسطة الفهرس. يمكن توزيع صفوف البيانات في جميع أنحاء الجدول بغض النظر عن قيمة العمود أو التعبير المفهرس. تحتوي شجرة الفهرس غير المجمعة على مفاتيح الفهرس بترتيب مرتب، مع احتواء مستوى الورقة للفهرس على المؤشر إلى السجل (الصفحة ورقم الصف في صفحة البيانات في محركات تنظيم الصفحات؛ إزاحة الصف في محركات تنظيم الملفات).

في فهرس غير مجمع،

  • الترتيب الفعلي للصفوف ليس هو نفسه ترتيب الفهرس.
  • الأعمدة المفهرسة هي عادةً أعمدة مفاتيح غير أساسية تُستخدم في جمل JOIN وWHERE وORDER BY.

يمكن أن يكون هناك أكثر من فهرس غير مجمع على جدول قاعدة البيانات.

مجمعة

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

نظرًا لأن السجلات المادية مرتبة بهذا الترتيب على القرص، فإن العنصر التالي في الصف في التسلسل يكون قبل العنصر الأخير أو بعده مباشرةً، وبالتالي فإن عدد عمليات قراءة كتلة البيانات المطلوبة أقل. وبالتالي فإن الميزة الأساسية للفهرس المجمّع هي ترتيب صفوف البيانات المادية وفقًا لكتل ​​الفهرس التي تشير إليها. تفصل بعض قواعد البيانات كتل البيانات والفهرس في ملفات منفصلة، ​​بينما تضع قواعد بيانات أخرى كتلتي بيانات مختلفتين تمامًا داخل نفس الملف(الملفات) المادية.

تَجَمَّع

عندما يتم ضم قواعد بيانات وجداول متعددة، يطلق على ذلك اسم مجموعة (لا ينبغي الخلط بينه وبين الفهرس المجمّع الموصوف سابقًا). يجب تخزين السجلات الخاصة بالجداول التي تشترك في قيمة مفتاح مجموعة معًا في نفس كتل البيانات أو كتل البيانات القريبة. قد يؤدي هذا إلى تحسين انضمام هذه الجداول على مفتاح المجموعة، حيث يتم تخزين السجلات المطابقة معًا ويتطلب الأمر إدخال/إخراج أقل لتحديد موقعها. [2] يحدد تكوين المجموعة تخطيط البيانات في الجداول التي تعد أجزاء من المجموعة. يمكن ترميز المجموعة باستخدام فهرس شجرة B أو جدول تجزئة . يتم تحديد كتلة البيانات حيث يتم تخزين سجل الجدول من خلال قيمة مفتاح المجموعة.

ترتيب العمود

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

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

في مثال دفتر الهاتف مع فهرس مركب تم إنشاؤه على الأعمدة ( city, last_name, first_name)، إذا بحثنا عن طريق إعطاء قيم دقيقة لجميع الحقول الثلاثة، يكون وقت البحث ضئيلًا—ولكن إذا قدمنا ​​القيم لـ cityو first_nameفقط، يستخدم البحث cityالحقل فقط لاسترداد جميع السجلات المطابقة. ثم يتحقق البحث المتسلسل من المطابقة مع first_name. لذا، لتحسين الأداء، يجب التأكد من إنشاء الفهرس حسب ترتيب أعمدة البحث.

التطبيقات والقيود

تعد الفهارس مفيدة للعديد من التطبيقات ولكنها تأتي مع بعض القيود. ضع في اعتبارك بيان SQL التالي: . لمعالجة هذا البيان بدون فهرس، يجب أن ينظر برنامج قاعدة البيانات إلى عمود last_name في كل صف في الجدول (يُعرف هذا باسم فحص الجدول الكامل ). مع الفهرس، تتبع قاعدة البيانات ببساطة بنية بيانات الفهرس (عادةً شجرة B ) حتى يتم العثور على إدخال سميث؛ وهذا أقل تكلفة حسابيًا بكثير من فحص الجدول الكامل. SELECT first_name FROM people WHERE last_name = 'Smith';

فكر في بيان SQL هذا: . سيعطي هذا الاستعلام عنوان بريد إلكتروني لكل عميل ينتهي عنوان بريده الإلكتروني بـ "@wikipedia.org"، ولكن حتى إذا تمت فهرسة عمود عنوان البريد الإلكتروني، فيجب على قاعدة البيانات إجراء مسح كامل للفهرس. وذلك لأن الفهرس مبني على افتراض أن الكلمات تنتقل من اليسار إلى اليمين. مع وجود حرف بدل في بداية مصطلح البحث، لا يستطيع برنامج قاعدة البيانات استخدام بنية بيانات الفهرس الأساسية (بعبارة أخرى، لا يمكن استخدام جملة WHERE ). يمكن حل هذه المشكلة من خلال إضافة فهرس آخر تم إنشاؤه في واستعلام SQL مثل هذا: . يضع هذا الحرف البدائي في الجزء الأيمن من الاستعلام (الآنSELECT email_address FROM customers WHERE email_address LIKE '%@wikipedia.org';reverse(email_address)SELECT email_address FROM customers WHERE reverse(email_address) LIKE reverse('%@wikipedia.org');جرو.ايديبيكيو@%)، وهو ما يمكن أن يلبيه الفهرس الموجود على reverse(email_address).

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

أنواع المؤشرات

مؤشر الخريطة النقطية

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

مؤشر الكثافة

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

مؤشر متفرق

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

مؤشر عكسي

يعكس مؤشر المفتاح العكسي قيمة المفتاح قبل إدخالها في المؤشر. على سبيل المثال، تصبح القيمة 24538 هي 83542 في المؤشر. يعد عكس قيمة المفتاح مفيدًا بشكل خاص لفهرسة البيانات مثل أرقام التسلسل، حيث تتزايد قيم المفتاح الجديدة بشكل رتيب.

الفهرس المقلوب

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

المؤشر الأساسي

يحتوي الفهرس الأساسي على الحقول الرئيسية للجدول ومؤشر إلى الحقول غير الرئيسية للجدول. يتم إنشاء الفهرس الأساسي تلقائيًا عند إنشاء الجدول في قاعدة البيانات.

المؤشر الثانوي

يتم استخدامه لفهرسة الحقول التي لا تعتبر حقول ترتيب ولا حقول مفتاح (لا يوجد ضمان بأن الملف منظم على أساس حقل مفتاح أو حقل مفتاح أساسي). يحتوي إدخال فهرس واحد لكل مجموعة في ملف البيانات (فهرس كثيف) على قيمة السمة المفهرسة والمؤشر إلى الكتلة أو السجل.

مؤشر التجزئة

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

التجزئة الخطية

نوع آخر من الفهارس المستخدمة في أنظمة قواعد البيانات هو التجزئة الخطية .

تنفيذات الفهرس

يمكن تنفيذ المؤشرات باستخدام مجموعة متنوعة من هياكل البيانات. تشمل المؤشرات الشائعة الأشجار المتوازنة وأشجار B+ والتجزئة . [ 4]

في Microsoft SQL Server ، تتوافق العقدة الورقية للفهرس المجمع مع البيانات الفعلية، وليس مجرد مؤشر للبيانات الموجودة في مكان آخر، كما هو الحال مع الفهرس غير المجمع. [5] يمكن أن يكون لكل علاقة فهرس مجمع واحد والعديد من الفهارس غير المجمعة. [6]

التحكم في تزامن الفهرس

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

تغطية الفهرس

في أغلب الحالات، يتم استخدام الفهرس لتحديد موقع سجلات البيانات التي يتم قراءة البيانات المطلوبة منها بسرعة. بعبارة أخرى، يتم استخدام الفهرس لتحديد موقع سجلات البيانات في الجدول فقط وليس لإرجاع البيانات.

فهرس التغطية هو حالة خاصة حيث يحتوي الفهرس نفسه على حقول البيانات المطلوبة ويمكنه الإجابة على البيانات المطلوبة.

خذ بعين الاعتبار الجدول التالي (تم حذف الحقول الأخرى):

بطاقة تعريف اسم مجالات أخرى
12 سدادة ...
13 خروف ...
14 فتيل ...

للعثور على الاسم للمعرف 13، يكون الفهرس الموجود على (ID) مفيدًا، ولكن لا يزال يتعين قراءة السجل للحصول على الاسم. ومع ذلك، يحتوي الفهرس الموجود على (ID, Name) على حقل البيانات المطلوب ويزيل الحاجة إلى البحث عن السجل.

إن تغطية الفهارس مخصصة لكل جدول محدد. قد تفكر الاستعلامات التي تنضم إلى جداول متعددة في تغطية الفهارس على أكثر من جدول من هذه الجداول. [7]

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

يمكن القيام بذلك في SQL باستخدام . [8] [9]CREATE INDEX my_index ON my_table (id) INCLUDE (name);

التوحيد القياسي

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


انظر أيضا

مراجع

  1. ^ توثيق PostgreSQL 9.1.2: إنشاء جدول
  2. ^ نظرة عامة على مجموعات Oracle® Database Concepts 10g الإصدار 1 (10.1)
  3. ^ أنظمة قواعد البيانات: الكتاب الكامل. هيكتور جارسيا مولينا ، جيفري د. أولمان ، جينيفر د. ويدوم
  4. ^ جافين باول (2006). الفصل 8: بناء نماذج قواعد بيانات سريعة الأداء. دار نشر وروكس . رقم ISBN 978-0-7645-7490-0. {{cite book}}: |work=تم تجاهله ( مساعدة )
  5. ^ "هياكل الفهرس المجمعة". كتب SQL Server 2005 عبر الإنترنت (سبتمبر 2007) . 4 أكتوبر 2012.
  6. ^ دارين بينيك؛ راندي ديس؛ مايك هوتيك؛ خافيير لوريا؛ آدم ماشانيك؛ أنطونيو سوتو؛ أدولفو ويرنيك (يناير 2006). "الفصل 4: إنشاء الفهارس". تنفيذ وإدارة SQL Server 2005. مطبعة مايكروسوفت.
  7. ^ تغطية الفهارس لتحسين الاستعلام
  8. ^ "11.9. عمليات المسح الخاصة بالمؤشرات فقط وتغطية المؤشرات". وثائق PostgreSQL . 2023-02-09 . تم الاسترجاع في 2023-04-08 .
  9. ^ MikeRayMSFT. "إنشاء فهارس مع الأعمدة المضمنة - SQL Server". learn.microsoft.com . تم الاسترجاع في 2023-04-08 .
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=Database_index&oldid=1248148816"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate