ECL(データ中心のプログラミング言語)


ECL_(data-centric_programming_language)

ECL(Enterprise Control Language)は、2000年に設計された宣言型のデータ中心のプログラミング言語であり、プログラマーのチームが、下位レベルの必須の決定の多くに関与することなく、高性能コンピューティングクラスター全体でビッグデータを処理できるようにします。 ECL パラダイム
宣言型、構造化済み、データ中心
デベロッパー
HPCCSystems®、LexisNexisリスクソリューション
初登場 2000 規律の入力
静的、強力、安全OS inux
Webサイト
http://hpccsystems.com/
に影響を受けた
Prolog、Pascal、SQL、Snobol4、C ++、Clarion

コンテンツ
1 歴史
2 言語構成
2.1 こんにちは世界 2.2 ECLプリミティブ 2.3 ECLカプセル化 2.4 ECLでの並列処理のサポート 2.5 Map-Reduceとの比較
3 参考文献
4 外部リンク

歴史
ECLは、2000年にDavidBaylissによってSeisintInc内の社内生産性ツールとして設計および開発され、Seisintがデータビジネスで市場シェアを獲得できるようにする「秘密兵器」と見なされていました。Equifaxには、今後30日間で誰が破産するかを予測するためのSQLベースのプロセスがありましたが、データの実行には26日かかりました。最初のECL実装は、6分で同じ問題を解決しました。この技術は、 LexisNexisによるSeisintの買収の背後にある原動力として引用され、LexisNexisがChoicePointInc。を買収したときの相乗効果の主要な源として再び引用されました。

言語構成
ECLは、少なくとも最も純粋な形式では、宣言型のデータ中心の言語です。厳密な意味でのプログラムは存在しません。むしろ、ECLアプリケーションは、いくつかのコアデータセット(またはデータ値)を指定し、次にそれらの値に対して実行される操作を指定します。

こんにちは世界
ECLは、問題と賢明なデフォルトに対する簡潔な解決策を持つことです。「HelloWorld」プログラムは特徴的に短いです:
‘こんにちは世界’
おそらく、より風味豊かな例では、文字列のリストを取得し、それらを順番に並べ替えて、代わりに結果として返します。
//最初に文字列のリストを含む1つの列でデータセットを宣言します//データセットはバイナリ、CSV、XML、または外部で定義された構造にすることもできますD := DATASET ([{ ‘ECL’ }、{ ‘Declarative’ }、{ ‘Data’ }、{ ‘Centric’ }、{ ‘Programming’ }、{ ‘Language’ }]、{ STRING Value ;}); SD := SORT (D 、値); 出力(SD )
aを含むステートメント:=は、ECLで属性定義として定義されています。これらはアクションを示すものではありません。むしろ用語の定義。したがって、論理的には、ECLプログラムは「下から上へ」と読むことができます。
OUTPUT(SD)
SDとは何ですか?
SD := SORT (D 、値);
SDは、「値」でソートされたDです。
Dとは何ですか?
D := DATASET ([{ ‘ECL’ }、{ ‘Declarative’ }、{ ‘Data’ }、{ ‘Centric’ }、{ ‘Programming’ }、{ ‘Language’ }]、{ STRING Value ;});
Dは、「値」というラベルの付いた1つの列を持ち、次のデータリストを含むデータセットです。

ECLプリミティブ
データセットに作用するECLプリミティブには、SORT、ROLLUP、DEDUP、ITERATE、PROJECT、JOIN、NORMALIZE、DENORMALIZE、PARSE、CHOSEN、ENTH、TOPN、DISTRIBUTEが含まれます。

ECLカプセル化
ECLは簡潔であり、LexisNexisは1行のECLは120行のC ++とほぼ同等であると主張していますが、データのカプセル化やコードの再利用などの大規模なプログラミングを引き続き大幅にサポートしています。使用可能な構成には、MODULE、FUNCTION、FUNCTIONMACRO、INTERFACE、MACRO、EXPORT、SHAREDが含まれます。

ECLでの並列処理のサポート
HPCC実装では、デフォルトで、ほとんどのECLコンストラクトは使用されているハードウェア全体で並行して実行されます。プリミティブの多くには、操作が各ノードでローカルに発生することを指定するLOCALオプションも

Map-Reduceとの比較
Hadoop Map-Reduceパラダイムは、次のようにECLプリミティブに相関する3つのフェーズで構成されています。
Hadoopの名前/用語
ECLと同等
コメントコメント
MAPper内のMAP
プロジェクト/トランスフォーム
レコードを取得し、別の形式に変換します。Hadoopの場合、変換はキーと値のペアになります
シャッフル(フェーズ1)
DISTRIBUTE(、HASH(KeyValue))
マッパーからのレコードは、KEY値に応じて配布されます
シャッフル(フェーズ2)
SORT(、LOCAL)
特定のレデューサーに到着したレコードは、KEY順にソートされます
減らす
ROLLUP(、Key、LOCAL)
特定のKEY値のレコードが結合されるようになりました

参考文献
^ ECLのガイド、レクシスネクシス。
^ 「大規模なグラフ分析のためのデータフローシステムの使用の評価」、A。Yoo、およびI.Kaplanによる。グリッドとスーパーコンピューターでの多タスクコンピューティングに関する第2回ワークショップの議事録、MTAGS、2009年 ^ 「Seisintの買収」。2011年6月21日にオリジナルからアーカイブされました。

外部リンク
ロゼッタコードECLカテゴリ
ECL言語リファレンス
ReedElsevierがChoicePointを36億ドルで買収
ReedElsevierのLexisNexisがSeisintを7億7500万ドルで買収
リードエルセビア