eKuiper 1.5.0リリース:シームレスな産業用データ収集とエッジストリーム処理の実現

eKuiperプロジェクトは、エッジでのリアルタイムコンピューティングのギャップを埋め、産業用モノのインターネットやモノのインターネットの分野でますます広く使用されています。GitHub、WeChatグループ、フォーラム、その他のチャネルから収集された多数のユーザーフィードバックによると、eKuiperの使いやすさと信頼性を継続的に改善し、最近正式にバージョン1.5.0をリリースしました。

このアップデートの主なハイライトは次のとおりです。

  • SQLの改善:データフローと分析ルールを定義するためのeKuiperのコア関数SQLは、変更監視関数やobject_construct関数など、より多くの組み込み関数を提供し、表現力を向上させます。
  • エコロジカル接続:Neuronエコシステム内のデータを簡単に処理できる組み込みのNeuron接続サポートを提供します。同時に、一般的なSQLプラグインをさまざまな従来のSQLデータベースに接続して、バッチのストリーム処理を実現します。ある程度のデータ。
  • 操作と保守およびドキュメントの改善:ルールランタイムの安定性が改善され、オンデマンドコンパイルがサポートされます。ドキュメントのナビゲーション構造が再構築され、読書体験とクエリ効果が向上します。

コミュニティWebサイトのURL:https ://ekuiper.org/zh

GitHubリポジトリ:https ://github.com/lf-edge/ekuiper

Dockerイメージアドレス:https ://hub.docker.com/r/lfedge/ekuiper

生態学的なつながり

さまざまなソース/シンクは、eKuiperがデータ処理エコシステムに接続するための方法です。新しいバージョンでは、eKuiperはNeuronとSQLの接続タイプを追加しました。同時に、TDEngineシンクのスーパーテーブルのサポートを追加するなど、元の接続も改善しました。

ニューロンの統合

Neuron は、EMQが開始し、オープンソースの産業用モノのインターネット(IIoT)エッジの産業用プロトコルゲートウェイソフトウェアであり、インダストリー4.0のパワーを活用する最新のビッグデータテクノロジー向けです。複数の産業用プロトコルへのワンストップアクセスをサポートし、それらを標準のMQTTプロトコルに変換して産業用IoTプラットフォームにアクセスします。NeuronとeKuiperを統合して使用すると、IIoTエッジデータの収集と計算が容易になります。

以前のバージョンでは、MQTTはNeuronとeKuiper間のトランジットとして必要でした。2つが連携する場合、追加のMQTTブローカーをデプロイする必要があります。同時に、ユーザーは、読み取りおよび読み取り時のデコードとエンコードを含め、データ形式を自分で処理する必要があります。Neruonバージョン2.0とeKuiperバージョン1.5.0はシームレスに統合されます。ユーザーはeKuiperでNeruonに収集されたデータに構成なしでアクセスして計算を実行でき、eKuiperからNeuronを簡単に制御することもできます。2つの製品を統合することで、エッジコンピューティングソリューションの導入コストを大幅に削減し、使用のしきい値を簡素化できます。NNGプロトコルとプロセス間通信を使用すると、ネットワーク通信の消費量を大幅に削減し、パフォーマンスを向上させることもできます。

ユーザーがNeuronにアクセスするときは、eKuiperでNeuronタイプのストリームを作成するだけで済みます。

CREATE STREAM demo() WITH (TYPE="neuron",SHARED="TRUE")

Neuronをカウンター制御する場合は、ルールのアクションにNeuronアクションを追加し、書き込むグループ名、ノード名、タグ名を指定する必要があります(これらはすべて動的属性です)。eKuiperは、Neuronの入力フォーマットに合うようにフォーマットを自動的に変換します。

"neuron": {
  "nodeName": "{{.node}}",
  "groupName": "grp",
  "tags": [
    "tag0"
  ]
}

詳細については、NeuronSourceおよびNeuronSinkのドキュメントを参照ください  

SQLのプルアンドライト

SQLプルソースは、バッチデータをストリーミングデータに変換する方法を提供します。これにより、eKuiperはストリームとバッチの予備的な統合処理をサポートできます。

古いシステムをアップグレードして変換する過程で、元のシステムとの互換性を考慮する必要があることがよくあります。多くのレガシーシステムは、従来のリレーショナルデータベースを使用して収集されたデータを保存します。新しいシステムでは、データベースにデータが保存されている場合もあります。これは、ストリーミングアクセスデータを提供するには不便ですが、リアルタイムで計算する必要があります。多種多様なSQL対応データベースまたはその他の外部システムへのアクセスを必要とするシナリオは他にもたくさんあります。

eKuiperは、SQLをサポートするデータソースから定期的にデータをプルできる統合/マルチデータベースユニバーサルSQLプルソースを提供し、統合ストリーミングコンピューティング処理用のストリーミングデータを形成するための基本的な重複排除機能を提供します。コンパイル済みバージョンのプラグインは、MySQLやPostgresSQLなどの一般的なデータベースへのアクセスをサポートします。同時に、プラグインには、ほとんどすべての一般的なデータベースの接続機能が備わっています。ユーザーは、データベースのパラメーターを指定するだけで済みます。コンパイル時にサポートする必要があります。そうすれば、コンパイルして自分でサポートできます。カスタムデータベースタイプのプラグイン。

データプルに加えて、データ書き込み用の汎用SQLプラグインも提供しています。eKuiper自体が、InfluxDBやTDengineなどの時系列データベース用の特別なプラグインを提供していることは注目に値します。一般的なSQLプラグインもこれらのデータベースへの接続をサポートできますが、挿入機能を提供し、特定のデータベースの非標準の概念をサポートしません。たとえば、TDengineのスーパーテーブルは、TDengineプラグインを使用してのみ記述できます。の。

詳細およびサポートされているデータベースのリストについては、SQLソースプラグインおよびSQLシンクプラグインのドキュメントを参照してください。  

eKuiperSQLの改善

組み込み関数は、SQLがさまざまな計算を完了するための主要な編成形式であり、SQL表現力の重要なソースでもあります。新しいバージョンでのSQLの改善は、主に新しい関数を追加することによって実現されます。

変更監視機能

新しいバージョンでは、CHANGED_COLS、CHANGED_COL、およびHAD_CHANGEDの3つの一般的な変更検出関連関数が追加されました。

CHANGED_COLS関数の役割は、指定された列が変更されたかどうかを検出することです。変更された場合は、変更された列の値を返します。変更されていない場合は、戻りません。変更検出シナリオでは、ユーザーは多くの場合、複数の列/式を監視する必要があり、その数は固定されていません。したがって、関数は不確定な数の引数を受け取る可能性があり、その戻り値は複数の列になる可能性があります。単一の結果列を返す通常のスカラー関数(複数列の結果がマップに含まれる)と比較して、これは複数の列を返す最初の関数です。複数列関数を実現するために、関数の実装をリファクタリングしました。サポート。関数のパラメーターの数は可変であり、列のパラメーターは他の式にすることもできます。列パラメーターは*記号もサポートします。これは、SELECT CHANGED * COLS( "c *"、true、*)FROMデモなどのすべての列を検出することを意味します。

複数列関数はSelect句でのみ使用でき、それらの選択された値はWHEREまたは他の句では使用できません。変更された値に従ってフィルタリングする必要がある場合は、CHANGED_COL関数を使用して変更された値をフィルター条件として取得するか、HAD_CHANGED関数を使用して複数の列の変更ステータスをフィルター条件として取得できます。詳細と使用例については、ドキュメントを参照してください。

選択した列をグループ化する

通常のSQLステートメントでselectによって選択されたすべての列は、シンクプラグインおよびダウンストリームアプリケーションによる処理のためのオブジェクトを形成します。一部のシナリオでは、ダウンストリームアプリケーションは、選択した列をグループ化してから、各グループ化を柔軟に処理する必要があります。たとえば、選択した結果は複数のキー/値セットに分割されます。キーはファイル名であるため、結果を複数のファイルに動的に書き込むことができます。

新しい組み込みメソッドobject_constructを使用すると、列のグループ化と名前付けが簡単になります。その構文はobject_construct(key1、col、...)であり、複数のパラメーターをサポートし、パラメーターから構築されたオブジェクトを返します。パラメータは一連のキーと値のペアであるため、偶数である必要があります。キーは文字列型である必要があり、値は任意の型にすることができます。たとえば、ユーザーは列1、2、3をファイル1に書き込み、列4、5をファイル2に書き込む必要があります。次に、SQLルールを使用して列をグループ化し、グループ名に値を割り当てることができます。

SELECT object_construct("key1", col1, "key2", col2, "key3", col3) AS file1, object_construct("key4", col4, "key5", col5) AS file2 FROM demoStream

その出力は、次のJSONオブジェクトの形式です。

{
"file1":{"key1":"aValue","key2":23,"key3":2.5},
"file2":{"key4":"bValue","key5":90}
}

操作が簡単

運用と保守に関する新しいバージョンの主な改善点には、ランタイムの安定性の改善、およびユーザーがより小さな計算能力のデバイスに適応する必要性に応じてソフトウェア機能を調整できるようにする便利なコンパイルパラメーターの提供が含まれます。

ルールの分離

新しいバージョンでは、ルール操作とライフサイクルを最適化およびリファクタリングして、ルール操作の安定性を高め、ルール間の分離を改善しました。主に次の側面で:

ルールエラーの分離:共有ソースを使用するルールの場合でも、1つのルールの実行時エラーが他の関連ルールに影響を与えることはありません。同時に、新しいバージョンのルールのシステムレベルでのパニックエラーもルールレベルで処理され、eKuiperプロセス全体がクラッシュすることはなくなります。

ルールの負荷の分離:共有ソースまたはメモリソースを使用する兄弟ルール間では、メッセージの順序を維持しながら、メッセージの流入スループットは他のルールの影響を受けません。

オンデマンドでコンパイル

エッジストリーム処理エンジンとして、より優れたコンピューティング能力を備えたエッジコンピュータルームやゲートウェイ、コストや特別なビジネス要件のために安価またはカスタマイズされたものなど、展開する必要のある多くの異種ターゲットシステムがあります。ソフトウェアおよびハードウェアソリューション。機能が徐々に強化されると、フル機能のeKuiperは、メモリが50MB未満の端末など、リソースに非常に制約のあるデバイスでわずかに肥大化する可能性があります。新しいバージョンでは、go言語のコンパイルタグを介してeKuiperのコア関数とその他の関数を取り除きます。ユーザーが使用する場合、コンパイルパラメータを設定することにより、必要に応じていくつかの関数をコンパイルして、実行中のファイルを小さくすることができます。たとえば、コア関数のみをコンパイルするには、make build_coreを使用して、コア関数のみを含む実行ファイルを取得します。詳細については、「オンデマンドでのコンパイル」を参照してください。 

ドキュメントは使いやすい

4月に立ち上げられた公式Webサイト(https://ekuiper.org )では、eKuiperドキュメントがディレクトリ構造でリファクタリングされ、ドキュメントWebサイトにコンパイルされています。新しいドキュメントWebサイトには、概念の紹介やチュートリアルなどのモジュールが追加され、ナビゲーションツリーが調整されて、ユーザーが有用な情報をより簡単に見つけられるようになっています。

アップグレード手順

eKuiperのバージョンの反復は、古いバージョンと新しいバージョンの互換性を維持しようとします。新しいバージョンも例外ではありません。バージョン1.5.0にアップグレードした後、ほとんどの機能は変更なしでスムーズにアップグレードできますが、ユーザーが手動で変更する必要がある2つの変更があります。

  1. Mqttソースのサーバー構成項目がサーバーからサーバーに変更され、構成値が配列から文字列に変更されます。ユーザーの構成ファイルetc/mqtt_source.yamlを変更する必要があります。Dockerの起動やdockercomposeファイルの起動などの環境変数を使用する場合は、環境変数を変更する必要があります:MQTT_SOURCE DEFAULT SERVERS => MQTT_SOURCEDEFAULTSERVERDockerによって起動されたコマンドは、docker run -p 9081:90​​81 -d --name ekuiper MQTT_SOURCE DEFAULT SERVER = "$ MQTT_BROKER_ADDRESS" lfedge / ekuiper:$tagに変更されます。
  2. Tdengineシンクを使用する場合、その属性名ipはhostに変更され、属性値はドメイン名である必要があります。

おすすめ

転載: www.oschina.net/news/197906/ekuiper-1-5-0-released