ThingWorx의 런타임 데이터 색인화
PostgreSQL, MSSQL 및 H2와 같은 모든 관계형 데이터베이스 시스템에서는 테이블의 필드 또는 필드 조합을 색인화할 수 있습니다. 색인화는 FindDataTableEntries 서비스를 사용할 때 활용됩니다. 색안화는 데이터에 대해 질의 및 검색 작업을 사용하여 데이터를 읽어들이는 속도를 향상시킵니다. 그러나, DB 엔진은 데이터의 각 데이터 수집 행에 대해 추가 데이터 구조를 유지해야 하므로 색인화에는 데이터를 수집하는 동안 추가 스토리지 공간과 추가 쓰기 작업이 필요합니다. ThingWorx에서는 응용 프로그램 레이어 내에서 데이터 셰이프와 기본 유형을 사용합니다. 따라서, 데이터를 저장하는 데 사용되는 형식은 관계형 테이블의 데이터 유형이 아니라 데이터 셰이프와 기본 유형을 기반으로 합니다. 이렇게 하면 데이터베이스 스키마를 변경하지 않고 데이터 유형을 동적으로 변경할 수 있으며 데이터가 JSON 또는 텍스트 Blob로 저장됩니다. ThingWorx에 사용되는 기본 색인화 구성표는 위 요인들을 고려하는 가운데 쓰기/읽기 성능의 균형을 유지하려고 노력한 결과입니다.
지속 사물 속성 데이터
데이터는 데이터베이스의 property_vtq 테이블에 저장됩니다. 각 속성은 테이블에서 고유한 행에 저장됩니다. 즉, 사물 속성은 열이 아니라 테이블 행에 매핑됩니다. 이러한 구조로 이 테이블에서 기록 데이터를 저장하는 것이 적합하지 않습니다. 색인화된 필드는 다음과 같습니다.
id – 사물 이름, 사물
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 - 엔트리의 타임스탬프