Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[JAWS DAYS 2025] 最近の DB の競合解決の仕組みが分かった気になってみた

[JAWS DAYS 2025] 最近の DB の競合解決の仕組みが分かった気になってみた

JAWS DAYS 2025
https://jawsdays2025.jaws-ug.jp/

MemoryDB のデータ競合の解決は CRDT で実装されているということを話しています。

maroon1st

March 03, 2025
Tweet

More Decks by maroon1st

Other Decks in Programming

Transcript

  1. 最近の DB の競合解決の仕組みが 分かった気になってみた     Guri / Hajime Oguri ハッシュタグ:#jawsdays2025 #jawsug

    #jawsdays2025_c Track C-6 DevelopersIO流!アマゾンの奥地で技術の限界に挑戦:LT7人衆、熱き戦い
  2. Guri / Hajime Oguri 大栗 宗(@maroon1st) アライアンス事業部所属 日系SIer → クラスメソッド →

    某外資 → クラスメソッド (2回目) クラウド二刀流をやってブログ書いてます • Cloudflare, Google Cloud, AWS, etc • Google Cloud Partner Top Engineer 2023, 2024, 2025 • 2022, 2023 Japan AWS Top Engineers (Database) • 2022, 2023, 2024 Japan AWS All Certifications Engineers 自己紹介 ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c
  3. • Active/Active なマルチリージョンデータベース • 最大 99.999% の可用性、マイクロ秒の読み取り、 1 桁ミリ秒の書き込みレイテンシー •

    最大 5 つのリージョンでレプリケーション • シングルリージョンに比べて、一部機能制限がある ◦ データ階層化やベクトル検索のサポートなし ◦ read-modify-write コマンドのサポートなし ◦ Redis Transaction の原子性と一貫性の保証なし ◦ etc Amazon MemoryDB Multi-Region
  4. リージョン間の整合性は Eventual consistency → Conflict-free Replicated Data Types (CRDT :

    競合のない複製データ型)を実装 2011 年に INRIA (フランス国立情報学自動制御研 究所) の論文で発表された複数のコンピュータ間で 複製されるデータ構造 結果整合性
  5. アプローチには主に 2 種類 • 操作ベース CRDT (CmRDT) : 操作の可換性を利用して、 複数のレプリカが最終的に一貫した状態に収束すること

    を保証する • 状態ベース CRDT (CvRDT) : レプリカの状態を交換・ マージすることで、最終的にすべてのレプリカが同じ状 態に収束することを保証する MemoryDB Multi-Region では 操作ベース CRDT の実装パターン
  6. MemoryDB では Last Writer Wins(LWW) Amazon MemoryDB Multi-Region の CRDT

    ap-northeast-1 ap-northeast-3 K(T0) : A ap-northeast-3 K(T0) : A K(T2) : C K(T1) : B SET K B (T1) SET K C (T2) K(T2) : C K(T2) : C SET K C (T2) T1 < T2 なので T1 の操作を破棄
  7. MemoryDB では Last Writer Wins(LWW) Amazon MemoryDB Multi-Region の CRDT

    ap-northeast-1 ap-northeast-3 K(T0) : A ap-northeast-3 K(T0) : A null K(T1) : B SET K B (T1) DEL K(T2) K(T2) : B null DEL K データが空で そのまま反映される
  8. MemoryDB では Last Writer Wins(LWW) Amazon MemoryDB Multi-Region の CRDT

    ap-northeast-1 ap-northeast-3 K(T0) : A ap-northeast-3 K(T0) : A null K(T1) : B SET K B (T1) DEL K(T2) K(T2) : B null DEL K null null DEL K 再伝播 データが空で そのまま反映される 再伝播で削除され収束
  9. データ型に応じて使用する CRDT が異なる • LWW-Register ◦ 単一の値とタイムスタンプをペアにして後が勝つ ◦ 文字列型 •

    LWW-element-Set ◦ 各要素にタイムスタンプを持ち後が勝つ ◦ ハッシュ型、セット型、ソート済みセット型 LWW の CRDT の種類 ap-northeast-3
  10. 操作は別リージョンへ複製される • 複製される操作 ◦ 文字列型:SET、DEL ◦ ハッシュ型:HSET、HDEL ◦ セット型:SADD、SREM ◦

    ソート済みセット型:ZADD、ZREM APPEND や RENAMENX は 既存データが前提であるため、 CRDT での利用は難しい(可換性がない) LWW の CRDT の種類 ap-northeast-3
  11. • MemoryDB Multi-Region は CRDT を利用 • 基本的には Last Writer

    Wins の方針 • CRDT のデータ削除で整合性を保つためには、 Tombstone という論理削除が一般的だが、 MemoryDB では 削除の再伝播という手法を使用 している まとめ