تخفیف های ویژه عیدانه توسینسو
تا 60 درصد تخفیف ویژه
00ساعت 00دقیقه 00ثانیه

اندیس (ایندکس) گذاری به زبان ساده

بانک های اطلاعاتی و مخصوصاً بانک های اطلاعاتی رابطه‌ای از مکانیزم های مختلفی برای ذخیره سازی و بازیابی اطلاعات استفاده می کنند. این مکانیزم ها باید به اندازه کافی سریع باشند تا بتوان در کمترین زمان ممکن داده  ها را بر روی دیسک و با یک ساختار درست ذخیره کرد و همچنین بتوان در داخل آن‌ها با سرعت بالا جستجو کرد و داده‌های مورد نظر را پیدا کرده و لود کنیم. واضح است که همه اطلاعات ذخیره شده  در پایگاه داده به یک اندازه  مهم و پرکاربرد نیستند و بعضی خیلی استفاده می‌شوند و ممکن است که به بعضی از آن‌ها حتی سالی یک بار هم مراجعه نکنیم. به همین دلیل اگر بتوانیم کاری کنیم که اطلاعات پرکاربرد سریعتر لود شوند و عمل جستجو در آن‌ها سریع‌تر باشد سرعت برنامه‌ها هم بالاتر خواهد رفت و مشتری هم راضی تر خواهد بود. یکی از مواردی که در بالا رفتن سرعت لود و جستجوی داده‌ها در بانک اطلاعاتی می‌شود عمل اندیس گذاری یا ایندکس گذاری یا Indexing می باشد.

ایندکس گذاری چیست؟

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

ایندکس گذاری در پایگاه داده

پایگاه های داده‌ای امروزی معمولاً ایندکس ها را به صورت درخت B-tree و یا B-tree+ ذخیره می کنند. که این کار باعث می‌شود که دسترسی به یک ایندکس خاص به صورت جستجوی دودویی یا (binary search) انجام شود و در سریع‌ترین زمان ایندکس مورد نظر پیدا شود.
در دیتابیس هایی مانند sql server عمل ایندکس گذاری  به دو روش عمده انجام می‌شود روش clustered, non-clustered. هرکدام از این روش‌ها را در ادامه توضیح داده ایم.

روش ایندکس گذاری non-clustered

در این روش سیستم مدیریت دیتابیس یا DBMS یک درخت B-Tree از ستون ایندکس شده تشکیل می‌دهد. داده‌های مربوط به جداول در یک فضا به نام heap ذخیره سازی شده اند. حال درخت b-tree مربوط به ایندکس ها به گونه‌ای ساخته شده است که هرکدام از برگ‌ها یک اشاره گر به داده‌های ایندکس شده در داخل heap دارند. این به این معنی است که در برگ‌ها داده‌های اصلی ذخیره نشده‌اند و فقط یک اشاره گر به داده اصلی ذخیره شده است. اگر بخواهیم یک مثال از این نوع ایندکس بزنیم می‌توانیم فهرست مطالب یک کتاب را مثال بزنیم. در فهرست مطالب یک کتاب ایندکس ها فقط حاوی شماره صفحه مطلب مورد نظر هستند. یعنی شماره صفحه یک اشاره گر به اطلاعات اصلی است.

روش ایندکس گذاری clustered

این روش به این صورت است که در درخت B-tree تشکیل شده در قسمت برگ‌های درخت داده‌های مستقیم ایندکس قرار می‌گیرد و مانند روش قبلی نیست که یک اشاره گر به داده اصلی باشد و خود داده اصلی در آن قرار دارد. مثال دفترچه تلفن در دنیای واقعی می‌تواند یک نمونه از این ایندکس گذاری باشد که وقتی شما به دنبال شماره یک شخص می گردید و حرف اول نام او را در دفترچه باز می‌کنید در آن قسمت شماره خود مخاطب ذخیره شده است و نه شماره صفحه‌ای که مخاطب در آن قرار دارد.
حال که دو روش عمده ایندکس گذاری را توضیح دادیم در ادامه به مزایا و معایب هرکدام اشاره می کنیم.

مزایای روش clustered

این روش به خاطر اینکه در B-tree ذخیره شده است در جستجو هایی که به  صورت بازه ای انجام می‌شود بسیار مفید است. برای مثال زمانی که شما در کوئری خود از کلمه between برای یک ستون استفاده می‌کنید و قصد دارید که یک بازه مشخص را جستجو کنید این روش بسیار خوب کار می کند. همچنین در حالت‌هایی که می‌خواهیم ستون هایی با مقدار بزرگ‌تر یا کوچکتر از یک مقدار را جستجو کنیم این نوع ایندکس گذاری کاربرد خواهد داشت و از مزایای آن حالتی است که تعداد رکوردهای  نتیجه جستجو زیاد است و رکوردها تکراری نیستند(distinct)

معایب روش clustered

از معایبی که این روش دارد می‌توان به این نکته اشاره کرد که در یک جدول فقط می‌توانیم یک عدد از این نوع ایندکس داشته باشیم. همچنین این نوع ایندکس برای ستون هایی که در معرض تغییر و آپدیت هستند نیز مناسب نیست. علت آن هم این است که در هر بار تغییر مقدار ستون باید درخت دوباره سازی شود.

مزایای روش non clustered

از مزایای این روش این است که می‌توان چندین ایندکس non-clustered در یک جدول ساخت و استفاده کرد. همچنین این روش برای جستجو های با نتایج کم بسیار خوب کار می‌کند و همچنین جستجوهایی که به دنبال مساوی بودن هستند نیز در این روش خوب کار می کند.

حرف آخر

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

با وب سایت tosinso همراه باشید

نویسنده: مهدی عادلی فر

منبع: جزیره بانک های اطلاعاتی Tosinso.

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

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