module
0.0.0-20220212103901-1e811f2c0ece
Repository: https://github.com/ddddddo/database.git
Documentation: pkg.go.dev
# README
database
- databaseを作ってみる
_sandbox
ディレクトリ配下は、dbにまつわる作業等をする場
概要
- DBMSアーキテクチャ
- 転送サブシステム
- [概要]クライアントのクエリを受け付けてクエリプロセッサに渡す -> 2022/02/05に実装済み
- クエリプロセッサ
- [概要]渡ってきたクエリの解析、解釈、検証、アクセス制御を実行後、クエリの効率的な方法を探し実行計画(またはクエリ計画)として出力する
- クエリパーサ
- [概要]クエリの解析、解釈、検証、アクセス制御を担当
- 解析 -> 2022/02/05に実装済み
- tokenizer?
- 解釈、検証、アクセス制御 -> 2022/02/12 一旦select文のparseまで実装
- parser?
- クエリオプティマイザ
- [概要]クエリの最適化と実行計画出力の担当
- 最適化と実行計画出力 -> 2022/02/12 一旦selectのみ終了。ストレージエンジンの実装待ち?のところ有り
- planner?
- 実行エンジン
- [概要]実行計画を処理する。リモート操作とローカル操作の実行結果を収集する。
- リモート実行
- ローカル実行
- [概要]ストレージエンジンによって実行される
- 実行
- executor?
- ストレージエンジン
- [概要]以下の、機能に特化した複数のコンポーネントで構成される
- トランザクションマネージャ
- [概要]トランザクションのスケジュールを管理。データベースが論理的に一貫性を失った状態にならないようにする。ロックマネージャと連動して同時実行制御をする
- ロックマネージャ
- [概要]トランザクションを実行するためのロック担当。並行処理によって物理的なデータの整合性が侵されることがないようにする
- アクセスメソッド(ストレージ構造)
- [概要]ディスク上のデータへのアクセスとそれらの構成を管理。ヒープファイルが含まれ、Bツリー、LSMツリーなどのストレージ構造も含まれる
- バッファマネージャ
- [概要]データベースをメモリにキャッシュする
- リカバリマネージャ
- [概要]操作ログを管理。障害発生後にシステムの状態を復旧する
- 転送サブシステム
(詳説データベースP9あたりと「DBMSをGoで実装してみた」の記事と内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (2018)のメモを参考)
Refs
-
詳説データベース
-
- 実装
- 網羅的
- 参考にしているCMUの動画
-
Writing a SQL database from scratch in Go: 1. SELECT, INSERT, CREATE and a REPL
- 実装
- フロントよりの実装を紹介しているよう。
- クエリをパースしたり、自前のsqldriverでpostgresqlに接続しているよう。
動作確認
- run database
make run
- send query to database
make send
Memo
- 抽象構文木
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
クライアントからクエリを受け付ける TODO: ここからやる.