دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۷
  • اردیبهشت

جلسه ۲۴ : آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده ( DBMS )

  • دسته‌بندی‌ها :
جلسه ۲۴ : آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده ( DBMS )
    • جزئیات
    • نوع محتواآموزشی

      سلام به همه پی وی لرنی های عزیز!
      به دوره آموزش دوره آموزش سیستم مدیریت پایگاه داده DBMS خوش آمدید.
      Database Management System یا سیستم مدیریت پایگاه داده که به صورت خلاصه به آن DBMS می گویند؛ به فناوری ذخیره و بازیابی اطلاعات کاربران با حداکثر کارآیی در کنار اقدامات امنیتی مناسب اشاره دارد. در این آموزش اصول اولیه سیستم مدیریت پایگاه داده یا DBMS مانند معماری آن، مدل های داده، طرحواره داده ها، استقلال داده ها، مدل E-R، مدل رابطه، طراحی بانک اطلاعاتی رابطه ای، و ذخیره سازی و ساختار پرونده و موارد دیگر را می آموزیم.
      در جلسه گذشته به بررسی تهیه نسخه پشتیبان از داده ها در سیستم مدیریت پایگاه داده پرداختیم؛ یک حافظه فرار مانند RAM، تمام logs های فعال، بافر دیسک و داده های مرتبط را ذخیره می کند. علاوه بر این، کلیه transactions هایی را که در حال حاضر انجام می شود، ذخیره می نماید که در صورت پاک شدن آن، کلیه گزارش ها و کپی های فعال پایگاه داده از بین می رود. این بازیابی را تقریبا غیرممکن می کند، زیرا هر چیزی که برای بازیابی اطلاعات لازم است از بین می رود. در چنین مواردی ما به تهیه نسخه پشتیبان یا Backup رو می آوریم.
      در این جلسه به عنوان آخرین جلسه از این دوره به آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده ( DBMS ) می پردازیم.

      آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده ( DBMS )

      DBMS یک سیستم بسیار پیچیده است که صدها transactions در هر ثانیه در آن انجام می شود. دوام و استحکام یک DBMS به معماری پیچیده و نرم افزارهای سخت افزاری و سیستم اساسی آن بستگی دارد. در صورت عدم موفقیت و یا خرابی در transactions ها، انتظار می رود که این سیستم را با کمک یا تکنیک های بازیابی داده ها یا ریکاوری آن ها (Recovery) داده را بازگردانی کرد.

      به عنوان اولین موضوع در آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده بیایید با Failure Classification یا طبقه بندی شکست آشنا شویم.

      Failure Classification طبقه بندی شکست

      برای این که ببینیم مشکل در کجا رخ داده است باید یک Failure را شکست را به دسته های مختلف تقسیم می کنیم.

      شکست Transaction

      یک Transaction هنگامی که به درستی انجام نمی شود را transaction failure می گویند که در آن تنها transactions یا فرآیند معدودی آسیب می بیند.

      دلایل شکست Transaction :

      • Logical errors – جایی که یک transaction نمی تواند کامل شود زیرا دارای خطای کد یا هرگونه خطای داخلی است.
      • خطاهای سیستم – در جایی که سیستم پایگاه داده خود یک Transaction فعال را خاتمه دهد زیرا DBMS قادر به اجرای آن نیست یا به دلیل برخی شرایط سیستم متوقف شده است. به عنوان مثال، در صورت بن بست (deadlock) یا در دسترس نبودن منابع، سیستم یک Transaction فعال را متوقف می کند.

      خرابی سیستم System Crash

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

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

      عد موفقیت دیسک Disk Failure

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

      ساختار ذخیره سازی Storage Structure

      در جلسات گذشته با سیستم ذخیره سازی آشنا شدیم؛ به صورت خلاصه، ساختار ذخیره سازی را می توان به دو دسته تقسیم کرد:

      • ذخیره سازی فرار (Volatile storage) – همانطور که از نام آن پیداست ، یک حافظه فرار نمی تواند از خراب شدن سیستم جان سالم به در ببرد. دستگاههای ذخیره سازی فرار بسیار نزدیک به CPU قرار دارند. به طور معمول آنها روی چیپست تعبیه شده اند. به عنوان مثال ، حافظه اصلی main memory و حافظه پنهان cache memory نمونه ای از ذخیره سازی فرار هستند. آنها سریع هستند اما فقط می توانند مقدار کمی از اطلاعات را ذخیره کنند.
      • ذخیره سازی غیر فرار (Non-volatile storage) – این نوع حافظه ها برای زنده ماندن از سقوط و خرابی سیستم ساخته شده اند. آنها از نظر ظرفیت ذخیره سازی داده ها بسیار عظیم هستند اما از قابلیت دسترسی کندی برخوردارند. هارد دیسک ها، نوارهای مغناطیسی، حافظه فلش و رم غیر می توانند جزء حافظه های ذخیره سازی غیر فرار باشند.

      بازیابی و اتمی بودن (Recovery و Atomicity)

      هنگام سقوط یک سیستم، ممکن است چندین Transaction انجام شود و پرونده های مختلفی برای آنها باز شود تا موارد داده ها تغییر یابد. Transaction IH از طریق عملیات های مختلفی انجام می شوند، که ماهیت اتمی دارند. اما با توجه به خصوصیات ACID، باید اتمی بودن Transaction ها به عنوان یک کل حفظ شود، یعنی تمام عملیات انجام شود یا این که هیچ کدام انجام نشود.

      وقتی DBMS از خراب شدن در امان ماند؛ باید موارد زیر را حفظ کند:

      • باید وضعیت کلیه Transaction های انجام شده را بررسی کند.
      • Transaction ممکن است در وسط برخی از عملیات ها باشد در این صورت DBMS باید از اتمی بودن Transaction در این مورد اطمینان حاصل کند.
      • باید بررسی کند که آیا Transaction در حال حاضر به پایان رسیده است یا باید آن را عقب برگرداند.
      • هیچ Transaction ای مجاز به ترک DBMS در حالت متناقض نخواهد بود.

      دو روش وجود دارد که می تواند به DBMS در بهبودی و همچنین حفظ اتمی بودن Transaction کمک کند:

      • ذخیره logs های مربوط به هر Transaction و نوشتن آنها بر روی برخی از حافظه های پایدار قبل از تغییر آن در پایگاه داده.
      • نگه داشتن صفحه بندی shadow که تغییرات بر روی حافظه بی ثبات در آن انجام می شود و بعداً پایگاه داده واقعی به روز می شود.

      و در ادامه آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده می خواهیم بازیابی مبتنی بر ورود به سیستم یا Log-based Recovery را بررسی کنیم.

      بازیابی مبتنی بر ورود به سیستم Log-based Recovery

      Log دنباله ای از رکورد هاست که رکورد های اقدامات انجام شده توسط یک Transaction را حفظ می کند. مهم است که logs  هاقبل از اصلاح واقعی نوشته شده و در یک رسانه ذخیره سازی پایدار ذخیره شوند که امکان خراب شدن و  fail آن وجود ندارد.

      ریکاوری Log-based بر اساس زیر کار می کند:

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

      مثال : 

      • وقتی Transaction مورد X را تغییر داد، logs  هایمربوط را به شرح زیر می نویسد:

      مثال : 

      در متن Tn مقدار X از V1 به V2 تغییر می یابد.

      • پس از اتمام Transaction، وارد سیستم می شود:

      مثال : 

      پایگاه داده می تواند با استفاده از دو روش زیر ویرایش شود:

      • ویرایش داده های معوق – همه logs ها روی ذخیره پایدار نوشته شده و وقتی یک transaction انجام می شود و پایگاه داده به روز می شود.
      • اصلاح فوری پایگاه داده – هر یک از ویرایش ها، از اصلاح واقعی پایگاه داده پیروی می کند. یعنی پایگاه داده بلافاصله بعد از هر عملیاتی اصلاح و ویرایش می شود.

      در ادامه آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده بیایید با ریکاوری هم زمان transaction ها آشنا شویم.

      ریکاوری های هم زمان Transactions ها

      هنگامی که بیش از یک معامله به صورت موازی انجام می شود ، logs  ها به هم می چسبند. در زمان بهبود برای سیستم ریکاوری سخت می شود که همه فایل ها را عقب بکشید و سپس شروع به بازیابی و ریکاوری کنید. برای مدیریت این وضعیت، اکثر DBMS های مدرن از مفهوم “checkpoints” استفاده می کنند.

      و به عنوان آخرین مطلب در آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده قرار است Checkpoint ها را بشناسیم.

      Checkpoint

      نگهداری از logs های مربوط در زمان واقعی و در محیط واقعی ممکن است تمام فضای حافظه موجود در سیستم را پر کند. با گذشت زمان، فایل log به سیستم ممکن است خیلی بزرگ شود که به هیچ وجه موضوع جالبی نیست و می تواند مشکل ساز شود. در چنین مواقعی ما به استفاده از Checkpoint رو می آوریم. Checkpoint مکانیسمی است که در آن تمام logs های مربوط قبلی از سیستم خارج شده و برای همیشه در یک دیسک ذخیره می شوند. Checkpoint نقطه ای را اعلام می کند که قبل از آن DBMS در حالت مداوم قرار داشته و تمام transaction ها در آن انجام می شود.

      ریکاوری

      وقتی سیستمی که transaction های همزمان دارد خراب شده و بازیابی می شود؛ به روش زیر رفتار می کند:

      آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده ( DBMS )

      آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده ( DBMS )

      • سیستم ریکاوری logs ها را از انتها تا آخرین نقطه checkpoint به عقب می خواند.
      • ریکاوری دو لیست را نگه می دارد ، یک لیست undo-list و یک لیست redo-list.
      • اگر سیستم بازیابی با <Tn ، Start> و <Tn ، Commit> یا فقط <Tn ، Commit> یک log را مشاهده کند ، transaction را در redo-list قرار می دهد.
      • اگر سیستم بازیابی با <Tn, Start> یک log را مشاهده کند اما هیچ commit یا abort log را نیابد، این transaction را در لیست undo-list قرار می دهد.

      تمام transactions های موجود در لیست undo-list خنثی شده و logs های مربوطه برداشته می شوند. تمام transactions های موجود در redo-list و logs های مربوط به قبل آنها حذف می شوند و سپس  قبل از ذخیره سازی logs های  آن ها مجدداً انجام می شوند.

      سخن پایانی

      در این جلسه به آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده ( DBMS ) پرداختیم؛ DBMS یک سیستم بسیار پیچیده است که صدها transactions در هر ثانیه در آن انجام می شود. دوام و استحکام یک DBMS به معماری پیچیده و نرم افزارهای سخت افزاری و سیستم اساسی آن بستگی دارد. در صورت عدم موفقیت و یا خرابی در transactions ها، انتظار می رود که این سیستم را با کمک یا تکنیک های بازیابی داده ها یا ریکاوری آن ها (Recovery) داده را بازگردانی کرد.
      به پایان این دوره آموزشی رسیدیم اما یادگیری همچنان ادامه دارد؛ امیدوارم این دوره مفید بوده باشد.
      با سایر دوره های آموزشی پی وی لرن همراه باشید.

      QR:  جلسه ۲۴ : آشنایی با ریکاوری داده ها در سیستم مدیریت پایگاه داده ( DBMS )
      به اشتراک بگذارید