Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LSMツリー
Search
北村
September 01, 2025
0
18
LSMツリー
北村
September 01, 2025
Tweet
Share
More Decks by 北村
See All by 北村
Azure Container Appsを使ってみた
shu_kita
0
53
ギャルのパンティおくれ
shu_kita
1
52
掲示板への不適切な投稿を防ぐ
shu_kita
0
59
正規表現エンジンを自作した話
shu_kita
0
15
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Designing for humans not robots
tammielis
254
26k
Building Applications with DynamoDB
mza
96
6.8k
Heart Work Chapter 1 - Part 1
lfama
PRO
3
35k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
RailsConf 2023
tenderlove
30
1.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
89
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Rails Girls Zürich Keynote
gr2m
95
14k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
190
Transcript
LSM-Tree shu-kita
自己紹介 • 出身 ◦ 大阪府枚方市 ◦ 3年前から札幌住み • 業務 ◦
SIer ◦ デバイスドライバ関係 • 趣味 ◦ テニス、フットサルやってます ◦ お笑いが好きです
話すこと • LSM-Tree について ◦ LSM-Treeとは ◦ 全体像 ◦ Get
(Read) ◦ Put (Write) ◦ Delete ◦ Compaction • デモ(時間あれば)
LSM-Treeとは データベースで使用されるストレージエンジンの一種 特徴 • NoSQLデータベースで使用されることが多い ◦ Cassandra, HBase など •
書き込みの負荷が高いワークロードに適している
全体像 • MemTable ◦ データ読み書き用のメモリバッファ ◦ データが溜まったら ファイル(SSTable)に書き込む • SSTable(Sorted
String Table) ◦ キーでソートされたファイル ◦ MemTableの内容をキーで並び変えて、 作成されるファイル • WAL(Write Ahead Log) ◦ DBに対する変更ログ ◦ 障害復旧などで使用する サーバ ストレージ メモリ WAL SSTable MemTable SSTable
Get (Read) 処理 サーバ ストレージ メモリ WAL SSTable MemTable SSTable
クライアント get “key1” ①メモリにあれば、メ モリから返す ②メモリになければ、 ファイル(SSTable) を読んで返す
Put (Write) 処理 サーバ ストレージ メモリ WAL SSTable MemTable SSTable
クライアント put “key1” “value1” ②メモリにデータを格 納 ③メモリが一定のサイズを超えた ら、新しくSSTableを作成する(この 動作をFlushと呼ぶ) ①WALに更新情報を 書き込む
Delete 処理 サーバ ストレージ メモリ WAL SSTable MemTable SSTable クライアント
delete “key1” ②削除フラグを立てたデー タを格納(※) ③メモリが一定のサイズを超えた ら、新しくファイルを作成する (Flush) ①WALに更新情報を 書き込む ※やっている事は Put と変わらない =データ削除のたびにファイルを書き換える必要がない ③メモリが一定のサイズを超えた ら、新しくSSTableを作成する(この 動作をFlushと呼ぶ)
Compaction 処理 サーバ ストレージ メモリ WAL SSTable MemTable 複数の SSTable
から一つの新しい SSTable を作成する(Compaction) この時に古いデータを削除する。 サーバ ストレージ メモリ WAL SSTable1 MemTable key1 : value1 SSTable2 key1 : value2 key1 : value2 ※SSTable2は、SSTable1より新しいとする Compatcion前 Compatcion後