نظرة عامة على الفهارس

ينطبق ذلك على إصدار Cloud Firestore Enterprise فقط.

توضّح هذه الصفحة عملية الفهرسة في Cloud Firestore مع التوافق مع MongoDB. لا تنشئ Cloud Firestore المتوافقة مع MongoDB أي فهارس تلقائيًا. لتحسين أداء قاعدة البيانات، أنشئ فهارس لطلبات البحث الأكثر استخدامًا.

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

تعريف الفهرس وبنيته

يتألف الفهرس مما يلي:

  • معرّف مجموعة
  • قائمة بالحقول في المجموعة المحدّدة
  • ترتيب تصاعدي أو تنازلي لكل حقل

يمكن أن يتيح الفهرس أيضًا الخيارات sparse أو multikey أو unique.

ترتيب الفهرس

يحدّد ترتيب كل حقل واتجاه الفرز الفهرس بشكلٍ فريد. على سبيل المثال، الفهرسان التاليان مختلفان ولا يمكن استبدالهما:

التجميع الحقول
المدن البلد (ترتيب تصاعدي)، عدد السكان (ترتيب تنازلي)
المدن عدد السكان (ترتيب تنازلي)، البلد (ترتيب تصاعدي)

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

كثافة الفهرس

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

الفهارس المتفرقة

لا يفهرس الفهرس المتفرّق سوى المستندات في المجموعة التي تحتوي على قيمة (بما في ذلك القيمة الخالية) لحقل واحد على الأقل من الحقول المفهرسة. يقلّل الفهرس المتفرّق من تكاليف التخزين ويمكنه تحسين الأداء.

فهارس المفاتيح المتعددة لقيم المصفوفات

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

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

تؤدي الحالات التالية إلى حدوث أخطاء عند التعامل مع قيم الصفائف والفهارس المتعددة المفاتيح:

  • تحاول عملية إضافة قيمة مصفوفة إلى حقل مفهرس بواسطة فهرس عادي. لإضافة قيمة المصفوفة، يجب حذف الفهارس العادية الحالية في هذا الحقل، وإعادة إنشائها كفهارس متعددة المفاتيح.
  • تحاول إنشاء فهرس عادي على حقل يحتوي على قيمة مصفوفة. يجب إنشاء فهرس متعدد المفاتيح أو حذف قيم المصفوفة.
  • تحاول عملية فهرسة حقول متعددة ذات قيم مصفوفة. لا يمكنك أن يتضمّن الفهرس المتعدد المفاتيح أكثر من حقل واحد بقيمة مصفوفة. للمتابعة، عدِّل نموذج البيانات أو تعريفات الفهرس.
  • تحاول إنشاء فهرس بمفاتيح متعددة يتشارك فيه مسارا حقلين بادئة مشتركة، مثل users.posts وusers.zip.

الفهارس الفريدة

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

الحقول غير المتوفّرة في فهرس فريد

إذا أدرجت مستندًا يتضمّن حقولاً غير متوفّرة للفهرس الفريد، سيضبط الفهرس قيم null للحقول غير المتوفّرة. يجب أن يكون إدخال الفهرس الناتج فريدًا وإلا ستتعذّر العملية.

على سبيل المثال، باستخدام هذا الفهرس:

db.cities.createIndex( { "name": 1 }, { unique: true } )

إذا أضفت المستند {"abbreviation": "LA"} إلى المجموعة، سيُنشئ الفهرس الفريد إدخالاً بقيمة null في الحقل name. إذا حاولت بعد ذلك إضافة المستند {"abbreviation": "NYC"}، ستفشل العملية لأنّ الإدخال الناتج للفهرس الفريد سيكون هو نفسه.

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

تحديد مشاكل أخطاء إنشاء الفهرس وحلّها

قد تواجه أخطاء في إنشاء الفهرس عند إدارة الفهارس. قد تتعذّر عملية الفهرسة إذا واجهت قاعدة البيانات مشكلة في البيانات. قد يتعذّر تنفيذ عمليات الفهرسة للأسباب التالية:

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

الخطوات التالية