Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWSの耐久性のあるRedis互換KVSのMemoryDBについての論文を読んでみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
bootjp / ぶーと
November 03, 2025
Research
970
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWSの耐久性のあるRedis互換KVSのMemoryDBについての論文を読んでみた
bootjp / ぶーと
November 03, 2025
More Decks by bootjp / ぶーと
See All by bootjp / ぶーと
Aurora Serverless からAurora Serverless v2への課題と知見を論文から読み解く/Understanding the challenges and insights of moving from Aurora Serverless to Aurora Serverless v2 from a paper
bootjp
6
1.9k
Akamaiのキャッシュ効率を支えるAdaptSizeについての論文を読んでみた
bootjp
1
800
パーソナライズされたコンテンツ配信のための低遅延分散KVSの構築 VRChat ver / Building-a-low-latency-distributed-KVS-for-personalized-content-delivery-VRChat-ver
bootjp
1
140
Raftとは? 仕組みから考える得意なこと苦手なこと/What is Raft? Strengths and Weaknesses Based on Its Mechanism
bootjp
7
3.9k
Spannerはなぜ原子時計が必要だったのか?/あるいはSpanner Cloneはなぜ不要にできたのか? / Why did Spanner need an atomic clock? Or Why could Spanner Clone not be needed?
bootjp
1
170
【VAアカデミア用】パーソナライズされたコンテンツ配信のための低遅延分散KVSの構築
bootjp
0
43
Other Decks in Research
See All in Research
Cross-Media Information Spaces and Architectures
signer
PRO
0
360
医療LLMの現在地〜最新研究から社会実装までを考える〜
kento1109
1
1.7k
2026年 オープンキャンパス 研究室紹介
junkurihara
0
170
XDPerf: A High-Performance Traffic Generator Built with WASM and eBPF
takehaya
1
290
AIエージェント時代のLLM-jpモデルのあるべき姿
k141303
0
620
[CV勉強会@関東 CVPR2026] PSDesigner: Automated Graphic Design with a Human-Like Creative Workflow / kantocv 67th CVPR 2026
shunk031
0
290
Apache Gravitinoで実現する Icebergカタログ統合とアクセスの一元化
matsumooon
0
490
Fukui Shibiten 39 - AI Art
butchi
0
190
セマンティック通信勉強会 6Gに向けたデバイス間効率的な通信の技術紹介・課題・今後展望
satai
3
320
量子サマースクール2026「量子計算機アーキテクチャ分野の概観」
youten622
1
860
Visual SLAM未来予測 / Future Prediction in Visual SLAM
koide3
1
990
EIRによる不正端末のブロッキング 5G時代におけるデバイス識別と不正対策の進化
stellarcraft
0
130
Featured
See All Featured
Scaling GitHub
holman
464
140k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
WCS-LA-2024
lcolladotor
0
820
Making Projects Easy
brettharned
120
6.7k
Building Applications with DynamoDB
mza
96
7.2k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
240
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
Transcript
AWSのRedis互換KVS MemoryDBの論文を読んでみた 第17回 分散システム集会 on VRChat @bootjp / ぶーと
本日の発表の流れ • 自己紹介 • MemoryDBとは • なぜAWSはMemoryDBを作ったのか ◦ Redisが抱える課題と限定された用途 •
MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いたリーダー選出 ◦ オフボックス・スナップショットシステム • 評価手法 • まとめと議論
自己紹介 HN: ぶーと 分散システム集会の主催の一人。 RaftやKVS、TiKVが好きです。 仕事では、マイクロサービス/マルチプロダク トに向けた分散基盤の設計や実装をしていま す。 前の仕事ではRaftベースの分散ストレージを 作っていました。
@bootjp
本日の発表の流れ • 自己紹介 • MemoryDBとは • なぜAWSはMemoryDBを作ったのか ◦ Redisが抱える課題と限定された用途 •
MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いた一貫性の維持 ◦ オフボックス・スナップショットシステム • 評価手法 • まとめと議論
MemoryDBとは • Amazon Web Serviceが作成したRedis互換のインメモリデータベース(KVS) • 低レイテンシーかつ高可用性を実現しつつ耐久性と強い一貫性を実現 ◦ 今までのRedisではデータの耐久性(永続化)に問題がありそれを改善した(後述) ◦
•
本日の発表の流れ • 自己紹介 • MemoryDBとは • なぜAWSはMemoryDBを作ったのか ◦ Redisが抱える課題と限定された用途 •
MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いたリーダー選出 ◦ オフボックス・スナップショットシステム • 評価手法 • まとめと議論
なぜAWSはMemoryDBを作ったのか • Redisではデータの耐久性に問題があった ◦ Redisはプライマリからのレプリケーション時に分散合意を用いない ◦ フェイルオーバー時にプライマリーに選出されるノードがすべてのデータがある保証がない ◦ Redis利用時は耐久性のあるデータベースと組み合わせる必要がある ▪
一時データなどのキャッシュに限定される • キャッシュでもかなり実装が複雑 ◦ アプリケーションがDBからの読み取り後セット ◦ DynamoDB Streamのようなパイプラインの構築
本日の発表の流れ • 自己紹介 • MemoryDBとは • なぜAWSはMemoryDBを作ったのか ◦ Redisが抱える課題と限定された用途 •
MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いたリーダー選出 ◦ オフボックス・スナップショットシステム • 評価手法 • まとめと議論
MemoryDBの仕組み • MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いた一貫性の維持 ◦
オフボックス・スナップショットシステム
本日の発表の流れ • 自己紹介 • MemoryDBとは • なぜAWSはMemoryDBを作ったのか ◦ Redisが抱える課題と限定された用途 •
MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いたリーダー選出 ◦ オフボックス・スナップショットシステム • 評価手法 • まとめと議論
MemoryDBの仕組み > Auroraのようなスタックの分割1 • インメモリ実行エンジンと耐久性レイヤーの分離している ◦ 耐久性レイヤー: マルチAZトランザクションログサービス • MemoryDBではAuroraのようにトランザクションログを管理するコンポーネントなどを
スタックごとに複数のレイヤーに分割している • RedisのOSS版のソースコードをインメモリ実行とストレージエンジンとしてのみ使って いる
MemoryDBの仕組み > Auroraのようなスタックの分割2 • RedisのレプリケーションストリームをマルチAZのトランザクションログストレージにリダ イレクトすることで耐久性を確保している ◦ 書き込みには複数AZに書き込みが行われるまでブロックされる ▪ トランザクションログストレージに書き込みができなかった場合はエラーが返される
• ネットワーク分断など • 変更を伴う命令はトラッカーにkeyが保存されたうえで、トランザクションログストレージ にコミットされるまでブロックされる • 変更中であっても非変化系の操作はブロックされない ◦ しかし、非変化系の操作であってもトラッキングされている(変更中の)keyを含む場合はトランザクション ログストレージがあるまでブロックされる
MemoryDBの仕組み > Auroraのようなスタックの分割3 • RedisのレプリケーションストリームをマルチAZのトランザクションログストレージにリダ イレクトすることで耐久性を確保している ◦ 書き込みには複数AZに書き込みが行われるまでブロックされる ▪ トランザクションログストレージに書き込みができなかった場合はエラーが返される
• ネットワーク分断など • 変更を伴う命令はトラッカーにkeyが保存されたうえで、トランザクションログストレージ にコミットされるまでブロックされる • 変更中であっても非変化系の操作はブロックされない ◦ しかし、非変化系の操作であってもトラッキングされている(変更中の)keyを含む場合はトランザクション ログストレージがあるまでブロックされる
本日の発表の流れ • 自己紹介 • MemoryDBとは • なぜAWSはMemoryDBを作ったのか ◦ Redisが抱える課題と限定された用途 •
MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いたリーダー選出 ◦ オフボックス・スナップショットシステム • 評価手法 • まとめと議論
MemoryDBの仕組み > Redisの非決定論的な操作に対するアプローチ • Redisはランダムな要素を削除するコマンドがある ◦ SPOP: 集合の要素からランダムに削除する • RedisにはLua
Scriptの実行機能がある ◦ Lua Scriptは実行後に操作が確定 • 非決定論的な操作をトランザクションのログに保存するには決定論的な操作として扱 う必要がある • MemoryDBではWAL (Write-Ahead Log)ではなくWBL(Write-Behind Log)を採用し た • これによりRedisのエンジンに操作を適用した結果を決定論的なトランザクションログと して出力することが可能になった
本日の発表の流れ • 自己紹介 • MemoryDBとは • なぜAWSはMemoryDBを作ったのか ◦ Redisが抱える課題と限定された用途 •
MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いたリーダー選出 ◦ オフボックス・スナップショットシステム • 評価手法 • まとめと議論
MemoryDBの仕組み > トランザクションストレージを用いたリーダー選出1 • トランザクションログシステム上に構成されたリーダー選出とリースシステムによる故 障時の強い一貫性の保証 • リーダーの獲得にはトランザクションログストレージに特定のログエントリを書き込む必 要がある •
リーダーの獲得のエントリに書き込みを行うには、トランザクションログストレージにあ るデータをすべて持っている必要がある ◦ この制約を課すことで十分なデータを持たないノードがリーダーに昇格することを防いでいる ◦ 仮にネットワーク分断から復帰したノードがリーダーになろうとしても失敗する
MemoryDBの仕組み > トランザクションストレージを用いたリーダー選出2 • リーダーを持つプライマリーノードはトランザクションログストレージにリースに関する書 き込みを行う • リースに関する書き込みを観測したレプリカノードはその時間を超えるバックオフ時間 を持ち、その間はリーダー選出を行わない •
バックオフ期間を超えてもリースに関する書き込みが観測されなければ、リーダー選 出を開始する
本日の発表の流れ • 自己紹介 • MemoryDBとは • なぜAWSはMemoryDBを作ったのか ◦ Redisが抱える課題と限定された用途 •
MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いたリーダー選出 ◦ オフボックス・スナップショットシステム • 評価手法 • まとめと議論
MemoryDBの仕組み > オフボックス・スナップショットシステム • RedisはforkによるCoWを用いつつ、別のプロセスでスナップショットを作成する • しかし、これは顧客にとって次のデメリットがある ◦ fork時にはメモリ使用量が増大し、通常の2倍のメモリ容量が必要になる ◦
スナップショット作成中はIO性能が低下するため、レイテンシーが悪化する ◦ IO以外にもスナップショット作成にはCPUリソースを使用する • MemoryDBでは顧客に見えない一時的なクラスタを追加しスナップショットを作成する ことで解決 ◦ スナップショットはS3に保存される • ノードの追加時にはS3のスナップショットとトランザクションログストレージにあるスナッ プショットからの差分を用いることで高速にノード追加される
MemoryDBの仕組み > オフボックス・スナップショットシステム • RedisはforkによるCoWを用いつつ、別のプロセスでスナップショットを作成する • しかし、これは顧客にとって次のデメリットがある ◦ fork時にはメモリ使用量が増大し、通常の2倍のメモリ容量が必要になる ◦
スナップショット作成中はIO性能が低下するため、レイテンシーが悪化する ◦ IO以外にもスナップショット作成にはCPUリソースを使用する • MemoryDBでは顧客に見えない一時的なクラスタを追加しスナップショットを作成する ことで解決 ◦ スナップショットはS3に保存される • ノードの追加時にはS3のスナップショットとトランザクションログストレージにあるスナッ プショットからの差分を用いることで高速にノード追加される
本日の発表の流れ • 自己紹介 • MemoryDBとは • なぜAWSはMemoryDBを作ったのか ◦ Redisが抱える課題と限定された用途 •
MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いたリーダー選出 ◦ オフボックス・スナップショットシステム • 評価手法 • まとめと議論
評価手法 > 正確性と一貫性の検証 • 形式手法(TLA+、P言語)によるモデル検証 • 線形化チェッカー(porcupine)を用いた並行操作の正当性検証
評価手法 > パフォーマンス • redis-benchmarkを使用 ◦ 各redis‑benchmarkプロセスはシンプルなGET/SET操作においてパイプライニングを使用せず、各クライ アント接続が直列にコマンド を発行する設定とした •
読み取り専用・混合ワークロードで中央値がサブミリ秒、テールがシングルミリ秒台を 実現 • 書き込み専用では耐久性確保のため若干のレイテンシ増加があるが、高耐久性・高 可用性を確認 • スナップショット取得が性能に影響を与えないことを確認
本日の発表の流れ • 自己紹介 • MemoryDBとは • なぜAWSはMemoryDBを作ったのか ◦ Redisが抱える課題と限定された用途 •
MemoryDBの仕組み ◦ Auroraのようなスタックの分割 ◦ Redisの非決定論的な操作に対するアプローチ ◦ トランザクションストレージを用いたリーダー選出 ◦ オフボックス・スナップショットシステム • 評価手法 • まとめと議論
まとめ • AWSは耐久性のあるRedis互換データベースが必要でMemoryDBを設計した • Redis OSS版をインメモリ実行とストレージエンジンとして使っている ◦ MemoryDBはRedisのエンジンを通した後のWBLをトランザクションログストレージに書く ◦ 書き込み完了までクライアントにレスポンスは返されない
◦ MemoryDBでは変更中のキーはトラッカーに保持される ◦ 読み込みはブロックされない ▪ しかし、変更中のキーの読み取りはトランザクションログストレージの応答を待つ • スナップショットの作成はレイテンシーへの影響があるため、顧客から隠ぺいされた環 境で作成 • リーダー選出にすべてのログがあることとトランザクションログストレージを用いて一貫 性を維持している
議論 • 評価手法のパイプライニングなしはMemoryDBにとって有利な条件になっていない か?