رفتن به نوشته‌ها

دسته: MongoDB (مونگو دی‌بی)

فصل جدید؛ آشنایی با indexها در MongoDB

به فصل جدید از سری آموزشی MongoDB خوش آمدید! در این فصل می خواهیم با مبحث بسیار مهمی به نام index ها آشنا شویم. اولین سوالی که برای همه ی تازه کاران پیش می آید این است که index چیست؟ index ها می توانند سرعت اجرای کوئری های UPDATE و DELETE و find را بالاتر ببرند؛ یعنی تمام کوئری هایی که در آن ها به دنبال اسناد مشخصی هستیم. به طور مثال به کوئری زیر توجه کنید:db.products.find({seller: “Max”} در کوئری بالا به دنبال محصولاتی (products) هستیم که فروشنده شان فردی به نام Max باشد. اگر ما روی seller خود index ای را نداشته باشیم، MongoDB با اجرای کوئری بالا عملیاتی به نام collection scan (اسکن کردن کالکشن) را انجام می دهد. در این عملیات MongoDB کل کالکشن را بررسی می کند و تک تک document ها را بررسی می کند تا ببیند در کدام document ها، فروشنده (seller) فردی به نام Max است. این همان حالت عادی کار با کالکشن ها است و احتمالا شما هم متوجه شده اید که اگر تعداد زیادی سند در کالکشن خود داشته باشیم (مثلا ده ها هزار سند) جست و جو در آن ها عملیات کُندی خواهد بود. در نهایت پس از بررسی تمام این هزاران سند، دو یا چند محصول مورد نظر را از آن کالکشن خارج می کند. برای حل این مشکل می توانیم از index ها استفاده کنیم. index ها قابلیتی هستند که به collection ها اضافه می شوند بنابراین با ساخت آن ها به کالکشن خود چیزی اضافه کرده اید. اگر ما برای seller یک index تعریف کنیم، چه اتفاقی می افتد؟ index لیستی از تمام مقادیرِ seller در کل کالکشن ما است. توجه کنید که index لیستی از کل سند ها نیست بلکه لیستی از مقادیر (value) یک فیلد مشخص می باشد. این فیلد، همان فیلدی است که برایش index تعریف کرده اید که در مثال ما همان seller است. البته علاوه بر مقادیر آن فیلد، یک pointer نیز دارد که به محل آن سند در کالکشن ما اشاره می کند بنابراین حالا که index را تعریف کرده ایم دیگر نیازی به عملیات collection scan نیست، بلکه عملیاتی به نام index scan انجام می شود.