در علوم رایانه، **ماندگاری** (به انگلیسی: persistence) به ویژگی ماندگاری حالت یک سامانه اشاره دارد، یعنی آن حالت، بیشتر از فرایندی که آن را تولید کرده‌است، زنده (ماندگار) می‌ماند. این موضوع در عمل توسط ذخیره حالت به عنوان داده در انبار داده رایانه به دست می‌آید. برنامه‌های رایانه‌ای باید داده را به دستگاه‌های ذخیره‌سازی منتقل و برگردانند، و همچنین باید یک نگاشت از «ساختمان داده‌های زبان برنامه‌نویسی محلی» به «ساختمان داده‌های دستگاه ذخیره‌سازی» فراهم‌سازی نمایند.

مثلاً، پردازشگرهای تصویر یا واژه‌پردازها برای ماندگار کردن از ذخیره‌سازی اسنادشان به فایل‌ها استفاده می‌کنند.

ماندگاری متعامد یا ناپیدا
-------------------------

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

در یک ماندگاری غیرمتعامد لازم است که داده توسط دستورالعمل‌های خاص موجود در برنامه، از محل ذخیره‌سازی نوشته یا خوانده شوند، و این منجر به استفاده از فعل «ماندگار کردن» به عنوان یک فعل گذرا می‌شود: «در هنگام اتمام کار، برنامه، داده را ماندگار می‌سازد».

مزیت اصلی محیط‌های ماندگاری متعامد، «ساده‌تر بودن» و «خطاپذیری کمتر» آن برنامه‌ها است.

### پذیرش فناوری

از ماندگاری متعاند در سیستم عامل‌ها برای خواب‌کردن و در سامانه‌های مجازی‌سازی بن‌سازه مثل وی‌ام‌ویر و ویرچوال باکس برای ذخیره‌سازی حالت، پذیرفته و استفاده می‌شود.

زبان‌های پیش‌الگوی تحقیقاتی مثل پی‌اس-الگول یا نیپر۸۸، فیبوناچی، و پی‌جاما، با موفقیت «مفهوم» و «مزایای آن مفهوم» را برای برنامه‌نویسان را نشان داده‌اند.

فنون ماندگارسازی
----------------

### تصویر سامانه (System images)

استفاده از تصویر سامانه ساده‌ترین استراتژی (راهبرد) است. خواب‌کردن یک رایانه نوت‌بوک مثالی از ماندگاری متعامد به کمک تصویر سامانه است، زیرا نیازی به انجام هیچ عملی توسط برنامه‌ای که روی ماشین اجرا می‌شود، ندارد. یک مثال از «ماندگاری غیرمتعامد به کمک یک تصویر سامانه»، یک برنامه واژه‌پرداز ساده است، که دستورالعمل‌های خاصی را برای ذخیره سند کامل به یک فایل، اجرا می‌کند.

**ایرادها:** این راهبرد نیاز به حافظه رم کافی برای نگه‌داشتن حالت کامل سامانه دارد. در اینجا، هنگام خرابی یا توقف یا خاموشی سامانه، تغییراتی که پس از ذخیره تصویر نهایی، به سامانه وارد می‌شوند، از دست می‌روند. در بیشتر سامانه‌ها، ذخیره یک تصویر برای هر تغییر منفرد، بسیار زمانبر است، از این رو در سامانه‌های حساس، از تصویرها به عنوان تنها فناوری ماندگاری استفاده نمی‌شوند.

### دفتر وقایع (Journals)

استفاده از وقعه‌نامه دومین روش ماندگاری ساده می‌باشد. وقعه‌نگاری «فرایند ذخیره وقایع در یک گزارش» است، که این کار قبل از اعمال هر کدام از آنها به سامانه انجام می‌شود. به این گزارش‌ها «وقعه‌نامه (Journal)» گفته می‌شود.

در هنگام شروع، این وقعه‌نامه‌ها خوانده می‌شود، و هرکدام به سامانه مجدد اعمال می‌گردد، که این موضوع، موقعی که خرابی یا توقف برای سامانه رخ می‌دهد، جلوی ازدست‌رفتن داده را می‌گیرد.

مثلاً اگر تاریخچه همه «Undo/Redo» های دستورات کاربر در یک برنامه پردازش تصویر، در یک فایل نوشته شود، یک وقعه‌نامه را می‌سازد، که توانایی بازیابی حالت یک تصویر ویرایش شده در هر موقعی را دارد.

این وقعه‌نامه‌ها توسط فایل سیستم ژورنالی، سامانه انتشار، و سامانه‌های مدیریت پایگاه‌داده استفاده می‌شوند، که در آنجا به وقعه‌نامه «گزارش تراکنش (transaction log)» یا «گزارش اعمال مجدد(redo log)» گفته می‌شود.

**ایرادها:** اگر فقط از ژورنال‌ها استفاده شود، باید همه تاریخچه (بالقوه بزرگ) برای همه وقایع سامانه در هر شروع مجدد سامانه، دوباره اعمال گردند. درنتیجه وقعه‌نامه‌ها همراه با دیگر فنون ماندگاری استفاده می‌شوند.

### نوشته‌های آلوده (Dirty writes)

در این روش، فقط آن بخش‌های حالت سامانه که که از نوشتن آخر ما تغییر کرده‌اند (آلوده شده‌اند)، در انبار ذخیره‌سازی نوشته می‌شوند؛ مثلاً، برنامه‌های کاربردی ویرایش سند پیچیده، از «نوشتن آلوده» برای ذخیره‌سازی فقط آن بخش‌های سند که از ذخیره نهایی واقعاً تغییر کرده‌اند، استفاده می‌کنند.

**ایرادها:** در این تکنیک نیاز است تا تغییرات حالت در داخل یک برنامه رهگیری شود. این موضوع به شیوه‌ای غیرشفاف با درخواست فراخوانی‌های API ذخیره‌سازی خاص انجام می‌شود، یا به صورت ناپیدا توسط تبدیل برنامه خودکار، انجام می‌شود. این موضوع منجر به کدی می‌شود که از کد بومی «کندتر» است و اشکال‌زدایی آن هم پیچیده‌تر است.

لایه‌های ماندگاری
-----------------

هر لایه نرم‌افزاری که برای نرم‌افزار، «ماندگاری حالت» را ساده‌سازی می‌کند، معمولاً یک «لایه ماندگاری» نامیده می‌شود. بیشتر لایه‌های ماندگاری به صورت مستقیم ماندگاری را انجام نمی‌دهند، بلکه از یک سامانه مدیریت پایگاه داده مبنایی استفاده می‌کنند.

شیوع سامانه (System prevalence)
-------------------------------

**شیوع سامانه** نوعی تکنیک است که روش‌های «تصویر سامانه» و «وقعه‌نامه تراکنش» را (که در بالا ذکر شد) با هم ترکیب می‌کند، هدف غلبه بر محدودیت‌های هر دو روش است.

**ایرادها:** یک سامانه شیوع باید RAM کافی برای نگهداری حالت کامل سامانه داشته باشد.

سامانه‌های مدیریت پایگاه داده (DBMSs)
-------------------------------------

DBMSها ترکیبی از روش‌های «نوشتن آلوده» و «وقعه‌نامه تراکنش» که در بالا ذکر شد را استفاده می‌کنند. این سامانه‌ها علاوه بر ماندگاری، خدمت‌های دیگری مثل **پرسمان**، **حسابرسی**، یا **کنترل دسترسی** را فراهم می‌بینند.

سیستم‌عامل‌های ماندگار
----------------------

سیستم‌عامل‌های ماندگار نوعی سیستم‌عامل هستند که حتی پس از یک تصادف یا وقفه غیرقابل پیش‌بینی هم ماندگار باقی می‌مانند. سیستم‌عامل‌هایی که این توانمندی در آن‌ها وجود دارد شامل:

* KeyKOS
* EROS جانشین KeyKOS
* CapROS بازبینی EROS
* Coyotos جانشین EROS
* Multics با single-level store آن
* Phantom
* IBM System/38
* Grasshopper OS
* Lua OS
* tahrpuppy-6.0.5

پانویس
------

1. ↑  Balzer, Stephanie (November 17, 2005). "Contracted Persistent Object Programming" (PDF). *University of Glasgow - School of CS - Research*. ETH Zürich. Archived from the original (PDF) on December 31, 2006. Retrieved September 21, 2015.

منابع
-----

* مشارکت‌کنندگان ویکی‌پدیا. «Persistence (computer science)». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۶ نوامبر ۲۰۲۰.