В компьютерном программировании , создание, чтение, обновление и удаление ( CRUD ) являются четыре основных операциями постоянного хранения . [1] Альтернативные слова иногда используются при определении четырех основных операций CRUD, таких как построение вместо создания , получение вместо чтения или уничтожение или уничтожение вместо удаления . CRUD также иногда используется для описания соглашений о пользовательском интерфейсе, которые облегчают просмотр, поиск и изменение информации , часто с использованием компьютерныхформы и отчеты . Этот термин, вероятно, был впервые популяризирован Джеймсом Мартином в его книге 1983 года « Управление средой базы данных» . Акроним может быть расширен до CRUDL, чтобы охватить список больших наборов данных, которые вносят дополнительную сложность, например разбиение на страницы, когда наборы данных слишком велики, чтобы их можно было легко хранить в памяти.
Концепция
Данные могут быть помещены в место (область) хранилища. Фундаментальной особенностью места хранения является то, что оно имеет читаемый и обновляемый контент (состояние). Эти операции чтения и обновления являются двумя основными операциями с хранилищем и известны как пара загрузка-обновление (LUP). [2]
Прежде чем место хранения можно будет использовать для чтения или обновления, его необходимо создать , выделить и инициализировать с помощью согласованного содержимого. После того, как место хранения было использовано, его необходимо уничтожить , завершить работу и освободить. Эти операции создания и удаления являются двумя другими основными операциями в хранилище.
Вместе они составляют четыре основные операции управления хранилищем (прямое управление содержимым хранилищ пользователями), известные как CRUD: создание , чтение , обновление и удаление . Операции CRUD являются идемпотентными , что означает, что несколько приложений одной и той же операции оказывают такое же влияние на хранилище, как и одно приложение.
Приложения базы данных
Аббревиатура CRUD относится ко всем основным операциям, которые реализованы в приложениях реляционных баз данных . Каждая буква в аббревиатуре может отображаться на стандартный оператор языка структурированных запросов (SQL), метод протокола передачи гипертекста (HTTP) (обычно используется для создания RESTful API ) [3] или операцию службы распространения данных (DDS):
CRUD | SQL | HTTP | DDS |
---|---|---|---|
Создайте | ВСТАВЛЯТЬ | СТАВИТЬ | написать |
читать | ВЫБРАТЬ | ПОЛУЧАТЬ | читать |
Обновить | ОБНОВИТЬ | СТАВИТЬ | написать |
Удалить | УДАЛИТЬ | УДАЛИТЬ | избавляться |
В HTTP методы GET (чтение), PUT (создание и обновление) и DELETE (удаление) являются операциями CRUD, поскольку они имеют семантику управления хранилищем, что означает, что они позволяют пользовательским агентам напрямую манипулировать состояниями целевых ресурсов . [4] Метод POST, с другой стороны, представляет собой операцию процесса, которая имеет семантику, зависящую от целевого ресурса, за исключением семантики операций CRUD. [5] В отличие от операций CRUD, метод POST не обязательно идемпотентен.
Хотя реляционная база данных обеспечивает общий уровень сохраняемости в программных приложениях, существует множество других уровней сохраняемости. Функциональность CRUD может быть реализована, например, с объектными базами данных , базами данных XML , плоскими текстовыми файлами или пользовательскими форматами файлов. Некоторые системы (большие данные) не реализуют UPDATE, но имеют только INSERT с меткой времени (ведение журнала), фактически сохраняя новую версию объекта. Как следствие, у них также нет транзакций, и они могут потерять согласованность .
Пользовательский интерфейс
CRUD также актуален на уровне пользовательского интерфейса большинства приложений. Например, в программном обеспечении адресной книги основной единицей хранения является запись отдельного контакта . Как минимум, программное обеспечение должно позволять пользователю
- создавать или добавлять новые записи;
- читать, извлекать, искать или просматривать существующие записи;
- обновлять или редактировать существующие записи;
- удалить, деактивировать или удалить существующие записи.
Без хотя бы этих четырех операций программное обеспечение нельзя считать законченным. Поскольку эти операции настолько фундаментальны, они часто документируются и описываются под одним всеобъемлющим заголовком, например, «управление контактами», «управление контентом» или «обслуживание контактов» (или «управление документами» в целом, в зависимости от базовой единицы хранения для конкретное приложение).
Другие варианты
Другие варианты CRUD включают:
Смотрите также
- Передача репрезентативного состояния (REST)
- Шаблон активной записи
- Язык манипулирования данными
- Ввод, вывод
- КИСЛОТА
- Запрос по примеру
- Разделение команд и запросов
- Scaffold (программирование)
Рекомендации
- ^ Мартин, Джеймс (1983). Управление средой базы данных . Энглвуд Клиффс, Нью-Джерси: Прентис-Холл. п. 381. ISBN. 0-135-50582-8.
- ^ Стрейчи, Кристофер (2000). «Фундаментальные концепции языков программирования». Вычисление высшего порядка и символическое вычисление . Kluwer Academic Publishers. 13 (1/2): 11–49. CiteSeerX 10.1.1.332.3161 . DOI : 10,1023 / А: 1010000313106 . ISSN 1388-3690 .
- ^ Том Спенсер (16 сентября 2014 г.). «Никакого ОТДЫХА для уиппета» . Проверено 2 апреля 2021 .
- ^ Филдинг, Рой (июнь 2014 г.). «Протокол передачи гипертекста (HTTP / 1.1): семантика и содержание, раздел 4» . IETF . Инженерная группа Интернета (IETF). RFC 7231 . Проверено 14 февраля 2018 .
- ^ Рой Т. Филдинг (20 марта 2009 г.). «Можно использовать POST» . roy.gbiv.com . Проверено 14 апреля 2020 .
POST становится проблемой только тогда, когда он используется в ситуации, для которой идеально подходит какой-либо другой метод: например, поиск информации, которая должна быть представлением некоторого ресурса (GET), полная замена представления (PUT) или любой из другие стандартизированные методы, которые сообщают посредникам нечто более ценное, чем «это может что-то изменить». Другие методы более ценны для посредников, потому что они говорят о том, как можно автоматически обрабатывать сбои и как промежуточные кэши могут оптимизировать их поведение. POST не обладает этими характеристиками, но это не значит, что мы можем жить без него. POST служит многим полезным целям в HTTP, включая общую цель «это действие не заслуживает стандартизации».
- ^ Пол М. Джонс (2008). «ХЛЕБ, а не CRUD» .
- ^ Макгоу, Джеймс (21 июня, 2010 г.). Начало работы с Django E-Commerce . п. 41. ISBN 9781430225362.
- ^ «CRAP и CRUD: от базы данных к Datacloud - Direct2DellEMC» . Direct2DellEMC . 2012-11-13 . Проверено 30 января 2018 .