次の方法で共有


Azure Synapse Data Explorer プールでストリーミング インジェストを構成する (プレビュー)

重要

Azure Synapse Analytics データ エクスプローラー (プレビュー) は、2025 年 10 月 7 日に廃止されます。 この日以降、Synapse Data Explorer で実行されているワークロードは削除され、関連付けられているアプリケーション データは失われます。 Microsoft Fabric の Eventhouse に移行 することを強くお勧めします。

Microsoft Cloud Migration Factory (CMF) プログラムは、お客様が Fabric に移行できるように設計されています。 このプログラムは、顧客に無料でハンズオン キーボード リソースを提供します。 これらのリソースは、定義済みの合意されたスコープで、6 ~ 8 週間割り当てられます。 顧客の指名は、Microsoft アカウント チームから受け入れられるか、CMF チームに ヘルプの要求 を送信することによって直接受け入れられます。

ストリーミング インジェストは、インジェストとクエリの間の待機時間が短い場合にデータを読み込む場合に便利です。 次のシナリオでは、ストリーミング インジェストの使用を検討してください。

  • 待機時間が 1 秒未満である必要があります。
  • 各テーブルへのデータ ストリームが比較的小さい (1 秒あたりのレコード数が少ない) が、データ インジェスト ボリューム全体が高い (1 秒あたり数千レコード) 場合に、多数のテーブルの操作処理を最適化する。

各テーブルへのデータ ストリームが高い (1 時間あたり 4 GB を超える) 場合は、 バッチ インジェストの使用を検討してください。

さまざまなインジェスト方法の詳細については、 データ インジェストの概要を参照してください。

適切なストリーミング インジェストの種類を選択する

次の 2 種類のストリーミング インジェストがサポートされています。

インジェストの種類 説明
イベント ハブ または IoT Hub ハブは、テーブル ストリーミング データ ソースとして構成されます。
これらの設定の詳細については、「 イベント ハブ」を参照してください。
カスタム インジェスト カスタム インジェストでは、Azure Synapse Data Explorer クライアント ライブラリのいずれかを使用するアプリケーションを作成する必要があります。
このトピックの情報を使用して、カスタム インジェストを構成します。 また、C# ストリーミング インジェスト サンプル アプリケーションが役立つ場合もあります。

環境に適したインジェストの種類を選択するには、次の表を参考にしてください。

基準 イベント ハブ/IoT Hub カスタムデータ取込み
インジェストの開始とクエリに使用できるデータの間のデータ遅延 長い遅延 より短い遅延
開発のオーバーヘッド 迅速で簡単なセットアップ、開発オーバーヘッドなし アプリケーションを作成してデータを取り込み、エラーを処理し、データの整合性を確保するための高い開発オーバーヘッド

Synapse ワークスペースでデータ流出防止が有効になっているマネージド仮想ネットワークを使用している場合、イベント ハブから Data Explorer プールへのデータの取り込みは機能しません。

前提条件

  • Azure サブスクリプション。 無料の Azure アカウントを作成します。

  • Synapse Studio または Azure portal を使用して Data Explorer プールを作成します

  • Data Explorer データベースを作成します。

    1. Synapse Studio の左側のペインで、 [データ] を選択します。

    2. + (新しいリソースの追加) >[Data Explorer プール] を選択し、次の情報を使用します。

      設定 推奨値 説明
      プール名 contosodataexplorer 使用する Data Explorer プールの名前
      名前 TestDatabase データベース名はクラスター内で一意である必要があります。
      既定のリテンション期間 365 クエリにデータを使用できることが保証される期間 (日数) です。 期間は、データが取り込まれた時点から測定されます。
      既定のキャッシュ期間 31 頻繁にクエリされるデータが、長期ストレージではなく SSD ストレージまたは RAM で利用できるように保持される期間 (日数) です。
    3. [作成] を選択してデータベースを作成します。 通常、作成にかかる時間は 1 分未満です。

  • クエリとデータ インジェストのエンドポイントを取得します。
    1. Synapse Studio の左側のペインで、 [管理]>[Data Explorer プール] を選びます。

    2. 詳細を表示するために使用するデータ エクスプローラー プールを選択します。

      [データ エクスプローラー プール] 画面のスクリーンショット。既存のプールの一覧が表示されています。

    3. クエリとデータ インジェストのエンドポイントを書き留めます。 Data Explorer プールへの接続を構成するときは、クエリ エンドポイントをクラスターとして使用します。 データ インジェスト用に SDK を構成する場合は、データ インジェスト エンドポイントを使用します。

      [データ エクスプローラー プールのプロパティ] ウィンドウのスクリーンショット。クエリとデータ インジェストの URI アドレスが表示されています。

パフォーマンスと運用上の考慮事項

ストリーミング インジェストに影響を与える主な共同作成者は次のとおりです。

  • コンピューティング仕様: ストリーミング インジェストのパフォーマンスと容量は、Data Explorer プール のサイズが大きくなるとスケーリングされます。 同時インジェスト要求の数は、コアあたり 6 個に制限されます。 たとえば、コンピューティング最適化 (Large) や Storage Optimized (Large) などの 16 種類のコア ワークロードの場合、サポートされる最大負荷は 96 個の同時インジェスト要求です。 コンピューティング最適化 (Extra Small) などの 2 種類のコア ワークロードの場合、サポートされる最大負荷は 12 個の同時インジェスト要求です。
  • データ サイズの制限: ストリーミング インジェスト要求のデータ サイズ制限は 4 MB です。
  • スキーマの更新: テーブルの作成や変更、インジェスト マッピングなどのスキーマの更新は、ストリーミング インジェスト サービスに最大 5 分かかる場合があります。 詳細については、「 ストリーミング インジェストとスキーマの変更」を参照してください。
  • SSD 容量: データがストリーミング経由で取り込まれていない場合でも、データ エクスプローラー プールでのストリーミング インジェストを有効にすると、データ エクスプローラー プール マシンのローカル SSD ディスクの一部を使用してインジェスト データをストリーミングし、ホット キャッシュで使用できるストレージを削減します。

データ エクスプローラー プールでストリーミング インジェストを有効にする

ストリーミング インジェストを使用するには、データ エクスプローラー プールで機能を有効にし、 ストリーミング インジェスト ポリシーを定義する必要があります。 この機能は、 データ エクスプローラー プールの作成時に有効にすることも、 既存のデータ エクスプローラー プールに追加することもできます。

警告

ストリーミング インジェストを有効にする前に 、制限事項 を確認してください。

新しいデータ エクスプローラー プールの作成時にストリーミング インジェストを有効にする

Azure Synapse Studio または Azure portal を使用して新しいデータ エクスプローラー プールを作成するときに、ストリーミング インジェストを有効にすることができます。

「Synapse Studio を使用してデータ エクスプローラー プールを作成する」の手順を使用してデータ エクスプローラー プールを作成するときに、[追加の設定] タブで [ストリーミング インジェスト>Enabled] を選択します。

Azure Synapse Data Explorer でデータ エクスプローラー プールを作成するときに、ストリーミング インジェストを有効にします。

既存のデータ エクスプローラー プールでストリーミング インジェストを有効にする

既存のデータ エクスプローラー プールがある場合は、Azure portal を使用してストリーミング インジェストを有効にすることができます。

  1. Azure portal で、データ エクスプローラー プールに移動します。
  2. [設定] で、[構成] を選択します。
  3. [構成] ウィンドウで、[オン] を選択してストリーミング インジェストを有効にします。
  4. 保存 を選択します。

ターゲット テーブルを作成し、ポリシーを定義する

ストリーミング インジェスト データを受信するテーブルを作成し、Azure Synapse Studio または Azure portal を使用してその関連ポリシーを定義します。

  1. Synapse Studio の左側のウィンドウで、 [開発] を選択します。

  2. [KQL スクリプト] で、[+] (新しいリソースの追加) >[KQL スクリプト] を選びます。 右側のウィンドウで、スクリプト名を指定できます。

  3. [接続先] メニューで、[contosodataexplorer] を選択します。

  4. [データベースの使用] メニューで、 [TestDatabase] を選択します。

  5. 次のコマンドを貼り付け、 [実行] を選択してテーブルを作成します。

    .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
    
  6. 次のいずれかのコマンドを クエリ ペイン にコピーし、[ 実行] を選択します。 これにより、作成したテーブルまたはテーブルを含むデータベースに対する ストリーミング インジェスト ポリシー が定義されます。

    ヒント

    データベース レベルで定義されたポリシーは、データベース内のすべての既存のテーブルと将来のテーブルに適用されます。

    • 作成したテーブルにポリシーを定義するには、次の値を使用します。

      .alter table TestTable policy streamingingestion enable
      
    • 作成したテーブルを含むデータベースにポリシーを定義するには、次の値を使用します。

      .alter database StreamingTestDb policy streamingingestion enable
      

データ エクスプローラー プールにデータを取り込むためのストリーミング インジェスト アプリケーションを作成する

任意の言語を使用してデータ エクスプローラー プールにデータを取り込むためのアプリケーションを作成します。 poolPath 変数の場合は、「前提条件」でメモしたクエリ エンドポイントを使用します。

using Kusto.Data;
using Kusto.Ingest;
using System.IO;
using Kusto.Data.Common;

namespace StreamingIngestion
{
    class Program
    {
        static void Main(string[] args)
        {
            string poolPath = "https://<Poolname>.<WorkspaceName>.kusto.windows.net";
            string appId = "<appId>";
            string appKey = "<appKey>";
            string appTenant = "<appTenant>";
            string dbName = "<dbName>";
            string tableName = "<tableName>";

            // Create Kusto connection string with App Authentication
            var csb =
                new KustoConnectionStringBuilder(poolPath)
                    .WithAadApplicationKeyAuthentication(
                        applicationClientId: appId,
                        applicationKey: appKey,
                        authority: appTenant
                    );

            // Create a disposable client that will execute the ingestion
            using (IKustoIngestClient client = KustoIngestFactory.CreateStreamingIngestClient(csb))
            {
                // Initialize client properties
                var ingestionProperties =
                    new KustoIngestionProperties(
                        databaseName: dbName,
                        tableName: tableName
                    );

                // Ingest from a compressed file
                var fileStream = File.Open("MyFile.gz", FileMode.Open);
                // Create source options
                var sourceOptions = new StreamSourceOptions()
                {
                    CompressionType = DataSourceCompressionType.GZip,
                };
                // Ingest from stream
                var status = client.IngestFromStreamAsync(fileStream, ingestionProperties, sourceOptions).GetAwaiter().GetResult();
            }
        }
    }
}

データ エクスプローラー プールでストリーミング インジェストを無効にする

警告

ストリーミング インジェストの無効化には数時間かかる場合があります。

データ エクスプローラー プールでストリーミング インジェストを無効にする前に、関連するすべてのテーブルとデータベースから ストリーミング インジェスト ポリシー を削除します。 ストリーミング インジェスト ポリシーを削除すると、データ エクスプローラー プール内のデータ再配置がトリガーされます。 ストリーミング インジェスト データは、最初のストレージから列ストア内の永続的ストレージ (エクステントまたはシャード) に移動されます。 このプロセスは、初期ストレージ内のデータ量に応じて、数秒から数時間かかる場合があります。

ストリーミング インジェスト ポリシーを削除する

ストリーミング インジェスト ポリシーは、Azure Synapse Studio または Azure portal を使用して削除できます。

  1. Synapse Studio の左側のウィンドウで、 [開発] を選択します。

  2. [KQL スクリプト] で、[+] (新しいリソースの追加) >[KQL スクリプト] を選びます。 右側のウィンドウで、スクリプト名を指定できます。

  3. [接続先] メニューで、[contosodataexplorer] を選択します。

  4. [データベースの使用] メニューで、 [TestDatabase] を選択します。

  5. 次のコマンドを貼り付け、 [実行] を選択してテーブルを作成します。

    .delete table TestTable policy streamingingestion
    
  6. Azure portal で、データ エクスプローラー プールに移動します。

  7. [設定] で、[構成] を選択します。

  8. [構成] ウィンドウで、[オン] を選択してストリーミング インジェストを有効にします。

  9. 保存 を選択します。

制限事項

  • データベース 自体またはそのテーブルに ストリーミング インジェスト ポリシー が定義され、有効になっている場合、データベース カーソルはデータベースでサポートされません。
  • ストリーミング インジェストで使用するには、データ マッピング事前に作成する必要があります。 個々のストリーミング インジェスト要求は、インライン データ マッピングには対応していません。
  • ストリーミング インジェスト データにエクステント タグを設定することはできません。
  • ポリシーを更新します。 更新ポリシーでは、ソース テーブルに新しく取り込まれたデータのみを参照でき、データベース内の他のデータやテーブルは参照できません。
  • データベースのいずれかのテーブルでストリーミング インジェストが使用されている場合、このデータベースをフォロワー データベースのリーダーとして、または Azure Synapse Analytics データ共有のデータ プロバイダーとして使用することはできません。

次のステップ