محتويات الجدول
- ما هو الفهرس المتناثر؟
- مزايا الفهارس المتناثرة
- إنشاء فهارس متناثرة في MongoDB
- الاستعلام باستخدام الفهارس المتناثرة
- اعتبارات عند استخدام الفهارس المتناثرة
- خاتمة
- الأسئلة الشائعة
ما هو الفهرس المتناثر؟
في MongoDB، يُعد الفهرس المتناثر تقنية تحسين قوية تقوم بفهرسة المستندات التي تحتوي فقط على حقل محدد بقيمة غير فارغة. على عكس الفهارس القياسية، التي تتضمن جميع المستندات في المجموعة، تقوم الفهارس المتناثرة بفهرسة المستندات بشكل انتقائي بناءً على وجود حقل. هذا يؤدي إلى فهارس أصغر وأكثر كفاءة، خاصةً مفيد للمجموعات التي تحتوي على العديد من المستندات حيث قد يكون الحقل المفهرس غائبًا في جزء كبير منها.
على سبيل المثال، ضع في اعتبارك مجموعة من مستندات المستخدمين مع حقل active
يشير إلى حالة الحساب. سيقوم الفهرس المتناثر على active
بفهرسة المستندات فقط حيث active
صحيح (أو أي قيمة غير فارغة أخرى). سيتم استبعاد المستندات التي تم تعيين active
فيها إلى null
أو غير مُعرّف من الفهرس.
مزايا الفهارس المتناثرة
يوفر استخدام الفهارس المتناثرة العديد من الفوائد الرئيسية:
- حجم الفهرس المُصغر: يعني حجم الفهرس الأصغر على القرص سرعة إنشاء الفهرس واستهلاك مساحة تخزين أقل.
- تحسين أداء الاستعلام: الاستعلامات التي تقوم بالتصفية على حقل الفهرس المتناثر أسرع بكثير لأن محرك الاستعلام يبحث في فهرس أصغر.
- استخدام الذاكرة بشكل أفضل: تستهلك الفهارس الأصغر ذاكرة أقل، وهو أمر بالغ الأهمية للمجموعات التي تحتوي على عدد كبير من المستندات.
- محسّن للاستعلامات المحددة: مثالي للاستعلامات المتكررة التي تستهدف المستندات حيث يوجد حقل محدد، بينما تفتقر العديد من المستندات إلى هذا الحقل.
إنشاء فهرس متناثر في MongoDB
إنشاء فهرس متناثر أمر بسيط باستخدام الأمر createIndex()
مع الخيار sparse: true
. لإنشاء فهرس متناثر على حقل active
(تصاعديًا):
db.users.createIndex( { active: 1 }, { sparse: true } );
لفهرس تنازلي، استخدم -1
بدلاً من 1
.
الاستعلام باستخدام الفهارس المتناثرة
يستخدم MongoDB تلقائيًا فهرسًا متناثرًا إذا تطابق الاستعلام مع معايير الحقل المفهرس. سيستخدم الاستعلام التالي الفهرس المتناثر الذي تم إنشاؤه أعلاه:
db.users.find( { active: true } );
قد لا تستفيد الاستعلامات التي لا تحتوي على الحقل المفهرس أو التي تستخدم مرشحات مختلفة من الفهرس المتناثر.
اعتبارات عند استخدام الفهارس المتناثرة
على الرغم من فوائده، ضع هذه النقاط في الاعتبار:
- اختيار الاستعلام: تكون الفهارس المتناثرة أكثر كفاءة عندما يكون الحقل المفهرس غائبًا في جزء كبير من المستندات. إذا كانت معظم المستندات تحتوي على الحقل، فقد تكون وفورات المساحة ضئيلة.
- الاستعلامات المعقدة: قد لا تستفيد الاستعلامات المعقدة التي تتضمن حقولًا متعددة تمامًا من الفهرس المتناثر.
- صيانة الفهرس: لا تزال التحديثات والحذف تؤثر على الفهارس المتناثرة، وإن كان ذلك بشكل أقل تكرارًا من الفهارس القياسية.
- تصحيح الأخطاء: إن فهم المستندات التي يتم فهرستها أمر أساسي لتصحيح الأخطاء. استخدم
db.collection.getIndexes()
لفحص بنية الفهرس.
خاتمة
الفهارس المتناثرة أداة قيّمة لتحسين أداء MongoDB، خاصة عند التعامل مع مجموعات قد يفتقر عدد كبير من مستنداتها إلى حقل محدد. من الضروري مراعاة مزاياها وقيودها بعناية للاستخدام الفعال.
الأسئلة الشائعة
- س: هل يمكنني الحصول على فهارس متناثرة متعددة على مجموعة؟
ج: نعم، يمكنك إنشاء فهارس متناثرة متعددة على مجموعة واحدة. - س: هل يمكنني استخدام الفهارس المتناثرة مع الفهارس المركبة؟
ج: نعم، ولكن يتم تحديد التناثر بواسطة جميع الحقول في الفهرس المركب. يجب أن يحتوي المستند على قيم غير فارغة لـ *جميع* الحقول ليتم تضمينه في الفهرس. - س: كيف يمكنني التحقق مما إذا كان مستند محدد مدرج في فهرس متناثر؟
ج: لا يوجد أمر مباشر. قم بفحص بنية الفهرس باستخدامdb.collection.getIndexes()
وقارنه ببيانات المستندات الخاصة بك.