$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
自作LSM Treeで学ぶ、ストレージエンジンのしくみ
Search
gree_tech
PRO
October 17, 2025
Technology
0
96
自作LSM Treeで学ぶ、ストレージエンジンのしくみ
GREE Tech Conference 2025で発表された資料です。
https://techcon.gree.jp/2025/session/Short-Session-2
gree_tech
PRO
October 17, 2025
Tweet
Share
More Decks by gree_tech
See All by gree_tech
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
1.3k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
24
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.3k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
130
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
120
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
680
あうもんと学ぶGenAIOps
gree_tech
PRO
0
210
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
230
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
170
Other Decks in Technology
See All in Technology
re:Invent2025とAWS Builder Cards Resilience Expansionのご紹介
tsuwa61
1
100
原理から解き明かす AIと人間の成長 - Progate BAR
teba_eleven
2
140
Active Directory 勉強会 第 6 回目 Active Directory セキュリティについて学ぶ回
eurekaberry
14
4.5k
AI 時代のデータ戦略
na0
7
1.9k
命名から始めるSpec Driven
kuruwic
3
690
Capture Checking / Separation Checking 入門
tanishiking
0
100
履歴テーブル、今回はこう作りました 〜 Delegated Types編 〜 / How We Built Our History Table This Time — With Delegated Types
moznion
13
8.4k
不確実性に備える ABEMA の信頼性設計とオブザーバビリティ基盤
nagapad
5
9.4k
AIにおける自由の追求
shujisado
1
210
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
機械学習を「社会実装」するということ 2025年冬版 / Social Implementation of Machine Learning November 2025 Version
moepy_stats
4
1.1k
『星の世界の地図の話: Google Sky MapをAI Agentでよみがえらせる』 - Google Developers DevFest Tokyo 2025
taniiicom
0
440
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
The World Runs on Bad Software
bkeepers
PRO
72
12k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Automating Front-end Workflow
addyosmani
1371
200k
Designing for Performance
lara
610
69k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Rails Girls Zürich Keynote
gr2m
95
14k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Context Engineering - Making Every Token Count
addyosmani
9
440
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Transcript
自作 LSM Tree で学ぶストレージエン ジンのしくみ グリーエックス株式会社 エンジニア 高田倫太朗
高田 倫太朗 2025年にグリーホールディングスに新卒入社。 現在、広告事業のサーバーサイドエンジニアとして、 Golang, k8s等を用いて開発業務を行っている。 大学で、機械学習、信号処理を専攻。 受託開発企業、スタートアップ企業などでのインター ンを経て、2025年からグリーホールディングスで勤 務。
グリーエックス株式会社 エンジニア 2
目次・アジェンダ • LSM Tree の概要 • LSM Tree のコンポーネント ◦
MemTable ◦ WAL (Write-Ahead Log) ◦ SSTable (Sorted String Table) ◦ インデックス (Bloom filter) ◦ コンパクション • まとめ 3
LSM Tree の概要 4
LSM Tree (Log-Structured Merge Tree) • 概要 ◦ 書き込み処理を重視したデータ構造 ◦
大規模データベースやキーバリューストアで使われる ◦ Bigtable, RocksDB, LevelDB などで採用されている • 特徴 ◦ 書き込みは高速 ▪ シーケンシャル書き込み中心 ▪ メモリ上にデータを集約 (Memtable) して一定サイズでディスクにフラッシュ ◦ 読み込みは複雑 ▪ 複数階層のSSTableを探索する必要がある ▪ Bloomフィルタやキャッシュで高速化 5
SSTable SSTable LSM Tree フローイメージ 6 Memtable 読み取り処理 書き込み処理 WAL
SSTable Memtable SSTable Bloomフィルタ コンパクション • データの操作が発生すると Memtable (バッファ) に記載 • Memtableのサイズが閾値を超え るとSSTableにフラッシュされる • SSTableは読み込み専用で追記の み行われる • WALは障害時のリカバリー用の データ • 読み取り時は複数階層のSSTable を閲覧する必要がある
LSM Tree のコンポーネント 7
Memtable • データ操作が発生すると Memtableに記載する • メモリ上にソートされて格納 • (key, value) 形式のデータ
• 検索のために索引が利用される (B木 など) 8 Key Value Entry Type Timestamp apple 100 PUT 2025-10-02 01:35:20 banana 120 PUT 2025-10-02 01:40:24 peach null DELETE 2025-10-02 01:35:57 orange 80 PUT 2025-10-02 06:00:28 Memtable データ例
Memtable 実装例 9 Entryの構造 Memtableの構造 Memtableへの追加処理
SSTable (Sorted String Table) • 読み取り専用のディスク上のテー ブル • Memtableのサイズが大きくなる とSSTableにフラッシュされる
• SSTableはシーケンシャルに生成 • データを読み取る際は複数の SSTableを閲覧して、timestamp が新しいデータを取得する 10 Key Value Entry Type Timestamp apple 100 PUT 2025-10-02 01:35:20 banana 120 PUT 2025-10-02 01:40:24 peach null DELETE 2025-10-02 01:35:57 orange 80 PUT 2025-10-02 06:00:28 SSTable データ例 SSTable
SSTable 実装例 11 SSTableの構造 SSTableの作成タイミング SSTable生成
その他のコンポーネント • コンパクション ◦ SSTableのファイル数・サイズを減ら す処理 • Bloomフィルタ ◦ データを探す際にあるSSTableに存在
しないことを判定できる ◦ 読み取り性能の向上 • WAL (Write-Ahead Log) ◦ Memtableに書き込む前にWALにデー タを書き込む ◦ 耐障害性・順序保証 12 コンパクション イメージ SSTable1 SSTable2 SSTable1’
まとめ 13
まとめ • LSM Tree 概要 ◦ 書き込み処理を重視したデータ構造 ◦ Bigtable, RocksDB,
LevelDB などで採用されている ◦ 書き込みは高速 ▪ シーケンシャル書き込み中心 • コンポーネント ◦ Memtable: メモリ上にソートしてデータを格納。 ◦ SSTable: 読み取り専用のソート済みデータ。Memtableのサイズが大きくなると生成。 ◦ WAL: Memtableに書き込み前に書き込む。耐障害性が高まる。 ◦ コンパクション: SSTableの数が増えたときなどに数やサイズを減らす処理 ◦ Bloomフィルタ: 該当のSSTableに探しているデータがないことを保証するフィルタ 14
ご清聴ありがとうございました 15
None