 |

|
徹底比較!! 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解剖学」(翔泳社)を共著。
|
|
|
|