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
1
450
AWSの耐久性のあるRedis互換KVSのMemoryDBについての論文を読んでみた
bootjp / ぶーと
November 03, 2025
Tweet
Share
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.5k
Akamaiのキャッシュ効率を支えるAdaptSizeについての論文を読んでみた
bootjp
1
430
パーソナライズされたコンテンツ配信のための低遅延分散KVSの構築 VRChat ver / Building-a-low-latency-distributed-KVS-for-personalized-content-delivery-VRChat-ver
bootjp
1
97
Raftとは? 仕組みから考える得意なこと苦手なこと/What is Raft? Strengths and Weaknesses Based on Its Mechanism
bootjp
7
3.7k
Spannerはなぜ原子時計が必要だったのか?/あるいはSpanner Cloneはなぜ不要にできたのか? / Why did Spanner need an atomic clock? Or Why could Spanner Clone not be needed?
bootjp
1
110
【VAアカデミア用】パーソナライズされたコンテンツ配信のための低遅延分散KVSの構築
bootjp
0
27
Other Decks in Research
See All in Research
ロボット学習における大規模検索技術の展開と応用
denkiwakame
1
200
ウェブ・ソーシャルメディア論文読み会 第36回: The Stepwise Deception: Simulating the Evolution from True News to Fake News with LLM Agents (EMNLP, 2025)
hkefka385
0
150
【NICOGRAPH2025】Photographic Conviviality: ボディペイント・ワークショップによる 同時的かつ共生的な写真体験
toremolo72
0
140
第二言語習得研究における 明示的・暗示的知識の再検討:この分類は何に役に立つか,何に役に立たないか
tam07pb915
0
1k
When Learned Data Structures Meet Computer Vision
matsui_528
1
2.6k
ペットのかわいい瞬間を撮影する オートシャッターAIアプリへの スマートラベリングの適用
mssmkmr
0
210
Proposal of an Information Delivery Method for Electronic Paper Signage Using Human Mobility as the Communication Medium / ICCE-Asia 2025
yumulab
0
160
病院向け生成AIプロダクト開発の実践と課題
hagino3000
0
520
[Devfest Incheon 2025] 모두를 위한 친절한 언어모델(LLM) 학습 가이드
beomi
2
1.4k
LiDARセキュリティ最前線(2025年)
kentaroy47
0
110
[IBIS 2025] 深層基盤モデルのための強化学習驚きから理論にもとづく納得へ
akifumi_wachi
19
9.5k
超高速データサイエンス
matsui_528
2
370
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The browser strikes back
jonoalderson
0
360
Designing Experiences People Love
moore
144
24k
Producing Creativity
orderedlist
PRO
348
40k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
56
50k
Facilitating Awesome Meetings
lara
57
6.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
130
Balancing Empowerment & Direction
lara
5
880
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
88
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にとって有利な条件になっていない か?