Composer での ThingWorx モデルの定義 > データストレージ > 永続化プロバイダ > 永続化プロバイダとしての InfluxDB の使用
永続化プロバイダとしての InfluxDB の使用
概要
システムで大量の時系列データが処理され、データの永続化/読み込みに関して実装が値ストリームまたはストリームに大きく依存している場合、ThingWorx で永続化プロバイダとして InfluxDB を使用することをお勧めします。InfluxDB は、時系列データ専用に記述された高性能なデータストアです。同データの高スループットでの取得、圧縮、リアルタイムのクエリーを可能にします。InfluxDB は、DevOps の監視、ログデータ、アプリケーション判定基準、IoT センサーデータ、リアルタイムアナリティクスなど、大量のタイムスタンプ付きデータを処理するあらゆるユースケースでデータストアとして使用されます。データ保持ポリシー (RP) などの機能も提供されます。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 を参照してください。
* 
InfluxDB データプロバイダは、現在のところ、値ストリームとストリームのみをサポートしています。データテーブル、Wiki、ブログはサポートされていません。
* 
データのエクスポートは InfluxPersistenceProviderPackage および Influx2PersistenceProviderPackage でサポートされています。
* 
InfluxDB はプロパティプロバイダとしてはサポートされていません。
* 
ThingWorx 9.3.9 以降および ThingWorx 9.4.0 以降にアップグレードし、InfluxDB OSS 2.0 を使用して Influx2PersistenceProviderPackage を活用するには、InfluxDB v2.6 へのアップグレードの前にエクスポートが必要であるため、InfluxDB OSS v2.6 に移行するために ThingWorx 9.3.8 にアップグレードする必要があります。InfluxDB Cloud の場合、アップグレードの前にエクスポートが必要ではないため、ThingWorx 9.3.9 以降および ThingWorx 9.4.0 以降へのアップグレードの前に ThingWorx 9.3.8 に移行する必要はありません。
InfluxDB Enterprise と ThingWorx の開始にあたっての全体像
* 
上記の図には InfluxDB Enterprise が含まれています。InfluxDB オープンソースでもアーキテクチャの図は同じですが、1 つのノードでのみ機能します。また、InfluxDB Cloud の場合、データベースは ThingWorx 環境外でホストされ、InfluxData 社によって管理されます。
このドキュメンテーションでは、InfluxDB Enterprise の設定に関して以下の用語が使用されます。
ロードバランサー - InfluxDB Enterprise はロードバランサーとして機能しません。管理者がこれを設定する必要があります。
クラスタ - InfluxDB Enterprise のクラスタはメタノードとデータノードの 2 つのタイプのノードから成ります。
データノード - 生の時系列データがすべてここに格納されます。高可用性を確保するためには、レプリケーション係数を 2 以上にする必要があります。
メタノード - これらのノードは、状態を安定させるという単純なジョブを実行します。ここには、保持ポリシー、ユーザー、データベースなど、状態に関する基本的な情報だけが格納されています。高可用性環境では、少なくとも 3 つのメタノードが必要です。
HA の詳細については、https://www.influxdata.com/blog/understanding-influxenterprise-what-is-a-cluster/ を参照してください。
適切な Influx データベースオプションの選択
PTC のオンプレミス顧客に対して現在使用可能な 2 つの InfluxDB オプションの概要を次に示します。Influx 製品を選択する際には、データベースソフトウェアオプションと基礎となるサポートオプションを慎重に検討する必要があります。正しいデータベースオプションを選択する際の質問は、Influx サポート: https://www.influxdata.com/contact-sales にお問い合わせください。PTC のお客様は、自身を PTC ThingWorx ユーザーとして識別する必要があります。
InfluxDB オープンソース OSS (単一ノード)
単一のノードのみであり、スケーラブルではありません。
無料
コミュニティベースの Influx サポートは、InfluxData Community Forums の Influx Community サイトを使用してご利用いただけます。
Influx テクニカルサポートの制限により (緊急の場合の Influx のリアルタイムサポートはありません)、運用インスタンスには推奨されません。
PTC のお客様は、データベースのメンテナンスと監視について責任を持つものとします。
PTC では、Influx 推奨事項について最大限の努力を試みますが、一部の状況では、Influx のテクニカルリソースにエスカレートする必要が生じる場合があります。
InfluxDB Enterprise
ほかのデータベースで現在提供されているものより容量が大きくデータ処理が高速なデータストアを探している場合、InfluxDB Enterprise を利用することによって以下のような利点がもたらされます。
より高速なデータの取得。
ランタイムデータ用に複数のデータリポジトリを持つことができます。たとえば、リレーショナルデータを PostgreSQL に保存したまま、InfluxDB を使用して大量のストリームデータと値ストリームデータを処理できます。ストリームまたは値ストリームを定義する際には、ThingWorx ではデフォルトのランタイムデータストアプロバイダを使用しますが、ユーザーが定義した永続化プロバイダを使用するように設定できます。ほかのデータプロバイダからデータをエクスポートして InfluxDB にインポートすることもできます。ThingWorx ではデータ抽象化が処理されます。
クラウドに適したアーキテクチャ (水平スケール、InfluxDB Enterprise のみ)。
高可用性を使用できます。
InfluxData の Influx サポートサイトを使用して、Influx の契約で使用可能な Influx テクニカルサポート。
PTC のお客様は、必要に応じ、PTC/Influx コラボレーションのチケットを Influx でオープンすることができます。
PTC のお客様は、データベースのメンテナンスと監視について責任を持つものとします。
InfluxDB Cloud (ThingWorx 環境外でホストされ、InfluxData 社によって管理される)
InfluxDB Cloud の利点は以下のとおりです。
InfluxDB Cloud は、クラウドネイティブ、マルチテナント、エラスティックスケール、サーバーレスのプラットフォームとして構築されています。
AWS、Google、および Azure の複数のリージョンで可用性、永続性、およびスケーラビリティを提供します。
これは安全で、最新のセキュリティ機能とパッチをすべてインストールして設定することにより保護されています。
InfluxDB Cloud は、クラスタのバランスを自動的に調整し、シャーディングを処理し、組み込みのレプリケーション係数を活用します。
最良事例
系列の上限
シリーズとは、InfluxDB に記録されるすべての Thing のプロパティの総数のことです。InfluxDB は、10,000 や 100,000 などの少量の Thing や Thing プロパティに大きなデータボリュームを割り当てることによって優れたパフォーマンスを発揮します。InfluxDB では系列の総数がデフォルトで 100 万に制限されています。この上限を増やすことはできますが、系列数がこの上限を超えると InfluxDB のパフォーマンスは低下します。
多数の Thing やプロパティがある場合、データボリュームが最大のものを選択し、それらだけを InfluxDB に割り当てて PostgreSQL または MSSQL の負荷を軽減できます。
あるいは、系列を複数のサーバーに分ける場合、InfluxDB サーバーの各インスタンスを割り当てた、複数の InfluxDB データプロバイダのインスタンスを作成できます。
書き込みの上限
32 コア 60 GB メモリの仮想マシンでの書き込みの上限は 1 秒当り 100,000 回です。この上限を超えると ThingWorx で問題が発生し、データベースへの書き込みなどのリクエストやジョブを処理するリソースが不足する可能性があります。その時点で、InfluxDB はデータベースへの書き込みを続行しますが、ThingWorx は機能停止します。PostgreSQL ではこの問題はありません。これは、PostgreSQL がボトルネックとなり、ThingWorx は内部でタスクを処理するリソースが不足する段階まで達することがないためです。
SSL/セキュア接続
InfluxDB は SSL 接続と HTTPS 接続をサポートします。SSL 接続と HTTPS 接続を有効にすることで、ThingWorx と InfluxDB 間のネットワークがサポートされない場合のセキュリティを向上させることができます。署名に使用したプライベートキーが安全に保管されている場合、自己署名証明書で十分です。
プロパティのベースタイプに関する InfluxDB の既知の制限
値ストリームに記録された後でプロパティのベースタイプを変更することはできません。詳細については、「Type conflict on insert int value in float field#3460」を参照してください。
プロパティのパージ
PurgeAllPropertyHistoryPurgeSelectedPropertyHistory、および PurgePropertyHistory サービスを使用して、InfluxDB からプロパティをパージできます。startDate および endDate パラメータを使用して、範囲を指定します。
* 
Influx2PersistenceProviderPackage プロバイダを使用している場合、パージはサポートされていません。PurgePropertyHistoryPurgeAllPropertyHistoryPurgeSelectedPropertyHistory サービスは無効です。
これは役に立ちましたか?