Base de Datos II · UPT · NoSQL orientada a columnas
Series de tiempo con Apache Cassandra en Astra DB
Cinco estaciones meteorológicas de Tacna envían lecturas de temperatura y humedad. Cada lectura se guarda en
una partición (estación, día) ordenada por hora, con TTL de 30 días y un contador por día.
Cada git push se prueba contra Cassandra real y se despliega solo con GitHub Actions.
Estaciones
—
tabla estaciones
Lecturas hoy
—
contador conteo_lecturas_dia
Última lectura
—
—
Latencia a la BD
—
consulta a system.local
Últimas 24 horas
Registrar datos
cqlsh> listo. Cada acción muestra la sentencia CQL ejecutada.
Modelo de datos (diseñado a partir de las consultas)
CREATE TABLE lecturas_por_estacion_dia ( estacion_id text, dia date, ts timestamp, temperatura double, humedad double, PRIMARY KEY ((estacion_id, dia), ts) ) WITH CLUSTERING ORDER BY (ts DESC);
Clave de partición (estacion_id, dia): todas las lecturas de una estación en un día viven juntas en el mismo nodo.
Columna de agrupamiento ts DESC: la lectura más reciente es la primera, así que "la última lectura" es un LIMIT 1.
Contador por día
CREATE TABLE conteo_lecturas_dia ( dia date, estacion_id text, total counter, PRIMARY KEY ((dia), estacion_id) ); UPDATE conteo_lecturas_dia SET total = total + 1 WHERE dia = ? AND estacion_id = ?;
Cassandra no tiene COUNT(*) barato: se mantiene un counter que se incrementa en cada escritura.