Webアプリケーションをはじめ,多くのシステムでデータベースが利用されています。よく知られた製品には,米Microsoftの「SQL Server」,米Oracleの「Oracle Database」,米IBMの「DB2」などがありますが,いずれも一部を除いて有償です*1。もっと手軽に使いたいときには,オープンソースのデータベース・ソフトウエアがお薦めです。

 この連載ではこれまで,C/C++言語のコンパイルより詳しいgccの使い方Ruby/TKを用いたGUIプログラミング入門Webアプリの導入などを紹介してきました。今回からはいよいよ,オープンソースのデータベースについて説明します。

 オープンソースのデータベースとしてもっとも広く知られているのは,MySQL*2とPostgreSQL*3です。いずれも多くのOS上で動作し,手軽に,かつ本格的にデータベース機能を利用できます。また,各種プログラミング言語との連携も充実しています。

 フリーで利用できるソフトウエアと聞くと,「機能が不足しているのでは?」「業務で使うには安定性に問題があるのでは?」「パフォーマンスが劣っているのでは?」などと考えてしまうかもしれません。けれども,大規模なWebサイトからミッション・クリティカルな分野まで,オープンソースのデータベースは幅広く使われています*4。「タダだから使えない」なんてことは全然ありません。逆に,商用データベース・ソフトウエアを動かすことができないような低スペックのマシンでも,実用的な速度で数千万件のレコードを扱うこともできるのです。

オープンソースDBの双璧 MySQLとPostgreSQL

 MySQLは,スウェーデンのMySQL ABで開発され,現在は米Sun Microsystems*5から提供されているデータベース・ソフトウエアです。MySQLのバージョン1.0が登場したのは1995年で,すでに15年近く経過しています。Windows,Linuxをはじめ多くのOS上で利用でき,軽快で高速な動作に定評があります。かつては,トランザクションが実装されていないなど,商用データベース製品と比較して機能的に見劣りする点もあったのですが,現在では機能も充実し,大規模な企業情報システムでも採用されています。特に,Webアプリケーション分野では標準といってもよいくらいに普及しています。MySQLについては,Part2で詳しく紹介します。

 PostgreSQLは,PostgreSQL Global Development Groupという組織によって開発されているデータベース・ソフトウエアです。WindowsとLinuxの両方で利用できます。PostgreSQLの特徴は,商用データベース製品に見劣りしない充実した機能を備えていることです。かつてのPostgreSQLは,動作速度についてはMySQLにかないませんでした。ただし,現在までの開発により,MySQLは機能を拡張し,PostgreSQLはパフォーマンスを改善してきており,従来ほど両者の違いは鮮明ではなくなってきています。世界的にはMySQLの方が大きなシェアを持っているものの,日本国内ではPostgreSQLも広く使われています。PostgreSQLについては,Part3で詳しく紹介します。

データベースとデータベース管理システム

 ここまでデータベースという言葉をあいまいに使ってきましたが,「データベース」と「データベース管理システム」の意味について,きちんと確認しておきましょう。

 データベースとは,一定の規則に基づいて構造化された「データの集積場所」です。データを格納する際にデータベースを利用するメリットには,データを一元管理することによって多くのシステムでデータを共有できる点,複数のデータ・アクセスを適切にさばくことができる点,データの一貫性(整合性)を維持できる点,などが挙げられます。このデータベースに関する基本用語については,4ページめの別掲記事をご覧ください。

 データベースにデータを格納したり,データを検索したりする機能は,データベース管理システム(DBMS=DataBase Management System)が提供します。DBMSは,ほかのアプリケーションがデータベースを利用するインタフェースの役割を果たします(図1)。

図1●データベースとデータベース管理システム(DBMS)の関係
図1●データベースとデータベース管理システム(DBMS)の関係

現在主流のリレーショナル・データベース

 現在ではデータベースというと,リレーショナル・データベース(RDB=Relational DataBase)を意味するのが一般的です。リレーショナル・データベースでは,データは表計算ソフトのワークシートのような表(テーブル)形式で格納されます。テーブルは列と行から構成されます。列のことを「カラム(Column)」または「フィールド(Field)」,行のことを「レコード(Record)」ともいいます。RDBでは,複数のテーブルのデータを関連づけて表現します(図2)。

図2●リレーショナル・データベースの概念
図2●リレーショナル・データベースの概念
[画像のクリックで拡大表示]

 このリレーショナル・データベースを管理するシステム(およびシステムを構成するソフトウエア)をRDBMS(Relational DataBase Management System)といいます。MySQLとPostgreSQLの両方とも,RDBMSです。