Categorygithub.com/ddddddO/database
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ツリーなどのストレージ構造も含まれる
      • バッファマネージャ
        • [概要]データベースをメモリにキャッシュする
      • リカバリマネージャ
        • [概要]操作ログを管理。障害発生後にシステムの状態を復旧する

image

(詳説データベースP9あたりと「DBMSをGoで実装してみた」の記事と内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (2018)のメモを参考)

Refs

動作確認

  • 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: ここからやる.