(57)【要約】【課題】多種類のＤＢの保存データを順次処理するためのスクリプトを定義し、そのスクリプトで作成されたデータ処理プログラムを解析してデータ処理を順次行うシステムを提供する。【解決手段】スクリプト構文により作成されたスクリプトコードを受信するスクリプト受信部４１と、スクリプトコードを中間コードに変換する中間コード生成部４４と、中間コードを実行するインタープリタ４５と、ＤＢ６０のデータをデータセットとして処理するＡＰＩ関数を定義し、スクリプトコードに含まれるＡＰＩ関数を実行する関数処理部４６と、ＡＰＩ関数に呼び出されてデータセットにフィルタリング、結合又は集計のデータ処理機能を行うパッケージ管理部４８を備え、中間コードはインタープリタ４５のコード構文に基づくプログラムコードであり、ＡＰＩ関数はインタープリタ４５のコード構文により作成される関数である。【選択図】図６
2017120611.tif 000002
【特許請求の範囲】
【請求項１】
スクリプトコードを受信して前記スクリプトコードを解析して実行する、スクリプトに基づくデータ処理システムにおいて、
スクリプト構文により作成されたスクリプトコードを受信するスクリプト受信部と、
前記スクリプト構文に基づいて、前記スクリプトコードを中間コードに変換して生成する中間コード生成部と、
前記中間コードを実行する商用インタープリタと、
データベースのデータをデータセットとして処理するアプリケーションプログラムインターフェイス（ＡＰＩ）関数を定義し、前記スクリプトコードに含まれているアプリケーションプログラムインターフェイス（ＡＰＩ）関数を実行する関数処理部と、
前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数により呼び出されて、前記データセットに対してフィルタリング、結合、又は集計のデータ処理機能を行うパッケージ管理部と、を備え、
前記中間コードは、前記商用インタープリタのコード構文に基づいて作成されるプログラムコードであり、前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、前記商用インタープリタのコード構文により作成される関数である
ことを特徴とするスクリプトに基づくデータ処理システム。
【請求項２】
前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データベースのクエリ文により前記データベースにアクセスしてデータを処理する関数であり、前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数の引数には前記クエリ文が含まれる
ことを特徴とする請求項１に記載のスクリプトに基づくデータ処理システム。
【請求項３】
前記スクリプト構文にはデータセットを参照するデータフレーム形式の変数が用いられ、前記データベースから参照するデータセットは、前記データフレーム形式の変数として取り出されて処理される
ことを特徴とする請求項１に記載のスクリプトに基づくデータ処理システム。
【請求項４】
前記データベースは、たとえ多数の種類のデータベース（ＤＢ）形式のデータ、又はファイル形式で保存されるデータであるとしても、前記データベースを参照するために共通して前記データフレーム形式の変数が用いられる
ことを特徴とする請求項３に記載のスクリプトに基づくデータ処理システム。
【請求項５】
前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、前記データフレーム形式のデータセットに対して、少なくとも２つのデータセットを結合するか、少なくとも一つのデータセットを集計するか、或いは、少なくとも一つのデータセットをフィルタリングする関数である
ことを特徴とする請求項３に記載のスクリプトに基づくデータ処理システム。
【請求項６】
前記スクリプト構文は、繰り返し文や分岐文を許容しない
ことを特徴とする請求項１に記載のスクリプトに基づくデータ処理システム。
【請求項７】
前記スクリプト構文には前記商用インタープリタの構文がいずれも使用可能な区間を指定する指示文が含まれ、
前記中間コード生成部は、当該指示文により指定された区間は原文通りに中間コードとして生成する
ことを特徴とする請求項１に記載のスクリプトに基づくデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数の種類のデータベースに保存されたデータを順次に処理するためのスクリプトを定義し、定義されたスクリプトにより作成されたデータ処理プログラムを解析してデータ処理を順次に行う、スクリプトに基づくデータ処理システムに関する。
【０００２】
本発明は、多数の種類のデータベースに保存されたデータを処理するためのアプリケーションプログラムインターフェイス（ＡＰＩ）関数を商用インタープリタの構文に基づいて生成し、前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数を呼び出す指令文により構成されるスクリプトコードを前記商用インタープリタの構文の中間コードに変換して実行する、スクリプトに基づくデータ処理システムに関する。
【背景技術】
【０００３】
一般に、大容量データを処理するために、データベースに当該データを保存し、データベース管理システム（ＤＢＭＳ）を用いてデータを問い合わせたり更新したりする。このとき、データベースの処理のための言語である構造化問い合わせ言語（ＳＱＬ：ＳｔｒｕｃｔｕｒｅｄＱｕｅｒｙ Ｌａｎｇｕａｇｅ）を用いて、自分が希望するデータを一つのデータセットとして問い合わせたり更新したりする。
【０００４】
構造化問い合わせ言語（ＳＱＬ）は、データベースを構築して活用するために用いる標準化された言語であり、関係型データモデルで表わされるデータベースを処理する。すなわち、データベースを多数のテーブルにより構成し、各テーブルは、多数のフィールド（又はカラム）により構成される。一つのデータは、各フィールドに相当するフィールド値を有する。ＳＱＬは、上述したテーブル内のデータ又はデータのフィールド値を問い合わせるために、ＳＥＬＥＣＴＦＲＯＭ ＷＨＥＲＥ構造により構成された構造的な言語である。加えて、データを集計又は整列するための関数や機能、又はテーブルを結合するためのジョイン関数などの基本的なデータ処理機能を有している。
【０００５】
このため、データベースに保存されたデータをフィルタリングしたり、データセット又はテーブルを結合したり、集計したりする場合には、簡単にデータベース管理システム（ＤＢＭＳ）を用いて効率よく処理することができた。
【０００６】
しかしながら、企業の膨大なデータを処理するビジネスインテリジェンス（ＢＩ：Ｂｕｓｉｎｅｓｓ Ｉｎｔｅｌｌｉｇｅｎｃｅ）分野においては、構造化問い合わせ言語（ＳＱＬ）に基づくデータベース管理システム（ＤＢＭＳ）だけでは十分ではないのが現状である。すなわち、ビジネスインテリジェンス（ＢＩ）とは、企業のビッグデータを統計分析などの定形又は非定形的な方法を用いて様々に分析したり、分析された情報を理解し易いように一目瞭然に報告書の形式に加工したりして、ビジネスをより合理的に行うように支援する一連のツールのことをいう。企業がビジネスを行いながら蓄積するデータは数えられないほど多い。このようなデータは、ビジネス現場の生々しい内容を伝えるものであり、正常に分析される限り、そこからビジネスに必要な情報を取り出すことができる。しかしながら、現場で蓄積された相当量のデータから有意義な分析結果を導き出すことは簡単な作業ではない。
【０００７】
このような分析のために多くのツールが個別的に開発されてきた。例えば、データ抽出及び変形（ＥＴＴ）ツール、多次元データ分析のためのオンライン分析処理（ＯＬＡＰ）ツール、レポートの作成のためのレポーティングツール、データ間の隠れた連関性を見出すデータマイニングツールなどが代表的である。これらの一連のツールを一つのソフトウェア製品群として形成したものが一種のビジネスインテリジェンス（ＢＩ）である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】大韓民国公開特許第１０−１９９９−００３８６９８号（１９９９年０６月０５日付け公開）
【特許文献２】大韓民国公開特許第１０−２００８−００３１２０２号（２００８年０４月０８日付け公開）
【特許文献３】大韓民国公開特許第１０−２００４−００５３２５４号（２００４年０６月２３日付け公開）
【特許文献４】大韓民国公開特許第１０−２０１２−００５２３０１号（２０１２年０５月２３日付け公開）
【特許文献５】大韓民国公開特許第１０−２０１４−００２７１２８号（２０１４年０３月０６日付け公開）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ビジネスインテリジェンス（ＢＩ）データ処理業務を行うと、データベース管理システム（ＤＢＭＳ）を用いたり、プログラムにより業務ロジックを実現したりする方法に加えて使用可能なデータ処理ツールがないのが現状である。
【００１０】
また、従来のデータベース管理システム（ＤＢＭＳ）は、データ処理速度がビジネスインテリジェンス（ＢＩ）データ業務に最適化されていないが故に、現場において体感する処理速度が高くないという問題がある。すなわち、従来のデータベース管理システム（ＤＢＭＳ）は、構造的な言語である構造化問い合わせ言語（ＳＱＬ）に基づく汎用的なデータ処理システムであるため、ビッグデータのように大容量のデータを処理するのに長時間及びコストがかかる。特に、ビジネスインテリジェンス（ＢＩ）の現場においては、頻繁に用いるデータはビッグデータのうちの一部であり、重複して用いるデータも多い。しかしながら、従来のデータベース管理システム（ＤＢＭＳ）は汎用的であるため、重複して用いるデータも最初から処理して長時間がかかる。
【００１１】
また、従来のデータベース管理システム（ＤＢＭＳ）の速度を改善するために高速のデータベース管理システム（ＤＢＭＳ）技術や商用化された製品が開発されている。しかしながら、高速の内蔵データベース管理システム（ＤＢＭＳ）は、満足のいく応答速度や処理容量を示すが、かなり高価であるため、通常の会社は入手し難い。すなわち、高速の内蔵データベース管理システム（ＤＢＭＳ）は、汎用的に開発された製品であるため、その使用頻度に比べて不要な機能も多く非効率的である。
【００１２】
また、高速にてデータを処理するためのデータ処理フレームワーク（例えば、ｇｕａｖａやｐａｎｄａｓなど）が開発されているが、これらもまた汎用的に開発されたためアプリケーションプログラムインターフェイス（ＡＰＩ）があまりにも膨大である。このため、開発者がこのような膨大なアプリケーションプログラムインターフェイス（ＡＰＩ）を用いてジャバ（ｊａｖａ：登録商標）やパンダ（ｐａｎｄａｓ）により作成しなければならず使用し難い。
【００１３】
これらに加えて、従来のデータベース管理システム（ＤＢＭＳ）技術だけでビジネスインテリジェンス（ＢＩ）データ処理業務を実現するためには多くの問題がある。
【００１４】
例えば、ビジネスインテリジェンス（ＢＩ）データ処理業務を行うに際しては、様々な種類（又は異なる種類）のデータベースを用いる場合が多い。たとえ構造化問い合わせ言語（ＳＱＬ）が標準化されたデータ処理言語であるとしても、データベース管理システム（ＤＢＭＳ）は各製品別に固有の処理方式やインタフェースを構成するため、完璧な互換性を有さない。このため、従来のデータベース管理システム（ＤＢＭＳ）などは異なる種類のデータベースとして存在するか、或いは、通常のファイル形式で存在するなど種々のデータを統一的に処理することができないという問題がある。
【００１５】
更に、周期的又は非周期的に繰り返される作業（ジョブ）を行う場合が多い。主として抽出と変換及び挿入（ＥＴＬ）ツールなどのバッチ作業を行うツールを用いるか、或いは、プログラムとして自ら実現して用いる。抽出と変換及び挿入（ＥＴＬ）ツールなどの欠点は、与えられた機能内において用いるため、所望のデータ処理機能がないということである。自らプログラムを開発してスケジューリングを行う方式は、いかなる要件も実現可能であるというメリットがあるが、実現されたプログラムは柔軟性に劣っている。すなわち、業務要件に応じて再び開発することを余儀なくされるか、或いは、業務要件が複雑である場合に高いコスト及び長い時間が必要であるという欠点がある。
【００１６】
更にまた、ビジネスインテリジェンス（ＢＩ）データ処理業務は、データを加工して様々な分析を行うため、データを段階的に分析したり複雑な段階を経て分析したりする場合が多い。ところが、従来の構造化問い合わせ言語（ＳＱＬ）により作成されたクエリが複雑になると、そのクエリを処理する速度は急激に落ちる。このため、たとえ高速のデータベース管理システム（ＤＢＭＳ）を用いるとしても、速度の低下を防ぎ難い。また、ビジネスインテリジェンス（ＢＩ）データ処理業務を行うに際して大容量のデータを処理してユーザ（クライアント）に数秒単位の応答をしなければならない場合がたまにある。なお、ユーザが処理量の多い要請（リクエスト）を一括して行うと、データベース管理システム（ＤＢＭＳ）は処理負荷により応答速度が急激に落ちる。
【００１７】
本発明は上述した問題を解消するために案出されたものであり、その目的は、多数の種類のデータベースに保存されたデータを処理するためのアプリケーションプログラムインターフェイス（ＡＰＩ）関数を商用インタープリタの構文に基づいて生成し、前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数を呼び出す指令文により構成されるスクリプトコードを前記商用インタープリタの構文の中間コードに変換して実行する、スクリプトに基づくデータ処理システムを提供することである。
【００１８】
また、本発明の他の目的は、データベースのデータをクエリ文により処理するアプリケーションプログラムインターフェイス（ＡＰＩ）関数を提供し、処理されたデータを一つのデータセットのデータ形式で問い合わせ、問い合わせられたデータセット単位で結合（ジョインなど）、集計、フィルタリングを行うアプリケーションプログラムインターフェイス（ＡＰＩ）関数を提供する、スクリプトに基づくデータ処理システムを提供することである。
【課題を解決するための手段】
【００１９】
前記目的を達成するために、本発明は、スクリプトコードを受信して前記スクリプトコードを解析して実行する、スクリプトに基づくデータ処理システムに関するものであり、スクリプト構文により作成されたスクリプトコードを受信するスクリプト受信部と、前記スクリプト構文に基づいて、前記スクリプトコードを中間コードに変換して生成する中間コード生成部と、前記中間コードを実行する商用インタープリタと、データベースのデータをデータセットとして処理するアプリケーションプログラムインターフェイス（ＡＰＩ）関数を定義し、前記スクリプトコードに含まれているアプリケーションプログラムインターフェイス（ＡＰＩ）関数を実行する関数処理部と、前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数により呼び出されて、前記データセットに対してフィルタリング、結合、又は集計のデータ処理機能を行うパッケージ管理部と、を備え、前記中間コードは、前記商用インタープリタのコード構文に基づいて作成されるプログラムコードであり、前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、前記商用インタープリタのコード構文により作成される関数であることを特徴とする。
【００２０】
また、本発明は、スクリプトに基づくデータ処理システムにおいて、前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データベースのクエリ文により前記データベースにアクセスしてデータを処理する関数であり、前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数の引数には前記クエリ文が含まれることが好ましい。
【００２１】
更に、本発明は、スクリプトに基づくデータ処理システムにおいて、前記スクリプト構文にはデータセットを参照するデータフレーム形式の変数が用いられ、前記データベースから参照するデータセットは、前記データフレーム形式の変数として取り出されて処理されることが好ましい。
【００２２】
更にまた、本発明は、スクリプトに基づくデータ処理システムにおいて、前記データベースは、たとえ多数の種類のデータベース（ＤＢ）形式のデータ、又はファイル形式で保存されるデータであるとしても、前記データベースを参照するために共通して前記データフレーム形式の変数が用いられることが好ましい。
【００２３】
更にまた、本発明は、スクリプトに基づくデータ処理システムにおいて、前記アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、前記データフレーム形式のデータセットに対して、少なくとも２つのデータセットを結合するか、少なくとも一つのデータセットを集計するか、或いは、少なくとも一つのデータセットをフィルタリングする関数であることが好ましい。
【００２４】
更にまた、本発明は、スクリプトに基づくデータ処理システムにおいて、前記スクリプト構文は、繰り返し文や分岐文を許容しないことが好ましい。
【００２５】
更にまた、本発明は、スクリプトに基づくデータ処理システムにおいて、前記スクリプト構文には前記商用インタープリタの構文がいずれも使用可能な区間を指定する指示文が含まれ、前記中間コード生成部は、当該指示文により指定された区間は原文通りに中間コードとして生成することが好ましい。
【発明の効果】
【００２６】
上述したように、本発明によるスクリプトに基づくデータ処理システムによれば、通常のファイル又はデータベースのデータセットを順次に処理するためのスクリプトを用いることにより、段階的な分析や複雑な分析のためのデータ処理をより手軽に作成することができ、作成された処理ステップ（スクリプトプログラムなど）に対して可読性をも高めることができるという効果がある。また、順次的なスクリプトを用いることにより、周期的又は非周期的なバッチ作業などをより手軽に作成することができ、作成されたバッチ作業に対する可読性が高くなるため更新などのメンテナンスを行い易い。
【００２７】
また、本発明によるスクリプトに基づくデータ処理システムによれば、データベース又はファイルなどに問い合わせたデータをデータセットのデータタイプとして保存して処理することにより、たとえ異なる種類のデータベースのデータであるとしても一緒に処理して互換性を高めることができるという効果が得られる。
【００２８】
更に、本発明によるスクリプトに基づくデータ処理システムによれば、従来の商用インタープリタを用いてスクリプト構文を定義して処理することにより、スクリプトを解析するための別途のインタープリタを開発しなくてもよいという効果が得られる。
【図面の簡単な説明】
【００２９】
【図１】本発明によるスクリプトに基づくデータ処理システムを行うための全体システムの構成に対するブロック図である。
【図２】本発明の一実施形態によるスクリプト構文の構成に対するブロック図である。
【図３ａ】本発明の一実施形態によるスクリプト構文による指令文を示す例示コードである。
【図３ｂ】本発明の一実施形態によるスクリプト構文による指令文を示す例示コードである。
【図３ｃ】本発明の一実施形態によるスクリプト構文による指令文を示す例示コードである。
【図３ｄ】本発明の一実施形態によるスクリプト構文による指令文を示す例示コードである。
【図３ｅ】本発明の一実施形態によるスクリプト構文による指令文を示す例示コードである。
【図４】本発明の一実施形態によるスクリプト構文によるデータタイプを示す例示コードである。
【図５】本発明の一実施形態によるスクリプト構文によるデータフレーム形式のデータタイプを示す例示コードである。
【図６】本発明の一実施形態によるスクリプトに基づくデータ処理システムの構成に対するブロック図である。
【図７ａ】本発明の一実施形態によるスクリプト処理のためのＤＢ形式のデータベースに保存されたデータである。
【図７ｂ】本発明の一実施形態によるスクリプト処理のためのエクセルファイルのファイル形式で保存されたデータである。
【図８ａ】本発明の一実施形態によるスクリプト構文により作成されたデータ処理のためのスクリプトの例を表示した図である。
【図８ｂ】本発明の一実施形態によるスクリプト構文により作成されたデータ処理のためのスクリプトの例を表示した図である。
【発明を実施するための形態】
【００３０】
以下、添付図面に基づき、本発明の実施のための具体的な内容について説明する。
【００３１】
また、本発明を説明するに当たって、同じ部分に対しては同じ符号を付し、その重複する説明は省略する。
【００３２】
まず、本発明によるスクリプトに基づくデータ処理システムの全体について図１を参照して説明する。
【００３３】
図１に示すように、本発明を行うための全体システムは、データ処理を要請するクライアント２０と、クライアント２０とネットワークにより結ばれてデータ処理に対するサービスを提供するサービスサーバ３０と、スクリプトを解析して解析された作業を行うスクリプトサーバ４０と、データを保存するデータベース６０と、を備える。また、データベース６０から取り出されたデータを一時的に保存するスクリプトキャッシュ５０を更に備える。
【００３４】
クライアント２０は、ユーザ端末１０に設けられるクライアント用プログラムシステムであり、ウェブブラウザを介してユーザインタフェースを有する。すなわち、ユーザは、ウェブブラウザ又はウェブブラウザなどの画面のインタフェースを介して、オンライン上でデータ処理作業を行う。このとき、ユーザ端末１０は、ユーザの指令などを入力されて当該指令を行い、処理結果を画面上に又はウェブブラウザ上に表示する。一方、ユーザ端末１０は、パソコン（ＰＣ）、ノート型パソコン、タブレットＰＣ、ファブレット、ＰＤＡ、スマートフォンなどのコンピューティング機能を有するコンピュータ端末である。ユーザ端末１０及びサービスサーバ３０はネットワークにより結ばれて、ユーザ端末１０上のクライアント２０はオンライン上でデータ処理作業を行う。
【００３５】
また、クライアント２０は、データ要請やデータ更新などのオンライン上で処理する作業をサービスサーバ３０に要請し、その結果をサーバ３０から取り出してウェブブラウザ上に表示する。或いは、処理されたデータをサービスサーバ３０に転送する。特に、クライアント２０が処理しようとする作業は、スクリプトにより構成された作業を含む。
【００３６】
他の実施形態によれば、クライアント２０は、他のサーバであり、スクリプトなどが含まれているデータ処理作業をサービスサーバ３０に要請する。
【００３７】
次いで、サービスサーバ３０は、クライアント２０からデータ処理に対する要請を受信し、当該要請を処理してその結果をクライアント２０に転送するサーバである。すなわち、サービスサーバ３０は、データベース６０からデータを取り出し、自ら処理してクライアント２０に転送するか、或いは、処理されたデータをデータベース６０に更新する。
【００３８】
また、サービスサーバ３０は、クライアント２０から要請された内容（又は作業）中にスクリプトが含まれている場合、スクリプトサーバ４０に当該スクリプト解析及びその実行を要請する。スクリプトは、データ処理に関する内容（又は指令、作業）を含む。すなわち、スクリプトは、データベース６０からデータを取り出したり更新したりするなどの、データベース６０のデータ処理のための指令文を含む。
【００３９】
一方、上述したクライアント２０及びサービスサーバ３０の機能は一例に過ぎず、サーバ及びクライアントの実現技術により種々に具体化される。すなわち、クライアント２０及びサービスサーバ３０は、一つの更新システムであり、その機能が性能に応じて互いに分配される。例えば、クライアント２０は、単にウェブブラウザ機能のみを有しており、全ての機能はサービスサーバ３０において構築される。すなわち、サービスサーバ３０は、データベース６０に対する処理指令やスクリプトを含む指令（又は作業）などを行わなければならず、或いは、このために、スクリプト解析を要請する機能をいずれも有する。
【００４０】
次いで、スクリプトサーバ４０は、データ処理を要請するスクリプトを解析し、解析された内容を処理して結果を戻すサービスを行う。
【００４１】
データ処理のためのスクリプト（又はデータ処理スクリプト）は、予め定められた構文の規則に基づいて作成される。スクリプトの構文は、行うべき作業のオプションを示す作業オプション、アプリケーションプログラムインターフェイス（ＡＰＩ）関数、割当文などで表わされる指令文により構成される。
【００４２】
作業オプションは、作業に様々なオプションがある場合、いかなる作業形態で行うかを示す構文である。例えば、問い合わせたデータセットをスクリプトキャッシュ５０を保存して用いるという指示、指令文の実行有無に対する指示などに関する構文である。
【００４３】
また、アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、通常の関数で表わされる構文であり、データ処理を行う関数として定義される。アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、各データベース又はファイルの種類に応じて当該データセットを取り出したり保存したりし、データセットの結合、フィルタリング、集計などのデータ処理を行う関数である。
【００４４】
具体的には、アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データを処理する機能を定義した関数をライブラリ形式で構成して提供される。すなわち、アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データベース又はファイルからデータを取り出したり保存したり更新したりする機能を有する関数、又は取り出されたデータをスクリプトキャッシュ５０に記録し、記録されたデータを加工する関数、又は統計、データマイニングなどを行うパッケージ、又は外部のライブラリを用いてデータを集計する関数などである。好ましくは、Ｒ（オープンソース統計／データマイニングパッケージ）を用いる。
【００４５】
これらに加えて、変数などにデータを割り当てる割当て構文、定数や変数、データ形式（又はデータタイプ）などを定義する宣言構文、又は作成されたスクリプトに関する説明を記載する注釈構文なども含まれる。
【００４６】
一方、スクリプトサーバ４０は、商用化されたインタープリタを用いて、スクリプトを行う。すなわち、スクリプトサーバ４０は、スクリプトを商用インタープリタが用いる構文で表わす中間コードを生成し、生成された中間コードを前記商用インタープリタに実行させる。
【００４７】
また、スクリプトサーバ４０は、商用インタープリタの構文を用いてスクリプト指令文（又はスクリプトコード）を作成可能なようにして、商用インタープリタの構文により作成されたスクリプトをそのまま中間コードとして生成して、商用インタープリタに実行させる。すなわち、既に定義されたアプリケーションプログラムインターフェイス（ＡＰＩ）を用いて処理し難いデータ処理の要求事項があるときに、パイソンネイティブ（python native）言語など商用インタープリタの構文を用いる。
【００４８】
また、スクリプトサーバ４０は、スクリプトキャッシュ５０を備えて、データベース６０から取り出されたデータセットの全体又は一部を一時的に保存する。スクリプトキャッシュ５０は、スクリプトサーバ４０のメモリ（ＲＡＭなど）上に設けられてキャッシュメモリとして構成されるか、或いは、ハードディスク又はソリッドステートドライブ（ＳＳＤ）ディスクなどにより実現されてキャッシュディスクとして構成される。或いは、全てのデータをディスクに保存し、一部のデータ、すなわち、必要なデータをキャッシュメモリに載せて用いる。
【００４９】
次いで、データベース６０は、データを保存するための通常のデータベース（ＤＢ）又は通常のファイル形式でデータを保存するファイルなどである。ファイル形式としては、テキストファイル、ワードプロセッサファイル、スプレッドシートファイルなどが挙げられる。また、アクセスなどのファイル形式のＤＢファイルも適用される。加えて、一つのファイル形式でデータを保存する様々な形式がいずれも適用される。
【００５０】
ＤＢ形式のデータベース６０は、データを管理するためのデータベース管理システム（ＤＢＭＳ）を備え、データの保存、削除、検索などの作業をクエリを用いて行う。特に、データベース６０は、商用化されたデータベースであり、データを処理するための通常のクエリ機能を用いてデータクエリサービスを行う。
【００５１】
好ましくは、データベース６０は、関係型データベース（ＲＤＢ）として構成される。或いは、データベース６０は、ビッグデータを保存するデータベースである。或いは、データベース６０は、データキューブ、データウェアハウスなどより大量のデータを手軽に処理するためのデータベースである。
【００５２】
次いで、本発明の一実施形態によるデータ処理スクリプトの構文について図２乃至図５を参照してより具体的に説明する。
【００５３】
図２に示すように、本発明によるスクリプト又はスクリプトコードは、スクリプト構文により作成されたプログラムコードである。また、スクリプトは、中間コードとして解析されて、商用インタープリタにより実行される。このため、中間コードは、商用インタープリタにより実行されるプログラムコードであり、商用インタープリタの構文により作成されるコードである。
【００５４】
好ましくは、商用インタープリタは、パイソンインタープリタ（python interpreter）を用い、商用インタープリタの構文は、パイソン構文及びパイソンライブラリを用いる。
【００５５】
一方、スクリプト構文は、商用インタープリタの構文のうちの一部の構文、及び商用インタープリタの構文に含まれていない固有の構文により構成される。図２におけるＢ部分の構文が前者であり、Ａ部分の構文が後者である。
【００５６】
スクリプト固有構文Ａは解析されて、商用インタープリタ構文による中間コードとして新たに作成されて生成される。
【００５７】
スクリプト構文において用いる商用インタープリタ構文Ｂは、データタイプなどである。また、スクリプトを解析するとき、スクリプト構文により許容される商用インタープリタ構文は原文それ自体が中間コードとして生成される。
【００５８】
また、スクリプト構文において許容されない商用インタープリタ構文Ｃは、スクリプトの解析に際して許容されずにエラーとして処理される。
【００５９】
更に、図３ａ〜図３ｅに示すように、データ処理スクリプトは、多数の指令文（又は指令構文、指令コード）により構成される。指令文は、指示文、割当て文、関数呼出文、及び注釈文により構成される。
【００６０】
図３ａに示すように、指示文は自ら作業を行わないが、キャッシュの使用有無など作業オプションを設定したり、コードの流れを制御したりするために用いられる指令文である。好ましくは、特殊文字（＠など）を用いて指示文を区別する。指示文は、スクリプトに固有な指令文であるため、スクリプトの解析に際して指示文に相当する中間コードをいずれも新たに生成する。
【００６１】
また、図３ｂに示すように、割当て文は、変数に定数値や客体を割り当てる指令文である。割当て文の構文は、商用インタープリタの構文と同じであるが、割当て文が表示される位置や形態などに僅かな違いが出る。このため、スクリプトの解析に際して位置などのみを調整しておき、元の割当て文を示す数式はそのまま中間コードとして用いられる。
【００６２】
更に、図３ｃ及び図３ｄに示すように、関数呼出文は、関数を呼び出す指令文である。関数の呼び出しは、図３ｃに示すように、アプリケーションプログラムインターフェイス（ＡＰＩ）関数を呼び出す場合や、図３ｄに示すように、客体のインスタンス関数を呼び出す場合を含む。
【００６３】
アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、別途のライブラリにより構成して、構成されたライブラリを商用インタープリタに参照させて、商用インタープリタが前記ライブラリを参照して当該アプリケーションプログラムインターフェイス（ＡＰＩ）関数を実行するようにする。但し、スクリプトの構文においては、アプリケーションプログラムインターフェイス（ＡＰＩ）関数の引数をより便利に用いるように定義される。このため、スクリプトの解析に際して、アプリケーションプログラムインターフェイス（ＡＰＩ）関数の引数をライブラリの元のアプリケーションプログラムインターフェイス（ＡＰＩ）関数の引数に合うように変換若しくは補完する。
【００６４】
特に、アプリケーションプログラムインターフェイス（ＡＰＩ）関数の引数には、データベースを処理するクエリ文を伝達する引数が含まれる。これにより、ユーザは、通常のクエリ文を用いてデータベースに保存されたデータを参照したり更新したりするなど、データ処理作業を行うことができる。
【００６５】
また、アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、商用インタープリタの構文により作成された関数であり、データセットを処理するための関数である。特に、アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データベース又はファイルから参照したデータセットをデータフレーム形式の変数として取り出したり、データフレーム形式の変数に保存されたデータセットをデータベース又はファイルに保存したりする関数として構成される。更に、アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データフレーム形式の変数に保存されたデータセットを集計したり、少なくとも２つのデータセットを結合（join）したりするなど、データセットの加工又は処理を行う関数により構成される。
【００６６】
更に、アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データベースのデータを取り出すときにはクエリ文を用いてデータセットを取り出す関数である。
【００６７】
ここで、データセットとは、同じフィールドにより構成される多数のレコードにより構成されるデータの集まりのことをいう。すなわち、一つのレコードは、多数のフィールド値により構成されるが、全てのレコードのフィールドは、同じフィールドを有する。
【００６８】
また、客体のインスタンス関数に関する構文は、商用インタープリタの構文をそのまま用いるため、別途の翻訳なしに（解析なしに）原文通りに中間コードとして生成される。
【００６９】
更に、図３ｃの最初の関数呼出文のように、割当て文内に関数呼出文が含まれる。また、図３ｄに示すアプリケーションプログラムインターフェイス（ＡＰＩ）関数の呼出は、関数に引数を含めて行うが、客体のインスタンス関数は、客体（ｓｅｌｆ、ｔｈｉｓ）を引数（argument）に暗黙的に伝達する。
【００７０】
また、図３ｅに示す注釈文は、指令文を説明するためのものであり、実際にいかなる作業も行わない。このため、中間コードに変換されない。
【００７１】
一方、本発明によるスクリプト構文においては、分岐文及び繰り返し文は基本的に許容されない。すなわち、スクリプト構文は分岐文や繰り返し文に対する構文を有さない。具体的に、商用インタープリタ構文において許容される分岐文（ｉｆ構文など）や繰り返し文（ｗｈｉｌｅ、ｆｏｒ構文など）などは許容されない。
【００７２】
商用インタープリタは、分岐文や繰り返し文に対する構文を有する。この場合、たとえスクリプト内に商用インタープリタに許容される分岐文や繰り返し文が記載されているとしても、当該分岐文や繰り返し文を解析して中間コードとして生成しない。すなわち、スクリプト内に記載の分岐文や繰り返し文は、スクリプトの解析に際して中間コードとして生成されないため実行されない。なお、スクリプトの解析に際してエラーとして発生される。
【００７３】
本発明によるデータ処理システムは、主として大容量データを処理するためのものであり、アプリケーションプログラムインターフェイス（ＡＰＩ）関数を用いた作業に際してデータセットの集合処理を行う。このため、繰り返し文や分岐文を用いず、これにより、スクリプト学習性が良く、しかも、使い勝手が良い。なお、スクリプトに対する可読性にも優れているため、メンテナンスを行い易い。
【００７４】
次いで、本発明によるスクリプト構文のデータタイプについて説明する。
【００７５】
図４に示すように、本発明によるスクリプト構文のデータタイプは、文字列（ｓｔｒｉｎｇ）、整数型、実数型（浮動型）、日付型を有する。これらのデータタイプは、商用インタープリタの構文をそのまま用いる。なお、商用インタープリタ（又は商用インタープリタのライブラリ）において定義する全ての客体が用いられる。
【００７６】
また、図５に示すように、スクリプト構文は、データフレーム形式を用いる。データフレーム型は、データベース管理システム（ＤＢＭＳ）などのデータベース６０のテーブル状のカラム（又はフィールド）及びレコードを有する２次元データセットを有する客体を宣言する形式である。データフレーム形式で宣言された変数には、データベース又はファイルから読み込んだデータセットが保存される。
【００７７】
次いで、本発明の一実施形態によるスクリプトに基づくデータ処理システムについて図６を参照してより具体的に説明する。上述したように、データ処理システムは、クライアント２０とネットワークにより結ばれたサーバ４０により実現されるサーバ−クライアントシステムである。しかしながら、以下では、サーバ４０において実現されるシステムとして説明する。
【００７８】
図６に示すように、本発明の一実施形態によるスクリプトに基づくデータ処理システム４０は、スクリプトを受信するスクリプト受信部４１と、スクリプトコードがスクリプト構文に合うか否かを検査し、検査されたスクリプトコードをインタープリタにより実行可能な中間コードとして生成する中間コード生成部４４、データベース６０から取り出したり更新したりしたデータをスクリプトキャッシュ５０に保存するキャッシュ管理部４７と、中間コードを実行するインタープリタ４５と、を備える。
【００７９】
まず、スクリプト受信部４１は、クライアント２０が要請したスクリプトであり、データを処理するための要請を含むスクリプトを受信する。上述したように、スクリプトは、スクリプト構文により作成されたコードであり、指示文、割当て文、関数呼出文などの一連の指令文により構成される。
【００８０】
次いで、中間コード生成部４４は、スクリプトに対してスクリプト構文に合うか否かを判断し、構文によるスクリプトを商用インタープリタの構文による中間コードに変換して生成する。このとき、中間コード生成部４４は、スクリプトに作成された指示文や関数などを解析する。
【００８１】
中間コード生成部４４は、スクリプトに対してスクリプト構文によるコードであるか否かを検査し、スクリプト構文に合わないコードを出力するか、或いは、構文エラーの内容を出力する。このとき、中間コードの変換過程は行われない。
【００８２】
上述したように、スクリプトコードは、商用インタープリタの構文及びスクリプトの固有構文により作成されたコードである。すなわち、スクリプトコードは、商用インタープリタの構文によるコードである。しかしながら、スクリプト構文に含まれる商用インタープリタの構文は、一部の構文である。このため、たとえスクリプトコード（又はコードの一部）が商用インタープリタの構文に基づいて作成されたコードであるとしても、スクリプト構文により許容されない構文である限り、当該コードは中間コードに変換されない。
【００８３】
また、中間コード生成部４４は、スクリプト構文に合うコードであれば、当該スクリプトコードを中間コードに変換して中間コードを生成する。特に、スクリプト固有構文である場合、スクリプト構文に基づいて商用インタープリタの構文に変換する。なお、スクリプトコードが商用インタープリタの構文である場合、元のコードを中間コードとして生成する。
【００８４】
更に、中間コード生成部４４は、指示文の内容を解析して、解析された指示内容に基づいて指令文の流れを制御するか、アプリケーションプログラムインターフェイス（ＡＰＩ）関数を指示による関数に置き換えるか、或いは、関数引数を変換する。例えば、データベースを参照するアプリケーションプログラムインターフェイス（ＡＰＩ）関数に対してキャッシュを用いるようにする指示文があれば、キャッシュを参照するアプリケーションプログラムインターフェイス（ＡＰＩ）関数に置き換えて中間コードを生成する。
【００８５】
次いで、インタープリタ４５は、中間コードを実行してデータ処理作業を行う。インタープリタ４５は商用インタープリタであり、好ましくは、パイソンインタープリタである。
【００８６】
次いで、関数処理部４６は、アプリケーションプログラムインターフェイス（ＡＰＩ）関数を処理する。アプリケーションプログラムインターフェイス（ＡＰＩ）関数はデータセットを処理する関数であり、商用インタープリタにより作成された関数である。アプリケーションプログラムインターフェイス（ＡＰＩ）関数はライブラリなどにより実現されて、商用インタープリタに参照させる。このため、商用インタープリタは、中間コード内にアプリケーションプログラムインターフェイス（ＡＰＩ）関数があれば、ライブラリなどを参照してアプリケーションプログラムインターフェイス（ＡＰＩ）関数を呼び出して実行する。
【００８７】
上述したように、アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データベース又はファイルに保存されたデータセットを取り出したり保存したり、当該データセットを加工処理したりする関数を含む。このとき、データフレーム形式を有する変数を生成し、生成された変数にデータセットを保存して処理する。アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データセットの入力、処理、出力関数などにより構成される。
【００８８】
具体的に、入力アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データベース又はファイルに保存されたデータセットを読み込んで参照して、生成された変数にデータセットを保存する。ファイルの種類やデータベースの種類に応じて異なる読み込みのアプリケーションプログラムインターフェイス（ＡＰＩ）関数が予め生成される。これらがデータベース又はファイルを入力する関数である。また、処理アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、生成された変数（データフレーム形式のデータ変数）に保存されたデータセットをフィルタリングしたり集計したり、他のデータセットと結合したりするなど、データセットを加工する。すなわち、処理アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データセットを処理する関数（アプリケーションプログラムインターフェイス（ＡＰＩ）関数）である。なお、出力アプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データフレーム形式の変数に保存されたデータセットをデータベース又はファイルに保存する関数である。
【００８９】
次いで、キャッシュ管理部４７は、データベース又はファイルから読み込まれたデータをスクリプトキャッシュ５０に一時的に保存する。入力アプリケーションプログラムインターフェイス（ＡＰＩ）関数や出力アプリケーションプログラムインターフェイス（ＡＰＩ）関数がデータベースやファイルに保存されたデータセットを参照するとき、当該データがスクリプトキャッシュ５０に保存されていなければ、スクリプトキャッシュ５０を参照する。
【００９０】
次いで、パッケージ管理部４８は、データセットに対して集計したりフィルタリングしたりする機能を有するパッケージを備え、アプリケーションプログラムインターフェイス（ＡＰＩ）関数の呼出に応じて前記パッケージの集計又はフィルタリング機能を行う。好ましくは、パッケージとしては、オープンソースＲパッケージが用いられる。すなわち、パッケージ管理部４８は、アプリケーションプログラムインターフェイス（ＡＰＩ）関数から要請されるデータセットを前記パッケージに転送し、当該パッケージは集計又はフィルタリングなどの機能を行い、その結果をパッケージ管理部４８に戻す。
【００９１】
このとき、集計フィルタパッケージ及びアプリケーションプログラムインターフェイス（ＡＰＩ）関数は、データフレーム形式の変数を用いてデータセットなどのデータを送受する。
【００９２】
次いで、本発明の一実施形態によるスクリプト構文により作成されたデータ処理のためのスクリプトの例について図７ａ、図７ｂ、図８ａ及び図８ｂを参照して説明する。
【００９３】
図８ａ及び図８ｂは、顧客別の取引回数が３回以上であり、顧客別の取引金額の平均が取引支店別の取引金額の平均に比べて約２０％高い顧客の身上情報を求めるためのスクリプトの例である。また、図７ａ及び図７ｂは、取引明細データ及び顧客の身上データのテーブルを表示したものである。ここで、図７ａの取引明細データは、ＤＢ形式のデータベースに保存されたデータであり、図７ｂの顧客身上データは、エクセルファイルのファイル形式で保存されたデータである。
【００９４】
図８ａ及び図８ｂに示すように、取引データをロードし、顧客別の取引回数、顧客別の取引金額の平均、取引支店別の取引金額の平均を求める。そして、フィルタリングを行う。次いで、結合を行って顧客の身上レコードを取り出す。
【００９５】
以上、本発明者により行われた発明について実施形態を挙げて具体的に説明したが、本発明はこれらの実施形態に何ら限定されるものではなく、その要旨を逸脱しない範囲内において種々に変更可能であるということはいうまでもない。
【００９６】
なお、参考までに、本発明を支援した韓国の国家研究開発事業を表示すると、下記の通りである。
【００９７】
課題の固有番号：１００５３２０４
部処名：産業通商資源部
研究管理専門機関：韓国産業技術評価管理院
研究事業名：産業技術革新事業（グローバル融合ＡＴＣ事業）
研究課題名：５億件のデータを基準として３秒以内に「データ処理及びユーザインタフェースの実現」が可能なペタバイト級非専門家用ビジネスインテリジェンスサービスプラットフォーム技術開発
主観機関：株式会社ＢＩマトリックス
研究期間：２０１５年６月１日〜２０２０年５月３１日 
【符号の説明】
【００９８】
１０：ユーザ端末
２０：クライアント
３０：サービスサーバ
４０：スクリプトサーバ
４１：スクリプト受信部
４２：第１の解析部
４４：中間コード生成部
４５：インタープリタ
４６：関数処理部
４７：キャッシュ管理部
４８：パッケージ管理部
５０：スクリプトキャッシュ
６０：データベース
【図１】
2017120611.tif 000003
【図２】
2017120611.tif 000004
【図３ａ】
2017120611.tif 000005
【図３ｂ】
2017120611.tif 000006
【図３ｃ】
2017120611.tif 000007
【図３ｄ】
2017120611.tif 000008
【図３ｅ】
2017120611.tif 000009
【図４】
2017120611.tif 000010
【図５】
2017120611.tif 000011
【図６】
2017120611.tif 000012
【図７ａ】
2017120611.tif 000013
【図７ｂ】
2017120611.tif 000014
【図８ａ】
2017120611.tif 000015
【図８ｂ】
2017120611.tif 000016