TOP
>
サーバ構築・運用
> アプリケーション開発言語
徹底比較!! 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に示すストレージエンジンが使用できます。その中でも
MyISAM
と
InnoDB
は古くからサポートされており有名です。よって、本連載の解説は、この2つのストレージエンジンを対象とします。その他のストレージエンジンについては、また別の機会に解説できればと思います。
ストレージエンジン
概要
MyISAM
MySQL標準のストレージエンジンとして使用される
InnoDB
行ロックとトランザクションをサポートする
BDB
ページ単位のロックとトランザクションをサポートする
Memory
メモリ上にテーブルを配置する
Merge
複数のMyISAMテーブルを統合する
Archive
圧縮したデータベースを使用する
Federated
リモートのデータベースを参照する
NDB
クラスター構成にて使用される
CVS
データファイルにCSVを使用する
Blackhole
ダミーテーブルを使用する
表5:MySQLにて使用できるストレージエンジン
また、表5以外のストレージエンジンとして、ユーザが独自のエンジンを作成する場合のサンプル用としてExsamleストレージエンジンが提供されています。
前のページ
1
2
3
4
次のページ
著者プロフィール
株式会社NTTデータ 藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。
INDEX
第1回:PostgreSQLとMySQLの紹介
はじめに
サポートプラットフォーム
アプリケーション開発言語
日本語の対応