マルチテナントを実現するコンテナデータベースとは
「Cloudのために何が必要かを考えて設計されたのが、Oracle Database 12cだ」とメンデルソン氏。そのためにOracle Database 12cでは、コンテナデータベースというものを提供。まずコンテナデータベースを構築し、そこにプラガブル・データベースをプラグインする形をとる。1つのサーバーで複数のデータベースを動かす場合には、それぞれにSGAと呼ばれるメモリを確保し、データベースをコントロールするために必要な各種プロセスを個別に動かすことになる。当然、1台のサーバーで多くのデータベースを動かそうとすれば、SGAやプロセスは個々にどんどん立ち上がり、リソースをたくさん消費する。より多くのデータベースを集約したい場合は、これでは非効率的で拡張性を阻害することになる。
コンテナデータベースでは、その上で動かすデータベースのリソースを共有する。データベース間で共有化できるプロセスなどはすべてコンテナ単位で共有するので、リソース利用効率が格段に向上するのだ。さらに、もう1つ重要なのが分離性だ。コンテナ単位でも独立しているし、もちろんコンテナの上で動くプラグインされたデータベースも個々に独立して動く。この分離性の高さとリソースを共有し効率化できるという両方を同時に実現していることで、エリソン氏に「世界で初のマルチテナントに対応したデータベース」だと言わせたというわけだ。
コンテナデータベースは、おそらくオーバーヘッドはあるはずだ。とはいえハイパーバイザーのような仮想化レイヤーとして実現されているわけではないので、それほど大きなオーバーヘッドとはならないのだろう。むしろリソースを共有して効率化できるメリットのほうが大きいはずだ。当然ながら、これはOracle Real Application Clustersとも組み合わせて利用可能。Real Application Clustersがハードウェアリソースを共有プール化して、その上でデータベースの利用に合わせてリソースを自由に割り当てるのがコンテナデータベースの役割ということのようだ。
コンテナデータベースの分離性の高さは、さまざまなメリットを生み出す。たとえばバックアップなどは、コンテナの単位でまとめて実行できる。逆にリストアの際には、コンテナごと戻すこともできれば、プラグインされたデータベース単位でリカバリーすることも可能だ。テスト用の環境を、別のコンテナデータベースを作ってそこに本番からコピーして用意することも簡単だ。多くのテスターのために、コンテナ上に数多くの複製環境を用意することも容易だ。さらに、パッチを当てたりバージョンアップしたりするようなメンテナンス作業も、新たなコンテナを用意しそこにパッチを適用し順次検証してから本番に移行させるといったことで対処できる。
データのアクセス頻度を可視化して効率的に配置する
もう1つのOracle Database 12cの目玉の機能として紹介されたのが、データのアクセス頻度に応じたヒートマップという機能。データのアクセス頻度に応じて、ホットなデータ、それほどホットではないデータ、アクセスされないクールなデータというように、データのアクセス状況をこのマップで確認できる。そしてこのヒートマップの情報に応じて、データを圧縮する。アクセス頻度の高いものは圧縮率は高くなくても高速に処理できる方式で、逆に頻度の低いものはアーカイブモードの高圧縮で。さらに、これらをアクセス頻度に応じて、ディスクの階層に適切に振り分けて格納するのだ。高速なアクセスが必要なものはDRAMへ、それほどでもなければフラッシュキャッシュに、そしてアーカイブなどはハードディスクへ。これら一連の処理を、Oracle Database 12cでは自動化できるようになる。
さらに、ユーザーからの要望の多い機能も新たに実装された。それがデータリダクションと呼ばれる機能。これは、ユーザーが参照できる必要のないデータにはマスクをかけるというもの。データベース全体を暗号化してしまうのではなく、問い合わせをして表示する際に柔軟かつ適切にデータにマスクをかけることができる。たとえばコールセンター行などで、問い合わせてきた顧客のクレジットカード番号は全部マスクするが、社会保障番号は上から5桁目までマスクするといった細かな指定が可能。さらに、同じデータベースへのアクセスでも、職種がスーパーバイザーの人には、すべてのデータを見せるといった設定も可能。こういった細かい制御は、データベース全体、あるいはカラム全体を暗号化してしまうと実現できないか、アプリケーションになんらか手を入れる必要が出てくることになる。
今回紹介されたOracle Exadata X3については、詳細も明らかにされておりすでにオーダーを受け付けている。Oracle Database 12cについては、出荷開始は2013年に入ったころになりそうだ。現時点では、詳細なスペックや新機能の仕組みなどについては明らかになっていないことも多い。この新しいExadataとOracle Database 12cについては、10月30日にウェスティン東京で開催される「Oracle Days Tokyo 2012」 にメンデルソン氏が来日しその基調講演を勤めるので、その中で改めて説明がなされるだろう。