在 ThingWorx 中对运行时数据建立索引
所有关系数据库系统 (如 PostgreSQL、MSSQL 和 H2) 都能够为表中的任何字段或字段组合建立索引。使用 FindDataTableEntries 服务时,将会利用索引。对于数据查询和搜索操作,这有助于提高数据检索速度。但是,索引需要额外的存储空间,并且在数据接入期间需要执行额外的写入操作,因为数据库引擎必须为每个接入的数据行保留额外的数据结构。ThingWorx 在应用程序层中使用数据形状和基本类型。因此,用于存储数据的格式基于数据形状和基本类型,而不是基于关系表的数据类型。这使得 ThingWorx 可以在无需更改数据库架构的情况下动态更改数据类型,进而将数据另存为 JSON 或 Text blob。在 ThingWorx 中使用的默认索引方案是在考虑上述因素的同时尝试平衡写入/读取性能的结果。
持久化事物属性数据
数据存储在数据库中的 property_vtq 表中。每个属性都存储在表中各自的行中。换言之,事物属性被映射到数据表中的行而不是列。此结构导致此数据表不适用于存储历史数据。索引字段为:
id - ThingName, 事物
name - 属性的名称
值流中记录的事物属性数据
数据存储在数据库中的 value_stream 表中。每个属性都存储在表中各自的行中,以将事物属性映射到表中的行而非列。
索引字段为:
entity_id - 值流名称
source_id - 事物名称
property_name - 属性名称
time - 条目的时间戳
数据表数据
数据存储在数据库中的 data_table 表中。所有字段值都存储在表的单行中,使得关联数据形状中定义的字段作为 JSON 字符串映射到每个条目的单个列。
{"DataShape_Field1": "aaa", "DataShape_Field2": 2}
有多个索引:
entity_key - 在与数据表关联的数据形状中定义的主键。
entity_key, entity_id - 数据形状键,数据表名称。
field_values - 为 JSON 字符串建立索引。
流数据
数据存储在数据库中的 stream 表中。所有字段值都存储在表中的单个行中。在关联数据形状中定义的字段将作为 JSON 字符串映射到每个条目的单个列。索引字段为:
entity_id - 流名称
source_id - 事物名称
source_type - 源的实体类型 (用户、事物等)
time - 条目的时间戳