Slide 1

Slide 1 text

最近の DB の競合解決の仕組みが 分かった気になってみた     Guri / Hajime Oguri ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c Track C-6 DevelopersIO流!アマゾンの奥地で技術の限界に挑戦:LT7人衆、熱き戦い

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

登壇者は雰囲気だけで 分かった気になっただけです ボリュームが多いので超早口です

Slide 4

Slide 4 text

先日の re:Invent 2024 の データベースアップデート

Slide 5

Slide 5 text

Amazon Aurora DSQL

Slide 6

Slide 6 text

Amazon DynamoDB global tables multi-Region strong consistency

Slide 7

Slide 7 text

Amazon MemoryDB Multi-Region

Slide 8

Slide 8 text

AWS re:Invent、データベース、マルチリージョン、 この世の全てを手に入れたイベント マット・ガーマン、彼の基調講演で放った一言は 人々をクラウドへと駆り立てた。 「AWSのデータベースか…? 欲しけりゃくれてやる…」 「学べ!!! re:Inventの全てをそこに置いてきた!!!」 エンジニア達は、ラスベガスを目指し、夢を追い続ける。

Slide 9

Slide 9 text

世はまさに 大マルチリージョン時代!!!

Slide 10

Slide 10 text

Aurora DSQL

Slide 11

Slide 11 text

Dr. Werner Vogels の Keynote の後半を 見れば良いので飛ばします

Slide 12

Slide 12 text

Amazon DynamoDB global tables multi-Region strong consistency

Slide 13

Slide 13 text

global tables の multi-Region strong consistency も 基本的に Aurora DSQL と同様

Slide 14

Slide 14 text

Amazon MemoryDB Multi-Region

Slide 15

Slide 15 text

● Active/Active なマルチリージョンデータベース ● 最大 99.999% の可用性、マイクロ秒の読み取り、 1 桁ミリ秒の書き込みレイテンシー ● 最大 5 つのリージョンでレプリケーション ● シングルリージョンに比べて、一部機能制限がある ○ データ階層化やベクトル検索のサポートなし ○ read-modify-write コマンドのサポートなし ○ Redis Transaction の原子性と一貫性の保証なし ○ etc Amazon MemoryDB Multi-Region

Slide 16

Slide 16 text

リージョン間の整合性は Eventual consistency → Conflict-free Replicated Data Types (CRDT : 競合のない複製データ型)を実装 2011 年に INRIA (フランス国立情報学自動制御研 究所) の論文で発表された複数のコンピュータ間で 複製されるデータ構造 結果整合性

Slide 17

Slide 17 text

CRDT の特徴 1. アプリケーションは、他のレプリカと協調せずに、 任意のレプリカを独立かつ並行して更新できる 2. アルゴリズム(データ型の一部)が、起こりうる 不整合を自動的に解決する 3. レプリカは特定の時点で異なる状態を持つ可能性が あるが、最終的には収束することが保証される CRDT

Slide 18

Slide 18 text

アプローチには主に 2 種類 ● 操作ベース CRDT (CmRDT) : 操作の可換性を利用して、 複数のレプリカが最終的に一貫した状態に収束すること を保証する ● 状態ベース CRDT (CvRDT) : レプリカの状態を交換・ マージすることで、最終的にすべてのレプリカが同じ状 態に収束することを保証する MemoryDB Multi-Region では 操作ベース CRDT の実装パターン

Slide 19

Slide 19 text

一番シンプルなカウンター(操作が可換) CRDT の例 ap-northeast-1 ap-northeast-3 k=1 : 0 ap-northeast-3 k-1 : 0 k-1 : 1 k-1 : 1 ADD 1 (t1) ADD 1 (t2) k-1 : 2 k-1 : 2 ADD 1 (t2) ADD 1 (t2)

Slide 20

Slide 20 text

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 の操作を破棄

Slide 21

Slide 21 text

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 データが空で そのまま反映される

Slide 22

Slide 22 text

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 再伝播 データが空で そのまま反映される 再伝播で削除され収束

Slide 23

Slide 23 text

データ型に応じて使用する CRDT が異なる ● LWW-Register ○ 単一の値とタイムスタンプをペアにして後が勝つ ○ 文字列型 ● LWW-element-Set ○ 各要素にタイムスタンプを持ち後が勝つ ○ ハッシュ型、セット型、ソート済みセット型 LWW の CRDT の種類 ap-northeast-3

Slide 24

Slide 24 text

操作は別リージョンへ複製される ● 複製される操作 ○ 文字列型:SET、DEL ○ ハッシュ型:HSET、HDEL ○ セット型:SADD、SREM ○ ソート済みセット型:ZADD、ZREM APPEND や RENAMENX は 既存データが前提であるため、 CRDT での利用は難しい(可換性がない) LWW の CRDT の種類 ap-northeast-3

Slide 25

Slide 25 text

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