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