Pulso Tacna

● conectando… Apache Cassandra v —
datacenter —
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.