Introduzione ad Azure Cosmos DB: API GraphIntroduction to Azure Cosmos DB: Graph API

Azure Cosmos DB è il servizio di database multimodello distribuito a livello globale di Microsoft per applicazioni cruciali.Azure Cosmos DB is the globally distributed, multimodel database service from Microsoft for mission-critical applications. Azure Cosmos DB include le funzionalità seguenti, che sono tutte supportate da Contratti di servizio leader del settore:Azure Cosmos DB provides the following features, which are all backed by industry-leading SLAs:

Azure Cosmos DB indicizza automaticamente i dati senza che sia necessario gestire manualmente indici e schemi.Azure Cosmos DB automatically indexes data without requiring you to deal with schema and index management. Si tratta di un database multimodello che supporta modelli di dati di tipo documento, coppia chiave-valore, grafo e colonna.It is multimodel and supports document, key-value, graph, and columnar data models.

È consigliabile guardare prima di tutto il video seguente, in cui Kirill Gavrylyuk illustra come iniziare a usare i grafi in Azure Cosmos DB:We recommend that you watch the following video, where Kirill Gavrylyuk explains how to get started with graphs on Azure Cosmos DB:

L'API Graph di Azure Cosmos DB fornisce:The Azure Cosmos DB Graph API provides:

  • Modellazione di grafi.Graph modeling.
  • API di attraversamento.Traversal APIs.
  • Distribuzione globale chiavi in mano.Turnkey global distribution.
  • Scalabilità elastica dell'archiviazione e della velocità effettiva con latenze di lettura inferiori a 10 ms e inferiori a 15 ms al 99° percentile.Elastic scaling of storage and throughput with less than 10 ms read latencies and less than 15 ms at the 99th percentile.
  • Indicizzazione automatica con disponibilità di query immediata.Automatic indexing with instant query availability.
  • Livelli di coerenza regolabili.Tunable consistency levels.
  • Contratti di servizio completi con disponibilità del 99,99% per tutti gli account in una singola area e tutti gli account in più aree con coerenza media e con disponibilità in lettura del 99,999% per tutti gli account di database in più aree.Comprehensive SLAs, including a 99.99% availability SLA for all single region accounts and all multi-region accounts with relaxed consistency, and 99.999% read availability on all multi-region database accounts.

Per eseguire query in DB Cosmos Azure, è possibile utilizzare il linguaggio di attraversamento grafo Apache TinkerPop, Gremlin o altri sistemi di grafi compatibili con TinkerPop come Apache Spark GraphX.To query Azure Cosmos DB, you can use the Apache TinkerPop graph traversal language, Gremlin, or other TinkerPop-compatible graph systems like Apache Spark GraphX.

Questo articolo fornisce una panoramica dell'API Graph di Azure Cosmos DB e spiega come usarla per archiviare grafi di grandi dimensioni con miliardi di vertici e bordi.This article provides an overview of the Azure Cosmos DB Graph API and explains how you can use it to store massive graphs with billions of vertices and edges. È possibile eseguire query nei grafi con una latenza di un millisecondo ed evolvere facilmente la struttura e lo schema del grafo.You can query the graphs with millisecond latency and evolve the graph structure and schema easily.

Database del grafoGraph database

I dati presenti nel mondo reale vengono connessi in modo naturale.Data as it appears in the real world is naturally connected. La modellazione di dati tradizionale si basa sul concetto di entità.Traditional data modeling focuses on entities. Per molte applicazioni sussiste anche la necessità di modellare sia le entità che le relazioni in modo naturale.For many applications, there's also a need to model or to model both entities and relationships naturally.

Un grafo è una struttura composta da vertici e bordi.A graph is a structure that's composed of vertices and edges. I vertici e gli archi possono avere un numero arbitrario di proprietà.Both vertices and edges can have an arbitrary number of properties. I vertici identificano oggetti distinti, ad esempio una persona, un luogo o un evento.Vertices denote discrete objects, such as a person, a place, or an event. Gli archi indicano le relazioni tra i vertici.Edges denote relationships between vertices. Ad esempio, una persona potrebbe conoscere un'altra persona, essere coinvolta in un evento e recentemente essersi trovata in una determinata posizione.For example, a person might know another person, be involved in an event, and recently been at a location. Le proprietà indicano le informazioni su vertici e archi.Properties express information about the vertices and edges. Le proprietà di esempio includono un vertice con un nome, un'età e un bordo, che ha un timestamp e/o un peso.Example properties include a vertex that has a name, age, and edge, which has a time stamp and/or a weight. Ufficialmente questo modello è noto come grafo di proprietà.More formally, this model is known as a property graph. Azure Cosmos DB supporta il modello di grafo di proprietà.Azure Cosmos DB supports the property graph model.

Il grafo di esempio seguente, ad esempio, mostra le relazioni tra le persone, i dispositivi mobili, gli interessi e i sistemi operativi:For example, the following sample graph shows relationships among people, mobile devices, interests, and operating systems:

Database di esempio che mostra persone, dispositivi e interessi

I grafi sono utili per comprendere un'ampia gamma di set di dati in ambito scientifico, tecnologico e commerciale.Graphs are useful to understand a wide range of datasets in science, technology, and business. I database di grafi consentono di modellare e archiviare grafi in modo naturale e sono quindi una scelta ottimale in molti scenari.Graph databases let you model and store graphs naturally and efficiently, which makes them useful for many scenarios. I database di grafi sono in genere database NoSQL perché questi casi di utilizzo spesso necessitano anche di un'iterazione rapida e di uno schema flessibile.Graph databases are typically NoSQL databases because these use cases often also need schema flexibility and rapid iteration.

I grafi offrono una tecnica di modellazione dei dati potente e innovativa.Graphs offer a novel and powerful data modeling technique. Questo fatto da solo non giustifica l'uso di un database di grafi.But this fact by itself is not a sufficient reason to use a graph database. Per molti casi di utilizzo e pattern che includono attraversamenti di grafi, questi ultimi offrono prestazioni migliori rispetto ai database NoSQL e SQL tradizionali di parecchi ordini di grandezza.For many use cases and patterns that involve graph traversals, graphs outperform traditional SQL and NoSQL databases by orders of magnitude. Questa differenza a livello di prestazioni aumenta ulteriormente quando si attraversano più relazioni, ad esempio un amico di un amico.This difference in performance is further amplified when traversing more than one relationship, like friend-of-a-friend.

È possibile combinare gli attraversamenti rapidi forniti dai database di grafi con algoritmi di grafi, ad esempio la ricerca in profondità, la ricerca in ampiezza e l'algoritmo di Dijkstra, per risolvere i problemi in vari domini come i social network, la gestione di contenuti, la geospazialità e le raccomandazioni.You can combine the fast traversals that graph databases provide with graph algorithms, like depth-first search, breadth-first search, and Dijkstra's algorithm, to solve problems in various domains like social networking, content management, geospatial, and recommendations.

Grafi a scalabilità globale con Azure Cosmos DBPlanet-scale graphs with Azure Cosmos DB

Azure Cosmos DB è un database di grafi completamente gestito che consente distribuzione globale, scalabilità elastica in termini di archiviazione e velocità effettiva, query e indicizzazione automatica, livelli di coerenza regolabili e supporto per lo standard TinkerPop.Azure Cosmos DB is a fully managed graph database that offers global distribution, elastic scaling of storage and throughput, automatic indexing and query, tunable consistency levels, and support for the TinkerPop standard.

Architettura di grafi di Azure Cosmos DB

Azure Cosmos DB offre le seguenti funzionalità specifiche rispetto ad altri database di grafi disponibili sul mercato:Azure Cosmos DB offers the following differentiated capabilities when compared to other graph databases in the market:

  • Archiviazione e velocità effettiva altamente scalabileElastically scalable throughput and storage

    La scalabilità dei grafi nel mondo reale deve superare la capacità di un singolo server.Graphs in the real world need to scale beyond the capacity of a single server. Con Azure Cosmos DB la scalabilità dei grafi può essere ottenuta facilmente tra più server.With Azure Cosmos DB, you can scale your graphs seamlessly across multiple servers. È anche possibile scalare la velocità effettiva del grafo in modo indipendente in base ai modelli di accesso.You can also scale the throughput of your graph independently based on your access patterns. Azure Cosmos DB supporta i database di grafi che è possono scalare in misura praticamente illimitata a livello di archiviazione e velocità effettiva con provisioning.Azure Cosmos DB supports graph databases that can scale to virtually unlimited storage sizes and provisioned throughput.

  • Replica di tipo multiareaMulti-region replication

    Azure Cosmos DB replica in modo trasparente i dati del grafo in tutte le aree associate all'account.Azure Cosmos DB transparently replicates your graph data to all regions that you've associated with your account. La replica consente di sviluppare applicazioni che richiedono l'accesso ai dati globale.Replication enables you to develop applications that require global access to data. Sussistono compromessi in termini di coerenza, disponibilità e prestazioni e garanzie corrispondenti.There are tradeoffs in the areas of consistency, availability, and performance and corresponding guarantees. Azure Cosmos DB fornisce failover regionale trasparente con API multihosting.Azure Cosmos DB provides transparent regional failover with multi-homing APIs. È possibile scalare in modo elastico la velocità effettiva e l'archiviazione su scala globale.You can elastically scale throughput and storage across the globe.

  • Query rapide e attraversamenti con la sintassi Gremlin notaFast queries and traversals with familiar Gremlin syntax

    Archiviare bordi e vertici eterogenei ed eseguire query nei documenti tramite una sintassi Gremlin familiare.Store heterogeneous vertices and edges and query these documents through a familiar Gremlin syntax. Azure Cosmos DB usa una tecnologia di indicizzazione a simultaneità elevata, priva di blocchi e strutturata a log per indicizzare automaticamente l'intero contenuto.Azure Cosmos DB utilizes a highly concurrent, lock-free, log-structured indexing technology to automatically index all content. Questa funzionalità consente di eseguire attraversamenti e query avanzati in tempo reale senza la necessità di specificare hint di schema, indici secondari o visualizzazioni.This capability enables rich real-time queries and traversals without the need to specify schema hints, secondary indexes, or views. Per altre informazioni, vedere Eseguire query sui grafi usando Gremlin.Learn more in Query graphs by using Gremlin.

  • Soluzione completamente gestitaFully managed

    Azure Cosmos DB elimina la necessità di gestire le risorse di database e computer.Azure Cosmos DB eliminates the need to manage database and machine resources. Questo servizio di Microsoft Azure completamente gestito non richiede la gestione di macchine virtuali, la distribuzione e la configurazione di software, la gestione della scalabilità o di complessi aggiornamenti a livello dati.As a fully managed Microsoft Azure service, you don't need to manage virtual machines, deploy and configure software, manage scaling, or deal with complex data-tier upgrades. Il backup di ogni grafo viene eseguito automaticamente e ogni grafo è protetto da errori nell'area geografica specifica.Every graph is automatically backed up and protected against regional failures. È possibile aggiungere con facilità un account Azure Cosmos DB ed eseguire il provisioning della capacità in base alle esigenze in modo da potersi concentrare sull'applicazione anziché sul funzionamento e sulla gestione del database.You can easily add an Azure Cosmos DB account and provision capacity as you need it so that you can focus on your application instead of operating and managing your database.

  • Indicizzazione automaticaAutomatic indexing

    Per impostazione predefinita, Azure Cosmos DB indicizza automaticamente tutte le proprietà all'interno di nodi e bordi nel grafo e non prevede né richiede schemi o la creazione di indici secondari.By default, Azure Cosmos DB automatically indexes all the properties within nodes and edges in the graph and doesn't expect or require any schema or creation of secondary indices.

  • Compatibilità con Apache TinkerPopCompatibility with Apache TinkerPop

    Azure Cosmos DB supporta in modo nativo lo standard Gremlin open source e può essere integrato con altri sistemi a grafi che supportano TinkerPop.Azure Cosmos DB natively supports the open-source Apache TinkerPop standard and can be integrated with other TinkerPop-enabled graph systems. In questo modo, è possibile migrare con facilità da un altro database di grafi come Titan o Neo4j o usare Azure Cosmos DB con framework di analisi dei grafi come Apache Spark GraphX.So, you can easily migrate from another graph database, like Titan or Neo4j, or use Azure Cosmos DB with graph analytics frameworks like Apache Spark GraphX.

  • Livelli di coerenza regolabiliTunable consistency levels

    È possibile scegliere tra cinque livelli di coerenza ben definiti per ottenere un compromesso ottimale tra coerenza e prestazioni.Select from five well-defined consistency levels to achieve optimal tradeoff between consistency and performance. Per query e operazioni di lettura, Azure Cosmos DB offre cinque livelli di coerenza distinti, ovvero avanzata, con decadimento ristretto, sessione, prefisso coerente e futura.For queries and read operations, Azure Cosmos DB offers five distinct consistency levels: strong, bounded-staleness, session, consistent prefix, and eventual. Questi livelli di coerenza granulari e ben definiti permettono di ottenere un compromesso ottimale tra coerenza, disponibilità e latenza.These granular, well-defined consistency levels allow you to make sound tradeoffs among consistency, availability, and latency. Ulteriori informazioni sono disponibili in Utilizzo dei livelli di coerenza per ottimizzare la disponibilità e le prestazioni di DocumentDB.Learn more in Using consistency levels to maximize availability and performance in DocumentDB.

Azure Cosmos DB consente anche di usare più modelli, come il documento e il grafo all'interno degli stessi contenitori/database.Azure Cosmos DB also can use multiple models, like document and graph, within the same containers/databases. È possibile usare una raccolta di documenti per archiviare i dati del grafico in modo affiancato con documenti.You can use a document collection to store graph data side by side with documents. È possibile utilizzare query SQL su JSON e query Gremlin per eseguire query sugli stessi dati come grafo.You can use both SQL queries over JSON and Gremlin queries to query the same data as a graph.

IntroduzioneGet started

È possibile usare l'interfaccia della riga di comando di Azure (CLI), Azure PowerShell o il portale di Azure con il supporto per l'API Graph per creare account Azure Cosmos DB.You can use the Azure command-line interface (CLI), Azure PowerShell, or the Azure portal with support for graph API to create Azure Cosmos DB accounts. Dopo aver creato gli account, il portale di Azure fornisce un endpoint di servizio https://<youraccount>.graphs.azure.com che offre un front-end WebSocket per Gremlin.After you create accounts, the Azure portal provides a service endpoint, like https://<youraccount>.graphs.azure.com, that provides a WebSocket front end for Gremlin. È possibile configurare gli strumenti compatibili con TinkerPop, come la console di Gremlin, per connettersi a questo endpoint e compilare applicazioni in Java, Node.js o un qualsiasi driver client Gremlin.You can configure your TinkerPop-compatible tools, like the Gremlin Console, to connect to this endpoint and build applications in Java, Node.js, or any Gremlin client driver.

La tabella seguente illustra i driver Gremlin noti che è possibile usare in Azure Cosmos DB:The following table shows popular Gremlin drivers that you can use against Azure Cosmos DB:

ScaricareDownload DocumentazioneDocumentation
JavaJava JavaDoc GremlinGremlin JavaDoc
Node.jsNode.js Gremlin-JavaScript in GithubGremlin-JavaScript on Github
Console GremlinGremlin console Documenti TinkerPopTinkerPop docs

Azure Cosmos DB fornisce anche una libreria .NET con metodi di estensione Gremlin oltre agli Azure Cosmos DB SDK tramite NuGet.Azure Cosmos DB also provides a .NET library that has Gremlin extension methods on top of the Azure Cosmos DB SDKs via NuGet. Questa libreria fornisce un server Gremlin "in-process" che è possibile usare per connettersi direttamente alle partizioni di dati DocumentDB.This library provides an "in-process" Gremlin server that you can use to connect directly to DocumentDB data partitions.

ScaricareDownload DocumentazioneDocumentation
.NET.NET Microsoft.Azure.GraphsMicrosoft.Azure.Graphs

Se si usa l'emulatore Azure Cosmos DB, è possibile usare anche l'API .NET Graph per sviluppare e testare in locale senza creare una sottoscrizione di Azure o sostenere costi.By using the Azure Cosmos DB Emulator, you can use the .NET Graph API above to develop and test locally without creating an Azure subscription or incurring any costs. Quando si è soddisfatti del funzionamento dell'applicazione nell'emulatore, è possibile iniziare a usare l'account Azure Cosmos DB nel cloud.When you're satisfied with how your application is working in the Emulator, you can switch to using an Azure Cosmos DB account in the cloud.

Nota

Il supporto per la convalida di query Gremlin rispetto all'emulatore di Azure Cosmos DB è disponibile solo tramite l'API .NET Graph.Support for validating Gremlin queries against Azure Cosmos DB Emulator is only available via .NET Graph API.

Scenari per il supporto Graph di Azure Cosmos DBScenarios for graph support of Azure Cosmos DB

Ecco alcuni scenari in cui è possibile usare il supporto di Graph di Azure Cosmos DB:Here are some scenarios where graph support of Azure Cosmos DB can be used:

  • Social networkSocial networks

    Combinando i dati sui clienti e le relative interazioni con altri utenti, è possibile sviluppare esperienze personalizzate, prevedere il comportamento dei clienti o connettere gli utenti ad altri utenti con interessi simili.By combining data about your customers and their interactions with other people, you can develop personalized experiences, predict customer behavior, or connect people with others with similar interests. Azure Cosmos DB consente di gestire le social network e tenere traccia dei dati e delle preferenze dei clienti.Azure Cosmos DB can be used to manage social networks and track customer preferences and data.

  • Motore di raccomandazioneRecommendation engines

    Questo scenario viene comunemente usato nel settore della vendita al dettaglio.This scenario is commonly used in the retail industry. Combinando informazioni su prodotti, utenti e interazioni utente come acquisti, esplorazioni o valutazioni di un elemento, è possibile generare raccomandazioni personalizzate.By combining information about products, users, and user interactions, like purchasing, browsing, or rating an item, you can build customized recommendations. La bassa latenza, il ridimensionamento elastico, il supporto nativo per grafi di Azure Cosmos DB è ideale per la modellazione di queste interazioni.The low latency, elastic scale, and native graph support of Azure Cosmos DB is ideal for modeling these interactions.

  • GeoSpatialGeospatial

    Molte applicazioni nel settore delle telecomunicazioni, della logistica e della pianificazione di viaggi devono individuare una posizione di interesse all'interno di una determinata area oppure trovare l'itinerario più breve/ottimale tra due posizioni.Many applications in telecommunications, logistics, and travel planning need to find a location of interest within an area or locate the shortest/optimal route between two locations. Azure Cosmos DB è una scelta ideale in questi scenari.Azure Cosmos DB is a natural fit for these problems.

  • Internet delle coseInternet of Things

    Con la rete e le connessioni tra dispositivi IoT modellati come grafo, è possibile comprendere meglio lo stato dei dispositivi e degli assetWith the network and connections between IoT devices modeled as a graph, you can build a better understanding of the state of your devices and assets. e come le modifiche apportate in una parte della rete possono potenzialmente influire su un'altra parte.You also can learn how changes in one part of the network can potentially affect another part.

Passaggi successiviNext steps

Per altre informazioni sul supporto di Graph in Azure Cosmos DB, vedere:To learn more about graph support in Azure Cosmos DB, see: