次の方法で共有


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

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

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

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

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

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

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

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

次の表を使用して、お使いの環境に適したインジェストの種類を選択してください。

条件 イベント ハブ/IoT ハブ カスタム インジェスト
インジェスト開始からクエリでデータが使用可能になるまでのデータ遅延 より長い遅延 より短い遅延
開発のオーバーヘッド 高速で簡単なセットアップ、開発オーバーヘッドなし アプリケーションを作成してデータを取り込み、エラーを処理し、データの一貫性を確保するための高い開発オーバーヘッド

注意

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

前提条件

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

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

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

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

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

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

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

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

      既存のプールの一覧が表示されている [Data Explorer プール] 画面のスクリーンショット。

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

      クエリとデータ インジェストの URI アドレスを示す、データ エクスプローラー プールのプロパティ ペインのスクリーンショット。

操作および運用面の考慮事項

ストリーミング インジェストに影響を与える可能性のある主な要因は、次のとおりです。

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

Data Explorer プールでストリーミング インジェストを有効にする

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

警告

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

新しい Data Explorer プールを作成しているときにストリーミング インジェストを有効にする

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

Synapse Studio を使用した Data Explorer プールの作成」の手順に従って Data Explorer プールを作成するときに、 [追加設定] タブで [ストリーミング インジェスト>が有効] を選択します。

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

既存の Data Explorer プールでストリーミング インジェストを有効にする

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

  1. Azure portal で、Data Explorer プールに移動します。
  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
      

ストリーミング インジェスト アプリケーションを作成して Data Explorer プールにデータを取り込む

希望する言語を使用して、お使いの Data Explorer プールにデータを取り込むためのアプリケーションを作成します。 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();
            }
        }
    }
}

Data Explorer プールでストリーミング インジェストを無効にする

警告

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

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

ストリーミング インジェスト ポリシーをドロップする

ストリーミング インジェスト ポリシーをドロップするには、Azure Synapse Studio または Azure portal を使用します。

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

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

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

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

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

    .delete table TestTable policy streamingingestion
    
  6. Azure portal で、Data Explorer プールに移動します。

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

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

  9. [保存] を選択します。

制限事項

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

次の手順