Определение модели ThingWorx в Composer > Хранилище данных > Поставщики хранилищ данных > Использование InfluxDB в качестве поставщика хранилища данных
Использование InfluxDB в качестве поставщика хранилища данных
Общие сведения
Если система интенсивно работает с данными временного ряда, а реализация в значительной степени зависит от потоков значений или потоков для сохранения/загрузки данных, рекомендуется использовать InfluxDB в качестве поставщика хранилища данных в ThingWorx. Приложение InfluxDB - это высокопроизводительное хранилище данных, разработанное специально для данных временного ряда. Оно имеет высокую пропускную способность для поступающих данных, позволяет выполнять сжатие и запрашивать эти же самые данные в реальном времени. InfluxDB используется в качестве хранилища данных для любых случаев оперирования с большими объемами данных с меткой времени, включая мониторинг DevOps, данные журналов, метрики приложений, данные датчиков IoT и аналитику в реальном времени. Оно также предоставляет другие возможности, включая политики сохранения данных (RP, Data Retention Policies) и т. д. InfluxDB Enterprise предлагает высокую доступность и хорошо масштабируемое решение по кластеризации для потребностей данных временного ряда.
Поставщики хранилищ данных InfluxDB доступны как часть установки по умолчанию для PostgreSQL, MSSQL или Azure SQL, используемых для поставщиков свойств:
InfluxPersistenceProviderPackage
Influx2PersistenceProviderPackage
ThingWorx поддерживает версии OSS, Enterprise и Cloud.
InfluxDB OSS 1.x и InfluxDB Enterprise 1.x. поддерживаются через InfluxPersistenceProviderPackage. InfluxDB Enterprise поддерживается только с INfluxDB 1.x.
InfluxDB OSS 2.x поддерживается через Influx2PersistenceProviderPackage.
InfluxDB Cloud поддерживается только через Influx2PersistenceProviderPackage.
Поддерживаемые версии см. в Release Advisor.
* 
Поддержка Influx 2.0 добавлена в ThingWorx, начиная с версии 9.3.1.
* 
Поставщик данных InfluxDB в настоящее время поддерживает только потоки значений и потоки. Поддержка таблиц данных, вики и блогов недоступна.
* 
Экспорт данных поддерживается с помощью InfluxPersistenceProviderPackage и начиная с версии ThingWorx 9.3.8. Экспорт данных теперь поддерживается с помощью Influx2PersistenceProviderPackage.
* 
InfluxDB не поддерживается как поставщик свойств.
* 
Клиентам, которым требуется обновление до ThingWorx 9.3.9 и более поздних версий и до ThingWorx 9.4.0 и более поздних версий с использованием InfluxDB OSS 2.0, для использования Influx2PersistenceProviderPackage необходимо сначала выполнить обновление до ThingWorx 9.3.8, чтобы перейти к InfluxDB OSS v2.6, поскольку требуется экспорт перед обновлением до InfluxDB версии v2.6. Для InfluxDB Cloud не требуется экспортировать предыдущее обновление, поэтому не нужно переходить на версию ThingWorx 9.3.8 перед обновлением до ThingWorx 9.3.9 и более поздних версий, а также до ThingWorx 9.4.0 и более поздних версий.
Начальная среда InfluxDB Enterprise и ThingWorx
* 
Схема, приведенная выше, включает InfluxDB Enterprise. Для открытого исходного кода InfluxDB схема архитектуры была бы той же самой, за исключением того, что она работает только с одним узлом. Для InfluxDB Cloud база данных размещается вне среды ThingWorx и управляется компанией InfluxData.
При ссылке на конфигурацию для InfluxDB Enterprise в этой документации используются следующие термины.
Балансировщик нагрузки - InfluxDB Enterprise не функционирует как балансировщик нагрузки. Администратор должен его сконфигурировать.
Кластер - кластер InfluxDB Enterprise состоит из двух типов узлов - метаузлов и узлов данных.
Узлы данных - в них находятся все исходные данные временного ряда. Для режима высокой доступности нужен коэффициент репликации, равный минимум 2.
Метаузлы - эти узлы решают простую задачу: сохранять согласованность состояния. Они содержат только основную информацию о состоянии: политики сохранения, пользователи и базы данных. В среде высокой доступности необходимо наличие по крайней мере трех метаузлов.
Дополнительные сведения о высокой доступности можно найти на странице https://www.influxdata.com/blog/understanding-influxenterprise-what-is-a-cluster/.
Правильный выбор опции базы данных Influx
Ниже приведен обобщенный обзор двух опций InfluxDB, доступных в настоящее время для локальных клиентов PTC. При выборе продукта Influx необходимо тщательно изучить опции программного обеспечения базы данных и базовые опции поддержки. По любым вопросам правильного выбора опций базы данных обращайтесь в службу технической поддержки Influx: https://www.influxdata.com/contact-sales. Клиенты PTC должны идентифицировать себя как пользователи PTC ThingWorx.
InfluxDB с открытым исходным кодом (OSS), один узел
Только один узел, не масштабируется.
Бесплатно
Доступна поддержка на основе сообщества на сайте сообщества Influx: Форумы сообщества InfluxData.
Не рекомендуется для производственных экземпляров из-за ограничений технической поддержки Influx (нет динамической поддержки Influx для экстренных ситуаций).
Клиент PTC несет ответственность за поддержку и мониторинг базы данных.
PTC предоставит наилучшие рекомендации по Influx, однако в некоторых ситуациях может потребоваться обращение к техническим ресурсам Influx.
InfluxDB Enterprise
Если вы ищете хранилище данных для больших объемов и скоростей данных, чем те, которые в текущий момент доступны с другими базами данных, то InfluxDB Enterprise может дать следующие преимущества:
Более высокая частота поступления данных.
Можно иметь несколько репозиториев данных для данных времени выполнения. Например, можно хранить реляционные данные в PostgreSQL и в то же время использовать InfluxDB для данных потока большого объема и данных потока значений. При определении потока или потока значений ThingWorx использует поставщик хранилища данных времени выполнения по умолчанию, но его можно сконфигурировать для использования любого определенного поставщика хранилища данных. При этом можно экспортировать данные из других поставщиков данных и импортировать в InfluxDB. ThingWorx обрабатывает абстракцию данных.
Удобная облачная архитектура (горизонтальное масштабирование - только с InfluxDB Enterprise)
Доступен режим высокой доступности.
Техническая поддержка Influx доступна при использовании контракта Influx на сайте поддержки Influx: InfluxData.
Клиент PTC может открывать заявки о неисправности с помощью Influx, если это необходимо для совместной работы PTC/Influx.
Клиент PTC несет ответственность за поддержку и мониторинг базы данных.
InfluxDB Cloud (размещается вне среды ThingWorx и управляется компанией InfluxData)
Использование InfluxDB Cloud предоставляет следующие преимущества.
InfluxDB Cloud создается как собственная для облака, многопользовательская, эластично масштабируемая платформа без сервера.
Обеспечивает доступность, надежность и масштабируемость в нескольких областях в AWS, Google и Azure.
Платформа является безопасной и защищенной со всеми последними функциями безопасности и установленными и настроенными исправлениями.
InfluxDB Cloud автоматически изменяет балансировку кластеров, обрабатывает сегментирование и использует встроенные факторы репликации.
Установка и конфигурирование InfluxDB
* 
Любой пользователь, устанавливающий базу данных Influx, должен прочитать и понять всю относящуюся к безопасности документацию, предоставленную для InfluxDB. PTC настоятельно рекомендует устанавливать и конфигурировать InfluxDB с использованием защищенных конфигураций, включающих использование имени пользователя и надежного пароля.
* 
В этом процессе предполагается, что приложение ThingWorx уже установлено. См. раздел Установка ThingWorx.
* 
Если InfluxDB и ThingWorx находятся на компьютерах с разными часовыми поясами, могут возникнуть проблемы с вызовом данных. Чтобы избежать этих проблем, рекомендуется использовать одну из следующих опций развертывания.
Разверните InfluxDB и ThingWorx на одном и том же хосте/компьютере.
Если InfluxDB и ThingWorx развернуты на различных хост-компьютерах или компьютерах, часовой пояс сервера InfluxDB должен быть согласован с помощью параметра Tomcat -Duser.timezone с часами, синхронизированными во избежание проблем, связанных с результатами запроса.
1. Загрузите и установите Influx DB.
Инструкции по загрузке и установке Influx DB 2.0:
InfluxDB Open Source (один узел): см. Использование InfluxDB в качестве поставщика хранилища данныхСсылки для загрузки - узел данных:
InfluxDB Enterprise (высокая доступность): недоступно для Influx 2.0
Инструкции по загрузке и установке Influx DB 1.x:
* 
InfluxDB не поддерживается в Windows. В приведенных ниже шагах используется ОС UNIX.
InfluxDB с открытым исходным кодом (один узел): см. страницу Install InfluxDB OSS
Ссылки для загрузки:
InfluxDB Enterprise (с высокой доступностью): см. страницу Install an InfluxDB Enterprise cluster in your own environment
Ссылки для загрузки в узел данных:
Ссылки для загрузки метаданных:
2. Для Influx1
Создайте базу данных в InfluxDB. Получите и выполните сценарий thingworxInfluxDBSetup.sh, чтобы создать базу данных в InfluxDB. Интерфейс командной строки InfluxDB должен быть доступен из расположения, из которого запускается сценарий. Дополнительные сведения см. в разделе Launch Influx.
* 
Сценарий thingworxInfluxDBSetup.sh доступен на портале поддержки PTC в папке install в пакете загрузки программного обеспечения.
Команда, приведенная в следующем примере, создает базу данных с политиками сохранения по умолчанию:
CREATE DATABASE thingworx with DURATION 365d REPLICATION 1 SHARD DURATION 30d NAME autogen
* 
Поставщик данных InfluxDB в настоящее время поддерживает только политику сохранения с именем autogen. При создании базы данных для использования с поставщиком данных можно указать имя политики, а также другие политики, такие как коэффициент репликации.
Создайте пользователя InfluxDB из интерфейса командной строки InfluxDB. Команда в следующем примере создает пользователя:
CREATE USER twadmin WITH PASSWORD 'password' WITH ALL PRIVILEGES
3. Для Influx2 создайте начальный контейнер и пользователя с помощью команды influx setup Дополнительные сведения см. в разделе https://docs.influxdata.com/influxdb/v2.0/reference/cli/influx/setup/
4. В ThingWorx Composer создайте новый поставщик хранилища данных.
5. В поле Пакет поставщика хранилища данных выберите
Для версии ниже Influx 2.0 выберите InfluxPersistenceProviderPackage
Для версии Influx 2.0 выберите Influx2PersistenceProviderPackage
6. Щелкните Сохранить.
7. Щелкните вкладку Конфигурация и настройте информацию о соединении нужным образом, затем сохраните ее. Сведения об опциях конфигурации см. в приведенных ниже таблицах.
Если использовать экземпляр поставщика хранилища данных (созданный с использованием пакета поставщика хранилища данных InfluxDB) в качестве поставщика хранилища данных по умолчанию, можно править следующие настройки конфигурации очереди потоков и потоков значений. Эти изменения затем применяются ко всем потокам и потокам значений. Невозможно изменить эти настройки для конкретного потока или потока значений.
* 
При переключении поставщика хранилища данных для потока значений (например, с ThingworxPersistenceProvider на InfluxPersistenceProviderPackage) любой объект Thing, реализующий поток значений, должен вызвать сервис RestartThing для загрузки записей, записанных в новый поставщик хранилища данных. Если вещи не перезапускать, записи могут быть записаны в базу данных, но они не будут загружены до перезапуска вещи.
Информация о соединении для Influx 2.0
Наименование
Описание
Значение по умолчанию
URL-адрес соединения
URL-адрес базы данных, с которой необходимо получить соединения.
http://localhost:8086
Лексема
Лексема безопасности для доступа к системе используется вместо пароля. (например, appkey).
Наименование организации
Наименование организации
Наименование контейнера
Наименование контейнера данных (схема, в которой хранятся все данные).
Автоматически создавать контейнер
Если задано значение true, создается контейнер, указанный в bucketName, если он еще не существует. В противном случае возникает ошибка, если контейнер не существует.
False
Период удержания (дн.)
Число дней, когда сохраняются данные. После этого периода данные будут удалены. Значение по умолчанию 0 позволяет постоянно сохранять данные.
0
Размер пакета
Это размер пакета, используемый клиентом Influx. Точки данных всегда будут отправляться в пакетах для повышения производительности. Это дополнение к размеру пакета потока. Когда точки данных для пакета заданного размера готовы к отправке, данные отправляются в Influx.
* 
Это значение не используется и будет удалено в будущем выпуске.
1000
Интервал очистки
Указывает, как часто клиент Influx будет очищать данные, если не достигнут размер пакета. Значение указывается в миллисекундах.
* 
Это значение не используется и будет удалено в будущем выпуске.
1000 или один раз в секунду
Вызвать размер данных из поставщика хранилища данных
Число строк, которые будут выбраны в пакетах вместо кэширования всех строк на стороне клиента.
5000
Тайм-аут соединения
Время, в течение которого будет предпринята попытка соединения с Influx. Значение указывается в секундах.
10
Время для тайм-аута чтения
Количество времени для чтения данных из Influx для запроса. Значение указывается в секундах.
10
Время для тайм-аута записи
Количество времени для записи данных в Influx. Значение указывается в секундах.
* 
Для облака InFluxDB PTC рекомендует задать Время для тайм-аута записи равным 20 секундам.
10
Уровень журнала
Уровень журнала клиента Influx и журналы отправляются в выходные данные консоли. Значениями могут быть NONE, BASIC, HEADERS или BODY, где каждый уровень предоставляет дополнительную информацию.
НЕТ
Информация о соединении для Influx 1.8
Наименование
Описание
Значение по умолчанию
URL-адрес соединения
URL-адрес базы данных, с которой необходимо получить соединения.
http://localhost:8086
Схема базы данных
Схема соединения.
thingworx
Имя пользователя
Имя пользователя для получения соединения с базой данных.
twadmin
Пароль
Пароль для получения соединения с базой данных.
Н/Д
Вызвать размер данных из поставщика хранилища данных
Получение размера данных из поставщика хранилища данных.
5000
Тайм-аут соединения
Время тайм-аута соединения в секундах.
10
Время для тайм-аута чтения
Время тайм-аута чтения в секундах.
10
Время для тайм-аута записи
Время тайм-аута записи в секундах.
10
Настройки обработки потоков для Influx 1.8 и 2.0
Наименование
Описание
Базовый тип
Значение по умолчанию
Максимальный размер очереди
Максимальное количество записей потока для постановки в очередь. После достижения указанного значения последующие записи отклоняются.
Число
250000
Максимальное время ожидания перед сбросом буфера потока (мс)
Число миллисекунд, которые система ожидает, прежде чем сбросить буфер потока.
Число
2000
Число потоков обработки
Число потоков обработки, выделенных данному потоку.
* 
Производительность поставщика InfluxPersistenceProviderPackage повышается при меньшем числе потоков. Эта база данных обладает высокой степенью оптимизации для обработки данных из меньшего числа потоков.
В случае Influx2PersistenceProviderPackage это правило не действует. PTC рекомендует увеличить количество потоков для повышения пропускной способности. PTC рекомендует увеличить в InfluxDB Cloud Число потоков обработки до 10, Максимальный размер очереди до 1000000 и Максимальное число записей потоков значений в блоке обработки до 25000, чтобы достигнуть пропускной способности 80 000 записей в секунду (wps).
Число
5
Максимальное число элементов перед сбросом буфера потока
Максимальное число элементов, которое может быть накоплено перед сбросом буфера потока.
Число
1000
Максимальное число операций записи потока значений в блоке обработки
Максимальное число операций записи потока в блоке обработки.
Число
2500
Частота сканирования статуса буфера (мс).
Статус буфера проверяется в соответствии с указанным значением частоты (в миллисекундах).
Число
5
Настройки обработки потоков значений для Influx 1.8 и 2.0
Наименование
Описание
Базовый тип
Значение по умолчанию
Максимальный размер очереди
Максимальное количество записей потока значений для постановки в очередь. После достижения указанного значения последующие записи отклоняются.
Число
500000
Максимальное время ожидания перед сбросом буфера потока значений (мс)
Число миллисекунд, в течение которых система ожидает, прежде чем сбросить буфер потока значений.
Число
10000
Число потоков обработки
Число потоков обработки, выделенных данному потоку значений.
* 
Производительность поставщика InfluxPersistenceProviderPackage повышается при меньшем числе потоков. Эта база данных обладает высокой степенью оптимизации для обработки данных из меньшего числа потоков.
В случае Influx2PersistenceProviderPackage это правило не действует. PTC рекомендует увеличить количество потоков для повышения пропускной способности. PTC рекомендует увеличить в InfluxDB Cloud Число потоков обработки до 10, Максимальный размер очереди до 1000000 и Максимальное число записей потоков значений в блоке обработки до 25000, чтобы достигнуть пропускной способности 80 000 записей в секунду (wps).
Число
5
Максимальное число элементов перед сбросом буфера потока значений
Максимальное число элементов, которое может быть накоплено перед сбросом буфера потока значений.
Число
1000
Максимальное число операций записи потока значений в блоке обработки
Максимальное число элементов в блоке обработки.
Число
2500
Частота сканирования статуса буфера (мс)
Статус буфера проверяется в соответствии с указанным значением частоты (в миллисекундах).
Число
5
8. Щелкните вкладку Общая информация и установите флажок Активные.
9. Щелкните Сохранить.
Рекомендации
Предел числа серий
Серия - это общее число свойств для всех вещей, зарегистрированных в InfluxDB. InfluxDB успешно обрабатывает большие объемы данных, предназначенных для небольшого количества вещей и свойств вещей, такого как 10 тысяч или 100 тысяч. Общее число серий в InfluxDB по умолчанию не должно превышать 1. Этот предел можно увеличить, но производительность InfluxDB снижается по мере увеличения числа серий и превышения этого предела.
При наличии большого количества вещей и свойств можно выбрать имеющие наибольший объем данных и направить в InfluxDB только их, чтобы снять нагрузку с PostgreSQL или MSSQL.
С другой стороны, если нужно разделить серии на несколько серверов, можно использовать несколько экземпляров поставщика данных InfluxDB, направленных на разные экземпляры сервера InfluxDB.
Предел операций записи
Это 100 тыс. операций записи в секунду с памятью 60 ГБ в виртуальной машине с 32 ядрами. Выход за этот предел может вызвать проблемы в ThingWorx и привести к нехватке ресурсов для обработки запроса или задания, например выполнения записи в базу данных. В этот момент работа ThingWorx приостанавливается, в то время как приложение InfluxDB по-прежнему выполняет запись в базу данных. Эта проблема не возникает с PostgreSQL, в силу того что PostgreSQL становится "бутылочным горлышком" и ThingWorx никогда не попадает в ситуацию исчерпания ресурсов для обработки заданий внутри.
SSL/Безопасное соединение
InfluxDB поддерживает соединения SSL и HTTPS. Можно включить соединения SSL и HTTPS для повышения безопасности, если сеть между ThingWorx и InfluxDB не поддерживается. Самоподписанный сертификат является соответствующим, пока закрытый ключ подписывания хранится в безопасности.
Известные ограничения InfluxDB на базовые типы свойств
Нельзя изменить базовый тип свойства после того, как оно было записано в поток значений. Дополнительные сведения см. на странице Type conflict on insert int value in float field #3460.
Очистка свойств
Сервисы PurgeAllPropertyHistory, PurgeSelectedPropertyHistory и PurgePropertyHistory можно использовать для очистки свойств из InfluxDB. Используйте параметры startDate и endDate, чтобы указать диапазон.
* 
Очистка не поддерживается при использовании поставщика Influx2PersistenceProviderPackage. Сервисы PurgePropertyHistory, PurgeAllPropertyHistory и PurgeSelectedPropertyHistory не имеют никакого эффекта.
Было ли это полезно?