データベース・クラスタの概要
4. Analytic型クラスタ構成
「3. 高可用クラスタ」で説明したHA(High Availability、高可用性)用のクラスタ構成では、データベースを格納しているストレージを切り離すことで、クラッシュした後も利用できるようにしたり、あるいは、データベース自身のコピーを常に持っておくようにすることで、サーバーがクラッシュしてもデータベースが継続処理されるようにしていました。
この方式とAnalytic型では、用途がまったく異なります。Analytic型では、複数台のサーバー機(クラスタ)を、高可用性のために使うのではなく、性能の向上のために利用するのです。
Analytic型が処理対象とするSQL文は、複雑なデータベース解析を行うためのSQL文です。特徴として、HA用のデータベースでは確実に行われる更新処理が、ほとんど行われません。データベースのサイズも大きく、専用のアプリケーションを使って解析用のデータを別のデータベースにロードすることすらあります。
通常のデータベースを使っても、複雑なデータベース解析は可能です。ただし、解析負荷が重いため、24時間かかっても結果が出ない、といったケースもあります。一方、Analytic型のデータベース・クラスタは、このような高負荷な解析のためにあり、高速にSQLを処理できます。
図5に、Analytic型の構成を示します。データベースのデータを小さな単位に分割し、おのおのを個別のサーバーに蓄積します。SQLを処理する際には、専用のSQLプロセッサを用い、元のSQLを、データが格納されているサーバーで処理できるような、小さなSQLに分解します。分解したSQLは、各サーバーで並列に処理します。結果は、マージしてアプリケーションに返します。
図5: Analytic型データベース・クラスタ |
このように、並列処理を導入することで、大規模なデータベースに対して複雑なSQLを処理させた場合でも、処理時間を短縮できるようになります。
5. Online型クラスタ構成
Webアプリケーションでは、膨大な数のユーザーにデータベースの内容を提供する必要があります。これを、単一のデータベース・サーバーで行うのは困難です。このような場合にも、アプリケーションの多くがデータベースの読み出し処理だけの場合は、回避策があります。
具体的には、「3. 高可用クラスタ」で示したシングル・マスターの技術を使って、参照用のデータベースを多く作り、このデータをユーザーに提供するやり方が有効です。これをOnline型と呼びます。
図6に、Online型の概要を示します。参照用のデータベースとオリジナルのデータベースが完全に同期している必要もありませんし、オリジナルのデータベースがクラッシュした場合に、それにとって代わる必要もありません。
図6: Online型データベース・クラスタ |
6. むすび
今回は、最近になって多く使われるようになったデータベース・クラスタを、適用分野ごとに分類し、その特徴を説明しました。次回は、代表的なオープン・ソース・データベースである「PostgreSQL」における、クラスタの動向を説明します。
- [参考]
- PostgreSQLのコア・メンバーであるJosh Berkus氏がまとめたデータベース・クラスタの情報は、以下の2つのリソースで参照できます。