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 Neptune Streams
La funzionalità Neptune Streams consente di generare una sequenza completa di voci di log delle modifiche che registrano automaticamente e in tempo reale ogni modifica apportata ai dati del grafo. Per una panoramica di questa caratteristica, consulta Acquisizione di modifiche al grafo in tempo reale mediante Neptune Streams.
Argomenti
Abilitazione di Neptune Streams
È possibile abilitare o disabilitare Neptune Streams in qualsiasi momento impostando il parametro del cluster database neptune_streams. L'impostazione del parametro su 1
abilita i flussi, mentre l'impostazione su 0
disabilita i flussi.
Nota
Dopo aver modificato il parametro del cluster database neptune_streams
, è necessario riavviare tutte le istanze database nel cluster per rendere effettiva la modifica.
È possibile impostare il parametro del cluster database neptune_streams_expiry_days per controllare per quanti giorni, da 1 a 90, i record di flusso rimangono sul server prima di essere eliminati. Il valore predefinito è 7.
Neptune Streams è stato inizialmente introdotto come funzionalità sperimentale che era possibile abilitare o disabilitare in modalità di laboratorio utilizzando il parametro del cluster database neptune_lab_mode
(vedi Modalità di laboratorio Neptune). L'utilizzo della modalità laboratorio per abilitare Streams è ora obsoleto e verrà disattivato in futuro.
Disabilitazione di Neptune Streams
Puoi disattivare Neptune Streams in qualsiasi momento in cui è in esecuzione.
Per disattivare Streams, aggiorna il gruppo di parametri Cluster DB in modo che il valore del parametro neptune_streams
sia impostato su 0.
Importante
Non appena Streams viene disattivato, non puoi più accedere ai dati di log delle modifiche. Assicurati di leggere ciò che ti interessa prima di disattivare Streams.
Chiamata di REST API di Neptune Streams
Puoi accedere a Neptune Streams utilizzando una REST API che invia una richiesta HTTP GET a uno dei seguenti endpoint locali:
Per un database grafico SPARQL:
https://
.Neptune-DNS
:8182/sparql/streamPer un database a grafo Gremlin o openCypher:
https://
oNeptune-DNS
:8182/propertygraph/streamhttps://
.Neptune-DNS
:8182/pg/stream
Nota
A partire dal rilascio 1.1.0.0 del motore, l'endpoint del flusso Gremlin (https://
) è diventato obsoleto, insieme al formato di output associato (Neptune-DNS
:8182/gremlin/streamGREMLIN_JSON
). È ancora supportato per la compatibilità con le versioni precedenti, ma potrebbe essere rimosso nei rilasci futuri.
È consentita una sola operazione GET
HTTP.
Neptune supporta la compressione gzip
della risposta, purché la richiesta HTTP includa un'intestazione Accept-Encoding
che specifichi gzip
come formato di compressione accettato (ovvero "Accept-Encoding: gzip"
).
Parametri
-
limit
: long, facoltativo. Intervallo: 1-100.000. Impostazione predefinita: 10Specifica il numero massimo di record da restituire. Esiste anche un limite di dimensioni di 10 MB per la risposta che non può essere modificato e che ha la precedenza sul numero di record specificato nel parametro
limit
. La risposta include un record che supera la soglia se il limite di 10 MB è stato raggiunto. -
iteratorType
: stringa, facoltativo.Questo parametro può accettare uno dei seguenti valori:
AT_SEQUENCE_NUMBER
: (valore predefinito) indica che la lettura deve iniziare dal numero di sequenza di eventi specificato congiuntamente dai parametricommitNum
eopNum
.AFTER_SEQUENCE_NUMBER
: indica che la lettura deve iniziare immediatamente dopo il numero di sequenza di eventi specificato congiuntamente dai parametricommitNum
eopNum
.TRIM_HORIZON
: indica che la lettura deve iniziare dall'ultimo record non tagliato nel sistema, ovvero il record più vecchio non scaduto (non ancora eliminato) nel flusso di log delle modifiche. Questa modalità è utile durante l'avvio dell'applicazione, quando non si dispone di un numero di sequenza dell'evento di avvio specifico.LATEST
: indica che la lettura deve iniziare dal record più recente non tagliato nel sistema, ovvero il record più recente non scaduto (non ancora eliminato) nel flusso di log delle modifiche. Questa modalità è utile quando è necessario leggere i record dalla parte superiore del flusso per non elaborare i record più vecchi, ad esempio durante un ripristino di emergenza o un aggiornamento senza tempi di inattività. Notare che in questa modalità viene restituito al massimo un solo record.
-
commitNum
: long, obbligatorio quando iteratorType èAT_SEQUENCE_NUMBER
oAFTER_SEQUENCE_NUMBER
.Il numero di commit del record iniziale da leggere dal flusso change-log.
Questo parametro viene ignorato quando
iteratorType
èTRIM_HORIZON
oLATEST
. -
opNum
: long, facoltativo (il valore predefinito è1
).Il numero di sequenza dell'operazione all'interno del commit specificato da cui iniziare la lettura nei dati del flusso change-log.
Le operazioni che modificano i dati del grafo SPARQL generano solitamente solo un singolo record di modifica per operazione. Tuttavia, le operazioni che modificano i dati del grafo Gremlin possono generare più record di modifica per operazione, come negli esempi seguenti:
INSERT
: un vertice Gremlin può avere più etichette e un elemento Gremlin può avere più proprietà. Un record di modifica separato viene generato per ogni etichetta e proprietà quando si inserisce un elemento.UPDATE
: quando la proprietà di un elemento Gremlin viene modificata, vengono generati due record di modifica: il primo per la rimozione del valore precedente e il secondo per l'inserimento del nuovo valore.-
DELETE
: viene generato un record di modifica separato per ogni proprietà dell'elemento che viene eliminata. Ad esempio, quando un edge Gremlin con proprietà viene eliminato, viene generato un record di modifica per ciascuna delle proprietà e successivamente ne viene generato uno per l'eliminazione dell'etichetta edge.Quando un vertice Gremlin viene eliminato, vengono eliminate per prime tutte le proprietà edge in entrata e in uscita, quindi le etichette edge, le proprietà dei vertici e infine le etichette dei vertici. Ognuna di queste eliminazioni genera un record di modifica.
Formato della risposta API di Neptune Streams
Una risposta a una richiesta REST API di Neptune Streams include i campi seguenti:
-
lastEventId
: identificatore di sequenza dell'ultima modifica nella risposta del flusso. Un ID evento è composto da due campi: uncommitNum
che identifica una transazione che ha modificato il grafo e unopNum
che identifica un'operazione specifica all'interno di tale transazione. Questo viene mostrato nell'esempio seguente."eventId": { "commitNum": 12, "opNum": 1 }
lastTrxTimestamp
: l'ora in cui è stato richiesto il commit per la transazione, in millisecondi dall'epoca Unix.format
: formato di serializzazione per i record di modifica restituiti. I valori possibili sonoPG_JSON
per i record di modifica Gremlin o openCypher eNQUADS
per i record di modifica SPARQL.-
records
: un array di record serializzati del flusso di log delle modifiche inclusi nella risposta. Ogni record dell'arrayrecords
contiene i seguenti campi:commitTimestamp
: l'ora in cui è stato richiesto il commit per la transazione, in millisecondi dall'epoca Unix.eventId
: identificatore di sequenza del record di modifica del flusso.data
— Il record serializzato di Gremlin, SPARQL o change. OpenCypher I formati di serializzazione di ciascun record sono descritti più dettagliatamente nella sezione successiva, Formati di serializzazione in Neptune Streams.op
: operazione che ha creato la modifica.isLastOp
: presente solo se questa operazione è l'ultima della transazione. Se presente, è impostato sutrue
. È utile per garantire che venga consumata un'intera transazione.
totalRecords
: numero totale di record nella risposta.
Ad esempio, la seguente risposta restituisce i dati di modifica di Gremlin, per una transazione che contiene più di un'operazione:
{ "lastEventId": { "commitNum": 12, "opNum": 1 }, "lastTrxTimestamp": 1560011610678, "format": "PG_JSON", "records": [ { "commitTimestamp": 1560011610678, "eventId": { "commitNum": 1, "opNum": 1 }, "data": { "id": "d2b59bf8-0d0f-218b-f68b-2aa7b0b1904a", "type": "vl", "key": "label", "value": { "value": "vertex", "dataType": "String" } }, "op": "ADD" } ], "totalRecords": 1 }
La seguente risposta restituisce i dati di modifica SPARQL per l'ultima operazione di una transazione (operazione identificata da EventId(97, 1)
nella transazione numero 97).
{ "lastEventId": { "commitNum": 97, "opNum": 1 }, "lastTrxTimestamp": 1561489355102, "format": "NQUADS", "records": [ { "commitTimestamp": 1561489355102, "eventId": { "commitNum": 97, "opNum": 1 }, "data": { "stmt": "<https://test.com/s> <https://test.com/p> <https://test.com/o> .\n" }, "op": "ADD", "isLastOp": true } ], "totalRecords": 1 }
Eccezioni API di Neptune Streams
La tabella seguente descrive le eccezioni di Neptune Streams.
Codice di errore | Codice HTTP | OK riprovare? | Messaggio |
---|---|---|---|
|
400 |
No |
È stato fornito un out-of-range valore or non valido come parametro di input. |
|
400 |
No |
Tutti i record richiesti superano l'età massima consentita e sono scaduti. |
|
500 |
Sì |
La velocità delle richieste supera il throughput massimo consentito. |
|
404 |
No |
Impossibile trovare la risorsa richiesta. Il flusso potrebbe non essere specificato correttamente. |
|
500 |
Sì |
L'elaborazione della richiesta non è andata a buon fine a causa della mancanza di memoria, tuttavia si potrà riprovare quando il server sarà meno occupato. |