Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Desde la versión 3.1.0-KickOff, en el Control Panel se ha pasado a denominar a las Ontologías como «Entidades». Esto no altera ninguna funcionalidad; simplemente se ha cambiado la nomenclatura para un mejor entendimiento del concepto.

Introducción

La arquitectura de la Plataforma es una arquitectura Data-Centric (centrada en los datos), donde los datos son el activo principal y permanente. En este tipo de arquitecturas el modelo de datos precede a la implementación de cualquier aplicación dada y será válido mucho después de que se reemplacen.

Onesait Platform soporta este tipo de arquitectura a través del concepto de Entidad (previamente denominadas Ontologías), y todas las funcionalidades de la Plataforma se basan en este concepto.

En el caso más simple, se puede comparar una Entidad con una tabla en una base de datos relacional, pero una Entidad puede contener un modelo de dominio completo, lo que requeriría en una base de datos relacional un conjunto de tablas relacionadas.

En este artículo se detallan los motivos por los que es recomendable implementar el modelo de datos utilizando Entidades.

Definición y estructura

En la Plataforma, para la definición de las Entidades se utiliza un esquema en formato JSON-Schema. Este esquema define la estructura de la información que almacenará dicha Entidad, permitiendo validaciones semánticas sobre los datos que se reciban.

Un ejemplo de esquema de definición de una Entidad sería similar a este ejemplo:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "SensorTemp",
  "type": "object",
  "required": [
    "SensorTemp"
  ],
  "properties": {
    "SensorTemp": {
      "type": "string",
      "$ref": "#/datos"
    }
  },
  "datos": {
    "description": "Properties for DataModel SensorTemp",
    "type": "object",
    "required": [
      "measure",
      "units",
      "timestamp",
      "geoposition"
    ],
    "properties": {
      "measure": {
        "type": "number"
      },
      "units": {
        "type": "string"
      },
      "timestamp": {
        "type": "string",
        "format": "date-time"
      },
      "geoposition": {
        "type": "object",
        "required": [
          "coordinates",
          "type"
        ],
        "properties": {
          "coordinates": {
            "type": "array",
            "items": [
              {
                "type": "number",
                "maximum": 180,
                "minimum": -180
              },
              {
                "type": "number",
                "maximum": 90,
                "minimum": -90
              }
            ],
            "minItems": 2,
            "maxItems": 2
          },
          "type": {
            "type": "string",
            "enum": [
              "Point"
            ]
          }
        },
        "additionalProperties": false
      }
    }
  },
  "description": "Temperature ontology",
  "additionalProperties": true
}

La información que se envíe a la Plataforma utilizando la Entidad deberá cumplir ese esquema de definición.

La unidad de información en la Plataforma se denomina instancia. Una instancia de una Entidad sería el equivalente a un registro en una tabla de base de datos relacional.

Para el ejemplo anterior, una instancia válida de Entidad sería:

{
  "SensorTemp": {
    "measure": 28.6,
    "units": "C",
    "timestamp": "2014-01-30T17:14:00Z",
    "geoposition": {
      "coordinates": [
        4,
        28.6
      ],
      "type": "Point"
    }
  }
}

Cualquier instancia que no cumpla semánticamente con el esquema de definición de la Entidad destino será rechazada por la Plataforma, garantizando así la corrección de la información.

Siempre que una instancia se inserta en la Plataforma, se le añade una información de auditoría adicional dentro de una propiedad denominada «ContextData»:

  "contextData": {
    "deviceTemplate": "clientSensor",
    "device": "sensorTemperatura01",
    "clientConnection": "53643241-1497-17ea-436e-ba74618f7322 ",
    "clientSession": "64376481-4139-48cb-ad6e-dc7bdd8f73ca",
    "user": "user_developer",
    "timezoneId": "GMT",
    "timestamp": "Thu May 31 14:51:31 GMT 2018",
    "timestampMillis": 1527778291886
  }

Estos datos contextuales incluyen información referida al origen o dispositivo que ha enviado la información, la sesión que se ha utilizado, la zona horaria y el instante en el que se recibió,etc.

Propiedades de una Entidad

Además de la estructura de la Entidad, pueden definirse otra serie de características que definirán su comportamiento:


  • Nombre: Identificador de la ontología que permitirá referirse a ella, realizar consultas, inserciones, etc. Los elementos que se inserten en la ontología deberán tener este identificador como elemento raíz (como se ha visto en el ejemplo anterior).

  • Metainformación: Información adicional en forma de tags que permiten categorizar la ontología para filtrado, etc…

  • Descripción: Permitirá detalla cualquier aspecto acerca de la ontología que su propietario considere oportuno.

  • Activa: Indica si una ontología se encuentra activa en la plataforma. De no ser así, no estará disponible para uso.

  • Publica: Una ontología pública es una ontología a la que tienen acceso todos los usuarios. Si una ontología no es pública, se debe dar acceso de forma explícita a cada usuario para que pueda utilizarla. Además hay que detallar el nivel de acceso para cada usuario: 

    • Query: Se permite consultar la información almacenada en la ontología.

    • Insert: Se permite insertar información en la ontología.

    • All: Permite un control total sobre la ontología.

  • Encriptación de campos: Para añadir un nivel de seguridad, se permite la encriptación de los atributos de las instancias de la ontología.

Como opciones avanzadas, se incluye:

  • Creación de tópico de Kafka: Para ontologías destinadas a recibir ingestas masivas de datos.

  • Borrado automático de BBDD: Se puede definir un borrado automático de la información almacenada en BBDD y el periodo de tiempo que se quiere mantener en BBDD

  • Historificación de los datos: En lugar de borrar los datos, se migran o bien a un sistema de ficheros o bien a una base de datos histórica.

Tipos de Entidades y cómo crearlas

Para facilitar la creación de Entidades, la Plataforma ofrece distintos métodos para registrarlas.

Desde la versión 3.1.0-KickOff, en el Control Panel se ha pasado a denominar a las Ontologías como «Entidades». Esto no altera ninguna funcionalidad; simplemente se ha cambiado la nomenclatura para un mejor entendimiento del concepto.

A continuación se listan los diferentes tipos de Entidades disponibles en Onesait Platform.

image-20241212-112333.png

Una vez se ha creado la Entidad en la Plataforma, queda definido el modelo de datos y se puede proceder a implementar funcionalidades sobre la misma.

  • No labels