2006年頃より、IT業界ではあるキーワードが浮上してきた。そのあるキーワードとは「クラウド」である。昨今では猫も杓子も「クラウド、クラウド」といった具合だ。クラウドを取り巻くIT業界は日々、盛り上がりを加速させている。

筆者はもともと、データベース・エンジニアとして、長年にわたり数多くのデータベースの設計・構築・運用を行ってきた。数百TB、10台以上のインスタンスから構成されるような大規模なデータベースから、数GB程度の小・中規模なデータベースまで、さまざまな業種・業態でデータベースに関する案件に携わった経験がある。このデータベースという技術領域においても、「クラウド」の流れを非常に大きく感じる。

例えば、さまざまなユーザーから以下のような質問をいただく。

  • データベースをクラウド上に構築したいがどのようにすればいいのか?
  • フルマネージド型のデータベースを利用したいが、運用上、問題ないのか?
  • そもそも、データベースはオンプレミスとクラウドのどちらに構築したほうがよいのか?

筆者は、データベースの中でも世界最大のシェアを誇る商用データベース「Oracle Database」を最も得意としている。また現在は、「Amazon Web Services」(以下AWS)のクラウドを利用した案件に多く従事している。本連載では、「Oracle Database」と「AWS」という切り口で、さまざまな角度からデータベースに最も適した環境について伝えていきたい。

3種類のOracle Databaseを構成する環境

初めに、Oracle Databaseを構成する環境を以下の3つに整理し、これらの環境について紹介する。

(1)オンプレミスのサーバ上に構築

これは、クラウドが登場する前よりずっと利用されている環境で、データベースマシン用にサーバを用意、必要なライセンスを購入して、そのマシン上にOracle Databaseを構築する方法である。今のところ、この環境でデータベースを利用しているユーザーは非常に多い。そうしたユーザーのうち、クラウドに興味や関心を持つユーザーもいるが、クラウド上にデータベースをマイグレーション(移行)させることへの懸念や不安も多く聞かれる。

(2)クラウド上の仮想サーバ上に構築

本構成はクラウド上の仮想サーバ上にOracle Databaseをインストールする環境である。オンプレミスのOracle Databaseと同様、運用に手間や考慮点が存在するが、サーバ自体はクラウド上の仮想サーバを利用しているため、マシンメンテナンスなどにおいて、ある程度の運用コストの低減が見込める。

本連載では、「クラウド上の仮想サーバ」はAWS上のAmazon Elastic Compute Cloud(以下EC2)に限定して紹介していきたい。

(3)クラウド上のフルマネージド型サービスのOracle Databaseを構築

オンプレミスのサーバ上でOracle Databaseを利用しているユーザーが、クラウド上へのOracle Databaseの移行を検討する場合、初めに考えたいのがこの方法である。

Oracle Databaseをサーバにインストールし、データベースを作成する一連の作業(1や2で必要な作業)は、システム構築を行う上で大きな負荷となっていた。それがこの方法であれば、たった数回のクリックで行える。また、バックアップやBCP/DR対策などもサービスの中に含まれており、運用の観点でも多くのコストの削減が可能となる。ライセンスについては、含まれたモデルが提供されている場合もあり、ライセンスを「ユーザーの資産」として持たなくても良いのも大きなメリットである。

しかし、フルマネージド化されることにより、従来のオンプレミスなどでのデータベース管理や設計と異なる点があるため、この辺りを連載で紹介していきたい。

本連載では、「クラウド上のフルマネージド型サービスのOracle Database」として、Amazon Relational Database Service for Oracle(以下、RDS for Oracle)に限定して説明することにしたい。

Oracle Real Application ClusterとAWS

Oracle Databaseには、データベースインスタンスの可用性を高めるOracle Real Application Cluster(Oracle RAC)という機能が存在する。Oracle RACは相互に接続された、複数のサーバと共有ディスクで構成されるShared Everything型のデータベースで、すべてのデータファイル、制御ファイル、REDOログファイルは共有ディスク上に配置される。

現在、Oracle Databaseをオンプレミスのサーバ上に構築しているユーザーのうち、このOracle RACを利用して、データベースインスタンスの可用性を高めているユーザーも多いはずである。

では、このOracle RACは、前述した「Oracle on EC2」や「RDS for Oracle」のようなAWSの環境でも実装可能なのだろうか?

まず、「RDS for Oracle」ではOracle RACの機能は提供されていない。また、Oracle RACでは「マルチキャスト」による通信を必要としているが、多くのクラウドサービスでは「マルチキャスト」での通信ができないようなネットワークの構成となっている。これはAWSも例外ではないため、仮想サーバ上にOracle Databaseを構築する「Oracle on EC2」でもこの点がネックとなり、一般的には構成できない。

ただし、「Oracle on EC2」を利用する場合は、トンネリングの機能などを実装すれば、Oracle RACの構成は理論上可能となる。しかし、筆者は現時点で、EC2上でOracle RACを構成し商用環境として稼働させている事例を見たことがない。

つまり、AWSの環境でOracle Databaseを構築する場合、Oracle RACが実装できないことから、データベース環境の可用性は下がってしまうのであろうか?

AWSの環境でも可用性を高める方法はある。「RDS for Oracle」の構成では「マルチ-AZ」という高可用性を担保する機能が存在する。また、「Oracle on EC2」でも「Oracle Data Guard」などの機能を使えば、高可用性を担保することが可能である。

「マルチ-AZ」も「Oracle Data Guard」も、データベースインスタンスに加え、データベース自体も多重で構成する機能である(Oracle RACの場合は、データベースインスタンスの可用性を高めることを目的としている)。「マルチ-AZ」や「Oracle Data Guard」は、データベースインスタンスとデータベースの可用性を高めるため、可用性は担保できると言える。

AWSの環境ではOracle RACを稼働できないことから可用性を担保できないと考えているユーザーは、この点をぜひ参考にしてほしい。

Oracle RACの場合、インスタンスは多重化されているが、データベースは1つのみ

「マルチ-AZ」や「Oracle Data Guard」の場合、インスタンスとデータベースの両方を多重化

山口 正寛


1984年大阪府生まれ。データベースエンジニア、コンサルタントなどの活動経験が豊富。現在は株式会社システムサポートの東京支社 クラウド事業部 マネージャーとして、主にデータベース(特にOracle、Redshift)領域を担当。Amazonの提供するリレーショナルデータベースのAuroraにも詳しい。クラウド工房 ブログでときどき関連情報を発信している。職場ではオフィスグリコを絶賛消費中。