9.9 C
Madrid
martes, febrero 25, 2025

Actualización incremental para vistas materializadas de Amazon Redshift en tablas del lago de datos


Desplazamiento al rojo del Amazonas es un almacén de datos en la nube rápido y totalmente administrado que hace que sea rentable analizar sus datos utilizando SQL estándar y herramientas de inteligencia empresarial. Puede utilizar Amazon Redshift para analizar datos estructurados y semiestructurados y consultar sin problemas lagos de datos y bases de datos operativas, utilizando {hardware} diseñado por AWS y ajustes automatizados basados ​​en aprendizaje automático (ML) para ofrecer un rendimiento de precios de primer nivel a escala.

Amazon Redshift cumple Rendimiento de precio desde el primer momento. Sin embargo, también ofrece optimizaciones adicionales que puede utilizar para mejorar aún más este rendimiento y lograr tiempos de respuesta de consultas aún más rápidos desde su almacén de datos.

Una de esas optimizaciones para reducir el tiempo de ejecución de la consulta es precalcular los resultados de la consulta en forma de vista materializada. Las vistas materializadas en Redshift aceleran la ejecución de consultas en tablas grandes. Esto es útil para consultas que involucran agregaciones y uniones de varias tablas. Las vistas materializadas almacenan un conjunto de resultados precalculados de estas consultas y también admiten la capacidad de actualización incremental para tablas locales.

Los clientes utilizan tablas de lagos de datos para lograr un almacenamiento rentable y la interoperabilidad con otras herramientas. Con formatos de tabla abierta (OTF), como Apache Iceberg, los datos se agregan y actualizan continuamente.

Amazon Redshift ahora ofrece la capacidad de actualizar de forma incremental sus vistas materializadas en tablas del lago de datos, incluidos formatos de tablas y archivos abiertos, como Apache Iceberg.

En esta publicación, le mostraremos paso a paso qué operaciones se admiten tanto en formatos de archivos abiertos como en tablas de lagos de datos transaccionales para permitir la actualización incremental de la vista materializada.

Requisitos previos

Para ver los ejemplos de esta publicación, necesita los siguientes requisitos previos:

  1. Puede probar la actualización incremental de vistas materializadas en tablas de lago de datos estándar en su cuenta utilizando un almacén de datos y un lago de datos de Redshift existentes. Sin embargo, si desea probar los ejemplos utilizando datos de muestra, descargar los datos de muestra. Los archivos de muestra son ‘|’ archivos de texto delimitados.
  2. Un Gestión de acceso e identidad de AWS (IAM) función asignada a Amazon Redshift para otorgar la permisos mínimos requerido para usar Espectro de desplazamiento al rojo con Servicio de almacenamiento easy de Amazon (Amazon S3) y Pegamento AWS.
  3. Establecer la función de IAM como predeterminada papel en Amazon Redshift.

Actualización incremental de vistas materializadas en tablas de lago de datos estándar

En esta sección, aprenderá cómo crear y actualizar de forma incremental vistas materializadas en Amazon Redshift en archivos de texto estándar en Amazon S3, manteniendo la actualización de los datos con un enfoque rentable.

  1. Subir el primer archivo, buyer.tbl.1descargado del Requisitos previos sección en el depósito S3 que desee con el prefijo buyer.
  2. Conéctese a su grupo de trabajo sin servidor de Amazon Redshift o al clúster aprovisionado de Redshift mediante Editor de consultas v2.
  3. Crea un esquema externo.
    create exterior schema datalake_mv_demo
    from knowledge catalog   
    database 'datalake-mv-demo'
    iam_role default;

  4. Crea una tabla externa llamada buyer en el esquema externo datalake_mv_demo creado en el paso anterior.
    create exterior desk datalake_mv_demo.buyer(
            c_custkey int8,
            c_name varchar(25),
            c_address varchar(40),
            c_nationkey int4,
            c_phone char(15),
            c_acctbal numeric(12, 2),
            c_mktsegment char(10),
            c_comment varchar(117)
        ) row format delimited fields terminated by '|' saved as textfile location 's3:///buyer/';

  5. Validar los datos de muestra en el cliente externo.
    choose * from datalake_mv_demo.buyer;

  6. Cree una vista materializada en la tabla externa.
    CREATE MATERIALIZED VIEW customer_mv 
    AS
    choose * from datalake_mv_demo.buyer;

  7. Validar los datos en la vista materializada.
    choose * from customer_mv restrict 5;

  8. Sube un nuevo archivo buyer.tbl.2 en el mismo depósito S3 y buyer ubicación del prefijo. Este archivo contiene un registro adicional.
  9. Usando Editor de consultas v2 actualiza la vista materializada customer_mv.
    REFRESH MATERIALIZED VIEW customer_mv;

  10. Valide la actualización incremental de la vista materializada cuando se agregue el nuevo archivo.
    choose mv_name, standing, start_time, end_time
    from SYS_MV_REFRESH_HISTORY
    the place mv_name="customer_mv"
    order by start_time DESC;

  11. Recuperar el número precise de filas presentes en la vista materializada customer_mv.
    choose depend(*) from customer_mv;

  12. Borrar el archivo existente buyer.tbl.1 del mismo depósito S3 y prefijo buyer. Sólo deberías tener buyer.tbl.2 en el buyer prefijo de su depósito S3.
  13. Usando Editor de consultas v2actualiza la vista materializada customer_mv de nuevo.
    REFRESH MATERIALIZED VIEW customer_mv;

  14. Verifique que la vista materializada se actualice de forma incremental cuando se elimine el archivo existente.
    choose mv_name, standing, start_time, end_time
    from SYS_MV_REFRESH_HISTORY
    the place mv_name="customer_mv"
    order by start_time DESC;

  15. Recuperar el recuento de filas precise en la vista materializada customer_mv. Ahora debería tener un registro como presente en el buyer.tbl.2 archivo.
    choose depend(*) from customer_mv;

  16. Modificar el contenido del descargado previamente buyer.tbl.2 archivo modificando la clave de cliente de 999999999 a 111111111.
  17. Guarde el archivo modificado y cárguelo nuevamente en el mismo depósito de S3, sobrescribiendo el archivo existente dentro del buyer prefijo.
  18. Usando Editor de consultas v2actualiza la vista materializada customer_mv
    REFRESH MATERIALIZED VIEW customer_mv;

  19. Valide que la vista materializada se actualizó incrementalmente después de que se modificaron los datos en el archivo.
    choose mv_name, standing, start_time, end_time
    from SYS_MV_REFRESH_HISTORY
    the place mv_name="customer_mv"
    order by start_time DESC;

  20. Valide que los datos en la vista materializada reflejen sus cambios de datos anteriores desde 999999999 a 111111111.
    choose * from customer_mv;

Actualización incremental de la vista materializada en las tablas del lago de datos Apache Iceberg

Iceberg apache es un formato de tabla abierta de lago de datos que se está convirtiendo rápidamente en un estándar de la industria para la gestión de datos en lagos de datos. Iceberg presenta nuevas capacidades que permiten que múltiples aplicaciones trabajen juntas con los mismos datos de manera transaccionalmente consistente.

En esta sección exploraremos cómo Desplazamiento al rojo del Amazonas Puede integrarse perfectamente con Apache Iceberg. Puede utilizar esta integración para crear vistas materializadas y actualizarlas gradualmente utilizando un enfoque rentable, manteniendo la actualización de los datos almacenados.

  1. Inicie sesión en el Consola de administración de AWSir a Atenea amazónicay ejecute el siguiente SQL para crear una base de datos en un catálogo de AWS Glue.
    create database iceberg_mv_demo;

  2. Crear una nueva tabla Iceberg
    create desk iceberg_mv_demo.class (
      catid int ,
      catgroup string ,
      catname string ,
      catdesc string)
      PARTITIONED BY (catid, bucket(16,catid))
      LOCATION 's3:///iceberg/'
      TBLPROPERTIES (
      'table_type'='iceberg',
      'write_compression'='snappy',
      'format'='parquet');

  3. Agregue algunos datos de muestra a iceberg_mv_demo.class.
    insert into iceberg_mv_demo.class values
    (1, 'Sports activities', 'MLB', 'Main League Basebal'),
    (2, 'Sports activities', 'NHL', 'Nationwide Hockey League'),
    (3, 'Sports activities', 'NFL', 'Nationwide Soccer League'),
    (4, 'Sports activities', 'NBA', 'Nationwide Basketball Affiliation'),
    (5, 'Sports activities', 'MLS', 'Main League Soccer');

  4. Validar los datos de muestra en iceberg_mv_demo.class.
    choose * from iceberg_mv_demo.class;

  5. Conéctese a su grupo de trabajo sin servidor de Amazon Redshift o al clúster aprovisionado de Redshift mediante Editor de consultas v2.
  6. Crear un esquema externo
    CREATE exterior schema iceberg_schema
    from knowledge catalog
    database 'iceberg_mv_demo'
    area 'us-east-1'
    iam_role default;

  7. Consulta los datos de la tabla Iceberg de Amazon Redshift.
    SELECT *  FROM "dev"."iceberg_schema"."class";

  8. Cree una vista materializada utilizando el esquema externo.
    create MATERIALIZED view mv_category as
    choose  * from
    "dev"."iceberg_schema"."class";

  9. Validar los datos en la vista materializada.
    choose  * from
    "dev"."iceberg_schema"."class";

  10. Usando Atenea amazónicamodificar la tabla Iceberg iceberg_mv_demo.class e insertar datos de muestra.
    insert into class values
    (12, 'Live shows', 'Comedy', 'All stand-up comedy performances'),
    (13, 'Live shows', 'Different', 'Normal');

  11. Usando Editor de consultas v2actualiza la vista materializada mv_category.
    Refresh  MATERIALIZED view mv_category;

  12. Valide la actualización incremental de la vista materializada después de que se completaron los datos adicionales en la tabla Iceberg.
    choose mv_name, standing, start_time, end_time
    from SYS_MV_REFRESH_HISTORY
    the place mv_name="mv_category"
    order by start_time DESC;

  13. Usando Atenea amazónicamodificar la tabla Iceberg iceberg_mv_demo.class eliminando y actualizando registros.
    delete from iceberg_mv_demo.class
    the place catid = 3;
     
    replace iceberg_mv_demo.class
    set catdesc="American Nationwide Basketball Affiliation"
    the place catid=4;

  14. Validar los datos de muestra en iceberg_mv_demo.class para confirmar que catid=4 ha sido actualizado y catid=3 ha sido eliminado de la tabla.
    choose * from iceberg_mv_demo.class;

  15. Usando Editor de consultas v2Actualizar la vista materializada mv_category.
    Refresh  MATERIALIZED view mv_category;

  16. Valide la actualización incremental de la vista materializada después de que se actualizó una fila y se eliminó otra.
    choose mv_name, standing, start_time, end_time
    from SYS_MV_REFRESH_HISTORY
    the place mv_name="mv_category"
    order by start_time DESC;

Mejoras de rendimiento

Para comprender las mejoras de rendimiento de la actualización incremental en comparación con el recálculo completo, utilizamos el estándar de la industria Prueba comparativa TPC-DS utilizando conjuntos de datos de 3 TB para tablas Iceberg configuradas en copia en escritura. En nuestro punto de referencia, las tablas de hechos se almacenan en Amazon S3, mientras que las tablas de dimensiones están en Redshift. Nosotros creamos 34 vistas materializadas que representa diferentes casos de uso de clientes en un clúster aprovisionado por Redshift de tamaño ra3.4xl con 4 nodos. aplicamos 1% inserciones y eliminaciones en tablas de hechos, es decir, tablas store_sales, catalog_sales y web_sales. Ejecutamos las inserciones y eliminaciones con Spark SQL en EMR sin servidor. Actualizamos las 34 vistas materializadas mediante actualización incremental y medimos latencias de actualización. Repetimos el experimento utilizando un nuevo cálculo completo.

Nuestros experimentos muestran que la actualización incremental proporciona mejoras sustanciales en el rendimiento con respecto al recálculo completo. Después de las inserciones, se realizó una actualización incremental. 13,5 veces más rápido en promedio que el recálculo completo (máximo 43,8 veces, mínimo 1,8 veces). Después de las eliminaciones, se realizó una actualización incremental. 15 veces más rápido en promedio (máximo 47X, mínimo 1,2X). Los siguientes gráficos ilustran la latencia de actualización.

Inserciones

Elimina

Limpiar

Cuando haya terminado, elimine los recursos que ya no necesite para evitar cargos continuos.

  1. Ejecute el siguiente script para limpiar los objetos de Amazon Redshift.
    DROP  MATERIALIZED view mv_category;
    
    DROP  MATERIALIZED view customer_mv;

  2. Ejecute el siguiente script para limpiar las tablas de Apache Iceberg usando Atenea amazónica.
    DROP  TABLE iceberg_mv_demo.class;

Conclusión

Las vistas materializadas en Amazon Redshift pueden ser una poderosa herramienta de optimización. Con la actualización incremental de las vistas materializadas en las tablas del lago de datos, puede almacenar los resultados calculados previamente de sus consultas en una o más tablas base, lo que proporciona un enfoque rentable para mantener datos actualizados. Le recomendamos que actualice las cargas de trabajo de su lago de datos y utilice la función de vista materializada incremental. Si es nuevo en Amazon Redshift, pruebe la Tutorial de introducción y usar el prueba gratuita para crear y aprovisionar su primer clúster y experimentar con la función.

Ver Vistas materializadas en tablas de lagos de datos externos en Amazon Redshift Spectrum para consideraciones y mejores prácticas.


Sobre los autores

Raks KhareRaks Khare es un arquitecto senior de soluciones especializado en análisis en AWS con sede en Pensilvania. Ayuda a clientes de diversas industrias y regiones a diseñar soluciones de análisis de datos a escala en la plataforma AWS. Fuera del trabajo, le gusta explorar nuevos destinos de viajes y gastronomía y pasar tiempo de calidad con su familia.

Tahir Aziz es arquitecto de soluciones de análisis en AWS. Ha trabajado en la construcción de almacenes de datos y soluciones de large knowledge durante más de 15 años. Le encanta ayudar a los clientes a diseñar soluciones de análisis de un extremo a otro en AWS. Fuera del trabajo, le gusta viajar y cocinar.

Raza Hafeez es gerente senior de productos en Amazon Redshift. Tiene más de 13 años de experiencia profesional en la creación y optimización de almacenes de datos empresariales y le apasiona permitir que los clientes se den cuenta del poder de sus datos. Se especializa en migrar almacenes de datos empresariales a AWS Trendy Information Structure.

Enrico Siragusa es ingeniero sénior de desarrollo de software program en Amazon Redshift. Contribuyó al procesamiento de consultas y vistas materializadas. Enrico tiene un M.Sc. en Ciencias de la Computación de la Universidad de Paris-Est y un Ph.D. en Bioinformática de la Escuela Internacional de Investigación Max Planck en Biología Computacional y Computación Científica en Berlín.

Related Articles

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

Stay Connected

0SeguidoresSeguir
0SuscriptoresSuscribirte
- Advertisement -spot_img

Latest Articles