Ingesta y consulta de datos semiestructurados en Amazon Redshift - Amazon Redshift

Ingesta y consulta de datos semiestructurados en Amazon Redshift

Mediante el uso de la compatibilidad con datos semiestructurados de Amazon Redshift, puede capturar y almacenar datos semiestructurados en sus almacenamientos de datos de Amazon Redshift. Mediante el uso del tipo de datos SUPER y del lenguaje PartiQL, Amazon Redshift amplía la capacidad de almacenamiento de datos para integrarse a orígenes de datos SQL y NoSQL. De esta forma, Amazon Redshift permite realizar análisis eficientes de los datos relacionales y semiestructurados almacenados, como JSON.

Amazon Redshift ofrece dos formas de compatibilidad con datos semiestructurados: el tipo de datos SUPER y Amazon Redshift Spectrum.

Utilice el tipo de datos SUPER si necesita insertar o actualizar pequeños lotes de datos JSON con baja latencia. Además, utilice SUPER cuando su consulta requiera consistencia sólida, rendimiento predecible de consultas, compatibilidad con consultas complejas y facilidad de uso con esquemas en evolución y datos sin esquemas.

Por el contrario, utilice Amazon Redshift Spectrum con un formato abierto de archivo si su consulta de datos requiere integración a otros servicios de AWS y a datos almacenados principalmente en Amazon S3 para fines de archivo.

Casos de uso del tipo de datos SUPER

La compatibilidad con datos semiestructurados mediante el tipo de datos SUPER de Amazon Redshift proporciona rendimiento superior, flexibilidad y facilidad de uso. Los siguientes casos de uso ayudan a demostrar cómo puede usar la compatibilidad con datos semiestructurados con SUPER.

Inserción rápida y flexible de datos JSON: Amazon Redshift admite las transacciones rápidas que pueden analizar JSON y almacenarlo como un valor SUPER. Las transacciones de inserción pueden funcionar hasta cinco veces más rápido que la ejecución de las mismas inserciones en tablas que hayan fragmentado los atributos de SUPER en columnas convencionales. Por ejemplo, supongamos que el JSON entrante tiene la forma {“a”:.., “b”:.., “c”“..., ...}. Puede acelerar el rendimiento de la inserción muchas veces almacenando el JSON entrante en una tabla TJ con una única columna S de SUPER, en lugar de almacenarlo en una tabla convencional TR con columnas “a”, “b”, “c”, etc. Cuando hay cientos de atributos en el JSON, la ventaja de rendimiento del tipo de datos SUPER se vuelve sustancial.

Además, el tipo de datos SUPER no necesita un esquema normal. No es necesario realizar una introspección del JSON entrante ni limpiarlo antes de almacenarlo. Por ejemplo, supongamos que un JSON entrante tiene un atributo de cadena “c” y otros que tienen un atributo entero “c”, sin el tipo de datos SUPER. En este caso, debe separar las columnas c_string y c_int o limpiar los datos. Por el contrario, con el tipo de datos SUPER, todos los datos JSON se almacenan durante la ingesta sin perder información. Más tarde, puede usar la extensión PartiQL de SQL para analizar la información.

Consultas flexibles para la detección: después de haber almacenado los datos semiestructurados (por ejemplo, JSON) en un valor de datos SUPER, puede consultarlos sin imponer un esquema. Puede usar la escritura dinámica de PartiQL y la semántica laxa para ejecutar sus consultas y detectar los datos profundamente anidados que necesita, sin la necesidad de imponer un esquema antes de realizar la consulta.

Consultas flexibles para las operaciones de extracción, transformación y carga (ETL) en vistas materializadas convencionales: después de almacenar los datos sin esquema y semiestructurados como SUPER, puede utilizar las vistas materializadas de PartiQL para realizar una introspección de los datos y fragmentarlos en vistas materializadas.

Las vistas materializadas con los datos fragmentados son un buen ejemplo de las ventajas de rendimiento y capacidad de uso para sus casos de análisis clásicos. Cuando lleva a cabo el análisis de los datos fragmentados, la organización en columnas de las vistas materializadas de Amazon Redshift proporciona un mejor rendimiento. Además, los usuarios y las herramientas de inteligencia empresarial (BI) que requieren un esquema convencional para los datos capturados pueden utilizar vistas (ya sea materializadas o virtuales) como la presentación del esquema convencional de los datos.

Después de que las vistas materializadas de PartiQL hayan extraído los datos encontrados en JSON o SUPER en vistas materializadas convencionales organizadas en columnas, podrá consultar las vistas materializadas. Para obtener más información acerca de cómo funciona el tipo de datos SUPER con las vistas materializadas, consulte Uso del tipo de datos SUPER con vistas materializadas.

Puede aplicar políticas de enmascaramiento dinámico de datos a los valores scalar de las rutas de las columnas de tipo SUPER. Para obtener más información sobre el enmascaramiento dinámico de datos, consulte Enmascaramiento de datos dinámico. Para obtener más información acerca del uso del enmascaramiento dinámico de datos con el tipo de datos SUPER, consulte Uso del enmascaramiento dinámico de datos con rutas de tipos de datos SUPER. (versión preliminar)

Para obtener más información acerca del tipo de datos SUPER, consulte Tipo SUPER.

Para obtener ejemplos de cómo utilizar el tipo de datos SUPER, consulte las subsecciones de este tema, que comienzan con Conjunto de datos de muestra SUPER.

Conceptos para el uso del tipo de datos SUPER

A continuación, encontrará algunos conceptos acerca del tipo de datos SUPER de Amazon Redshift.

Comprensión de qué es el tipo de datos SUPER en Amazon Redshift: SUPER es un tipo de datos de Amazon Redshift que permite el almacenamiento de matrices y estructuras sin esquema que contienen escalares de Amazon Redshift y, posiblemente, matrices y estructuras anidadas. El tipo de datos SUPER puede almacenar de forma nativa diferentes formatos de datos semiestructurados, como JSON o datos procedentes de fuentes orientadas a documentos. Puede agregar una nueva columna SUPER para almacenar datos semiestructurados y escribir consultas que accedan a la columna SUPER, junto con las columnas escalares habituales. Para obtener más información acerca del tipo de datos SUPER, consulte Tipo SUPER.

Ingesta de datos JSON sin esquema como SUPER: con el tipo flexible de datos semiestructurados SUPER, Amazon Redshift puede recibir y capturar datos JSON sin esquema y pasarlos a un valor SUPER. Por ejemplo, Amazon Redshift puede capturar el valor JSON [10.5, "first"] como un valor SUPER [10.5, ‘first’], es decir, una matriz que contenga el decimal 10,5 de Amazon Redshift y el varchar “first”. Amazon Redshift puede capturar el JSON como un valor SUPER usando el comando COPY o la función JSON de análisis, como json_parse('[10.5, "first"]'). Tanto COPY como json_parse capturan datos JSON usando semántica de análisis estricta de manera predeterminada. También puede construir valores SUPER, incluidos matrices y estructuras, mediante los propios datos de la base de datos.

La columna SUPER no requiere modificaciones de esquema mientras se capturan las estructuras irregulares de JSON sin esquema. Por ejemplo, cuando analiza una secuencia de clics, inicialmente almacena en la columna SUPER estructuras de “clic” con atributos de “IP” y “tiempo”. Puede agregar un atributo “ID de cliente” sin cambiar el esquema para capturar dichos cambios.

El formato nativo utilizado para el tipo de datos SUPER es un formato binario que requiere menos espacio que el valor JSON en su forma textual. Esto permite una ingesta y un procesamiento de tiempo de ejecución más rápidos de los valores SUPER en la consulta.

Consulta de los datos SUPER con PartiQL: PartiQL es una extensión compatible con versiones anteriores de SQL-92 que muchos servicios de AWS utilizan actualmente. Con el uso de PartiQL, las construcciones SQL conocidas combinan sin problemas el acceso a los datos SQL tabulares clásicos y a los datos semiestructurados de SUPER. Puede realizar la navegación de objetos y matrices y quitar el anidamiento de las matrices. PartiQL amplía el lenguaje SQL estándar para expresar y procesar declarativamente datos anidados y multivalor.

PartiQL es una extensión de SQL en la que los datos anidados y sin esquema de las columnas SUPER son ciudadanos de primera clase. PartiQL no requiere que se verifique el tipo de todas las expresiones de consulta durante el tiempo de compilación de consultas. Este enfoque permite que las expresiones de consulta que contienen el tipo de datos SUPER se escriban dinámicamente durante la ejecución de la consulta cuando se accede a los tipos reales de datos dentro de las columnas SUPER. Además, PartiQL funciona en un modo laxo, en el cual las inconsistencias de tipo no causan errores, sino que devuelven valores nulos. La combinación del procesamiento de consultas sin esquema y laxo hace que PartiQL sea ideal para las aplicaciones de extracción, carga y transferencia (ELT) en las que su consulta SQL evalúa los datos JSON que se capturan en las columnas SUPER.

Integración a Redshift Spectrum: Amazon Redshift admite varios aspectos de PartiQL al ejecutar consultas de Redshift Spectrum a través de JSON, Parquet y otros formatos que tienen datos anidados. Redshift Spectrum solo admite datos anidados que tengan esquemas. Por ejemplo, con Redshift Spectrum puede declarar que sus datos JSON tienen un atributo nested_schemaful_example en un esquema ARRAY<STRUCT<a:INTEGER, b:DECIMAL(5,2)>>. El esquema de este atributo determina que los datos siempre contengan una matriz que tenga una estructura con el entero a y el decimal b. Si los datos cambian para incluir más atributos, el tipo también cambia. Por el contrario, el tipo de datos SUPER no requiere ningún esquema. Puede almacenar matrices con elementos de estructura que tengan diferentes atributos o tipos. Además, algunos valores se pueden almacenar fuera de las matrices.

Para obtener más información acerca de las funciones que admiten el tipo de datos SUPER, consulte lo siguiente:

Consideraciones sobre los datos SUPER

Cuando trabaje con datos SUPER, tenga presente lo siguiente:

  • Utilice la versión 1.2.50 del controlador JDBC, la versión 1.4.17 del controlador ODBC o una posterior y la versión 2.0.872 del controlador Python de Amazon Redshift o una posterior.

    Para obtener más información acerca de los controladores JDBC, consulte Configuración de una conexión JDBC.

    Para obtener más información acerca de los controladores ODBC, consulte Configuración de una conexión ODBC.

  • Busque los ejemplos de esquemas utilizados en los siguientes temas en Conjunto de datos de muestra SUPER.

  • Todos los ejemplos de código SQL utilizados en los temas siguientes se incluyen con el mismo prefijo de S3 para descargar. Estos incluyen el lenguaje de definición de datos (DDL) y las instrucciones COPY, así como ciertas consultas modificadas por TPC-H que funcionan con SUPER.

    Para ver o descargar los archivos SQL, realice alguna de las siguientes operaciones:

    • Descargue el archivo SQL del tutorial SUPER y el archivo TPC-H.

    • Mediante la CLI de Amazon S3, ejecute el siguiente comando. Puede utilizar su propia ruta de destino.

      aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/semistructured-tutorial.sql /target/path aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/super_tpch_queries.sql /target/path

Para obtener más información acerca de las configuraciones de SUPER, consulte Configuraciones SUPER.