Validierung von Datenzuordnungen - Amazon Neptune

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.

Validierung von Datenzuordnungen

Daten werden mit diesem Verfahren von Neptune zu OpenSearch repliziert:

  • Wenn eine Zuordnung für das fragliche Feld bereits in OpenSearch vorhanden ist:

    • Wenn die Daten mithilfe von Datenvalidierungsregeln sicher in die bestehende Zuordnung konvertiert werden können, speichern Sie das Feld in OpenSearch.

    • Andernfalls löschen Sie den entsprechenden Stream-Update-Datensatz.

  • Wenn für das fragliche Feld keine Zuordnung vorhanden ist, suchen Sie nach einem OpenSearch-Datentyp, der dem Datentyp des Felds in Neptune entspricht.

    • Wenn die Felddaten mithilfe von Datenvalidierungsregeln sicher zum OpenSearch-Datentyp konvertiert werden können, speichern Sie die neuen Zuordnungs- und Felddaten in OpenSearch.

    • Andernfalls löschen Sie den entsprechenden Stream-Update-Datensatz.

Werte werden anhand äquivalenter OpenSearch-Typen oder vorhandener OpenSearch-Zuordnungen und nicht anhand der Neptune-Typen validiert. Beispielsweise erfolgt die Validierung des Werts "123" in "123"^^xsd:int anhand des long-Typs und nicht anhand des int-Typs.

Obwohl Neptune versucht, alle Daten zu OpenSearch zu replizieren, gibt es Fälle, in denen sich die Datentypen in OpenSearch völlig von denen in Neptune unterscheiden. In solchen Fällen werden Datensätze übersprungen, anstatt in OpenSearch indiziert zu werden.

In Neptune kann eine Eigenschaft beispielsweise mehrere Werte unterschiedlichen Typs haben, wohingegen in OpenSearch ein Feld im gesamten Index denselben Typ haben muss.

Wenn Sie Debug-Protokolle aktivieren, können Sie sehen, welche Datensätze beim Export von Neptune zu OpenSearch gelöscht wurden. Ein Beispiel für einen Debug-Protokolleintrag ist:

Dropping Record : Data type not a valid Gremlin type <Record>

Datentypen werden wie folgt validiert:

  • text – Alle Werte in Neptune können in OpenSearch sicher Text zugeordnet werden.

  • long – Die folgenden Regeln für Neptune-Datentypen gelten, wenn der OpenSearch-Zuordnungstyp Long ist (in den folgenden Beispielen wird davon ausgegangen, dass "testLong" den Zuordnungstyp long hat):

    • boolean – Ungültig, kann nicht konvertiert werden und der entsprechende Datensatz zum Stream-Update wird gelöscht.

      Ungültige Gremlin-Beispiele sind:

      "testLong" : true. "testLong" : false.

      Ungültige SPARQL-Beispiele sind:

      ":testLong" : "true"^^xsd:boolean ":testLong" : "false"^^xsd:boolean
    • datetime – Ungültig, kann nicht konvertiert werden und der entsprechende Datensatz zum Stream-Update wird gelöscht.

      Ein ungültiges Gremlin-Beispiel ist:

      ":testLong" : datetime('2018-11-04T00:00:00').

      Ein ungültiges SPARQL-Beispiel ist:

      ":testLong" : "2016-01-01"^^xsd:date
    • float,double oder decimal – Wenn der Wert in Neptune eine Ganzzahl ist, die in 64 Bit passen kann, ist er gültig und wird in OpenSearch als Long gespeichert. Wenn er jedoch einen Bruchteil darstellt oder ein NaN oder ein INF ist oder wenn er größer als 9 223 372 036 854 775 807 oder kleiner als -9 223 372 036 854 775 808 ist, dann ist er nicht gültig und der entsprechende Stream-Update-Datensatz wird gelöscht.

      Gültige Gremlin-Beispiele sind:

      "testLong" : 145.0. ":testLong" : 123 ":testLong" : -9223372036854775807

      Gültige SPARQL-Beispiele sind:

      ":testLong" : "145.0"^^xsd:float ":testLong" : 145.0 ":testLong" : "145.0"^^xsd:double ":testLong" : "145.0"^^xsd:decimal ":testLong" : "-9223372036854775807"

      Ungültige Gremlin-Beispiele sind:

      "testLong" : 123.45 ":testLong" : 9223372036854775900

      Ungültige SPARQL-Beispiele sind:

      ":testLong" : 123.45 ":testLong" : 9223372036854775900 ":testLong" : "123.45"^^xsd:float ":testLong" : "123.45"^^xsd:double ":testLong" : "123.45"^^xsd:decimal
    • string – Wenn der Wert in Neptune eine Zeichenfolgendarstellung einer Ganzzahl ist, die in einer 64-Bit-Ganzzahl enthalten sein kann, dann ist er gültig und wird in OpenSearch zu long umgewandelt. Jeder andere Zeichenfolgenwert ist für eine Elasticsearch-long-Zuordnung ungültig und der entsprechende Stream-Update-Datensatz wird gelöscht.

      Gültige Gremlin-Beispiele sind:

      "testLong" : "123". ":testLong" : "145.0" ":testLong" : "-9223372036854775807"

      Gültige SPARQL-Beispiele sind:

      ":testLong" : "145.0"^^xsd:string ":testLong" : "-9223372036854775807"^^xsd:string

      Ungültige Gremlin-Beispiele sind:

      "testLong" : "123.45" ":testLong" : "9223372036854775900" ":testLong" : "abc"

      Ungültige SPARQL-Beispiele sind:

      ":testLong" : "123.45"^^xsd:string ":testLong" : "abc" ":testLong" : "9223372036854775900"^^xsd:string
  • double – Wenn der OpenSearch-Zuordnungstyp double ist, gelten die folgenden Regeln (hier wird davon ausgegangen, dass das Feld „testDouble“ in OpenSearch eine double-Zuordnung hat):

    • boolean – Ungültig, kann nicht konvertiert werden und der entsprechende Datensatz zum Stream-Update wird gelöscht.

      Ungültige Gremlin-Beispiele sind:

      "testDouble" : true. "testDouble" : false.

      Ungültige SPARQL-Beispiele sind:

      ":testDouble" : "true"^^xsd:boolean ":testDouble" : "false"^^xsd:boolean
    • datetime – Ungültig, kann nicht konvertiert werden und der entsprechende Datensatz zum Stream-Update wird gelöscht.

      Ein ungültiges Gremlin-Beispiel ist:

      ":testDouble" : datetime('2018-11-04T00:00:00').

      Ein ungültiges SPARQL-Beispiel ist:

      ":testDouble" : "2016-01-01"^^xsd:date
    • Gleitkomma-NaN oder -INF – Wenn der Wert in SPARQL ein Gleitkomma-NaN oder -INF ist, dann ist er nicht gültig und der entsprechende Stream-Update-Datensatz wird gelöscht.

      Ungültige SPARQL-Beispiele sind:

      " :testDouble" : "NaN"^^xsd:float ":testDouble" : "NaN"^^double ":testDouble" : "INF"^^double ":testDouble" : "-INF"^^double
    • Zahl oder numerische Zeichenfolge – Wenn der Wert in Neptune eine andere Zahl oder numerische Zeichenfolgendarstellung einer Zahl ist, die sicher als double ausgedrückt werden kann, dann ist er gültig und wird in OpenSearch in double umgewandelt. Jeder andere Zeichenfolgenwert ist für eine OpenSearch-double-Zuordnung ungültig und der entsprechende Stream-Update-Datensatz wird gelöscht.

      Gültige Gremlin-Beispiele sind:

      "testDouble" : 123 ":testDouble" : "123" ":testDouble" : 145.67 ":testDouble" : "145.67"

      Gültige SPARQL-Beispiele sind:

      ":testDouble" : 123.45 ":testDouble" : 145.0 ":testDouble" : "123.45"^^xsd:float ":testDouble" : "123.45"^^xsd:double ":testDouble" : "123.45"^^xsd:decimal ":testDouble" : "123.45"^^xsd:string

      Ein ungültiges Gremlin-Beispiel ist:

      ":testDouble" : "abc"

      Ein ungültiges SPARQL-Beispiel ist:

      ":testDouble" : "abc"
  • date – Wenn der OpenSearch-Mapping-Typ date ist, sind die Neptune-Werte date und dateTime gültig, ebenso wie jeder Zeichenfolgenwert, der erfolgreich in ein dateTime-Format aufgelöst werden kann.

    Gültige Beispiele in Gremlin oder SPARQL sind:

    Date(2016-01-01) "2016-01-01" " 2003-09-25T10:49:41" "2003-09-25T10:49" "2003-09-25T10" "20030925T104941-0300" "20030925T104941" "2003-Sep-25" " Sep-25-2003" "2003.Sep.25" "2003/09/25" "2003 Sep 25" " Wed, July 10, '96" "Tuesday, April 12, 1952 AD 3:30:42pm PST" "123" "-123" "0" "-0" "123.00" "-123.00"

    Ungültige Beispiele sind:

    123.45 True "abc"