Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo di Gremlin per accedere ai dati dei grafici in Amazon Neptune
Puoi usare la Gremlin Console per sperimentare grafici e interrogazioni in un ambiente (loop). TinkerPop REPL read-eval-print
I seguenti tutorial descrivono come utilizzare la console di Gremlin per aggiungere vertici, edge, proprietà e altro a un grafo Neptune, oltre a evidenziare alcune differenze nell'implementazione di Gremlin specifica per Neptune.
Nota
Questo esempio presuppone che siano state completate le seguenti operazioni:
Ti sei connesso tramite SSH un'EC2istanza Amazon.
Hai creato un cluster Neptune come descritto in Crea un cluster Neptune.
Hai installato la console di Gremlin come descritto in Installazione della console Gremlin.
Utilizzi la console di Gremlin
-
Cambia directory nelle cartelle in cui vengono decompressi i file della console di Gremlin.
cd apache-tinkerpop-gremlin-console-3.6.5
-
Digita il comando seguente per eseguire la console di Gremlin.
bin/gremlin.sh
Verrà visualizzato l'output seguente:
\,,,/ (o o) -----oOOo-(3)-oOOo----- plugin activated: tinkerpop.server plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin>
Ora ti trovi al prompt
gremlin>
. Immetti i restanti passaggi in questo prompt. -
Al prompt
gremlin>
, immetti quanto segue per connetterti all'istanza database Neptune.:remote connect tinkerpop.server conf/neptune-remote.yaml
-
Al prompt
gremlin>
, immetti quanto segue per passare alla modalità remota. In questo modo tutte le query Gremlin vengono inviate alla connessione remota.:remote console
-
Aggiungi un vertice con etichetta e proprietà.
g.addV('person').property('name', 'justin')
Al vertice viene assegnato un
string
ID contenente unGUID. Tutti i vertici IDs sono stringhe in Neptune. -
Aggiungi un vertice con ID personalizzato.
g.addV('person').property(id, '1').property('name', 'martin')
La proprietà
id
non è indicata. Si tratta di una parola chiave per l'ID del vertice. L'ID del vertice qui indicato è una stringa contenente il numero1
.I nomi di proprietà standard devono essere racchiusi tra virgolette.
-
Cambia la proprietà o aggiungila se non è già stata creata.
g.V('1').property(single, 'name', 'marko')
Qui è possibile modificare la proprietà
name
per il vertice della fase precedente. Questo consente di rimuovere tutti i valori esistenti della proprietàname
.Se non hai specificato
single
, il valore viene aggiunto alla proprietàname
(se ancora non è stato fatto). -
Aggiungi la proprietà, ma aggiungila in coda se dispone già di un valore.
g.V('1').property('age', 29)
Neptune impiega la cardinalità di un insieme come azione predefinita.
Questo comando aggiunge la proprietà
age
con il valore29
, ma non sostituisce i valori esistenti.Se la proprietà
age
disponeva già di un valore, questo comando aggiunge29
in coda alla proprietà. Ad esempio, se la proprietàage
era27
, il nuovo valore è[ 27, 29 ]
. -
Aggiungi più vertici.
g.addV('person').property(id, '2').property('name', 'vadas').property('age', 27).iterate() g.addV('software').property(id, '3').property('name', 'lop').property('lang', 'java').iterate() g.addV('person').property(id, '4').property('name', 'josh').property('age', 32).iterate() g.addV('software').property(id, '5').property('name', 'ripple').property('lang', 'java').iterate() g.addV('person').property(id, '6').property('name', 'peter').property('age', 35)
È possibile inviare più istruzioni contemporaneamente a Neptune.
Le istruzioni possono essere separate da nuove righe (
'\n'
), spazi (' '
), punto e virgola ('; '
) o non essere separate da alcun carattere (ad esempio, l'istruzioneg.addV(‘person’).iterate()g.V()
è valida).Nota
La console di Gremlin invia un comando separato a ogni nuova riga (
'\n'
), di modo che risulteranno essere transazioni distinte. Questo esempio mostra tutti i comandi su righe separate per motivi di leggibilità. Rimuovi i caratteri della nuova riga ('\n'
) per inviarli in un unico comando tramite la console Gremlin.Tutte le istruzioni diverse dall'ultima devono avere una fase di chiusura, ad esempio
.next()
o.iterate()
; in caso contrario non saranno eseguite. La console di Gremlin non richiede queste fasi finali. Usa.iterate
quando non è necessario che i risultati vengano serializzati.Tutte le istruzioni che vengono inviate insieme sono incluse in una singola transazione e insieme hanno esito positivo o negativo.
-
Aggiungi edge.
g.V('1').addE('knows').to(__.V('2')).property('weight', 0.5).iterate() g.addE('knows').from(__.V('1')).to(__.V('4')).property('weight', 1.0)
Di seguito sono indicati due diversi modi per aggiungere un edge.
-
Aggiungi il resto del grafo moderno.
g.V('1').addE('created').to(__.V('3')).property('weight', 0.4).iterate() g.V('4').addE('created').to(__.V('5')).property('weight', 1.0).iterate() g.V('4').addE('knows').to(__.V('3')).property('weight', 0.4).iterate() g.V('6').addE('created').to(__.V('3')).property('weight', 0.2)
-
Elimina un vertice.
g.V().has('name', 'justin').drop()
Rimuove il vertice con la proprietà
name
uguale ajustin
.Importante
Fermatevi qui e avrete il grafico completo di Apache Modern. TinkerPop Gli esempi nella sezione Traversal
della TinkerPop documentazione utilizzano il grafico Modern. -
Esegui un attraversamento.
g.V().hasLabel('person')
Restituisce tutti i vertici
person
. -
Esegui un Traversal con valori (())valueMap.
g.V().has('name', 'marko').out('knows').valueMap()
Restituisce coppie di chiavi e di valori per tutti i vertici riconosciuti da
marko
. -
Specifica più etichette.
g.addV("Label1::Label2::Label3")
Neptune supporta più etichette per un vertice. Quando crei un'etichetta, puoi specificare più etichette separandole con
::
.In questo esempio viene aggiunto un vertice con tre etichette diverse.
La fase
hasLabel
corrisponde a questo vertice con una qualsiasi delle tre etichette:hasLabel("Label1")
,hasLabel("Label2")
ehasLabel("Label3")
.Il delimitatore
::
è riservato solo a quest'uso.Non è possibile specificare più etichette nella fase
hasLabel
. Ad esempio,hasLabel("Label1::Label2")
non corrisponde a nulla. -
Specifica Ora/data.
g.V().property(single, 'lastUpdate', datetime('2018-01-01T00:00:00'))
Neptune non supporta la data Java. Utilizzate invece la
datetime()
funzione.datetime()
accetta una stringa ISO8 conforme a 061datetime
.Supporta i seguenti formati:
YYYY-MM-DD, YYYY-MM-DDTHH:mm
,YYYY-MM-DDTHH:mm:SS
eYYYY-MM-DDTHH:mm:SSZ
. -
Elimina vertici, proprietà o edge.
g.V().hasLabel('person').properties('age').drop().iterate() g.V('1').drop().iterate() g.V().outE().hasLabel('created').drop()
Di seguito sono riportati vari esempi.
Nota
La fase
.next()
non funziona con.drop()
. Usare invece.iterate()
. -
Al termine, immetti quanto segue per uscire dalla console di Gremlin.
:exit
Nota
Utilizzare un punto e virgola (;
) o un carattere nuova riga (\n
) per separare ogni istruzione.
Ogni attraversamento che precede l'attraversamento finale deve terminare in iterate()
per essere eseguito. Vengono restituiti solo i dati dell'ultimo attraversamento.