論理削除
データを物理的に記憶装置から削除する物理削除に対し、記憶装置から削除はせずに削除フラグや削除日時によってデータの状態を判別するアプローチ メリット
物理削除と異なり、操作をrevertできる
だが操作をrevertする機会は現実にはほとんどない
1つのレコードへの更新処理をロールバックするだけでは済まないことが多いから
ありうるのは残されたデータを見ながら復旧作業に役立てたり、削除されたアカウントの一部データを新規アカウントにコピーするとか
デメリット
アプリケーションコードやSQLにおいて削除されたデータを除くことを常に考慮しないといけない 必要になった際のデータ削除が困難
GDPRや顧客からの依頼などで完全なデータ削除を求められるケース Solution
削除されたデータを格納するテーブルを設け、削除時にそちらにデータをうつす
通常のテーブルの変更に追従する必要はないのでJSONB型にすべて突っ込む code:sql
CREATE TABLE deleted_record (
id uuid PRIMARY KEY DEFAULT gen_ulid(),
deleted_at timestamptz NOT NULL default now(),
original_table varchar(200) NOT NULL,
original_id uuid NOT NULL,
data jsonb NOT NULL
);