エンタープライズ・データマネージメントのニーズが高まっている
「データベースの仮想化とは、統合すべきデータをコピーせずに、新しい情報に変える技術です。」
レッドハット株式会社 JBoss事業本部 事業部長の岡下浩明氏は、データベースの仮想化とはいわゆる「エンタープライズ・データマネージメント」と呼ばれる領域のソリューションだと説明する。企業が利用しているさまざまなデータを、仮想化技術を活用し新たな1つのデータベースとして扱えるようにするもの。
それではこのエンタープライズ・データマネージメントとは、具体的にどのようなものなのか。たとえば企業には、販売管理システム、カスタマーサポートシステム、CRMなどさまざまなシステムが稼働している。それぞれのシステムに「顧客データ」があり、同じ顧客データでもシステムごとにその内容は少しずつ異なる。
さらに、多くの場合システムは個々に独立していて、システムごとに顧客に関するデータを入力するケースも多い。各システムでばらばらの顧客データのままでは、顧客に対し一貫したサービスの提供も難しく、さらに顧客に関するレポートを出力し経営戦略に活かそうとしても、システムをまたがる情報抽出ができないなどの不都合も発生する。それらを解消するために、企業内の重要なデータを一元的に管理できるようにする為の取組みがエンタープライズ・データマネージメントということになる。
このエンタープライズ・データマネージメントの領域で活用されているのが、ここ最近注目のマスターデータ管理ツールやETL(Extract/Transform/Load)ツール、さらにはデータクレンジングツールなどだ。多くの場合、新たな統合データベースなどを導入し、そこにこれらツールを用い各システムからデータをダウンロードしたりコピーしたりする。統合データベースのスキーマを作るために利用されるのがマスターデータ管理ツールであり、ダウンロードやコピーを行うのがETLツール、統合の際にデータの不整合を解消するのがデータクレンジングツールの役割となる。
データベースを仮想化すればさまざまな課題が解決できる
たとえば、各システムの顧客データに対する要求すべてを満たす大きな入れ物を用意し、そこで新たなデータのモデルを作って統合化するのが、一般的なマスターデータ管理ツールを用いたアプローチだ。この場合、個々のシステムの物理データモデルから論理データモデルを抜き出し、それぞれの論理データモデルを1つにしてマスターとなる論理データモデルを作ることになる。マスターとなる論理モデルを作るためには、きちんとデータを正規化する必要がある。そして、できあがった統合論理モデルを適用し、マスターデータベースを構築して必要なデータをコピーする。
この方法の課題は、マスターと個々のシステムのデータベース間にはデータのタイムラグがあることだ。通常はバッチ処理などで個々のシステムからデータを抽出し、クレンジングしてマスターとなるデータベースにコピーするので、マスターが最新の状態とは限らない。さらには、データをコピーするので、重複によるリソースの無駄も発生する。さらに、別の視点でデータを利用したいという要求が新たに出てきた際には、その要求を満たせるようにマスターのデータモデルを都度調整し、データベースを作り替えなければならないだろう。これもまた、大きな手間となりかねない。
「このようなエンタープライズ・データマネージメントの課題を解決する方法の1つが、データベースの仮想化です」と岡下氏。仮想化技術を用いることで、ETLツールなどで物理的にデータをコピーすることなくデータ統合が可能になる。これにより、タイムラグとデータの重複という問題が解決する。さらに、データベースの仮想化では、必ずしもマスターとなるデータモデルを作らなくてもいい。新たなシステムで必要となる論理データモデルだけを、仮想的に実現し利用する使い方も可能だ。
データベースの仮想化は、どのように実現すればいいのか。レッドハットでは、オープンソースのエンタープライズ・ミドルウェア「JBoss Enterprise Middleware」の1つ「JBoss Enterprise Data Services Platform」を利用することでデータベースの仮想化が実現できるとのこと。仮想化されるデータベースのデータソースは、既存システムのデータベース、データウェアハウス、Webサービス、アプリケーションデータ、さらにはセールスフォース・ドットコムに代表されるようなクラウド上のデータソースなどどんなものでも構わない。さまざまなデータソースからEclipseベースの無償ツール JBoss Developer Studioを使うことで、様々なデータソースからデータモデルを容易に抽出することができる。あとはそれらをもとに、仮想的にマスターとなるデータモデルを構築すればいい。
データは統合したいが新たな物理データベースは作りたくない
JBoss Enterprise Data Services Platformにより作成された仮想データベースには、SQLを用いJDBCインターフェース経由でアクセスできる。「アプリケーションからは、Oracle DatabaseやSQL Serverなどにアクセスする方法と同じです」と岡下氏。SQL以外では、Webサービスプロトコルでもアクセス可能。そして、仮想データベース自体は、実データは保持しない。データベースにアクセスがあった際に、データソースを参照し必要なデータだけを返すことになる。このため、個々のシステムと仮想データベース間で、データのタイムラグは発生しない。もちろんデータのコピーもないので、重複も発生しない。
そして、仮想的にデータベースを作るので、新たにデータベースを作ったり、作ったものに変更を加えたり、使わなくなったものを削除したりといったことも容易にできる。これが物理データベースであれば、都度サーバーのリソースやストレージをどう確保し割り当てるかなどを考慮しなければならず、迅速な対応は難しいだろう。
JBoss Enterprise Data Services Platformで構築される仮想データベースで利用できるのは、ANSI SQL。Oracle DatabaseやSybase ASEなど、データソース側の製品ごとの違いを開発者は考慮しなくてよい。そもそも、アクセスするデータがデータベース由来なのか、あるいはアプリケーションデータなのかを意識する必要がない。仮想データベースがそれぞれのデータソースに適合した呼び出し形式に自動変換してくれるのである。「今後のクラウドコンピューティング時代には、ユーザーや開発者が物理的なデータベースを意識する必要のない時代がくるでしょう」と岡下氏は言う。
仮想化してもパフォーマンスは問題なし
このようにデータベースの仮想化にはメリットがたくさんあるが、本当に良いことばかりなのだろうか。実際にエンタープライズレベルで使うとなれば「仮想化なのでパフォーマンスや信頼性は大丈夫なのかという不安もあるかもしれません」と岡下氏。そこで、仮想化技術を用いることによる各種懸念が、どの程度あるかを日本ヒューレット・パッカードの技術部隊が詳細に検証した。検証したのは、データベースとしての機能は十分か、仮想化による性能低下はあるのか、信頼性は確保されているかといったポイントだ。
データベースの基本機能としては、「アプリケーションからは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が提供するデータベースの仮想化という解決方法も検討してみるといいだろう。