JanusGraph su GKE con Bigtable

I database a grafo possono aiutarti a scoprire insight modellando le entità di dati e le relazioni tra loro. JanusGraph è un database a grafo che supporta l'utilizzo di grandi quantità di dati. Questa pagina presenta 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 è destinato 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. Presuppone che tu abbia familiarità con Google Kubernetes Engine (GKE), i pod Kubernetes, Bigtable e Elasticsearch.

Panoramica

Nella terminologia dei grafici, le entità sono note come nodi o vertici e le relazioni sono note come archi. In JanusGraph, sia i vertici che gli archi possono avere dati associati aggiuntivi resi disponibili tramite le proprietà.

Esempio di un grafico delle proprietà.

L'illustrazione precedente è un esempio di grafico delle proprietà.

I database a grafo ti aiutano a modellare una serie di domini e attività:

  • Social network
  • Transazioni finanziarie (per l'analisi delle frodi)
  • Reti di sistemi fisici o virtuali

Quando crei database grafici, a volte crei milioni o addirittura miliardi di vertici e archi. Quando utilizzi JanusGraph con Bigtable come livello di archiviazione sottostante, puoi eseguire query veloci (note come attraversamenti del grafico) e scalare il livello di archiviazione in modo indipendente in base alle dimensioni e alla velocità effettiva di cui hai bisogno. JanusGraph utilizza anche un backend di indicizzazione inseribile per fornire l'indicizzazione full-text per le proprietà di vertici e archi.

Puoi eseguire il deployment di un'infrastruttura JanusGraph scalabile su GKE utilizzando Elasticsearch come backend di indicizzazione in esecuzione nei pod in un StatefulSet e Bigtable come backend di archiviazione. Al termine, puoi esplorare le relazioni esistenti nei dati del grafico.

Il seguente diagramma mostra l'interazione tra questi elementi.

Deployment di JanusGraph con Bigtable su GKE.

Il diagramma precedente mostra il deployment di JanusGraph su GKE con Elasticsearch e Bigtable.

Dati JanusGraph in Bigtable

I dati dei grafici vengono archiviati da JanusGraph come elenco di adiacenza. Ogni riga rappresenta un vertice, eventuali vertici adiacenti (bordi) e i metadati delle proprietà relativi ai vertici e ai bordi. La chiave di riga è l'identificatore univoco del vertice. Ogni relazione tra il vertice e un altro vertice e qualsiasi proprietà che definisce ulteriormente la relazione vengono memorizzate come colonna di archi o proprietà degli archi. Il qualificatore di colonna e il valore della colonna memorizzano i dati che definiscono il bordo, in conformità con le best practice di Bigtable. Ogni proprietà del vertice viene memorizzata come colonna separata, utilizzando sia il qualificatore di colonna sia il valore della colonna per definire la proprietà.

Il seguente diagramma mostra questa struttura di archiviazione.

Struttura di archiviazione dell'elenco di adiacenza di JanusGraph.

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à e si collega ad altri due vertici tramite due archi separati. Il secondo vertice contiene colonne con due proprietà e un arco.

La seguente illustrazione del modello dei dati logico degli archi dei vertici fornisce alcuni dettagli sui qualificatori e sui valori delle colonne per una colonna di archi o proprietà degli archi.

Colonna di proprietà di archi e archi di JanusGraph.

Per ogni vertice adiacente, una colonna memorizza i metadati relativi a quell'arco. Il qualificatore di colonnaa contiene metadati sulla relazione tra i bordi e sulla direzione del bordo, nonché un puntatore al vertice adiacente. Il valore della colonna contiene l'etichetta del bordo e le eventuali proprietà aggiuntive del bordo. Poiché gli attraversamenti possono essere seguiti in entrambe le direzioni, gli archi vengono memorizzati due volte, una per ogni estremità della relazione tra gli archi. L'archiviazione bidirezionale degli edge aumenta notevolmente le prestazioni di attraversamento, ma comporta alcuni compromessi a causa della ridondanza dello spazio di archiviazione aggiuntivo e delle mutazioni non atomiche degli edge.

Il seguente diagramma mostra il modello dei dati logico di una colonna della proprietà del vertice.

Valori delle colonne JanusGraph per una colonna di proprietà.

L'illustrazione precedente fornisce dettagli sui qualificatori e sui valori delle colonne per una colonna edge.

Ogni proprietà del vertice viene memorizzata 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 lessicografico di Bigtable di righe e qualificatori di colonne per migliorare le prestazioni delle query.

Passaggi successivi