I database a grafo possono aiutarti a scoprire approfondimenti modellando le entità di dati e le relazioni tra di loro. JanusGraph è un database di grafici che supporta il lavoro con grandi quantità di dati. Questa pagina presenta i concetti che possono aiutarti a eseguire JanusGraph su Google Cloud con Google Kubernetes Engine come piattaforma di orchestrazione e Bigtable come backend di archiviazione.
Il documento è rivolto ad architetti di sistema, amministratori di database e professionisti DevOps interessati a eseguire il database grafico JanusGraph suGoogle Cloud utilizzando Bigtable come backend di archiviazione. Si presume che tu abbia dimestichezza con Google Kubernetes Engine (GKE), Kubernetes Pods, Bigtable, e Elasticsearch.
Panoramica
Nella terminologia dei grafici, le entità sono chiamate nodi o vertici e le relazioni sono chiamate archi. In JanusGraph, sia i vertici sia gli archi possono avere dati associati aggiuntivi resi disponibili tramite le proprietà.
L'illustrazione precedente è un esempio di grafico delle proprietà.
I database di grafo ti aiutano a modellare una serie di domini e attività:
- Social network
- Transazioni finanziarie (per l'analisi delle frodi)
- Reti di sistema fisiche o virtuali
Quando crei database di grafici, a volte crei milioni o addirittura miliardi di vertici ed elementi. Quando utilizzi JanusGraph con Bigtable come livello di archiviazione sottostante, puoi eseguire query rapide (chiamate percorsi del grafo) e scalare il livello di archiviazione in modo indipendente in base alle dimensioni e al throughput di cui hai bisogno. JanusGraph utilizza anche un backend di indicizzazione plug-in per fornire l'indicizzazione integrale delle proprietà di vertici e archi.
Puoi eseguire il deployment di un'infrastruttura JanusGraph scalabile su GKE utilizzando Elasticsearch come backend di indicizzazione in esecuzione in pod in un StatefulSet e Bigtable come backend di archiviazione. Al termine, puoi esaminare le relazioni esistenti nei dati del grafico.
Il seguente diagramma mostra l'interazione tra questi elementi.
Il diagramma seguente mostra il deployment di JanusGraph su GKE con Elasticsearch e Bigtable.
Dati di JanusGraph in Bigtable
I dati del grafico vengono archiviati da JanusGraph come elenco di adiacenze. Ogni riga rappresenta un vertice, eventuali vertici adiacenti (lati) e i metadati della proprietà relativi ai vertici e ai lati. La chiave di riga è l'identificatore univoco del vertice. Ogni relazione tra un vertice e un altro vertice e le eventuali proprietà che definiscono ulteriormente la relazione vengono memorizzate come colonna di un arco o di una proprietà dell'arco. Sia il qualificatore di colonna sia il valore della colonna memorizzano i dati che definiscono l'edge, in conformità con le best practice di Bigtable. Ogni proprietà del vertice viene archiviata come colonna separata, utilizzando di nuovo sia il qualificatore di colonna sia il valore della colonna per definire la proprietà.
Il seguente diagramma mostra questa struttura di archiviazione.
Il diagramma mostra la struttura di archiviazione logica per un piccolo frammento di grafico con dettagli logici per due righe di vertici. Nel diagramma, le due righe di esempio rappresentano due vertici. Il primo vertice è etichettato con una singola proprietà vertice ed è collegato ad altri due vertici da due spigoli distinti. Il secondo vertice contiene colonne contenenti due proprietà e un arco.
La seguente illustrazione del modello dei dati logico dell'elemento vertex edge fornisce alcuni dettagli sui valori e sui qualificatori di colonna per una colonna edge o edge-property.
Per ogni vertice adiacente, una colonna memorizza i metadati relativi all'elemento adiacente. Il qualificatore di colonna contiene metadati sulla relazione tra gli spigoli e sulla direzione degli spigoli, nonché un puntatore al vertice adiacente. Il valore della colonna contiene l'etichetta dell'arco e eventuali proprietà aggiuntive dell'arco. Poiché le esplorazioni possono essere seguite in entrambe le direzioni, gli spigoli vengono memorizzati due volte, una per ogni estremità della relazione tra gli spigoli. Lo spazio di archiviazione perimetrale bidirezionale aumenta notevolmente le prestazioni di attraversamento, ma comporta alcuni compromessi dovuti alla ridondanza dello spazio di archiviazione aggiuntivo e alle mutazioni perimetrali non atomiche.
Il seguente diagramma mostra il modello dei dati logico di una colonna della proprietà del vertice.
L'illustrazione precedente fornisce dettagli sui qualificatori e sugli valori delle colonne per una colonna di bordo.
Ogni proprietà del vertice viene archiviata come colonna separata. Il qualificatore di colonna è un identificatore univoco per la chiave della proprietà. Il valore della colonna contiene sia un identificatore per la proprietà sia il valore della proprietà.
JanusGraph si basa anche sull'ordinamento alfabetico di Bigtable delle righe e dei qualificatori di colonna per migliorare le prestazioni delle query.
Passaggi successivi
- Scopri di più su JanusGraph e su database a grafo.
- Scopri il framework di calcolo di grafici Apache TinkerPop ed esplora il linguaggio di percorrenza di grafici Gremlin.
- Scopri di più su come JanusGraph archivia i dati in Bigtable.
- Approfondisci i casi d'uso dei grafici implementando un'applicazione JanusGraph di esempio.