All Articles

New & Rust and RDBMS

New

  • Web+DB PRESS 買ってみた

    • 2ヶ月に一回だし、知らない分野のこと知るのにはよさそうなので
    • Svelte シンプルだしよさそうに思った
    • あとはRDBMS自作に惹かれて
  • 耳下に粉瘤ぽいものがあったので切除した

    • 薬代含めて¥12000くらい
    • お風呂一週間入れないのがしんどい
    • 保険治療は月に1個までしか対応していないらしい
    • 背中にも一個あるのでいつか取りに行く

Web+DB の RDBMS 作成について

RDBMSの基本的な構造

  • 構文解析
  • 実行計画
  • クエリ実行

    • クエリエクスキュータ
    • 実行計画に基づいて、下記のモジュールのハンドリング
    • アクセスメソッド
    • ディスク上のデータ構造を取り扱う
    • バッファプールマネージャ
    • データをメモリにキャッシュする
    • ディスクマネージャ
    • ディスクの読み書きを行う

ディスクマネージャ

ディスクマネージャが読み書きするファイルは ヒープファイル と呼ばれる構造になっている
ヒープファイルは、ページという単位で区切られている
ページの単位は 4096バイトの 1 ~ 4 倍になっていることが多いらしい ページには番号が振られていて、ディスクマネージャは読み書きをページ番号(ページIDを採番していく)で指定して行っていく
そのため、ページの一部を読むことはできない。必ず単位分のページを読み込む。

バッファプールマネージャ

ページの内容をメモリに載せて高速化を実現している。
メモリとページのマッピングを key-value の形で保持し、要求があったときにすぐに引き出せるようにしている。
これはページテーブルと呼ばれる。

バッファの掃除には、clock sweep アルゴリズムを本書では使っている。
Postgres で利用されている。
バッファの中のデータを順に見ていって、参照カウントが少ないものを対象に(0?)メモリを開放する。