「Oracle Database」「Microsoft SQL Server」だけがDB製品ではない。中にはよりリーズナブルなDB製品も存在するが、“安かろう悪かろう”では安心できない。性能も価格も満足できるDB製品はあるのか?
業務システム用のデータベース製品といえば、多くの人が真っ先に米Oracleの「Oracle Database」や米Microsoftの「Microsoft SQL Server」のことを思い浮かべるだろう。中には、ミッションクリティカルシステム向けのデータベース製品として米IBMの「IBM DB2」や日立製作所の「HiRDB」を連想する人もいるかもしれない。事実、世に存在する業務システムの大部分がこれらのデータベース製品を使って構築されているのだから、その発想は決して間違ってはいない。
だが見方を変えれば、「業務システムにはこうしたDBMSを使うべし」という思い込みが先に立つ余り、それ以外の選択肢が考慮から抜けている可能性も十分にあり得る。そしてそのことが原因で、要らぬコストやリスクを抱え込んでいる可能性さえある。特に、中堅・中小企業向けの比較的小規模なシステムにおいては、IBM DB2やHiRDBはもちろんのこと、Oracle DatabaseやSQL Serverですらオーバースペックなのが実情だ。
つまり、中堅・中小企業向けシステムの構築プロジェクトでは多くの場合、データベース製品に余分なコストを支払っている、ということになる。とはいえ、「Oracle DatabaseやSQL Server以上にリーズナブルで、かつ業務システムでの利用に十分耐えうるパフォーマンスを備えたデータベース製品を挙げろ」といわれると、多くの人が返答に窮することだろう。
実際にはこうしたニーズに応えるデータベース製品もきちんと存在する。その代表格が、エージーテックが提供するデータベース製品「PSQL」だ。
もともと「Btrieve」という名称だったPSQLは、パッケージソフトウェア向け組み込みデータベース製品として市場を席巻し、現在でもこの分野で高いシェアを持つ。既に国内での発売から27年もの歴史を持ち、今日では組み込み用途のみならず、システムインテグレーション(SI)案件で用いられるデータベース製品としても存在感を増しつつある。
特に、小規模システム向けのデータベース製品としては、抜群のコストパフォーマンスを誇る。例えば、クライアント/サーバアプリケーションでの利用を想定したライセンスの場合、同時接続ユーザー数が100ユーザーまでであれば104万円(税別、以下同じ)、ユーザー数無制限でも132万円と、極めて安価な価格設定がなされている。コア数に係わらず、サーバインスタンスごとの同時接続ユーザー数のシンプルなライセンス体系になっている。さらには製品サポートサービスが無償で受けられる他、エージーテックがパートナー向けに無償で提供しているパートナー支援プログラムに加入すれば、開発用ライセンスや開発ツール、技術資料なども無償で利用できる。
ただし、「安価」と聞くと、多くの方が「その分、パフォーマンスに問題があるのではないか……」と疑いたくなるかもしれない。確かに、全ての面でパーフェクトなデータベース製品は存在しない。だがPSQLに限って言えば、小規模・中規模システムのトランザクションをさばく限りにおいては、Oracle DatabaseやSQL Serverといった上位製品に負けないパフォーマンスを発揮する。
PSQLのパフォーマンス最適化機能は、これら上位製品と比べても決して引けを取らない。その1つが「DBキャッシュ機能」だ。
データベースのパフォーマンスにおける最大のボトルネックであるディスクI/Oの数を減らし、スループットを向上させるための有効な手段の1つとして、インメモリ技術の重要性が高まっている。データをメモリに置き、メモリを介して操作することによってディスクI/Oの発生を抑制し、全体のスループットを改善しようという技術である。DBキャッシュ機能は、このインメモリ技術の考え方を生かしている。
一般的に、インメモリ技術を採用したデータベースであるインメモリデータベースのシステムを本格的に実現するには、高価で大掛かりなソフトウェアやハードウェアを導入する必要がある。しかし、実は「安価・手軽」が特徴のPSQLでも、インメモリデータベースに近い使い方ができるようになっているのだ。
PSQLには、64ビット版が存在する。これを同じく64ビットのOSで動作させれば、4Tバイトもの広大なメモリ空間が扱えるようになる。このメモリ空間を丸々キャッシュとして使えば、まるでインメモリデータベースのようにメモリで大半のデータアクセスを処理し、ディスクI/Oに起因するスループット低下を回避できるのだ。これがDBキャッシュ機能の骨子である。
具体的には、PSQLの起動時に特定のテーブルのデータをキャッシュに展開しておくよう、あらかじめ指定できるツールが用意されている。これを利用し、頻繁にアクセスが発生することが想定されるテーブルをキャッシュに展開しておけば、大半のデータアクセスをメモリで完結できるようになり、あたかもインメモリデータベースのような利用が可能になるわけだ。
DBキャッシュ機能と並び、データベースのパフォーマンスを向上させるために欠かせない要素が、「マルチコアCPU」だ。
基本的には、コア数が多いプロセッサほどデータベースの処理スピードも速くなると考えられがちだ。だが場合によっては逆の結果となることもあり得る。というのは、マルチコア環境においては、データベースソフトウェアのスレッド間でデータ同期を図るための処理に、少なからぬオーバーヘッドが掛かるからだ。この同期処理の効率が悪いと、下手をするとシングルコア環境よりパフォーマンスが低下するといったことも起こり得る。
PSQLはこの点にも配慮し、マルチコア環境下でのスレッド間同期のオーバーヘッドを最小化でき、マルチコアのメリットを最大限に発揮できるようなアーキテクチャを採用する。そのため、マルチコア環境において多数のユーザーセッションが同時並列で処理されるような状況においても、安定したスループットを実現できる。
このことは、ベンチマークテストでも実証されている。PSQLの開発元である米Actianが実施した、標準的なベンチマーク仕様「TPC-B」準拠のベンチマークテストでは、クライアントセッション数を増やしていっても、PSQLが1秒間に処理可能なトランザクション数にはほとんど変化がないことが実証された(図1、2)。このことからも、PSQLが複数セッションの同期を極めて効率的にさばいていることがうかがえる。
ちなみに、このベンチマークテストは「SQLアクセス」と「NoSQLアクセス」の2つの条件で実施した。SQLアクセスとはすなわち、アプリケーションから通常のSQLを使ってPSQLへアクセスした場合の結果だ。一方のNoSQLアクセスとは、PSQLがネイティブで備える「Btrieve API」を使ってアクセスした場合の結果を示している。
結果を見ても分かる通り、SQLを使った場合より、Btrieve APIを使った方がSQLの実行エンジンをバイパスできるため、より高いパフォーマンスを発揮できる。こうした高速アクセス手段が提供されていることは、アプリケーションの開発者にとっては多様なオプションを選択できるという意味でありがたい。例えば、アプリケーションの生産性を重視する場合や、非定型のクエリを発行するようなアプリケーションの場合にはSQLアクセスを選択し、逆に定型のクエリでとにかく高パフォーマンスで大量データを処理したいような場合にはBtrieve APIを使うといった具合に、ニーズに応じてデータベースへのアクセス手段が選べるのである。
データベースのパフォーマンスをチューニングする際、得てして見落とされがちなのがログの扱いだ。特に、トランザクションの内容を記録しておく、いわゆる「トランザクションログ」や「ジャーナルファイル」の処理が非効率だと、いくらインメモリやマルチコアといった先進技術を導入しても、最終的にはここがボトルネックとなってシステム全体のスループットは低下してしまう。
PSQLはこの点に関しても、上位製品並みの優れたログ制御技術を搭載している。アプリケーションが発行したデータアクセス要求は即座に完了し、実際にデータファイルへのアクセスが発生する前に制御をアプリケーションに戻すので、アプリケーションから見た場合のデータベースのスループットは極めて軽快に保たれる。そして、実際のデータファイルへのアクセスはこれとは非同期に、適切なタイミングで行われる。
その際、PSQLは「システムトランザクション」といわれる技術を用いて、同じレコードに対する複数の更新をマージするなどして、なるべくデータファイルへのアクセス回数が少なくなるよう制御する。これによって、ディスクI/Oの回数をより少なくし、システム全体のスループットをさらに向上させることができるのだ。
さらには、このシステムトランザクションの機能を実現するために生成される「トランザクションログファイル」を、任意のドライブに配置できるようにもなっている。この点は極めて重要で、I/O性能の高いSSDなどにトランザクションログファイルを配置しておくことで、ログ周りのボトルネックを最小限に抑えることができる。こうした対策を施しておくことで、大容量キャッシュメモリやマルチコア最適化といったPSQLが備える他のパフォーマンス最適化機能も、より生きてくるというわけだ。
もちろん、製品そのものの使い勝手も申し分ない。アプリケーションから利用する際には、Oracle DatabaseやSQL Serverと同様に、SQLを使ってデータベースを操作できるとともに、ネイティブAPIを介した高速アクセスも可能になっている。また、たとえデータベースエンジンがバージョンアップしても、高い下位互換性が維持されているので、アプリケーションに修正を施す必要がない。これも、業務システムで利用するデータベース製品としては外せないポイントだといえよう。
以上のように、PSQLは安価で軽いデータベース製品でありながらも、その価格に見合わないほど先進的なパフォーマンス最適化機能を数々備えている。こうした機能は、パッケージソフトウェアに組み込むデータベースエンジンに適しているだけではない。突発的なトランザクション増や長期的に見た場合のシステムの拡張性に常に気を配る必要がある個別システム開発においても威力を発揮する。特に中規模・小規模システムのためのデータベース製品を選択する際には、ぜひ候補に挙げるべき製品だといえよう。
本稿で紹介した「PSQL v11」を開発用途で試用できる「開発用 Workgroup ライセンス」を、エージ―テックから読者限定で提供いたします。申し込みは以下のWebページまで!
提供:株式会社エージーテック
アイティメディア営業企画/制作:TechTargetジャパン編集部