CRUD
# 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. La popolarità del termine deriva dal libro del 1983 Managing the Data-base environment dell'informatico James Martin.

## Concetti basilari

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

L'acronimo CRUD si riferisce alle principali operazioni implementate nei database. Ogni lettera dell'acronimo può essere mappata in un'istruzione SQL standard:

| 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

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. La semantica del metodo POST, d'altro canto, non corrisponde ad alcuna semantica delle operazioni CRUD.

## Alternative

Tra alternative a CRUD, solitamente usate per scopi specifici, troviamo:

* CRUDL (create, read, update, delete, list)
* BREAD (browse, read, edit, add, delete)
* DAVE (delete, add, view, edit)
* CRAP (create, replicate, append, process)
