k-kamijo

k-kamijo

Python製RDBMSで理解する、データベースのピース 〜コードのステップ実行とヘックスビューアーで内部動作を追ってみよう〜

ダリア1#pyconjp_2初級日本語
13:20 - 13:5030min
DAY 2
09/27
SAT

最近では、生成AIにコードを書かせることが主流になりつつあります。しかし、だからこそ、「なぜこのコードで動くのか」を理解することが大切だと考えます。 そんな中、データベースは日々使うツールなのに、中で何が起きているかまで理解している方は少ないのではないでしょうか。 そこで、今回は、Pythonを用いて自作したRDBMS:KeiPyDBを使って、データベースの中でも特にRDBMSに焦点を当てて、内部の仕組みを一緒に見てみたいと思います。

発表の構成:

  • イントロダクション(3分):自己紹介、なぜ作ったか、全体アーキテクチャ
  • SQLパーサーと実行エンジン(15分): SELECT文を用いて、SQL文がLexer(字句解析)でトークンに分解され、Parser(構文解析)でAST(抽象構文木)が構築され、Planner(実行計画)を経て、Executor(実行エンジン)で実行されることをPythonコードとデバッガー画面で確認
  • ディスクI/O(8分):データの永続化とヘックスビューアーでの可視化 データの永続化の仕組みを実際のデータファイルをヘックスビューワーで開いて、INSERTしたデータの保存・削除の様子の確認
  • エンディアン(2分):エンディアンとは?どう使われているか
  • まとめ

コードを1ステップずつ確認し、デバッガーのスクリーンショットとヘックスビューアーでの確認を組み合わせ、「なるほど、こうなってたのか!」と感じてもらえるような発表を予定しています。

RDBMSを実装してみて、この巨大で複雑そうなシステムも、一つ一つのピースに分解すれば意外とシンプルなものの組み合わせであるということが理解できました。 この発表が、RDBMSの内部実装を理解する一助になれば幸いです


この題材を選んだ理由やきっかけ

PythonでRDBMSを実装したので、そこで得た気づきを共有したい


オーディエンスが持って帰れる具体的な知識やノウハウ

「データベースってこう動いてたのか!」という発見を通じて、日々使うツールへの理解が深まります


オーディエンスに求める前提知識

  • Pythonの基本構文(if、while、class等)が読める
  • テーブル、カラム、コミットなどの基本的なデータベース用語が
  • 以下の4つのSQL文の意味がわかる
    1. CREATE TABLE users (id int, name varchar(10));
    2. INSERT INTO users (id, name) VALUES (1, 'Alice') ;
    3. SELECT id , name FROM users WHERE name = 'Alice' ;
    4. DELETE FROM users WHERE id = 1;
k-kamijo

k-kamijo

プロフィール

塾選を運営する株式会社DeltaX(デルタエックス)のエンジニアです。 主に、バックエンド、CI/CDなどを担当しています。

Githubレポジトリ:https://github.com/kei-kmj