سلام به همه پی وی لرنی های عزیز!
به دوره آموزش دوره آموزش سیستم مدیریت پایگاه داده DBMS خوش آمدید.
Database Management System یا سیستم مدیریت پایگاه داده که به صورت خلاصه به آن DBMS می گویند؛ به فناوری ذخیره و بازیابی اطلاعات کاربران با حداکثر کارآیی در کنار اقدامات امنیتی مناسب اشاره دارد. در این آموزش اصول اولیه سیستم مدیریت پایگاه داده یا DBMS مانند معماری آن، مدل های داده، طرحواره داده ها، استقلال داده ها، مدل E-R، مدل رابطه، طراحی بانک اطلاعاتی رابطه ای، و ذخیره سازی و ساختار پرونده و موارد دیگر را می آموزیم.
در جلسه گذشته به آشنایی با Indexing در سیستم مدیریت پایگاه داده ( DBMS ) پرداختیم؛ داده ها به صورت رکورد ذخیره می شوند. هر رکورد دارای یک فیلد کلیدی است که به تشخیص منحصر به فرد آن کمک می کند.
Indexing یک تکنیک ساختار داده برای بازیابی کارآمد فایل ها از فایل های پایگاه داده بر اساس برخی از ویژگی هایی است که Indexing در آنها انجام شده است. Indexing در سیستم های پایگاه داده مشابه آنچه در کتاب ها می بینیم است.
در این جلسه قرار است به سراغ آشنایی با Hashing در سیستم مدیریت پایگاه داده ( DBMS ) برویم.
برای یک ساختار بزرگ پایگاه داده؛ جستجو برای یافتن تمام مقادیر index از طریق تمام سطح آن و سپس رسیدن به بلوک داده مقصد برای بازیابی اطلاعات مورد نظر؛ تقریباً کار خیلی خیلی سختی است. اما دست ما آنچنان هم خالی نیست! Hashing یک تکنیک مؤثر برای محاسبه محل مستقیم رکورد داده بر روی دیسک بدون استفاده از ساختار index است.
Hashing از توابع Hash با کلیدهای جستجو به عنوان پارامترها برای تولید آدرس رکورد داده استفاده می کند.
در Static Hashing یا هش استاتیک وقتی یک مقدار کلید جستجو ارائه می شود، تابع Hash همیشه همان آدرس را محاسبه می کند. به عنوان مثال ، اگر از تابع hash mod-4 استفاده شود ، فقط ۵ مقدار تولید می شود. آدرس خروجی همیشه باید برای آن عملکرد یکسان باشد. تعداد Bucket های ارائه شده در همه زمان ها بدون تغییر باقی می ماند.
وضعیت bucket-overflow یک وضعیت تصادم و برخورد است که برای اصلاً برای تابع hash مطلوب نیست. در این حالت می توان از زنجیره ای سرریز استفاده کرد.
مشکل Static Hashing یا هشینگ ثابت این است که با رشد یا کوچک شدن اندازه پایگاه داده، بطور پویا گسترش نمی یابد یا کوچک نمی شود. اما Dynamic Hashing یا هشینگ پویا مکانیزمی را فراهم می کند که Bucket داده ها به صورت پویا و بر حسب تقاضا اضافه و حذف می شوند. Dynamic Hashing همچنین به عنوان extended hashing نیز شناخته می شود.
در Dynamic Hashing تابع function؛ برای تولید تعداد زیادی از مقادیر ساخته شده و در ابتدا فقط تعداد کمی از آن استفاده می شود.
پیشوند کل مقدار hash به عنوان index هش در نظر گرفته می شود که فقط بخشی از مقدار hash برای محاسبه آدرس Bucket استفاده می شود. هر index برای هر hash یک مقدار عمق دارد تا مشخص کند که چند بیت برای محاسبه یک تابع hash استفاده می شود. این بیت ها می توانند ۲n bucket ها را برطرف کنند. هنگامی که تمام این بیت ها مصرف می شوند – یعنی وقتی تمام Bucket ها پر هستند – مقدار عمق به صورت خطی افزایش می یابد و دو برابر Bucket ها برای اختصاص دهی استفاده می شود.
هنگامی که داده ها به ترتیب سازمان یافته نیستند و کوئری ها به طیف وسیعی از داده ها نیاز دارند؛ استفاده از Hashing مناسب نیست. وقتی داده ها گسسته و تصادفی هستند، Hash بهترین انتخاب است.
الگوریتم های Hashing پیچیدگی بالایی نسبت به indexing دارند. تمام عملیات hash در زمان ثابت انجام می شود.
در این جلسه به آشنایی با Hashing در سیستم مدیریت پایگاه داده ( DBMS ) پرداختیم؛ برای یک ساختار بزرگ پایگاه داده؛ جستجو برای یافتن تمام مقادیر index از طریق تمام سطح آن و سپس رسیدن به بلوک داده مقصد برای بازیابی اطلاعات مورد نظر؛ تقریباً کار خیلی خیلی سختی است. اما دست ما آنچنان هم خالی نیست! Hashing یک تکنیک مؤثر برای محاسبه محل مستقیم رکورد داده بر روی دیسک بدون استفاده از ساختار index است.
در جلسه بعدی می خواهیم به به سراغ موضوع Transaction در DBMS برویم.
با پی وی لرن همراه باشید.