JP6248137B2 - 商用インタープリタを用いた、スクリプトに基づくデータ処理システム - Google Patents

商用インタープリタを用いた、スクリプトに基づくデータ処理システム Download PDF

Info

Publication number
JP6248137B2
JP6248137B2 JP2016089271A JP2016089271A JP6248137B2 JP 6248137 B2 JP6248137 B2 JP 6248137B2 JP 2016089271 A JP2016089271 A JP 2016089271A JP 2016089271 A JP2016089271 A JP 2016089271A JP 6248137 B2 JP6248137 B2 JP 6248137B2
Authority
JP
Japan
Prior art keywords
script
data
syntax
function
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016089271A
Other languages
English (en)
Other versions
JP2017120611A (ja
Inventor
ヨングン ベ
ヨングン ベ
ミンク パク
ミンク パク
スンフン ジュン
スンフン ジュン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BI MATRIX CO Ltd
Original Assignee
BI MATRIX CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BI MATRIX CO Ltd filed Critical BI MATRIX CO Ltd
Publication of JP2017120611A publication Critical patent/JP2017120611A/ja
Application granted granted Critical
Publication of JP6248137B2 publication Critical patent/JP6248137B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、多数の種類のデータベースに保存されたデータを順次に処理するためのスクリプトを定義し、定義されたスクリプトにより作成されたデータ処理プログラムを解析してデータ処理を順次に行う、スクリプトに基づくデータ処理システムに関する。
本発明は、多数の種類のデータベースに保存されたデータを処理するためのアプリケーションプログラムインターフェイス(API)関数を商用インタープリタの構文に基づいて生成し、前記アプリケーションプログラムインターフェイス(API)関数を呼び出す指令文により構成されるスクリプトコードを前記商用インタープリタの構文の中間コードに変換して実行する、スクリプトに基づくデータ処理システムに関する。
一般に、大容量データを処理するために、データベースに当該データを保存し、データベース管理システム(DBMS)を用いてデータを問い合わせたり更新したりする。このとき、データベースの処理のための言語である構造化問い合わせ言語(SQL:StructuredQuery Language)を用いて、自分が希望するデータを一つのデータセットとして問い合わせたり更新したりする。
構造化問い合わせ言語(SQL)は、データベースを構築して活用するために用いる標準化された言語であり、関係型データモデルで表わされるデータベースを処理する。すなわち、データベースを多数のテーブルにより構成し、各テーブルは、多数のフィールド(又はカラム)により構成される。一つのデータは、各フィールドに相当するフィールド値を有する。SQLは、上述したテーブル内のデータ又はデータのフィールド値を問い合わせるために、SELECTFROM WHERE構造により構成された構造的な言語である。加えて、データを集計又は整列するための関数や機能、又はテーブルを結合するためのジョイン関数などの基本的なデータ処理機能を有している。
このため、データベースに保存されたデータをフィルタリングしたり、データセット又はテーブルを結合したり、集計したりする場合には、簡単にデータベース管理システム(DBMS)を用いて効率よく処理することができた。
しかしながら、企業の膨大なデータを処理するビジネスインテリジェンス(BI:Business Intelligence)分野においては、構造化問い合わせ言語(S
QL)に基づくデータベース管理システム(DBMS)だけでは十分ではないのが現状である。すなわち、ビジネスインテリジェンス(BI)とは、企業のビッグデータを統計分析などの定形又は非定形的な方法を用いて様々に分析したり、分析された情報を理解し易いように一目瞭然に報告書の形式に加工したりして、ビジネスをより合理的に行うように支援する一連のツールのことをいう。企業がビジネスを行いながら蓄積するデータは数えられないほど多い。このようなデータは、ビジネス現場の生々しい内容を伝えるものであり、正常に分析される限り、そこからビジネスに必要な情報を取り出すことができる。しかしながら、現場で蓄積された相当量のデータから有意義な分析結果を導き出すことは簡単な作業ではない。
このような分析のために多くのツールが個別的に開発されてきた。例えば、データ抽出及び変形(ETT)ツール、多次元データ分析のためのオンライン分析処理(OLAP)ツール、レポートの作成のためのレポーティングツール、データ間の隠れた連関性を見出すデータマイニングツールなどが代表的である。これらの一連のツールを一つのソフトウェア製品群として形成したものが一種のビジネスインテリジェンス(BI)である。
大韓民国公開特許第10−1999−0038698号(1999年06月05日付け公開) 大韓民国公開特許第10−2008−0031202号(2008年04月08日付け公開) 大韓民国公開特許第10−2004−0053254号(2004年06月23日付け公開) 大韓民国公開特許第10−2012−0052301号(2012年05月23日付け公開) 大韓民国公開特許第10−2014−0027128号(2014年03月06日付け公開)
ビジネスインテリジェンス(BI)データ処理業務を行うと、データベース管理システム(DBMS)を用いたり、プログラムにより業務ロジックを実現したりする方法に加えて使用可能なデータ処理ツールがないのが現状である。
また、従来のデータベース管理システム(DBMS)は、データ処理速度がビジネスインテリジェンス(BI)データ業務に最適化されていないが故に、現場において体感する処理速度が高くないという問題がある。すなわち、従来のデータベース管理システム(DBMS)は、構造的な言語である構造化問い合わせ言語(SQL)に基づく汎用的なデータ処理システムであるため、ビッグデータのように大容量のデータを処理するのに長時間及びコストがかかる。特に、ビジネスインテリジェンス(BI)の現場においては、頻繁に用いるデータはビッグデータのうちの一部であり、重複して用いるデータも多い。しかしながら、従来のデータベース管理システム(DBMS)は汎用的であるため、重複して用いるデータも最初から処理して長時間がかかる。
また、従来のデータベース管理システム(DBMS)の速度を改善するために高速のデータベース管理システム(DBMS)技術や商用化された製品が開発されている。しかしながら、高速の内蔵データベース管理システム(DBMS)は、満足のいく応答速度や処理容量を示すが、かなり高価であるため、通常の会社は入手し難い。すなわち、高速の内蔵データベース管理システム(DBMS)は、汎用的に開発された製品であるため、その使用頻度に比べて不要な機能も多く非効率的である。
また、高速にてデータを処理するためのデータ処理フレームワーク(例えば、guavaやpandasなど)が開発されているが、これらもまた汎用的に開発されたためアプリケーションプログラムインターフェイス(API)があまりにも膨大である。このため、開発者がこのような膨大なアプリケーションプログラムインターフェイス(API)を用いてジャバ(java:登録商標)やパンダ(pandas)により作成しなければならず使用し難い。
これらに加えて、従来のデータベース管理システム(DBMS)技術だけでビジネスインテリジェンス(BI)データ処理業務を実現するためには多くの問題がある。
例えば、ビジネスインテリジェンス(BI)データ処理業務を行うに際しては、様々な種類(又は異なる種類)のデータベースを用いる場合が多い。たとえ構造化問い合わせ言語(SQL)が標準化されたデータ処理言語であるとしても、データベース管理システム(DBMS)は各製品別に固有の処理方式やインタフェースを構成するため、完璧な互換性を有さない。このため、従来のデータベース管理システム(DBMS)などは異なる種類のデータベースとして存在するか、或いは、通常のファイル形式で存在するなど種々のデータを統一的に処理することができないという問題がある。
更に、周期的又は非周期的に繰り返される作業(ジョブ)を行う場合が多い。主として抽出と変換及び挿入(ETL)ツールなどのバッチ作業を行うツールを用いるか、或いは、プログラムとして自ら実現して用いる。抽出と変換及び挿入(ETL)ツールなどの欠点は、与えられた機能内において用いるため、所望のデータ処理機能がないということである。自らプログラムを開発してスケジューリングを行う方式は、いかなる要件も実現可能であるというメリットがあるが、実現されたプログラムは柔軟性に劣っている。すなわち、業務要件に応じて再び開発することを余儀なくされるか、或いは、業務要件が複雑である場合に高いコスト及び長い時間が必要であるという欠点がある。
更にまた、ビジネスインテリジェンス(BI)データ処理業務は、データを加工して様々な分析を行うため、データを段階的に分析したり複雑な段階を経て分析したりする場合が多い。ところが、従来の構造化問い合わせ言語(SQL)により作成されたクエリが複雑になると、そのクエリを処理する速度は急激に落ちる。このため、たとえ高速のデータベース管理システム(DBMS)を用いるとしても、速度の低下を防ぎ難い。また、ビジネスインテリジェンス(BI)データ処理業務を行うに際して大容量のデータを処理してユーザ(クライアント)に数秒単位の応答をしなければならない場合がたまにある。なお、ユーザが処理量の多い要請(リクエスト)を一括して行うと、データベース管理システム(DBMS)は処理負荷により応答速度が急激に落ちる。
本発明は上述した問題を解消するために案出されたものであり、その目的は、多数の種類のデータベースに保存されたデータを処理するためのアプリケーションプログラムインターフェイス(API)関数を商用インタープリタの構文に基づいて生成し、前記アプリケーションプログラムインターフェイス(API)関数を呼び出す指令文により構成されるスクリプトコードを前記商用インタープリタの構文の中間コードに変換して実行する、スクリプトに基づくデータ処理システムを提供することである。
また、本発明の他の目的は、データベースのデータをクエリ文により処理するアプリケーションプログラムインターフェイス(API)関数を提供し、処理されたデータを一つのデータセットのデータ形式で問い合わせ、問い合わせられたデータセット単位で結合(ジョインなど)、集計、フィルタリングを行うアプリケーションプログラムインターフェイス(API)関数を提供する、スクリプトに基づくデータ処理システムを提供することである。
前記目的を達成するために、本発明は、第1のスクリプトコードを受信して前記第1のスクリプトコードを解析して実行する、スクリプトに基づくデータ処理システムに関するものであり、第1のスクリプト構文により作成された第1のスクリプトコードを受信するスクリプト受信部と、前記第1のスクリプト構文に基づいて、前記第1のスクリプトコードを第2のスクリプトコードに変換して生成する中間コード生成部と、前記第2のスクリプトコードを実行する商用インタープリタと、データベースのデータをデータセットとして処理するアプリケーションプログラムインターフェイス(API)関数を定義し、前記第1のスクリプトコードに含まれているアプリケーションプログラムインターフェイス(API)関数を実行する関数処理部と、前記アプリケーションプログラムインターフェイス(API)関数により呼び出されて、前記データセットに対してフィルタリング、結合、又は集計のデータ処理機能を行うパッケージ管理部と、を備え、前記第2のスクリプトコードは、前記商用インタープリタの第2のスクリプト構文に基づいて作成されるプログラムコードであり、前記アプリケーションプログラムインターフェイス(API)関数は、前記第2のスクリプト構文により作成される関数であり、前記第1のスクリプト構文は繰り返し文や分岐文を許容せず、前記中間コード生成部は、第1のスクリプトコードが前記第1のスクリプト構文において許容されない第2のスクリプトコードで生成されていると、当該第1のスクリプトコードをエラーとして処理し、前記第1のスクリプト構文には、前記第2のスクリプト構文がいずれも使用可能な区間を指定する固有構文である指示文が含まれ、前記中間コード生成部は、当該指示文により指定された区間は原文通りに第2のスクリプトコードとして生成することを特徴とする。
また、本発明は、スクリプトに基づくデータ処理システムにおいて、前記アプリケーションプログラムインターフェイス(API)関数は、データベースのクエリ文により前記データベースにアクセスしてデータを処理する関数であり、前記アプリケーションプログラムインターフェイス(API)関数の引数には前記クエリ文が含まれることが好ましい。
更に、本発明は、スクリプトに基づくデータ処理システムにおいて、前記第1のスクリプト構文にはデータセットを参照するデータフレーム形式の変数が用いられ、前記データベースから参照するデータセットは、前記データフレーム形式の変数として取り出されて処理されることが好ましい。
更にまた、本発明は、スクリプトに基づくデータ処理システムにおいて、前記データベースは、たとえ多数の種類のデータベース(DB)形式のデータ、又はファイル形式で保存されるデータであるとしても、前記データベースを参照するために共通して前記データフレーム形式の変数が用いられることが好ましい。
更にまた、本発明は、スクリプトに基づくデータ処理システムにおいて、前記アプリケーションプログラムインターフェイス(API)関数は、前記データフレーム形式のデータセットに対して、少なくとも2つのデータセットを結合するか、少なくとも一つのデータセットを集計するか、或いは、少なくとも一つのデータセットをフィルタリングする関数であることが好ましい
述したように、本発明によるスクリプトに基づくデータ処理システムによれば、通常のファイル又はデータベースのデータセットを順次に処理するためのスクリプトを用いることにより、段階的な分析や複雑な分析のためのデータ処理をより手軽に作成することができ、作成された処理ステップ(スクリプトプログラムなど)に対して可読性をも高めることができるという効果がある。また、順次的なスクリプトを用いることにより、周期的又は非周期的なバッチ作業などをより手軽に作成することができ、作成されたバッチ作業に対する可読性が高くなるため更新などのメンテナンスを行い易い。
また、本発明によるスクリプトに基づくデータ処理システムによれば、データベース又はファイルなどに問い合わせたデータをデータセットのデータタイプとして保存して処理することにより、たとえ異なる種類のデータベースのデータであるとしても一緒に処理して互換性を高めることができるという効果が得られる。
更に、本発明によるスクリプトに基づくデータ処理システムによれば、従来の商用インタープリタを用いてスクリプト構文を定義して処理することにより、スクリプトを解析するための別途のインタープリタを開発しなくてもよいという効果が得られる。
本発明によるスクリプトに基づくデータ処理システムを行うための全体システムの構成に対するブロック図である。 本発明の一実施形態によるスクリプト構文の構成に対するブロック図である。 本発明の一実施形態によるスクリプト構文による指令文を示す例示コードである。 本発明の一実施形態によるスクリプト構文による指令文を示す例示コードである。 本発明の一実施形態によるスクリプト構文による指令文を示す例示コードである。 本発明の一実施形態によるスクリプト構文による指令文を示す例示コードである。 本発明の一実施形態によるスクリプト構文による指令文を示す例示コードである。 本発明の一実施形態によるスクリプト構文によるデータタイプを示す例示コードである。 本発明の一実施形態によるスクリプト構文によるデータフレーム形式のデータタイプを示す例示コードである。 本発明の一実施形態によるスクリプトに基づくデータ処理システムの構成に対するブロック図である。 本発明の一実施形態によるスクリプト処理のためのDB形式のデータベースに保存されたデータである。 本発明の一実施形態によるスクリプト処理のためのエクセルファイルのファイル形式で保存されたデータである。 本発明の一実施形態によるスクリプト構文により作成されたデータ処理のためのスクリプトの例を表示した図である。 本発明の一実施形態によるスクリプト構文により作成されたデータ処理のためのスクリプトの例を表示した図である。
以下、添付図面に基づき、本発明の実施のための具体的な内容について説明する。
また、本発明を説明するに当たって、同じ部分に対しては同じ符号を付し、その重複する説明は省略する。
まず、本発明によるスクリプトに基づくデータ処理システムの全体について図1を参照して説明する。
図1に示すように、本発明を行うための全体システムは、データ処理を要請するクライアント20と、クライアント20とネットワークにより結ばれてデータ処理に対するサービスを提供するサービスサーバ30と、スクリプトを解析して解析された作業を行うスクリプトサーバ40と、データを保存するデータベース60と、を備える。また、データベース60から取り出されたデータを一時的に保存するスクリプトキャッシュ50を更に備える。
クライアント20は、ユーザ端末10に設けられるクライアント用プログラムシステムであり、ウェブブラウザを介してユーザインタフェースを有する。すなわち、ユーザは、ウェブブラウザ又はウェブブラウザなどの画面のインタフェースを介して、オンライン上でデータ処理作業を行う。このとき、ユーザ端末10は、ユーザの指令などを入力されて当該指令を行い、処理結果を画面上に又はウェブブラウザ上に表示する。一方、ユーザ端末10は、パソコン(PC)、ノート型パソコン、タブレットPC、ファブレット、PDA、スマートフォンなどのコンピューティング機能を有するコンピュータ端末である。ユーザ端末10及びサービスサーバ30はネットワークにより結ばれて、ユーザ端末10上のクライアント20はオンライン上でデータ処理作業を行う。
また、クライアント20は、データ要請やデータ更新などのオンライン上で処理する作業をサービスサーバ30に要請し、その結果をサーバ30から取り出してウェブブラウザ上に表示する。或いは、処理されたデータをサービスサーバ30に転送する。特に、クライアント20が処理しようとする作業は、スクリプトにより構成された作業を含む。
他の実施形態によれば、クライアント20は、他のサーバであり、スクリプトなどが含まれているデータ処理作業をサービスサーバ30に要請する。
次いで、サービスサーバ30は、クライアント20からデータ処理に対する要請を受信し、当該要請を処理してその結果をクライアント20に転送するサーバである。すなわち、サービスサーバ30は、データベース60からデータを取り出し、自ら処理してクライアント20に転送するか、或いは、処理されたデータをデータベース60に更新する。
また、サービスサーバ30は、クライアント20から要請された内容(又は作業)中にスクリプトが含まれている場合、スクリプトサーバ40に当該スクリプト解析及びその実行を要請する。スクリプトは、データ処理に関する内容(又は指令、作業)を含む。すなわち、スクリプトは、データベース60からデータを取り出したり更新したりするなどの、データベース60のデータ処理のための指令文を含む。
一方、上述したクライアント20及びサービスサーバ30の機能は一例に過ぎず、サーバ及びクライアントの実現技術により種々に具体化される。すなわち、クライアント20及びサービスサーバ30は、一つの更新システムであり、その機能が性能に応じて互いに分配される。例えば、クライアント20は、単にウェブブラウザ機能のみを有しており、全ての機能はサービスサーバ30において構築される。すなわち、サービスサーバ30は、データベース60に対する処理指令やスクリプトを含む指令(又は作業)などを行わなければならず、或いは、このために、スクリプト解析を要請する機能をいずれも有する。
次いで、スクリプトサーバ40は、データ処理を要請するスクリプトを解析し、解析された内容を処理して結果を戻すサービスを行う。
データ処理のためのスクリプト(又はデータ処理スクリプト)は、予め定められた構文の規則に基づいて作成される。スクリプトの構文は、行うべき作業のオプションを示す作業オプション、アプリケーションプログラムインターフェイス(API)関数、割当文などで表わされる指令文により構成される。
作業オプションは、作業に様々なオプションがある場合、いかなる作業形態で行うかを示す構文である。例えば、問い合わせたデータセットをスクリプトキャッシュ50を保存して用いるという指示、指令文の実行有無に対する指示などに関する構文である。
また、アプリケーションプログラムインターフェイス(API)関数は、通常の関数で表わされる構文であり、データ処理を行う関数として定義される。アプリケーションプログラムインターフェイス(API)関数は、各データベース又はファイルの種類に応じて当該データセットを取り出したり保存したりし、データセットの結合、フィルタリング、集計などのデータ処理を行う関数である。
具体的には、アプリケーションプログラムインターフェイス(API)関数は、データを処理する機能を定義した関数をライブラリ形式で構成して提供される。すなわち、アプリケーションプログラムインターフェイス(API)関数は、データベース又はファイルからデータを取り出したり保存したり更新したりする機能を有する関数、又は取り出されたデータをスクリプトキャッシュ50に記録し、記録されたデータを加工する関数、又は統計、データマイニングなどを行うパッケージ、又は外部のライブラリを用いてデータを集計する関数などである。好ましくは、R(オープンソース統計/データマイニングパッケージ)を用いる。
これらに加えて、変数などにデータを割り当てる割当て構文、定数や変数、データ形式(又はデータタイプ)などを定義する宣言構文、又は作成されたスクリプトに関する説明を記載する注釈構文なども含まれる。
一方、スクリプトサーバ40は、商用化されたインタープリタを用いて、スクリプトを行う。すなわち、スクリプトサーバ40は、スクリプトを商用インタープリタが用いる構文で表わす中間コードを生成し、生成された中間コードを前記商用インタープリタに実行させる。
また、スクリプトサーバ40は、商用インタープリタの構文を用いてスクリプト指令文(又はスクリプトコード)を作成可能なようにして、商用インタープリタの構文により作成されたスクリプトをそのまま中間コードとして生成して、商用インタープリタに実行させる。すなわち、既に定義されたアプリケーションプログラムインターフェイス(API)を用いて処理し難いデータ処理の要求事項があるときに、パイソンネイティブ(python native)言語など商用インタープリタの構文を用いる。
また、スクリプトサーバ40は、スクリプトキャッシュ50を備えて、データベース60から取り出されたデータセットの全体又は一部を一時的に保存する。スクリプトキャッシュ50は、スクリプトサーバ40のメモリ(RAMなど)上に設けられてキャッシュメモリとして構成されるか、或いは、ハードディスク又はソリッドステートドライブ(SSD)ディスクなどにより実現されてキャッシュディスクとして構成される。或いは、全てのデータをディスクに保存し、一部のデータ、すなわち、必要なデータをキャッシュメモリに載せて用いる。
次いで、データベース60は、データを保存するための通常のデータベース(DB)又は通常のファイル形式でデータを保存するファイルなどである。ファイル形式としては、テキストファイル、ワードプロセッサファイル、スプレッドシートファイルなどが挙げられる。また、アクセスなどのファイル形式のDBファイルも適用される。加えて、一つのファイル形式でデータを保存する様々な形式がいずれも適用される。
DB形式のデータベース60は、データを管理するためのデータベース管理システム(DBMS)を備え、データの保存、削除、検索などの作業をクエリを用いて行う。特に、データベース60は、商用化されたデータベースであり、データを処理するための通常のクエリ機能を用いてデータクエリサービスを行う。
好ましくは、データベース60は、関係型データベース(RDB)として構成される。或いは、データベース60は、ビッグデータを保存するデータベースである。或いは、データベース60は、データキューブ、データウェアハウスなどより大量のデータを手軽に処理するためのデータベースである。
次いで、本発明の一実施形態によるデータ処理スクリプトの構文について図2乃至図5を参照してより具体的に説明する。
図2に示すように、本発明によるスクリプト又はスクリプトコードは、スクリプト構文により作成されたプログラムコードである。また、スクリプトは、中間コードとして解析されて、商用インタープリタにより実行される。このため、中間コードは、商用インタープリタにより実行されるプログラムコードであり、商用インタープリタの構文により作成されるコードである。
好ましくは、商用インタープリタは、パイソンインタープリタ(python interpreter)を用い、商用インタープリタの構文は、パイソン構文及びパイソンライブラリを用いる。
一方、スクリプト構文は、商用インタープリタの構文のうちの一部の構文、及び商用インタープリタの構文に含まれていない固有の構文により構成される。図2におけるB部分の構文が前者であり、A部分の構文が後者である。
スクリプト固有構文Aは解析されて、商用インタープリタ構文による中間コードとして新たに作成されて生成される。
スクリプト構文において用いる商用インタープリタ構文Bは、データタイプなどである。また、スクリプトを解析するとき、スクリプト構文により許容される商用インタープリタ構文は原文それ自体が中間コードとして生成される。
また、スクリプト構文において許容されない商用インタープリタ構文Cは、スクリプトの解析に際して許容されずにエラーとして処理される。
更に、図3a〜図3eに示すように、データ処理スクリプトは、多数の指令文(又は指令構文、指令コード)により構成される。指令文は、指示文、割当て文、関数呼出文、及び注釈文により構成される。
図3aに示すように、指示文は自ら作業を行わないが、キャッシュの使用有無など作業オプションを設定したり、コードの流れを制御したりするために用いられる指令文である。好ましくは、特殊文字(@など)を用いて指示文を区別する。指示文は、スクリプトに固有な指令文であるため、スクリプトの解析に際して指示文に相当する中間コードをいずれも新たに生成する。
また、図3bに示すように、割当て文は、変数に定数値や客体を割り当てる指令文である。割当て文の構文は、商用インタープリタの構文と同じであるが、割当て文が表示される位置や形態などに僅かな違いが出る。このため、スクリプトの解析に際して位置などのみを調整しておき、元の割当て文を示す数式はそのまま中間コードとして用いられる。
更に、図3c及び図3dに示すように、関数呼出文は、関数を呼び出す指令文である。関数の呼び出しは、図3cに示すように、アプリケーションプログラムインターフェイス(API)関数を呼び出す場合や、図3dに示すように、客体のインスタンス関数を呼び出す場合を含む。
アプリケーションプログラムインターフェイス(API)関数は、別途のライブラリにより構成して、構成されたライブラリを商用インタープリタに参照させて、商用インタープリタが前記ライブラリを参照して当該アプリケーションプログラムインターフェイス(API)関数を実行するようにする。但し、スクリプトの構文においては、アプリケーションプログラムインターフェイス(API)関数の引数をより便利に用いるように定義される。このため、スクリプトの解析に際して、アプリケーションプログラムインターフェイス(API)関数の引数をライブラリの元のアプリケーションプログラムインターフェイス(API)関数の引数に合うように変換若しくは補完する。
特に、アプリケーションプログラムインターフェイス(API)関数の引数には、データベースを処理するクエリ文を伝達する引数が含まれる。これにより、ユーザは、通常のクエリ文を用いてデータベースに保存されたデータを参照したり更新したりするなど、データ処理作業を行うことができる。
また、アプリケーションプログラムインターフェイス(API)関数は、商用インタープリタの構文により作成された関数であり、データセットを処理するための関数である。特に、アプリケーションプログラムインターフェイス(API)関数は、データベース又はファイルから参照したデータセットをデータフレーム形式の変数として取り出したり、データフレーム形式の変数に保存されたデータセットをデータベース又はファイルに保存したりする関数として構成される。更に、アプリケーションプログラムインターフェイス(API)関数は、データフレーム形式の変数に保存されたデータセットを集計したり、少なくとも2つのデータセットを結合(join)したりするなど、データセットの加工又は処理を行う関数により構成される。
更に、アプリケーションプログラムインターフェイス(API)関数は、データベースのデータを取り出すときにはクエリ文を用いてデータセットを取り出す関数である。
ここで、データセットとは、同じフィールドにより構成される多数のレコードにより構成されるデータの集まりのことをいう。すなわち、一つのレコードは、多数のフィールド値により構成されるが、全てのレコードのフィールドは、同じフィールドを有する。
また、客体のインスタンス関数に関する構文は、商用インタープリタの構文をそのまま用いるため、別途の翻訳なしに(解析なしに)に中間コードとして生成される。
更に、図3cの最初の関数呼出文のように、割当て文内に関数呼出文が含まれる。また、図3dに示すアプリケーションプログラムインターフェイス(API)関数の呼出は、関数に引数を含めて行うが、客体のインスタンス関数は、客体(self、this)を引数(argument)に暗黙的に伝達する。
また、図3eに示す注釈文は、指令文を説明するためのものであり、実際にいかなる作業も行わない。このため、中間コードに変換されない。
一方、本発明によるスクリプト構文においては、分岐文及び繰り返し文は基本的に許容されない。すなわち、スクリプト構文は分岐文や繰り返し文に対する構文を有さない。具体的に、商用インタープリタ構文において許容される分岐文(if構文など)や繰り返し文(while、for構文など)などは許容されない。
商用インタープリタは、分岐文や繰り返し文に対する構文を有する。この場合、たとえスクリプト内に商用インタープリタに許容される分岐文や繰り返し文が記載されているとしても、当該分岐文や繰り返し文を解析して中間コードとして生成しない。すなわち、スクリプト内に記載の分岐文や繰り返し文は、スクリプトの解析に際して中間コードとして生成されないため実行されない。なお、スクリプトの解析に際してエラーとして発生される。
本発明によるデータ処理システムは、主として大容量データを処理するためのものであり、アプリケーションプログラムインターフェイス(API)関数を用いた作業に際してデータセットの集合処理を行う。このため、繰り返し文や分岐文を用いず、これにより、スクリプト学習性が良く、しかも、使い勝手が良い。なお、スクリプトに対する可読性にも優れているため、メンテナンスを行い易い。
次いで、本発明によるスクリプト構文のデータタイプについて説明する。
図4に示すように、本発明によるスクリプト構文のデータタイプは、文字列(string)、整数型、実数型(浮動型)、日付型を有する。これらのデータタイプは、商用インタープリタの構文をそのまま用いる。なお、商用インタープリタ(又は商用インタープリタのライブラリ)において定義する全ての客体が用いられる。
また、図5に示すように、スクリプト構文は、データフレーム形式を用いる。データフレーム型は、データベース管理システム(DBMS)などのデータベース60のテーブル状のカラム(又はフィールド)及びレコードを有する2次元データセットを有する客体を宣言する形式である。データフレーム形式で宣言された変数には、データベース又はファイルから読み込んだデータセットが保存される。
次いで、本発明の一実施形態によるスクリプトに基づくデータ処理システムについて図6を参照してより具体的に説明する。上述したように、データ処理システムは、クライアント20とネットワークにより結ばれたサーバ40により実現されるサーバ−クライアントシステムである。しかしながら、以下では、サーバ40において実現されるシステムとして説明する。
図6に示すように、本発明の一実施形態によるスクリプトに基づくデータ処理システム40は、スクリプトを受信するスクリプト受信部41と、スクリプトコードがスクリプト構文に合うか否かを検査し、検査されたスクリプトコードをインタープリタにより実行可能な中間コードとして生成する中間コード生成部44、データベース60から取り出したり更新したりしたデータをスクリプトキャッシュ50に保存するキャッシュ管理部47と、中間コードを実行するインタープリタ45と、を備える。
まず、スクリプト受信部41は、クライアント20が要請したスクリプトであり、データを処理するための要請を含むスクリプトを受信する。上述したように、スクリプトは、スクリプト構文により作成されたコードであり、指示文、割当て文、関数呼出文などの一連の指令文により構成される。
次いで、中間コード生成部44は、スクリプトに対してスクリプト構文に合うか否かを判断し、構文によるスクリプトを商用インタープリタの構文による中間コードに変換して生成する。このとき、中間コード生成部44は、スクリプトに作成された指示文や関数などを解析する。
中間コード生成部44は、スクリプトに対してスクリプト構文によるコードであるか否かを検査し、スクリプト構文に合わないコードを出力するか、或いは、構文エラーの内容を出力する。このとき、中間コードの変換過程は行われない。
上述したように、スクリプトコードは、商用インタープリタの構文及びスクリプトの固有構文により作成されたコードである。すなわち、スクリプトコードは、商用インタープリタの構文によるコードである。しかしながら、スクリプト構文に含まれる商用インタープリタの構文は、一部の構文である。このため、たとえスクリプトコード(又はコードの一部)が商用インタープリタの構文に基づいて作成されたコードであるとしても、スクリプト構文により許容されない構文である限り、当該コードは中間コードに変換されない。
また、中間コード生成部44は、スクリプト構文に合うコードであれば、当該スクリプトコードを中間コードに変換して中間コードを生成する。特に、スクリプト固有構文である場合、スクリプト構文に基づいて商用インタープリタの構文に変換する。なお、スクリプトコードが商用インタープリタの構文である場合、元のコードを中間コードとして生成する。
更に、中間コード生成部44は、指示文の内容を解析して、解析された指示内容に基づいて指令文の流れを制御するか、アプリケーションプログラムインターフェイス(API)関数を指示による関数に置き換えるか、或いは、関数引数を変換する。例えば、データベースを参照するアプリケーションプログラムインターフェイス(API)関数に対してキャッシュを用いるようにする指示文があれば、キャッシュを参照するアプリケーションプログラムインターフェイス(API)関数に置き換えて中間コードを生成する。
次いで、インタープリタ45は、中間コードを実行してデータ処理作業を行う。インタープリタ45は商用インタープリタであり、好ましくは、パイソンインタープリタである。
次いで、関数処理部46は、アプリケーションプログラムインターフェイス(API)関数を処理する。アプリケーションプログラムインターフェイス(API)関数はデータセットを処理する関数であり、商用インタープリタにより作成された関数である。アプリケーションプログラムインターフェイス(API)関数はライブラリなどにより実現されて、商用インタープリタに参照させる。このため、商用インタープリタは、中間コード内にアプリケーションプログラムインターフェイス(API)関数があれば、ライブラリなどを参照してアプリケーションプログラムインターフェイス(API)関数を呼び出して実行する。
上述したように、アプリケーションプログラムインターフェイス(API)関数は、データベース又はファイルに保存されたデータセットを取り出したり保存したり、当該データセットを加工処理したりする関数を含む。このとき、データフレーム形式を有する変数を生成し、生成された変数にデータセットを保存して処理する。アプリケーションプログラムインターフェイス(API)関数は、データセットの入力、処理、出力関数などにより構成される。
具体的に、入力アプリケーションプログラムインターフェイス(API)関数は、データベース又はファイルに保存されたデータセットを読み込んで参照して、生成された変数にデータセットを保存する。ファイルの種類やデータベースの種類に応じて異なる読み込みのアプリケーションプログラムインターフェイス(API)関数が予め生成される。これらがデータベース又はファイルを入力する関数である。また、処理アプリケーションプログラムインターフェイス(API)関数は、生成された変数(データフレーム形式のデータ変数)に保存されたデータセットをフィルタリングしたり集計したり、他のデータセットと結合したりするなど、データセットを加工する。すなわち、処理アプリケーションプログラムインターフェイス(API)関数は、データセットを処理する関数(アプリケーションプログラムインターフェイス(API)関数)である。なお、出力アプリケーションプログラムインターフェイス(API)関数は、データフレーム形式の変数に保存されたデータセットをデータベース又はファイルに保存する関数である。
次いで、キャッシュ管理部47は、データベース又はファイルから読み込まれたデータをスクリプトキャッシュ50に一時的に保存する。入力アプリケーションプログラムインターフェイス(API)関数や出力アプリケーションプログラムインターフェイス(API)関数がデータベースやファイルに保存されたデータセットを参照するとき、当該データがスクリプトキャッシュ50に保存されていなければ、スクリプトキャッシュ50を参照する。
次いで、パッケージ管理部48は、データセットに対して集計したりフィルタリングしたりする機能を有するパッケージを備え、アプリケーションプログラムインターフェイス(API)関数の呼出に応じて前記パッケージの集計又はフィルタリング機能を行う。好ましくは、パッケージとしては、オープンソースRパッケージが用いられる。すなわち、パッケージ管理部48は、アプリケーションプログラムインターフェイス(API)関数から要請されるデータセットを前記パッケージに転送し、当該パッケージは集計又はフィルタリングなどの機能を行い、その結果をパッケージ管理部48に戻す。
このとき、集計フィルタパッケージ及びアプリケーションプログラムインターフェイス(API)関数は、データフレーム形式の変数を用いてデータセットなどのデータを送受する。
次いで、本発明の一実施形態によるスクリプト構文により作成されたデータ処理のためのスクリプトの例について図7a、図7b、図8a及び図8bを参照して説明する。
図8a及び図8bは、顧客別の取引回数が3回以上であり、顧客別の取引金額の平均が取引支店別の取引金額の平均に比べて約20%高い顧客の身上情報を求めるためのスクリプトの例である。また、図7a及び図7bは、取引明細データ及び顧客の身上データのテーブルを表示したものである。ここで、図7aの取引明細データは、DB形式のデータベースに保存されたデータであり、図7bの顧客身上データは、エクセルファイルのファイル形式で保存されたデータである。
図8a及び図8bに示すように、取引データをロードし、顧客別の取引回数、顧客別の取引金額の平均、取引支店別の取引金額の平均を求める。そして、フィルタリングを行う。次いで、結合を行って顧客の身上レコードを取り出す。
以上、本発明者により行われた発明について実施形態を挙げて具体的に説明したが、本発明はこれらの実施形態に何ら限定されるものではなく、その要旨を逸脱しない範囲内において種々に変更可能であるということはいうまでもない。
なお、参考までに、本発明を支援した韓国の国家研究開発事業を表示すると、下記の通りである。
課題の固有番号:10053204
部処名:産業通商資源部
研究管理専門機関:韓国産業技術評価管理院
研究事業名:産業技術革新事業(グローバル融合ATC事業)
研究課題名:5億件のデータを基準として3秒以内に「データ処理及びユーザインタフェースの実現」が可能なペタバイト級非専門家用ビジネスインテリジェンスサービスプラットフォーム技術開発
主観機関:株式会社BIマトリックス
研究期間:2015年6月1日〜2020年5月31日
10:ユーザ端末
20:クライアント
30:サービスサーバ
40:スクリプトサーバ
41:スクリプト受信部
42:第1の解析部
44:中間コード生成部
45:インタープリタ
46:関数処理部
47:キャッシュ管理部
48:パッケージ管理部
50:スクリプトキャッシュ
60:データベース

Claims (5)

  1. 第1のスクリプトコードを受信して前記第1のスクリプトコードを解析して実行する、スクリプトに基づくデータ処理システムにおいて、
    第1のスクリプト構文により作成された第1のスクリプトコードを受信するスクリプト受信部と、
    前記第1のスクリプト構文に基づいて、前記第1のスクリプトコードを第2のスプリクトコードに変換して生成する中間コード生成部と、
    前記第2のスプリクトコードを実行する商用インタープリタと、
    データベースのデータをデータセットとして処理するアプリケーションプログラムインターフェイス(API)関数を定義し、前記第1のスクリプトコードに含まれているアプリケーションプログラムインターフェイス(API)関数を実行する関数処理部と、
    前記アプリケーションプログラムインターフェイス(API)関数により呼び出されて、前記データセットに対してフィルタリング、結合、又は集計のデータ処理機能を行うパッケージ管理部と、を備え、
    前記第2のスプリクトコードは、前記商用インタープリタの第2のスクリプト構文に基づいて作成されるプログラムコードであり、前記アプリケーションプログラムインターフェイス(API)関数は、前記第2のスクリプト構文により作成される関数であり、
    前記第1のスクリプト構文は繰り返し文や分岐文を許容せず、
    前記中間コード生成部は、第1のスクリプトコードが前記第1のスクリプト構文において許容されない第2のスクリプトコードで生成されていると、当該第1のスクリプトコードをエラーとして処理し、
    前記第1のスクリプト構文には、前記第2のスクリプト構文がいずれも使用可能な区間を指定する固有構文である指示文が含まれ、前記中間コード生成部は、当該指示文により指定された区間は原文通りに第2のスクリプトコードとして生成する
    ことを特徴とするスクリプトに基づくデータ処理システム。
  2. 前記アプリケーションプログラムインターフェイス(API)関数は、データベースのクエリ文により前記データベースにアクセスしてデータを処理する関数であり、前記アプリケーションプログラムインターフェイス(API)関数の引数には前記クエリ文が含まれる
    ことを特徴とする請求項1に記載のスクリプトに基づくデータ処理システム。
  3. 前記第1のスクリプト構文にはデータセットを参照するデータフレーム形式の変数が用いられ、前記データベースから参照するデータセットは、前記データフレーム形式の変数として取り出されて処理される
    ことを特徴とする請求項1に記載のスクリプトに基づくデータ処理システム。
  4. 前記データベースは、たとえ多数の種類のデータベース(DB)形式のデータ、又はファイル形式で保存されるデータであるとしても、前記データベースを参照するために共通して前記データフレーム形式の変数が用いられる
    ことを特徴とする請求項3に記載のスクリプトに基づくデータ処理システム。
  5. 前記アプリケーションプログラムインターフェイス(API)関数は、前記データフレーム形式のデータセットに対して、少なくとも2つのデータセットを結合するか、少なくとも一つのデータセットを集計するか、或いは、少なくとも一つのデータセットをフィルタリングする関数である
    ことを特徴とする請求項3に記載のスクリプトに基づくデータ処理システム。
JP2016089271A 2015-12-30 2016-04-27 商用インタープリタを用いた、スクリプトに基づくデータ処理システム Active JP6248137B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2015-0189774 2015-12-30
KR1020150189774A KR101769848B1 (ko) 2015-12-30 2015-12-30 상용 인터프리터를 이용한 스크립트 기반 데이터 처리 시스템

Publications (2)

Publication Number Publication Date
JP2017120611A JP2017120611A (ja) 2017-07-06
JP6248137B2 true JP6248137B2 (ja) 2017-12-13

Family

ID=59272213

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016089271A Active JP6248137B2 (ja) 2015-12-30 2016-04-27 商用インタープリタを用いた、スクリプトに基づくデータ処理システム

Country Status (2)

Country Link
JP (1) JP6248137B2 (ja)
KR (1) KR101769848B1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111008021A (zh) * 2019-12-24 2020-04-14 象辑知源(武汉)科技有限公司 一种基于Presto的支持多数据源的混合执行SQL和python脚本的方法及系统
CN112346775B (zh) * 2020-09-21 2024-02-02 杭州数智政通科技有限公司 指标数据通用处理方法、电子设备和存储介质
WO2022195726A1 (ja) 2021-03-16 2022-09-22 富士通株式会社 情報処理プログラム、情報処理方法および情報処理装置
CN117057640B (zh) * 2023-07-26 2024-04-12 广东优翼航空技术有限公司 一种基于解释器对飞行品质进行评估的方法及系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6096095A (en) * 1998-06-04 2000-08-01 Microsoft Corporation Producing persistent representations of complex data structures
SG164284A1 (en) * 2003-09-17 2010-09-29 Research In Motion Ltd System and method for dynamic content processing with extendable provisioning
KR101028359B1 (ko) * 2009-12-10 2011-04-11 주식회사 이노와이어리스 스크립트를 이용한 dut 자동화 테스트 장치
US9003380B2 (en) * 2010-01-12 2015-04-07 Qualcomm Incorporated Execution of dynamic languages via metadata extraction
US9218408B2 (en) * 2010-05-27 2015-12-22 Oracle International Corporation Method for automatically creating a data mart by aggregated data extracted from a business intelligence server
KR101260436B1 (ko) 2012-10-24 2013-05-09 주식회사 소프트잼 구조화 질의어 자동 처리 시스템과 방법 및 그를 실행하기 위한 프로그램이 기록되는 컴퓨터로 읽을 수 있는 기록매체
US10127138B2 (en) * 2013-06-06 2018-11-13 Microsoft Technology Licensing, Llc. Debugging native code by transitioning from execution in native mode to execution in interpreted mode
JP6167033B2 (ja) 2013-12-13 2017-07-19 Kddi株式会社 アプリケーション解析装置、アプリケーション解析方法、プログラム

Also Published As

Publication number Publication date
KR101769848B1 (ko) 2017-08-22
JP2017120611A (ja) 2017-07-06
KR20170080789A (ko) 2017-07-11

Similar Documents

Publication Publication Date Title
US11086751B2 (en) Intelligent metadata management and data lineage tracing
US11847040B2 (en) Systems and methods for detecting data alteration from source to target
US11693912B2 (en) Adapting database queries for data virtualization over combined database stores
JP6248137B2 (ja) 商用インタープリタを用いた、スクリプトに基づくデータ処理システム
CN102799622A (zh) 基于MapReduce扩展框架的分布式SQL查询方法
US10726040B2 (en) Lossless conversion of database tables between formats
Sellami et al. Complex queries optimization and evaluation over relational and NoSQL data stores in cloud environments
Swarna et al. Apache Pig-a data flow framework based on Hadoop Map Reduce
Sinthong et al. Aframe: Extending dataframes for large-scale modern data analysis
CN111221698A (zh) 任务数据采集方法与装置
US10459987B2 (en) Data virtualization for workflows
Kalna et al. A scalable business intelligence decision-making system in the era of big data
CN102789488B (zh) 数据查询处理系统和数据查询处理方法
US11016973B2 (en) Query plan execution engine
US20150178367A1 (en) System and method for implementing online analytical processing (olap) solution using mapreduce
Sinthong et al. AFrame: Extending DataFrames for large-scale modern data analysis (Extended Version)
Mehrotra et al. Apache Spark Quick Start Guide: Quickly learn the art of writing efficient big data applications with Apache Spark
Grzegorowski Scaling of complex calculations over big data-sets
US10255316B2 (en) Processing of data chunks using a database calculation engine
Ventocilla Big data programming with Apache spark
US11650982B2 (en) Automatic selection of precompiled or code-generated operator variants
Raj et al. Implementation of ETL process using Pig and Hadoop
US20200311076A1 (en) Database partition pruning using dependency graph
Nawab et al. Performance optimization for extraction, transformation, loading and reporting of data
US20240078244A1 (en) Methods and Systems for Tracking Data Lineage from Source to Target

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170530

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171024

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171120

R150 Certificate of patent or registration of utility model

Ref document number: 6248137

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250