Composer의 ThingWorx 모델 정의 > 데이터 스토리지 > 지속성 공급자 > InfluxDB를 지속성 공급자로 사용
InfluxDB를 지속성 공급자로 사용
개요
시스템에서 주로 시계열 데이터를 처리하고 구현이 데이터의 지속성/검색을 위해 가치 스트림 또는 스트림에 많이 의존할 경우 ThingWorx에서 InfluxDB를 지속성 공급자로 사용하는 것이 좋습니다. InfluxDB는 시계열 데이터에 맞게 작성된 고성능 데이터 저장소입니다. InfluxDB는 동일한 데이터에 대해 높은 처리량 수집, 압축 및 실시간 질의를 허용합니다. InfluxDB는 DevOps 모니터링, 로그 데이터, 응용 프로그램 메트릭, IoT 센서 데이터 및 실시간 분석을 포함하여 대량의 타임스탬프 데이터가 포함되는 모든 사용 사례에 데이터 저장소로 사용됩니다. 데이터 RP(보존 정책)를 비롯한 다른 기능도 제공합니다. InfluxDB Enterprise는 시계열 데이터 요구사항에 적합한 고가용성 및 확장성이 뛰어난 클러스터링 솔루션을 제공합니다.
* 
InfluxDB를 사용하려면 ThingWorx 8.4.0 이상이 필요합니다.
InfluxPersistenceProviderPackage는 PostgreSQL 또는 MSSQL에 대한 기본 설치의 일부로 사용 가능합니다.
* 
InfluxDB 데이터 공급자는 현재 가치 스트림 및 스트림만 지원합니다. 데이터 테이블, Wiki 및 블로그는 지원되지 않습니다.
* 
InfluxDB 데이터 공급자는 현재 내보내기 기능을 지원하지 않습니다.
* 
InfluxDB는 속성 공급자로 지원되지 않습니다.
* 
InfluxDB 데이터 공급자는 현재 이름이 "autogen"인 보존 정책만 지원합니다. 데이터 공급자와 함께 사용할 데이터베이스를 만드는 동안 정책 이름 및 다른 정책(예: 복제 요소 등)을 지정할 수 있습니다.
InfluxDB Enterprise 및 ThingWorx 시작 환경
* 
위의 다이어그램에는 InfluxDB Enterprise가 포함되어 있습니다. InfluxDB 오픈 소스의 경우 아키텍처 다이어그램은 동일하지만 노드 하나에서만 작동한다는 점이 다릅니다.
다음은 이 문서에서 InfluxDB Enterprise에 대한 구성을 언급할 때 사용되는 용어입니다.
부하 분산 - InfluxDB Enterprise는 부하 분산으로 작동하지 않습니다. 관리자가 이 기능을 구성해야 합니다.
클러스터 - InfluxDB Enterprise 클러스터는 두 가지 노드 유형인 메타 노드와 데이터 노드로 구성됩니다.
데이터 노드 - 모든 원시 시계열 데이터가 여기에 있습니다. 고가용성을 위해서는 둘 이상의 복제 요소가 필요합니다.
메타 노드 - 이러한 노드에는 일관된 상태를 유지하기 위한 단순 작업이 있습니다. 보존 정책, 사용자, 데이터베이스 등 상태에 대한 기본 정보만 포함합니다. 고가용성 환경에서는 세 개 이상의 메타 노드가 필요합니다.
HA에 대한 자세한 내용은 https://www.influxdata.com/blog/understanding-influxenterprise-what-is-a-cluster/를 참조하십시오.
InfluxDB Enterprise 사용의 이점
현재 다른 데이터베이스에서 제공하는 것보다 대량의 데이터 볼륨과 높은 속도의 데이터에 더 적합한 데이터 저장소를 찾고 있는 경우 InfluxDB Enterprise를 사용하면 다음과 같은 이점을 얻을 수 있습니다.
데이터 수집 속도가 빨라짐
런타임 데이터에 둘 이상의 데이터 저장소를 사용할 수 있음. 예를 들어, 관계형 데이터는 PostgreSQL에 저장하고 대량의 스트림 및 가치 스트림 데이터에는 InfluxDB를 사용할 수 있습니다. 스트림 또는 가치 스트림을 정의하면 ThingWorx는 기본 런타임 데이터 저장소 공급자를 사용하지만 정의한 지속성 공급자를 사용하도록 ThingWorx를 구성할 수 있습니다.
* 
다른 데이터 공급자에서 데이터를 내보내고 InfluxDB로 가져올 수도 있습니다. ThingWorx는 데이터 추상을 처리합니다.
클라우드 친화적 아키텍처(수평 확장, InfluxDB Enterprise에서만 제공)
InfluxDB 설치 및 구성
* 
Influx 데이터베이스를 설치하는 사용자는 누구나 InfluxDB에 대해 제공되는 모든 보안 관련 설명서를 읽고 이해해야 합니다. 사용자 이름 및 강력한 암호 사용을 포함한 보안 구성을 사용하여 InfluxDB를 설치하고 구성할 것을 강력히 권장합니다.
* 
이 프로세스에서는 ThingWorx가 설치되어 있다고 가정합니다. ThingWorx 설치를 참조하십시오.
1. InfluxDB를 다운로드하고 설치합니다.
* 
InfluxDB는 Windows에서는 지원되지 않습니다. 아래 단계에서는 UNIX OS를 사용합니다.
InfluxDB 오픈 소스(단일 노드): https://docs.influxdata.com/influxdb/v1.7/introduction/installation/ 참조
다운로드 링크:
다운로드 링크-데이터 노드:
다운로드 링크-메타 노드:
2. InfluxDB에서 데이터베이스를 만듭니다. thingworxInfluxDBSetup.sh 스크립트를 가져와 실행하여 InfluxDB에서 데이터베이스를 만듭니다.
* 
thingworxInfluxDBSetup.sh 스크립트는 PTC 지원 포털에서 제공하는 소프트웨어 다운로드 패키지의 install 폴더에서 사용할 수 있습니다.
다음 예의 명령은 기본 보존 정책을 사용하여 데이터베이스를 만듭니다.
CREATE DATABASE thingworx with DURATION 365d REPLICATION 1 SHARD DURATION 30d NAME autogen
3. InfluxDB 사용자를 만듭니다. 다음 예의 명령은 사용자를 만듭니다.
CREATE USER twadmin WITH PASSWORD 'password' WITH ALL PRIVILEGES
4. ThingWorx Composer에서 새 지속성 공급자를 만듭니다.
5. 지속성 공급자 패키지 필드에서 InfluxPersistenceProviderPackage를 선택합니다.
6. 저장을 클릭합니다.
7. 구성 탭을 클릭하고 필요에 맞게 연결 정보를 구성한 후 저장합니다. 아래 표의 구성 옵션을 참조하십시오.
InfluxDB 지속성 공급자 패키지를 사용하여 작성된 지속성 공급자 인스턴스를 기본 지속성 공급자로 사용할 경우 다음 스트림 및 가치 스트림 대기열 구성 설정을 편집할 수 있습니다. 편집한 내용은 모든 스트림 및 가치 스트림에 적용됩니다. 특정 스트림 또는 가치 스트림에 대해 이러한 설정을 변경할 수 없습니다.
* 
가치 스트림의 지속성 공급자를 전환하면(예: ThingworxPersistenceProvider에서 InfluxPersistenceProviderPackage로 전환) 가치 스트림을 구현하는 모든 사물이 RestartThing 서비스를 호출하여 새 지속성 공급자에 쓰여진 엔트리를 검색해야 합니다. 사물이 재시작되지 않으면 엔트리가 데이터베이스에 쓰여질 수도 있지만 사물이 재시작될 때까지 이러한 엔트리를 검색하지 않습니다.
연결 정보
이름
설명
기본값
연결 URL
연결을 확보해야 하는 데이터베이스의 URL입니다.
http://localhost:8086
데이터베이스 스키마
연결할 스키마입니다.
thingworx
사용자 이름
데이터베이스 연결을 확보해야 하는 사용자 이름입니다.
thingworx
암호
데이터베이스 연결을 확보해야 하는 암호입니다.
해당 없음
스트림 처리 설정
이름
설명
기본 유형
기본값
최대 대기열 크기
대기할 스트림 엔트리의 최대 수입니다. 지정된 값에 도달하면 후속 엔트리가 거부됩니다.
숫자
250000
스트림 버퍼를 플러시하기 전 최대 대기 시간(밀리초)
스트림 버퍼를 플러시하기 전에 시스템이 대기하는 시간(밀리초)입니다.
숫자
2000
처리 스레드 수
스트림 전용 처리 스레드 수입니다.
* 
스레드 수가 적을수록 InfluxDB 성능이 향상됩니다. InfluxDB는 적은 수의 채널에서 오는 데이터를 처리하도록 최적화되었습니다.
숫자
5
스트림 버퍼를 플러시하기 전 최대 항목 수
스트림 버퍼를 플러시하기 전 누적되는 최대 항목 수입니다.
숫자
1000
Process 블록의 스트림 쓰기 최대 수
블록 하나에서 처리할 스트림 쓰기 최대 수입니다.
숫자
2500
버퍼 상태 검색 속도(밀리초)
지정된 속도 값(밀리초)에서 버퍼 상태를 확인합니다.
숫자
5
가치 스트림 처리 설정
이름
설명
기본 유형
기본값
최대 대기열 크기
대기할 가치 스트림 엔트리의 최대 수입니다. 지정된 값에 도달하면 다음 엔트리가 거부됩니다.
숫자
250000
가치 스트림 버퍼를 플러시하기 전 최대 대기 시간(밀리초)
가치 스트림 버퍼를 플러시하기 전에 시스템이 대기하는 시간(밀리초)입니다.
숫자
2000
처리 스레드 수
가치 스트림에 할당된 처리 스레드 수입니다.
* 
스레드 수가 적을수록 InfluxDB 성능이 향상됩니다. InfluxDB는 적은 수의 채널에서 오는 데이터를 처리하도록 최적화되었습니다.
숫자
5
값 버퍼를 플러시하기 전 최대 항목 수
가치 스트림 버퍼를 플러시하기 전 누적되는 최대 항목 수입니다.
숫자
500
Process 블록의 가치 스트림 쓰기 최대 수
블록 하나에서 처리할 항목 최대 수입니다.
숫자
2500
버퍼 상태 검색 속도(밀리초)
지정된 속도 값(밀리초)에서 버퍼 상태를 확인합니다.
숫자
5
8. 일반 정보 탭을 클릭하고 활성 확인란을 선택합니다.
9. 저장을 클릭합니다.
모범 사례
계열 제한
계열은 사물의 고유 조합과 InfluxDB에 로그된 연관된 가치 스트림의 총 수입니다. InfluxDB는 대량의 데이터 볼륨이 소량의 사물 및 사물 속성(예: 10Ks 또는 100Ks)으로 향할 때 양호한 성능을 제공합니다. InfluxDB에서는 총 계열 수가 기본적으로 백만 개로 제한됩니다. 이 제한을 늘릴 수는 있지만 계열 수가 이 제한을 초과하면 InfluxDB 성능이 저하됩니다.
사물 및 속성이 많은 경우 데이터 볼륨이 가장 많은 항목을 선택한 후 이러한 사물 및 속성만 InfluxDB로 향하도록 지정하여 PostgreSQL 또는 MSSQL의 부하를 덜 수 있습니다.
또는 계열을 여러 서버로 나누려는 경우 InfluxDB 데이터 공급자의 여러 인스턴스가 서로 다른 InfluxDB 서버 인스턴스를 가리키도록 할 수 있습니다.
쓰기 제한
코어 32개에 60GB 메모리 VM을 사용하는 경우 초당 100K 쓰기가 가능합니다. 이 제한을 초과하면 ThingWorx에 문제가 발생할 수 있으며, 이로 인해 리소스가 고갈되어 요청이나 작업(예: 데이터베이스에 쓰기)을 처리할 수 없게 됩니다. 이때 ThingWorx는 정지되지만 InfluxDB는 데이터베이스에 계속 쓰고 있습니다. 이 문제는 PostgreSQL에서는 발생하지 않습니다. PostgreSQL이 병목 지점이 되므로 ThingWorx가 내부의 작업을 처리할 수 없을 만큼 리소스가 고갈되는 시점에 도달하는 일이 없기 때문입니다.
SSL/보안 연결
InfluxDB는 SSL 및 HTTPS 연결을 지원합니다. ThingWorx와 InfluxDB 간 네트워크가 지원되지 않는 경우 SSL 및 HTTPS 연결을 사용하여 보안을 강화할 수 있습니다. 서명 개인 키가 안전하게 보관되는 경우 자체 서명된 인증서가 적합합니다.
속성 기본 유형에 대해 알려진 InfluxDB 제한 사항
가치 스트림에 기록된 후에는 속성의 기본 유형을 변경할 수 없습니다. 자세한 내용은 https://github.com/influxdata/influxdb/issues/3460 사이트를 참조하십시오.
속성 제거
PurgeAllPropertyHistory, PurgeSelectedPropertyHistoryPurgePropertyHistory 서비스를 사용하여 InfluxDB에서 속성을 제거할 수 있습니다. startDateendDate 매개 변수를 사용하여 범위를 지정합니다.