JP7332951B2 - 処理サーバ、処理方法および処理プログラム - Google Patents

処理サーバ、処理方法および処理プログラム Download PDF

Info

Publication number
JP7332951B2
JP7332951B2 JP2021575556A JP2021575556A JP7332951B2 JP 7332951 B2 JP7332951 B2 JP 7332951B2 JP 2021575556 A JP2021575556 A JP 2021575556A JP 2021575556 A JP2021575556 A JP 2021575556A JP 7332951 B2 JP7332951 B2 JP 7332951B2
Authority
JP
Japan
Prior art keywords
data
revision
program
execution
executed
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
JP2021575556A
Other languages
English (en)
Other versions
JPWO2021157059A1 (ja
JPWO2021157059A5 (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2021157059A1 publication Critical patent/JPWO2021157059A1/ja
Publication of JPWO2021157059A5 publication Critical patent/JPWO2021157059A5/ja
Application granted granted Critical
Publication of JP7332951B2 publication Critical patent/JP7332951B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、処理サーバ、処理方法および処理プログラムに関する。
機械学習プログラム等のプログラムは、プログラムコードを改訂しながら実行させる場合があり、プログラムコードとそのリビジョンの管理が必要となる。またプログラムの実行結果を漏れなく記録して、その結果の再現性を確保するために、プログラムの実行時に用いられた実行時データについてもリビジョンの管理が必要となる。
例えば、学習データや学習実行中に生成されたファイル群をバージョン管理する機能がある(非特許文献1)。
"Open-source Version Control System for Machine Learning Projects"、[online]、[令和2年1月27日検索]、インターネット〈URL:https://dvc.org/features〉
しかしながら非特許文献1の機能は、ファイル群のバージョン管理は、人の作業に頼るものであり、ファイル群の管理は保証されない。またファイル群が適切に管理されないので、プログラムの実行結果の再現性が担保されない場合がある。
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、プログラムの実行結果の再現性を担保可能な技術を提供することである。
本発明の一態様の処理サーバは、プログラムのリビジョンと、リビジョンのプログラムを特定するプログラムリビジョンデータと、プログラムに入出力される実行時データのリビジョンと、リビジョンの実行時データを特定する実行時リビジョンデータとを記憶する記憶装置と、実行対象のプログラムのリビジョンが入力されると、記憶装置に実行領域を確保し、確保された実行領域に、実行対象のリビジョンのプログラムを実行するための実行対象データを生成する生成部と、実行領域で実行対象の実行時データを用いて実行対象データを実行する実行部を備える。
本発明の一態様の処理方法は、コンピュータが、プログラムのリビジョンと、リビジョンのプログラムを特定するプログラムリビジョンデータと、プログラムに入出力される実行時データのリビジョンと、リビジョンの実行時データを特定する実行時リビジョンデータと、記憶装置に記憶するステップと、実行対象のプログラムのリビジョンが入力されると、記憶装置に実行領域を確保し、確保された実行領域に、実行対象のリビジョンのプログラムを実行するための実行対象データを生成するステップと、実行領域で実行対象の実行時データを用いて実行対象データを実行するステップを備える。
本発明の一態様は、上記処理サーバとして、コンピュータを機能させる処理プログラムである。
本発明によれば、プログラムの実行結果の再現性を担保可能な技術を提供することができる。
[図1] 図1は、本発明の実施形態に係る処理サーバの機能ブロックを説明する図である。
[図2] 図2は、プログラムリビジョンデータのデータ構造とデータの一例を説明する図である。
[図3] 図3は、実行時リビジョンデータのデータ構造とデータの一例を説明する図である
[図4] 図4は、プログラム実行履歴データのデータ構造とデータの一例を説明する図である。
[図5] 図5は、実行領域データのデータ構造の一例を説明する図である。
[図6] 図6は、本発明の実施形態に係る処理サーバの生成部による生成処理を説明するフローチャートである。
[図7] 図7は、本発明の実施形態に係る処理サーバの実行部による実行処理を説明するフローチャートである。
[図8] 図8は、実行時データの一例を説明する図である。
[図9] 図9は、実行領域データと実行時データの関係の一例を説明する図である。
[図10] 図10は、処理サーバに用いられるコンピュータのハードウエア構成を説明する図である。
以下、図面を参照して、本発明の実施形態を説明する。図面の記載において同一部分には同一符号を付し説明を省略する。
(処理サーバ)
本発明の実施の形態に係る処理サーバ1は、処理サーバ1が実行するプログラムと、そのプログラムが入出力する実行時データを、それぞれリビジョン管理し、プログラムの実行結果の再現性を担保する。
本発明の実施の形態において処理プログラムは、コンピュータを図1に示す各部として機能させるためのプログラムである。一方処理サーバ1によるリビジョン管理の対象となるプログラムは、単にプログラムと表記する。
プログラムは、データの出入力が生じるものであればどのようなものでもよいが、プログラムコードの複数の改変が必要など、いくつかのバージョンが生じるものが好ましい。プログラムに、スクリプトを含んでも良い。本発明の実施の形態においてプログラムは、複数のプログラムの集合であっても良いし、1以上のプログラムと1以上のスクリプトの組み合わせであっても良い。
実行時データは、プログラムに入出力されるデータであれば、どのようなデータでも良い。実行時データは、複数のファイルに分割されても良い。実行時データは、プログラムに入力されるファイル、プログラムが出力するファイル、プログラムが出力してさらに入力されるファイルの各データを含んでも良い。本発明の実施の形態に係る実行時データは、プログラムに入出力されるファイルのデータを、漏れなく含むことが好ましい。
例えばプログラムは、機械学習に用いるプログラムである。本発明の実施の形態に係る処理サーバ1は、機械学習のためのアルゴリズムを改良したプログラムの各リビジョンを管理するとともに、プログラムに入出力されるデータのリビジョンも管理する。プログラムに入出力されるデータは、学習に使用し、プログラムに入力されるデータセットのほか、学習結果として出力されるモデルファイル、メトリックログなどのデータを含む。
他の例のプログラムは、実験データの処理に用いるプログラムである。本発明の実施の形態に係る処理サーバ1は、実験データの処理のためのアルゴリズムを改良したプログラムの各リビジョンを管理するとともに、プログラムに入出力されるデータのリビジョンも管理する。プログラムに入出力されるデータは、プログラムに入力される実験で得られた値のデータセットのほか、実験の分析結果として出力されるデータを含む。
このように本発明の実施の形態に係る処理サーバ1が管理するプログラムおよび実行時データの用途は問わない。
処理サーバ1は、記憶装置10および処理装置20を備える。
記憶装置10は、処理サーバ1の機能を実現するための処理プログラムを記憶するとともに、プログラムおよび実行時データを管理するためのプログラムリビジョンデータ11、実行時リビジョンデータ12、プログラム実行履歴データ13、実行領域データ14a、14bおよび14cを記憶する。
本発明の実施の形態において、プログラムリビジョンデータ11、実行時リビジョンデータ12およびプログラム実行履歴データ13は、後述の管理部21からのアクセスを受け付ける一方、生成部22および実行部23からのアクセス、およびユーザ操作によるアクセスを受け付けないように制御される。また実行領域データ14a、14bおよび14cは、生成部22および実行部23からのアクセスを受け付ける一方、管理部21からのアクセス、およびユーザ操作によるアクセスを受け付けないように制御される。
プログラムリビジョンデータ11は、プログラムのリビジョンと、そのリビジョンのプログラムを特定する。プログラムリビジョンデータ11は、例えば、リビジョンと、そのリビジョンのプログラムのデータとを対応づけて保持する。プログラムリビジョンデータ11は、リビジョンと、そのリビジョンのプログラムのデータが格納されるデータ領域へのリンクとを対応づけても良い。またプログラムリビジョンデータ11は、リビジョンと、それ以前のリビジョンのプログラムとの差分を対応づけても良い。
図2に示すプログラムリビジョンデータ11は、プログラムの種別、プログラムのリビジョンおよびプログラムの特定データを対応づける。図2に示すプログラムリビジョンデータ11は、複数種のプログラムを扱い、プログラムの種別およびプログラムのリビジョンに対して、1つのプログラムが特定される。
実行時リビジョンデータ12は、プログラムに入出力される実行時データのリビジョンと、そのリビジョンの実行時データを特定する。プログラムを実行する度に、新たなリビジョンが付与される。実行時リビジョンデータ12は、その新たなリビジョンに、その新たなリビジョンの実行時データを対応づける。
図3に示す実行時リビジョンデータ12は、実行時データのリビジョン、親リビジョン、子リビジョン、各ファイルの特定データおよびログデータを対応づける。実行時データのリビジョンは、処理サーバ1がプログラムを実行する度に生成される実行時データを特定するリビジョンである。
親リビジョンは、実行時データのリビジョンの派生元となるリビジョンである。図3に示す例において、実行時リビジョンデータ12は、実行時データのリビジョンに、親リビジョンと、親リビジョンの実行時データとの差分のデータを対応づけて保持する。子リビジョンは、実行時データのリビジョンから派生したリビジョンである。
各ファイルの特定データは、実行時データのリビジョンに用いられる各ファイルのデータを特定する。各ファイルの特定データは、例えば、リビジョン毎に、そのリビジョンに属するファイルの識別子とそのファイルのデータを対応づけて保持する。各ファイルの特定データは、各ファイルのデータが格納されるデータ領域へのリンクであっても良いし、親リビジョンのデータとの差分であっても良い。
本発明の実施の形態において各ファイルの特定データは、親リビジョンの特定データとの差分が対応づけられる。図3に示す例においてDataRev1に親リビジョンは設定されていないので、各ファイルの特定データに、FileA、FileBおよびFileCの3つのファイルのデータが対応づけられる。一方、DataRev1を親リビジョンとするDataRev2は、各ファイルの特定データに、FileCのデータが対応づけられる。これは、DataRev1とDataRev2は、FileCに差異はあるものの、FileAおよびFileBに差異がないことを示す。DataRev1を親リビジョンとするDataRev3は、各ファイルの特定データに、FileBのデータが対応づけられる。これは、DataRev1とDataRev3は、FileBに差異はあるものの、FileAおよびFileCに差異がないことを示す。
なお、実行時リビジョンデータ12の各ファイルの特定データとして設定されるデータは、各ファイルのデータが特定されればよく、ファイルの全データであっても良いし、親リビジョン、または親リビジョンの親リビジョンなど親リビジョンを辿ったリビジョンの同一ファイル名のデータとの差分のデータであっても良い。図3に示す例において、DataRev2に対応づけられるFileCのデータは、DataRev2のFileCの全体のデータであっても良いし、DataRev1のFileCとの差分のデータであっても良い。
ログデータは、実行時データに対応するプログラムの実行時のログデータである。ログデータは、例えば、実行時データへのアクセス日時、アクセス元のプログラムの識別子、入力または出力のアクセスの種別、アクセス先のファイルの識別子等を対応づけたデータである。ログデータにより、プログラム実行時のデータの入出力をトラッキングすることが可能になる。
プログラム実行履歴データ13は、図4に示すように、処理サーバ1が実行するコマンド文字列と、そのプログラムのリビジョンおよび実行時データのリビジョンを対応づけたデータである。コマンド文字列は、プログラム種別を含み、プログラム実行時のパラメータ等が設定されても良い。プログラムリビジョンは、コマンド文字列で指定されたプログラム種別のリビジョンを特定する。実行時データのリビジョンは、コマンド文字列で指定されたプログラムを実行する際に用いられる実行時データのリビジョンである。図4の1行目の例は、ProgramAのRev1のプログラムが、DataRev1の実行時データを用いて、実行されたことを示す。プログラム実行履歴データ13は、プログラムの実行が入力された際に、更新される。
実行領域データ14a、14b、および14cは、それぞれ、処理サーバ1の管理対象となるプログラムを実行する実行領域のデータである。実行領域データ14は、処理サーバ1がプログラムを実行する度に、設けられる。実行領域データ14aは、実行対象データ141aおよびダミーデータ142aを備える。実行領域データ14aと同様に、実行領域データ14bは、実行対象データ141bおよびダミーデータ142bを備え、実行領域データ14cは、実行対象データ141cおよびダミーデータ142cを備える。図1に示す例では、3つのプログラムが並行して実行していることを示す。
本発明の実施の形態において実行領域データ14a、14b、および14cを特に区別しない場合、単に実行領域データ14と記載する場合がある。また実行領域データ14は、実行対象データ141およびダミーデータ142を備える。
実行領域データ14は、プログラムが実行される際、そのプログラムの実行に用いられるデータを記憶するために記憶装置10に割り当てられたデータ領域において記憶されたデータである。実行領域データ14は、処理サーバ1が記憶装置10に用いる可能性のある記憶媒体に形成される。記憶装置10に用いる可能性のある記憶媒体は、具体的には、ハードディスク、SSDのみならず、RAM等の各種記憶媒体を含む。
実行対象データ141は、処理装置20に実行させるプログラムのデータである。本発明の実施の形態において実行対象データ141は、実行対象のリビジョンのプログラムの複製である場合について説明する。実行対象データ141は、プログラムリビジョンデータ11によって特定されるプログラムのデータと同一であるが、実行対象データ141は、プログラムリビジョンデータ11によって特定されるプログラムのデータとは異なる記憶領域に記憶される。実行対象データ141は、プログラムのデータの複製であっても良いし、プログラムコードからコンパイルされたデータの複製であっても良い。
ダミーデータ142は、プログラムの実行時データの各ファイルについて、ダミーの値が設定されたデータを含む。ダミー値は、意味の無い値であっても良いし、null値であっても良い。
図5は、図4に示すプログラム実行時の実行領域データ14を示す。図4のプログラム実行履歴データ13に示すように、プログラムとしてProgramAのRev1が指定される場合、実行領域データ14は、ProgramAのRev1のデータであるProgramRev1複製データ141を有する。またProgramAのRev1が、FileA、FileBおよびFileCを入出力する場合、実行領域データ14のダミーデータ142は、FileA、FileBおよびFileCのそれぞれのダミーデータであるFileAダミーデータ、FileBダミーデータおよびFileCダミーデータを含む。
なお、所定のリビジョンの実行時データとして、図3に示すように親リビジョンとの差分のデータを保持する場合でも、ダミーデータ142には、プログラムが入出力する各ファイルのデータが設定される。DataRev1を親リビジョンとして有するDataRev2、DataRev3およびDataRev4の実行時データでプログラムを実行する際のそれぞれのダミーデータ142も、DataRev1と同様に、それぞれダミーの値が設定されたFileA、FileBおよびFileCのデータを含む。
処理装置20は、管理部21、生成部22および実行部23を備える。
管理部21は、プログラムリビジョンデータ11、実行時リビジョンデータ12およびプログラム実行履歴データ13を管理する。管理部21は、例えば入力装置から入力された指示に従って、プログラムリビジョンデータ11、実行時リビジョンデータ12またはプログラム実行履歴データ13にアクセスして、リビジョンの参照、新規作成、分岐、統合、データ更新等を行う。
管理部21は、実行対象のプログラムを特定するデータが入力され、入力されたデータから特定されるプログラムがプログラムリビジョンデータ11で特定されない場合、実行対象のプログラムを特定するデータに新たなリビジョンを対応づけて、プログラムリビジョンデータ11を更新する。
例えば記憶装置10の作業領域でプログラムの改変を行い、その改変後のプログラムを実行する指示が入力されると、管理部21が、作業領域のプログラムをプログラムリビジョンデータ11に登録する。管理部21は、作業領域のプログラムのプログラム種別と、新たに採番したリビジョンと、作業領域のプログラムを特定するデータとを対応づけたレコードを、プログラムリビジョンデータ11に格納する。
このように作業領域のプログラムの実行時に、管理部21がそのプログラムのリビジョン管理を行うことにより、プログラムの各リビジョンを適切に管理することができる。
また本発明の実施の形態において管理部21は、後述の生成部22または実行部23からのリクエストに基づいて、プログラムリビジョンデータ11、実行時リビジョンデータ12またはプログラム実行履歴データ13へのアクセスを中継する。他の実施の形態として、生成部22および実行部23それぞれが、プログラムリビジョンデータ11、実行時リビジョンデータ12またはプログラム実行履歴データ13にアクセスしても良い。
生成部22は、プログラムを実行するコマンドが入力されると、そのコマンドを実行するための種々の準備を行う。
まず、生成部22は、実行対象のプログラムのリビジョンが入力されると、記憶装置10に、入力されたリビジョンのプログラムを実行するための実行領域を確保する。本発明の実施の形態において生成部22は、確保された実行領域に、実行対象のプログラムのリビジョンの複製を生成する。本発明の実施の形態において、実行されるプログラムのデータは、プログラムリビジョンデータ11で直接特定されるプログラムのデータとは異なる記憶領域のデータになり、実行対象のプログラム毎に、実行領域が確保される。これにより、複数のプログラムは、互いに干渉することなく、並行して実行することができる。
生成部22は、入力されたコマンド文字列に対応するプログラムを実行するための実行領域を記憶装置10に確保する。確保された実行領域が、実行領域データ14である。生成部22は、実行対象のプログラムのデータの複製を、実行領域データ14の実行対象データ141に設定する。具体的に生成部22は、実行対象のプログラムデータを、管理部21にリクエストし、管理部21は、プログラムリビジョンデータ11から、実行対象のプログラムデータの複製を生成部22に返す。生成部22は、管理部21から取得した実行対象のプログラムデータの複製を、実行対象データ141として実行領域に記憶する。
また生成部22は、実行領域にさらに、実行対象の実行時データに対応するダミーデータ142を生成する。ダミーデータ142は、実行領域データ14に設定され、プログラムが入出力する各ファイルについてダミー値が設定されたデータである。
生成部22は、入力されたコマンドを実行するための新たな実行時データのリビジョンについて、実行時リビジョンデータ12を更新する。このとき実行時リビジョンデータ12の親リビジョンには、入力されたコマンド文字列から特定される既存の実行時データのリビジョンが設定される。具体的には生成部22は、入力されたコマンドから特定される既存の実行時でータのリビジョンを親リビジョンとして指定する新たな実行時データのリビジョンを生成するリクエストを、管理部21に入力する。管理部21は、生成部22からの指示に従って新たな実行時リビジョンを生成する。またこのとき生成部22は、管理部21から、新たな実行時リビジョンに含まれるファイル名を取得する。生成部22は、取得した各ファイル名にダミー値を対応づけたダミーデータ142を、実行領域に記憶する。
プログラムの実行領域にダミーファイルを設定することにより、プログラムの実行時において、ダミーファイルへのアクセスがフックされ、プログラムを、実行時リビジョンデータ12の実行対象の実行時データにアクセスさせることができる。これにより、本発明の実施の形態に係るリビジョン管理を用いるための特別な仕組みをプログラムに入れなくても良い。また既存のプログラムに、本発明の実施の形態に係るリビジョン管理を容易に適用することもできる。
生成部22は、プログラム実行のコマンド文字列が入力されると、そのコマンド文字列について、プログラム実行履歴データ13を更新する。ここでコマンド文字列は、少なくとも実行するプログラムの種類を特定する。またコマンド文字列または他の入力によって、プログラムのリビジョン、およびプログラムに入力する実行時データのリビジョンが特定される。生成部22は、入力されたコマンド文字列と、プログラムのリビジョンと、新たな実行時データのリビジョンを対応づけたレコードを、プログラム実行履歴データ13に含ませる。この新たな実行時データのリビジョンは、コマンド文字列で特定された実行時データのリビジョンを親とする実行時データのリビジョンである。
また生成部22は、実行対象のプログラムを特定するデータが入力され、入力されたデータから特定されるプログラムがプログラムリビジョンデータで特定されない場合、実行対象のプログラムに、新規のリビジョンを対応づけて、プログラムリビジョンデータ11を更新するよう、管理部21にリクエストする。生成部22は、実行対象のプログラムがプログラムリビジョンデータ11に登録された後、管理部21からそのプログラムの複製を取得して、実行対象データ141として実行領域に記憶する。
図6を参照して、生成部22による生成処理を説明する。
まずステップS11において、プログラムの実行コマンドの入力を待機する。実行コマンドが入力されると、ステップS12において生成部22は、実行対象のプログラムが、プログラムリビジョンデータ11で既定されているか否かを判定する。既定されている場合、ステップS14に進む。
既定されていない場合、ステップS13において生成部22は、プログラムリビジョンデータ11を更新するリクエストを、管理部21に入力する。管理部21は、実行対象のプログラムに、新規のリビジョンを対応づけたレコードを生成し、生成したレコードを、プログラムリビジョンデータ11に挿入する。プログラムリビジョンデータ11が更新されると、ステップS14に進む。
ステップS14において生成部22は、新規のリビジョンを採番して、新規の実行時データに対応づけて、実行時リビジョンデータ12を更新するリクエストを、管理部21に入力する。新規の実行時データは、例えばnullが設定されたデータなど、空のデータである。実行時リビジョンデータ12において、この新規の実行時データの親リビジョンとして、ステップS11で入力されたコマンド等から指定された実行時データのリビジョンが設定される。
ステップS15において生成部22は、ステップS11で入力されたコマンドを実行するための実行領域を、記憶装置10に確保する。ステップS16において生成部22は、ステップS15で確保した実行領域に、実行対象のプログラムデータと、ダミーの実行時データをコピーする。
ステップS16において生成部22は、プログラム実行履歴データ13に、実行対象のプログラムのリビジョンと、ステップS14で新規作成した実行時データのリビジョンを登録するリクエストを、管理部21に入力する。
なお図6に示す処理順序は一例であって、これに限るものではない。
実行部23は、実行領域でプログラムの複製を実行する。実行部23は、生成部22によって確保された実行領域において、複製されたプログラムを実行する。
実行部23は、複製されたプログラムの実行において、ダミーデータへのアクセスがフックされると、実行時リビジョンデータ12の実行対象のリビジョンの実行時データにアクセスするフック部24を備える。フック部24がダミーデータへのアクセスをフックすると、実行部23は、ダミーデータ142のデータを入出力するのではなく、実行時リビジョンデータ12の実行対象のリビジョンの実行時データを入出力する。より具体的には、フック部24は、ダミーデータへのアクセスをフックすると、管理部21を介して、フックされたファイル名と同名のファイルであって、実行時リビジョンデータ12の実行対象のリビジョンのファイルにアクセスさせる。
実行時リビジョンデータ12において、実行対象の実行時データとして、親リビジョンとの差分のデータを対応づける場合、フック部24は、管理部21を介して、ダミーデータ142へのアクセスが入力で実行対象のリビジョンの実行時データに入力対象のファイルが含まれるか否かを判定する。実行対象のリビジョンの実行時データに入力対象のファイルが含まれない場合、フック部24は、管理部21を介して、実行対象のリビジョンの親リビジョンの実行時データを参照する。親リビジョンの実行時データに入力対象のファイルがない場合、フック部24は、管理部21を介して、親リビジョンのさらに親を順次辿って、所望のファイルを探索する。
また実行部23は、実行時データへのアクセス等の処理経過をまとめたログデータを生成する。実行部23は、生成したログデータを、実行時リビジョンデータ12の実行対象の実行時データのリビジョンに対応づけて保管するリクエストを、管理部21に入力する。管理部21は、実行部23から取得したログデータを、実行時リビジョンデータ12で保管する。
図7を参照して、実行部23による実行処理を説明する。
ステップS51において実行部23は、プログラムを実行し、ステップS52においてイベントが発生すると、そのイベントの種別によって処理を振り分ける。イベントがプログラムの終了の場合、そのまま処理を終了する。イベントが、ファイルへのアクセスがフックの場合、ステップS53に進む。ステップS53において実行部23は、ファイルへのアクセス種別によって処理を振り分ける。
ファイルへのアクセス種別が入力の場合、ステップS54において実行部23は、管理部21を介して実行時リビジョンデータ12を参照して、実行対象のリビジョンに、入力対象のファイルがあるか否かを判定する。ファイルがある場合、ステップS55において実行部23は、管理部21を介して実行時リビジョンデータ12の実行対象のリビジョンの実行時データを参照して、入力対象のファイルを、プログラムに入力する。
実行対象のリビジョンに、入力対象のファイルがない場合、ステップS56において実行部23は、管理部21を介して、実行時リビジョンデータ12の実行対象のリビジョンの親リビジョンを特定し、親リビジョンの実行時データを参照して、入力対象のファイルを、プログラムに入力する。なお親リビジョンの実行時ファイルに入力対象のファイルがない場合、さらにその親リビジョンの実行時ファイルを参照する。
ファイルへのアクセス種別が出力の場合、ステップS57において実行部23は、管理部21を介して、出力対象のファイルを、実行時リビジョンデータ12の実行対象のリビジョンの実行時データとして記憶する。
ステップS55ないしステップS57のいずれかの処理が終了すると、ステップS58において実行部23は、ステップS55ないしステップS57のいずれかの処理を、ログデータに記録する。ログデータに記録した後、ステップS51に戻り、プログラムの実行を続ける。
なお図7に示す処理順序は一例であって、これに限るものではない。
図8を参照して、プログラム実行時の実行時リビジョンデータ12の実行時データを説明する。ここでは、実行対象の実行時データのリビジョンが、DataRev4である場合を示す。プログラムの実行開始時において、DataRev4は、図8(a)に示すように、ファイルのデータを何ら含まない。また、図3に示すように、DataRev4の親リビジョンはDataRev2で、DataRev2の親リビジョンはDataRev1である。また、DataRev1は、図8(b)に示すように、FileA、FileBおよびFileCのデータを含む。DataRev2は、図8(c)に示すように、FileCのデータを含む。
図8(a)ないし(c)に示す状況で、FileAまたはFileBのダミーデータのプログラムへの入力(参照)がフックされると、実行部23は、DataRev1のデータをプログラムに入力する。FileCのダミーデータのプログラムへの入力(参照)がフックされると、実行部23は、DataRev2のデータをプログラムに入力する。またFileBへの出力(更新)がフックされると、実行部23は、更新後のFileBのデータを、実行時リビジョンデータ12のDataRev4に対応づけて記憶する。なおその後にFileBのダミーデータのプログラムへの入力がフックされると、実行部23は、DataRev4のFileBのデータをプログラムに入力する。
図9を参照して、実行領域データ14と実行時リビジョンデータ12との関係を説明する。図9に示す例は、実行領域データ14aと実行領域データ14bの各実行領域で、同時にプログラムを実行する場合を説明する。実行領域データ14aにおいて、DataRev1の実行時データを用いて、ProgramARev1のプログラムの複製が実行される。実行領域データ14bにおいて、DataRev2の実行時データを用いて、ProgramARev2のプログラムの複製が実行される。またProgramARev1およびProgramARev2はともに、FileAおよびFileBのデータを参照し、FileCのデータを出力する。またDataRev1は、DataRev2の親リビジョンである。
このような状況において、実行領域データ14aと実行領域データ14bはともに、FileAダミーデータ、FileBダミーデータおよびFileCダミーデータを含む。
実行領域データ14aにおいてProgramARev1の実行中、ProgramARev1がFileAのデータを入力するためにFileAダミーデータにアクセスする。このときフック部24は、FileAダミーデータへのアクセスを検知し、実行部23は、実行時リビジョンデータ12のDataRev1のFileAのデータを、ProgramRev1に入力する。またProgramARev1の実行中、ProgramARev1がFileCのデータを出力するためにFileCダミーデータにアクセスする。このときフック部24は、FileCダミーデータへのアクセスを検知し、実行部23は、ProgramARev1が出力したFileCのデータを、実行時リビジョンデータ12のDataRev1の実行時データとして記憶する。
実行領域データ14bにおいてProgramARev2の実行中、ProgramARev2がFileAのデータを入力するためにFileAダミーデータにアクセスする。このときフック部24は、FileAダミーデータへのアクセスを検知し、実行部23は、実行時リビジョンデータ12のDataRev2にFileAのデータがないので、DataRev2の親リビジョンであるDataRev1のFileAのデータを、ProgramRev2に入力する。またProgramARev2の実行中、ProgramARev2がFileCのデータを出力するためにFileCダミーデータにアクセスする。このときフック部24は、FileCダミーデータへのアクセスを検知し、実行部23は、ProgramARev2が出力したFileCのデータを、実行時リビジョンデータ12のDataRev2の実行時データとして記憶する。
このように本発明の実施の形態において処理サーバ1は、プログラムを実行する度に、新たな実行時データを生成し、プログラムは、対応する実行時データを参照または更新するので、各実行時データのリビジョンは適切に管理される。
本発明の実施の形態において、プログラムがリビジョン管理されるとともに、プログラムの実行時に、処理サーバ1が新たなリビジョンに対応する実行時データを定義するので、実行したプログラムと、そのプログラムの実行時の実行時データをともに、リビジョンで特定することができる。このリビジョン管理において人の作業を介さないので、処理サーバは、適切にリビジョンを管理し、プログラムの実行結果の再現性を担保することができる。
また実行されるコマンド毎に、実行環境を割り当て、その実行環境に複製されたプログラムが実行するので、複数のプログラムを並行に実行しても、互いに干渉することがない。またプログラムが入出力する実行時データは、プログラムの実行毎に生成されるので、複数のプログラムを並行に実行しても、各プログラムの実行時データは、互いに干渉することなく。個別に管理される。これにより、複数のプログラムを実行する際、プログラムまたは実行時データが、不用意に変更されることがなく、プログラムの冪等性を保証することができる。
また実行環境において、プログラムから実行時データへのアクセスを検知するダミーデータを設けることにより、処理サーバ1のフック部24がダミーデータへのアクセスを検知し、プログラムに代わって、実行部23(または管理部21)が実行時データにアクセスする。これにより、特定のリビジョンの実行時データにアクセスするための改変をプログラムに加えることなく、実行時データのリビジョンを適切に管理することができる。
フック部24がダミーデータへのアクセスを検知する際、実行部23がログを記録することにより、実行時データへのアクセスを追跡することが可能になる。
さらに、本発明の実施の形態において実行時データは、派生元の親リビジョンの実行時データとの差分を特定するので、実行時データの記憶に必要なデータ容量を抑制することができる。
(変形例)
本発明の実施の形態において実行対象データ141は、実行対象のリビジョンのプログラムの複製であったが、変形例において実行対象データ141は、実行対象のリビジョンのプログラムダミーデータである。プログラムダミーデータは、実行対象のリビジョンのプログラムに、ダミーの値が設定されたデータを含む。ダミー値は、意味の無い値であっても良いし、null値であっても良い。複数のプログラム等から構成されるプログラム群が実行対象の場合、実行対象データ141は、各プログラムのファイル名に対してダミー値が設定されたデータを含む。
実行部23のフック部24は、プログラムのダミーデータの実行をフックされると、プログラムリビジョンデータの実行対象のリビジョンのプログラムを実行する。フック部24がプログラムダミーデータへのアクセスをフックすると、実行部23は、プログラムダミーデータを実行するのではなく、プログラムリビジョンデータ11の実行対象のプログラムを実行する。より具体的には、フック部24は、プログラムダミーデータへのアクセスをフックすると、管理部21を介して、フックされたプログラムと同名のファイルであって、プログラムリビジョンデータ11の実行対象のリビジョンのファイルにアクセスさせる。
プログラムリビジョンデータ11は、実行時リビジョンデータ12と同様に、派生元のリビジョンを親リビジョンとして特定し、親リビジョンとの差分を保持するようにしても良い。また、実行対象のプログラム群が、スクリプト等の他のプログラムを書き換える場合、実行時リビジョンデータ12と同様に、プログラムの実行時に新たなリビジョンを採番しても良い。実行部23は、コマンド文字列から特定された実行対象のプログラムのリビジョンを親リビジョンとする新たなリビジョンを生成するリクエストを管理部21に入力する。実行部23は、プログラムの書き換えが発生すると、書き換えられたプログラムを新たなリビジョンに対応づけて保持するリクエストを管理部21に入力する。
このように実行領域に保持する実行対象データ141が、プログラムダミーデータである場合、プログラムが変更される場合でも、プログラムの実行時に新たなリビジョンを採番して、変更前後のプログラムをプログラムリビジョンデータ11に保存する。処理サーバ1は、プログラムリビジョンデータ11および実行時リビジョンデータ12において実行対象となる各プログラムおよび実行時データを管理することにより、プログラムの冪等性およびプログラムの実行結果の再現性を担保することができる。
上記説明した本実施形態の処理サーバ1は、例えば、CPU(Central Processing Unit、プロセッサ)901と、メモリ902と、ストレージ903(HDD:Hard Disk Drive、SSD:Solid State Drive)と、通信装置904と、入力装置905と、出力装置906とを備える汎用的なコンピュータシステムが用いられる。CPU901は、処理装置20である。メモリ902およびストレージ903は、記憶装置10である。このコンピュータシステムにおいて、CPU901がメモリ902上にロードされた所定のプログラムを実行することにより、処理サーバ1の各機能が実現される。
なお、処理サーバ1は、1つのコンピュータで実装されてもよく、あるいは複数のコンピュータで実装されても良い。また処理サーバ1は、コンピュータに実装される仮想マシンであっても良い。
処理サーバ1の処理プログラムは、HDD、SSD、USB(Universal Serial Bus)メモリ、CD (Compact Disc)、DVD (Digital Versatile Disc)などのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
なお、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
1 処理サーバ
10 記憶装置
11 プログラムリビジョンデータ
12 実行時リビジョンデータ
13 プログラム実行履歴データ
14 実行領域データ
20 処理装置
21 管理部
22 生成部
23 実行部
141 実行対象データ
142 ダミーデータ
901 CPU
902 メモリ
903 ストレージ
904 通信装置
905 入力装置
906 出力装置

Claims (8)

  1. プログラムのリビジョンと、前記リビジョンのプログラムを特定するプログラムリビジョンデータと、
    前記プログラムに入出力される実行時データのリビジョンと、前記リビジョンの実行時データを特定する実行時リビジョンデータとを記憶する記憶装置と、
    実行対象のプログラムのリビジョンが入力されると、前記記憶装置に実行領域を確保し、確保された実行領域に、実行対象のリビジョンのプログラムを実行するための実行対象データを生成する生成部と、
    前記実行領域で、実行対象の実行時データを用いて前記実行対象データを実行する実行部
    を備える処理サーバ。
  2. 前記実行対象データは、実行対象のリビジョンのプログラムの複製であって、
    前記実行部は、プログラムの複製を実行する
    請求項1に記載の処理サーバ。
  3. 前記実行対象データは、実行対象のリビジョンのプログラムのプログラムダミーデータであって、
    前記実行部は、前記プログラムのダミーデータの実行がフックされると、前記プログラムリビジョンデータの実行対象のリビジョンのプログラムを実行する
    請求項1に記載の処理サーバ。
  4. 前記生成部は、前記実行領域にさらに、実行対象の実行時データに対応するダミーデータを生成し、
    前記実行部は、前記実行対象データの実行において、前記ダミーデータへのアクセスがフックされると、前記実行時リビジョンデータの実行対象のリビジョンの実行時データにアクセスするフック部を備える
    請求項1ないし3のいずれか1項に記載の処理サーバ。
  5. 前記実行時リビジョンデータは、実行時データのリビジョンに、親リビジョンと、親リビジョンの実行時データとの差分のデータを対応づけて保持し、
    前記フック部は、前記ダミーデータへのアクセスが入力で前記実行対象のリビジョンの実行時データに入力対象のファイルが含まれない場合、前記実行対象のリビジョンの親リビジョンの実行時データを参照する
    請求項4に記載の処理サーバ。
  6. 実行対象のプログラムを特定するデータが入力され、入力されたデータから特定されるプログラムが前記プログラムリビジョンデータで特定されない場合、実行対象のプログラムを特定するデータに新たなリビジョンを対応づけて、前記プログラムリビジョンデータを更新する管理部
    をさらに備える請求項1ないし5のいずれか1項に記載の処理サーバ。
  7. コンピュータが、
    プログラムのリビジョンと、前記リビジョンのプログラムを特定するプログラムリビジョンデータと、
    前記プログラムに入出力される実行時データのリビジョンと、前記リビジョンの実行時データを特定する実行時リビジョンデータとを、記憶装置に記憶するステップと、
    実行対象のプログラムのリビジョンが入力されると、前記記憶装置に実行領域を確保し、確保された実行領域に、実行対象のリビジョンのプログラムを実行するための実行対象データを生成するステップと、
    前記実行領域で、実行対象の実行時データを用いて前記実行対象データを実行するステップ
    を備える処理方法。
  8. コンピュータを、請求項1ないし請求項6のいずれか1項に記載の処理サーバとして機能させるための処理プログラム。
JP2021575556A 2020-02-07 2020-02-07 処理サーバ、処理方法および処理プログラム Active JP7332951B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/004853 WO2021157059A1 (ja) 2020-02-07 2020-02-07 処理サーバ、処理方法および処理プログラム

Publications (3)

Publication Number Publication Date
JPWO2021157059A1 JPWO2021157059A1 (ja) 2021-08-12
JPWO2021157059A5 JPWO2021157059A5 (ja) 2022-08-31
JP7332951B2 true JP7332951B2 (ja) 2023-08-24

Family

ID=77199484

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021575556A Active JP7332951B2 (ja) 2020-02-07 2020-02-07 処理サーバ、処理方法および処理プログラム

Country Status (3)

Country Link
US (1) US20230054948A1 (ja)
JP (1) JP7332951B2 (ja)
WO (1) WO2021157059A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190056931A1 (en) 2017-08-21 2019-02-21 Royal Bank Of Canada System and method for reproducible machine learning

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10379843B2 (en) * 2014-12-18 2019-08-13 Rubrik, Inc. Container based application reification
US9772930B2 (en) * 2015-06-22 2017-09-26 Adobe Systems Incorporated Techniques for evaluating applications through use of an auxiliary application
US10303464B1 (en) * 2016-12-29 2019-05-28 EMC IP Holding Company LLC Automated code testing with traversal of code version and data version repositories
US10824541B1 (en) * 2018-10-18 2020-11-03 State Farm Mutual Automobile Insurance Company System and method for test data fabrication
US10606585B1 (en) * 2019-11-12 2020-03-31 Capital One Services, Llc Computer-based systems configured for automated roll-forward of software package versions and methods of use thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190056931A1 (en) 2017-08-21 2019-02-21 Royal Bank Of Canada System and method for reproducible machine learning

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
@meow_noisy,機械学習プロジェクトのデータバージョン管理ツール『DVC』の「Get Started」のサブノート,Qiita [online],2019年09月16日,[検索日 2020.03.24], インターネット:<URL: https://qiita.com/meow_noisy/items/a644547930e6f2dea12d>
横山重俊 ほか,Overlay Cloudで構成するインタークラウド環境,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2015年06月05日,Vol.115, No.72,pp.1-6(SC2015-1),ISSN:0913-5685

Also Published As

Publication number Publication date
WO2021157059A1 (ja) 2021-08-12
JPWO2021157059A1 (ja) 2021-08-12
US20230054948A1 (en) 2023-02-23

Similar Documents

Publication Publication Date Title
US9632769B2 (en) Software build optimization
KR101213884B1 (ko) 런타임 타입 추론을 통한 효율적인 데이터 액세스
AU2011323773B2 (en) Managing data set objects in a dataflow graph that represents a computer program
JP4592814B2 (ja) 情報処理装置
US7836106B2 (en) Method, apparatus and computer program product for change management in a data processing environment
US8396846B2 (en) Database trigger modification system and method
JP5644777B2 (ja) ファイル群整合性検証システム、ファイル群整合性検証方法およびファイル群整合性検証用プログラム
EP3243134A1 (en) Multi-tenant upgrading
JP2020119348A (ja) 解析プログラム、解析方法および解析装置
WO2023015802A1 (zh) 一种多操作系统设备的差分升级方法
TWI493368B (zh) 自動產生查詢歷程
US20140026118A1 (en) Software refactoring
JP2009059351A (ja) コンピュータソースコードに対して行われる操作を記録するためのシステム、方法、及びコンピュータプログラム製品
JP7332951B2 (ja) 処理サーバ、処理方法および処理プログラム
US20230006814A1 (en) Method and apparatus for implementing changes to a file system that is emulated with an object storage system
US11256602B2 (en) Source code file retrieval
US8108835B2 (en) Method and system for enforcing version control
JP2006146907A (ja) 電子ファイルシステムにおけるリストおよびその他の項目の管理
KR102457153B1 (ko) 프로그램에 대한 중간 표현을 관리하는 방법 및 시스템
US11424982B2 (en) Remediation of a system to new desired state using configuration dependency graph
JP2010218157A (ja) ソフトウェア資産の分析システム及び分析方法
WO2023276212A1 (ja) ソフトウェア部品更新システム及びソフトウェア部品更新方法
JP2002082811A (ja) コンパイル方法および記録媒体
JP2018005822A (ja) 仮想データベースシステム管理装置、管理方法及び管理プログラム
JP6888336B2 (ja) スタブ生成装置、方法、及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220705

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220705

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: 20230711

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230724

R150 Certificate of patent or registration of utility model

Ref document number: 7332951

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150