¿Mañana o ahora mismo?
Un supermercado de Madrid vende también por internet.
Dirección quiere saber cuánto se vendió en el verano por barrio. Esa respuesta puede esperar a mañana.
El almacén de la tienda online quiere saber cuándo se acaba el pan. Esa respuesta no puede esperar: un cliente está pagando ahora.
Las dos preguntas usan los mismos datos de ventas, pero los datos viajan de forma distinta.
Al final de esta lección
Nota
Puedo decir cuándo los datos van a un almacén de datos y cuándo se procesan en flujo.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Almacén de datos | una base de datos para analizar el pasado | |
| Lote | muchos datos que se cargan juntos | las ventas del día |
| Evento | un hecho que llega solo | una venta |
| Flujo | tratar cada evento en cuanto llega | |
| Latencia | el tiempo hasta tener la respuesta |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un almacén responde sobre el pasado
Un almacén de datos guarda la historia del negocio, ordenada para hacer preguntas.
Se llena por lotes: cada noche se cargan de una vez las ventas del día. Por eso sus datos son de ayer, no de este minuto.
Es lo adecuado para informes, comparaciones entre meses y preguntas que nadie esperaba. Se consulta con SQL.
Pregunta al almacén
-- Ventas online del trimestre, cargadas en el almacén cada noche.
-- Total vendido por mes:
SELECT month, SUM(total) AS sales
FROM online_sales
GROUP BY month
ORDER BY month;
-- Cambia month por district en las tres líneas y ejecuta de nuevo.
Un flujo responde al momento
En un flujo, cada venta es un evento y se trata en cuanto llega. No se espera a la noche.
Sirve cuando una respuesta tardía no vale: reponer un producto, parar un pago sospechoso, mostrar dónde va el repartidor.
Tiene un precio. Hay que tener un programa siempre encendido y es más difícil de montar. Solo compensa si de verdad hace falta la respuesta ya.
Avisos de stock evento a evento
# Llegan ventas una a una. Cada una se trata en cuanto llega.
stock = {"leche": 12, "pan": 6, "huevos": 9}
sales = [
{"product": "pan", "qty": 2},
{"product": "leche", "qty": 3},
{"product": "pan", "qty": 3},
{"product": "huevos", "qty": 1},
]
limit = 3
for sale in sales:
product = sale["product"]
stock[product] = stock[product] - sale["qty"]
print("Venta de", product, "- quedan", stock[product])
if stock[product] < limit:
print(" AVISO: reponer", product, "ya")
# Cambia limit a 5 y mira qué avisos salen ahora.
Un error frecuente
Advertencia
Mucha gente cree que en tiempo real siempre es mejor. No es así. Un flujo cuesta más de montar y de mantener. Si nadie va a actuar en el momento, un lote cada noche da la misma respuesta por mucho menos.
Cómo decidir
| Pregunta | ¿Cuándo se actúa? | Camino |
|---|---|---|
| ventas por barrio en verano | en la reunión del lunes | almacén |
| queda poco pan | en minutos | flujo |
| pago con tarjeta sospechoso | antes de aceptarlo | flujo |
| clientes nuevos por mes | una vez al mes | almacén |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Tu turno: avisos de stock
El almacén de la tienda online quiere una lista con los avisos de stock bajo, en el orden en que saltan. Cada producto debe avisar una sola vez. Unas pruebas ocultas comprueban tu respuesta.