Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MODELADO DE
DATOS ORIENTADOS A
LA ANALÍTICA Y A LA
TOMA DE DECISIONES
2.1 Construir y diseñar modelos de datos
(*) la abreviación Fk significa foreign key (clave foránea que vincula una tabla con otra).
Ventajas:
Brinda integridad.
Evita redundancia, duplicados, entre otras cosas.
Podemos relacionar las “visitas” con los “clientes” por medio de los campos:
Tabla 3: Ejemplo simple de tabla desnormalizada creada bajo una de las tantas
técnicas de desnormalización
Nombre de la tabla: tablaVisitas
id_visita fecha_visita hora_visita id_cliente nombre telefono email
1 01/05/2020 15:20 1 Juana 543511 juana@gmail.com
2 04/05/2020 16:15 1 Juana 543511 juana@gmail.com
3 10/05/2020 13:30 2 Carlos 543512 carlos@gmail.com
4 15/11/2019 08:45 3 Josefina 543513 josefina@gmail.com
Fuente: elaboración propia.
Ventajas:
DIM_RUBROS DIM_COMERCIOS
rubro_sk comercio_sk
rubro comercio
rubro_familia comercio_categoria
rubro_bk Comercio_bk
FACT_VISITAS
tiempo_sk
comercio_sk
rubro_sk
DIM_TIEMPO
cantidad_visitas
tiempo_sk
fecha
anio
mes
dia
Fuente: elaboración propia.
Tabla 4: Resultado
Comercio Cantidad_Visitas
El buen pastor 15.250.030
Mercado Electrónico 11.000.392
Electronic Mart 9.765.476
Jhonny Market 5.005.698
La casa de los Repuestos 2.986.349
Fuente: elaboración propia.
El diseño propuesto (esquema de estrella) nos permite evaluar los hechos (cantidad
de visitas) desde distintas perspectivas (rubros, comercios y tiempo). Las tablas se
relacionarán entre sí mediante sus surrogate keys (SK) o claves subrogadas (únicas),
mientras que la relación de las dimensiones con sus respectivos modelos
transaccionales se representará mediante las business keys o claves de negocio (no
siempre presentes).
Como se mencionó previamente, el diseño dependerá de las técnicas y teorías que se
tomen en cuenta para el desarrollo del modelo de datos. Encontrará, para esto, gran
variedad de información al respecto en los libros de referencia y la web. Por supuesto
que detrás del diseño existe una extensa teoría acerca de técnicas y arquitecturas que
no vamos a examinar a nivel de detalle en esta lectura, por lo que si usted desea
especializarse en el tema le recomendamos consultar los libros de referencia
mencionados al final de la lectura.
Acabamos de representar un modelo de datos OLAP (online analytical processing) que,
más allá de algunas semejanzas, difiere de un modelo de datos OLTP (online transaction
processing) en muchos aspectos, entre los cuales podemos nombrar:
Big data es un término que involucra muchas tecnologías y arquitecturas. A veces sus
términos pueden parecer complejos e incluso hay quienes confunden algunos de ellos,
tal es el caso de data warehouse y data lake.
Como vimos anteriormente, el término de data warehouse está estrechamente ligado a
bases de datos con fines analíticos. Es un repositorio central en donde se guardan los
datos de toda la organización (en uno o más modelos). Su llenado se realiza mediante
procesos de extracción, transformación y carga (ETL) que se encargan de llevar los
datos desde los sistemas de origen, como así también de realizar su limpieza y curado
(quita de nulos, caracteres no válidos, formateo de fechas, entre otros casos).
Finalmente, este proceso depositará los datos transformados dentro de las tablas de
hechos y dimensiones correspondientes.
Figura 2: Ejemplo de data warehouse
Fuente: elaboración propia.
Existe una amplia teoría relacionada a los procesos ETL, pero no profundizaremos en
este aspecto. Si usted desea conocer más al respecto puede consultar el excelente libro
escrito por Ralph Kimball en 2004 llamado “The Data Warehouse ETL Toolkit: Practical
Techniques for Extracting, Cleaning, Conforming, and Delivering Data”.
Pocos años atrás, era común que un proyecto de inteligencia de negocios o BI (business
intelligence) llevara meses de desarrollo, por lo tanto, si uno quería tener reportes o
dashboards estables e íntegros a nivel corporativo para tomar decisiones, dependía de
los tiempos del negocio y del área de sistemas correspondiente que llevaba a cabo el
desarrollo del proceso desde sus orígenes hasta su despliegue. Por ende, existía un
gran porcentaje de proyectos de BI que fracasaban debido a la falta de
involucramiento de las áreas de negocio o niveles directivos que debían ser claros en
sus necesidades para el desarrollo de BI agregara el valor que se pretendía.
A medida que el volumen de datos aumentó y estos se hicieron más variados y
complejos, el DW quedó chico y los procesos de BI se convirtieron en flujos de trabajo
pocos ágiles frente a las necesidades de información de ya no solo niveles directivos
o gerenciales, sino de analistas, científicos de datos y desarrolladores. Estos nuevos
usuarios, muchas veces, necesitan contar con los datos de forma inmediata (apenas
llegan desde el origen) y no pueden esperar a correr todos los procesos involucrados
en la carga del DW. Consecuentemente, necesitamos más que un DW para crear una
arquitectura de datos moderna.
Con el uso constante de la nube y el avance de las tecnologías de big data, nace el
concepto de data lake (James Dixon, fundador de Pentaho). Según la definición de
Gartner en su sitio web
Los lenguajes de consultas nos permiten interactuar con los datos (en expresión de
máquina) mediante un lenguaje más amigable e intuitivo para el ser humano.
Permiten mayor interacción sin necesidad de utilizar un código de programación (en
la mayoría de los casos) y esto nos ahorra esfuerzos innecesarios.
Existen diversas formas de consultar datos, de acuerdo con las características de la
base de datos o su estructura. Quizás el lenguaje más conocido sea SQL (ver ejemplo
de consulta SQL en la unidad 2.1.1). Este se utiliza, quizás, en todas las bases de
datos relacionales con pequeñas modificaciones según el proveedor del motor. Sus
fundamentos están desarrollados en base al álgebra relacional y la teoría de
conjuntos. Sin embargo, existen otros lenguajes, a saber:
HQL (hive query language): utilizado en Hive para analizar datos estructurados de
su metastore. Muy similar a SQL.
CQL (Cassandra query language): propia del motor de datos Cassandra.
LINQ: Lenguaje de consultas utilizado en los frameworks de desarrollo .net.
GraphQL: es un lenguaje de consultas para APIs.
Cypher Query Language: utilizado para base de datos de grafos (Ej: Neo4j).
Los datos no necesitan ser visualizados en tiempo real, sino con un refresco diario.
Nuestro sistema de origen es la base de datos alimentada por la app de la
billetera virtual.
La ingesta a nuestro data lake puede estar dada en tiempo real o NRT (casi tiempo
real) por si en un futuro se necesita analizar la información en periodos inferiores al día.
La capa de consumo o de presentación al usuario será por medio de tablas y
reportes.
En arquitecturas modernas es de suma importancia poder desacoplar las partes
involucradas; por ejemplo, separar almacenamiento de su motor de procesamiento,
separar la ingesta de la exploración, etc.
Como primera instancia habrá que decidir si la infraestructura se encontrará
localmente (on-premises) o será brindada por alguno de los proveedores de servicios
en la nube. Si la elección es tenerlo on-premises, habrá que decidir si configuraremos
todo lo necesario nosotros o trabajaremos con alguna distribución paga (por ejemplo:
Cloudera). Si la elección es contratar alguno de los proveedores en la nube, será muy
importante decidir qué servicios utilizaremos y cuánto de ello administraremos en
base a nuestras políticas y presupuesto.
Entonces aquí comenzamos a evaluar un poco más cada una de esas partes y
crearemos, en lo posible, una matriz que nos permita visualizar opciones, ventajas y
desventajas, sus parámetros correspondientes y, si es posible, los costos
aproximados.
De una manera simple y resumida podemos destacar algunas especificaciones:
Origen de datos: la app de la billetera virtual. Supongamos que los datos pueden
ser consultados mediante API desde sus endpoints correspondientes ya que, por
políticas de seguridad, no nos permiten acceder a la base de datos de manera
directa.
Almacenamiento (data lake): elegimos la plataforma que mejor se adapte a
nuestras necesidades dado su costo y recursos. Puede ser HDFS, AWS S3, Google
Storage, Azure BLOB storage.
Ingesta de datos: alguna herramienta que nos permita traer los datos desde el
origen hacia nuestro data lake. Puede ser algún script de desarrollo propio bajo
su lenguaje de programación elegido o alguna herramienta elaborada para tal
fin, como por ejemplo NIFI, Airflow o, en su defecto, algunas de las herramientas
brindadas por los diferentes proveedores en la nube. Según el volumen habrá que
evaluar la utilización de alguna herramienta de manejo de mensajes o colas para
desacoplar las cargas (por ejemplo, Kafka).
Procesamiento: recordemos que no es necesario el procesamiento en tiempo real,
por lo tanto, podríamos elegir alguna herramienta que nos permita un
procesamiento más al estilo batch o por lotes. Por ejemplo, alguna de las
mencionadas anteriormente (NIFI, Airflow) o, según el volumen, habrá que ver si
es necesario desarrollos en SPARK.
Modelo de datos y consumo: dado que no es necesario contar con una base de
datos para tiempo real, Hive podría ser buena opción para modelar los datos o,
en su defecto, alguna de las herramientas brindadas por los proveedores en la
nube (AWS Athena, Google Bigquery). Por el momento, al ser el primer caso de
uso, no analizaremos la implementación de una herramienta para DW.
En cuanto a la visualización de reportes, habrá que evaluar la compra de algún
producto (Tableau, Looker, Power BI) o desarrollar reportes a medida con algunas de
las librerías de visualización disponibles para algunos lenguajes de programación.
Otros aspectos a considerar
Deberemos tener en cuenta la infraestructura para el procesamiento (clústeres y su
mantenimiento), seguridad, scheduler (Oozie, por ejemplo), control de flujos, calidad
de los datos, infraestructura, servicios de red, control de código fuente, integración y
despliegue continuo, ciclo de vida de los datos (y formatos), metadatos y gobierno de
datos.
Como puede apreciar, existe una amplia gama de aristas a tener en consideración al
momento de desplegar un proyecto de big data; sin embargo, al igual que ocurre con
proyectos de desarrollo de software, el crecimiento es paulatino y avanza a medida
que el proyecto progresa y toma forma.
Hemos visto las especificaciones básicas, sin navegar en los detalles más profundos
de cada rama. Podemos comenzar a delinear un esquema simple de la arquitectura
requerida para nuestro caso de ejemplo.
Podríamos tomar este bosquejo inicial como un patrón a completar a medida que se
seleccionen las herramientas a utilizar en cada capa; por ejemplo, si decidimos crear
una arquitectura local (on-premises) que administre y configure completamente la
infraestructura y las herramientas para el desarrollo del caso, podríamos proponer la
siguiente arquitectura:
Figura 7: Arquitectura de ejemplo (2)
Fuente: Linstedt y Olschimke en Starzyk (s.f.). Building a Scalable Data Warehouse with Data Vault 2.0.
Recuperado de https://pl.qibit.tech/otwieramy-skarbiec-danych-data-vault-dla-ciekawskich/
Fuente: Linstedt, D. y Olschimke, M. (2015). Satellites on hubs and links (logical design).
Fuente: Lee, J., Wei, T. y Kumar Mukhiya, S. (2018). Labeled graph model of movies and actors.
Recuperado de
https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781788620901/5/ch05l
vl1sec38/graph-data-models
Como hemos observado a lo largo del módulo, los datos pueden presentarse en
múltiples formatos, estructuras, tamaños. Gran porcentaje de las aplicaciones que
utilizamos actualmente (sean para web, app o de escritorio) generan registros de
trazabilidad y control que son almacenados en archivos de logs. Estos archivos son
analizados constantemente en tiempo real para detectar fallas en los sistemas, alertar
sobre caída de los servicios, detectar cuellos de botella, problemas de latencia,
seguridad, entre cientos de casos más. Generalmente estos logs tienen mucha
información completamente desestructurada y necesitan una base de datos no
relacional para ejecutar su análisis inmediato.
Una arquitectura de big data seguramente incluirá análisis de datos sobre logs. Para
ello, necesitará evaluar las herramientas que posibilitarán tal tarea. Además, quizás
desee contar con la posibilidad de generar reportes más elaborados sobre dichos logs,
no solo con lo analizado en tiempo real, sino con modelos que le permitan observar
los datos desde otra perspectiva al cruzar información con otras fuentes y orígenes.
En la actualidad, existe gran variedad de stacks o sets de herramientas que permiten
realizar análisis sobre logs. Entre ellas podemos nombrar ELK-Elasticsearch, Logstash
y Kibana. También suelen utilizarse Graylog, Splunk, FluenD, entre otros.
Fuente: Linstedt, D. y Olschimke, M. (2015). Big Data Imperatives: Enterprise 'Big Data' Warehouse,
'BI' Implementations and Analytics.
Otro aspecto importante dentro de big data son los metadatos. Podemos definirlos
como los datos acerca de los datos. Sí, es una definición extraña, pero es su
significado. A cualquier información que nos brinde datos acerca de los datos la
llamamos metadatos.
Existen tres tipos de metadatos:
Metadatos descriptivos: permite a los usuarios interpretar los datos al brindar
información acerca de su contenido, su creador, fechas de publicación, entre otras
características.
Metadatos estructurales: nos brindan información acerca de su estructura,
organización, relación con otras fuentes, sus claves, entre otras características.
Metadatos administrativos: nos brindan información acerca de su fecha de
creación y modificación, los permisos que posee, tamaño, accesos, entre otras
características.
Vehículo
s
Auto Moto Camione
s s s
Gasoi Gas
l
Fuente: elaboración propia.
tablaEmpleados tablaRoles
id nombre rol
1 Marcos 100 id rol
2 Maria 200 100 Desarrollador
3 Jésica 100 200 Arquitecto
Supongamos que su sitio web (o su app) posee gran cantidad de visitas al día y usted
quiere analizar los clics que se realizaron sobre los anuncios promocionales de
descuentos que se publicaron este último mes. El sitio es global y los anuncios reciben
alrededor de 3500 clics por segundo de diferentes usuarios en todo el planeta. El
volumen aproximado de almacenamiento mensual que implica ronda cerca de los 8Tb
mensuales. Como CEO de su empresa usted desea analizar los datos en tiempo real
y, además, debe poder crear reportes semanales y mensuales para observar si las
promociones realmente dan resultado. Sin embargo, no debe dejar de lado los costos
que le implicará este análisis, además, el usuario final no debería experimentar
ninguna demora al consultar el sitio.
En estos casos será necesario desarrollar una arquitectura que nos permita desacoplar
las necesidades de datos en caliente de los datos en frío mediante un almacenamiento
diferente para cada caso. Por ejemplo, para los datos en caliente se podría utilizar una
base de datos de caché tipo Redis y para los datos en frío se podría utilizar Hive
montado sobre HDFS para poder realizar consultas ad-hoc.
En conclusión, cada arquitectura tendrá su impronta según el caso de uso de negocio
que se analice. Siempre tendrá que contemplar la temperatura y volumen de los datos
antes de desarrollar cualquier arquitectura de big data. En otras palabras, deberá
dedicar parte de su tiempo para analizar los diferentes patrones que se nos pueden
presentar en la ingesta, almacenamiento y consumo de los datos.
Referencias
Amazon Web Services Inc. (2020). AWS Cloud 9. Guía del usuario [documento en línea].
Recuperado de https://docs.aws.amazon.com/es_es/cloud9/latest/user-guide/aws-
cloud9-ug.pdf
Elasticsearch B.V. (s.f.). Dashboard. Recuperado de
https://www.elastic.co/guide/en/kibana/current/dashboard.html
Gartner Inc. (s.f.). Data Lake. Recuperado de https://www.gartner.com/en/information-
technology/glossary/data-lake
Kaggle Inc. (2019). Start with more than a blinking cursor. Recuperado de
https://www.kaggle.com/
Lee, J., Wei, T. y Kumar Mukhiya, S. (2018). Labeled graph model of movies and actors.
Recuperado de
https://subscription.packtpub.com/book/big_data_and_business_intelligence/97817
88620901/5/ch05lvl1sec38/graph-data-models
Linstedt, D. y Olschimke, M. (2015). Building a Scalable Data Warehouse with Data Vault
2.0. New York: Elsevier Science.
Microsoft (2020). SELECT Statement Example. Recuperado de
https://docs.microsoft.com/en-us/analysis-services/multidimensional-
models/mdx/mdx-query-the-basic-query?view=asallproducts-allversions
Mohanty, S., Jagadeesh, M. y Srivatsa, H. (2013). Big Data Imperatives: Enterprise 'Big
Data' Warehouse, 'BI' Implementations and Analytics. Nueva York: Apress.
Starzyk, L. (s.f.). Otwieramy skarbiec danych? Data vault dla ciekawskich. Recuperado de
https://pl.qibit.tech/otwieramy-skarbiec-danych-data-vault-dla-ciekawskich/