このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

データベースエンジン

  • データベースエンジンでは、データがディスク上でランダムに配置されることがないようにしている。
    • これらの処理はOSのファイル管理機能を介して行うのが一般的なので、完全なコントロールは難しいが、UNIXやLinuxのRAWデバイス(RAWボリューム)を用いればこの制御は可能となる。

データベースエンジンの構成要素

  1. SQLを解釈実行するパーツ
    • SQL構文解析
      • 文字列として入力されたSQLを、後で解釈実行できるように、内部形式に変換する。
      • 一種のコンパイラとも考えられる。
    • プランナオプティマイザ
      • 構文解析がなされたSQLを基に、その実行プランを作成する部分である。
      • 実行プランの作り方によって、実際の処理時間が数千倍も違ってくることがあるので、この部分は非常に重要である。
    • 実行エンジン
      • プランナが作り出した手順に従い、実際に処理を行う部分である。
      • リレーショナルデータベースの場合は、この部分は主に関係演算を実行する。
  2. DBの構造を司るパーツ
    • カタログ管理
      • DB内にどのようなテーブルやビューがあるか、それらはどのようなカラムから構成されているか、その属性は何か、制約条件(NOT NULL、UNIQUE、参照整合性など)はないか、インデックスのあるカラムはどれか、ユーザーとそのアクセス権限はどれかなど、DBの論理構造を管理する。
      • OSファイルシステムで言えば、レジストリやディレクトリに相当する。
    • インデックス管理
      • インデックスを使ってタプルを見つけたり、タプルが変更されたときにインデックスを変更したりする。
    • バッファ管理
      • 並列的に実行されるデータのアクセス処理が、この部分を共有することで、実際のファイル入出力の回数を減らすことができる。
      • データを読み書きする順番を工夫することでディスクの特性を活かす。
    • ストレージ管理
      • DBを構成するファイルの構造を管理する。
      • ファイルとの入出力の単位となるブロックサイズを決めたり、どのファイルにどのテーブルやインデックス、カタログを格納するかを決めたりする。
      • 実際にファイル入出力のシステムコールを呼び出す。
  3. 複数のアプリケーションからの要求や可用性を司るパーツ
    • トランザクション管理
      • アプリケーションにとって意味のある処理単位で、DBを更新する。
      • 途中でアプリケーションが異常終了した場合は、それ以前の意味のある状態までDBの状態を戻す。
    • 即時実行制御
      • ロックやMVCC(マルチバージョン同時実行制御)などの手法を使って、排他制御を行う。
      • パーソナルユースのDBの場合、この機能がないこともある。
    • ログリカバリ
      • 途中でDBに異常が起こった場合にデータを復元するための情報となるバックアップログを記録する。

参考文献

  • 『RDBMS解剖学』