Ir al contenido

Base de datos de fábrica

Disponible enEdgeCloudEnterprise

En Tier0, los datos de fábrica se organizan en modelos claros con estructura de árbol basados en la metodología UNS (Unified Namespace), formando una base de datos unificada.

  • El broker recibe y envía datos a través de topics del modelo.
  %%{init: {"flowchart": {"defaultRenderer": "elk", "nodeSpacing": 32, "rankSpacing": 48, "diagramPadding": 8}}}%%
  flowchart TB
  source["Fuente de datos / consumidor"]
  subgraph UNS["Unified Namespace"]
      direction LR
      Model["Modelo<br/>Define rutas, topics y payloads"]
      Broker["Broker<br/>Gestiona el intercambio de datos"]
      Storage["Almacenamiento<br/>Persiste los datos"]
      Model <--> Broker
      Broker --> Storage
  end
  source <-- "MQTT / API" --> Broker
  classDef broker fill:#F7FAF2,stroke:#D8E6B8,stroke-width:1px,color:#2A2A2A,stroke-dasharray:5 5
  class Broker broker
  • Los modelos se clasifican en tres tipos: Metric, State y Action.
  • Los datos se almacenan en diferentes bases de datos según el tipo de modelo.
    • Action/State: JSONB (PostgreSQL)
    • Metric: datos en tiempo real (TSDB)
    %%{init: {
      "themeVariables": {
        "fontSize": "14pt"
      },
      "flowchart": {
        "defaultRenderer": "elk",
        "nodeSpacing": 40,
        "rankSpacing": 56,
        "diagramPadding": 8
      }
    }}%%
    flowchart LR
    subgraph Model["Tipo de modelo"]
        direction TB
        metric["Metric<br/>Datos numéricos de alta frecuencia"]
        state["State<br/>Hechos o estados actuales"]
        action["Action<br/>Comandos u operaciones solicitadas"]
    end
    subgraph Storage["Almacenamiento"]
        direction TB
        tsdb["TSDB<br/>Almacenamiento de series temporales para Metric"]
        jsonb["JSONB<br/>Almacenamiento documental para State y Action"]
    end
    metric --> tsdb
    state --> jsonb
    action --> jsonb

Los datos industriales cambian con distintas frecuencias y sirven para distintos propósitos, por eso Tier0 separa los modelos UNS en tres tipos fijos.

Tipo Por qué Ejemplo
METRIC Diseñado para datos de alta frecuencia que se recopilan continuamente y necesitan almacenamiento de series temporales. Temperatura/presión/voltaje de máquina
STATE Diseñado para datos que cambian con menor frecuencia y describen la condición o hecho actual de un objeto. Estado operativo de una máquina
ACTION Diseñado para datos de comando de baja frecuencia que registran lo que debe ejecutar un sistema externo u operador. Iniciar lote, detener máquina

Cada modelo UNS contiene un path, un topic y un payload. Juntos forman una estructura de árbol que transporta contexto de negocio y datos industriales.

  • Path/Topic: El path representa la propiedad de los datos, y el topic transporta el payload del mensaje. Juntos definen la model address.
  • Payload: El payload del mensaje que contiene el topic. Es JSON en formato key-value y define los model data.

Por ejemplo, un modelo en UNS se ve como el árbol siguiente:

Terminal window
Factory_A
└── Site_01
└── SMT_Line_1
└── Metric
└── Machine_001
  • Path: Factory_A/Site_01/SMT_Line_1/Metric
  • Topic: /Machine_001.
  • Payload
    Terminal window
    "temperature": 85,
    "vibration": 2.8,

En Tier0, el broker es el componente de la plataforma que recibe y envía datos por MQTT u OpenAPI según los modelos de datos.

  • Por MQTT: El path completo de cada nodo en el árbol del modelo funciona como dirección del topic para pasar el payload del mensaje.
  • Por Open API: Ejecuta comandos CRUD sobre modelos de datos mediante solicitudes HTTP.

Tier0 usa PostgreSQL para almacenar datos. Los distintos tipos de datos cambian a distintas velocidades y tienen distintos requisitos de almacenamiento.

Tipo de dato Almacenamiento Descripción
Metric Time-series database Optimizado para mediciones de alta frecuencia como temperatura y presión. Cada topic incluye campos predeterminados: timestamp y quality.
State PostgreSQL Almacena estados de máquinas o sistemas en un formato flexible JSONB.
Action PostgreSQL Almacena comandos o acciones en un formato flexible JSONB.