Configurare l'inserimento in streaming nel cluster Esplora dati di Azure

L’inserimento in streaming è utile per il caricamento dei dati quando è necessaria una bassa latenza tra inserimento e query. Si consideri l'uso di un inserimento in streaming negli scenari seguenti:

  • È obbligatoria una latenza inferiore a un secondo.
  • Per ottimizzare l'elaborazione operativa di molte tabelle in cui il flusso di dati in ogni tabella è relativamente piccolo (pochi record al secondo), ma il volume di inserimento dati complessivo è elevato (migliaia di record al secondo).

Se il flusso di dati in ogni tabella è elevato (oltre 4 GB all'ora), è consigliabile usare l'inserimento in coda.

Per altre informazioni sui diversi metodi di inserimento, vedere Panoramica dell'inserimento dati.

Per esempi di codice basati sulle versioni precedenti dell'SDK, vedere l'articolo archiviato.

Scegliere il tipo di inserimento in streaming appropriato

Sono supportati due tipi di inserimento in streaming:

Tipo di inserimento Descrizione
Connessione dati Hub eventi, hub IoT e connessioni dati di Griglia di eventi possono usare l'inserimento in streaming, purché sia abilitato a livello di cluster. La decisione di usare l'inserimento in streaming viene eseguita in base ai criteri di inserimento di streaming configurati nella tabella di destinazione.
Per informazioni sulla gestione delle connessioni dati, vedere Hub eventi, hub IoT e Griglia di eventi.
Inserimento personalizzato Per l'inserimento personalizzato è necessario scrivere un'applicazione che usa una delle librerie client di Azure Esplora dati.
Usare le informazioni contenute in questo argomento per configurare l'inserimento personalizzato. Anche l'applicazione di esempio di inserimento in streaming C# può risultare utile.

Usare la tabella seguente per scegliere il tipo di inserimento appropriato per l'ambiente di utilizzo:

Criterio Connessione dati Inserimento personalizzato
Ritardo dei dati tra l'avvio dell'inserimento e la disponibilità dei dati per la query Ritardo più lungo Ritardo più breve
Sovraccarico di sviluppo Configurazione rapida e semplice, senza sovraccarico di sviluppo Sovraccarico elevato di sviluppo per creare un'applicazione per inserire i dati, gestire gli errori e garantire la coerenza dei dati

Nota

È possibile gestire il processo per abilitare e disabilitare l'inserimento in streaming nel cluster usando il portale di Azure o a livello di codice in C#. Se si usa C# per l'applicazione personalizzata, è possibile che sia più utile usare l'approccio programmatico.

Prerequisiti

Considerazioni sulle prestazioni e sulle operazioni

I collaboratori principali che possono influire sull'inserimento in streaming sono:

  • Dimensioni della macchina virtuale e del cluster: le prestazioni e la capacità di inserimento di streaming aumentano le dimensioni delle macchine virtuali e del cluster. Il numero di richieste di inserimento simultanee è limitato a sei per core. Ad esempio, per 16 SKU core, ad esempio D14 e L16, il carico massimo supportato è 96 richieste di inserimento simultanee. Per due SKU core, ad esempio D11, il carico massimo supportato è 12 richieste di inserimento simultanee.
  • Limite di dimensioni dei dati: il limite di dimensioni dei dati per una richiesta di inserimento in streaming è di 4 MB. Sono inclusi tutti i dati creati per i criteri di aggiornamento durante l'inserimento.
  • Aggiornamenti dello schema: gli aggiornamenti dello schema, ad esempio la creazione e la modifica di tabelle e mapping di inserimento, possono impiegare fino a cinque minuti per il servizio di inserimento in streaming. Per altre informazioni, vedere Inserimento in streaming e modifiche allo schema.
  • Capacità SSD: abilitando l'inserimento di streaming in un cluster, anche quando i dati non vengono inseriti tramite streaming, usa parte del disco SSD locale dei computer cluster per lo streaming dei dati di inserimento e riduce lo spazio di archiviazione disponibile per la cache ad accesso frequente.

Abilitare l'inserimento in streaming nel cluster

Prima di poter usare l'inserimento in streaming, è necessario abilitare la funzionalità nel cluster e definire un criterio di inserimento di streaming. È possibile abilitare la funzionalità durante la creazione del cluster o aggiungerla a un cluster esistente.

Avviso

Esaminare le limitazioni prima di abilitare l'inserimento in streaming.

Abilitare l'inserimento in streaming durante la creazione di un nuovo cluster

È possibile abilitare l'inserimento in streaming durante la creazione di un nuovo cluster usando il portale di Azure o a livello di codice in C#.

Durante la creazione di un cluster usando la procedura descritta in Creare un cluster e un database di Azure Esplora dati, nella scheda Configurazioni selezionare Inserimento in>streaming attivato.

Abilitare l'inserimento in streaming durante la creazione di un cluster in Azure Esplora dati.

Abilitare l'inserimento in streaming in un cluster esistente

Se si dispone di un cluster esistente, è possibile abilitare l'inserimento in streaming usando il portale di Azure o a livello di codice in C#.

  1. Nel portale di Azure passare a cluster di Esplora dati di Azure.

  2. In Impostazioniselezionare Configurazioni.

  3. Nel riquadro Configurazioni selezionare On per abilitare l'inserimento in streaming.

  4. Seleziona Salva.

    Attivare l'inserimento in streaming in Azure Esplora dati.

Creare una tabella di destinazione e definire i criteri

Creare una tabella per ricevere i dati di inserimento in streaming e definirne i criteri correlati usando il portale di Azure o a livello di codice in C#.

  1. Nella portale di Azure passare al cluster.

  2. Seleziona Query.

    Selezionare query nel portale di Azure Esplora dati per abilitare l'inserimento in streaming.

  3. Per creare la tabella che riceverà i dati tramite l'inserimento in streaming, copiare il comando seguente nel riquadro Query e selezionare Esegui.

    .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
    

    Creare una tabella per l'inserimento in streaming in Azure Esplora dati.

  4. Copiare uno dei comandi seguenti nel riquadro Query e selezionare Esegui. In questo modo vengono definiti i criteri di inserimento in streaming nella tabella creata o nel database che contiene la tabella.

    Suggerimento

    Un criterio definito a livello di database si applica a tutte le tabelle esistenti e future presenti nel database. Quando si abilitano i criteri a livello di database, non è necessario abilitarlo per ogni tabella.

    • Per definire i criteri nella tabella creata, usare:

      .alter table TestTable policy streamingingestion enable
      
    • Per definire i criteri nel database contenente la tabella creata, usare:

      .alter database StreamingTestDb policy streamingingestion enable
      

    Definire i criteri di inserimento di streaming in Azure Esplora dati.

Creare un'applicazione di inserimento di streaming per inserire dati nel cluster

Creare l'applicazione per l'inserimento di dati nel cluster usando la lingua preferita.

using System.IO;
using System.Threading.Tasks;
using Kusto.Data; // Requires Package Microsoft.Azure.Kusto.Data
using Kusto.Data.Common;
using Kusto.Ingest; // Requires Package Microsoft.Azure.Kusto.Ingest
namespace StreamingIngestion;
class Program
{
    static async Task Main(string[] args)
    {
        var clusterPath = "https://<clusterName>.<region>.kusto.windows.net";
        var appId = "<appId>";
        var appKey = "<appKey>";
        var appTenant = "<appTenant>";
        // Create Kusto connection string with App Authentication
        var connectionStringBuilder = new KustoConnectionStringBuilder(clusterPath)
            .WithAadApplicationKeyAuthentication(
                applicationClientId: appId,
                applicationKey: appKey,
                authority: appTenant
            );
        // Create a disposable client that will execute the ingestion
        using var client = KustoIngestFactory.CreateStreamingIngestClient(connectionStringBuilder);
        // Ingest from a compressed file
        var fileStream = File.Open("MyFile.gz", FileMode.Open);
        // Initialize client properties
        var ingestionProperties = new KustoIngestionProperties(databaseName: "<databaseName>", tableName: "<tableName>");
        // Create source options
        var sourceOptions = new StreamSourceOptions { CompressionType = DataSourceCompressionType.GZip, };
        // Ingest from stream
        await client.IngestFromStreamAsync(fileStream, ingestionProperties, sourceOptions);
    }
}

Disabilitare l'inserimento in streaming nel cluster

Avviso

La disabilitazione dell'inserimento in streaming può richiedere alcune ore.

Prima di disabilitare l'inserimento in streaming nel cluster di Azure Esplora dati, eliminare i criteri di inserimento di streaming da tutte le tabelle e i database pertinenti. La rimozione dei criteri di inserimento del flusso attiva la ridisistribuzione dei dati all'interno del cluster di Azure Esplora dati. I dati di inserimento in streaming sono spostati dalla risorsa di archiviazione iniziale a quella di archiviazione permanente nell'archivio colonne (extent o partizioni). Questo processo può richiedere da alcuni secondi a poche ore, a seconda della quantità di dati presenti nella risorsa di archiviazione iniziale.

Rimuovere i criteri di inserimento in streaming

È possibile eliminare i criteri di inserimento di streaming usando il portale di Azure o a livello di codice in C#.

  1. Nella portale di Azure passare al cluster Esplora dati di Azure e selezionare Query.

  2. Per eliminare i criteri di inserimento in streaming dalla tabella, copiare il comando seguente nel riquadro Query e selezionare Esegui.

    .delete table TestTable policy streamingingestion
    

    Eliminare i criteri di inserimento in streaming in Azure Esplora dati.

  3. In Impostazioniselezionare Configurazioni.

  4. Nel riquadro Configurazioni selezionare Off per disabilitare l'inserimento in streaming.

  5. Seleziona Salva.

    Disattivare l'inserimento in streaming in Azure Esplora dati.

Limiti

  • I mapping dei dati devono essere pre-creati per l'uso nell'inserimento in streaming. Le singole richieste di inserimento in streaming non supportano i mapping dei dati inline.
  • Non è possibile impostare i tag extent nei dati di inserimento in streaming.
  • Aggiorna criteri. I criteri di aggiornamento possono fare riferimento solo ai dati appena inseriti nella tabella di origine e non ad altri dati o tabelle nel database.
  • Quando un criterio di aggiornamento con un criterio transazionale ha esito negativo, i tentativi eseguiranno il fallback all'inserimento in batch.
  • Se l'inserimento in streaming è abilitato in un cluster usato come leader per i database follower, l'inserimento di streaming deve essere abilitato nei cluster seguenti per seguire i dati di inserimento in streaming. Lo stesso vale se i dati del cluster vengono condivisi tramite Condivisione dati.