TOPサーバ構築・運用> アプリケーション開発言語
徹底比較!! PostgreSQL vs MySQL
徹底比較!! PostgreSQL vs MySQL

第1回:PostgreSQLとMySQLの紹介
著者:NTTデータ   藤塚 勤也   2006/3/30
前のページ  1  2  3  4  次のページ
アプリケーション開発言語

   PostgtreSQLとMySQLのアプリケーションを開発するためのプログラミング言語としては、C言語やJavaだけでなくPHP、Perl、Python、Tclなど様々なものを使用できます。各プログラミング言語を使用するためには、それぞれに対応したインターフェースが必要になります。

   また、RDBMSが提供するインターフェースには、そのRDBMS独自のものとデファクトスタンダードのものがあります。デファクトスタンダードのものとしては、JDBCとODBCが有名で、PostgreSQL/MySQLともに2つのインターフェースを提供しています。JDBCはJavaへのインターフェースであり、ODBCはWindows上でのC言語へのインターフェースです。なおODBCは、Windows特有のVisualBasicから使用することも多いです。


アーキテクチャ

   PostgreSQL/MySQLともに、クライアント/サーバ形式のアーキテクチャにてRDBMSの機能を実現しています。データベースを使用するアプリケーションはクライアント側で動作し、サーバ側にて動作するデータベースエンジンへ接続し、SQL文を使用して問い合わせを行います。

   問い合わせを受け取ったデータベースエンジンは、サーバ側のディスク上に構築しているユーザデータのデータベースに対して処理を行い、結果をクライアントに返却します。このように、RDBMSを構成するデータベースエンジンの機能はサーバ側に集約されています。

   全体のアーキテクチャとしては、2つともほぼ同様です。しかし、サーバ側に位置するデータベースエンジン部分の構造はまったく異なります。PostgreSQLはマルチプロセス構成、MySQLはマルチスレッド構成にて動作します。

   PostgreSQLは、postmasterと呼ぶプロセスでクライアントからの接続要求を待ち受けます。クライアントから接続要求を受け付けると、postgresプロセスとよばれる子プロセスを生成し、クライアントとの接続を確立します。

   一方のMySQLは、mysqldと呼ぶプロセスの中にいくつかのスレッドを起動します。その中の1つのスレッドにてクライアントからの接続要求を待ち受けます。クライアントからの接続要求を受け付けると、クライアント接続スレッドが起動し、クライアントとの接続を確立します。

   このように、PostgreSQLでは「1クライアント ⇔ 1プロセス」によるマルチプロセス構成にて実現している部分を、MySQLでは「1クライアント ⇔ 1スレッド」によるマルチスレッド構成にて実現しています。この実現方法の違いは、PostgreSQLとMySQLのアーキテクチャ上の一番特徴的な違いです。


ストレージエンジン

   MySQLの最大の特徴は、テーブルごとにストレージエンジンを選択できることです。

   データベースエンジンには、アプリケーションから受け取ったSQL文をどのように処理するかを考える部分と、ユーザデータをディスク上に書き出したり読み込みしたりする部分があります。

   後者のユーザデータをディスクへ書き出したり読み込んだりする部分をストレージエンジンといいます。商用RDBMSも含め、ストレージエンジンを選択できる機能を持ったRDBMSは非常に珍しいと思います。

   MySQLのストレージエンジンには、多くの選択肢が存在します。MySQLは、バージョンアップを重ねるたびにこの選択肢を追加していき、現在では表5に示すストレージエンジンが使用できます。その中でもMyISAMInnoDBは古くからサポートされており有名です。よって、本連載の解説は、この2つのストレージエンジンを対象とします。その他のストレージエンジンについては、また別の機会に解説できればと思います。

ストレージエンジン 概要
MyISAM MySQL標準のストレージエンジンとして使用される
InnoDB 行ロックとトランザクションをサポートする
BDB ページ単位のロックとトランザクションをサポートする
Memory メモリ上にテーブルを配置する
Merge 複数のMyISAMテーブルを統合する
Archive 圧縮したデータベースを使用する
Federated リモートのデータベースを参照する
NDB クラスター構成にて使用される
CVS データファイルにCSVを使用する
Blackhole ダミーテーブルを使用する

表5:MySQLにて使用できるストレージエンジン

   また、表5以外のストレージエンジンとして、ユーザが独自のエンジンを作成する場合のサンプル用としてExsamleストレージエンジンが提供されています。

前のページ  1  2  3  4  次のページ


NTTデータ  藤塚 勤也
著者プロフィール
株式会社NTTデータ   藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。

INDEX
第1回:PostgreSQLとMySQLの紹介
  はじめに
  サポートプラットフォーム
アプリケーション開発言語
  日本語の対応