ここで気になってくるのがセキュリティだ。そもそもデータベースをマルチテナント化すれば、すぐとなりに別のデータベースが稼働していることになる。この状態でセキュリティは適切に担保できるのだろうか。誤って別のデータベースに書き込みされるようなことはないのだろうか。
もちろんOracle Database 12cのマルチテナント機能ではそんなことは起こりえない。12cは前バージョンの11gのテクノロジを受け継いでおり、データベースの運用権限とプラガブルの権限を別にしている。つまりデータベースごとに権限が設定されているので、同じマルチテナントコンテナデータベースにプラグされていても、コンテナの運用管理者が個々のデータベースに対する権限をもつことはない。マンションの管理人が個々の部屋への立ち入りを禁止されているのと似ていると言えばわかりやすいだろうか。
逆にこの特徴を活かし、コンテナデータベースごとにサービスレベルを設定し、そのレベルごとにデータベース環境を構築することもマルチテナントでは容易だ。フルスペックでアクセス制限のタイトな環境から、コストをあまりかけないタイプまで、サービスレベルごとにいくつでも環境を構築できる。これはいままでのデータベースではもちろん、仮想化環境でも同じことを実現するのは難しい。
また、同じことを何度も何度も繰り返すので、もはや面倒という感覚すら麻痺しがちなデータベースのバックアップやアップグレードといった作業はどうなるのだろうか。これまで運用担当者は複数のデータベースに対してひとつひとつ変更を実施してきた。つまりデータベースが100個あれば、100回の更新が必要だったのだ。だがマルチテナント機能を利用すれば、コンテナデータベースだけに変更を実施すればOKだ。たとえ100個のデータベースでもわずか1回の作業で完了する。これを一度経験すれば、過去のバックアップ作業に戻りたいとは誰も思わないだろう。
プラガブルならアップグレードもパッチ適用も一度で簡単に
データベース環境は混在するバージョンが少なければ少ないほど運用はしやすく、コスト削減効果も高い。したがって最近はデータベース統合を提唱する向きも少なくないが、さまざまなタイプの業務ユーザを抱える企業にとって、すべてが一緒の環境というのはなんとも窮屈で使いにくい。本来、ITはユーザの業務を助け、ビジネスの発展につながるものでなければならない。そう考えたとき、個々のユーザのニーズに適したデータベース環境を、迅速かつ柔軟に構築できるマルチテナント機能は、現在のインフラにおける最適な落としどころ、いわばデータベース運用のベストプラクティスとして今後も注目を集めそうだ。