ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

Hello World程度のデータベース(その28:DBと外部システムとの接続)


 情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。

 いままで、三層スキーマ構造に基づき、データベースの設計(概念スキーマ)設計したテーブルの物理構造(内部スキーマ)、それを捜査するSQL(外部スキーマ)とやってきました。
 今回は、そのDBをプログラム等から操作をするのは、どういう仕組みで行うかという話、つまり「DBと外部システムとの接続」になります。




■なぜ、データベースはプログラムからも、対話型のプログラムからも入力できるのか?

 データベースはJDBCからでも、対話型のプログラム(mySQLの場合、mysqlコマンド、おらくるの場合、sql*plus,isql*plus)からでも、操作できます。

 なぜか?というと、これは、常時立ち上がっているデータベースのプログラム(デーモン)があるからです。

 mySQLの場合、mysqld,postgreSQLの場合は、pqctlから呼び出されるpostmasterが、データベースのデーモンです。
 これが、ずーっと立ち上がっています。

 そして、インターネットを使って、そのデーモンが指定するポート番号に、接続して、それぞれのDBできまっている通信内容を送って、操作します。

 つまり、JDBCや対話型のプログラムは、データベースのデーモンのポート番号に接続して、操作命令を出し、その結果を受け取っているということになります。
 デーモン(mysqld等)は、受け取った命令(SQLなどで指定されたもの)を元にデータベース処理して結果を返します。

 つまり、表題の答えは、「デーモンとソケット間通信をしているから」です。




■操作する仕組みのまとめ

まとめると、こんなかんじ
  JDBC   対話型コマンド(mysql等)
   |      |
   |      |*ソケット間通信
   |      |
  *----------------------------------*
  |  データベースデーモン (mysqld等)|
  *----------------------------------*
       |
  *----------------------------------*
  |  データベースエンジン      |
  *----------------------------------*
       |
     各種テーブル



 ここで使われている、インターネットにおけるソケット間通信は、WWWでも、サーブレットでも、FTPでも、メールでも使われている普通の通信技術です。
 ちなみに、このポート番号は、mySQLだと、configuration Wizardで設定できて、my.iniのportにかかれています。デフォルトは3306です。




 つぎは、JDBCです。