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
160
【VAアカデミア用】パーソナライズされたコンテンツ配信のための低遅延分散KVSの構築
bootjp
0
43
Other Decks in Research
See All in Research
セマンティック通信勉強会 6Gに向けたデバイス間効率的な通信の技術紹介・課題・今後展望
satai
3
300
SoftMatcha 2: 1兆語規模コーパスの超高速かつ柔らかい検索
e869120_sub
7
3.7k
XDPerf: A High-Performance Traffic Generator Built with WASM and eBPF
takehaya
1
260
LLM Compute Infrastructure Overview
karakurist
2
1.6k
Apache Gravitinoで実現する Icebergカタログ統合とアクセスの一元化
matsumooon
0
470
最先端NLP勉強会2026 論文紹介:Reasoning with Sampling: Your Base Model is Smarter Than You Think (ICLR 2026 paper)
kogoro
3
420
【Zozo Research 技術共有会】三次元領域の現在と展望
mickey_0226
3
580
Ghost in the 7‑Zip: The Shadow of Residential Proxies Creeping into Your Life
nttcom
0
1.9k
Google Cloud Next 2026 DM Recap Agentic Data Cloudを添えて / Google Cloud Next 2026 DM Recap
nnaka2992
0
120
LINEヤフー データサイエンス Meetup「三井物産コモディティ予測チャレンジ」の舞台裏-AlpacaTechパート
gamella
1
640
コーディングエージェントとABNを再考
hf149
2
840
某助成金プロジェクト採択に向けて企業研究所のアウトリーチ専任者がやったこと
afroscript
0
180
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
It's Worth the Effort
3n
188
29k
Facilitating Awesome Meetings
lara
57
7.1k
HDC tutorial
michielstock
2
820
Being A Developer After 40
akosma
91
590k
Are puppies a ranking factor?
jonoalderson
2
3.8k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
Docker and Python
trallard
47
4.2k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
400
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
480
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
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にとって有利な条件になっていない か?