目次
万能なクラウドデータベースは存在しない。特徴を得るために代償を払っている。
前回までクラウドサービスの主要サービスであるストレージサービスのクラウドストレージとサーバーサービスのクラウドサーバーについて説明しました。今回は、主要サービスの最後としてデータベースサービスのクラウドデータベースについて説明したいと思います。今までの主要機能2つとは異なり、クラウドデータベースの種類が多く、これらの説明のために多少専門的なことも含まれると思いますが、可能な限り簡潔にまとめたいと思います。(今回もAmazon社の「Amazon Web Services(通称:AWS)」、Microsoft社の「Azure」、Google社の「Google Cloud Platform」のサービスを中心に説明します)
クラウドデータベースとは?
通常、オンプレミスでデータベースサーバーを構築しようとした場合、最低でも下記の初期設定を行う必要があります。
- OSのインストール
- データベースソフトのインストール
- データベースの環境設定
- データベースを公開設定(サーバーの外からアクセスできるようにする)
これらの作業は、ある程度の作業時間が必要になり、インストールするOS、またはデータベースソフトによっては専門的な知識が必要となる場合があります。クラウドサーバーはこれらの作業を省き、データベースがすぐに使える状態のデータベース環境を提供します。また、データベースの機能だけを切り出しているため、OS機能やデータベースの保存先ファイルなどを直接触ることはできません。
そして、クラウドデータベースはデータベースとして完成された状態で提供されています。オンプレミスのデータベースでは、サーバー本体やOSなどの状態によって細かいチューニングの必要がありますが、クラウドデータベースは、提供されているサーバー性能が十分出せるようにチューニングされた状態で提供されているため、クラウドデータベース自体のチューニングはほぼ必要ありません。
3大クラウドサービスのクラウドデータベースを比較
クラウドデータベースは、今までご紹介してきたクラウドストレージやクラウドサーバーと異なり、処理能力以外の特徴を出しやすいサービスであるため、下記のように AWS、Azure、Google Cloud Platform の各クラウドサービスで多くのクラウドデータベースを提供しており、毎年のように新しいサービスのリリース、または機能拡張が行われています。
これら各クラウドデーターベースの使用用途について説明する前に共通の機能について説明します。(下記のイメージは Amazon RDS)
クラウドデータベースは、クラウドストレージなどと同様にクラウドサービスのブラウザ管理コンソール(ポータル)などから簡単に環境を用意することが可能です。また、基本機能で自動バックアップとハードウェア障害の自動復旧、オプション機能で障害時に切り替えるクラウドデータベースの構築などが簡単に行えるため非常に高い耐久性があります。
そして、クラウドデータベースの処理性能や機能の変更も簡単に行えます。クラウドデータベースは、クラウドサーバー同様に処理性能を上げることも可能ですが、データベース内の記憶容量の拡張も行うことが可能です。(一部のクラウドデータベースは記憶容量の自動拡張を行っているサービスもあります) これによって、将来的なシステム拡大による処理性能向上や記憶容量の増加にも対応できるようになっています。(参照:第3回:クラウドサービスのシステムリリースの早さと安さの秘密)
セキュリティについても、各サービスで様々なオプションを準備しています。標準のアクセス制限(IPアドレス制限)、オプションの通信データや記憶内容の暗号化などがあり、他のクラウドサービスのサービスを併用することで更にセキュリティを高くすることも可能です。
使用料金については、クラウドデータベースの稼働時間と記憶容量による課金が主要な使用料金になっています。(Amazon Redshift、Google BigQuery などの一部例外もあります) 他にも通信データ量やオプションの使用料金などが追加になる場合があります。若干、料金体系が複雑ですが、月々1万円代から安定したクラウドデータベースを24時間365日稼働させることが可能です。
一般的なリレーショナルデータベース(RDB)
クラウドデータベースと言っても特別な仕様ではありません。ベースとなるリレーショナルデータベース(表形式の「テーブル」で保存・操作するデータベース)があり、商用の ORACLE や SQL Server、オープンソースの MySQL や PostgreSQL などが使われています。そのため、クラウドデータベースでありながら、普通のオンプレミスのデータベースの感覚でSQL命令などで操作できます。
各クラウドデータベースで採用されているデータベースエンジンは異なります。例えば Amazon RDS(Relational Database Service) は、ORACLE や MySQL などから各バージョンを選択できるため、非常に導入しやすいクラウドサービスです。また、Azure SQL Database は、オンプレミス用の SQL Server より新しいバージョンが採用されています。
Amazon Aurora は、Amazon RDS から選択できるデータベースエンジンの1つですが、MySQL をベースにデータベースのデータ記録方式を全く新しい方式に変えたサービスです。これによって、ソーシャルゲームのようなデータベースに対して高い頻度で入出力が発生する条件でも高いパフォーマンスが出せるようなサービスになっています。
大量データ処理に特化したデータベース
近年、ビッグデータ分析が注目され、今まで扱うことが出来なかったテラバイト級の大量データを分析する需要が出てきました。これらをターゲットにしているのが Amazon Redshift に代表されるクラウドデータベースです。これらのクラウドデータベースは、大量データをプログラムンぐ処理ではなく、SQL命令でデータ集計などが行えることから、データベース経験者は、新しいスキルを習得することなく、ビッグデータ分析が可能になっています。また、ビッグデータ分析用のクラウドデータベースの使用料金は月々10万円を超えることもありますが、ORACLE などのオンプレミスでも同様の分析環境を構築しようとした場合、数千万単位の出費になるため、クラウドデータベース方が圧倒的に導入コストが安いです。
しかし、これらのビッグデータ分析用のクラウドデータベースは、大量データ処理に特化するために下記のように失った機能も多くあります。
- SQL命令でデータ更新(INSERT、UPDATE、DELETE)が行えない(Google BigQuery)
- SQL命令でデータ更新処理が遅い(Amazon Redshift、Azure SQL Data Warehouse)
- データ型変換などの使えないSQL命令がある(Amazon Redshift、Google BigQuery)
- プライマリー制約などのテーブル機能が使えない(Amazon Redshift、Azure SQL Data Warehouse、Google BigQuery)
- テーブル内のデータ保存先をチューニングしないとテーブル結合が遅い(Azure SQL Data Warehouse)
NoSQLデータベース
今まで説明してきたクラウドデータベースは、RDBと呼ばれるExcelのような表形式のデータを「テーブル」と呼ばれるデータ集合単位で保存される形式になっています。このデータ形式は、構造化データと呼ばれ「列(項目)」と「行(カラム)」によって保存されることから、データ管理や集計などが行いやすいです。しかし、列の数が毎回変わったり、階層式で情報を持つような非構造化データには対応できません。(参考:[graffe]構造化データと非構造化データとデータの規則性)
非構造化データは、Webサービスの通信データやソーシャルゲームなどの通信データやログファイルなどに多く採用されています。これらのデータをビックデータ分析の1つとして、SQL命令に似た命令で非構造化データを検索などをするテクノロジがNoSQLと呼ばれるものです。
各クラウドデータベースは、NoSQLを採用したサービスがあり、それぞれに特徴があります。同じ NoSQL のクラウドデータベースでも扱えるデータ形式や処理速度にバラつきがあり、どのクラウドデータベースがベスト化は、使われる要件によって異なります。そのため、一度、各クラウドデータベースを触って、実際に使えるかを技術者視点で検証する必要があると思います。
クラウドデータベースに登録する「データ量」「データ構造」「アクセス頻度」を考える
このようにクラウドデータベースと言っても、10種類以上あり、それぞれ特徴があります。そのため、クラウドデータベースは、クラウドサーバーのように使用料金が高ければ必ず要件を満たせる分けではありません。
例えば、大量データの処理する場合、知名度から Amazon Redshift などのビッグデータ専用のクライドデータベースを選択するケースが多いですが、処理する対象のデータが数千万行程度なら Amazon RDS や Azure SQL Database などの普通のクラウドデータベースでも十分対応できる場合があります。むしろ、Amazon Redshift などに変えたことによってデータの更新処理に時間や手間が掛かってしまったり、多くのSQL命令を同時に処理できなくなってしまうようなマイナス面が出てしまう場合があります。
そのため「これだ」と特定のクラウドデータベースに限定することなく、様々なクラウドデータベースを試し、システム要件や使用状況、使用料金などから最適なクラウドデータベースを見つけることが大切です。
次回は、3大クラウドサービスの選定基準になるような、サービスのコンセプトや技術情報の展開の仕方などについて、実際に経験した目線から分かりやすく、簡潔に説明する予定です。
連載:経営者のためのクラウド講座
- クラウドを使えない大企業は、ベンチャー企業と戦えるのか
- クラウドサービスの課金体系・支払方法は複雑
- クラウドサービスのシステムリリースの早さと安さの秘密
- クラウドサービスのシステム開発に求められる技術者とは
- クラウドストレージによって安く・安全にデータを保存する
- クラウドサーバーはアイディア次第で使用用途は無限大
- クラウドデータベースは高ければ良いって物ではない! 特徴を見極める必要がある (本編)
- AWS × Azure × Google Cloud Platform を様々な角度から評価 ~AWSは絶対王者なのか?~
- クラウドサービスのサーバーレスは銀の弾ではない
- クラウドサービスの機械学習サービスの整理