写真提供:マイナビニュース

写真拡大

Amazon Web ServicesやMicrosoft Azure(以下、Azure)に代表されるパブリッククラウドは、今やシステム開発においてなくてはならない存在となりました。もはやスタートアップからエンタープライズまで導入事例、実績は数知れません。

筆者が所属しているシステムサポートでも、2013年からパブリッククラウドを専門に取り扱うクラウドコンサルティング事業部を立ち上げ、多数のパブリッククラウドの導入の支援を行ってきました。

今回から連載形式で解説する「SQL Data Warehouse」もそのようなパブリッククラウドのサービスの1つ(PaaS)で、Azureより2016年8月26日に日本でリリースされた新しいサービスです。

○オンプレミスにおけるDWH用データベース構築の課題とは?

そもそも、SQL Data Warehouseとはどのようなサービスなのでしょうか。一言で言うと、フルマネージドの高拡張性、高パフォーマンスを備えたデータウェアハウス(以下DWH)であり、数百テラバイト、数ペタバイトクラスのデータの分析を可能にするクラウドサービスとなります。

これまでも、DWH用のデータベースはさまざまなベンダーから提供されていましたが、オンプレミスでDWH用のデータベースを構築する際には、以下のような課題がありました。

初期投資
DWH用のデータベースとして多くのアプライアンス製品が存在しますが、どれも非常に高額で、しかもデータベースそのもののライセンス費用も高額です。大量のデータを扱い処理することになるDWHのデータベースは、おのずと巨大な環境になるため、初期投資が莫大になりがちです。

メンテナンス
前述のように巨大なデータベースですから、機器も大量に必要とし、メンテナンスに多くの時間がとられるといったことも起こりがちです。

拡張性
アプライアンス製品の場合、データが増えた際にディスクやマシンを増やすことも簡単に行えないため、拡張性に不満を抱えているユーザーも多いのではないでしょうか。

一方でクラウド型のDWH用データベースであれば、従量課金のため、初期費用は非常に少なく、メンテナンスもフルマネージドで行ってくれます。さらに、データ量が増えた場合、データを格納するディスクや、処理に必要なCPU、メモリリソースも瞬時に調達が可能です。

このように、オンプレミスでDWHを構築する際に課題となっていた事案の多くは、クラウド型のDWHを利用することで解決できる可能性があります。また、パフォーマンスに関しても、パブリッククラウドで提供されているDWHのワークロードに適したデータベースを利用することが可能です。

本連載のテーマであるSQL Data Warehouseも先ほど挙げたようなDWHの課題の多くを解決してくれる可能性を秘めています。

○SQL Data Warehouseとは

クラウド型DWHであるSQL Data Warehouseについて、まずはその特徴を説明していきたいと思います。

エンジンの基盤はRDBMSで実績のあるSQL Server
SQL Data Warehouseのエンジンの基盤はSQL Server、つまりRDBMSです。このため、Hadoopのような非定型のデータではなく、定型データをリレーショナル管理により取り扱うことになります。

エンジンがSQL Serverということは非常に重要です。SQL Serverのストアドやユーザー定義、パーティション分割、インデックスなどに特殊性が少なく互換性が高いため、SQL Serverを扱ったことのあるエンジニアであればSQL Data Warehouseを扱うために必要な新たな知識やスキルは少ないため、ストレスなく扱うことができます。

なおSQL Data Warehouseは、SSMS(SQL Server Management Studio)から接続し、操作することももちろん可能です。

並列分散アーキテクチャ
前述のようにSQL Data WarehouseはSQL Serverと同じRDBMSで特殊性が少ないのですが、一方で大量かつ大容量のデータを取り扱うため、さまざまなアーキテクチャや機能が実装されており、異なる点も多くあります。

主な機能の1つが「超並列分散処理(MPP)」です。SQL Data Warehouseは、データと処理機能を複数のノード(コンピュータ)に分散し、1つのデータベースとして扱います。要するに非常に大量のデータであったとしても、分割し処理を行うことで、高速に処理が行えるようになります。

例えば、1億件のデータがあったとしても、10分割すれば、1000万件のデータが10個になり、この10個を並列で処理することで高速化を図っています。分割は多ければ多いほど高速に処理が可能となり、理論上は線形にクエリ性能が向上します。

3層構造のアーキテクチャ
SQL Data Warehouseは前述した通り、超並列分散処理(MPP)データシステムです。この機能により、単一のシステムよりもはるかに大量のデータ処理を可能にしていますが、このSQL Data Warehouseはいわゆる3層構造のクラスター構成となっています。SQL Data Warehouseの大きな特徴の3つ目がこの3層構造のアーキテクチャです。

具体的には、接続を受け付け、クエリを受け取る制御ノード(コントロールノード)、コントロールノードから処理を受け取り、分散処理を行う計算ノード(コンピュートノード)、処理対象となるデータを分散して格納するストレージの3層構造になっています。コンピュートノードはその台数を最大60台まで増やすことができ、処理の並列数を高めることが可能です。

データを格納するストレージは、最初から60に分割されたストレージが用意されており、データは60分割されて格納されることになります。コンピュートノードが最大60台まで台数が増やすことができるのは、60に分割されたストレージ領域に起因しているためで、基本的には6の倍数で増えることになります。

1台のコントロールノード、複数台のコンピュートノード、60のストレージはそれぞれ分離されており、コントロールノード以外のコンピュートノード、ストレージでそれぞれ従量課金が発生します(制御ノードは無料)。また、それぞれが分離されているため、SQL Data Warehouseでは以下が可能です。

・データベースの停止
・瞬時のスケールアウト、スケールイン

次回は、SQL Data Warehouseの大きな特徴であるこの3層アーキテクチャに関して、もう少しくわしくお伝えしてます。

山口 正寛

1984年生まれ。大阪府出身、東京都在住。データベースエンジニア。SQL Server、Oracle、MySQL、PostgreSQLなどのデータベースで、小規模から大規模な案件まで数多く経験。現在ではクラウドの流れに逆らうことなく、「データベース×クラウド」をキーワードに案件対応、セミナー活動、執筆活動など幅広く活動中。

(山口正寛)