CRUD
In informatica, create, read, update, e delete (CRUD) – in italiano, creazione, lettura, aggiornamento e rimozione – sono le quattro operazioni basilari della gestione persistente dei dati.[1] La popolarità del termine deriva dal libro del 1983 Managing the Data-base environment dell'informatico James Martin.
Concetti basilari
[modifica | modifica wikitesto]I dati possono trovarsi in una certa area del meccanismo di archiviazione.
- La caratteristica fondamentale di quest'area è che il suo contenuto sia leggibile ed aggiornabile.
- Prima che l'area di archiviazione venga letta o aggiornata, essa dev'essere creata; ciò consiste nell'allocamento di memoria ed inizializzazione tramite un certo contenuto.
- Ad un certo punto successivo alla creazione, l'area di archiviazione deve poter essere distrutta; ciò consiste nel deallocamento della memoria ad essa riservata.
Le quattro operazioni basilari per permettere queste attività sono le cosiddette CRUD: Create (creazione), Read (lettura), Update (aggiornamento), e Delete (rimozione).
Database
[modifica | modifica wikitesto]L'acronimo CRUD si riferisce alle principali operazioni implementate nei database. Ogni lettera dell'acronimo può essere mappata in un'istruzione SQL standard:[2]
CRUD | SQL |
---|---|
Create | INSERT |
Read | SELECT |
Update | UPDATE |
Delete | DELETE |
Oltre ai database relazionali, anche altre tecnologie possono essere usate come livello di persistenza in un'applicazione software. Le funzionalità CRUD possono essere implementate, per esempio, con basi di dati document-oriented, object-oriented, XML, testuali o file binari.
Nota: alcuni sistemi di big data non implementano la funzionalità UPDATE, ma per l'inserimento dei dati forniscono solo un'INSERT a cui è associato un timestamp e salvano una versione dell'"oggetto" completamente nuova ad ogni aggiornamento.
API RESTful
[modifica | modifica wikitesto]L'acronimo CRUD è usato anche in relazione alle API RESTful. Ogni lettera dell'acronimo è associata ad un metodo HTTP:
CRUD | HTTP |
---|---|
Create | POST |
Read | GET |
Update | PUT |
Delete | DELETE |
Nel protocollo HTTP, i metodi GET (lettura), PUT (creazione e aggiornamento) e DELETE (rimozione) sono considerate operazioni CRUD in quanto aventi una precisa semantica relativa alla gestione dell'archiviazione dei dati. Esse permettono infatti allo user agent di manipolare direttamente lo stato della risorsa Web d'interesse.[3] La semantica del metodo POST, d'altro canto, non corrisponde ad alcuna semantica delle operazioni CRUD.[4]
Alternative
[modifica | modifica wikitesto]Tra alternative a CRUD, solitamente usate per scopi specifici, troviamo:
- CRUDL (create, read, update, delete, list)
- BREAD (browse, read, edit, add, delete)[5]
- DAVE (delete, add, view, edit)[6]
- CRAP (create, replicate, append, process)[7]
- FEDI (find, edit, delete, insert)
Note
[modifica | modifica wikitesto]- ^ (EN) James Martin, Managing the Data-base Environment, Englewood Cliffs, New Jersey, Prentice-Hall, 1983, p. 381, ISBN 0-135-50582-8.
- ^ (EN) Maryam Sulemani, CRUD operations explained: Create, read, update, delete, su educative.io, 7 aprile 2021. URL consultato il 14 dicembre 2021.
- ^ (EN) Roy Fielding, Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, Section 4, su IETF, Internet Engineering Task Force, giugno 2014, RFC 7231. URL consultato il 14 febbraio 2018.
- ^ (EN) Roy T. Fielding, It is okay to use POST, su roy.gbiv.com, 20 marzo 2009. URL consultato il 14 aprile 2020.«POST only becomes an issue when it is used in a situation for which some other method is ideally suited: e.g., retrieval of information that should be a representation of some resource (GET), complete replacement of a representation (PUT), or any of the other standardized methods that tell intermediaries something more valuable than “this may change something.” The other methods are more valuable to intermediaries because they say something about how failures can be automatically handled and how intermediate caches can optimize their behavior. POST does not have those characteristics, but that doesn’t mean we can live without it. POST serves many useful purposes in HTTP, including the general purpose of “this action isn’t worth standardizing.”»
- ^ (EN) Paul M. Jones, BREAD, not CRUD, su paul-m-jones.com, 2008.
- ^ (EN) James McGaw, Beginning Django E-Commerce, 21 giugno 2010, p. 41, ISBN 978-1-4302-2536-2.
- ^ (EN) CRAP and CRUD: From Database to Datacloud, in Direct2DellEMC, 13 novembre 2012. URL consultato il 30 gennaio 2018.
Voci correlate
[modifica | modifica wikitesto]- Representational state transfer (REST)
- Data manipulation language
- Input/output
- ACID
- Query by Example
- Scaffolding (informatica)
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Denis Howe, CRUD, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL