Data Pipelines
Raúl Estrada
Octubre 2024
Disclaimer
“Las opiniones expresadas en esta presentación son de
exclusiva responsabilidad del autor y no necesariamente de su
empleador y/o de sus clientes. Para fines de claridad en la
demostración no se garantiza la precisión, la exactitud ni la
completez de la información provista aquí. Esta presentación
tiene fines educativos y no deberá ser tomada para guiar
decisiones de compra”
Con algunas Ilustraciones de:
Denisse Yu - deniseyu.io
Con algunos diagramas de:
Jason Gustafson - github.com/hachikuji
> whoami
• Lic. en Matemáticas y Lic. en Ciencias de la Computación
• Ingeniero en Sistemas Computacionales
• Maestro en Ciencias Computacionales
• Maestro en Administración Financiera
• BEA Systems – Arquitecto de soluciones (2004 – 2008)
• Oracle Latam – Arquitecto empresarial (2009 – 2012)
• Oracle Inc. – Data architect (2012 – 2014)
• Twitter: @HerrRul (inglés) @BusinessRul (español)
> whoami
• Lenguajes
• Libros
• Meetups
• Kafka Community Catalyst
(2020, 21... 2024)
• Twitter: @BusinessRul - Español
@HerrRul - Inglés
• GitHub: github.com/uurl
Ciclo de tristeza
Ciencia de
Ingeniería
datos
de datos
Operaciones Negocio
A quién
culpo Quién fue
Peticiones
Los datos tienen 4 atributos
claVe
• Volumen: Datos por unidad de capacidad
• Velocidad: Datos por unidad de tiempo
• Variedad: Tipo de dato
• Valor: Cuánto cuesta ≠ cuánto vale
“Big Data” = Buzzword
La ingeniería de datos no tiene que ver
con el tamaño de los datos, sino con el
valor dentro de los datos.
Las transacciones
Teorema CAP
Algoritmos de consenso
• PAXOS (Zookeeper, Cassandra, Kafka, Mesos)
• Proof of work (Blockchain, Minería, BTC, ETH)
• RAFT (Kubernetes, Docker)
Bases de datos relacionales
Ej: MySQL, Oracle, PostgreSQL, SQLServer
Fortalezas Debilidades
• Cuando se requieren
transacciones ACID • Sistemas que necesitan
• Buscar datos por diferentes claves
con índices secundarios
tolerar las fallas de
• Cuando se requiere una fuerte partición
consistencia en resultados y
consultas • Gestión sin esquemas
• Procesamiento convencional de
transacciones en línea
• Manejar cualquier
• Proyectos con aversión al riesgo entidad compleja que
que buscan tecnologías muy
maduras y habilidades
requiera hacer
ampliamente disponibles múltiples joins para
• Productos para clientes
tradicionales familiarizados con
obtener la entidad
BD relacionales completa de vuelta.
Almacenes llave-valor
Ej: Redis, Riak, DynamoDB
Fortalezas Debilidades
• Manejo de lectura y escritura en • Correlacionar datos entre
lotes pequeños, continuos y
potencialmente volátiles
diferentes conjuntos de
• Hardware con acceso rápido a llaves
memoria o almacenamiento • Guardar transacciones
SSD múltiples
• Almacenar información de • Lograr buen desempeño en
sesión, preferencias de usuario búsquedas de llaves a
y carritos de compras
partir de valores
• Simplifican la actualización del
• Operar con llaves múltiples
software con soporte de campos
opcionales • Cuando se requiere
• Agregar y eliminar campos sin devolver solo valores
tener que construir un sistema parciales
de migración de esquema
Almacenes de documentos
Ej: MongoDB, Couchbase, RavenDB
Fortalezas Debilidades
• Manejo de una amplia variedad • Operaciones atómicas en
de patrones de acceso y tipos de documentos
datos
• Manejo de lecturas con baja • Consultar grandes estructuras
latencia de datos agregados que
• Manejo de datos generados por el cambien frecuentemente
usuario que cambian con • Cuando se requiere devolver
frecuencia solo valores parciales
• Simplifican la actualización del
software con soporte de campos
• Cuando se quieren joins
opcionales • Cuando se quiere el uso de
• Agregar y eliminar campos sin llaves foráneas
tener que construir un sistema de • Actualizaciones parciales de
migración de esquema
documentos (especialmente
• Despliegue en dispositivos
móviles
subdocumentos/hijos)
Almacenes de columnas
Ej: Cassandra, HBase, Accumulo
Fortalezas Debilidades
• Cuando la alta disponibilidad • Prototipos iniciales o
es crucial y la consistencia situaciones donde habrá
eventual es tolerable cambios significativos en
• Event Sourcing las consultas (hay alto
• Registro de flujos continuos de costo para los cambios en
datos que no requieren consultas en comparación
garantía de consistencia a los cambios de
• Almacenar un conjunto de esquema)
datos en constante • Se requiere integridad
crecimiento al que se accede referencial
raramente • Procesamiento simultáneo
• Manejo de datos con de varias columnas
caducidad frecuente
Almacenes de grafos
Ej: Neo4J, Titan, Giraph
Fortalezas Debilidades
• Manejo de entidades que
tienen una gran cantidad de • Situaciones de
relaciones, como grafos escritura de alto
sociales, sistemas de etiquetas
o cualquier dominio rico en volumen
enlaces • Sirviendo y
• Servicios de enrutamiento y
ubicación almacenando datos
• Motores de recomendación o binarios
mapeo de datos de usuario
• Construir relaciones
• Consulta sin
dinámicamente entre objetos restricciones a través
con propiedades dinámicas de conjuntos de datos
• Alta profundidad de joins
masivos
Teorema CAP
La triste realidad
• Batch -> Dual ETL
• Alta latencia 1. Extract
2. Transform
• Transformaciones 3. Load
complejas y • Cada paso mete
asíncronas errores
• Archivos intermedios
• Herramientas caras
• Disminuye el ancho
de banda
• Aumenta la
complejidad
Embracing change
Hay dos formas de resolver las cosas:
1. La caduca (Batch, ETL)
2. La que aún es muy nueva (Streaming).
¿Cuál solución ganará? Todo cambia:
• Open Source • Los datos
• Operable
• Monitoreable
• Las métricas
• Eficiente • Los modelos
• Escalable
As is
To be
Kafka?
Kafka
Distributed Streaming Open Source platform Concepts Family
Created in 2011, Wrote in Scala
Apache Project since 2011 Producer Kafka Core
Maintained by Confluent Inc. since 2014 Consumer Kafka Connect
Broker Schema Registry
Distributed system: Multiple components on Cluster Kstreams
different machines communicated and Topic KSQL
coordinated via messages to appear as a Partition Kraft
single system to the end user Offset
Groups
Validación
En tiempo real
Enriquecimiento
En tiempo real
Reutilización
En tiempo real
Kafka Connect
Schema Registry
Transformación
En tiempo real
#EOF