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