産業用IoTデータのバックエンドとして時系列データベースを使用する7つの利点

インダストリアルインターネットオブシングスのデータ特性と問題点

インダストリアルインターネットオブシングスのデータ収集は、高周波、複数のデバイス、および高次元の特性を備えています。データの量は非常に多く、システムのスループットに対する高い要件があります。同時に、産業用インターネットオブシングスでは、システムがデータをリアルタイムで処理し、システムに早期の警告、監視、さらにはカウンターコントロールを提供できるようにする必要があることがよくあります。また、多くのシステムでは、オペレーターが機器の動作をリアルタイムで監視するためのグラフィカル端末を提供する必要があり、システム全体に大きな圧力がかかります。収集された大量の履歴データの場合、通常、オフラインのモデリングと分析が必要です。したがって、Industrial Internet of Thingsのデータプラットフォームには非常に厳しい要件があります。非常に高いスループットと低い遅延が必要です。ストリーミングデータをリアルタイムで処理でき、大量の履歴データを処理できる必要があります。両方とも単純なポイントクエリの要件を満たすだけでなく、バ​​ッチデータの複雑な分析の要件を満たすため。

SQL Server、Oracle、MySQLなどの従来のトランザクションデータベースは、高スループットのデータ書き込みや大規模なデータ分析に対応できません。データ量が少なく、データ書き込みの要件を満たすことができても、リアルタイムコンピューティングの要求に同時に対応することはできません。

Hadoopエコシステムは、メッセージングエンジン、リアルタイムデータ書き込み、ストリーミングデータ計算、オフラインデータウェアハウス、オフラインデータ計算などの複数のコンポーネントを提供します。これらのビッグデータシステムの組み合わせにより、産業用インターネットオブシングスのデータプラットフォームの問題を解決できます。ただし、このようなスキームは大きすぎて肥大化しており、実装、運用、保守のコストが高くなります。

データはIndustrialInternet ofThingsの血です。ただし、国内のMESシステムのほとんど、およびいわゆるスマートファクトリーは、蓄積されたデータのさらなる調査と使用は言うまでもなく、製造プロセス中に生成された大量のプロセスデータを3か月以内に保存します。データのリアルタイム収集、計算、およびカウンター制御は、Industrial Internet ofThingsの背後にあるデータプラットフォームのリアルタイムコンピューティング機能に高い要件を課します。従来のリレーショナルデータベース、ほとんどのオープンソースNoSQL、および新世代のNewSQLは、産業用Internet ofThingsデータプラットフォームのこれら2つの厳しい要件からはほど遠いものです。

そのため、時系列データベースが誕生しました。DolphinDBを例にとると、時系列データベースを産業用IoTデータバックエンドとして使用する場合、7つの自然な利点があります。

1.ワンストップデータソリューション

インダストリアルインターネットオブシングスは、マシンによって生成されたプロセスデータを収集するだけでなく、リアルタイムの計算と早期警告を実行し、結果をオペレーターに表示するか、マシンに直接フィードバックします。同時に、これらの元のプロセスデータは、オンラインまたはオフラインのクエリのためにデータベースに保存する必要があります。大量の履歴データを蓄積した後、より複雑なビッグデータマイニングを実行できます。そして、これらすべてをDolphinDBの1つのシステムで実行できます。次の図は、DolphinDBデータベースのデータ処理フローを示しています。

a459f1c3e82dfe856e70cf9a7194d66b.png

システムインテグレーターや企業にとって、1つのシステムでの開発と保守は、開発コスト、保守コスト、ハードウェア購入コストのいずれであっても、複数のシステムでの統合、開発、保守よりもはるかに低くなります。

2.軽量のクロスプラットフォーム展開

産業用IoTプラットフォームは通常、非常に複雑です。安価な産業用コンピューター(薄型PCまたは組み込みシステム)、およびサーバーまたはサーバークラスターがあります。エッジコンピューティング、ローカルプラットフォームの展開、クラウドプラットフォームの展開があります。関連するオペレーティングシステムは、LinuxとWindowsの両方です。市場には多くのオープンソースまたは商用の時系列データベース、および関連するビッグデータエコロジーがあり、多くの複雑なコンポーネント、膨大な量、およびソフトウェアとハ​​ードウェアに対する高い要件があります。クロスプラットフォーム展開にシステムを使用することは非常に困難です。

DolphinDBは、GNU C ++で開発された非常に軽量なシステムであり、システムサイズはわずか20メガバイトを超え、依存関係はなく、上記のどのプラットフォームにも展開できます。これにより、システムインテグレータの開発および保守コストが大幅に節約されます。

3.安全で制御可能

産業用Internetof Thingsプラットフォームのデータとシステムのセキュリティと制御は、企業にとって、さらには国にとっても非常に重要です。DolphinDBは、完全にゼロから開発された分散時系列データベースです。基盤となる分散ファイルシステムとストレージエンジンから、データベースとコアクラスライブラリ、分散コンピューティングエンジン、スクリプト言語、さまざまなプログラミング言語の開発インターフェイス、さらには周辺開発統合環境GUIとクラスター管理ツールまで。 100%独立した研究開発であり、外部に依存することなく、安全で制御可能です。

DolphinDBは、x86およびarm命令システムのサポートに加えて、Loongsonなどの国内CPUをサポートするようにMIPS命令システムを適応させています。このようにして、ソフトウェアとハ​​ードウェアを産業用IoTプラットフォームで同時に独立して制御できます。

4.大規模な履歴データの保存と処理

産業用インターネットオブシングスのデータ収集は、高次元、高頻度、多数のデバイス、および特に大量のデータを備えており、すべてが高時間精度のデータです。現在、製造業で使用されているMESシステムのほとんどは、プロセスデータを非常に短時間でしか保存できず、すべての高精度データを保持できないリレーショナルデータベースを使用しています。データベースシステムの制限により、企業は履歴データの価値を享受できません。

DolphinDBデータベースは、列ストレージを使用し、データ圧縮(圧縮率は約20%)をサポートし、最大ナノ秒の精度で時系列データ処理をサポートし、単一のテーブルで数百万のパーティションをサポートします。DolphinDBクラスターのストレージ容量とコンピューティング容量は、ノードを追加することで水平方向に拡張できます。DolphinDBクラスターは、マルチコピー分散ストレージと分散トランザクションをサポートします。1つのコピーのデータが間違っているか失われた場合、別のコピーをリカバリできるようにして、データの高い可用性と強力な一貫性を確保します。企業は、長年にわたって蓄積された履歴データを使用して、機器の予測保守、技術プロセスの改善、製品品質の改善、製造計画の最適化など、詳細なデータマイニングおよびデータ分析を実行できます。

簡単に言えば、同じハードウェアデバイス上で、リレーショナルデータベース(Oracle、SQL Server)は数億の時系列データをサポートでき、DolphinDBは数兆の時系列データをサポートできます。

5.リアルタイムストリームコンピューティング

Internet of Thingsによって収集されたリアルタイムデータは、DolphinDBのストリームコンピューティングエンジンに渡して、クリーニング、リアルタイム統計、インスタントストレージ、およびリアルタイム表示での視覚化を行うことができます。DolphinDBには当然フローテーブルの二重性があります。メッセージの公開は、フローデータテーブルにデータを追加するのと同じです。フローデータのSQLインジェクションとクエリ分析を直接使用できるため、非常に便利です。DolphinDBのストリームコンピューティングエンジンは、publish-subscribe-consumptionモデルに基づいています。ストリーミングデータテーブルを介してデータを公開し、他のデータノードまたはサードパーティアプリケーションは、DolphinDBスクリプトまたはAPIを介して消費ストリーミングデータをサブスクライブし、計算結果をマシンまたはオペレーターにリアルタイムでフィードバックできます。ストリーミングコンピューティングのチュートリアルについては、DolphinDBストリーミングデータチュートリアルおよびDolphinDBストリーミングデータ集約エンジンチュートリアルを参照してください

6.豊富な計算機能

DolphinDBのコンピューティング機能は、市場の時系列データベースの中で最も豊富であると言えます。DolphinDBには、データベース内で複雑な計算とインタラクティブな分析を直接実行できる組み込みのスクリプト言語があり、データの移行を回避します。ほとんどのコンピューティング機能と機能は最適化されており、パフォーマンスは他のデータベースの同じ機能をはるかに上回っています。以下に、DolphinDBで一般的に使用される計算関数を示します。

6.1範囲クエリ

DolphinDBは、データペアを使用して範囲を表現します。たとえば、テーブルの特定の時間範囲のデータをクエリするには、次のようにします。

select * from table where date between beginDate:endDate

6.2多次元クエリ

DolphinDBは、さまざまな列を集約して、高次元または低次元の範囲のクエリ機能を実現できます。たとえば、field1列とfield2列をフィルタリング、グループ化、および集約するには、次のようにします。

(1..100)のfield1およびfield2 = 'A'がfield1、field2でグループ化されているテーブルからsum(prc)を選択します。

6.3サンプリングクエリ

DolphinDBは、パーティションに基づくサンプリングクエリメカニズムを提供します。パーティションは、指定された比率または数に従ってサンプリングできます。必要なのは、whereの後でのみsample関数を呼び出す必要があります。たとえば、デバイスIDによる範囲分割を実行し、パーティション内のデータの10%と10個のパーティションを抽出します

// 10%パーティションをサンプリングするselect * from trades where sample(equipmentId、0.1)
// 10パーティションをサンプリングするselect * from trades where sample(equipmentId、10)

6.4精密クエリ

DolphinDBは、ナノ秒の時間精度を持ち、大規模な高精度の履歴データストレージをサポートし、高精度の大きなデータセットの低精度の小さなデータセットストレージへの集約と変換もサポートします。同時に、DolphinDBは複数の時間精度のグループサンプリングをサポートしています。たとえば、特定の2つの日付の間のデータを選択し、分ごとにグループ化します。

select avg(tint) from t1 where date(timestamp) between 2018.01.01:2018.10.11 group by minute(timestamp)

DolphinDB也支持自定义精度分组。例如,每5秒一个分组:

select avg(tint) from t1 where date(timestamp) between 2018.01.01:2018.10.11 group by bar(timestamp,5000)

6.5 插值查询

在工业领域经常会发生采集的数据缺失。DolphinDB在查询计算时提供了4种插值方式补全数据,向前/向后取非空值填充(bfill/ffill),线性填充(lfill)和指定值填充(nullFill)。用户也可以通过脚本或C++插件扩充新的插值函数。

6.6 聚合查询

DolphinDB的函数库非常丰富,支持以下聚合函数:atImax, atImin, avg, beta, contextCount, contextSum, contextSum2, count, corr, covar, derivative, difference, first, imax, last, lastNot, max, maxPositiveStreak, mean, med, min, mode, percentile, rank, stat, std,sum, sum2,var, wavg, wsum, zscore。

6.7 面板数据分组查询

处理面板数据时,有时候希望为每个分组的每一行数据生成一个值。DolphinDB提供了context by和滑动统计函数。

DolphinDB支持以下滑动统计函数:deltas, mavg, mbeta, mcorr, mcount, mcovar, mimax, mimin, mmax, mmed, mmin, mpercentile, mrank, mstd, msum, mvar, ratios。

例如,计算每台设备过去10个采集点的移动平均温度:

select equipmentId, mavg(temperature,10) as mavg_temperature context by equipmentId

DolphinDB对部分滑动统计函数进行了优化,每次计算时,充分利用上一个窗口的计算结果,最大程度地降低了重复计算。

6.8 对比查询

DolphinDB的pivot by可用于数据透视,特别是同一时间不同列的指标对比。例如,想要对比同一时间段不同设备的平均温度,可以使用以下代码:

equipmentId = `A`B`B`B`C`C`A`A`A$symbol; 				temperature= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29;							timestamp = [09:34:07,09:35:42,09:36:51,09:36:59,09:35:47,09:36:26,09:34:16,09:35:26,09:36:12];	t = table(timestamp, equipmentId, temperature)select avg(temperature) from t pivot by timestamp.minute() as minute, equipmentId

返回的结果为:

minute	A	B	C09:34m	50.18		09:35m	50.32	29.46	174.9709:36m	51.29	29.77	175.23

6.9 关联查询

DolphinDB支持的关联查询种类非常多,包括等值连接、完全连接、交叉连接、左连接、asof join和窗口连接。其中asof join和窗口连接(window join)是专门为时间序列数据设计的连接方式,能够满足更多场景的需求。

当两个表中的时间字段不完全对应时,可以使用asof join,如果左表中的时间为t,它会自动选择右表中不超过t的最近时间。窗口连接是asof join的扩展,如果窗口为w1:w2,它会在右表中选择(t+w1)到(t+w2)之间的数据,并对这些数据使用聚合函数。例如:

select equipmentId,t1.temperature,t2.humidity from aj(t1,t2,`timestamp)select * from wj(t1,t2,-5:0,<avg(temperature)>,`equipmentId`timestamp)

6.10 机器学习和分布式计算

DolphinDB提供了map-reduce,iterative map-reduce等分布式计算框架。用户只需要指定数据源、map函数、reduce函数和final函数,无需编译、部署,可以直接在线使用。为方便用户,DolphinDB内置了常用的拟合和分类算法,可在本地数据源和分布式数据源上使用,这些算法包括线性回归、广义线性模型(GLM)、随机森林(Random Forest)、逻辑回归等。后续将会推出更多机器学习算法。

 

除了已有的功能外,DolphinDB提供了几种途径扩展系统功能。DolphinDB内置强大的类SQL和Python的脚本语言。用户可以用脚本语言自定义函数来扩展系统功能。DolphinDB支持使用C++开发插件来扩展系统功能。除此以外,DolphinDB提供了C++、C#、Java、Python、R、JS、Excel等语言和系统的API,方便与其它系统集成。

7. 综合使用成本低

産業企業の利益率は高くありません。データプラットフォームのコスト(ソフトウェアとハ​​ードウェアの購入コスト、システム統合コスト、メンテナンスコスト、アプリケーション開発コストなど)が高すぎると、産業用インターネットオブシングスの開発が大幅に制限されます。ワンストップソリューション、クロスプラットフォーム展開機能、強力なリアルタイムデータと大規模な履歴データ処理機能、豊富なコンピューティング機能、およびDolphinDBを例に挙げた時系列データベースの拡張機能により、システムの全体的な所有コストが大幅に削減されます。


おすすめ

転載: blog.51cto.com/15022783/2569341