NoSQLのCosmos DBとAnalytics向け機能の強化ポイント
Microsoft Data PlatformのNoSQLのデータベースとしては、「Azure Cosmos DB」がある。これは地球規模の分散データベースであり、世界中にあるAzureのリージョン間をつなぎマルチマスター形式の分散データベース環境を構築できる。特長としてはCassandraやMongoDBなど複数のNoSQLのAPIが利用でき、ストレージとAPIエンジンが分離し形で動くことだ。
Cosmos DBを利用している顧客からのGROUP BYによる集計処理が遅いとのフィードバックを受け、Igniteではその処理性能を大幅に改善したと発表された。またCosmos DBにこれまではなかったオートスケール機能の「Auto Pilot Containers」も追加された。
「上限値を設定しておくことで、あとはその範囲でオートパイロット機能がよしなに処理してくれるようになりました」と畠山氏。この機能拡張については、大規模なNoSQLデータベースを運用したいユーザーは是非注目して欲しいと言う。これらMicrosoft Data Platformの新しい機能は、コーディングなどを必要とせず、設定だけで簡単に使えるものが多いのも特長だと言う。
Data Platformのもう1つの構成要素であるデータウェアハウスなどAnalyticsのためのサービス群が、「Azure Analytics」だ。Azure Data Factoryにはたくさんのコネクタが用意されており、容量無制限かつ分析用に最適化もされている「Azure Data Lake Storage」にデータを保存・管理する。
Azure Data Lake Storageは、新しい機械学習機能である「Azure ML」のデータストアとしても利用できる。つまりは、SQL ServerやAzure SQL Data Warehouseで利用するために蓄積しているデータを、そのまま機械学習のために利用できるのだ。さらに、学習により構築したモデルの管理も可能だ。どのようなデータセットを利用して学習した結果のモデルかなどを、容易に管理することが可能だ。
ところでデータウェアハウスで扱うデータは、今やペタバイトクラスの規模になっている。ここまで規模が大きくなると、クエリには当然時間がかかる。この課題を解消する方法の1つが「Materialized Views」で、これも今回のIgniteのタイミングで一般提供が開始された新たな機能だ。Materialized Viewsは、あらかじめ計算結果をテーブルとして持つことで、集計にかかる時間を削減する。
しかしながらデータ更新があれば、普通は手動で計算し直す必要がある。今回のMaterialized Viewsでは、更新があれば更新分だけを自動で計算し直し結果テーブルに反映してくれる。「Materialized Viewsを使うと、275秒かかっていたクエリ処理が5秒で終了するといった検証結果も出ています」と、畠山氏はこの機能の効果の高さをアピールした。
さらにクエリ結果は、リザルトセットとして保存してキャッシュデータとして再利用できる。この機能はダッシュボードなどから複数ユーザーが同じようなクエリを発行するような際の性能向上に大きく寄与する。このキャッシュデータは、データベースを一時停止し再開したあとも維持できる。またデータベース単位でもセッション単位でもリザルトセットは設定可能だ。
これらデータウェアハウス、Analytics向けの機能が充実したこともあり、Azure SQL Data WarehouseはTPC-Hのベンチマークでも圧倒的に高い結果を発揮している。
「たとえば他のデータウェアハウス向けのクラウドデータベースでは、1ペタバイトのデータに対するクエリ処理が10分ほどかかるところ、Azure SQL Data Warehouseでは9秒と極めて高速でした」と畠山氏は言う。