名称 |
概要 |
対応するパーツ |
計算機言語 |
SQL構文の解析を行う。計算機言語の基礎知識、コンパイラコンパイラの利用方法など |
SQL構文解析 |
関係代数 |
構文解析したSQLを、実際の実行手順に直す。リレーショナルデータベースは関係代数を基本としているが、SQLの文法は関係代数とは違う部分があるので翻訳が必要。どのような演算方式を使うのがもっとも効果的かをどうやって決めるかが重要かつ職人芸 |
SQLプランナ |
関係演算 |
実際に関係演算を実行する部分。選択、射影、ジョインなどの基本部分を実装する。この中では、次のソートと同様に、ジョイン演算の実装が重要 |
SQL実行エンジン |
ソートアルゴリズム |
データベースの内部では、データを順に並べることが重要。データの件数が百万件単位以上なので、効率のよいソート方式が必須。メモリ上の操作だけでは容量が足りないので、ディスクも使った方法が必要 |
SQL実行エンジン |
トランザクション管理 |
同時に複数の処理を実行してもデータベースに矛盾が生じないように全体の実行を管理する |
トランザクション管理 同時実行制御 |
ロック制御と 同時実行制御 |
トランザクション管理を実現するために、データの読み書きの順序を管理する。 データのバージョン管理などを行うこともある |
トランザクション管理 同時実行制御 |
インデックス方式 |
数GB以上にもおよぶ大きなデータベースから高速にデータを見つけるための見出し。Bツリー、ハッシュ、ビットマップや、Rインデックスが代表的 |
インデックス管理、SQL実行エンジン |
バッファ管理 |
データベースはメモリに入りきれないので、ディスクのデータを共通のメモリに一部蓄積しておく。ディスク上のデータ構造とメモリ上のデータ構造など。データの読み書きを最小限度に抑えるための技法が重要 |
ストレージ管理 バッファ管理 |
ログのポリシーと リカバリ |
データベースが途中でクラッシュしても、データが壊れないように、途中の記録をとっておいて後でこれを使ってデータを復旧する |
SQL実行エンジン、トランザクション管理、リカバリ |
ディスク入出力制御 |
バッファの読み書きやログの読み書きを効率よく行うようにするには、ディスクの特性やOSの特性をよく把握しておかなければならない |
ストレージ管理 ログリカバリ バッファ管理
|