Libreria client di inserimento kusto-procedure consigliateKusto ingest client library - Best practices

Selezionare la versione corretta di IngestClientSelect the right IngestClient flavor

Usare KustoQueuedIngestClient, è la modalità di inserimento dati nativa consigliata.Use KustoQueuedIngestClient, it's the recommended native data ingestion mode. La ragione di questo comportamento è la seguente:Here's why:

  • L'inserimento diretto è Impossibile durante i tempi di inattività del motore, ad esempio durante la distribuzione.Direct ingestion is impossible during engine downtime, such as during deployment. In modalità di inserimento in coda, le richieste vengono mantenute nella coda di Azure e il servizio Gestione dati riproverà in base alle esigenze.In the queued ingestion mode, the requests are persisted to the Azure queue, and the Data Management service will retry as needed.
  • Il servizio Gestione dati impedisce l'overload del motore con le richieste di inserimento.The Data Management service keeps the engine from overloading with ingestion requests. L'override di questo controllo tramite l'inserimento diretto, ad esempio, può influire gravemente sull'inserimento del motore e sulle prestazioni delle query.Overriding this control by using Direct ingestion, for example, can severely affect engine ingestion and query performance.
  • Gestione dati aggrega più richieste di inserimento.Data Management aggregates multiple requests for ingestion. L'aggregazione ottimizza le dimensioni della partizione iniziale (extent) da creare.The aggregation optimizes the size of the initial shard (extent) to be created.
  • Ottenere commenti e suggerimenti su ogni inserimento è facile.Getting feedback about each ingestion is easy.

Evitare di tenere traccia dello stato dell'operazione di inserimentoAvoid tracking ingest operation status

Il rilevamento dello stato delle operazioni di inserimento è utile.Tracking ingest operation status is useful. Tuttavia, per i flussi di dati di volumi di grandi dimensioni, è consigliabile evitare l'attivazione di notifiche positive per ogni richiesta di inserimento.However, for large volume data streams, turning on positive notifications for every ingestion request should be avoided. Questo rilevamento comporta un carico estremo sulle risorse xStore sottostanti che possono comportare una latenza di inserimento maggiore e persino la mancata risposta completa del cluster.Such tracking puts an extreme load on the underlying xStore resources that can lead to increased ingestion latency and even complete cluster non-responsiveness.

Ottimizzazione per la velocità effettivaOptimizing for throughput

L'inserimento funziona meglio se viene eseguito in blocchi di grandi dimensioni.Ingestion works best if done in large chunks.

  • Utilizza le risorse minimeIt consumes the least resources
  • Produce la maggior parte delle partizioni di dati ottimizzate per i PIGNONi e genera le migliori transazioni di datiIt produces the most COGS-optimized data shards, and results in the best data transactions

Si consiglia ai clienti che inseriscono dati con la libreria kusto. inserimento o direttamente nel motore per inviare dati in batch da 100 MB a 1 GB (non compressi)We recommend customers who ingest data with the Kusto.Ingest library or directly into the engine, to send data in batches of 100 MB to 1 GB (uncompressed)

  • Il limite superiore è importante quando si lavora direttamente con il motore di, per ridurre la quantità di memoria usata dal processo di inserimentoThe upper limit is important when working directly with the engine, to help reduce the amount of memory used by the ingestion process

Nota

Quando si usa la KustoQueuedIngestClient classe, i blocchi di dati eccessivamente grandi verranno suddivisi in blocchi più piccoli e questi piccoli blocchi verranno aggregati, a un certo livello, prima di raggiungere il motore.When using the KustoQueuedIngestClient class, overly large blocks of data will be split into smaller chunks, and these small chunks will be aggregated, to a certain degree, before reaching the engine.

  • Anche il limite inferiore per le dimensioni dei dati inseriti è importante, anche se meno critico.The lower limit on ingested data size is also important, although less critical. L'inserimento di dati in batch di piccole dimensioni ogni ora e quindi è ottimale, anche se leggermente meno efficiente rispetto all'utilizzo di batch di grandi dimensioni.Ingesting data in small batches every now and then is perfectly fine, although slightly less efficient than using large batches. La KustoQueuedIngestClient classe risolve anche il problema per i clienti che devono inserire grandi quantità di dati e non possono raggrupparli in blocchi di grandi dimensioni prima di inviarli al motore.The KustoQueuedIngestClient class also solves the problem for customers who need to ingest large amounts of data and can't batch them into large chunks before sending them to the engine.

Altri fattori che influiscono sulla velocità effettiva di inserimentoOther factors that impact ingestion throughput

Più fattori possono influire sulla velocità effettiva di inserimento.Multiple factors can affect ingestion throughput. Quando si pianifica la pipeline di inserimento, assicurarsi di valutare i punti seguenti, che possono avere implicazioni significative sui pignoni.When planning your ingestion pipeline, make sure to evaluate the following points, which can have significant implications on your COGs.

Fattore da considerareFactor for consideration DescriptionDescription
Formato datiData format CSV è il formato più veloce da inserire.CSV is the fastest format to ingest. JSON richiede in genere 2x o 3x più a lungo per lo stesso volume di dati.JSON will typically take 2x or 3x longer for the same volume of data.
Larghezza tabellaTable width Assicurarsi di inserire solo i dati realmente necessari.Make sure that you only ingest data you really need. Più ampia è la tabella, più le colonne dovranno essere codificate e indicizzate e minore è la velocità effettiva.The wider the table, the more columns will need to be encoded and indexed, and the lower the throughput. È possibile controllare i campi da inserire, fornendo un mapping di inserimento.You can control which fields get ingested, by providing an ingestion mapping.
Percorso dei dati di origineSource data location Evitare le letture tra aree per velocizzare l'inserimento.Avoid cross-region reads to speed up the ingestion.
Carico nel clusterLoad on the cluster Quando in un cluster si verifica un carico di query elevato, le inserimenti verranno completate, riducendo la velocità effettiva.When a cluster experiences a high query load, ingestions will take longer to complete, reducing throughput.

Ottimizzazione per ingranaggiOptimizing for COGS

L'uso delle librerie client di Kusto per inserire i dati in Azure Esplora dati rimane l'opzione più economica e affidabile.Using Kusto client libraries to ingest data into Azure Data Explorer remains the cheapest and the most robust option. Invitiamo i nostri clienti a esaminare i metodi di inserimento e a sfruttare i prezzi di archiviazione di Azure che rendono le transazioni BLOB significativamente convenienti.We urge our customers to review their ingestion methods and to take advantage of the Azure Storage pricing that will make blob transactions significantly cost effective.

  • Limitare il numero di blocchi di datiinseriti.Limit the number of ingested data chunks. Per un migliore controllo sui costi di inserimento di Azure Esplora dati e per ridurre la fattura mensile, limitare il numero di blocchi di dati inseriti (file/BLOB/flussi).For better control of your Azure Data Explorer ingestion costs and to reduce your monthly bill, limit the number of ingested data chunks (files/blobs/streams).
  • Inserire grandi blocchi di dati (fino a 1 GB di dati non compressi).Ingest large chunks of data (up to 1GB of uncompressed data). Molti team tentano di raggiungere una bassa latenza inserendo decine di milioni di piccoli blocchi di dati, il che risulta inefficiente e costoso.Many teams attempt to achieve low latency by ingesting tens of millions of tiny chunks of data, which is inefficient and costly.
  • Suddivisione in batch.Batching. Qualsiasi quantità di batch sul lato client può migliorare l'ottimizzazione.Any amount of batching at the client side would improve optimization.
  • Fornire il client kusto. inserimenti con dimensioni dati esatte, non compresse.Provide the Kusto.Ingest client with an exact, uncompressed, data size. Questa operazione potrebbe causare transazioni di archiviazione aggiuntive.Not doing so may cause extra storage transactions.
  • Evitare di inviare dati per l'inserimento con il FlushImmediately flag impostato su true .Avoid sending data for ingestion with the FlushImmediately flag set to true. Evitare inoltre di inviare piccoli blocchi con i ingest-by / drop-by tag impostati.Also, avoid sending small chunks with ingest-by/drop-by tags set. Se si usano questi metodi,:If you use these methods, they'll:
    • Impedisci al servizio di aggregare correttamente i dati durante l'inserimentoprevent the service from properly aggregating the data during ingestion
    • causare transazioni di archiviazione non necessarie dopo l'inserimentocause unnecessary storage transactions following the ingestion
    • influenzare i dentiaffect COGS
    • è probabile che si verifichi un calo delle prestazioni di inserimento o di query del cluster, se usato in maniera eccessivalikely result in degraded ingestion or query performance of your cluster, if used excessively