Files
comunidadhll/docs/stats-database-schema-foundation.md
devRaGonSa 0cf98a1be9
Some checks failed
Codex Worker / run-codex-worker (push) Has been cancelled
initial export
2026-06-02 16:23:16 +02:00

3.7 KiB

Stats Database Schema Foundation

Objective

Definir una base de almacenamiento simple y reutilizable para snapshots de servidores y estadisticas iniciales, sin comprometer todavia una base de datos productiva concreta.

Design Principles

  • naming generico reutilizable para HLL actual y futuro HLL Vietnam
  • separacion entre identidad de servidor y observaciones historicas
  • persistir primero solo lo necesario para reconstruir actividad basica
  • dejar espacio para multiples fuentes sin acoplar el modelo a una integracion unica

Proposed Core Entities

game_sources

Proposito: describir el contexto del juego o dominio de origen de los datos.

Campos principales:

  • id
  • slug
  • display_name
  • provider_kind
  • is_active
  • created_at
  • updated_at

Notas:

  • slug puede tomar valores como current-hll y en el futuro otros contextos mas cercanos a HLL Vietnam.
  • Esta entidad evita incrustar el juego en cada nombre de tabla.

servers

Proposito: mantener la identidad estable de cada servidor observado.

Campos principales:

  • id
  • game_source_id
  • external_server_id nullable
  • server_name
  • region nullable
  • first_seen_at
  • last_seen_at
  • created_at
  • updated_at

Claves y relaciones:

  • primary key en id
  • foreign key a game_sources.id
  • unique recomendado sobre game_source_id + external_server_id cuando el origen entregue identificador externo fiable

Notas:

  • server_name no debe usarse como clave unica porque puede cambiar.
  • last_seen_at resume la ultima observacion conocida sin sustituir a los snapshots historicos.

server_snapshots

Proposito: registrar cada captura puntual normalizada de un servidor.

Campos principales:

  • id
  • server_id
  • captured_at
  • status
  • players
  • max_players
  • current_map nullable
  • source_name
  • raw_payload_ref nullable
  • created_at

Claves y relaciones:

  • primary key en id
  • foreign key a servers.id
  • index recomendado sobre server_id + captured_at

Notas:

  • status, players, max_players y current_map son la base a persistir desde la primera fase.
  • raw_payload_ref queda como referencia opcional para trazabilidad futura si el backend decide guardar artefactos crudos fuera de esta tabla.

Initial Statistics Layer

No es necesario persistir metricas complejas desde el inicio. La primera capa de estadisticas puede documentarse como derivada de server_snapshots.

Vistas o agregaciones recomendadas para una siguiente fase:

  • ultima observacion por servidor
  • pico de jugadores por servidor en una ventana temporal
  • numero de snapshots online por servidor
  • ultima vez visto online

Si mas adelante aparecen necesidades de rendimiento o cuadros de mando persistentes, podra anadirse una tabla de agregados sin cambiar la base del modelo.

What To Persist First

Persistir por snapshot:

  • server_id
  • captured_at
  • status
  • players
  • max_players
  • current_map cuando exista
  • source_name

Puede derivarse despues:

  • tendencias
  • medias por periodo
  • picos historicos
  • porcentaje de disponibilidad
  • rankings

Technology Position

El repositorio todavia no fija una tecnologia de persistencia productiva. La base del esquema debe entenderse como modelo logico compatible con el backend en Python y trasladable despues a la opcion de almacenamiento que se valide en una task especifica.

En esta fase no se anaden migraciones, ORM ni ficheros de base de datos.

Open Questions For Future Tasks

  • que fuente aportara un identificador externo suficientemente estable
  • con que frecuencia debe capturarse un snapshot
  • si conviene guardar payload crudo completo o solo referencias
  • cuando merece la pena materializar agregados persistentes