データ・モデリングの普及団体,DOA+コンソーシアムはこのほど,リレーショナル・データベース管理システム(RDBMS)の処理性能に関する実証試験を行い,調査結果を公開した。「データを正規化してデータベースに実装すると,処理性能が低下する」という“誤解”を正すため,実証実験を行ったという。

 データを正規化して実装したときと,非正規化して実装したときの処理性能の違いを調べた結果,「正規化して実装したデータベースの方が処理性能が高い」,「非正規化して実装したデータベースを操作する際,テーブル結合(JOIN)が発生する処理を行うと,処理性能が低くなる」と結論付けた。

 実証実験では,自動車の受注業務を想定したWebシステムを構築して,処理性能を測定した。このWebシステムは,データベース上に格納された受注データを基に,製品データや部品データ,部品メーカのデータなどを検索する。

 データベース実装の違いを調べるため,Webシステムは,(1)データベース上にデータを正規化して実装したものと,(2)非正規化して実装したものの2パターンを用意した。実証実験は,これら2パターンのシステムのデータベースに,受注データ500万件,受注明細データ5000万件などを格納して実験した。

 実証実験の結果,データベース上の単一テーブルを対象に検索した場合,いずれのパターンも2~3ミリ秒で処理を終えた。一方,3つ程度のテーブルにわたりデータを検索した場合,正規化したパターンでは,5000万件のデータを90ミリ秒で検索できた。だが,非正規化したパターンでは,500万件のデータ検索に14秒かかった。

 テーブルを1つだけを検索するときには処理速度に差がつかず,複数テーブルにわたって検索すると処理性能に差が出ている。非正規化されたデータベースの場合,複数テーブルで同じ項目を持つことになる。その項目が検索対象になると,その項目を含め,複数のテーブルから値を集計するようなケースでは,テーブルの結合処理が多く発生するためだ。

 実証実験の参加者のひとり,ウルシステムズの鳥谷部 聡シニアコンサルタントは,実証実験の結果を受けて,「単一テーブルをアクセスする処理時間がほとんど変わらないのであれば,正規化して実装したほうがデータベースの構造を変更することになっても対処しやすい。複数テーブルにわたって検索処理をするときには,非正規化すると処理性能は極端に落ちる。いずれにしても,非正規化するより,正規化して実装するほうが有利だ」と説明する。

 実証実験にはこのほか,NECネクサソリューションズ,住友電気工業,データアーキテクト,PFUの各企業のITエンジニア/コンサルタントが参加した。実験で使用したサーバーは,100万円程度のもの。動作周波数3.6GHzのXeonプロセサを2個,7GBの主記憶,300GBのハードディスクを5個搭載する。サーバーOSにLinux,データベース管理ソフトにPostgreSQL,Webサーバー・ソフトにTomcatを採用した。