完璧なデータベースの分離性を実現した12cのマルチテナント・アーキテクチャとは
大勢のユーザーが、インターネット越しに1つのクラウドサービスを利用する。その実現に必要なのがマルチテナントという環境だ。
「マルチテナントは、クラウドのサービスを実現するために持っていなければならない機能です。それをどこで持っているかが、鍵となります」(田村氏)
一般的なマルチテナント実現方法は、仮想化ハイパーバイザーを利用し、物理サーバー上でユーザーごとの仮想サーバーを動かすもの。この方法はすでに「こなれた」感もあり、容易に実現でき分離性も高い。しかし、OSごと分離するので、ユーザー数が増えればその分だけの仮想サーバーを管理、運用しなければならない。
「仮想サーバーを使う方法は、データベースの統合を考えた場合には、必ずしも適切とは言えません。管理性はあまり向上しないのです」(田村氏)
一方でデータベースをクラウドサービス化するのであれば、スキーマのレベルで分離しマルチテナントを実現する方法がある。これは、同一のデータベースで、ユーザーごとにスキーマを分けて使う。リソースを共有し、運用管理を統一できるメリットがある。とはいえ、「スキーマは、本来複数のデータベースの統合やマルチテナントのために作られた機能ではありません」と田村氏。リソースは共有でき管理も統一できるが、一方で分離性はそれほど高くない。例えばデータベース管理者ユーザなどはテナント間で共有されることになる。
余談だが、SaaS、PaaSベンダーであるSalesforce.comの場合には、基本的に同一データベース、同一スキーマを複数ユーザーで共有するアーキテクチャを取っている。マルチテナントの実現は、内部的にパーティショニング機能などを利用し、アプリケーションのレベルで独自実装しているのだ。この方法は、スキーマで分離するよりもリソース効率は高くなるが、分離性は低い。なので、さまざまな利用制限がある。データベースを自由にカスタマイズすることはできず、Salesforce.comの定めた厳しいルールに基づいた利用を強いられる。
これらのマルチテナントの実現方法では、データベースをクラウドに本格的に対応するには不十分である。そう判断したOracleが新たに提供するのが、マルチテナント・コンテナ・データベースとプラガブル・データベースを使って実現する12cのマルチテナント・アーキテクチャだ。スキーマレベルの方法ではないが、管理、運用性はそれ以上に柔軟で容易。さらに、仮想サーバーを利用するのに匹敵する、いやデータベースとしてはより「完璧なデータベースの分離性」も実現する。
【Oracle Technology Network 特別企画】
Oracle Database 12c トライアル・キャンペーン!
Oracle Database 12cは、もうお試しになりましたか?
Oracle Technology Networkでは、Oracle Database 12cのリリースを記念して、トライアル・キャンペーンを実施中です。 Oracle Database 12c 試用版ソフトウエアをお試しいただき、アンケートに回答していただいた方の中から抽選で、合計1,212名様にOracle Database 12cロゴ入りのスペシャルグッズをプレゼントします。Oracle Databaseを使用しているデータベースエンジニアの皆様、ぜひ挑戦してみてください!