Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
120
自作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
2.3k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
26
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.4k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
150
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
150
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
1.5k
あうもんと学ぶGenAIOps
gree_tech
PRO
0
270
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
290
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
210
Other Decks in Technology
See All in Technology
プロンプトやエージェントを自動的に作る方法
shibuiwilliam
13
12k
Sansanが実践する Platform EngineeringとSREの協創
sansantech
PRO
2
930
IAMユーザーゼロの運用は果たして可能なのか
yama3133
2
490
コンテキスト情報を活用し個社最適化されたAI Agentを実現する4つのポイント
kworkdev
PRO
1
1.6k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
20251219 OpenIDファウンデーション・ジャパン紹介 / OpenID Foundation Japan Intro
oidfj
0
160
AI駆動開発の実践とその未来
eltociear
1
250
【U/day Tokyo 2025】Cygames流 最新スマートフォンゲームの技術設計 〜『Shadowverse: Worlds Beyond』におけるアーキテクチャ再設計の挑戦~
cygames
PRO
2
730
re:Invent 2025 ~何をする者であり、どこへいくのか~
tetutetu214
0
220
たまに起きる外部サービスの障害に備えたり備えなかったりする話
egmc
0
270
エンジニアリングをやめたくないので問い続ける
estie
2
1.2k
30分であなたをOmniのファンにしてみせます~分析画面のクリック操作をそのままコード化できるAI-ReadyなBIツール~
sagara
0
180
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Building Flexible Design Systems
yeseniaperezcruz
330
39k
The Invisible Side of Design
smashingmag
302
51k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
47
33k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
220
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Believing is Seeing
oripsolob
0
8
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