ماندگاری (علوم رایانه)
در علوم رایانه، ماندگاری به ویژگی ماندگاری حالت یک سامانه اشاره دارد، یعنی آن حالت، بیشتر از فرایندی که آن را تولید کرده‌است، زنده (ماندگار) می‌ماند. این موضوع در عمل توسط ذخیره حالت به عنوان داده در انبار داده رایانه به دست می‌آید. برنامه‌های رایانه‌ای باید داده را به دستگاه‌های ذخیره‌سازی منتقل و برگردانند، و همچنین باید یک نگاشت از «ساختمان داده‌های زبان برنامه‌نویسی محلی» به «ساختمان داده‌های دستگاه ذخیره‌سازی» فراهم‌سازی نمایند.
مثلاً، پردازشگرهای تصویر یا واژه‌پردازها برای ماندگار کردن از ذخیره‌سازی اسنادشان به فایل‌ها استفاده می‌کنند.
یک ماندگاری موقعی «متعامد» یا «ناپیدا» نامیده می‌شود که به صورت یک ویژگی ذاتی «محیط اجرایی یک برنامه» پیاده‌سازی شده باشد. یک محیط ماندگاری متعامد هیچ عملی خاصی را از برنامه‌های اجرا شونده در داخل آن، برای بازیابی یا ذخیره حالت‌شان، درخواست نمی‌کند.
در یک ماندگاری غیرمتعامد لازم است که داده توسط دستورالعمل‌های خاص موجود در برنامه، از محل ذخیره‌سازی نوشته یا خوانده شوند، و این منجر به استفاده از فعل «ماندگار کردن» به عنوان یک فعل گذرا می‌شود: «در هنگام اتمام کار، برنامه، داده را ماندگار می‌سازد».
مزیت اصلی محیط‌های ماندگاری متعامد، «ساده‌تر بودن» و «خطاپذیری کمتر» آن برنامه‌ها است.
از ماندگاری متعاند در سیستم عامل‌ها برای خواب‌کردن و در سامانه‌های مجازی‌سازی بن‌سازه مثل وی‌ام‌ویر و ویرچوال باکس برای ذخیره‌سازی حالت، پذیرفته و استفاده می‌شود.
زبان‌های پیش‌الگوی تحقیقاتی مثل یا ، فیبوناچی، و پی‌جاما، با موفقیت «مفهوم» و «مزایای آن مفهوم» را برای برنامه‌نویسان را نشان داده‌اند.
استفاده از ساده‌ترین استراتژی (راهبرد) است. خواب‌کردن یک رایانه نوت‌بوک مثالی از ماندگاری متعامد به کمک تصویر سامانه است، زیرا نیازی به انجام هیچ عملی توسط برنامه‌ای که روی ماشین اجرا می‌شود، ندارد. یک مثال از «ماندگاری غیرمتعامد به کمک یک تصویر سامانه»، یک برنامه واژه‌پرداز ساده است، که دستورالعمل‌های خاصی را برای ذخیره سند کامل به یک فایل، اجرا می‌کند.
ایرادها: این راهبرد نیاز به حافظه رم کافی برای نگه‌داشتن حالت کامل سامانه دارد. در اینجا، هنگام خرابی یا توقف یا خاموشی سامانه، تغییراتی که پس از ذخیره تصویر نهایی، به سامانه وارد می‌شوند، از دست می‌روند. در بیشتر سامانه‌ها، ذخیره یک تصویر برای هر تغییر منفرد، بسیار زمانبر است، از این رو در سامانه‌های حساس، از تصویرها به عنوان تنها فناوری ماندگاری استفاده نمی‌شوند.
استفاده از وقعه‌نامه دومین روش ماندگاری ساده می‌باشد. وقعه‌نگاری «فرایند ذخیره وقایع در یک گزارش» است، که این کار قبل از اعمال هر کدام از آنها به سامانه انجام می‌شود. به این گزارش‌ها «وقعه‌نامه (Journal)» گفته می‌شود.
در هنگام شروع، این وقعه‌نامه‌ها خوانده می‌شود، و هرکدام به سامانه مجدد اعمال می‌گردد، که این موضوع، موقعی که خرابی یا توقف برای سامانه رخ می‌دهد، جلوی ازدست‌رفتن داده را می‌گیرد.
مثلاً اگر تاریخچه همه «Undo/Redo» های دستورات کاربر در یک برنامه پردازش تصویر، در یک فایل نوشته شود، یک وقعه‌نامه را می‌سازد، که توانایی بازیابی حالت یک تصویر ویرایش شده در هر موقعی را دارد.
این وقعه‌نامه‌ها توسط فایل سیستم ژورنالی، ، و سامانه‌های مدیریت پایگاه‌داده استفاده می‌شوند، که در آنجا به وقعه‌نامه «گزارش تراکنش (transaction log)» یا «گزارش اعمال مجدد(redo log)» گفته می‌شود.
ایرادها: اگر فقط از ژورنال‌ها استفاده شود، باید همه تاریخچه (بالقوه بزرگ) برای همه وقایع سامانه در هر شروع مجدد سامانه، دوباره اعمال گردند. درنتیجه وقعه‌نامه‌ها همراه با دیگر فنون ماندگاری استفاده می‌شوند.
در این روش، فقط آن بخش‌های حالت سامانه که که از نوشتن آخر ما تغییر کرده‌اند (آلوده شده‌اند)، در انبار ذخیره‌سازی نوشته می‌شوند؛ مثلاً، برنامه‌های کاربردی ویرایش سند پیچیده، از «نوشتن آلوده» برای ذخیره‌سازی فقط آن بخش‌های سند که از ذخیره نهایی واقعاً تغییر کرده‌اند، استفاده می‌کنند.
ایرادها: در این تکنیک نیاز است تا تغییرات حالت در داخل یک برنامه رهگیری شود. این موضوع به شیوه‌ای غیرشفاف با درخواست فراخوانی‌های API ذخیره‌سازی خاص انجام می‌شود، یا به صورت ناپیدا توسط خودکار، انجام می‌شود. این موضوع منجر به کدی می‌شود که از کد بومی «کندتر» است و اشکال‌زدایی آن هم پیچیده‌تر است.
هر که برای نرم‌افزار، «ماندگاری حالت» را ساده‌سازی می‌کند، معمولاً یک «لایه ماندگاری» نامیده می‌شود. بیشتر لایه‌های ماندگاری به صورت مستقیم ماندگاری را انجام نمی‌دهند، بلکه از یک مبنایی استفاده می‌کنند.
شیوع سامانه نوعی تکنیک است که روش‌های «تصویر سامانه» و «وقعه‌نامه تراکنش» را (که در بالا ذکر شد) با هم ترکیب می‌کند، هدف غلبه بر محدودیت‌های هر دو روش است.
ایرادها: یک سامانه شیوع باید RAM کافی برای نگهداری حالت کامل سامانه داشته باشد.
DBMSها ترکیبی از روش‌های «نوشتن آلوده» و «وقعه‌نامه تراکنش» که در بالا ذکر شد را استفاده می‌کنند. این سامانه‌ها علاوه بر ماندگاری، خدمت‌های دیگری مثل پرسمان، حسابرسی، یا کنترل دسترسی را فراهم می‌بینند.
سیستم‌عامل‌های ماندگار نوعی سیستم‌عامل هستند که حتی پس از یک تصادف یا وقفه غیرقابل پیش‌بینی هم ماندگار باقی می‌مانند. سیستم‌عامل‌هایی که این توانمندی در آن‌ها وجود دارد شامل: