Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
stylenone

Introducción

La arquitectura de la Plataforma es una arquitecturaData-Centricdata 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.

...

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:

Code Block
languagejson
{
    "$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
}

...

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

Code Block
languagejson
{
  "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»:

Code Block
languagejsjson
   "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.

...

Características de

...

las Entidades

Además de la su estructura de la Entidad, en las Entidades pueden definirse otra serie de características y propiedades que la 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

...

. Estas son:

  • Identificación: el nombre único con el que identificar a la Entidad.

  • Meta-Información: etiquetas con las que caracterizar la Entidad, que servirán para su filtrado a la hora de hacer búsquedas.

  • Descripción: texto descriptivo extendido de la Entidad, como su uso, propiedades, características, etc.

Además, contamos con algunas opciones más de caracterización de la Entidad:

  • Entidad activa: para que la Entidad funcione o se encuentre bloqueada.

  • Entidad pública: si queremos que la Entidad sea pública, o si la queremos privada.

  • Permite campos cifrados: si interesa que algunos campos almacenen información sensible y estén cifrados (más información).

  • Habilita ContextData: si se quiere que la Entidad registre internamente los cambios de escritura y gestión (más información).

  • Soporta JSON-LD: si interesa que la Entidad pueda trabajar con contexto (más información).

  • Habilitar el preprocesamiento de clases de datos: opción que permite que la Entidad registre internamente los cambios de escritura y gestión.

En algunos casos, se podrán configurar ciertas opciones avanzadas en la Entidad. Estas opciones pueden ser:

  • Borrar de la base de datos: esta opción permite el borrado automático de los datos almacenados en la Entidad a partir de un tiempo definido.

  • Borrar Entidades creadas anteriores a: si se ha habilitado la opción anterior, en este selector se podrá escoger la cantidad de tiempo a partir del cual se irán borrando los datos de la Entidad.

  • Permite crear un tópico Kafka de ingesta para la Entidad (más información).

  • Permite crear un tópico Kafka de notificaciones (más información).

  • Permite crear un tópuco MQTT de ingesta para la Entidad (más información).

  • Habilita notificaciones al BPM (más información).

  • Instancia de base de datos: en donde se podrá elegir dónde almacenar la Entidad: MongoDB, Elastic Search, CosmosDB, etc.

Además, cada Entidad tendrá sus propias características y opciones únicas, por lo que recomedamos leer la documentación asociada a cada tipo de Entidad para conocer en detalle todas sus característica.

Si se está empezando a trabajar con las Entidades, recomendamos seguir el siguiente tutorial:

...

Tipos de Entidades y cómo crearlas

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

...