Articulo de referencia

Ion (formato de serialización)

Ion es un lenguaje de serialización de datos desarrollado por Amazon . Puede representarse mediante texto legible o en formato binario compacto. El texto es un superconjunto de ...

Ion es un lenguaje de serialización de datos desarrollado por Amazon . Puede representarse mediante texto legible o en formato binario compacto. El texto es un superconjunto de JSON ; por lo tanto, cualquier documento JSON válido también es un documento Ion válido.

Tipos de datos

Como superconjunto de JSON, Ion incluye los siguientes tipos de datos.

  • null: Un valor vacío (para compatibilidad con JSON)
  • bool: Valores booleanos
  • string: literales de texto Unicode
  • list: Colección heterogénea y ordenada de valores de iones (extensión de la matriz JSON)
  • struct: Colección no ordenada de pares clave/valor (extensión del objeto JSON)

El tipo JSON 'number' nebuloso está estrictamente definido en Ion para ser uno de

  • int: Enteros con signo de tamaño arbitrario
  • float: números de punto flotante codificados en binario IEEE de 64 bits
  • decimal: Números reales codificados en decimal de precisión arbitraria

Ion añade estos tipos:

  • timestampMomentos de fecha/hora/zona horaria de precisión arbitraria
  • symbol: Átomos simbólicos Unicode ( también conocidos como identificadores), almacenados como cadenas internadas en formato binario.
  • blob: Datos binarios con codificación definida por el usuario
  • clob: Datos de texto con codificación definida por el usuario
  • sexp: Lista anidada de valores (equivalente a una expresión S ) con semántica definida por la aplicación.

Cada tipo de Ion admite una variante nula, que indica una falta de valor manteniendo un tipo estricto (por ejemplo, null.int, null.struct).

El formato Ion permite adjuntar una o más anotaciones (es decir, una lista de símbolos) a cualquier valor. Dichas anotaciones pueden utilizarse como metadatos para datos que, de otro modo, serían opacos (como un blob).

Implementaciones

  • Implementaciones de bibliotecas compatibles con Amazon
  • DO#
  • Go Lang
  • Pitón
  • JS

Ejemplos

Documento de muestra

Características presentes en JavaScript y JSON5:

// Se permiten comentarios usando la doble barra inclinada { clave : "valor" , // clave aquí es un símbolo, también puede ser una cadena como en JSON nums : 1_000_000 , // equivalente a 1000000 , el uso de guiones bajos con números es más legible "Un float" : 31415e-4 , // clave es un valor que contiene espacios }

Características exclusivas de Ion:

{ símbolo : 'un símbolo' , // los símbolos son cadenas Unicode internadas "Un entero nulo" : null . int , anotado : edad :: 35 , // el símbolo "edad" se adjunta al valor "35" como una lista de anotaciones : 'calificaciones hw' :: [ 80 , 85 , 90 ], // cualquier símbolo puede usarse como una anotación many_annot : tengo :: muchas :: anotaciones :: verdadero , // las anotaciones no están anidadas, sino que es una lista de anotaciones sexp : ( este ( es un [ válido ] " Ion" ) último :: valor + 42 ) // Expresiones S de Ion. 'este', 'es', 'un', 'válido', 'valor' y '+' son símbolos. _value : {{ OiBTIKUgTyAASb8 = }}, // el valor blob se representa como base64 _value : {{ "ab\0\xff" }} // el valor clob se representa como una cadena ASCII con secuencias de escape de estilo C // ^ Se permiten nombres (claves) repetidos, pero generan una advertencia por comportamiento indefinido }

Usos

  • La base de datos Quantum Ledger (QLDB) de Amazon almacena datos en documentos Ion. [ 1 ]
  • PartiQL , un lenguaje de consulta de código abierto basado en SQL también de Amazon, está construido sobre Ion. Las consultas compatibles con PartiQL son utilizadas por QLDB y S3Select. [ 2 ]

Herramientas y extensiones

  • La API Ion Path Extractor pretende combinar la comodidad de una API DOM con la velocidad de una API de transmisión de datos.
  • Soporte IDE
    • Eclipse
    • IntelliJ
  • Módulo de formato de datos Jackson para Ion
  • Apache Hive SerDe para Ion
  • Esquema de iones
    • Especificación
    • Implementaciones
  • Ion Hash define un algoritmo para construir un hash para cualquier valor Ion, a partir de una función hash proporcionada por el usuario capaz de procesar datos binarios de longitud arbitraria.
    • Especificación
    • Implementaciones

Referencias

  1. "Somos los equipos de Amazon Managed Blockchain y Amazon QLDB: pregunte a los expertos de AWS - 29 de noviembre a las 15:00 PST / 18:00 EST" . 28 de noviembre de 2018.
  2. "Presentamos PartiQL: Un lenguaje de consulta para todos tus datos" . Agosto de 2019.
  • Especificación de iones
  • Implementaciones de lenguaje compatibles con Amazon
  • Documentación de la API de Java
  • Implementación en C#