Normalización de datos
Los datos llegan a cuentas de lago de datos en varios formatos. Estos formatos incluyen formatos legibles humanos, como archivos JSON, .CSV o XML, y formatos binarios comprimidos, como .tar o .gz. Los datos de llegada también vienen en muchos tamaños, desde unos pocos archivos editados hasta una exportación de una tabla SQL completa. Los datos también pueden venir en un gran número de archivos pequeños, de unos pocos KB cada uno, como eventos en tiempo real de una solución de IoT.
Aunque Azure Data Lake Storage Gen2 admite el almacenamiento para todo tipo de datos sin restricciones, debe tener especial cuidado con los formatos de los datos, para garantizar la eficacia de la canalización de procesamiento y optimizar los costes.
Muchas organizaciones ahora normalizan su formato de ingesta y separan el proceso del almacenamiento. Por este motivo, el formato Delta Lake se ha convertido en el estándar preferido para la ingesta de datos a través de la capa de enriquecimiento. Desde la capa de enriquecimiento, el equipo de la aplicación de datos puede servir datos en un formato que refleje su caso de uso.
Nota
Use Delta Lake para admitir casos de uso de lotes y streaming para la ingesta de datos inicial, a través de la capa de enriquecimiento.
En este artículo se proporciona información general sobre Delta Lake, su rendimiento y cómo le ayuda a lograr compatibilidad con el cumplimiento. También sobre la normalización de los datos, a medida que fluyen de la capa de origen a la de enriquecimiento.
Delta Lake
Delta Lake es una capa de almacenamiento de código abierto, que ofrece transacciones ACID (atomicidad, coherencia, aislamiento y durabilidad) para cargas de trabajo de macrodatos y para Apache Spark. Tanto Azure Synapse Analytics como Azure Databricks son compatibles con Linux Foundation Delta Lake.
Características clave de Delta Lake
Característica | Descripción |
---|---|
Transacciones ACID | Los lagos de datos normalmente se rellenan mediante varios procesos y canalizaciones, algunos de los cuales escriben datos simultáneamente con las lecturas. Los ingenieros de datos tenían que realizar un proceso manual propenso a errores para garantizar la integridad de los datos, antes de que Delta Lake y las transacciones empezaran a usarse. Delta Lake aporta las transacciones ACID conocidas a los lagos de datos. Proporciona el nivel de aislamiento más sólido, con serialización. Para más información, consulte Profundización en Delta Lake: desempaquetado del registro de transacciones. |
Control escalable de metadatos | En términos de macrodatos, incluso los metadatos pueden ser "macrodatos". Delta Lake trata los metadatos igual que otros datos. Usa la potencia de procesamiento distribuido de Spark para controlar todos los metadatos. Por ello, Delta Lake puede administrar fácilmente tablas de escala de petabytes con miles de millones de archivos y particiones. |
Viaje en el tiempo (control de versiones de datos) | La capacidad de "deshacer" un cambio, o de volver a una versión anterior, es una característica clave de las transacciones. Delta Lake proporciona instantáneas de los datos, lo que le permite revertir a versiones anteriores de datos para las auditorías, las reversiones o la reproducción de experimentos. Obtenga más información en Introducción al viaje en el tiempo de Delta Lake para los lagos de datos a gran escala. |
Formato abierto | Apache Parquet, el formato de base de referencia para Delta Lake, le permite aplicar una compresión eficiente y esquemas de codificación. |
Lote unificado y origen y receptor de streaming | Una tabla en Delta Lake es simultáneamente una tabla de lotes y un origen y receptor de streaming. El streaming de ingesta de datos, la reposición histórica de lotes y las consultas interactivas funcionan de manera inmediata. |
Aplicación de esquemas | La aplicación de esquemas le ayuda a asegurarse de que tiene los tipos de datos correctos y las columnas necesarias, lo que evita la incoherencia de datos causada por datos incorrectos. Para más información, consulta Delta Lake en detalle: obligatoriedad y evolución de esquemas |
Evolución del esquema | Delta Lake le permite realizar cambios, aplicados automáticamente, a un esquema de tablas, sin necesidad de escribir DDL de migración. Para más información, consulta Delta Lake en detalle: obligatoriedad y evolución de esquemas |
Historial de auditorías | El registro de transacciones de Delta Lake registra detalles sobre cada cambio realizado a sus datos. Estos registros proporcionan una pista de auditoría completa de todos los cambios. |
Actualizaciones y eliminaciones | Delta Lake es compatible con las API de Scala, Java, Python y SQL para varias funcionalidades. La compatibilidad con las operaciones MERGE, UPDATE y DELETE le ayuda a satisfacer los requisitos de cumplimiento. Para más información, consulte Presentación de la versión 0.6.1 de Delta Lake, Presentación de la versión 0.7 de Delta Lake y Operaciones de upsert y eliminaciones simples y confiables en tablas de Delta Lake con las API de Python (lo que incluye fragmentos de código para los comandos DML de MERGE, UPDATE y DELETE). |
100 % compatible con la API de Apache Spark | Los desarrolladores pueden usar Delta Lake con cambios mínimos en sus canalizaciones de datos actuales, ya que es totalmente compatible con las implementaciones de Spark existentes. |
Para obtener más información, consulte Proyecto Delta Lake.
Para ver la documentación completa, consulte la página de la documentación de Delta Lake
Rendimiento
El uso de muchos archivos pequeños resulta, a menudo, en un rendimiento poco óptimo y mayores costes, por el aumento de las operaciones de lectura y lista. Azure Data Lake Storage Gen2 está optimizado para archivos más grandes, que permiten que los trabajos de análisis se ejecuten más rápido y con un coste menor.
Delta Lake incluye muchas características que pueden ayudarle a optimizar el rendimiento con la administración de archivos.
Algunos ejemplos son los siguientes:
- El registro de transacciones minimiza las operaciones LIST costosas.
- Z-Ordering (agrupación en clústeres multidimensionales) permite la delegación de predicado optimizada para los filtros de consulta.
- El almacenamiento en caché nativo y las optimizaciones de consultas reducen la cantidad de análisis de almacenamiento que necesita. Para más información, consulte Optimización del rendimiento con el almacenamiento en caché.
- OPTIMIZE fusiona archivos pequeños con otros más grandes.
Haga que estas optimizaciones formen parte del proceso de carga de datos, para mantener la actualización y el rendimiento de los datos.
Creación de particiones de un lago de datos
La creación de particiones de datos implica la organización de datos en el almacén de datos, para que pueda administrar datos a gran escala y controlar el acceso a los datos. La creación de particiones puede mejorar la escalabilidad, reducir la contención y optimizar el rendimiento.
Al particionar el lago de datos, asegúrese de que la configuración:
- No pone en peligro la seguridad
- Tiene un aislamiento claro y está alineada con su modelo de autorización de datos
- Se ajusta bien al proceso de ingesta de datos
- Tiene una ruta de acceso bien definida para el acceso óptimo a los datos
- Admite tareas de administración y mantenimiento
Procedimientos generales
Los procedimientos generales para el diseño de particiones de datos son:
- Debemos centrarnos en la seguridad desde el principio y diseñar las particiones de datos junto con la autorización.
- Es posible que desee permitir la redundancia de datos a cambio de seguridad. Defina una convención de nomenclatura y cumpla con ella.
- Puede anidar varias carpetas, pero siempre tienen que ser coherentes.
- Incluya un elemento de tiempo en las estructuras de carpetas y los nombres de archivo.
- No debe iniciar la estructura de carpetas con particiones de fecha. Es mejor mantener las fechas en el nivel de carpeta inferior.
- No deben combinarse formatos de archivo mixtos ni productos de datos distintos en una única estructura de carpetas.
Sugerencia
Las estructuras de carpetas deben tener estrategias de creación de particiones, que puedan optimizar los patrones de acceso y los tamaños de archivo adecuados. En las zonas mantenidas, planee la estructura para lograr una recuperación óptima; tenga cuidado de no elegir una clave de partición con una alta cardinalidad, ya que conlleva una creación de particiones excesiva que, a su vez, da lugar a tamaños de archivo poco óptimos.
Para más información sobre las zonas de lago de datos, consulte Zonas y contenedores de lago de datos
Compatibilidad con el cumplimiento
Delta Lake agrega una capa transaccional para proporcionar una administración de datos estructurada sobre el lago de datos. Esta adición puede simplificar y acelerar drásticamente su capacidad de localizar y quitar información personal (también conocida como "datos personales") a petición del consumidor. La capa transaccional admite operaciones como DELETE, UPDATE y MERGE. Para más información, consulte Procedimientos recomendados: cumplimiento del RGPD usando Delta Lake.
Resumen
Aplique en la plataforma las normalizaciones de datos enumeradas en este artículo. Comience con el formato Delta Lake y después empiece a agregar procesos para la optimización y el cumplimiento. Es posible que decida crear un servicio que ejecute algunas de las rutas de optimización según una programación. o crear un servicio de cumplimiento que quite la información personal.