Ingesta de streaming a una vista materializada - Amazon Redshift

Ingesta de streaming a una vista materializada

La ingesta de streaming proporciona una ingesta de datos de alta velocidad y baja latencia de Amazon Kinesis Data Streams o Amazon Managed Streaming para Apache Kafka a una base de datos de Amazon Redshift aprovisionada o a una base de datos de Amazon Redshift sin servidor. Los datos llegan a una vista materializada de Redshift que está configurada para el propósito. Eso da como resultado un acceso rápido a datos externos. La ingesta de streaming reduce el tiempo de acceso a los datos y reduce el costo de almacenamiento. Puede configurarlo para el clúster de Amazon Redshift o para el grupo de trabajo de Amazon Redshift sin servidor, con una pequeña recopilación de comandos SQL. Después de la configuración, cada actualización de la vista materializada, puede ingerir cientos de megabytes de datos por segundo.

Cómo fluyen los datos de un servicio de streaming a Redshift

Ayuda a entender cómo funciona la ingesta de streaming y los objetos de base de datos que se utilizan en el proceso. Los datos fluyen directamente de un proveedor de flujo de datos a un clúster aprovisionado de Amazon Redshift o a un grupo de trabajo de Amazon Redshift sin servidor. No hay una zona de aterrizaje temporal, como un bucket de Amazon S3. El clúster aprovisionado o grupo de trabajo es el consumidor de flujos. En la base de datos de Redshift, los datos leídos del flujo aterrizan en una vista materializada. Los datos se procesan a medida que llegan. Por ejemplo, los valores JSON se pueden consumir y asignar a las columnas de datos de una vista materializada, mediante SQL. Cuando la vista materializada se actualiza, Redshift consume datos de las particiones asignadas de datos de Kinesis o particiones de Kafka hasta que la vista se actualiza con el flujo.

Los casos de uso para la ingesta de streaming de Amazon Redshift implican datos que se generan continuamente y que se deben procesar en un periodo corto o latencia, desde su generación. Esto se denomina comúnmente análisis casi en tiempo real. Los orígenes pueden incluir dispositivos TI, dispositivos de telemetría del sistema y datos de secuencias de clics de un sitio web o una aplicación muy activos.

Prácticas recomendadas de análisis de datos para mejorar el rendimiento

Al configurar la ingesta de streaming, hay opciones sobre cómo puede analizar los datos entrantes. Las prácticas pueden incluir la lógica empresarial o el formateo a medida que llegan los datos. Sugerimos las siguientes prácticas recomendadas para ayudarle a evitar errores o la pérdida de datos. Estas se derivan de pruebas internas y ayudan a los clientes a solucionar problemas de configuración y análisis.

  • Extracción de valores de los datos transmitidos: si utiliza la función JSON_EXTRACT_PATH_TEXT en la definición de vista materializada para analizar o destruir JSON transmitido, puede afectar considerablemente al rendimiento y a la latencia. La explicación es que, por cada columna extraída con JSON_EXTRACT_PATH_TEXT, se vuelve a analizar el JSON entrante. Después de esto, se produce la conversión de tipos de datos, el filtrado y los cálculos de lógica empresarial. Esto significa, por ejemplo, que si extrae 10 columnas de los datos JSON, cada registro JSON se analiza 10 veces, lo que incluye lógica adicional. Esto se traduce en una mayor latencia de ingesta. Un enfoque alternativo que recomendamos es utilizar la función JSON_PARSE para convertir los registros JSON al tipo de datos SUPER de Redshift. Una vez que los datos transmitidos lleguen a la vista materializada, use PartiQL para extraer cadenas individuales de la representación de SUPER de los datos JSON. Para obtener más información, consulte Consulta de datos semiestructurados.

    Además, tenga en cuenta que JSON_EXTRACT_PATH_TEXT tiene un máximo de tamaño de datos de 64 KB. Por lo tanto, si algún registro JSON tiene más de 64 KB, al procesarlo con JSON_EXTRACT_PATH_TEXT se produce un error.

  • Asignación de un flujo de Amazon Kinesis Data Streams o un tema de Amazon MSK a una vista materializada múltiple: no recomendamos crear varias vistas materializadas para ingerir datos desde un solo flujo o tema. Esto se debe a que cada vista materializada crea un consumidor para cada porción del flujo o la partición de Kinesis Data Streams en el tema de Kafka. Como resultado, puede producirse una limitación o superación del rendimiento del flujo o el tema. También puede suponer un costo mayor, ya que se ingieren los mismos datos varias veces. Cuando configure la ingesta de streaming, le recomendamos que cree una vista materializada para cada flujo o tema.

    Si el caso de uso requiere ingerir datos de un flujo de KDS o un tema de MSK en varias vistas materializadas, antes de hacerlo, consulte el Blog de macrodatos de AWS, específicamente la publicación Best practices to implement near-real-time analytics using Amazon Redshift Streaming Ingestion with Amazon MSK.

Comportamiento y tipos de datos de ingesta de streaming

En la siguiente tabla se describen los detalles del comportamiento técnico y los límites de tamaño de los distintos tipos de datos. Le recomendamos que se familiarice con ellos antes de configurar una vista materializada para la ingesta de streaming.

Característica o comportamiento Descripción
Límite de longitud de los temas de Kafka

No es posible utilizar un tema de Kafka con un nombre de más de 128 caracteres (sin incluir las comillas). Para obtener más información, consulte Nombres e identificadores.

Actualizaciones incrementales e instrucciones JOIN en una vista materializada

La vista materializada debe ser mantenible de forma incremental. El recálculo completo no es posible para Kinesis ni Amazon MSK porque, de forma predeterminada, no conservan el historial de flujos o temas más allá de 24 horas o 7 días. Puede establecer periodos de retención de datos más largos en Kinesis o Amazon MSK. No obstante, esto puede suponer un mayor mantenimiento y costo. Además, las instrucciones JOIN no se admiten actualmente en vistas materializadas creadas en un flujo de Kinesis, o en un tema de Amazon MSK. Después de crear una vista materializada en su flujo o tema, puede crear otra para unir su vista materializada de streaming a otras vistas materializadas, tablas o vistas.

Para obtener más información, consulte REFRESH MATERIALIZED VIEW.

Análisis de registros

La ingesta de streaming de Amazon Redshift no admite el análisis de registros agregados por Kinesis Producer Library (Conceptos clave de KPL: agregación). Los registros agregados se ingieren, pero se almacenan como datos de búfer de protocolo binario. Para obtener más información, consulte Búferes de protocolo. Según cómo inserte los datos en Kinesis, es posible que tenga que desactivar esta característica.

Descompresión

VARBYTE no admite la descompresión. Debido a esto, los registros que contienen datos comprimidos no se pueden consultar en Redshift. Descomprima los datos antes de agregarlos al flujo de Kinesis o al tema de Amazon MSK.

Tamaño de registro máximo

El tamaño máximo de cualquier campo de registro que Amazon Redshift puede ingerir desde Kinesis o Amazon MSK es ligeramente inferior a 1 MB. Los siguientes puntos detallan el comportamiento:

  • Longitud de VARBYTE máxima: para la ingesta de streaming, el tipo VARBYTE admite datos con una longitud máxima de 1 024 000 bytes. Kinesis limita las cargas a 1 MB.

  • Límites de mensajes: la configuración predeterminada de Amazon MSK limita los mensajes a 1 MB. Además, si un mensaje incluye encabezados, la cantidad de datos se limita a 1 048 470 bytes. Con la configuración predeterminada, no hay problemas con la ingesta. No obstante, puede cambiar el tamaño de mensaje máximo para Kafka, y por tanto para Amazon MSK, a un valor mayor. En este caso, es posible que el campo clave/valor de un registro de Kafka o el encabezado, superen el límite de tamaño. Estos registros pueden provocar un error y no se realiza una ingesta de ellos.

nota

Amazon Redshift admite un tamaño máximo de 1 024 000 bytes para la ingesta de streaming desde Kinesis o Amazon MSK, aunque Amazon Redshift admite un tamaño máximo de 16 MB para el tipo de datos VARBYTE.

Registros de errores

En cada caso en que no se pueda realizar la ingesta de un registro en Redshift porque el tamaño de los datos supera el máximo, se omitirá ese registro. La actualización de la vista materializada se sigue realizando correctamente en este caso y se escribe un segmento de cada registro de error en la tabla del sistema SYS_STREAM_SCAN_ERRORS. Los errores que son resultado de la lógica empresarial, como un error en un cálculo o un error resultante de una conversión de tipo, no se omiten. Pruebe la lógica cuidadosamente antes de agregarla a la definición de la vista materializada.

Conectividad privada de varias VPC de Amazon MSK

La conectividad privada de varias de Amazon MSK no es compatible actualmente con la ingesta de streaming de Redshift. Como alternativa, puede utilizar el emparejamiento de VPC para conectar VPC o AWS Transit Gateway para conectar VPC y redes en las instalaciones a través de un hub central. Cualquiera de estas opciones permite a Redshift comunicarse con un clúster de Amazon MSK o con Amazon MSK sin servidor en otra VPC.

Actualización automática, uso y activación

Las consultas de actualización automática para una vista o vistas materializadas se tratan como cualquier otra carga de trabajo de usuario. La actualización automática carga los datos del flujo a medida que llegan.

La actualización automática se puede activar explícitamente para una vista materializada creada para la ingesta de streaming. Para ello, especifique AUTO REFRESH en la definición de la vista materializada. La actualización manual es la opción predeterminada. Para especificar la actualización automática de una vista materializada existente para la ingesta de streaming, puede ejecutar ALTER MATERIALIZED VIEW para activarla. Para obtener más información, consulte CREATE MATERIALIZED VIEW o ALTER MATERIALIZED VIEW.

Ingesta de streaming y Amazon Redshift sin servidor

Las instrucciones de instalación y configuración que se aplican a la ingesta de streaming de Amazon Redshift en un clúster aprovisionado también se aplican a la ingesta de streaming en Amazon Redshift sin servidor. Es importante para especificar el nivel necesario de RPU para respaldar la ingesta de streaming con actualización automática y otras cargas de trabajo. Para obtener más información, consulte Facturación de Amazon Redshift sin servidor.

Nodos de Amazon Redshift en una zona de disponibilidad diferente que el clúster de Amazon MSK

Cuando configure la ingesta de streaming, Amazon Redshift intenta conectarse a un clúster de Amazon MSK en la misma zona de disponibilidad, si el reconocimiento de bastidor está habilitado para Amazon MSK. Si todos los nodos se encuentran en zonas de disponibilidad distintas a la del clúster de Amazon Redshift, puede incurrir en costos de transferencia de datos entre zonas de disponibilidad. Para evitarlo, mantenga al menos un nodo del clúster de agentes de Amazon MSK en la misma zona de disponibilidad que el clúster o grupo de trabajo aprovisionados de Redshift.

Actualización de la ubicación de inicio

Después de crear una vista materializada, su actualización inicial comienza desde TRIM_HORIZON de un flujo de Kinesis o desde el desplazamiento 0 de un tema de Amazon MSK.

Formatos de datos

Los formatos de datos admitidos se limitan a aquellos que se pueden convertir desde VARBYTE. Para obtener más información, consulte Tipo VARBYTE y Operadores VARBYTE.

Agregación de registros a una tabla

Puede ejecutar ALTER TABLE APPEND para agregar filas a una tabla de destino desde una vista materializada de origen existente. Esto solo funciona si la vista materializada está configurada para la ingesta de streaming. Para obtener más información, consulte ALTER TABLE APPEND.

Ejecución de TRUNCATE o DELETE

Puede eliminar registros de una vista materializada que se usa para la ingesta de streaming, mediante lo siguiente:

  • TRUNCATE: esto elimina todas las filas de una vista materializada configurada para la ingesta de streaming. No hace un análisis de la tabla. Para obtener más información, consulte TRUNCATE.

  • DELETE: esto elimina todas las filas de una vista materializada configurada para la ingesta de streaming. Para obtener más información, consulte DELETE.