Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LSMツリー

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for 北村 北村
September 01, 2025
21

 LSMツリー

Avatar for 北村

北村

September 01, 2025
Tweet

Transcript

  1. 自己紹介 • 出身 ◦ 大阪府枚方市 ◦ 3年前から札幌住み • 業務 ◦

    SIer ◦ デバイスドライバ関係 • 趣味 ◦ テニス、フットサルやってます ◦ お笑いが好きです
  2. 話すこと • LSM-Tree について ◦ LSM-Treeとは ◦ 全体像 ◦ Get

    (Read) ◦ Put (Write) ◦ Delete ◦ Compaction • デモ(時間あれば)
  3. 全体像 • MemTable ◦ データ読み書き用のメモリバッファ ◦ データが溜まったら ファイル(SSTable)に書き込む • SSTable(Sorted

    String Table) ◦ キーでソートされたファイル ◦ MemTableの内容をキーで並び変えて、 作成されるファイル • WAL(Write Ahead Log) ◦ DBに対する変更ログ ◦ 障害復旧などで使用する サーバ ストレージ メモリ WAL SSTable MemTable SSTable
  4. Get (Read) 処理 サーバ ストレージ メモリ WAL SSTable MemTable SSTable

    クライアント get “key1” ①メモリにあれば、メ モリから返す ②メモリになければ、 ファイル(SSTable) を読んで返す
  5. Put (Write) 処理 サーバ ストレージ メモリ WAL SSTable MemTable SSTable

    クライアント put “key1” “value1” ②メモリにデータを格 納 ③メモリが一定のサイズを超えた ら、新しくSSTableを作成する(この 動作をFlushと呼ぶ) ①WALに更新情報を 書き込む
  6. Delete 処理 サーバ ストレージ メモリ WAL SSTable MemTable SSTable クライアント

    delete “key1” ②削除フラグを立てたデー タを格納(※) ③メモリが一定のサイズを超えた ら、新しくファイルを作成する (Flush) ①WALに更新情報を 書き込む ※やっている事は Put と変わらない  =データ削除のたびにファイルを書き換える必要がない ③メモリが一定のサイズを超えた ら、新しくSSTableを作成する(この 動作をFlushと呼ぶ)
  7. Compaction 処理 サーバ ストレージ メモリ WAL SSTable MemTable 複数の SSTable

    から一つの新しい SSTable を作成する(Compaction) この時に古いデータを削除する。 サーバ ストレージ メモリ WAL SSTable1 MemTable key1 : value1 SSTable2 key1 : value2 key1 : value2 ※SSTable2は、SSTable1より新しいとする Compatcion前 Compatcion後