Output di Analisi di flusso di Azure in Azure Cosmos DBAzure Stream Analytics output to Azure Cosmos DB

L'analisi di flusso può usare Azure Cosmos DB per l'output JSON, consentendo l'esecuzione di query di archiviazione dei dati e a bassa latenza su dati JSON non strutturati.Stream Analytics can target Azure Cosmos DB for JSON output, enabling data archiving and low-latency queries on unstructured JSON data. Questo documento descrive alcune procedure consigliate per l'implementazione di questa configurazione.This document covers some best practices for implementing this configuration.

Se non si ha familiarità con Cosmos DB, vedere l'articolo che descrive il percorso di apprendimento di Azure Cosmos DB per un’introduzione.For those who are unfamiliar with Cosmos DB, take a look at Azure Cosmos DB’s learning path to get started.

Nota

Ad oggi, Analisi di flusso di Azure supporta solo la connessione ad Azure Cosmos DB tramite l'API SQL.At this time, Azure Stream Analytics only supports connection to Azure Cosmos DB using SQL API. Altre API di Azure Cosmos DB non sono ancora supportate.Other Azure Cosmos DB APIs are not yet supported. Se Analisi di flusso di Azure punta agli account Azure Cosmos DB creati con altre API, i dati potrebbero non essere archiviati correttamente.If you point Azure Stream Analytics to the Azure Cosmos DB accounts created with other APIs, the data might not be properly stored.

Nozioni di base di Cosmos DB come destinazione di outputBasics of Cosmos DB as an output target

L'output di Azure Cosmos DB nell'analisi di flusso consente la scrittura dei risultati di elaborazione del flusso come output JSON nelle raccolte di Cosmos DB.The Azure Cosmos DB output in Stream Analytics enables writing your stream processing results as JSON output into your Cosmos DB collection(s). Analisi di flusso di Azure non crea raccolte nel database, ma ne richiede la creazione anticipata da parte dell'utente.Stream Analytics doesn't create collections in your database, instead requiring you to create them upfront. In questo modo, i costi di fatturazione delle raccolte di Cosmos DB vengono controllati dall'utente ed è possibile ottimizzare direttamente le prestazioni, la coerenza e la capacità delle raccolte usando le API di Cosmos DB.This is so that the billing costs of Cosmos DB collections are controlled by you, and so that you can tune the performance, consistency, and capacity of your collections directly using the Cosmos DB APIs.

Di seguito sono descritte alcune delle opzioni per le raccolte di Cosmos DB.Some of the Cosmos DB collection options are detailed below.

Ottimizzare coerenza, disponibilità e latenzaTune consistency, availability, and latency

In base ai requisiti dell'applicazione, Azure Cosmos DB consente di ottimizzare il database e le raccolte e di bilanciare coerenza, disponibilità e latenza.To match your application requirements, Azure Cosmos DB allows you to fine tune the database and collections and make trade-offs between consistency, availability, and latency. A seconda dei livelli di coerenza di lettura richiesti dello scenario rispetto alla latenza di lettura e scrittura, è possibile scegliere un livello di coerenza per l'account del database.Depending on what levels of read consistency your scenario needs against read and write latency, you can choose a consistency level on your database account. Per impostazione predefinita, Azure Cosmos DB consente anche l'indicizzazione sincrona per ogni operazione CRUD nella raccolta.Also by default, Azure Cosmos DB enables synchronous indexing on each CRUD operation to your collection. Si tratta di un'altra opzione utile per controllare le prestazioni di lettura/scrittura di Azure Cosmos DB.This is another useful option to control the write/read performance in Azure Cosmos DB. Per altre informazioni, rivedere l'articolo relativo a come modificare i livelli di coerenza del database e delle query.For more information, review the change your database and query consistency levels article.

Upsert di Analisi di flussoUpserts from Stream Analytics

L'integrazione di Analisi di flusso di Azure con Azure Cosmos DB consente di inserire o aggiornare i record nella raccolta in base a una determinata colonna ID documento.Stream Analytics integration with Azure Cosmos DB allows you to insert or update records in your collection based on a given Document ID column. Questa implementazione è detta anche upsert.This is also referred to as an Upsert.

Analisi di flusso di Azure usa un approccio upsert ottimistico in cui gli aggiornamenti vengono eseguiti solo quando l'inserimento non riesce a causa di un conflitto di ID documento.Stream Analytics uses an optimistic upsert approach, where updates are only done when insert fails with a Document ID conflict. Questo aggiornamento viene eseguito come PATCH, consentendo aggiornamenti parziali al documento, ad esempio l'aggiunta di nuove proprietà o la sostituzione di una proprietà esistente eseguita in modo incrementale.This update is performed as a PATCH, so it enables partial updates to the document, that is, addition of new properties or replacing an existing property is performed incrementally. Le modifiche apportate ai valori delle proprietà di matrice nel documento JSON comportano, tuttavia, la sovrascrittura dell'intera matrice, ovvero non viene eseguito il merge della matrice.However, changes in the values of array properties in your JSON document result in the entire array getting overwritten, that is, the array isn't merged.

Partizionamento dei dati in Cosmos DBData partitioning in Cosmos DB

Azure Cosmos DB con partizionamento senza limiti costituisce l'approccio consigliato per il partizionamento dei dati, in quanto Azure Cosmos DB ridimensiona le partizioni automaticamente in base al carico di lavoro.Azure Cosmos DB unlimited are the recommended approach for partitioning your data, as Azure Cosmos DB automatically scales partitions based on your workload. Durante la scrittura in contenitori senza limiti, Analisi di flusso di Azure usa un numero di writer paralleli uguale a quello usato nel passaggio di query precedente o nello schema di partizionamento di input.When writing to unlimited containers, Stream Analytics uses as many parallel writers as previous query step or input partitioning scheme.

Per le raccolte di Azure Cosmos DB fisse, Analisi di flusso di Azure non consente alcuna possibilità di ridimensionamento se le raccolte sono al completo.For fixed Azure Cosmos DB collections, Stream Analytics allows no way to scale up or out once they're full. Tali raccolte hanno un limite massimo di 10 GB e velocità effettiva di 10.000 UR al secondo.They have an upper limit of 10 GB and 10,000 RU/s throughput. Per eseguire la migrazione dei dati da un contenitore fisso a un contenitore senza limiti, ad esempio con una velocità effettiva di almeno 1000 UR al secondo e una chiave di partizione, è necessario usare l'utilità di migrazione dati o la libreria di feed di modifiche.To migrate the data from a fixed container to an unlimited container (for example, one with at least 1,000 RU/s and a partition key), you need to use the data migration tool or the change feed library.

La scrittura in più contenitori fissi verrà deprecata e non costituisce l'approccio consigliato per il ridimensionamento del processo di Analisi di flusso di Azure.Writing to multiple fixed containers is being deprecated and is not the recommended approach for scaling out your Stream Analytics job. Per altre informazioni, vedere Partizionamento e scalabilità in Cosmos DB.The article Partitioning and scaling in Cosmos DB provides further details.

Impostazioni di Cosmos DB per l'output JSONCosmos DB settings for JSON output

La creazione di Cosmos DB come output nell'analisi di flusso genera una richiesta di informazioni, come illustrato di seguito.Creating Cosmos DB as an output in Stream Analytics generates a prompt for information as seen below. Questa sezione fornisce una spiegazione della definizione delle proprietà.This section provides an explanation of the properties definition.

documentdb analisi di flusso schermata di output

CampoField DescrizioneDescription
Alias di outputOutput Alias Alias per fare riferimento a questo output nella query ASAAn alias to refer this output in your ASA query
Nome accountAccount Name Nome o URI endpoint dell'account Azure Cosmos DBThe name or endpoint URI of the Azure Cosmos DB account
Chiave accountAccount Key Chiave di accesso condiviso per l'account Azure Cosmos DBThe shared access key for the Azure Cosmos DB account
DatabaseDatabase Nome del database Azure Cosmos DBThe Azure Cosmos DB database name
Nome raccoltaCollection Name Nome di raccolta per le raccolte da usare.The collection name for the collection to be used. MyCollection è un esempio di input valido. Una raccolta denominata MyCollection deve essere presente.MyCollection is a sample valid input - one collection named MyCollection must exist.
ID documentoDocument ID Facoltativo.Optional. Nome della colonna negli eventi di output usato come chiave univoca su cui devono basarsi le operazioni di inserimento o aggiornamento.The column name in output events used as the unique key on which insert or update operations must be based. Se lasciato vuoto, tutti gli eventi verranno inseriti senza alcuna opzione di aggiornamento.If left empty, all events will be inserted, with no update option.