Kusto Ingest ライブラリのベスト プラクティス

この記事では、 Kusto Ingest ライブラリを使用したデータ インジェストのベスト プラクティスについて説明します。

直接インジェストよりもキューに入れられます

運用環境のシナリオでは、キューに登録された取り込みクライアントを使用します。 詳細については、「 キューに登録されたインジェスト 」と「 ダイレクト インジェスト」を参照してください。

単一の取り込みクライアント インスタンスを使用する

Kusto Ingest クライアントの実装は、スレッド セーフで再利用可能です。 ターゲット クラスターごとに、プロセスごとにキューに入れたクライアントまたは直接取り込みクライアントの 1 つのインスタンスを使用します。 複数のインスタンスを実行すると、クラスターが過負荷になり、有効な要求に応答しなくなるか、応答が遅くなる可能性があります。

追跡操作の状態を制限する

大量のデータ ストリームの場合は、インジェスト要求に対する肯定的な通知の使用を制限します。 過剰な追跡により、インジェストの待機時間が長くなり、クラスターの応答性が低下する可能性があります。 詳細については、「操作の 状態」を参照してください。

スループットを最適化する

インジェスト パイプラインを計画するときは、インジェストのスループットに大きな影響を与える可能性があるため、次の要因を考慮してください。

要素 説明
データ サイズ インジェストは、大きなチャンクで行う場合の方が効率的です。 100 MB から 1 GB (非圧縮) のバッチでデータを送信することをお勧めします。
データ形式 CSV は最も高速なインジェスト形式です。 同じ量のデータの場合、JSON には 2 倍または 3 倍の時間がかかる場合があります。 詳細については、「 インジェストでサポートされているデータ形式」を参照してください。
テーブル幅 重要なデータのみを取り込む。 各列をエンコードしてインデックスを作成する必要があります。つまり、より広いテーブルのスループットが低くなる可能性があります。 インジェスト マッピングを提供して、取り込むフィールドを制御します。
ソース データの場所 インジェストを高速化するため、リージョンをまたがる読み取りは避けてください。
クラスターでの負荷 クラスターのクエリ負荷が高い場合、インジェストの完了に時間がかかります。

注意

キューに登録された取り込みクライアントは、大きなデータ セットをチャンクに分割して集計します。これは、インジェストの前にデータをバッチ処理できない場合に便利です。

コストを最適化する

Kusto クライアント ライブラリを使用してクラスターにデータを取り込む方法は、引き続き最も安価で最も堅牢なオプションです。 コストを最適化し、BLOB トランザクションのコスト効率を大幅に高める Azure Storage の価格を利用するために、インジェスト方法を確認することをお勧めします。

コスト効率の高いインジェストの場合:

  • ファイル、BLOB、ストリームなど、取り込まれたデータ チャンクの数を制限します。
  • 最大 1 GB の非圧縮データの大きなチャンクを取り込む。
  • バッチ処理を選択します。
  • 余分なストレージ トランザクションを回避するために、正確で圧縮されていないデータ サイズを指定します。
  • を にtrue設定FlushImmediatelyしないでください。
  • タグまたはdrop-byエクステント タグを使用して少量のデータをingest-by送信しないようにします。

注意

最後の 2 つの方法を過剰に使用すると、データ集計が中断され、余分なストレージ トランザクションが発生し、インジェストとクエリのパフォーマンスが低下する可能性があります。