こんにちは、サイオステクノロジーの森谷です。
今回はAzureのデータ管理サービスについて、各サービスのポイントに絞って紹介したいと思います。
(2017.10.10追記 : Managed Disksについての記述を追加しました。)
Azureのデータ管理サービス
Azureでは、次のようなデータ管理サービスが利用できます。順番に確認してみましょう。
- リレーショナルデータの管理
- SQL Database
- Azure Database for MySQL
- Azure Database for PostgreSQL
- SQL Data Warehouse
- 非リレーショナルデータの管理
- Azure Cosmos DB
- Redis Cache
- Storage (Blob, File, Disk, Table, Queue)
- Managed Disks
- Data Lake Store
SQL Database
SQL DatabaseはAzureがPaaSとして提供しているマネージドなリレーショナルデータベースサービスです。コードベースは「Microsoft SQL Server」と共有しており、機能の大部分が互換性を持っています。
PaaSという形態上、ハードウェア、OS、ソフトウェアの管理が必要なく、さらにダウンタイムなしでパフォーマンスを調整できます。可用性についてもAzureがSLA99.99%を保証しているため、特別な構成がなくとも継続稼働を維持することができます。
ただしマネージドサービスゆえにトランザクション分離レベルがREAD COMMITTEDになっているほか、一部の設定が固定されているため、SQL Databaseを利用したアプリケーションを開発する場合は考慮が必要になります。
Azureのリレーショナルデータベースの中では最も汎用的なサービスのため、Microsoft SQL Server以外のデータベースエンジンが利用したい、完全な管理者権限が必要であるなどの特別な理由がない限りは、SQL Databaseを利用するとよいでしょう。
Azure Database for MySQL
Azure Database for PostgreSQL
これらのサービスは2017年9月現在preview版にて提供している、Azureのマネージドなリレーショナルデータベースサービスです。
SQL Databaseは先ほど説明した通りデータベースエンジンがMicrosoft SQL Serverであり、これ以外のデータベースエンジンを選択できません。このAzureのリレーショナルデータの管理サービスにおける欠点を解消すべく、これらのサービスが発表されました。それぞれデータベースエンジンは「MySQL」「PostgreSQL」のコミュニティバージョンに基づいており、多くの特徴はSQL Databaseと同様です。
まだpreview版ですが、今後の正式版リリースに期待できるサービスです。
SQL Data Warehouse
SQL Data WarehouseはAzureのデータウェアハウスサービスで、SQL Databaseに比べ非常に大きなサイズのデータの蓄積・分析が可能です。
エンジンの基盤はやはりMicrosoft SQL Serverであるためにリレーショナルデータベースと互換性が高く、小さい学習コストで利用できます。ただしペタバイトクラスのデータ分析が可能なよう、内部は列指向のデータ構造かつ超並列分散処理(MPP)を行う設計となっており、クエリは制御ノードが受け取り、複数の計算ノードで分割処理されます。
またトランザクション分離レベルがREAD UNCOMMITTEDとなっており、複数ユーザで操作する場合はダーティリードに注意が必要になります。
競合サービスと比べたSQL Data Warehouseの特徴として、ストレージと計算ノードが分離していることが挙げられます。このために、SQL Data Warehouseでは計算ノードの数、およびストレージのサイズを別々に調整することができるほか、データベースの停止ができ、停止中はストレージ部分のみが課金されます。これらの特徴によって、SQL Data Warehouseはコストの最適化がしやすくなっています。
Azure Cosmos DB
Azure Cosmos DBはAzureのマルチモデルデータベースサービスです。データベースの種類としては非リレーショナルなデータを扱う「NoSQL」ですが、複数のデータモデルが利用可能な点が他のNoSQLサービスに無い特徴です。
一貫性レベルが5段階も用意されており、一貫性、可用性、待機時間のトレードオフが最適に調整しやすくなっていることも特徴といえます。
以下が利用可能なデータモデルと、アクセス用APIの組み合わせです。これ以外のデータモデルも近日追加予定とのことです。
- ドキュメント指向
- DocumentDB用API
- MongoDB用API
- グラフ指向
- Gremlin用API
- Key-Value型
- Table Storage用API
NoSQLの特徴である応答速度の高速性。またPaaSとしての特徴である高可用性や柔軟なスケーリングも健在です。
Redis Cache
Redis CacheはAzureのマネージドRedisサービスです。
Redisはオープンソースのインメモリデータベースソフトウェアで、Key-Value型データをメモリ上に保持します。ディスクにデータを保持するデータベースに比べ、非常に高速な動作が期待できます。マネージドサービスの利点である高可用性・スケーラビリティを享受しつつ、処理が高速なRedisを利用することが可能です。
Storage
StorageはAzureのストレージサービスです。主にBlob Storage、Queue Storage、File Storageの3つのサービスから構成されます。これらのStorageはストレージ アカウントという単位で管理し、レプリケーションレベルによってコストと冗長化のバランスが調整可能です。
Azureのサービスを利用する中で発生するデータ保持の大部分は、Storageサービスを利用することになります。
Storageは複数のレプリケーションオプションを選択できます。他のデータ管理サービスのほとんどはローカル冗長化(LRS)となり、同データセンター内で3つのノードにレプリケートされますが、Storageでは複数のデータセンター間でデータがレプリケートされるGRSやRA-GRSを選択することができます。
Blob Storage
ファイルオブジェクトをフォルダに似たコンテナーという領域に格納します。REST APIを用いて様々なアプリケーションからオブジェクトにアクセスできます。
Queue Storage
キューメッセージの格納ができます。非同期処理を行うバックエンド間の通信に利用します。
File Storage
SMBプロトコルを使用してネットワークファイル共有が可能です。通常のネットワークドライブのように利用できる点が魅力です。
その他のStorageサービス
この他にKey-Value型データを格納するTable Storageと、仮想マシンのディスクをvhdとして格納するDisk Storageがありますが、それぞれCosmos DB・Managed Disksに移行が推奨されています。
Managed Disks
Managed DisksはAzure仮想マシンにおけるデータの記憶域として使用するためのディスクストレージサービスです。
SSDを利用しスループットが高いPremium Managed Disksと、HDDを利用し容量当たりの価格を抑えられるStandard Managed Disksを選択できることと、Azureがデータディスクを管理してくれることが特徴です。
従来のDisk Storageではユーザがストレージアカウントを作成し、ストレージアカウントの性能制限や可用性を考慮しながら仮想ディスクを配置する必要がありました。しかし、Managed Disksではこれらの管理をAzureが裏で行っており、従来より簡単に、かつ高い性能・可用性で仮想マシンのディスクを扱うことができます。
そのため現在、仮想マシンを作成する際のデータディスクはDisk StorageではなくこちらのManaged Disksを用いることが推奨されています。
Data Lake Store
Data Lake Storeはビッグデータの分析ワークロードに対応するHadoop分散ファイルシステム(HDFS)互換のストレージサービスです。データウェアハウスと異なり、様々な構造のデータをそのままのフォーマットで、スキーマ定義せずに格納します。
HDFS互換のため、Hadoopを利用した分析のほか、Data Lake AnalyticsをはじめとしたAzureのデータ分析・加工サービスで利用できます。
Data Lake Store特有の特徴として、無制限であることが挙げられます。ファイルサイズ・データサイズ・格納期間を気にせずに利用することができます。Storeに対してアクセス制御や暗号化などのセキュリティ設定が可能な点も利点です。
ただし、レプリケーションはローカル冗長化(LRS)のみとなります。データサイズが大きくなく、高い耐障害性が求められる場合はBlob Storageの利用を検討しましょう。
まとめ
今回はAzureのデータ管理サービスについて、各サービスのポイントに絞って紹介しました。以下に概要をまとめます。
サービス | 取り扱うデータ形式 | 利用 | 概要 |
---|---|---|---|
SQL Database | リレーショナルデータ | Microsoft SQL Server互換 | マネージドなSQL Server |
Azure Database for MySQL | リレーショナルデータ | MySQL互換 | マネージドなMySQLデータベース |
Azure Database for PostgreSQL | リレーショナルデータ | PostgreSQL互換 | マネージドなPostgreSQLデータベース |
SQL Data Warehouse | リレーショナルデータ | Microsoft SQL Server互換 | 超並列分散処理を行うSQL Serverライクなマネージドデータウェアハウス |
Azure Cosmos DB | ドキュメント指向データ | DocumentDB用API | マルチモデルなマネージドNoSQLデータベース |
MongoDB用API | |||
グラフ指向データ | Gremlin用API | ||
Key-Value型データ | Table Storage用API | ||
Redis Cache | Key-Value型データ | Redisクライアント | マネージドなRedisサービス |
Blob Storage | オブジェクト | 専用API | 汎用的なマネージドオブジェクトストレージ |
Queue Storage | キューメッセージ | 専用API | 非同期処理に適したキューメッセージのマネージドストレージ |
File Storage | ファイル | SMBプロトコル | ネットワークドライブのように利用できるマネージドファイルストレージ |
Managed Disks | HDD, SSD | 仮想マシンへの接続 | 簡単に扱うことができるマネージドな仮想マシンのデータディスク |
Data Lake Store | ファイル | HDFS互換 | 大きなファイルサイズのデータも無制限に格納可能なマネージドファイルストレージ |
これらのサービスは種類が多く、名前が似ているものがあることもあって違いがわかりにくいですが、調べてみると想定された利用目的に明確に特化されているため、サービスの選択には困らなさそうだと感じました。
これからそれぞれのサービスを触ってみて、使用感を確かめたいと思います。
ここまでご覧いただきありがとうございました。