Che cos'è Azure Cosmos DB per Apache Gremlin?

SI APPLICA A: Gremlin

Azure Cosmos DB è un database NoSQL completamente gestito e relazionale per lo sviluppo di app moderne.

Azure Cosmos DB per Apache Gremlin è un servizio di database a grafo che può essere usato per archiviare gragrafi di grandi dimensioni con miliardi di vertici e archi. È possibile eseguire query nei grafi con una latenza di un millisecondo ed evolvere facilmente la struttura del grafo. L'API per Gremlin è basata su Apache TinkerPop, un framework di elaborazione del grafo che usa il linguaggio di query Gremlin.

Importante

Il motore a grafo di Azure Cosmos DB segue attentamente le specifiche di Apache TinkerPop. Esistono tuttavia alcune differenze nei dettagli di implementazione specifici per Azure Cosmos DB. Alcune funzionalità supportate da Apache TinkerPop non sono disponibili in Azure Cosmos DB. Per altre informazioni sulle funzionalità non supportate, vedere l'articolo compatibilità con Apache TinkerPop .

L'API per Gremlin combina la potenza degli algoritmi di database a grafo con un'infrastruttura gestita altamente scalabile. Questo approccio offre una soluzione univoca e flessibile ai problemi comuni dei dati associati a vincoli relazionali o inflessibili.

Suggerimento

Si vuole provare l'API per Gremlin senza impegno? Creare un account Azure Cosmos DB con Provare gratuitamente Azure Cosmos DB .

Vantaggi dell'API per Gremlin

L'API per Gremlin offre vantaggi aggiuntivi per la compilazione in Azure Cosmos DB:

  • Scalabilità elastica di archiviazione e velocità effettiva: la scalabilità dei grafi nel mondo reale deve superare la capacità di un singolo server. Azure Cosmos DB supporta database a grafo scalabili orizzontalmente che possono avere dimensioni illimitate in termini di archiviazione e velocità effettiva con provisioning. Man mano che aumenta la scalabilità del database a grafo, i dati vengono distribuiti automaticamente usando il partizionamento del grafo.

  • Replica in più aree: Azure Cosmos DB può replicare automaticamente i dati del grafo in qualsiasi area di Azure in tutto il mondo. La replica globale semplifica lo sviluppo delle applicazioni che richiedono l'accesso globale ai dati. Oltre a ridurre al minimo la latenza di lettura e scrittura in qualsiasi parte del mondo, Azure Cosmos DB offre un meccanismo di failover a livello di area gestito dal servizio. Questo meccanismo può garantire la continuità dell'applicazione in rari casi di interruzione del servizio in un'area.

  • Query veloci e attraversamenti con lo standard di query del grafo più diffuso: archiviare vertici e archi eterogenei ed eseguirne query tramite una sintassi Gremlin familiare. Gremlin è un linguaggio di query imperativo e funzionale che offre un'interfaccia avanzata per implementare gli algoritmi per i grafi comuni. L'API per Gremlin consente query avanzate in tempo reale e attraversamenti senza la necessità di specificare hint dello schema, indici secondari o viste. Per altre informazioni, vedere Eseguire query sui grafici usando Gremlin.

  • Database a grafo completamente gestito: Azure Cosmos DB elimina la necessità di gestire le risorse del database e del computer. La maggior parte delle piattaforme esistenti per database a grafo è vincolata dalle limitazioni dell'infrastruttura e spesso richiede un elevato livello di manutenzione per garantire il funzionamento. Trattandosi di un servizio completamente gestito, con Cosmos DB non sono richieste operazioni quali la gestione di macchine virtuali, l'aggiornamento del software di runtime, la gestione del partizionamento orizzontale o della replica o di aggiornamenti complessi del livello dati. Il backup di ogni grafo viene eseguito automaticamente e ogni grafo è protetto da errori nell'area geografica specifica. Questa gestione consente agli sviluppatori di concentrarsi sulla distribuzione del valore dell'applicazione anziché sul funzionamento e sulla gestione dei database a grafo.

  • Indicizzazione automatica: per impostazione predefinita, l'API per Gremlin indicizza automaticamente tutte le proprietà all'interno dei nodi (detti anche vertici) e i bordi del grafico e non prevede né richiede schemi o creazione di indici secondari. Per altre informazioni, vedere Indicizzazione in Azure Cosmos DB.

  • Compatibilità con Apache TinkerPop: l'API per Gremlin supporta lo standard Apache TinkerPop open source. Lo standard Apache TinkerPop offre un ampio ecosistema di applicazioni e librerie che possono essere facilmente integrate con l'API.

  • Livelli di coerenza ottimizzabili: Azure Cosmos DB offre cinque livelli di coerenza ben definiti per ottenere il giusto compromesso tra coerenza e prestazioni per l'applicazione. 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. Questi livelli di coerenza granulari e ben definiti permettono di ottenere un compromesso ottimale tra coerenza, disponibilità e latenza. Per altre informazioni, vedere Livelli di coerenza dei dati ottimizzabili in Azure Cosmos DB.

Scenari comuni per l'API per Gremlin

Ecco alcuni scenari in cui il supporto di Graph di Azure Cosmos DB può risultare utile:

  • Social network/Customer 365: combinando i dati sui clienti e le relative interazioni con altre persone, è possibile sviluppare esperienze personalizzate, prevedere il comportamento dei clienti o connettere persone con altri interessi simili. Azure Cosmos DB consente di gestire le social network e tenere traccia dei dati e delle preferenze dei clienti.

  • Motori di raccomandazione: questo scenario viene comunemente usato nel settore delle vendite al dettaglio. Combinando informazioni su prodotti, utenti e interazioni utente come acquisti, esplorazioni o valutazioni di un elemento, è possibile generare raccomandazioni personalizzate. La bassa latenza, il ridimensionamento elastico, il supporto nativo per grafi fanno di Azure Cosmos DB la scelta ideale per questi scenari.

  • Geospaziale: molte applicazioni nelle telecomunicazioni, nella logistica e nella pianificazione dei viaggi devono trovare una posizione di interesse all'interno di un'area o individuare il percorso più breve/ottimale tra due località. Azure Cosmos DB è una scelta ideale in questi scenari.

  • Internet delle cose: con la rete e le connessioni tra dispositivi IoT modellati come grafico, è possibile comprendere meglio lo stato dei dispositivi e degli asset. e come le modifiche apportate in una parte della rete possono potenzialmente influire su un'altra parte.

Introduzione ai database a grafo

I dati presenti nel mondo reale vengono connessi in modo naturale. La modellazione dei dati tradizionale è incentrata sulla definizione di entità separatamente e sul calcolo delle rispettive relazioni in fase di esecuzione. Anche se questo modello presenta dei vantaggi, la gestione dei vincoli posti da dati molto connessi può risultare complessa.

L'approccio con database a grafo si basa invece su relazioni persistenti nel livello archiviazione, con conseguente efficienza elevata delle operazioni di recupero del grafo. L'API per Gremlin supporta il modello del grafo delle proprietà.

Oggetti del grafo di proprietà

Un grafo di proprietà è una struttura composta da vertici e archi. Entrambi gli oggetti possono avere un numero arbitrario di coppie chiave-valore come proprietà.

  • Vertici/nodi: i vertici indicano entità discrete, ad esempio una persona, un luogo o un evento.

  • Archi/relazioni: gli archi indicano relazioni tra vertici. Ad esempio, una persona potrebbe conoscere un'altra persona, essere coinvolta in un evento o di recente in una posizione.

  • Proprietà: proprietà esprimono informazioni (o metadati) sui vertici e gli archi. Può esistere un numero qualsiasi di proprietà nei vertici o negli archi ed è possibile usarle per descrivere e filtrare gli oggetti in una query. Sono esempi di proprietà un vertice con nome ed età o un arco con un timestamp e/o un peso.

  • Etichetta - Un'etichetta è un nome o l'identificatore di un vertice o di un arco. Le etichette possono raggruppare più vertici o archi in modo che tutti quelli di un gruppo abbiano una specifica etichetta. Ad esempio, un grafico può avere più vertici con un'etichetta "person".

I database a grafo sono spesso inclusi nella categoria NoSQL o database non relazionale, poiché non esiste alcuna dipendenza da uno schema o da un modello di dati vincolato. Questa mancanza dello schema consente la modellazione e l'archiviazione di strutture collegate in modo naturale ed efficiente.

Esempio di un database a grafo

Verrà ora usato un grafo di esempio per comprendere come le query possono essere espresse in Gremlin. La figura seguente illustra un'applicazione aziendale che gestisce i dati su utenti, interessi e dispositivi sotto forma di grafo.

Grafico delle proprietà di esempio che mostra persone, dispositivi e interessi.

Questo grafico include i tipi di vertice seguenti. Questi tipi sono detti anche etichette in Gremlin:

  • Persone: il grafico ha tre persone; Robin, Thomas e Ben.

  • Interessi: i loro interessi, in questo esempio, includono il gioco del calcio.

  • Dispositivi: i dispositivi usati dagli utenti.

  • Sistemi operativi: i sistemi operativi in cui vengono eseguiti i dispositivi.

  • Luogo: il luogo in cui si accede ai dispositivi.

Per rappresentare le relazioni tra queste entità si usano i tipi di archi seguenti:

  • Sa: rappresentare la familiarità. Ad esempio, "Thomas conosce Robin".

  • Interessato: rappresentare gli interessi delle persone nel grafico. Ad esempio, "Ben è interessato al calcio".

  • RunsOS: rappresenta il sistema operativo eseguito da un dispositivo. Ad esempio, "Laptop esegue il sistema operativo Windows".

  • Usa: rappresenta il dispositivo usato da una persona. Ad esempio, "Robin usa un telefono Motorola con numero di serie 77".

  • Posizione: rappresenta la posizione a cui si accede ai dispositivi.

La console Gremlin è un terminale interattivo fornito da Apache TinkerPop, che si usa per interagire con i dati del grafo. Per altre informazioni, vedere la guida introduttiva alla console Gremlin. È anche possibile eseguire queste operazioni usando i driver Gremlin nella piattaforma di propria scelta (Java, Node.js, Python o .NET). Gli esempi seguenti illustrano come eseguire query sui dati di questo grafo usando la console Gremlin.

Esaminiamo prima di tutto la creazione, la lettura, l'aggiornamento e l'eliminazione (CRUD). L'istruzione Gremlin seguente inserisce il verticeThomas nel grafico con alcune proprietà:

g.addV('person').
  property('id', 'thomas.1').
  property('firstName', 'Thomas').
  property('lastName', 'Andersen').
  property('age', 44)

Suggerimento

Se si segue insieme a questi esempi, è possibile usare una di queste proprietà (age, firstName, lastName) come chiave di partizione quando si crea il grafico. La id proprietà non è supportata come chiave di partizione in un grafico.

Successivamente, l'istruzione Gremlin seguente inserisce un bordo noto tra Thomas e Robin.

g.V('thomas.1').
  addE('knows').
  to(g.V('robin.1'))

La query seguente restituisce i vertici delle persone in ordine decrescente dei nomi seguenti:

g.V().
  hasLabel('person').
  order().
  by('firstName', decr)

I grafi sono eccellenti quando è necessario rispondere a domande come "Quali sistemi operativi usano gli amici di Thomas?". È possibile eseguire questo attraversamento Gremlin per ottenere informazioni dal grafo:

g.V('thomas.1').
  out('knows').
  out('uses').
  out('runsos').
  group().
  by('name').
  by(count())

Passaggi successivi