「RDBMS in the Cloud: Oracle Database on AWS」を読んでみたメモ (1)

cloudpackエバンジェリストの吉田真吾@yoshidashingo)です。

AWS クラウドコンピューティング ホワイトペーパー に、AWS で Oracle Database を利用する際のホワイトペーパー「RDBMS in the Cloud: Oracle Database on AWS」が掲載されたので、読んでみました。

第1回目はP3〜P6「Oracle Database Solutions on AWS」「Choosing between Amazon RDS and Amazon EC2 for an Oracle Database」の章。

AWSで使えるOracle Database のソリューション

Amazon RDS

Amazon RDS はクラウド上でのRDBの構築・運用・スケール変更が簡単にできるWebサービス。Amazon RDS は Oracle database のインストール、ディスクの準備と管理、パッチ適用、マイナーバージョンアップ、バックアップやリカバリを用いた障害のあるインスタンスの置き換えを自動化する。RDSはまた、フルマネージドな高可用性環境である Multi-AZ(複数アベイラビリティゾーン配備)構成の同期レプリケーションも自動化する。Amazon に日々の Oracle database の管理を任せたいなら、Amazon RDS がおあつらえ向きだ。これによりあなたはスキーマの最適化やクエリのチューニング、アプリケーション開発といった高レベルな作業に集中できる。詳細は以下を参照されたい。http://aws.amazon.com/jp/documentation/rds/

Amazon EC2

Amazon EC2 はクラウド上で規模の変更が可能なコンピューティングリソースを提供するWebサービスだ。Amazon EC2 上に Oracle database をデプロイすると、OSや、データベースのインストールや設定まで全て自分で制御可能だ。また、バックアップやリカバリ、OSやデータベースへのパッチあて、OSのチューニングデータベースのチューニング、セキュリティ管理、HA構成やレプリケーションといったデータベース管理上のフルコントロールをすることになる。データベース管理の観点から言うと、これは自社で Oracle database を起動していることと変わらない。Amazon EC2 なら、素早くインスタンスやストレージを準備し、構成することができ、(インスタンスサイズを変更することで)垂直スケールさせたり、(インスタンス追加を行う事で)水平スケールさせることができ、世界中のエンドユーザーから、世界中のAWSリージョンを使って、低レイテンシでデータベースにアクセスしてもらうことができる。EC2上に起動したRDBは、あなたが高いレベルでの制御や設定可能な項目の多さを求める場合に、理想のシナリオとなるだろう。

その他のデータベースシナリオ

ECS2 か RDS を使って Oracle database を起動することは多くのユーザーにとって素晴らしいソリューションとなるだろうが、いくつかのシナリオにおいてはその他の AWS が提供するソリューションがよりよい選択である場合もある。

  • Webスケーラビリティ
    • 高スループットな大量データをストアする必要があるアプリケーションであれば、RDBよりNoSQLデータベースのほうがニーズにより適しているかもしれない。NoSQLデータベースはデータをリレーショナルに管理しないし、ACIDにも準拠しないが、典型的な特長として、高性能に大量データを格納し、検索することに成熟している。また、NoSQLデータベースは管理が非常に簡単な傾向にある。たくさんのAWSカスタマーが、Cassandra、MongoDB、Redis、CouchDB、HBase などをEC2上で利用している。もし、NoSQLデータベースの管理をしたくない場合、Amazon DynamoDB という、高速でフルマネージドなNoSQLデータベースが、予測可能なパフォーマンスとシームレスな拡張性を提供する。全てのデータ項目はSSD上に格納され、高可用性とデータの冗長性を標準機能で提供するために、自動的に(同一リージョン内の)複数のアベイラビリティゾーンに複製される。詳細情報は以下を参照されたい。http://aws.amazon.com/dynamodb.
  • データウェアハウス
    • データウェアハウス目的で Oracle Database を使えるなら、乗り換えるなら Amazon Redshift だ。Amazon Redshift は既存のBIツールで全てのデータを解析したりする場合にシンプルでコスト効果の高い使える、高速でフルマネージドなペタバイト級のデータウェアハウスのサービスだ。これは数百GBからペタバイト以上までのレンジのデータセットに最適化され、1TBあたり年間$1,000-(10万円くらい)以下で提供される。詳細情報は以下を参照されたい。http://aws.amazon.com/redshift.
  • 大量のBLOBデータの格納
    • Oracle database はblobsストレージと管理をサポートしており、(ビデオや音声、画像などの)オブジェクトをヘビーユーズするアプリケーションの場合に、Amazon S3 がBLOBストレージとしてよりよくシンプルな選択となるだろう。たくさんのAWSカスタマーが、blobのメタデータを DynamoDBのような NoSQLデータベースで管理し、 Amazon S3 上に blob型のデータを格納する使いやすさを知ってる。詳細情報は以下を参照されたい。http://aws.amazon.com/s3/

Oracle Database を RDS か EC2 どちらで使うか

RDS と EC2 にはそれぞれ特長がある。RDSはEC2で使うよりセットアップや管理や保守が簡単なので、日々のOracleの管理作業より別の作業に集中することができる。EC2上のOracleを使えば、よりたくさんの制御や柔軟性や選択の幅がある。どちらを選択することが望ましいかは、アプリケーションや要求仕様に依存する。

Amazon RDS はこんな人向け

  • データベース周りのタスクをアウトソースしたい人
    • データベースの準備
    • バックアップ、リカバリ
    • セキュリティパッチ適用やマイナーバージョンアップ
    • ストレージ管理
  • スタンバイDBの構成や運用を手動で行いたくないので、ワンプッシュで同期Multi-AZレプリケーションの特長を活かしたい人
  • データベースのバックアップやPITRを管理したくない人
  • 日々のデータベース管理より高レベルの作業(パフォーマンスチューニングやスキーマの最適化のような作業)に集中したい人

Amazon EC2 はこんな人向け

  • OSレベルへのアクセスを含めたデータベースのフルコントロールが必要な場合
  • データベース管理に卓越したDBAを割当てている場合
  • 指定可能な最大のデータベースサイズ(現状3TB)を超える必要がある場合
  • RDSで現状サポートされていない機能を使う必要がある場合
  • 複数リージョン間やオンプレミス環境との間のDR構成を作成したい場合

RDS と EC2 の Oracle Database 機能比較

RDSも日々進化してるけど、現状いくつかの機能やオプションをサポートしてない。以下はRDSで直接サポートしない機能だが、RDS側で同等の機能を提供しているもののリスト

  • Oracle Data Guard と Oracle Active Data Guard はスタンバイデータベースを作成する機能だが、RDSではMulti-AZ機能を提供している。
  • Oracle Enterprise Manager (OEM) Grid Control は複数のDBサーバーやAPサーバーを管理できるが、RDS は Grid Control をサポートしないが、OEM Database Control で個別のデータベース単位で管理することができる。
  • Automated Storage Management (ASM) は、データファイル、制御ファイル、ログファイルの管理を簡単にできるが、RDSではそれらをRDSが管理している。
  • Streamはデータベースのレプリケーション目的で変更を伝播する機能だが、Multi-AZなら同期スタンバイ構成を作る事ができる
  • Oracle XML DB は、XML形式のストレージと検索機能を提供する。XML DB Protocol Server 以外はRDSにサポートされている。
  • Real Application Cluster (RAC) はキャッシュの共有(キャッシュフュージョン)や共有ディスクを使ったアーキテクチャで組まれたクラスターデータベースであり、これは今現在EC2でも利用不可である。顧客の中にはRACが必要な場合、AWS外にデータベースをホストし、残りのインフラをAWSにホストしてる人もいる。この方法を採用したうえでデータベースパフォーマンスを良好に保つために、RACデータベースをAWSパートナーのデータセンターにホストし、AWS Direct Connect を使ってRAC以外のインフラとの接続を行っている。AWS Direct Connect は AWS Direct Connect ロケーションと隣接のリージョンに対する専用接続を構築する。低レイテンシーな 1Gbps か 10Gbps の接続を提供しており、それ以上のネットワーク帯域が必要な場合にも、さらに複数回線の準備がしやすい。詳細はDXのドキュメント参照。

http://aws.amazon.com/directconnect/.

以下はすでにRDSでサポートしている機能

  • Oracle Java Support では、データベース内にJavaのサーバーサイドアプリケーションのデプロイをサポートしている
  • Oracle Locator と Oracle Spatial はデータベース内のネイティブな型で測地系の位置データの管理を支援する。

これらの機能やオプション以外のものが必要な場合、Amazon EC2 が最良のプラットフォームである。以下のリストでは、新機能が追加されると更新されるため、利用前には最新状態をチェックされたい。
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.html