Definición del modelo de ThingWorx en Composer > Almacenamiento de datos > Proveedores de persistencia > Utilización de InfluxDB como proveedor de persistencia
Utilización de InfluxDB como proveedor de persistencia
Resumen
Si el sistema trata de manera intensiva datos de serie temporal y la implementación depende en gran medida de flujos de valor o flujos de persistencia o recuperación de datos, se recomienda utilizar InfluxDB como proveedor de persistencia en ThingWorx. InfluxDB es un almacén de datos de alto rendimiento escrito específicamente para datos de serie temporal. Permite la ingesta, compresión y consulta en tiempo real de alto rendimiento de dichos datos. InfluxDB se utiliza como almacén de datos para cualquier caso de uso que implique una gran cantidad de datos con marca de tiempo, como la supervisión de DevOps, los datos de registro, las métricas de aplicación, los datos de sensor de IoT y los análisis en tiempo real. También se proporcionan otras funciones, incluidas las directivas de retención de datos (RP), etc. InfluxDB Enterprise ofrece una solución de almacenamiento en clúster de alta disponibilidad y altamente escalable para las necesidades de datos cronológicos.
Los proveedores de almacenamiento de persistencia de datos InfluxDB están disponibles como parte de la instalación por defecto para PostgreSQL, MSSQL o Azure SQL y se utilizan para los proveedores de propiedades:
InfluxPersistenceProviderPackage
Influx2PersistenceProviderPackage
ThingWorx soporta las versiones OSS, Enterprise y Cloud.
InfluxDB OSS 1.x e InfluxDB Enterprise 1.x se soportan a través de InfluxPersistenceProviderPackage. InfluxDB Enterprise solo se soporta con INfluxDB 1.x
InfluxDB OSS 2.x se soporta a través de Influx2PersistenceProviderPackage.
InfluxDB Cloud solo se soporta a través de Influx2PersistenceProviderPackage
Consulte Release Advisor para conocer las versiones soportadas específicamente.
* 
Se ha añadido soporte para Influx 2.0 de 9.3.1 a ThingWorx
* 
El proveedor de datos InfluxDB actualmente solo soporta flujos de valor y flujos. El soporte de tablas de datos, wikis y blogs no está disponible.
* 
La exportación de datos se soporta con InfluxPersistenceProviderPackage y, a partir de la versión 9.3.8 de ThingWorx y en adelante, se soporta con Influx2PersistenceProviderPackage.
* 
InfluxDB no se soporta como proveedor de propiedades.
* 
Los clientes que deseen actualizar a ThingWorx 9.3.9 y versiones posteriores, y ThingWorx 9.4.0 y versiones posteriores, así como utilizar InfluxDB OSS 2.0 para aprovechar Influx2PersistenceProviderPackage, primero deben actualizar a ThingWorx 9.3.8 para pasar a InfluxDB OSS v2.6, ya que se requiere la exportación antes de la actualización a InfluxDB v2.6. Para InfluxDB Cloud, no es necesario exportar una actualización anterior por lo que no es necesario pasar a ThingWorx 9.3.8 antes de la actualización a ThingWorx 9.3.9 y versiones posteriores y ThingWorx 9.4.0 y versiones posteriores.
Panorama de inicio de InfluxDB Enterprise y ThingWorx
* 
En el diagrama anterior se incluye InfluxDB Enterprise. Para InfluxDB de código abierto, el diagrama de arquitectura es el mismo, excepto que solo funciona con un nodo. Además, para InfluxDB Cloud, la base de datos se aloja fuera del entorno de ThingWorx y la gestiona la empresa InfluxData.
En esta documentación se utilizan los siguientes términos cuando se hace referencia a la configuración de InfluxDB Enterprise:
Equilibrador de carga: InfluxDB Enterprise no funciona como equilibrador de carga. Un administrador debe configurarlo.
Clúster: un clúster de InfluxDB Enterprise consta de dos tipos de nodos; nodos de metadatos y de datos.
Nodos de datos: en ellos residen todos los datos de serie temporal sin procesar. Para un entorno de alta disponibilidad, es necesario un factor de replicación de al menos dos.
Nodos de metadatos: estos nodos tienen un trabajo simple, que es mantener la coherencia del estado. Contienen solo la información básica sobre el estado, como las directivas de retención, los usuarios y las bases de datos. En un entorno de alta disponibilidad, se necesitan al menos tres nodos de metadatos.
Para obtener más información acerca de la alta disponibilidad, consulte https://www.influxdata.com/blog/understanding-influxenterprise-what-is-a-cluster/.
Elección de la opción de base de datos de Influx correcta
A continuación, se ofrece un resumen de nivel superior de las dos opciones de InfluxDB disponibles actualmente para clientes de PTC en entornos locales. Las opciones de software de base de datos y las opciones de soporte subyacentes se deben considerar cuidadosamente a la hora de elegir un producto de Influx. Ante cualquier pregunta a la hora de elegir las opciones de base de datos correctas, póngase en contacto con el soporte técnico de Influx: https://www.influxdata.com/contact-sales. Los clientes de PTC deben identificarse como usuarios de PTC ThingWorx.
InfluxDB open source OSS (single node)
Únicamente un solo nodo, no escalable.
Gratis
El soporte de Influx basado en la comunidad está disponible a través del sitio de la comunidad de Influx en InfluxData Community Forums.
No se recomienda para las instancias de producción, debido al límite del soporte técnico de Influx (sin soporte de Influx en directo para situaciones urgentes).
El cliente de PTC asume la responsabilidad del mantenimiento y la supervisión de las bases de datos.
PTC hará el mayor esfuerzo para proporcionar recomendaciones sobre Influx. Sin embargo, algunas situaciones pueden requerir la derivación a los recursos técnicos de Influx.
InfluxDB Enterprise
Si se busca un almacén de datos para volúmenes y datos de velocidad superiores a los que están disponibles actualmente con otras bases de datos, InfluxDB Enterprise presenta las siguientes ventajas:
Mayor velocidad de introducción de datos.
Puede haber más de un almacén de datos para los datos de tiempo de ejecución. Por ejemplo, se pueden mantener datos relacionales en PostgreSQL, a la vez que se utiliza InfluxDB para datos de flujo y flujo de valor de gran volumen. Al definir un flujo o un flujo de valor, ThingWorx utiliza el proveedor de almacén de datos de tiempo de ejecución por defecto, pero se puede configurar para utilizar cualquier proveedor de persistencia definido. Aún se pueden exportar datos de otros proveedores e importarlos en InfluxDB. ThingWorx gestiona la abstracción de datos.
Arquitectura apta para la nube (escala horizontal, solo con InfluxDB Enterprise).
Alta disponibilidad disponible.
Soporte técnico de Influx disponible con el contrato de Influx a través del sitio de soporte técnico de Influx en InfluxData.
El cliente de PTC puede abrir vales de soporte con Influx según sea necesario para la colaboración entre PTC e Influx.
El cliente de PTC asume la responsabilidad del mantenimiento y la supervisión de las bases de datos.
InfluxDB Cloud (alojada fuera del entorno de ThingWorx y la gestiona la empresa InfluxData)
Con InfluxDB Cloud se ofrecen las siguientes ventajas:
InfluxDB Cloud está creada como una plataforma nativa de la nube, de múltiples inquilinos y de escala elástica, sin servidor.
Ofrece disponibilidad, durabilidad y escalabilidad en múltiples regiones en AWS, Google y Azure.
Es segura y está protegida con todas las funciones de seguridad y parches más recientes instalados y configurados.
InfluxDB Cloud permite reequilibrar automáticamente los clústeres, gestionar la fragmentación y aprovechar los factores de replicación integrados.
Instalación y configuración de InfluxDB
* 
Es responsabilidad de quien instale la base de datos de Influx leer y comprender toda la documentación relacionada con la seguridad que se proporciona para InfluxDB. PTC recomienda encarecidamente instalar y configurar InfluxDB con configuraciones seguras que incluyan el uso del nombre de usuario y una contraseña segura.
* 
Para este proceso se supone que está instalado ThingWorx. Consulte Instalación de ThingWorx.
* 
Si InfluxDB y ThingWorx se encuentran en ordenadores de distintas zonas horarias, puede haber problemas al extraer los datos. Para evitar estos problemas, se recomienda aplicar una de las siguientes opciones de implementación:
Implemente InfluxDB y ThingWorx en el mismo host/ordenador.
Si InfluxDB y ThingWorx se implementan en diferentes hosts/ordenadores, la zona horaria del servidor de InfluxDB debe estar alineada con el parámetro -Duser.timezone de Tomcat con relojes sincronizados para evitar problemas relacionados con los resultados de la consulta.
1. Descargar e instalar Influx DB
Instrucciones para descargar e instalar Influx DB 2.0:
InfluxDB Open Source (nodo único): consulte Utilización de InfluxDB como proveedor de persistencia Vínculos de descarga, nodo de datos:
InfluxDB Enterprise (alta disponibilidad): no disponible para Influx 2.0
Instrucciones para descargar e instalar Influx DB 1.x:
* 
InfluxDB no se soporta en Windows. En los siguientes pasos se utiliza el sistema operativo UNIX.
InfluxDB de código abierto (nodo único): referencia Install InfluxDB.
Vínculos de descarga:
InfluxDB Enterprise (alta disponibilidad): referencia Install an InfluxDB Enterprise cluster in your own environment.
Vínculos de descarga, nodo de datos:
Vínculos de descarga, nodo de metadatos:
2. Para Influx1
Cree una base de datos dentro de InfluxDB. Obtenga y ejecute el script thingworxInfluxDBSetup.sh para crear la base de datos en InfluxDB. La interfaz de línea de comandos de InfluxDB debe estar disponible desde la ubicación desde la que se ejecuta el script. Para obtener más información, consulte Launch influx.
* 
El script thingworxInfluxDBSetup.sh está disponible en Portal de soporte de PTC, en la carpeta install del paquete del software descargado.
En el siguiente comando de ejemplo se crea una base de datos con las directivas de conservación por defecto:
CREATE DATABASE thingworx with DURATION 365d REPLICATION 1 SHARD DURATION 30d NAME autogen
* 
El proveedor de datos InfluxDB actualmente soporta una directiva de retención con el nombre autogen solamente. Durante la creación de la base de datos que se va a utilizar con el proveedor de datos, se puede especificar el nombre de la directiva y otras directivas, por ejemplo, el factor de replicación.
Cree un usuario de InfluxDB desde la interfaz de línea de comandos de InfluxDB. En el siguiente comando de ejemplo se crea un usuario:
CREATE USER twadmin WITH PASSWORD 'password' WITH ALL PRIVILEGES
3. Para Influx2, cree el depósito y el usuario iniciales con el comando: influx setup. Para obtener más información, consulte https://docs.influxdata.com/influxdb/v2.0/reference/cli/influx/setup/
4. En ThingWorx Composer, cree un nuevo proveedor de persistencia.
5. En el campo Paquete de proveedor de persistencia, seleccione
Para las versiones inferiores a Influx 2.0, seleccione InfluxPersistenceProviderPackage
Para la versión de Influx 2.0, seleccione Influx2PersistenceProviderPackage
6. Pulse en Guardar.
7. Pulse en la ficha Configuración, configure la información de conexión, según sea necesario, y pulse en Guardar. Consulte las opciones de configuración en las siguientes tablas.
Si se utiliza una instancia de proveedor de persistencia (creada con el paquete de proveedor de persistencia de InfluxDB) como proveedor de persistencia por defecto, se pueden editar las siguientes opciones de configuración de cola de flujo y flujo de valor. Estas ediciones se aplicarán a todos los flujos y flujos de valor. No se puede cambiar esta configuración para un flujo o un flujo de valor específico.
* 
Al cambiar el proveedor de persistencia de un flujo de valor (por ejemplo, de ThingworxPersistenceProvider a InfluxPersistenceProviderPackage), cualquier cosa que implemente un flujo de valor debe llamar al servicio RestartThing para recuperar las entradas escritas en el nuevo proveedor de persistencia. Si las cosas no se reinician, las entradas se pueden escribir en la base de datos, pero no se recuperan hasta que se reinicia la cosa.
Información de conexión para Influx 2.0
Nombre
Descripción
Valor por defecto
URL de conexión
URL de la base de datos de la que se deben adquirir las conexiones.
http://localhost:8086
Token
El token de seguridad para acceder al sistema, que se utiliza en lugar de una contraseña. (como una appKey).
Nombre de la organización
Nombre de la organización.
Nombre del bucket
Nombre del bucket de datos (esquema donde se almacenan todos los datos).
Crear bucket automáticamente
Si se define en verdadero, se crea el bucket especificado en bucketName si aún no existe. De lo contrario, se producirá un error si el bucket no existe.
Falso
Período de retención (días)
El número de días que se conservan los datos. Los datos se borrarán después de este período. El valor por defecto es 0, que consiste en conservar los datos para siempre.
0
Batch Size
Se trata del tamaño de lote que utiliza el cliente Influx. Siempre enviará puntos de datos en lotes para mejorar el rendimiento. Esto es adicional al tamaño de lote de flujo. Cuando el número de puntos del tamaño de lote está listo para su envío, se envían los datos a Influx.
* 
El valor no se utiliza y se quitará en una versión futura.
1000
Flush Interval
Se indica la frecuencia con la que el cliente Influx debe vaciar los datos si no ha alcanzado su tamaño de lote. El valor se especifica en milisegundos.
* 
El valor no se utiliza y se quitará en una versión futura.
1000 o una vez por segundo
Tamaño de extracción de datos del proveedor de persistencia
El número de filas que se debe capturar por lotes en lugar del almacenamiento en caché de todas las filas en el lado del cliente.
5000
Cantidad de tiempo de espera de conexión
La cantidad de tiempo que se debe intentar una conexión para Influx. El valor se especifica en segundos.
10
Hora para el tiempo de espera de lectura
La cantidad de tiempo que se tarda en leer los datos de Influx para una solicitud. El valor se especifica en segundos.
10
Hora para el tiempo de espera de escritura
La cantidad de tiempo que se intentará escribir datos en Influx. El valor se especifica en segundos.
* 
Para InFluxDB Cloud, PTC recomienda definir el valor de Hora para el tiempo de espera de escritura en 20 segundos.
10
Nivel de registro
El nivel de registro del cliente Influx y los registros se envían a la salida de la consola. Los valores pueden ser NONE, BASIC, HEADERS o BODY, y cada nivel proporciona información adicional.
NINGUNO
Información de conexión para Influx 1.8
Nombre
Descripción
Valor por defecto
URL de conexión
URL de la base de datos de la que se deben adquirir las conexiones.
http://localhost:8086
Esquema de base de datos
Esquema para conectarse.
thingworx
Nombre de usuario
Nombre de usuario para adquirir una conexión de base de datos.
twadmin
Contraseña
Contraseña para adquirir una conexión de base de datos.
n/d
Tamaño de extracción de datos del proveedor de persistencia
Permite obtener el tamaño de los datos del proveedor de persistencia.
5000
Cantidad de tiempo de espera de conexión
Cantidad, en segundos, del tiempo de espera de conexión.
10
Hora para el tiempo de espera de lectura
Cantidad, en segundos, del tiempo de espera de lectura.
10
Hora para el tiempo de espera de escritura
Cantidad, en segundos, del tiempo de espera de escritura.
10
Configuración del procesamiento del flujo para Influx 1.8 y 2.0
Nombre
Descripción
Tipo base
Valor por defecto
Tamaño máximo de cola
Número máximo de entradas de flujo para la cola. Cuando se alcanza el valor especificado, se rechazan las entradas posteriores.
Número
250000
Tiempo de espera máximo para vaciar el búfer de flujo (milisegundos)
Número de milisegundos que el sistema espera antes de vaciar el búfer de flujo.
Número
2000
Número de subprocesos de procesamiento
Número de subprocesos de procesamiento dedicados al flujo.
* 
El proveedor InfluxPersistenceProviderPackage tiene un mejor rendimiento con menos subprocesos. Está altamente optimizado para gestionar datos de un número menor de canales.
Para Influx2PersistenceProviderPackage, ya no es el caso. PTC recomienda aumentar el número de subprocesos para obtener un mejor rendimiento. Para la nube de InfluxDB, PTC recomienda aumentar el valor de Número de subprocesos de procesamiento a 10, el valor de Tamaño máximo de cola a 1000000 y el valor de Número máximo de escrituras de flujo de valores a 25000, para alcanzar un rendimiento de 80.000 wps.
Número
5
Número máximo de elementos para vaciar el búfer de flujo
Número máximo de elementos que se pueden acumular antes de vaciar el búfer de flujo.
Número
1000
Número máximo de escrituras de flujo de valores por bloque de proceso
Número máximo de escrituras de flujo para procesar en un bloque.
Número
2500
Velocidad de lectura de estado de búfer (milisegundos)
El estado de búfer se verifica con el valor de velocidad especificado en milisegundos.
Número
5
Configuración del procesamiento del flujo de valores para Influx 1.8 y 2.0
Nombre
Descripción
Tipo base
Valor por defecto
Tamaño máximo de cola
Número máximo de entradas de flujo de valor para la cola. Cuando se alcanza el valor especificado, se rechazan las entradas siguientes.
Número
500000
Tiempo de espera máximo para vaciar el búfer de flujo de valores (milisegundos)
Número de milisegundos que el sistema espera antes de vaciar el búfer de flujo de valor.
Número
10000
Número de subprocesos de procesamiento
Número de subprocesos de procesamiento asignados al flujo de valor.
* 
El proveedor InfluxPersistenceProviderPackage tiene un mejor rendimiento con menos subprocesos. Está altamente optimizado para gestionar datos de un número menor de canales.
Para Influx2PersistenceProviderPackage, ya no es el caso. PTC recomienda aumentar el número de subprocesos para obtener un mejor rendimiento. Para la nube de InfluxDB, PTC recomienda aumentar el valor de Número de subprocesos de procesamiento a 10, el valor de Tamaño máximo de cola a 1000000 y el valor de Número máximo de escrituras de flujo de valores a 25000, para alcanzar un rendimiento de 80.000 wps.
Número
5
Número máximo de elementos para vaciar el búfer de valores
Número máximo de elementos que se pueden acumular antes de vaciar el búfer de flujo de valor.
Número
1000
Número máximo de escrituras de flujo de valores por bloque de proceso
Número máximo de elementos para procesar en un bloque.
Número
2500
Velocidad de lectura de estado de búfer (milisegundos)
El estado de búfer se verifica con el valor de velocidad especificado en milisegundos.
Número
5
8. Pulse en la ficha Información general y seleccione la casilla Activo.
9. Pulse en Guardar.
Prácticas recomendadas
Límite de la serie
La serie es el número total de propiedades para todas las cosas conectadas en InfluxDB. InfluxDB tiene un buen rendimiento con un gran volumen de datos dirigido a una pequeña cantidad de cosas y propiedades de cosa, como 10.000 o 100.000. Por defecto, en InfluxDB el número total de la serie se limita a un millón. Se puede aumentar el límite, pero el rendimiento de InfluxDB se reduce a medida que el número de la serie supera este límite.
Si hay una gran cantidad de cosas y propiedades, se pueden elegir las que tienen un mayor volumen de datos y señalar solo a estas en InfluxDB para aliviar la presión de PostgreSQL o MSSQL.
Como alternativa, si desea dividir la serie en varios servidores, se pueden tener varias instancias de proveedor de datos de InfluxDB señalando a otras instancias de servidor InfluxDB.
Límite de escritura
Hay 100.000 escrituras por segundo con una máquina virtual con memoria de 60 GB y 32 núcleos. Más allá de este límite, se pueden producir problemas en ThingWorx y se pueden agotar los recursos para controlar cualquier solicitud o trabajo, como escribir en la base de datos. En ese punto, ThingWorx se detiene, mientras InfluxDB sigue escribiendo en la base de datos. No se trata de un problema con PostgreSQL porque PostgreSQL se convierte en un cuello de botella y ThingWorx nunca llega al punto de quedarse sin recursos para controlar las tareas interiores.
Conexión SSL/segura
InfluxDB soporta las conexiones SSL y HTTPS. Se pueden activar las conexiones SSL y HTTPS para aumentar la seguridad si no se soporta la red entre ThingWorx e InfluxDB. Un certificado autofirmado es adecuado si la clave privada de firma se mantiene segura.
Limitaciones conocidas de InfluxDB en tipos base de propiedades
No se puede cambiar el tipo base de una propiedad después de haberla registrado en un flujo de valor. Para obtener más información, consulte Type conflict on insert int value in float field#3460.
Depuración de propiedades
Los servicios PurgeAllPropertyHistory, PurgeSelectedPropertyHistory y PurgePropertyHistory se pueden utilizar para depurar las propiedades de InfluxDB. Los parámetros startDate y endDate se utilizan para especificar un rango.
* 
La depuración no se soporta cuando se utiliza el proveedor Influx2PersistenceProviderPackage. Los servicios PurgePropertyHistory, PurgeAllPropertyHistory, PurgeSelectedPropertyHistory no tienen ningún efecto.
¿Fue esto útil?