Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden von Neptune-Streams
Mit dem Neptune-Streams-Feature können Sie eine vollständige Abfolge von Änderungsprotokolleinträgen generieren, die jede Änderung an Ihren Diagrammdaten aufzeichnen, sobald sie erfolgt. Eine Übersicht über diese Funktion finden Sie unter Erfassen von Diagrammänderungen in Echtzeit mit Neptune-Streams.
Themen
Verwenden von Neptune-Streams
Sie können Neptune-Streams jederzeit aktivieren oder deaktivieren, indem Sie den neptune_streams-DB-Cluster-Parameter festlegen. Wenn Sie den Parameter auf 1
setzen, wird Streams aktiviert, und wenn Sie ihn auf 0
setzen, wird Streams deaktiviert.
Anmerkung
Nach dem Ändern des neptune_streams
-DB-Cluster-Parameters müssen Sie alle DB-Instances im Cluster neu starten, damit die Änderungen wirksam werden.
Mittels des DB-Cluster-Parameters neptune_streams_expiry_days können Sie festlegen, wie viele Tage (von 1 bis 90) Stream-Datensätze auf dem Server gespeichert werden, bevor sie gelöscht werden. Der Standardwert ist 7.
Neptune Streams wurde ursprünglich als experimentelles Feature eingeführt, das Sie im Labormodus mittels des DB-Cluster-Parameters neptune_lab_mode
aktivieren oder deaktivieren konnten (sieheNeptune-Labor-Modus). Die Verwendung des Labormodus zum Aktivieren von Streams ist jetzt veraltet und wird in Zukunft deaktiviert.
Deaktivieren von Neptune-Streams
Sie können Neptune-Streams jederzeit während der Ausführung deaktivieren.
Um Streams zu deaktivieren, aktualisieren Sie die DB-Cluster-Parametergruppe so, dass der Wert des Parameters neptune_streams
auf 0 gesetzt wird.
Wichtig
Sobald Streams deaktiviert ist, können Sie nicht mehr auf die Änderungsprotokolldaten zugreifen. Lesen Sie unbedingt, was für Sie wichtig ist, bevor Sie Streams deaktivieren.
Aufrufen der Neptune-Streams-REST-API
Sie greifen auf Neptune-Streams über eine REST-API zu, die eine HTTP-GET-Anforderung an einen der folgenden lokalen Endpunkte sendet:
Für eine SPARQL-Diagramm-DB:
https://
.Neptune-DNS
:8182/sparql/streamFür eine Gremlin- oder openCypher-Diagramm-DB:
https://
oderNeptune-DNS
:8182/propertygraph/streamhttps://
.Neptune-DNS
:8182/pg/stream
Anmerkung
Ab Engine-Version 1.1.0.0 ist der Gremlin-Stream-Endpunkt (https://
) zusammen mit dem zugehörigen Ausgabeformat (Neptune-DNS
:8182/gremlin/streamGREMLIN_JSON
) veraltet. Aus Gründen der Abwärtskompatibilität wird er weiter unterstützt, wird jedoch in zukünftigen Versionen möglicherweise entfernt.
Es ist nur eine HTTP-GET
-Operation zulässig.
Neptune unterstützt die gzip
-Komprimierung der Antwort, vorausgesetzt, dass die HTTP-Anforderung einen Accept-Encoding
-Header enthält, der gzip
als akzeptiertes Komprimierungsformat angibt (d. h. "Accept-Encoding: gzip"
).
Parameter
-
limit
– long, optional. Reichweite: 1–100 000. Standard: 10.Gibt die maximale Anzahl der zurückzugebenden Datensätze an. Es gibt auch eine Größenbeschränkung von 10 MB für die Antwort, die nicht geändert werden kann und Vorrang vor der Anzahl der Datensätze hat, die im
limit
-Parameter angegeben ist. Die Antwort enthält einen Schwellenwertüberschreitungsdatensatz, wenn das 10 MB-Limit erreicht wurde. -
iteratorType
– String, optional.Folgende Parameterwerte sind möglich:
AT_SEQUENCE_NUMBER
(Standard) – Gibt an, dass der Lesevorgang ab der Ereignissequenznummer beginnen soll, die von beiden ParameterncommitNum
undopNum
angegeben wird.AFTER_SEQUENCE_NUMBER
– Gibt an, dass der Lesevorgang direkt nach der Ereignissequenznummer beginnen soll, die von beiden ParameterncommitNum
undopNum
angegeben wird.TRIM_HORIZON
– Gibt an, dass der Lesevorgang mit dem letzten nicht gekürzten Datensatz im System beginnen soll. Dies ist der älteste nicht abgelaufene (noch nicht gelöschte) Datensatz im Änderungsprotokoll-Stream. Dieser Modus ist während des Anwendungsstarts nützlich, wenn Sie keine bestimmte Startsequenznummer haben.LATEST
– Gibt an, dass der Lesevorgang mit dem neuesten Datensatz im System beginnen soll. Dies ist der letzte nicht abgelaufene (noch nicht gelöschte) Datensatz im Änderungsprotokoll-Stream. Dies ist nützlich, wenn Datensätze aus den aktuellen Top-Streams gelesen werden müssen, ohne ältere Datensätze zu verarbeiten, z. B. bei einer Notfallwiederherstellung oder einem Upgrade ohne Ausfallzeiten. Beachten Sie, dass in diesem Modus höchstens ein Datensatz zurückgegeben wird.
-
commitNum
– long, erforderlich, wenn iteratorTypeAT_SEQUENCE_NUMBER
oderAFTER_SEQUENCE_NUMBER
ist.Die Commit-Nummer des Startdatensatzes, der aus dem Änderungsprotokoll-Stream gelesen werden soll.
Dieser Parameter wird ignoriert, wenn
iteratorType
den WertTRIM_HORIZON
oderLATEST
hat. -
opNum
– long, optional (Standardwert ist1
).Die Operationssequenznummer innerhalb des angegebenen Commitments, ab der in den Änderungsprotokoll-Streamdaten gelesen werden soll.
Operationen, die SPARQL-Diagrammdaten ändern, generieren in der Regel nur einen einzigen Änderungsdatensatz pro Operation. Operationen, die Gremlin-Diagrammdaten ändern, können jedoch mehrere Änderungsdatensätze pro Operation generieren, wie in den folgenden Beispielen dargestellt:
INSERT
– Ein Gremlin-Eckpunkt kann mehrere Bezeichnungen und ein Gremlin-Element kann mehrere Eigenschaften haben. Für jede Bezeichnung und Eigenschaft wird ein separater Änderungsdatensatz generiert, wenn ein Element eingefügt wird.UPDATE
– Wenn eine Gremlin-Elementeigenschaft geändert wird, werden zwei Änderungsdatensätze generiert: einer zum Entfernen des vorherigen Werts und einer zum Einfügen des neuen Werts.-
DELETE
– Für jede gelöschte Elementeigenschaft wird ein eigener Änderungsdatensatz generiert. Wenn beispielsweise eine Gremlin-Grenze mit Eigenschaften gelöscht wird, wird für jede der Eigenschaften ein Änderungsdatensatz generiert. Danach wird ein Änderungsdatensatz zum Löschen der Grenzbezeichnung generiert.Wenn ein Gremlin-Eckpunkt gelöscht wird, werden zuerst alle eingehenden und ausgehenden Grenzeigenschaften gelöscht, dann die Grenzbezeichnungen, dann die Eckpunkteigenschaften und schließlich die Eckpunktbezeichnungen. Jeder dieser Löschvorgänge generiert einen Änderungsdatensatz.
Neptune-Streams-API-Antwortformat
Eine Antwort auf eine Neptune-Streams-REST-API-Anforderung enthält die folgenden Felder:
-
lastEventId
– Sequenz-ID der letzten Änderung in der Stream-Antwort. Eine Ereignis-ID besteht aus zwei Feldern: EincommitNum
identifiziert eine Transaktion, die das Diagramm geändert hat, und einopNum
identifiziert eine bestimmte Operation innerhalb dieser Transaktion. Dies wird im folgenden Beispiel veranschaulicht."eventId": { "commitNum": 12, "opNum": 1 }
lastTrxTimestamp
– Der Zeitpunkt, zu dem das Commit für die Transaktion angefordert wurde, in Millisekunden ab der Unix-Epoche.format
– Serialisierungsformat für die zurückgegebenen Änderungsdatensätze. Die möglichen Werte sindPG_JSON
für Gremlin- oder openCypher-Änderungsdatensätze undNQUADS
für SPARQL-Änderungsdatensätze.-
records
– Ein Array serialisierter Änderungsprotokoll-Stream-Datensätze, die in der Antwort enthalten sind. Jeder Datensatz imrecords
-Array enthält die folgenden Felder:commitTimestamp
– Der Zeitpunkt, zu dem das Commit für die Transaktion angefordert wurde, in Millisekunden ab der Unix-Epoche.eventId
– Die Sequenz-ID des Stream-Änderungsdatensatzes.data
— Der serialisierte Gremlin-, SPARQL- oder Change-Datensatz. OpenCypher Die Serialisierungsformate für jeden Datensatz werden im nächsten Abschnitt (Serialisierungsformate in Neptune-Streams) ausführlicher beschrieben.op
– Die Operation, die die Änderung erstellt hat.isLastOp
– Nur vorhanden, wenn diese Operation die letzte in ihrer Transaktion ist. Wenn vorhanden, ist sie auftrue
festgelegt. Nützlich, um sicherzustellen, dass die gesamte Transaktion genutzt wird.
totalRecords
– Die Gesamtanzahl der Datensätze in der Antwort.
Die folgende Antwort gibt beispielsweise Gremlin-Änderungsdaten für eine Transaktion zurück, die mehr als eine Operation enthält:
{ "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 }
Die folgende Antwort gibt SPARQL-Änderungsdaten für die letzte Operation in einer Transaktion zurück (die Operation, die EventId(97, 1)
in Transaktionsnummer 97 identifiziert hat).
{ "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 }
Neptune-Streams-API-Ausnahmen
Die folgende Tabelle beschreibt Streams-Ausnahmen.
Fehlercode | HTTP-Code | Erneut versuchen? | Fehlermeldung |
---|---|---|---|
|
400 |
Nein |
Ein ungültiger out-of-range Wert oder wurde als Eingabeparameter angegeben. |
|
400 |
Nein |
Alle angeforderten Datensätze überschreiten das maximal zulässige Alter und sind abgelaufen. |
|
500 |
Ja |
Die Anforderungsrate übersteigt den maximalen Durchsatz. |
|
404 |
Nein |
Die angeforderte Ressource wurde nicht gefunden. Der Stream ist möglicherweise nicht korrekt angegeben. |
|
500 |
Ja |
Die Anforderungsverarbeitung war nicht erfolgreich, weil nicht genügend Arbeitsspeicher vorhanden ist. Sie kann aber wiederholt werden, wenn der Server nicht mehr so stark ausgelastet ist. |