クラウド実現のためのデータベース要件
クラウドコンピューティングを実現するデータベース技術として、最初に挙げられるのは伸縮性を実現するための仮想化への対応であろう。データベースがハイパーバイザー等で仮想化された環境上で確実に動くこと、さらにはデータベースそのものが仮想化され柔軟に伸縮するもの。また、データベースの拡張に合わせ、ストレージも柔軟に変化できなければならないので、データベースだけでなく仮想化したストレージをデータベースから有効に活用できるかも重要だ。
次に挙げられるのが、仮想化技術を使っていくつかのシステムを集約した際に、きちんとデータベースを分離して利用できるか。これは、パブリッククラウドであれば、マルチテナントにきちんと対応できるかということになる。仮想化を用いデータベースを集約した際に、実体は1つでもユーザーからはあたかも独立した専用のデータベース環境があるように見える。これが実現できないと、マルチテナントで安心してクラウドコンピューティングを利用できない。
当然ながら、クラウドコンピューティングでは複数のシステムを集約することになるので、大規模データを扱える性能と機能を有していなければならない。大量データに同時に多くのユーザーがアクセスするような状況になっても、極端に性能低下することなくリソースを追加するなりで十分な拡張性を発揮できなければならない。
もう1つ大事なのが、高度な信頼性、可用性の確保だ。クラウドではシステムを集約することになるので、シングポイント障害のリスクが高まることになる。そのため、十分にデータの信頼性を担保する仕組みが備わっており、適切で有効な冗長化の方法が用意されていることがデータベースには求められる。
伸縮性 | 仮想化への対応 |
拡張性 | システム集約への対応 |
信頼性・可用性 | 冗長化への対応 |
クラウドで注目を集めるNoSQL
さて、ここまでの部分は、従来あるリレーショナルデータベースをクラウド環境で利用するための話である。
これに対して、クラウドのデータベースと言えば、Apache HadoopなどのいわゆるNoSQLデータベースと呼ばれる技術がにわかに注目を集めている。多くのNoSQLは、並列化することでスケールアウトする仕組みを持っている。そのため、クラウドの伸縮に対応し拡張、縮小できる仕組みとして注目を集めているのだ。NoSQLはクラウドのような柔軟で莫大なデータを扱うのに適した技術だ。とはいえ、リレーショナルデータベースで実現している既存システムの仕組みすべてを、NoSQLに置き換えられるものでもない。
たとえば、Webサイトへの膨大なアクセスログデータなどを格納し、そこから必要なデータを抽出するといったことにはNoSQLは向いている。しかしながら蓄積したデータに対し複雑な条件で検索を実施する、あるいは別のデータとの関連性を分析するような複雑な処理用途となると、必ずしもNoSQLがそれらの処理に適しているとは限らない。またトランザクション処理も、NoSQLよりはリレーショナルデータベースのほうが向いている。
NoSQLは、クラウドコンピューティングと相性のいいデータベースのテクノロジーであることは確かだが、これがリレーショナルデータベースに取って替わるものではない。むしろ適材適所で目的に応じて使い分け、双方を共存させて利用することこそがクラウドコンピューティングを効率化する有力な手段となるだろう。