Componentes de unificación
Los componentes básicos de la unificación de datos: estandarización del formato, unificación de la estructura, unificación semántica, normalización y uso de los datos unificados.
Estandarización del formato
Todos los datos procedentes de fuentes distintas se convierten a un único formato.
Por ejemplo, los datos de los dispositivos IoT llegan en formato JSON:
{
"device_id": "sensor-123",
"temp": 27.3,
"time": 1739960923
}Unificación de la estructura de datos
Se define una única estructura para todos los datos, independientemente de su origen.
Todos los datos se almacenan en la tabla channel_data, que los asocia con el equipo, las sesiones, los canales y las unidades de medida:
| Campo | Tipo | Descripción |
|---|---|---|
id | bigint | Identificador único del registro (clave primaria). |
equipment_id | bigint | Referencia al equipo (equipment.id). |
seance_id | bigint | Referencia a la sesión (seances.id). |
channel_id | bigint | Referencia al canal (channels.id). |
unit_id | bigint | Referencia a la unidad de medida (units.id). |
archive_type_id | integer | Referencia al tipo de archivo (referenceparameters.id). |
event_time | integer | Momento del evento (p. ej. marca de tiempo). |
value | character varying(100) | Valor recibido del canal. |
created_at | timestamp(6) without time zone | Momento en que se creó la entrada. |
updated_at | timestamp(6) without time zone | Momento de la última actualización de la entrada. |
Donde:
equipment_id: Identificador único del equipo.seance_id: Identificador único de la sesión.channel_id: Identificador único del canal.unit_id: Identificador único de la unidad de medida.
Cuando los datos de distintos dispositivos se almacenan en un repositorio central:
- los datos se convierten a un único formato y estructura;
- se almacenan en la tabla de datos unificados
channel_data.
Unificación semántica
Todos los datos tienen el mismo significado e interpretación en todos los sistemas.
Por ejemplo:
- Todas las marcas de tiempo están en formato
UTC. Esto se implementó en la etapa de diseño del sistema. - Todos los sistemas usan las mismas unidades de medida (p. ej. grados Celsius).
Para unificar las unidades de medida, se añadió al sistema el modelo Units. Almacena las unidades de medida utilizadas para los datos de canal.
| Campo | Tipo | Descripción |
|---|---|---|
id | bigint | Identificador único del registro (clave primaria). |
name | character varying(30) | Nombre de la unidad de medida. |
varname | character varying(30) | Nombre de variable abreviado de la unidad de medida. |
description | character varying(100) | Descripción de la unidad de medida. |
conversion_factor | double precision | Factor de conversión de la unidad de medida. |
rounding | smallint | Número de decimales a los que redondear. |
synonyms | character varying[] | Matriz de sinónimos de la unidad de medida. |
created_at | timestamp(6) without time zone | Momento en que se creó la entrada. |
updated_at | timestamp(6) without time zone | Momento de la última actualización de la entrada. |
Normalización de datos
El modelo de datos del sistema se reduce a la forma normal de Boyce-Codd (tercera) en lo que respecta a los valores atómicos (escalares). Algunas entidades del modelo de datos emplean estructuras compuestas para optimizar el trabajo con atributos infrecuentes y no estándar.
Los datos se dividen en tablas lógicas (equipment, channels, units, sessions), lo que elimina la redundancia y la duplicación.
Por ejemplo:
- La tabla
channel_datahace referencia a las tablasequipment,channels,unitsysessionsmediante claves foráneas.
Uso de los datos unificados
Los datos unificados pueden utilizarse para análisis, visualización, aprendizaje automático y otras tareas.
Análisis de datos mediante SQL
SELECT equipment_id, AVG(value) as avg_value
FROM channel_data
WHERE archive_type_id = 4 AND channel_id = 3
GROUP BY equipment_id
ORDER BY equipment_idConsulta de datos a través de la API REST
Ejemplo de solicitud:
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3Ejemplo de respuesta:
[
{
"id": 123,
"equipment_id": 1,
"seance_id": 2,
"channel_id": 3,
"archive_type_id": 4,
"value": 42.5,
"event_time": 1739950861
}
]Temas relacionados
¿Te resultó útil esta página?
¡Gracias por tus comentarios!