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
自作LSM Treeで学ぶ、ストレージエンジンのしくみ
Search
gree_tech
PRO
October 17, 2025
Technology
610
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
自作LSM Treeで学ぶ、ストレージエンジンのしくみ
GREE Tech Conference 2025で発表された資料です。
https://techcon.gree.jp/2025/session/Short-Session-2
gree_tech
PRO
October 17, 2025
More Decks by gree_tech
See All by gree_tech
我々はどう生きるか
gree_tech
PRO
1
770
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
5.2k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
84
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.8k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
500
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
490
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
2.5k
あうもんと学ぶGenAIOps
gree_tech
PRO
0
610
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
640
Other Decks in Technology
See All in Technology
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
270
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
120
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
260
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.6k
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
300
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
140
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
170
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
830
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
1
660
モダンフロントエンド 開発研修
recruitengineers
PRO
4
710
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
620
Featured
See All Featured
Paper Plane
katiecoart
PRO
2
53k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
490
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Mobile First: as difficult as doing things right
swwweet
225
10k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
650
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
570
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
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