永続化プロバイダとしての 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 つのメタノードが必要です。
適切な Influx データベースオプションの選択
PTC のオンプレミス顧客に対して現在使用可能な 2 つの InfluxDB オプションの概要を次に示します。Influx 製品を選択する際には、データベースソフトウェアオプションと基礎となるサポートオプションを慎重に検討する必要があります。正しいデータベースオプションを選択する際の質問は、Influx サポート:
https://www.influxdata.com/contact-sales にお問い合わせください。PTC のお客様は、自身を PTC ThingWorx ユーザーとして識別する必要があります。
• InfluxDB オープンソース OSS (単一ノード)
◦ 単一のノードのみであり、スケーラブルではありません。
◦ 無料
◦ 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」を参照してください。
プロパティのパージ
PurgeAllPropertyHistory、PurgeSelectedPropertyHistory、および PurgePropertyHistory サービスを使用して、InfluxDB からプロパティをパージできます。startDate および endDate パラメータを使用して、範囲を指定します。
| Influx2PersistenceProviderPackage プロバイダを使用している場合、パージはサポートされていません。PurgePropertyHistory、PurgeAllPropertyHistory、PurgeSelectedPropertyHistory サービスは無効です。 |