仮想化してもパフォーマンスは問題なし
このようにデータベースの仮想化にはメリットがたくさんあるが、本当に良いことばかりなのだろうか。実際にエンタープライズレベルで使うとなれば「仮想化なのでパフォーマンスや信頼性は大丈夫なのかという不安もあるかもしれません」と岡下氏。そこで、仮想化技術を用いることによる各種懸念が、どの程度あるかを日本ヒューレット・パッカードの技術部隊が詳細に検証した。検証したのは、データベースとしての機能は十分か、仮想化による性能低下はあるのか、信頼性は確保されているかといったポイントだ。
データベースの基本機能としては、「アプリケーションからはANSIに準拠したリレーショナルデータベースに見えます」と日本ヒューレット・パッカード株式会社 テクノロジーサービス事業統括 テクノロジーコンサルティング統括本部 シニアアーキテクトの篠田典良氏は言う。
データベースの仮想化もJBoss Developer Studioを使えば、既存のOracle Databaseなどのデータベースからテーブル定義などを自動的に抽出し、それをメタデータにしてJBoss Enterprise Data Services Platformの仮想データベースの形に自動変換してくれる。アプリケーションから利用できるSQLの種類はDML(Data Manipulation Language)のみで、テーブルの作成、変更、削除などを行うDDL(Data Definition Language)には対応しない。「ANSI SQLだけを使っていれば、アプリケーション側の変更はとくに必要ありません」と篠田氏。
セキュリティに関しては、仮想データベースにも監査やユーザー管理といった一般的なセキュリティ管理機能は揃っているとのこと。ただしJBoss Enterprise Data Services Platformから物理データベースに対しては、1つのユーザーID/パスワードの組み合わせでアクセスするので、細かいレベルのアクセスコントロールをしたければユーザーIDを分離して別の接続を行うなどの工夫が必要になるのは一般的なRDBMSと同様。
最大の懸念となる性能については、仮想化によるオーバーヘッドはほとんどない。「Oracle Databaseを使って、直接アクセスする場合と仮想データベース経由とで比較しました。仮想化による性能劣化は、数ミリ秒しかありませんでした。これは、一般的なWebアプリケーションであれば無視できるレベルでしょう」とのこと。仮想データベースの内部処理では、SQL文の変換だけをシンプルに行う作りになっており、オーバーヘッドはほとんどなく、並列度を上げればその分だけ拡張性も上る。
また、可用性についても検証が行われた。ソース側データベースが停止している場合にはアプリケーションにエラーが返り、データが返されることはない。設定変更すれば、ソース側データベースに再接続し、コネクション・プーリングを自動的に再作成することも可能。また、複数のサーバーにJBoss Enterprise Data Services Platform インスタンスを起動すれば、均等にアプリケーションからのアクセスを振り分けることができる。1台のインスタンスが停止しても、アプリケーションからのアクセスは残りのインスタンスに自動的に接続することができるとのことだ。
そして、「仮想データベースは、アプリケーションからは単純なデータベースに見え、実データベースからはアプリケーションサーバーのように見えます」と篠田氏。そのため、構築には基本的なデータベース、管理にはアプリケーションサーバー運用のスキルが必要になるだろうとのこと。
「お客様はデータベースを統合したいと考えていますが、そのために物理データベースを増やしたいとは思っていません。データベースが1つ増えれば、データベースのライセンス費用、サーバーやストレージをはじめ災害対策サイトとの通信帯域も必要になりますし、管理する手間も増えます。データベースの構築コストと運用コストの削減のためにデータベースの仮想的な統合というニーズは確実にあると思います。」(篠田氏)
複数のデータベースやクラウドサービスを含んだデータソースからビジネス要件に適合したシングルビューを検討している場合、JBoss Enterprise Data Services Platformが提供するデータベースの仮想化という解決方法も検討してみるといいだろう。