تصف هذه الصفحة عملية الفهرسة في Cloud Firestore. لا ينشئ Cloud Firestore أي فهارس تلقائيًا. لتحسين أداء قاعدة البيانات، يمكنك إنشاء فهارس للاستعلامات الأكثر استخدامًا.
للفهارس تأثير كبير في أداء قاعدة البيانات. إذا كان هناك فهرس لاستعلام معيّن، يمكن لقاعدة البيانات عرض النتائج بكفاءة من خلال تقليل حجم البيانات التي يجب فحصها وتقليل العمل اللازم لترتيب النتائج. ومع ذلك، تزيد إدخالات الفهرس من تكاليف التخزين وحجم العمل الذي يتم إجراؤه أثناء عملية الكتابة في الحقول المفهرسة.
تعريف الفهرس وبنيته
يتألف الفهرس مما يلي:
- رقم تعريف المجموعة
- قائمة بالحقول في المجموعة المحدّدة
- ترتيب تصاعدي أو تنازلي لكل حقل
يمكن أن يفعّل الفهرس أيضًا الخيارات sparse أو multikey أو unique.
ترتيب الفهرس
يحدّد ترتيب كل حقل واتجاه ترتيبه الفهرس بشكلٍ فريد. على سبيل المثال، الفهران التاليان هما فهرسان مختلفان ولا يمكن استبدالهما:
| المجموعة | الحقول |
|---|---|
| المدن | البلد (تصاعديًا)، عدد السكان (تنازليًا) |
| المدن | عدد السكان (تنازليًا)، البلد (تصاعديًا) |
عند إنشاء فهرس لدعم استعلام، يجب تضمين الحقول بالترتيب نفسه الذي يظهر في الاستعلام.
كثافة الفهرس
تخزّن إدخالات الفهرس تلقائيًا بيانات من جميع المستندات في المجموعة. ويُعرف ذلك باسم الفهرس غير المتفرّق. ستتم إضافة إدخال فهرس لمستند بغض النظر عمّا إذا كان المستند يحتوي على أي من الحقول المحدّدة في الفهرس. تُعامَل الحقول غير المتوفّرة على أنّها تحتوي على قيمة `NULL` عند إنشاء إدخالات الفهرس. لتغيير هذا السلوك، يمكنك تعريف الفهرس على أنّه فهرس متفرّق.
الفهارس المتفرّقة
لا يفهرس الفهرس المتفرّق سوى المستندات في المجموعة التي تحتوي على قيمة (بما في ذلك القيمة null) لحقل واحد على الأقل من الحقول المفهرسة. يقلّل الفهرس المتفرّق من تكاليف التخزين ويمكنه تحسين الأداء.
فهارس المفاتيح المتعدّدة لقيم الصفائف
إذا كنت تنشئ فهرسًا في حقل يحتوي على قيم صفائف، عليك إنشاء فهرس مفاتيح متعدّدة. لا يمكن للفهرس العادي فهرسة قيم الصفائف. يتيح فهرس المفاتيح المتعدّدة استخدام حقل صفيف واحد على الأكثر في تعريف الفهرس، ويمكن استخدامه للعمليات التي تتنقّل بين قيم الصفائف.
لا تستخدِم فهارس المفاتيح المتعدّدة إلا إذا كنت تعرف أنّك بحاجة إلى فهرسة قيم الصفائف. تكون للفهارس العادية مزايا عند معالجة استعلام. على سبيل المثال، يمكن للفهارس العادية فلترة القيم ضمن نطاق بكفاءة أكبر.
تؤدي الحالات التالية إلى حدوث أخطاء عند التعامل مع قيم الصفائف وفهارس المفاتيح المتعدّدة:
- تحاول عملية إضافة قيمة صفيف إلى حقل مفهرس بفهرس عادي. لإضافة قيمة الصفيف، عليك حذف الفهارس العادية الحالية في هذا الحقل وإعادة إنشائها كفهارس مفاتيح متعدّدة.
- تحاول إنشاء فهرس عادي في حقل يحتوي على قيمة صفيف. عليك إما إنشاء فهرس مفاتيح متعدّدة أو حذف قيم الصفيف.
- تحاول عملية فهرسة حقول متعددة تحتوي على قيم صفائف. لا يمكنك استخدام أكثر من حقل واحد يحتوي على قيمة صفيف في فهرس المفاتيح المتعدّدة. للمتابعة، عليك تعديل نموذج البيانات أو تعريفات الفهرس.
- تحاول إنشاء فهرس مفاتيح متعدّدة يتشارك فيه مسارا حقلين بادئة مشتركة، مثل
users.postsوusers.zip.
الفهارس الفريدة
يمكنك ضبط خيار الفهرس الفريد لفرض قيم فريدة للحقول المفهرسة. بالنسبة إلى الفهارس التي تتضمّن حقولاً متعددة، يجب أن تكون كل مجموعة من القيم فريدة في الفهرس. ترفض قاعدة البيانات أي عمليات تعديل وإدراج تحاول إنشاء إدخالات فهرس بقيم مكرّرة. إذا كانت بيانات الحقول المفهرسة تحتوي على قيم مكرّرة وحاولت إنشاء فهرس فريد، سيتعذّر إنشاء الفهرس وستظهر رسالة خطأ في تفاصيل العملية.
الحقول غير المتوفّرة في فهرس فريد
إذا أدرجت مستندًا يتضمّن حقولاً غير متوفّرة للفهرس الفريد، يضبط الفهرس قيم null للحقول غير المتوفّرة. يجب أن يكون إدخال الفهرس الناتج فريدًا وإلا ستفشل العملية.
على سبيل المثال، إذا كان لديك هذا الفهرس:
db.cities.createIndex( { "name": 1 }, { unique: true } )
إذا أضفت المستند {"abbreviation": "LA"} إلى المجموعة، ينشئ الفهرس الفريد
إدخالاً يتم فيه ضبط name على null. إذا حاولت بعد ذلك إضافة الـ
مستند {"abbreviation": "NYC"}، ستفشل العملية لأنّ الإدخال الناتج الـ
للفهرس الفريد هو نفسه.
ينطبق السلوك نفسه على الفهارس الفريدة التي تتضمّن حقولاً متعددة.
عند إنشاء مستند أو تعديله، يتم ضبط الحقول المفهرسة غير المتوفّرة على null ويجب أن يكون إدخال الفهرس الناتج فريدًا في الفهرس.
فهارس مدة البقاء (TTL)
يمكنك استخدام فهارس مدة البقاء (TTL) لإزالة البيانات القديمة تلقائيًا من قواعد البيانات. يحدّد فهرس مدة البقاء (TTL) حقلاً معيّنًا على أنّه وقت انتهاء صلاحية المستندات في مجموعة معيّنة. باستخدام مدة البقاء (TTL)، يمكنك تقليل تكاليف التخزين من خلال إزالة البيانات القديمة. يتم حذف البيانات عادةً خلال 24 ساعة بعد انتهاء صلاحيتها.
تحديد مشاكل أخطاء إنشاء الفهرس وحلّها
قد تحدث أخطاء في إنشاء الفهرس عند إدارة الفهارس. يمكن أن تفشل عملية الفهرسة إذا واجهت قاعدة البيانات مشكلة في البيانات. يمكن أن تفشل عمليات الفهرسة للأسباب التالية:
- لقد بلغت الحدّ الأقصى المسموح به لعدد الفهارس. على سبيل المثال، قد تكون العملية قد بلغت الحدّ الأقصى لعدد إدخالات الفهرس لكل مستند. إذا تعذّر إنشاء الفهرس، ستظهر لك رسالة خطأ. إذا لم تبلغ الحدّ الأقصى المسموح به لعدد الفهارس، أعِد محاولة عملية الفهرس.
- مطلوب فهرس مفاتيح متعدّدة. يحتوي حقل واحد على الأقل من الحقول المفهرسة على قيمة صفيف. للمتابعة، عليك إما استخدام فهرس مفاتيح متعدّدة أو حذف قيم الصفيف.
- تحاول عملية فهرسة حقول متعددة تحتوي على قيم صفائف. لا يمكنك استخدام أكثر من حقل واحد يحتوي على قيمة صفيف في فهرس المفاتيح المتعدّدة. للمتابعة، عليك تعديل نموذج البيانات أو تعريفات الفهرس.
- لقد ضبطت خيار الفهرس الفريد، وستؤدي بيانات الحقول المفهرسة إلى إنشاء إدخالات فهرس مكرّرة. للمتابعة، عليك إزالة مجموعات القيم المكرّرة من البيانات.
الخطوات التالية
- تعرّف على كيفية إنشاء الفهارس أو فهارس مدة البقاء (TTL) وإدارتها