Indexación de datos de tiempo de ejecución en ThingWorx
Todos los sistemas de bases de datos relacionales, como PostgreSQL, MSSQL y H2, proporcionan la capacidad de indexar cualquier campo o una combinación de campos en una tabla. La indexación se aprovecha cuando se utiliza el servicio FindDataTableEntries. Esto mejora la velocidad de recuperación de datos con operaciones de consulta y búsqueda en los datos. Sin embargo, la indexación requiere más espacio de almacenamiento, así como otras operaciones de escritura durante la ingesta de datos, ya que el motor de base de datos tiene que mantener estructuras de datos adicionales para cada fila de datos de ingesta. En ThingWorx se utilizan definiciones de datos y tipos base en la capa de aplicación. Por lo tanto, el formato que se utiliza para almacenar los datos se basa en definiciones de datos y tipos base en lugar del tipo de datos de las tablas relacionales. De este modo, ThingWorx puede cambiar los tipos de datos de forma dinámica sin cambiar el esquema de la base de datos, de manera que se los datos se guardan como blobs de texto o JSON. El esquema de indexación por defecto que se utiliza en ThingWorx es el resultado de intentar equilibrar el rendimiento de escritura/lectura mientras se tienen en cuenta los factores anteriores.
Datos persistentes de propiedades de cosa
Los datos se almacenan en la tabla property_vtq de la base de datos. Cada propiedad se almacena en su propia fila de la tabla. Es decir, las propiedades de cosa se asignan a las filas de la tabla en lugar de a las columnas. Esta estructura hace que esta tabla no sea adecuada para almacenar datos históricos. Los campos indexados son:
id: ThingName, cosa
name: nombre de la propiedad
Datos registrados de propiedades de cosa en flujos de valor
Los datos se almacenan en la tabla value_stream de la base de datos. Cada propiedad se almacena en su propia fila de la tabla para asignar las propiedades de cosa a las filas de la tabla en lugar de a las columnas.
Los campos indexados son:
entity_id : nombre del flujo de valor
source_id: nombre de la cosa
property_name: nombre de la propiedad
time: fecha y hora de la entrada
Datos de tabla de datos
Los datos se almacenan en la tabla data_table de la base de datos. Todos los valores de campo se almacenan en una sola fila de la tabla, por lo que los campos definidos en la definición de datos asociada se asignan a una única columna para cada entrada como una cadena JSON.
{"DataShape_Field1": "aaa", "DataShape_Field2": 2}
Existen varios índices:
entity_key : clave primaria definida en la definición de datos asociada a la tabla de datos.
entity_key, entity_id: clave de definición de datos, nombre de la tabla de datos.
field_values: indexación de la cadena JSON.
Datos de flujo
Los datos se almacenan en la tabla stream de la base de datos. Todos los valores de campo se almacenan en una única fila de la tabla. Los campos definidos en la definición de datos asociada se asignan a una única columna para cada entrada como cadena JSON. Los campos indexados son:
entity_id: nombre del flujo
source_id : nombre de la cosa
source_type : tipo de entidad del origen (usuario, cosa, etc.)
time: fecha y hora de la entrada
¿Fue esto útil?