فهرست

  • 2021-04-27

ایندکس ها از اجرای کارآمد نمایش داده ها در MongoDB پشتیبانی می کنند. بدون ایندکس ، MongoDB باید یک اسکن مجموعه ، یعنی اسکن هر سند را در یک مجموعه انجام دهد تا آن اسنادی را که مطابق با بیانیه پرس و جو است ، انتخاب کند. اگر یک شاخص مناسب برای پرس و جو وجود داشته باشد ، MongoDB می تواند از این فهرست برای محدود کردن تعداد اسنادی که باید بازرسی کند استفاده کند.

ایندکس ها ساختار داده های ویژه ای هستند [1] که بخش کوچکی از مجموعه داده های مجموعه را به صورت آسان برای گذر از آن ذخیره می کنند. این شاخص مقدار یک قسمت خاص یا مجموعه ای از زمینه ها را که توسط مقدار فیلد سفارش داده شده است ، ذخیره می کند. ترتیب ورودی های شاخص از مسابقات برابری کارآمد و عملیات پرس و جو مبتنی بر دامنه پشتیبانی می کند. علاوه بر این ، MongoDB می تواند با استفاده از سفارش در شاخص ، نتایج مرتب شده را برگرداند.

نمودار زیر یک پرس و جو را نشان می دهد که اسناد تطبیق را با استفاده از یک فهرست انتخاب و سفارش می دهد:

اساساً ، شاخص ها در MongoDB مشابه شاخص ها در سایر سیستم های پایگاه داده هستند. MongoDB شاخص ها را در سطح مجموعه تعریف می کند و از فهرست ها در هر زمینه یا زیر میدان اسناد در یک مجموعه MongoDB پشتیبانی می کند.

فهرست پیش فرض _id

MongoDB در هنگام ایجاد یک مجموعه ، یک شاخص منحصر به فرد در قسمت _id ایجاد می کند. شاخص _ID مانع از درج دو سند با همان مقدار برای قسمت _id می شود. شما نمی توانید این شاخص را در قسمت _id رها کنید.

در خوشه های Sharded ، اگر از قسمت _id به عنوان کلید Shard استفاده نمی کنید ، برنامه شما باید از منحصر به فرد بودن مقادیر موجود در قسمت _id برای جلوگیری از خطا اطمینان حاصل کند. این موارد اغلب با استفاده از یک ObjectID استاندارد تولید شده توسط خودکار انجام می شود.

یک فهرست ایجاد کنید

➤ از منوی کشویی زبان خود در سمت راست بالا استفاده کنید تا زبان نمونه ها را در این صفحه تنظیم کنید.

[1] شاخص های MongoDB از یک ساختار داده درخت B استفاده می کنند.

نامهای

نام پیش فرض برای یک شاخص ، جمع بندی کلیدهای فهرست بندی شده و جهت هر کلید در فهرست (یعنی 1 ی ا-1) با استفاده از زیرکرها به عنوان جداکننده است. به عنوان مثال ، یک فهرست ایجاد شده در< item : 1, quantity: -1 >دارای نام مورد_1_Quantity_-1 است.

شما می توانید فهرست هایی را با یک نام سفارشی ایجاد کنید ، مانند مواردی که از پیش فرض قابل خواندن است. به عنوان مثال ، برنامه ای را در نظر بگیرید که اغلب از مجموعه محصولات پرس و جو می کند تا داده های موجودی موجود را جمع کند. روش زیر CreateIndex () شاخصی را در مورد مورد و کمیت به نام پرس و جو برای موجودی ایجاد می کند:

می توانید نام های فهرست را با استفاده از روش db. collection. getIndexes () مشاهده کنید. شما نمی توانید یک بار ایجاد کنید که یک بار ایجاد شده است. در عوض ، شما باید با نام جدید این فهرست را رها کرده و دوباره ایجاد کنید.

انواع شاخص

MongoDB تعدادی از انواع مختلف شاخص را برای پشتیبانی از انواع خاص داده ها و نمایش داده ها فراهم می کند.

یک قسمت

علاوه بر شاخص _id تعریف شده MongoDB ، MongoDB از ایجاد شاخص های صعودی/نزولی تعریف شده توسط کاربر در یک زمینه واحد از یک سند پشتیبانی می کند.

برای یک فهرست تک میدانی و عملیات مرتب سازی ، ترتیب مرتب سازی (یعنی صعودی یا نزولی) کلید فهرست مهم نیست زیرا MongoDB می تواند شاخص را در هر جهت طی کند.

برای کسب اطلاعات بیشتر در مورد شاخص های تک میدان ، به فهرست های تک زمینه و مرتب سازی با یک فهرست میدانی واحد مراجعه کنید.

شاخص مجتمع

MongoDB همچنین از شاخص های تعریف شده توسط کاربر در چندین زمینه ، یعنی شاخص های ترکیبی پشتیبانی می کند.

ترتیب زمینه های ذکر شده در یک شاخص مرکب از اهمیت برخوردار است. به عنوان مثال ، اگر یک شاخص مرکب از آن تشکیل شده باشد< userid: 1, score: -1 >، این فهرست ابتدا توسط UserID و سپس ، در هر مقدار کاربر ، نوع بر اساس نمره مرتب می شود.

برای شاخص های مرکب و عملیات مرتب سازی ، ترتیب مرتب سازی (یعنی صعودی یا نزولی) کلیدهای شاخص می تواند تعیین کند که آیا این شاخص می تواند از یک نوع نوع پشتیبانی کند. برای کسب اطلاعات بیشتر در مورد تأثیر سفارش فهرست در نتایج موجود در شاخص های ترکیبی ، به ترتیب مرتب سازی مراجعه کنید.

شاخص چند مانند

MongoDB از شاخص های چند قلو برای فهرست بندی محتوای ذخیره شده در آرایه ها استفاده می کند. اگر فیلدی را که دارای یک مقدار آرایه است ، فهرست بندی کنید ، MongoDB برای هر عنصر آرایه ، ورودی های جداگانه ای را ایجاد می کند. این شاخص های چند قلو به نمایش داده شد تا با تطبیق بر روی عنصر یا عناصر آرایه ها ، اسنادی را که حاوی آرایه ها هستند ، انتخاب کنند. MongoDB به طور خودکار تعیین می کند که اگر قسمت فهرست بندی شده حاوی یک مقدار آرایه باشد ، یک شاخص چند قلو ایجاد می کند. نیازی نیست که صریحاً نوع چند قلو را مشخص کنید.

برای کسب اطلاعات بیشتر در مورد شاخص های چند قلو ، به شاخص های چند کلاسیک و مرزهای شاخص چند قلو مراجعه کنید.

شاخص زمین جغرافیایی

برای پشتیبانی از نمایش داده های کارآمد داده های مختصات جغرافیایی ، MongoDB دو شاخص ویژه را فراهم می کند: شاخص های 2D که هنگام بازگشت نتایج و شاخص های 2dsphere که از هندسه کروی برای بازگشت نتایج استفاده می کنند ، از هندسه مسطح استفاده می کند.

برای معرفی سطح بالایی با شاخص های جغرافیایی ، به Index Index 2D مراجعه کنید.

شاخص های متن

MongoDB یک نوع شاخص متن را ارائه می دهد که از جستجوی محتوای رشته در یک مجموعه پشتیبانی می کند. این شاخص های متن کلمات توقف خاص زبان (به عنوان مثال "" ، "A" یا ") را ذخیره نمی کنند و کلمات را در یک مجموعه قرار می دهند تا فقط کلمات ریشه را ذخیره کنند.

برای اطلاعات بیشتر در مورد فهرست های متن و جستجو به فهرست متن مراجعه کنید.

شاخص های هاشده

برای حمایت از شاردرینگ مبتنی بر هش ، MongoDB یک نوع شاخص هشده را فراهم می کند ، که هش از ارزش یک میدان را نمایه می کند. این شاخص ها توزیع تصادفی تر از مقادیر در طول محدوده خود دارند ، اما فقط از مسابقات برابری پشتیبانی می کنند و نمی توانند از نمایش داده های مبتنی بر دامنه پشتیبانی کنند.

شاخص های خوشه ای

با شروع از MongoDB 5. 3 ، می توانید مجموعه ای با یک شاخص خوشه ای ایجاد کنید. مجموعه های ایجاد شده با یک شاخص خوشه ای ، مجموعه های خوشه ای نامیده می شوند.

خصوصیات شاخص

فهرست های منحصر به فرد

خاصیت منحصر به فرد برای یک فهرست باعث می شود MongoDB مقادیر تکراری را برای قسمت فهرست بندی شده رد کند. به غیر از محدودیت منحصر به فرد ، شاخص های منحصر به فرد از نظر عملکردی با سایر شاخص های MongoDB قابل تعویض هستند.

شاخص های جزئی

شاخص های جزئی فقط اسناد را در مجموعه ای که یک عبارت فیلتر مشخص را برآورده می کند ، فهرست بندی می کند. با نمایه سازی زیر مجموعه ای از اسناد در یک مجموعه ، شاخص های جزئی دارای نیازهای ذخیره سازی کمتری و کاهش هزینه های عملکرد برای ایجاد و نگهداری شاخص هستند.

شاخص های جزئی سوپراست از عملکرد شاخص های پراکنده را ارائه می دهند و باید نسبت به شاخص های پراکنده ترجیح داده شوند.

شاخص های پراکنده

خاصیت پراکنده یک فهرست تضمین می کند که این فهرست فقط شامل مدخل هایی برای اسنادی است که دارای قسمت فهرست بندی شده هستند. این فهرست از اسنادی که زمینه فهرست بندی نشده را ندارند ، می پرید.

شما می توانید گزینه شاخص پراکنده را با گزینه منحصر به فرد شاخص ترکیب کنید تا از وارد کردن اسنادی که مقادیر تکراری برای قسمت (های) فهرست بندی شده دارند و اسناد فهرست بندی را که فاقد قسمت (های) فهرست بندی شده هستند ، استفاده کنید.

شاخص های TTL

شاخص های TTL شاخص های ویژه ای هستند که MongoDB می تواند از آنها برای حذف خودکار اسناد از یک مجموعه پس از مدت زمان مشخصی استفاده کند. این ایده آل برای انواع خاصی از اطلاعات مانند داده های رویداد ، گزارش ها و اطلاعات جلسه است که فقط برای مدت زمان محدود باید در یک پایگاه داده باقی بماند.

شاخص های پنهان

جدید در نسخه 4. 4.

شاخص های پنهان برای برنامه ریز پرس و جو قابل مشاهده نیستند و نمی توان برای پشتیبانی از یک پرس و جو مورد استفاده قرار گرفت.

با مخفی کردن یک شاخص از برنامه ریز ، کاربران می توانند تأثیر بالقوه رها کردن یک شاخص را بدون اینکه در واقع شاخص را رها کنند ، ارزیابی کنند. اگر تأثیر منفی باشد ، کاربر می تواند به جای اینکه یک شاخص کاهش یافته را بازآفرینی کند ، شاخص را از بین ببرد. و از آنجا که شاخص ها در حین پنهان کردن کاملاً نگهداری می شوند ، شاخص ها بلافاصله برای استفاده یک بار در دسترس هستند.

به جز شاخص _id ، می توانید هر گونه شاخص را پنهان کنید.

استفاده از فهرست

شاخص ها می توانند کارایی عملیات خواندن را بهبود بخشند. آموزش عملکرد پرس و جو تجزیه و تحلیل نمونه ای از آمار اجرای یک پرس و جو با و بدون شاخص را ارائه می دهد.

برای کسب اطلاعات در مورد چگونگی انتخاب MongoDB یک فهرست برای استفاده ، به Optimizer Query مراجعه کنید.

شاخص ها و جمع آوری

Collation به کاربران امکان می دهد قوانین خاص زبان را برای مقایسه رشته ها ، مانند قوانین مربوط به نامه های حروف و برجسته ، مشخص کنند.

برای استفاده از یک شاخص برای مقایسه رشته ، یک عملیات نیز باید همان جمع را مشخص کند. یعنی ، یک شاخص با یک جمع بندی نمی تواند از عملیاتی که مقایسه رشته در قسمتهای فهرست بندی شده را انجام می دهد ، در صورتی که عملیات یک مجموعه متفاوت را انجام دهد ، پشتیبانی کند.

به عنوان مثال ، مجموعه MyColl دارای یک فهرست در رده رشته رشته با محل جمع آوری "FR" است.

عملیات پرس و جو زیر ، که همان مجموعه را به عنوان شاخص مشخص می کند ، می تواند از فهرست استفاده کند:

با این حال ، عملیات پرس و جو زیر ، که به طور پیش فرض از کلکاتور باینری "ساده" استفاده می کند ، نمی تواند از فهرست استفاده کند:

برای یک شاخص مرکب که در آن کلیدهای پیشوند شاخص رشته ها ، آرایه ها و اسناد تعبیه شده نیستند ، عملیاتی که یک جمع بندی متفاوت را مشخص می کند ، هنوز هم می تواند از این فهرست برای پشتیبانی از مقایسه در کلیدهای پیشوند شاخص استفاده کند.

به عنوان مثال ، مجموعه MyColl دارای یک شاخص مرکب در نمره و قیمت فیلدهای عددی و دسته رشته رشته است. این شاخص با محل جمع آوری "FR" برای مقایسه رشته ها ایجاد شده است:

عملیات زیر ، که از جمع بندی باینری "ساده" برای مقایسه رشته استفاده می کنند ، می توانند از فهرست استفاده کنند:

عملیات زیر ، که از جمع بندی باینری "ساده" برای مقایسه رشته ها در قسمت دسته بندی فهرست بندی شده استفاده می کند ، می تواند از این شاخص برای تحقق فقط نمره استفاده کند: 5 قسمت از پرس و جو:

برای اطلاعات بیشتر در مورد جمع آوری ، به صفحه مرجع جمع آوری مراجعه کنید.

شاخص های زیر فقط از مقایسه باینری ساده پشتیبانی می کنند و از جمع آوری پشتیبانی نمی کنند:

نمایش داده شد

هنگامی که معیارهای پرس و جو و پیش بینی پرس و جو فقط شامل زمینه های ایندکس شده است ، MongoDB نتایج را مستقیماً از فهرست باز می گرداند بدون اینکه اسناد را اسکن کند یا اسناد را به حافظه وارد کند. این نمایش داده های تحت پوشش می تواند بسیار کارآمد باشد.

برای اطلاعات بیشتر در مورد نمایش داده های تحت پوشش ، به پرس و جو تحت پوشش مراجعه کنید.

تقاطع شاخص

MongoDB می تواند از تقاطع ایندکس ها برای انجام پرس و جوها استفاده کند. برای پرس و جوهایی که شرایط پرس و جوی مرکب را مشخص می کنند، اگر یک شاخص بتواند بخشی از یک شرط پرس و جو را برآورده کند، و شاخص دیگری می تواند بخشی دیگر از شرایط پرس و جو را انجام دهد، MongoDB می تواند از تقاطع دو شاخص برای انجام پرس و جو استفاده کند. اینکه آیا استفاده از یک شاخص ترکیبی یا استفاده از یک تقاطع شاخص کارآمدتر است به پرس و جوی خاص و سیستم بستگی دارد.

برای جزئیات بیشتر در مورد تقاطع شاخص، به تقاطع شاخص مراجعه کنید.

محدودیت های

محدودیت‌های خاصی برای نمایه‌ها اعمال می‌شود، مانند طول کلیدهای فهرست یا تعداد فهرست‌ها در هر مجموعه. برای جزئیات بیشتر به محدودیت های شاخص مراجعه کنید.

ملاحظات اضافی

اگرچه نمایه ها می توانند عملکرد پرس و جو را بهبود بخشند، شاخص ها برخی ملاحظات عملیاتی را نیز ارائه می دهند. برای اطلاعات بیشتر به ملاحظات عملیاتی برای شاخص ها مراجعه کنید.

برنامه‌ها ممکن است در طول ساخت فهرست با کاهش عملکرد مواجه شوند، از جمله دسترسی محدود خواندن/نوشتن به مجموعه. برای کسب اطلاعات بیشتر در مورد فرآیند ساخت ایندکس، به Index Builds on Populated Collections، از جمله بخش Index Builds in Replicate Environments مراجعه کنید.

برخی از درایورها ممکن است ایندکس ها را با استفاده از NumberLong(1) به جای 1 به عنوان مشخصات مشخص کنند. این هیچ تاثیری بر شاخص حاصل ندارد.

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.