Azure で使用する分析データ ストアの選択
ビッグ データ アーキテクチャでは、分析ツールを使用してクエリを実行できる構造化された形式の処理済みデータを提供する分析データ ストアが必要になることがよくあります。 ホットパス データとコールドパス データの両方のクエリ処理をサポートする分析データ ストアは、まとめてサービス レイヤーまたはデータ サービス ストレージと呼ばれます。
サービス レイヤーは、ホットパスとコールドパス両方の処理済みデータを扱います。 ラムダ アーキテクチャの場合、サービス レイヤーは、増分処理されたデータを格納するスピード サービス レイヤーと、バッチ処理された出力を含むバッチ サービス レイヤーに分割されます。 サービス レイヤーは、短い待機時間のランダム読み取りを強力にサポートする必要があります。 このストアにデータのバッチ読み込みを行うと、望ましくない遅延が生じるので、速度レイヤー用のデータ ストレージはランダム書き込みもサポートする必要があります。 一方、バッチ レイヤーのデータ ストレージは、ランダム書き込みをサポートする必要はありませんが、代わりにバッチ書き込みをサポートする必要があります。
すべてのデータ ストレージ タスクに最適な 1 つのデータ管理方法はありません。 各データ管理ソリューションは、異なるタスクに合わせて最適化されています。 ほとんどの実際のクラウド アプリケーションとビッグ データ プロセスには、さまざまなデータ ストレージ要件があり、多くの場合、複数のデータ ストレージ ソリューションを組み合わせて使用します。
分析データ ストアを選択する場合のオプション
Azure にはデータ サービス ストレージのオプションがいくつかあり、必要に応じて選択できます。
- Azure Synapse Analytics
- Azure Synapse Spark プール
- Azure Databricks
- Azure Data Explorer
- Azure SQL Database
- Azure VM の SQL Server
- HDInsight 上の HBase/Phoenix
- HDInsight 上の Hive LLAP
- Azure Analysis Services
- Azure Cosmos DB
これらのオプションは、タスクの種類に合わせて最適化されたさまざまなデータベース モデルを提供しています。
- キー/値データベースは、各キー値に対して 1 つのシリアル化されたオブジェクトを保持します。 指定されたキー値に対して 1 つの項目を取得し、項目の他のプロパティに基づいてクエリを実行する必要がない、大量のデータを格納する場合に適しています。
- ドキュメント データベースは、値がドキュメントであるキー/値データベースです。 この文脈での "ドキュメント" とは、名前付きフィールドと値のコレクションです。 通常、データベースには XML、YAML、JSON、バイナリ JSON (BSON) などの形式でデータが格納されますが、プレーン テキストを使用することもできます。 ドキュメント データベースでは、非キー フィールドに対してクエリを実行できます。また、クエリをより効率的にするためにセカンダリ インデックスを定義できます。 そのため、ドキュメント データベースは、ドキュメント キーの値よりも複雑な基準に基づいてデータを取得する必要があるアプリケーションに適しています。 たとえば、製品 ID、顧客 ID、顧客名などのフィールドに対してクエリを実行することができます。
- 列ストア データベースは、各列をディスクに個別に格納するキーと値のデータ ストアです。 "ワイド列ストア" データベースは、単一の列だけでなく、"列ファミリ" を格納する列ストア データベースの一種です。 たとえば、国勢調査データベースには、個人の名前 (姓、名、ミドルネーム) 用の列ファミリ、個人の住所のファミリ、個人のプロフィール情報 (生年月日、性別) のファミリが含まれる可能性があります。 このデータベースは、各列ファミリを個別のパーティションに格納し、さらに 1 人のすべてのデータと同じキーへの関連付けを維持することができます。 アプリケーションは、エンティティのすべてのデータを読み取らずに、単一の列ファミリを読み取ることができます。
- グラフ データベースは、情報をオブジェクトとリレーションシップのコレクションとして格納します。 グラフ データベースは、オブジェクトのネットワークとオブジェクト間のリレーションシップにまたがるクエリを効率的に実行することができます。 たとえば、人事データベースではオブジェクトは従業員の可能性があります。また、"佐藤さんのために直接的または間接的に働いているすべての従業員を検索する" などのクエリを簡単にすることもできます。
- テレメトリ データベースと時系列データベースは、オブジェクトの追加専用のコレクションです。 テレメトリ データベースでは、さまざまな列ストアとインメモリ構造でデータのインデックスが効率的に作成されるため、膨大な量のテレメトリ データと時系列データを格納および分析するのに最適です。
主要な選択条件
選択肢を絞り込むために、まず次の質問に答えてください。
データのホット パスに対応できるサービス ストレージは必要ですか。 "はい" の場合、スピード サービス レイヤーに合わせて最適化されたオプションに絞り込みます。
クエリが複数のプロセスやノードに自動的に分散される、超並列処理 (MPP) のサポートは必要ですか。 "はい" の場合、クエリのスケールアウトをサポートするオプションを選択します。
リレーショナル データ ストアを使用したいですか。 "はい" の場合、リレーショナル データベース モデルを使用するオプションに絞り込みます。 ただし、一部の非リレーショナル ストアはクエリの SQL 構文をサポートしており、PolyBase などのツールを使用して非リレーショナル データ ストアに対してクエリを実行することができます。
時系列データを収集しますか。 追加専用データを使用しますか。
機能のマトリックス
次の表は、機能の主な相違点をまとめたものです。
一般的な機能
機能 | SQL Database | Azure Synapse SQL プール | Azure Synapse Spark プール | Azure Data Explorer | HDInsight 上の HBase/Phoenix | HDInsight 上の Hive LLAP | Azure Analysis Services | Azure Cosmos DB |
---|---|---|---|---|---|---|---|---|
マネージド サービスか | はい | はい | はい | はい | はい 1 | はい 1 | はい | はい |
プライマリ データベース モデル | リレーショナル (列ストア インデックスを使用する場合の列ストアの形式) | 列ストレージのリレーショナル テーブル | ワイド カラム ストア | リレーショナル (列ストア)、テレメトリ、および時系列ストア | ワイド カラム ストア | Hive/In-Memory | 表形式のセマンティック モデル | ドキュメント ストア、グラフ、キー値ストア、ワイド カラム ストア |
SQL 言語のサポート | はい | はい | はい | はい | はい (Phoenix JDBC ドライバーを使用) | はい | いいえ | はい |
スピード サービス レイヤーに合わせて最適化 | はい 2 | はい 3 | はい | はい | はい | はい | いいえ | はい |
[1] 手動構成とスケーリングを使用。
[2] メモリ最適化テーブルとハッシュ インデックスまたは非クラスター化インデックスを使用。
[3] Azure Stream Analytics 出力としてサポート。
スケーラビリティ機能
機能 | SQL Database | Azure Synapse SQL プール | Azure Synapse Spark プール | Azure Data Explorer | HDInsight 上の HBase/Phoenix | HDInsight 上の Hive LLAP | Azure Analysis Services | Azure Cosmos DB |
---|---|---|---|---|---|---|---|---|
高可用性のための冗長リージョン サーバー | はい | いいえ | いいえ | はい | はい | いいえ | はい | はい |
クエリのスケールアウトをサポート | いいえ | はい | はい | はい | はい | はい | はい | はい |
動的スケーラビリティ (スケールアップ) | はい | はい | はい | はい | いいえ | いいえ | はい | はい |
データのメモリ内キャッシュをサポート | はい | はい | はい | はい | いいえ | はい | はい | いいえ |
セキュリティ機能
機能 | SQL Database | Azure Synapse | Azure Data Explorer | HDInsight 上の HBase/Phoenix | HDInsight 上の Hive LLAP | Azure Analysis Services | Azure Cosmos DB |
---|---|---|---|---|---|---|---|
認証 | SQL/Microsoft Entra ID | SQL/Microsoft Entra ID | Microsoft Entra ID | ローカル/Microsoft Entra ID 1 | ローカル/Microsoft Entra ID 1 | Microsoft Entra ID | アクセス制御 (ID およびアクセス管理 (IAM)) によるデータベース ユーザー/Microsoft Entra ID |
保存データの暗号化 | はい 2 | はい 2 | はい | はい 1 | はい 1 | はい | はい |
行レベルのセキュリティ | はい | はい 3 | はい | はい 1 | はい 1 | はい | いいえ |
ファイアウォールをサポート | はい | はい | はい | はい 4 | はい 4 | はい | はい |
動的データ マスク | はい | はい | はい | はい 1 | はい | いいえ | いいえ |
[1] ドメイン参加済み HDInsight クラスターを使用する必要があります。
[2] 保存データの暗号化と暗号化の解除には、Transparent Data Encryption を使用する必要があります。
[3] フィルター述語のみ。 「行レベルのセキュリティ」をご覧ください
[4] Azure Virtual Network 内で使用する場合。 詳細については、「Azure Virtual Network を使用した Azure HDInsight の拡張」を参照してください。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパル作成者:
- Zoiner Tejada | CEO 兼アーキテクト
次のステップ
- リレーショナル データ ウェアハウスのデータを分析する
- 単一データベースの作成 - Azure SQL Database
- Azure Databricks ワークスペースを作成します
- Azure portal を使用して Azure HDInsight 内に Apache Spark クラスターを作成する
- Synapse ワークスペースの作成
- 最新の分析について Azure データ サービスを検討する
- Azure のデータベースおよび分析サービスについて調べる
- NoSQL 用 API を使って Azure Cosmos DB に対するクエリを実行する