Validation des mappages de données - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Validation des mappages de données

Les données sont répliquées surOpenSearchdepuis Neptune en utilisant ce processus :

  • Si un mappage du champ en question est déjà présent dansOpenSearch :

    • Si les données peuvent être converties en toute sécurité vers le mappage existant à l'aide de règles de validation des données, stockez le champ dansOpenSearch.

    • Sinon, supprimez l'enregistrement de mise à jour de flux correspondant.

  • S'il n'existe pas de mappage existant pour le champ en question, recherchez unOpenSearchtype de données correspondant au type de données du champ dans Neptune.

    • Si les données de terrain peuvent être converties en toute sécurité vers leOpenSearchtype de données utilisant des règles de validation des données, puis stockez les nouvelles données de mappage et de champ dansOpenSearch.

    • Sinon, supprimez l'enregistrement de mise à jour de flux correspondant.

Les valeurs sont validées par rapport à l'équivalentOpenSearchtypes ou existantsOpenSearchles mappages plutôt que les types Neptune. Par exemple, la validation de la valeur"123"dans"123"^^xsd:intest fait contre lalongtapez plutôt que leintType

Bien que Neptune tente de répliquer toutes les données versOpenSearch, il existe des cas où des types de données dansOpenSearchsont totalement différents de ceux de Neptune, et dans de tels cas, les enregistrements sont ignorés plutôt que d'être indexés dansOpenSearch.

Par exemple, dans Neptune, une propriété peut avoir plusieurs valeurs de différents types, alors que dansOpenSearchun champ doit avoir le même type dans l'index.

En activant les journaux de débogage, vous pouvez voir quels enregistrements ont été supprimés lors de l'exportation de Neptune versOpenSearch. Voici un exemple d'entrée de journal de débogage :

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

Les types de données sont validés comme suit :

  • text— Toutes les valeurs de Neptune peuvent être mappées en toute sécurité au texte dansOpenSearch.

  • long— Les règles suivantes pour les types de données Neptune s'appliquent lorsque leOpenSearchle type de mappage est long (dans les exemples ci-dessous, on suppose que"testLong"est doté d'unlongtype de mappage) :

    • boolean— Non valide, ne peut pas être converti et l'enregistrement de mise à jour de flux correspondant est supprimé.

      Les exemples Gremlin non valides sont les suivants :

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

      Voici des exemples SPARQL non valides :

      ":testLong" : "true"^^xsd:boolean ":testLong" : "false"^^xsd:boolean
    • datetime— Non valide, ne peut pas être converti et l'enregistrement de mise à jour de flux correspondant est supprimé.

      Un exemple Gremlin non valide est le suivant :

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

      Un exemple SPARQL non valide est le suivant :

      ":testLong" : "2016-01-01"^^xsd:date
    • float,double, oudecimal— Si la valeur de Neptune est un entier pouvant contenir 64 bits, elle est valide et est stockée dansOpenSearchen tant que long, mais s'il a une partie fractionnée, ou s'il s'agit d'unNaNou unINF, ou est supérieur à 9 223 372 036 854 775 807 ou inférieur à -9 223 372 036 854 775 808, alors il n'est pas valide et l'enregistrement correspondant à la mise à jour du flux est supprimé.

      Les exemples de Gremlin valides sont les suivants :

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

      Les exemples SPARQL valides sont les suivants :

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

      Les exemples Gremlin non valides sont les suivants :

      "testLong" : 123.45 ":testLong" : 9223372036854775900

      Voici des exemples SPARQL non valides :

      ":testLong" : 123.45 ":testLong" : 9223372036854775900 ":testLong" : "123.45"^^xsd:float ":testLong" : "123.45"^^xsd:double ":testLong" : "123.45"^^xsd:decimal
    • string— Si la valeur de Neptune est une représentation chaîne d'un entier pouvant être contenu dans un entier 64 bits, elle est valide et est convertie en unlongdansOpenSearch. Toute autre valeur de chaîne n'est pas valide pour une recherche Elasticseearchlongmappage, et l'enregistrement de mise à jour de flux correspondant est supprimé.

      Les exemples de Gremlin valides sont les suivants :

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

      Les exemples SPARQL valides sont les suivants :

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

      Les exemples Gremlin non valides sont les suivants :

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

      Voici des exemples SPARQL non valides :

      ":testLong" : "123.45"^^xsd:string ":testLong" : "abc" ":testLong" : "9223372036854775900"^^xsd:string
  • double— Si leOpenSearchLe type de mappage estdouble, les règles suivantes s'appliquent (ici, le champ « TestDouble » est supposé avoir undoublemappage dansOpenSearch) :

    • boolean— Non valide, ne peut pas être converti et l'enregistrement de mise à jour de flux correspondant est supprimé.

      Les exemples Gremlin non valides sont les suivants :

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

      Voici des exemples SPARQL non valides :

      ":testDouble" : "true"^^xsd:boolean ":testDouble" : "false"^^xsd:boolean
    • datetime— Non valide, ne peut pas être converti et l'enregistrement de mise à jour de flux correspondant est supprimé.

      Un exemple Gremlin non valide est le suivant :

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

      Un exemple SPARQL non valide est le suivant :

      ":testDouble" : "2016-01-01"^^xsd:date
    • virgule flottanteNaNouINF— Si la valeur de SPARQL est à virgule flottanteNaNouINF, alors il n'est pas valide et l'enregistrement de mise à jour de flux correspondant est supprimé.

      Voici des exemples SPARQL non valides :

      " :testDouble" : "NaN"^^xsd:float ":testDouble" : "NaN"^^double ":testDouble" : "INF"^^double ":testDouble" : "-INF"^^double
    • nombre ou chaîne numérique — Si la valeur de Neptune est un autre nombre ou chaîne numérique, représentation d'un nombre qui peut être exprimée en toute sécurité sous la forme d'undouble, il est alors valide et est converti en undoubledansOpenSearch. Toute autre valeur de chaîne n'est pas valide pour unOpenSearch doublemappage, et l'enregistrement de mise à jour de flux correspondant est supprimé.

      Les exemples de Gremlin valides sont les suivants :

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

      Les exemples SPARQL valides sont les suivants :

      ":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

      Un exemple Gremlin non valide est le suivant :

      ":testDouble" : "abc"

      Voici quelques exemples SPARQL non valides :

      ":testDouble" : "abc"
  • date— Si leOpenSearchLe type de mappage estdate, NeptunedateetdateTimesont valides, tout comme toute valeur de chaîne qui peut être analysée avec succès vers undateTime.

    Des exemples valides dans Gremlin ou SPARQL sont les suivants :

    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"

    Voici quelques exemples non valides :

    123.45 True "abc"