コンピュータプログラミングでは、作成、読み取り、更新、削除( CRUD ) は、永続ストレージの 4 つの基本操作 (アクション) です。[ 1 ] CRUD は、コンピュータベースのフォームやレポートを使用して情報を表示、検索、変更することを容易にするユーザーインターフェイスの慣例を説明するためにも使用されることがあります。
CRUDという用語は、おそらく1983年にジェームズ・マーティンが著書『データベース環境の管理』で初めて普及させたものと思われる[ 2 ]。
データは、ストレージ機構の特定の場所/領域に格納することができる。
これら4つの操作を合わせると、CRUD(作成、読み取り、更新、削除)と呼ばれるストレージ管理の基本操作が構成されます。
CRUD という頭字語は、データベースによって実装される主要な操作を指します。この頭字語の各文字は、標準的な構造化クエリ言語 (SQL)ステートメントに対応付けられます。[ 3 ]
リレーショナルデータベースはソフトウェアアプリケーションにおける一般的な永続化層ですが、他にも数多くの永続化層が存在します。例えば、CRUD機能は、ドキュメントデータベース、オブジェクトデータベース、XMLデータベース、テキストファイル、バイナリファイルなどを用いて実装できます。
一部のビッグデータシステムではUPDATE機能が実装されておらず、タイムスタンプ付きのINSERT(ジャーナリング)機能のみを備えており、毎回オブジェクトの全く新しいバージョンが保存されます。
CRUDという頭字語は、 RESTful APIに関する議論でも登場します。この頭字語の各文字は、ハイパーテキスト転送プロトコル(HTTP)のメソッドに対応付けられます。
HTTP では、POST (作成)、GET (読み取り)、PUT (更新)、PATCH (部分更新)、および DELETE メソッドは、ストレージ管理セマンティクスを持つため CRUD 操作に対応します。つまり、ユーザー エージェントがターゲットリソースの状態を直接操作できます。[ 4 ] ただし、POST はリソースの作成に限定されず、CRUD の範囲を超えるセマンティクスを持つプロセス指向の操作にも使用できます。[ 5 ]
CRUD は、ほとんどのアプリケーションのユーザー インターフェイス レベルで関連性があります。たとえば、アドレス帳ソフトウェアでは、基本的なストレージ単位は個々の連絡先エントリです。最低限、ソフトウェアはユーザーが次のことを実行できるようにする必要があります。[ 6 ]
これらの業務は非常に基本的なものであるため、多くの場合、「連絡先管理」や「文書管理」といった包括的な見出しの下にまとめて文書化され、説明されます。
CRUDのその他のバリエーションには以下のようなものがあります。
POST は、他のメソッドが理想的に適している状況で使用される場合にのみ問題になります。たとえば、何らかのリソースの表現であるべき情報の取得 (GET)、表現の完全な置き換え (PUT)、または「これは何かを変更する可能性があります」よりも価値のある情報を仲介者に伝える他の標準化されたメソッドのいずれかです。他のメソッドは、障害を自動的に処理する方法や、中間キャッシュが動作を最適化する方法について何かを伝えるため、仲介者にとってより価値があります。POST にはこれらの特性はありませんが、だからといって、POST なしでやっていけるとは限らないということです。POST は、HTTP において、「このアクションは標準化する価値がない」という一般的な目的を含め、多くの有用な目的を果たしています。