Las organizaciones que son capaces de generar y obtener volúmenes importantes de datos necesitan de una forma eficiente para almacenarlos y utilizarlos. Cuando los datos llegan desde diferentes fuentes usando distintos formatos y estructuras, puede llegar a ser un caos manejar esos datos que son utilizados para generar reportes, ayudar a tomar decisiones, ver el estado actual de la organización, crear dashboards, etc.
Las empresas pueden usar un Data Lake, que es el lugar centralizado donde se almacenan los datos, para después procesarlos. También pueden usar un Data Warehouse como AWS Redshift y Snowflake para mantener los datos y procesarlos como tablas. Los warehouse pueden llegar a ser muy costosos. Por otro lado, en un Data Lake que solamente almacena los datos brutos, tal como llegan, es difícil mantener el control y se apoyan con motores externos que pueden tratar esos datos como tablas, pero al ser solamente archivos suelen ser usados únicamente para consultar datos.
Iceberg es un formato de tabla para almacenar archivos en un storage (S3, GCS, Local systems) y puedes tratarlos como una tabla optimizada. Iceberg es ideal para consultas masivas analíticas usando SQL integrándose con motores para realizar las operaciones. Es un componente importante en las arquitecturas Lakehouse.
El formato de tabla Iceberg
Apache Iceberg es un estándar open source desarrollado por Netflix para manipular archivos y realizar operaciones SQL. Los datos son tratados como tablas, proveyendo una abstracción que no solamente permite consultar e insertar datos, también soporta operaciones más avanzadas como time travel y schema evolution.
La metadata en iceberg juega un rol importante para el performance de las consultas, son archivos que contienen estadísticas sobre columnas, tablas y particiones. Cuando hay consultas sobre una tabla, la metadata contiene información útil para entregar una respuesta sin siquiera revisar los datos, y optimiza el escaneo de archivos.
Características
- Operaciones SQL: consultar, insertar, actualizar y eliminar datos
- Viajes en el tiempo: iceberg permite consultar estados pasados de las tablas. Por ejemplo, los datos que había hace un mes.
- Evolución del esquema: los cambios en una tabla no requieren crear nuevamente la tabla. Iceberg permite alterar las columnas sin afectar a los datos existentes.
- Partición: son vitales para evitar consultar en todos los archivos y proveer un alto rendimiento. Las consultas pueden revisar los archivos que pertenecen a una partición en vez de hacer un escaneo completo
- La metadata permite que los motores SQL hagan una planificación optimizada para las consultas.
Storage
Iceberg es un formato tabla que puede ser usado en muchos storage diferentes como aws s3, gcp objects, o cualquier file system. Siempre y cuando cumplas con el formato tabla iceberg, podrás tratar a los archivos como tablas. Puedes utilizar Iceberg con el storage más barato o accesible según el set tecnologías disponible.
Iceberg utiliza una arquitectura de archivos para optimizar la manipulación de los datos. La estructura iceberg se divide en las siguientes partes:
- El catálogo conoce las tablas que existen, y cuales son los metadatos que las referencian
- Cada tabla iceberg contiene archivos con metadatos para rastrear schemas y particiones de la tabla,
- Los archivos manifiesto son los que conocen donde están los datos y mantienen las estadísticas sobre filas y columnas.
- Finalmente se encuentran los datos
Engine
El formato Iceberg se puede integrar con motores sql. Hay motores de código abierto, privados, en cloud, proveídos como servicios y los empresariales que incluyen funcionalidades como autenticación e interfaz de usuario. La cantidad de datos a procesar, concurrencia, usuarios y tipo de consultas son importantes para elegir el motor que consulta y manipula datos en iceberg
También puedes usar el motor sql junto a otra plataforma para agregar autenticación, autorización, transformación de datos y más. en un ecosistema muy plegable donde puedes agregar, eliminar y modificar componentes a voluntad siguiendo un sistema desacoplado.
Lakehouse, una pieza importante
Lakehouse es una arquitectura que llegó para integrar los bajos costos de un data lake y el alto rendimiento de un warehouse. Iceberg calza perfectamente como uno de los componentes principales en un Lakehouse por su performance y características mencionadas.
Puedes comenzar un proyecto desde cero o migrar desde otro warehouse o data lake eligiendo tu stack tecnológico dependiendo de tus necesidades, posibilidades en dinero, tiempo y habilidades técnicas para integrar distintas alternativas de storage, motores sql, autenticación, herramientas para transformar y disponibilizar datos
Cuidados
Algunos puntos a considerar cuando utilizamos iceberg
- Al soportar time travel, esos datos en formato tabla iceberg puede contener una cadena de snapshots sin referencias por la metadata. Por lo que es recomendable realizar limpiezas periódicas en las tablas
- Las particiones son una gran funcionalidad. Define las particiones en cada tabla de acuerdo a las consultas más frecuentas
- Las estadísticas y metadata de una tabla son sincronizadas junto a cambios en los datos. Algunas inserciones pueden ser costosas en procesamiento al requerir muchos cálculos sobre columnas y filas. Puedes configurar las estadísticas necesarias para cada tabla.
Iceberg lleva un tiempo con promesas y capacidades que se defienden por sí solas. Iceberg fue ideado para soportar tablas enormes a bajo costo. Decenas de petabytes de datos pueden ser procesados sin necesidad de un gran motor SQL distribuido.
¿Ya estás listo para dejar archivos gigantes en un storage, conectarlos con un engine SQL, y hacer queries?
