ایجاد، خواندن، روزآمدکردن[۱] (بهروزرسانی) و حذف (به انگلیسی: Create, read, update and delete) که به اختصار (CRUD) نیز خوانده میشوند؛ چهار تابع بنیادین ذخیره ماندگار هستند.[۲] ممکن است از واژههای جایگزین در زمان تعریف چهار تابع اساسی CRUD استفاده شود، مثل «بازیابی (به انگلیسی: retrieve)» به جای خواندن، و اصلاح (به انگلیسی: modify) به جای روزآمدکردن، و تخریب (به انگلیسی: destroy) به جای حذف. گاهی از واژه CRUD برای توصیف قراردادهای واسط کاربری که دیدن، جستجو، و تغییر اطلاعات را سادهسازی میکنند، استفاده میشود، این کار معمولاً از طریق فرمها و گزارشهای کامپیوتری انجام میشود. این اصطلاح (CRUD) احتمالاً اولین بار توسط جیمز مارتین در کتاب سال ۱۹۸۳ ایشان به نام «مدیریت محیط پایگاه داده» رواج یافتهاست.[۳][۴] گاهی این کوتهنوشت را به CRUDL گسترش میدهند تا «لیست کردن (به انگلیسی: listing)» دیتاستهای بزرگ را پوشش دهد، و این موضوع پیچیدگیهای اضافی پیش میآورد، مثلاً موقعی که دیتاستها بسیار بزرگ هستند و نمیتوان آنها را در حافظه نگهداشت، باید از صفحهبندی استفاده کرد.
کوتهنوشت CRUD به همه «توابع عمده» ای که در نرمافزار کاربردی پایگاه داده رابطهای پیادهسازی شدهاست، اشاره دارد. هر حرف موجود در این مخفف، را میتوان به یک بیانیه زبان پرسمان ساختیافته (SQL) استاندارد، متدهای پروتکل انتقال ابرمتن (HTTP) (که در ساخت واسط کاربری RESTful[۵] استفاده میشوند) یا یک عملیات خدمت توزیعشده داده (DDS) نگاشت داد:
Operation | SQL | HTTP | RESTful WS | DDS | MongoDB |
---|---|---|---|---|---|
Create | INSERT | PUT / POST | POST | write | Insert |
Read (Retrieve) | SELECT | GET | GET | read / take | Find |
Update (Modify) | UPDATE | PUT / POST / PATCH | PUT | write | Update |
Delete (Destroy) | DELETE | DELETE | DELETE | dispose | Delete |
مقایسه عملیاتهای پایگاه داده محور CRUD با متدهای HTTP ایراداتی هم دارد. اگر بخواهیم دقیقتر بگوییم، هم PUT و هم POST میتوانند منابع را بسازند یا روزآمد کنند؛ تفاوت کلیدی آن است که برخلاف POST، متد PUT خودتوان است، یعنی چندین درخواست مشابه باید تأثیر مشابهی با یک درخواست منفرد داشته باشد. درنتیجه، PUT یک عملیات «جایگزین» است، که میتوان استدلال کرد که معادل روزآمدسازی یا «update» نیست.
اگرچه یک پایگاه داده رابطهای یک لایه ماندگاری معمول در نرمافزارهای کاربردی میباشد، لایههای ماندگاری فراوان دیگری هم وجود دارد. برای مثال، عملیات CRUD را میتوان در پایگاه داده شیء یا پایگاه داده اکسامال، یا فایلهای متنی صاف، یا فرمت فایل سفارشی هم پیادهسازی کرد. بعضی از سامانهها (دادهای بزرگ) UPDATE را پیادهسازی نمیکنند، بلکه فقط یک INSERT مهرزماندار (وقعهنامه) دارند، یعنی در واقع یک ورژن جدید از شیء را ذخیرهسازی میکنند. درنتیجه، آنها تراکنش ندارند، و ممکن است سازگاریشان را از دست بدهند.
CRUD همچنین با مرحله واسط کاربری بیشتر برنامههای کاربردی مرتبط است. مثلا در نرمافزار کتاب آدرس، که واحد ذخیرهسازی مبنایی، یک «ورودی تماس» است. در اینجا به صورت یک حداقلی، نرمافزار باید به کاربر اجازه این موارد را بدهد:
بدون حداقل این چهار عملیات، نرمافزار را نمیتوان کامل درنظر گرفت. به دلیل آنکه این عملیاتها بسیار بنیادین هستند، معمولاً مستندسازی شده، و تحت یک عنوان جامع توصیف میشوند، مثل «مدیریت تماس»، «مدیریت محتوا» یا «نگهداری از محتوا» (یا «مدیریت سند» به صورت کلی، بر اساس واحد ذخیرهسازی اساسی برای کاربرد خاص).
دیگر انواع CRUD شامل این موارد است: