冪等な書き込み
何回実行しても結果が同じになる操作。UPDATE users SET email='x' WHERE id=1は冪等(5回実行しても結果は同じ)だが、UPDATE counter SET n = n + 1は冪等ではない。
HTTPの意味論では、PUTは定義上冪等で、POSTはそうではない。RESTのAPI設計でも、リソースの置き換えには冪等なPUTが推奨される。Stripeで知られるのが冪等キーの方式で、クライアントが論理的な操作ごとにUUIDを生成し、サーバーはそのキーを引いて重複を排除する(典型的にはRedisに24時間のTTLで保存)。ネットワークがタイムアウトしても、二重課金の心配なく安全に再試行できる。UPSERT(INSERT ... ON CONFLICT)は冪等で、Sagaパターンの補償アクションも冪等でなければならない。