アシストでは1987年に取り扱いを開始した「Oracle Database」に加え、2009年10月より「PostgreSQL(ポストグレスキュエル)」、2011年10月にはPostgreSQLをベースとしOracle Databaseとの互換性機能を有する「Postgres Plus(ポストグレスプラス)」、Webサービスのシステムにて採用されているRDBMSとしてはデファクト・スタンダードになりつつあるコミュニティ版の「MySQL(マイエスキュエル)」と、そのブランチである「MariaDB(マリアディビー)」のサポートを同年12月から開始しています。また、DWH専用に設計されたDBMSソフトウェアとして、2012年3月よりCalpont社の「InfiniDB(インフィニディビー)」の取り扱いを開始しました。
RDBMS領域で、商用RDBMSのデファクト・スタンダードである「Oracle Database」、オープンソースRDBMSの両雄である「PostgreSQL」、「MySQL」のサポート・サービスを開始したことで、それぞれの適用領域に関するご相談をいただくようになりました。RDBMSを採用する要因は、機能要件、非機能要件以外に、開発要員や運用人員のスキルの有無、移行コスト、開発コスト、同じ業界やシステムでの採用事例の有無、社内標準RDBMSであるかどうかなど、多種多様な採用ポイントがあります。今回は、「性能要件」に深く関係する「アクセス・パス」の観点から、「Oracle Database」、「PostgreSQL」、「MySQL」の特長を整理します。
アクセス・パス
「アクセス・パス」とはデータベースからデータを取り出す「経路」のことです。図1のようにRDBMSでは、アプリケーションから発行されたSQLを「解析」して「実行」しており、「解析」では、SQLの構文チェック、参照されているオブジェクトの存在チェックが行われた後、データにアクセスするための経路であるアクセス・パスが決定されます。
例えば、友人との待ち合わせ場所まで、どの経路を使って、どのような交通手段で移動するのが一番効率的かを考えるのと似ています。
代表的なアクセス・パスには、表の行データを1行1行読み取って、条件に合うデータを取り出す「全表スキャン」と、本の巻末の索引と同じく、表の各列のデータとそのデータの格納位置を示すアドレス情報を持つ「索引」を利用した「索引スキャン」があります。また、現実世界で目的地に行く場合も、交通状況や交通機関の遅延情報などを考慮して目的地までのルートを探すように、RDBMSもテーブルに格納されている行数や、列に格納されている値の種類、値の分布などの統計情報と呼ばれる情報を利用して、表に対して最もコストの低いと考えられるアクセス・パスを選択します。
このアクセス・パスは各RDBMSで実装されている種類ごとに異なり、また、各RDBMSのデータを保持する物理構造の違いと相まって、適用領域を考える際にポイントとなります。