20250304メモ
ACID特性 ... 原子性、一貫性、独立性、持続性
原子性 ... トランザクション内のすべてが成功するか、すべて失敗するかの二択であること。トランザクション内の処理はすべて合わせて1つの操作という考え方になる
一貫性 ... データの整合性が保たれること。
独立性 ... 同時に複数のトランザクションがあるとき、お互いに影響を与えないこと。トランザクションが扱うテーブルのデータが外から読み取られたり、更新されたりすることを防ぐロック(排他制御)などによって担保される。
持続性 ... トランザクションの結果が永続化され、システムがおちても失われないこと。
トランザクション分離レベル ... 独立性を弱めて並列度を上げるために、どれくらいの独立性の強さにするかというレベル分け。
CAP定理 ... 分散システムにおいて、一貫性、可用性、分断耐性の3つを同時に満たすことはできないという考え方。
同時に2つは満たすことができるが、1つは諦めなければ?いけない。トレードオフが存在するということ
結果整合性...一時的にデータの一貫性がない状態があるが、時間の経過などとともに最終的には一貫性ができあがること。タイムラグがある。RDBをライターとリードレプリカで冗長化している場合に、ライターの状態がレプリカに同期されるまでの間には多少のタイムラグがあるが、いずれは同じ状態になる。タイムラグを全く許容出来ない場合、二相コミットが必要になる。
Sagaパターンもこれに該当するのかな?
BASE ... "Basically Available", "Soft-State", "Eventually Consistent" の頭文字を取ったもの。ACIDに比べて柔軟。分散システム向けって感じがする。
Basically Available ... 「基本的にいつでも利用可能」という意味。ACIDな特性をもつRDBの場合で、トランザクションが複数ある場合、ロックによってトランザクションが待たされることがあるけど、この特性をもつ場合は待たされない。
Soft-State ... 常に一貫性を保証しなくてもよい。(あくまで「常に」であることに注意)
Eventually Consistent ... 結果整合性。
Saga ... マイクロサービス間で連携しながら順番にローカルトランザクションを実行しつつ、失敗したら補償トランザクションを実行してマイクロサービス全体のデータ整合性を取る設計パターン。
コレオグラフィ...Sagaの実装パターンの1つ。次の処理は次のマイクロサービスに委ねる。
オーケストレーション...マイクロサービス全体を指揮するオーケストレータにコラボレーションロジックを書くパターン。Sagaの全体像がオーケストレータに実装されるので全体像を掴みやすい。