[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP5730386B2 - 計算機システム及び並列分散処理方法 - Google Patents

計算機システム及び並列分散処理方法 Download PDF

Info

Publication number
JP5730386B2
JP5730386B2 JP2013508696A JP2013508696A JP5730386B2 JP 5730386 B2 JP5730386 B2 JP 5730386B2 JP 2013508696 A JP2013508696 A JP 2013508696A JP 2013508696 A JP2013508696 A JP 2013508696A JP 5730386 B2 JP5730386 B2 JP 5730386B2
Authority
JP
Japan
Prior art keywords
record
server
database
job
divided
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.)
Expired - Fee Related
Application number
JP2013508696A
Other languages
English (en)
Other versions
JPWO2012137347A1 (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2012137347A1 publication Critical patent/JPWO2012137347A1/ja
Application granted granted Critical
Publication of JP5730386B2 publication Critical patent/JP5730386B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、計算機システムに関し、特に、データベースの入出力を伴うバッチジョブの並列分散処理を実行する計算機システムに関する。
大量のデータを処理するバッチジョブ(バッチ処理)が動作する計算機システムにおいて、バッチジョブの高速化に関する各種技術が知られている(特許文献1、2参照)。
特許文献1には、処理対象データのデータ量に応じて、処理対象データを複数の分割データに分割し、バッチジョブを複数の分割ジョブに分割し、各分割ジョブに各分割データを割り当てて、多重走行させるジョブの並列分散処理方法が開示されている。
特許文献2には、ジョブの分割による並列分散処理を実行する際、利用可能なリソース群に対して分割ジョブを最適に割り当てることによって、各分割ジョブの処理時間を均等化し、ジョブの実行を高速化する方法が開示されている。
特開2000−148451号公報 特開2007−264794号公報
ところで、上記バッチジョブには、データベースへの大量のデータの入出力を伴うジョブも存在する。例えば、データベースに格納されたデータを抽出して、抽出されたデータの加工・集計・帳票作成などを実行するジョブである。また例えば、データベースにデータを格納する前に、格納すべきデータの重複チェックや加工を実行するジョブなどである。
しかしながら、このようなデータベースへのデータの入出力を伴うジョブは、上記特許文献1や特許文献2に開示された手法では、十分に高速化できないという問題があった。これは、DBサーバへのアクセス競合が発生するためである。DBサーバとは、データベースへのデータの入出力を実行する計算機である。
すなわち、バッチジョブとデータベースへのデータの入出力処理の負荷比や、障害対応を考慮して、バッチジョブを実行するジョブ実行サーバとDBサーバの関係を固定化せずに、且つ、両サーバを異なる個数設けた場合、DBサーバへのアクセス競合や特定のDBサーバへの処理の集中が発生し、システム性能が低下する。また、入力されるデータがデータベースへ入力されるデータであるため、最適分割数の判断や分割後の各データの平準化が困難である。
なお、DBサーバへのアクセス競合を回避する方法として、例えば、地域や複数の店舗等の集合を論理単位として、DBサーバ及びジョブ実行サーバを分離するパーティショニングと呼ばれる手法がある。このパーティショニング手法では、DBサーバ及びジョブ実行サーバの関係を1対1に固定し、両サーバを同じ個数設ける。これにより、複数のジョブ実行サーバから同一のDBサーバへのアクセスの発生、すなわちアクセス競合を回避する。
しかしながら、DBサーバ又はジョブ実行サーバに障害が発生し、且つ、予備サーバが存在しない場合、DBサーバとジョブ実行サーバの1対1の関係が失われ、特定のDBサーバへのアクセス競合が発生してしまう。また、予備サーバを用意する場合、予備サーバのコストがかかってしまう。また、パーティション毎のデータ量のばらつきが大きい場合、パーティション間のデータ移動が困難であるので、特定のジョブ実行サーバの負荷が増加してしまう。また、バッチジョブの負荷とデータベースへのデータの入出力処理の負荷のバランスが取れていない場合は、負荷の高いジョブ実行サーバ又はDBサーバがボトルネックとなってしまう。
本発明は、上述した課題を考慮したものであって、データベース入出力を伴うジョブの並列分散処理において、データベースへのデータの入出力を実行するDBサーバへのアクセス競合を回避するとともに、ジョブを高速実行することが可能な計算機システム及び並列分散処理方法を提供することを主な目的とする。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、データベースへのレコードの入出力処理を実行する1又は複数のデータベースサーバと、前記入出力処理を含むジョブを各々実行する1又は複数のジョブ実行サーバと、前記1又は複数のジョブ実行サーバが実行するジョブをスケジューリングするスケジュールサーバと、を備えた計算機システムであって、前記1又は複数のデータベースサーバ、前記1又は複数のジョブ実行サーバ、及び前記スケジュールサーバの各々は、プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、を備え、前記1又は複数のデータベースサーバの各々は、当該データベースサーバの管理下のデータベース内のレコードに含まれるキー値の範囲を複数の区間に分割し、前記分割された各区間のレコードの分布情報を取得し、前記スケジュールサーバは、前記1又は複数のデータベースサーバの各々の管理下のデータベース内のレコードに含まれるキー値の範囲を示すデータベースサーバ構成情報を保持し、取得された前記レコードの分布情報と、当該スケジュールサーバが保持する前記データベースサーバ構成情報とに基づいて、同一のキー値の範囲に含まれる複数の前記区間を組み合わせて複数の分割範囲を生成し、生成された分割範囲毎に、当該分割範囲のレコードを取得すべきレコードとして示すレコード取得範囲パラメータを生成し、生成された前記レコード取得範囲パラメータを、当該レコード取得範囲パラメータによって指定されるレコードの入出力処理を含むジョブを実行するジョブ実行サーバに送信し、送信された前記レコード取得範囲パラメータを受信したジョブ実行サーバは、受信した前記レコード取得範囲パラメータによって指定されるレコードの入出力処理を実行するデータベースサーバに、当該指定されるレコードの取得を要求することを特徴とする。
本発明によれば、データベース入出力を伴うジョブの並列分散処理において、データベースへのデータの入出力を実行するDBサーバへのアクセス競合を回避するとともに、ジョブを高速実行することができる。
本発明の第一実施形態の計算機システムのハードウェア構成例を示す図である。 本発明の第一実施形態の計算機システムのブロックダイアグラムを示す図である。 本発明の第一実施形態のDBサーバ構成情報の一例を示す図である。 本発明の第一実施形態のレコード分布情報の一例を示す図である。 本発明の第一実施形態のレコード分布取得方法指示パラメータの一例を示す図である。 本発明の第一実施形態のレコード分布管理テーブルの一例を示す図である。 本発明の第一実施形態の分割データ管理テーブルの一例を示す図である。 本発明の第一実施形態のレコード分布取得部の制御ロジックを示すフローチャートである。 本発明の第一実施形態のレコード取得範囲パラメータ生成部の制御ロジックを示すフローチャートである。 本発明の第一実施形態のジョブスケジュール部の制御ロジックを示すフローチャートである。 本発明の第一の実施形態のジョブプログラム起動部の制御ロジックを示すフローチャートである。 本発明の第一実施形態のジョブプログラム部の制御ロジックを示すフローチャートである。 本発明の第一実施形態のDB要求受付部の制御ロジックを示すフローチャートである。 本発明の第一実施形態のDBアクセス部の制御ロジックを示すフローチャートである。 本発明の第二実施形態の計算機システムのハードウェア構成例を示す図である。 本発明の第二実施形態の計算機システムのブロックダイアグラムを示す図である。 本発明の第二実施形態の入力データの一例を示す図である。 本発明の第二実施形態の分割データの一例を示す図である。 本発明の第二実施形態のデータ分割部の第一の制御ロジックを示すフローチャートである。 本発明の第二実施形態のデータ分割部の第二の制御ロジックを示すフローチャートである。 本発明の第二実施形態のジョブプログラム部の制御ロジックを示すフローチャートである。 本発明の第二実施形態のDB要求受付部の制御ロジックを示すフローチャートである。 本発明の第二実施形態のDBアクセス部の制御ロジックを示すフローチャートである。
以下、本発明の各実施形態について、図面を参照して説明する。
(第一実施形態)
まず、本発明の第一実施形態について説明する。
図1は、本発明の第一実施形態の計算機システム1のハードウェア構成例を示す図である。計算機システム1は、スケジュールサーバ10と、1つ又は複数のジョブ実行サーバ20と、1つ又は複数のDBサーバ30とを備える。DBサーバ30には、記憶装置15cが接続されている。
記憶装置15cは、データベース100を格納する。データベース100はレコードの集合である。なお、レコードとは、ジョブプログラム部2100が取得(入力)し、処理するデータベース100内のデータの単位である。また、レコード内の特定フィールドの数値又は文字列をキーと呼ぶ。並列実行による処理の高速化のため、データベース100内のデータの部分集合(レコードセット)である分割データ毎に、複数のプロセスやタスク等の実行単位に分けて処理される。
スケジュールサーバ10は、主記憶装置11aと、CPU(Central Processing Unit)12aと、通信I/F13aとを備える。このスケジュールサーバ10は、各ジョブ実行サーバ20が実行するジョブをスケジューリングする。本発明の第一実施形態でいうジョブとは、データベース100に格納されたレコードの取得を伴うジョブである。
主記憶装置11aは、レコード取得範囲パラメータ生成部1000及びジョブスケジュール部1100の機能を実現する命令コードを含むプログラムを記憶するRAM(Random Access Memory)等の記憶装置である。この主記憶装置11aは、DBサーバ構成情報200、レコード分布管理テーブル400及び分割データ管理テーブル500などのプログラムの実行に必要なファイル、データも記憶する。CPU12aは、主記憶装置11aに格納されたプログラムをロードして解釈実行する演算処理装置である。通信I/F13aは、通信路2を介して、ジョブ実行サーバ20及びDBサーバ30との間で実行要求や実行結果を送受信するインタフェース部である。
レコード取得範囲パラメータ生成部1000は、データベース100から取得すべきレコードの範囲を決定するパラメータを生成する。また、生成されたパラメータに基づいて、分割データ管理テーブル500を生成する。このレコード取得範囲パラメータ生成部1000の動作については、詳細に後述する。
ジョブスケジュール部1100は、レコード取得範囲パラメータ生成部1000によって生成されたパラメータ(分割データ管理テーブル500)に基づいて、ジョブ実行サーバ20が実行するジョブをスケジューリングする。また、ジョブ実行サーバ20に、ジョブプログラム部2100の実行を要求する。このジョブスケジュール部1100の動作については、詳細に後述する。
DBサーバ構成情報200は、各DBサーバ30の構成情報、すなわち各DBサーバ30とデータベース100内のレコードとの対応関係を示す情報を管理する。このDBサーバ構成情報200は、任意のDBサーバ30又はジョブ実行サーバ20によって収集される。また、このDBサーバ構成情報200は、スケジュールサーバ10、ジョブ実行サーバ20及びDBサーバ30の全てにおいて、同一の内容で格納される。このDBサーバ構成情報200については、詳細に後述する。
レコード分布管理テーブル400は、データベース100内のレコードの分布を示す情報を管理するテーブルである。レコードの分布を示す情報とは、例えばキーレンジ(キー値の範囲)毎のレコード数である。このレコード分布管理テーブル400については、詳細に後述する。
分割データ管理テーブル500は、分割データの範囲や処理状態などの分割データに関する情報を管理するテーブルである。この分割データ管理テーブル500については、詳細に後述する。
ジョブ実行サーバ20は、主記憶装置11bと、CPU12bと、通信I/F13bとを備える。
主記憶装置11bは、ジョブプログラム起動部2000、ジョブプログラム部2100及びDB要求受付部2200の機能を実現する命令コードを含むプログラムを記憶するRAM等の記憶装置である。この主記憶装置11bは、DBサーバ構成情報200などのプログラムの実行に必要なファイル、データも記憶する。CPU12bは、主記憶装置11bに格納されたプログラムをロードして解釈実行する演算処理装置である。通信I/F13bは、通信路2を介して、スケジュールサーバ10及びDBサーバ30との間で、実行要求やレコード取得要求やレコードを送受信するインタフェース部である。
ジョブプログラム起動部2000は、スケジュールサーバ10による要求を受け付けて、ジョブプログラム部2100を起動する。このジョブプログラム起動部2000の動作については、詳細に後述する。
ジョブプログラム部2100は、ジョブプログラム起動部2000によって起動され、データベース100内のレコードを処理する。ここでいう処理は、データベース100からのレコードの取得を伴う処理である。このジョブプログラム部2100の動作については、詳細に後述する。
DB要求受付部2200は、ジョブプログラム部2100による要求を受け付けて、DBアクセス部3100に対して、レコード取得などの要求を送信する。このDB要求受付部2200の動作については、詳細に後述する。
DBサーバ30は、主記憶装置11cと、CPU12cと、通信I/F13cと、入出力I/F14cとを備える。このDBサーバ30は、入出力I/F14cを介して記憶装置15cに接続されている。
主記憶装置11cは、レコード分布取得部3000及びDBアクセス部3100の機能を実現する命令コードを含むプログラムを記憶するRAM等の記憶装置である。この主記憶装置11cは、DBサーバ構成情報200、レコード分布情報300などのプログラムの実行に必要なファイル、データも記憶する。CPU12cは、主記憶装置11cに格納されたプログラムをロードして解釈実行する演算処理装置である。通信I/F13cは、通信路2を介して、ジョブ実行サーバ20とレコード取得要求やレコードを送受信する通信インタフェースである。入出力I/F13dは、データベース100を格納した記憶装置15cを接続するためのインタフェース部である。
レコード分布取得部3000は、レコード分布取得方法指示パラメータ110に従って、レコード分布情報300を生成する。このレコード分布取得部3000の動作については、詳細に後述する。
DBアクセス部3100は、DB要求受付部2200によるレコード取得などの要求を受け付けて、データベース100内のレコードにアクセスする。このDBアクセス部3100の動作については、詳細に後述する。
レコード分布情報300は、DBサーバ30が管理するデータベース100内のレコードの分布を示す情報である。レコードの分布を示す情報とは、例えばキーレンジ毎のレコード数である。このレコード分布情報300は、DBサーバ30毎に異なる内容となる。このレコード分布情報300については、詳細に後述する。
記憶装置15cは、データベース100、レコード分布取得方法指示パラメータ110を格納する。データベース100は前述の通りである。レコード分布取得方法指示パラメータ110は、レコード分布取得部3000に対し、レコードの分布の取得方法を指示するパラメータである。このレコード分布取得方法指示パラメータ110については、詳細に後述する。
図2は、本発明の第一実施形態の計算機システム1のブロックダイアグラムを示す図である。図2を用いて計算機システム1の動作の概要を説明する。
レコード分布取得部3000は、レコード分布取得方法指示パラメータ110に従って、データベース100内のレコードの分布を示す情報を取得し、レコード分布情報300として出力する。
レコード取得範囲パラメータ生成部1000は、各DBサーバ30からレコード分布情報300を収集し、収集されたレコード分布情報300に基づいて、レコード分布管理テーブル400を作成する。また、DBサーバ構成情報200とレコード分布管理テーブル400とに基づいて、分割データ管理テーブル500を生成する。そうすると、ジョブスケジュール部1100が、分割データ管理テーブル500に基づいて、各ジョブ実行サーバ20が実行するジョブをスケジューリングし、各ジョブ実行サーバ20のジョブプログラム起動部2000に、ジョブプログラム部2100の実行を要求する。
ジョブプログラム起動部2000は、ジョブプログラム部2100を起動する。そうすると、起動されたジョブプログラム部2100は、DB要求受付部2200にデータベース100内のレコードの取得を要求する。レコードの取得要求を受け付けたDB要求受付部2200は、DBサーバ30のDBアクセス部3100に、データベース100内のレコード取得要求を送信する。
DBアクセス部3100は、DB要求受付部2200からの要求に応じて、データベース100内のレコードを取得し、DB要求受付部2200に回答する。
図3は、本発明の第一実施形態のDBサーバ構成情報200の一例を示す図である。DBサーバ構成情報200では、各DBサーバ30が管理するデータベース100内のレコードを示す情報が格納される。
DBサーバ名201は、DBサーバ30を一意に識別する識別子である。管理レコード識別情報202は、DBサーバ名201に示すDBサーバ30が管理するデータベース100内のレコードを識別するための情報(図3では、キー「銘柄」のキー値の範囲)である。
なお、DBサーバ30において複数のプロセスが実行され、レコードの管理がプロセス単位に細分化されている場合、DBサーバ名201は、DBサーバ30を一意に識別する識別子と、プロセスを一意に識別する識別子との組み合わせた識別子であってもよい。図6のDBサーバ名403、図7のDBサーバ名503も同様である。
以上のように、DBサーバ構成情報200では、各DBサーバ30の管理下のデータベース100内のレコードに含まれるキー値の範囲を示す情報が格納される。
図4は、本発明の第一実施形態のレコード分布情報300の一例を示す図である。レコード分布情報300では、データベース100内のレコードの分布を示す情報として、キーレンジ毎のレコード数が格納される。
キーレンジ301は、レコードのキー値の範囲である。レコード数302は、キー値がキーレンジ301の範囲内であるレコードの数である。
なお、DBサーバ30において複数のプロセスが実行され、レコードの管理がプロセス単位に細分化されている場合、レコード分布情報300のエントリは、プロセスの識別子を含んでもよい。
図5は、本発明の第一実施形態のレコード分布取得方法指示パラメータ110の一例を示す図である。レコード分布取得方法指示パラメータ110は、レコード分布取得部3000に対し、データベース100内のレコードの分布の取得方法を指示するためのパラメータである。
図5に示すレコード分布取得方法指示パラメータ110では、データベース100内のレコードの分布の取得方法として、データベース100内のレコードの第一キーのレコード内オフセット位置(取得開始位置−取得終了位置)、すなわち各分布(区間)におけるキーの位置が定義されている。図5に示す例では、第一キーのレコード内取得開始位置、取得終了位置として、それぞれ11番目のカラム、20番目のカラムが定義されている。
なお、データベース100内に第一キーが同じレコードが多数存在することが予想される場合は、データベース100内のレコードの第二キーのレコード内オフセット位置を定義してもよい。図5に示す例では、第二キーのレコード内取得開始位置、取得終了位置として、それぞれ21番目のカラム、30番目のカラムが定義されている。
また、レコード分布取得方法指示パラメータ110では、分割データのレコード数上限値が定義されている。分割データのレコード数上限値とは、取得されたレコードの分布に基づいて分割データを生成する場合に、1つの分割データに格納するレコード数の上限値である。すなわち、1つの分割データは、このレコード数上限値以下のレコード数を保持することになる。図5に示す例では、分割データのレコード数上限値として200が定義されている。
また、レコード分布取得方法指示パラメータ110では、分割データのキーレンジ幅が定義されている。この分割データのキーレンジ幅は、レコードの分布を取得する場合における各分布(各区間)のキーレンジ幅を決定するための情報である。この分割データのキーレンジ幅を予め定めた整数定数値nで除算した値を、各区間のキーレンジ幅とする。図5に示す例では、分割データのキーレンジ幅として100が定義されている。このキーレンジ幅(=100)を整数定数値(=5)で除算した値(=20)を、各区間のキーレンジ幅とした場合、図4に示すように、各区間のキーレンジ幅は20となる。
なお、分割データのキーレンジ幅の代わりに、各区間のキーレンジ幅を定義してもよい。すなわち、キー値の最小値からキー値の幅毎に1区間として、各区間のキーレンジ幅を求めてもよい。また、分割数を定義してもよい。すなわち、データベース100全体のキーレンジを分割数で除算し、さらに整数定数値nで除算した値を、各区間のキーレンジ幅としてもよい。分割数とは、例えばジョブの分割数であって、各ジョブ実行サーバ20が実行するサブジョブの数である。その他、このレコード分布取得方法指示パラメータ110には、データベース100を識別する情報が定義されてもよい。
図6は、本発明の第一実施形態のレコード分布管理テーブル400の一例を示す図である。レコード分布管理テーブル400は、レコード取得範囲パラメータ生成部1000によって、各DBサーバ30のレコード分布情報300(図4参照)に基づいて生成される。
キーレンジ401は、レコードのキー値の範囲である。このキーレンジ401には、レコード分布情報300のキーレンジ301が格納される。レコード数402は、キー値がキーレンジ401の範囲内であるレコードの数である。このレコード数402には、レコード分布情報300のレコード数302が格納される。
DBサーバ名403には、レコード分布情報300の管理元のDBサーバ30の名前が格納される。出力済フラグ404は、後述する分割データ管理テーブル500(図7参照)に、キーレンジ401の値のキーレンジを含むキーレンジセットのエントリを出力したか否かを識別するためのフラグである。この出力済フラグ404には、初期値として「No」が格納される。
図7は、本発明の第一実施形態の分割データ管理テーブル500の一例を示す図である。分割データ管理テーブル500は、レコード取得範囲パラメータ生成部1000によって、レコード分布管理テーブル400及びDBサーバ構成情報200に基づいて生成される。
分割データ識別子501は、分割データを一意に識別するシーケンス番号などの識別子である。キーレンジセット502は、分割データ内のレコードのキー値の範囲を組み合わせたセットである。DBサーバ名503は、分割データ内のレコードを取得するために接続するレコードの管理元のDBサーバ30の名前である。レコード数504は、分割データ内のレコード数を示す。実行状態505は、分割データの処理の実行状態として、「実行済」、「実行中」、「未実行」のいずれかが格納される。ジョブ実行サーバ名506は、分割データの処理を実行中のジョブ実行サーバ20を一意に識別する文字列である。
なお、実行状態505が「実行済」の場合は、ジョブプログラム部2100による分割データの処理が完了したことを示す。実行状態505が「実行中」の場合は、ジョブスケジュール部1100がジョブプログラム起動部2000に分割データの処理を要求したが、ジョブプログラム部2100による分割データの処理が完了していないことを示す。実行状態505が「未実行」の場合は、ジョブスケジュール部1100からジョブプログラム起動部2000に分割データの処理を要求していないことを示す。
図8は、本発明の第一実施形態のレコード分布取得部3000の制御ロジックを示すフローチャートである。
まず、レコード分布取得部3000は、レコード分布取得方法指示パラメータ110を読み込む(ステップ3001)。ここでは、レコード分布取得方法指示パラメータ110を読み込むことによって、レコード分布取得方法指示パラメータ110に定義されている各区間におけるキーの位置、分割データのレコード数上限値及び各区間のキーレンジ幅を決定するための分割データのキーレンジ幅などの情報を取得する。
次に、レコード分布取得部3000は、各区間のキーレンジ(最小値及び最大値)を決定する(ステップ3002)。ここでは、レコード分布取得方法指示パラメータ110において指定された分割データのキーレンジ幅を予め定めた整数定数値nで除算した値を、各区間のキーレンジ幅とする。その後、レコードのキー値の最小値からキーレンジ幅毎に各区間のキーレンジを設定する。
なお、1つの分割データのキーレンジセット502(図7参照)は、複数の区間のキーレンジを組み合わせることによって生成される。そのため、このステップ3002では、指定された分割データのキーレンジ幅を整数定数値n(5〜10程度)で除算することによって、各区間のキーレンジ幅を、分割データのキーレンジ幅よりも小さく設定している。
また、ステップ3002では、レコード分布取得方法指示パラメータ110において分割データのキーレンジ幅の代わりに分割数が指定されている場合は、データベース100内の全レコードのキー値の「最大値−最小値」を{(分割数)×(整数定数値n)}によって除算した値を、各区間のキーレンジ幅としてもよい。
次に、レコード分布取得部3000は、初期化状態のレコード分布情報300を生成する(ステップ3003)。キーレンジ301には、ステップ3002で決定された各区間のキーレンジ(最小値及び最大値)を代入する。レコード数302には、初期値0を代入する。
次に、レコード分布取得部3000は、ステップ3002で決定された各区間に含まれるレコード数を求め、レコード数302に登録する(ステップ3004)。例えば、データベース100内の全レコードの各々について、当該レコードのキー値を含むキーレンジ301のエントリのレコード数302を1加算する。また、データベース100にレコードを格納する場合に、格納されるレコードのキー値を含むキーレンジ301のエントリのレコード数302を1加算する。
次に、レコード分布取得部3000は、所定の区間(キーレンジ301)のレコード数302が、レコード分布取得方法指示パラメータ110で指定された分割データのレコード数上限値より大きい場合、当該区間を細分化する(ステップ3005)。ここでは、分割データのレコード数上限値より大きい区間のキーレンジ幅を1/nに再設定することによって、区間を細分化し、細分化された区間に含まれるレコード数を再カウントする。なお、細分化された区間のキーレンジ幅が1になった場合は、レコード分布取得方法指示パラメータ110において指定された第二キーの値で区間を設定する。
以上に示す処理により、レコード分布取得部3000は、レコード分布取得方法指示パラメータ110に基づいて、データベース100内のレコードに含まれるキー値の範囲を複数の区間に分割し、分割された各区間のレコード数を、レコードの分布を示す情報として取得し、レコード分布情報300として出力する。
図9は、本発明の第一実施形態のレコード取得範囲パラメータ生成部1000の制御ロジックを示すフローチャートである。
まず、レコード取得範囲パラメータ生成部1000は、各DBサーバ30からレコード分布情報300を取得する(ステップ1001)。具体的には、任意のDBサーバ30に記憶されたDBサーバ構成情報200を主記憶装置11aにロードし、DBサーバ構成情報200に登録された各DBサーバ30から、レコード分布情報300を取得する。
次に、レコード取得範囲パラメータ生成部1000は、ステップ1001で取得された各DBサーバ30のレコード分布情報300に基づいて、レコード分布管理テーブル400を生成する(ステップ1002)。
具体的には、まずステップ1001で取得された各DBサーバ30のレコード分布情報300のエントリ毎に、レコード分布管理テーブル400のエントリを生成する。次に、レコード分布情報300のキーレンジ301をキーレンジ401に、レコード数302をレコード数402に代入する。DBサーバ名403には、レコード分布情報300の取得元のDBサーバ30の名称を代入する。出力済フラグ404には、初期値として「No」を代入する。
次に、レコード取得範囲パラメータ生成部1000は、レコード分布管理テーブル400から、出力済フラグ404が「No」の任意のエントリを1つ選択する(ステップ1003)。
次に、レコード取得範囲パラメータ生成部1000は、ステップ1003で選択されたエントリとDBサーバ名403が一致し、且つ、出力済フラグ404が「No」のエントリを、レコード数402の合計値が分割データのレコード数上限値に達するまで選択する(ステップ1004)。
なお、分割データのレコード数上限値は、レコード取得範囲パラメータ生成部1000が、DBサーバ30からDBサーバ構成情報200又はレコード分布情報300を取得する場合に、併せて取得するものとする。また、レコード取得範囲パラメータ生成部1000が、レコード分布取得方法指示パラメータ110を読み込むことによって取得してもよい。
次に、レコード取得範囲パラメータ生成部1000は、ステップ1003及びステップ1004で選択されたレコード分布管理テーブル400の全エントリの出力済フラグ404を「Yes」に変更する(ステップ1005)。
次に、レコード取得範囲パラメータ生成部1000は、分割データ管理テーブル500に新規エントリを追加し、分割データに関する情報を登録する(ステップ1006)。すなわち、ステップ1003及びステップ1004で選択された全エントリのキーレンジ401をまとめたキーレンジ(分割データの範囲、すなわち分割範囲)をキーレンジセット502に、エントリのDBサーバ名403をDBサーバ名503に、各エントリのレコード数402の合計値をレコード数504に、それぞれ設定する。分割データ識別子501には、先頭のエントリを1としたシーケンス番号を設定する。実行状態505には、初期値として「未実行」を設定する。
なお、ステップ1006では、レコード取得範囲パラメータ生成部1000は、分割データ管理テーブル500に分割データに関する情報を登録する代わりに、キーレンジセット502、DBサーバ名503及びレコード数504を、ファイルに出力してもよい。この場合、ジョブスケジュール部1100は、ステップ1110(図10参照)の前に、出力されたファイルから、キーレンジセット502、DBサーバ名503及びレコード数504を読み込み、分割データ管理テーブル500に新規エントリを追加し、読み込まれた情報を登録する。
次に、レコード取得範囲パラメータ生成部1000は、レコード分布管理テーブル400に、出力済フラグ404が「No」のエントリがあるか否かを判定する(ステップ1007)。出力済フラグ404が「No」のエントリがある場合(ステップ1007でYES)、ステップ1003に戻る。一方、出力済フラグ404が「No」のエントリがない場合(ステップ1007でNO)、処理を終了する。
以上に示す処理において、レコード取得範囲パラメータ生成部1000は、特にステップ1003〜ステップ1006により、DBサーバ構成情報200とレコード分布管理テーブル400とを参照して、同一のDBサーバ30によって管理されるレコードのキーレンジを、組み合わせ後のレコード数が分割データのレコード数上限値以下で均等となるように組み合わせる。これにより、異なるDBサーバ30によって管理されるレコードが組み合わされ、混在してしまうのを回避できる。その後、組み合わせられたキーレンジの集合であるキーレンジセット502と、DBサーバ30の識別子であるDBサーバ名503とを対応付けて、分割データ管理テーブル500に格納する。
図10は、本発明の第一実施形態のジョブスケジュール部1100の制御ロジックを示すフローチャートである。
まず、ジョブスケジュール部1100は、分割データ管理テーブル500の全エントリを参照し、DBサーバ名503が等しいエントリ毎に、実行状態505が「実行中」のエントリ数と、実行状態505が「未実行」のエントリ数とをカウントする(ステップ1110)。
次に、ジョブスケジュール部1100は、実行状態505が「実行中」のエントリ数が0、且つ、実行状態505が「未実行」のエントリ数が最も多いDBサーバ名503を求め、求められたDBサーバ名503のエントリ群から、実行状態505が「未実行」、且つ、レコード数504が最も多いエントリを優先的に選択する(ステップ1111)。
次に、ジョブスケジュール部1100は、ステップ1112で選択可能なエントリ、すなわち、実行状態505が「実行中」のエントリ数が0、且つ、実行状態505が「未実行」のエントリ数が0でないDBサーバ名503のエントリ群がある場合、次のステップ1113〜ステップ1117を実行する(ステップ1112)。
なお、ステップ1112では、各DBサーバ30において複数のプロセスが実行され、各DBサーバ30が同時に複数の接続を許容でき、複数のデータベース入出力を並列実行できる場合は、実行状態505が「実行中」のエントリ数が許容できる接続数未満の数であるDBサーバ30のエントリを選択してもよい。
ステップ1113に移行した場合、ジョブスケジュール部1100は、分割データ管理テーブル500の全エントリを参照し、ジョブ実行サーバ名506毎にエントリ数をカウントし、実行状態505が「実行中」のエントリ数が、予め定めた多重度(同一のジョブ実行サーバ20で同時に実行できるジョブプログラム部2100の実行単位の最大数)に達していないジョブ実行サーバ名506を求める(ステップ1113)。
ジョブスケジュール部1100は、実行状態505が「実行中」のエントリ数が多重度より小さいジョブ実行サーバ名506がある場合(ステップ1114でYES)、ステップ1115に移行する。一方、実行状態505が「実行中」のエントリ数が多重度より少ないジョブ実行サーバ名506がない場合(ステップ1114でNO)、ステップ1118に移行する。
ステップ1115に移行した場合、ジョブスケジュール部1100は、ステップ1113で選択されたジョブ実行サーバ20のジョブプログラム起動部2000に、ステップ1111で選択されたエントリの情報を送信するとともに、ジョブプログラム部2100の実行を要求する(ステップ1115)。ここでいうエントリの情報とは、当該エントリの分割データ識別子501とキーレンジセット(レコード取得範囲パラメータ)502の情報である。
次に、ジョブスケジュール部1100は、ステップ1111で選択されたエントリの実行状態505を「実行中」に変更し、ジョブ実行サーバ名506に、実行要求先のジョブ実行サーバ20の名称を代入する(ステップ1116)。
次に、ジョブスケジュール部1100は、分割データ管理テーブル500に実行状態505が「未実行」のエントリがあるか否か判定する(ステップ1117)。実行状態505が「未実行」のエントリがある場合(ステップ1117でYES)、ステップ1110に戻る。一方、実行状態505が「未実行」のエントリがない場合(ステップ1117でNO)、ステップ1118に移行する。
ステップ1118に移行した場合、ジョブスケジュール部1100は、ジョブプログラム起動部2000から、分割データの処理完了通知を待つ(ステップ1118)。その後、ジョブプログラム起動部2000から処理完了通知を受けたジョブスケジュール部1100は、処理が完了した分割データのエントリの実行状態505を「実行済」に変更し、ジョブ実行サーバ名506に代入されたジョブ実行サーバ20の名称を消去する(ステップ1119)。
次に、ジョブスケジュール部1100は、分割データ管理テーブル500に実行状態505が「未実行」のエントリがあるか否か判定する(ステップ1120)。実行状態505が「未実行」のエントリがある場合(ステップ1120でYES)、ステップ1110に戻る。一方、実行状態505が「未実行」のエントリがない場合(ステップ1120でNO)、処理を終了する。
以上に示す処理により、ジョブスケジュール部1100は、分割データ管理テーブル500から、実行状態505が「未実行」のエントリを1つずつ取り出す。次に、取り出されたエントリの情報を、ジョブプログラム起動部2000に送信し、ジョブプログラム部2100の実行を要求する。なお、ステップ1110〜1112の処理により、同一のDBサーバ30が同じエントリの処理を同時に実行することを規制している。これにより、ジョブ実行サーバ20及びDBサーバ30の関係が固定されない、又は、同数でない場合であっても、各DBサーバ30へのアクセス競合を回避することができる。
図11に、本発明の第一の実施形態のジョブプログラム起動部2000の制御ロジックを示すフローチャートである。
まず、ジョブプログラム起動部2000は、ジョブスケジュール部1100からの要求を待つ(ステップ2001)。ジョブスケジュール部1100から要求を受けたジョブプログラム起動部2000は、ジョブスケジュール部1100から、分割データ識別子501及びキーレンジセット502を受信する(ステップ2002)。
次に、ジョブプログラム起動部2000は、ステップ2002で受信した分割データ識別子501及びキーレンジセット502を、ジョブプログラム部2100が参照可能な領域(環境変数など)に設定し、ジョブプログラム部2100を起動する(ステップ2003)。
次に、ジョブプログラム起動部2000は、ジョブプログラム部2100によるデータベース100内の分割データの処理の完了通知を待つ(ステップ2004)。ジョブプログラム部2100から処理完了通知を受けたジョブプログラム起動部2000は、ジョブスケジュール部1100に、処理が完了した分割データの分割データ識別子501を送信するとともに、分割データの処理完了を通知する(ステップ2005)。
図12に、本発明の第一実施形態のジョブプログラム部2100の制御ロジックを示すフローチャートである。
まず、ジョブプログラム部2100は、ジョブプログラム起動部2000によって環境変数などに設定されたキーレンジセット502を読み込む(ステップ2101)。次に、ジョブプログラム部2100は、ステップ2101で読み込まれたキーレンジセット502を、SQL(Structured Query Language)のSELECT文のオペランドに埋め込むことによって、データベース100内のレコード取得用のSQL文を生成する(ステップ2102)。
次に、ジョブプログラム部2100は、ステップ2102で生成されたSQL文を、DB要求受付部2200に送信するとともに、SQL文中のオペランドで指定された範囲のレコードをデータベース100から取得する要求を、DB要求受付部2200に送信する(ステップ2103)。その後、ジョブプログラム部2100は、DB要求受付部2200からの応答を待つ。
次に、ジョブプログラム部2100は、DB要求受付部2200からの応答を受信し、DB要求受付部2200による応答結果が格納された応答領域から、取得されたレコードを取り出して、取り出されたレコードに対するプログラム固有の処理を実行する(ステップ2104)。ここでいうプログラム固有の処理とは、例えば取り出されたレコードの加工・集計・帳票作成等を実行する処理である。
以上に示す処理により、ジョブプログラム部2100は、キーレンジセット502を用いて、SQLのSELECT文などDB要求受付部2200が理解できる形式のデータベース100のレコード取得要求パラメータを生成し、DB要求受付部2200に送信する。
図13は、本発明の第一実施形態のDB要求受付部2200の制御ロジックを示すフローチャートである。
まず、DB要求受付部2200は、ジョブプログラム部2100から、SQL文を受信する(ステップ2201)。次に、DB要求受付部2200は、ステップ2201で受信したSQL文内のオペランドに記述されているキーレンジセット502と、DBサーバ構成情報200の管理レコード識別情報202とを比較し、キーレンジセット502を含む管理レコード識別情報202に対応付けられたDBサーバ名201を求める(ステップ2202)。
次に、DB要求受付部2200は、ステップ2202で求められたDBサーバ名201のDBサーバ30のDBアクセス部3100に、キーレンジセット502の情報を送信し、レコードの取得を要求する(ステップ2203)。
次に、DB要求受付部2200は、DBアクセス部3100によって取得されたレコードを応答領域に格納し、SQL文の送信元のジョブプログラム部2100に応答する(ステップ2204)。
以上に示す処理により、DB要求受付部2200は、DBサーバ構成情報200を参照し、SQL文で指定されたキーレンジセット502を含むレコードを管理するDBサーバ30を選択し、選択されたDBサーバ30のDBアクセス部3100に、データベース100のレコード取得要求を送信する。
図14は、本発明の第一実施形態のDBアクセス部3100の制御ロジックを示すフローチャートである。
まず、DBアクセス部3100は、DB要求受付部2200から、レコード取得要求(キーレンジセット502の情報を含む)を受信する(ステップ3101)。
次に、DBアクセス部3100は、ステップ3101で受信したレコード取得要求において指定されたキーレンジセット502のレコードを、データベース100から取得する(ステップ3102)。次に、DBアクセス部3100は、ステップ3102で取得されたレコードを、SQL応答文などの形式で、DB要求受付部2200に送信する(ステップ3103)。
以上に示す処理により、DBアクセス部3100は、指定されたキーレンジセット502のレコードを、データベース100から取り出し、DB要求受付部2200に送信する。
以上説明してきたように、本発明の第一実施形態の計算機システム1によれば、データベース100に格納されたデータの入力を伴うジョブの並列分散処理において、DBサーバ30及びジョブ実行サーバ20の関係を固定していない、又は、両者を同じ個数設けていない場合であっても、データベース100に格納されたデータの入力を実行するDBサーバ30へのアクセス競合を回避することができる。
また、各ジョブ実行サーバ20が処理するレコード数を適正な大きさにし、且つ、平均化することができるので、各ジョブ実行サーバ20及びDBサーバ30の負荷を平準化し、ジョブを高速実行することができる。
(第二実施形態)
前述の第一実施形態では、ジョブ実行サーバ20が、データベース100に格納されたレコードの取得を伴うジョブを実行する形態について説明した。ここでは、ジョブ実行サーバ20が、データベース100へのレコードの出力(格納)を伴うジョブを実行する形態について説明する。
図15は、本発明の第二実施形態の計算機システム1のハードウェア構成例を示す図である。計算機システム1は、スケジュールサーバ10と、1又は複数のジョブ実行サーバ20と、1又は複数のDBサーバ30とを備える。なお、以下では図1と同様の構成要素には同一の符号を付して重複する説明を適宜省略する。
本発明の第二実施形態のスケジュールサーバ10は、さらに、入出力I/F14aを備える。このスケジュールサーバ10は、各ジョブ実行サーバ20が実行するジョブをスケジューリングする。ここでいうジョブとは、データベース100へのレコードの出力を伴うジョブである。このスケジュールサーバ10は、入出力I/F14aを介して記憶装置15aに接続されている。
記憶装置15aは、入力データ120、分割データ130を格納する。入力データ120は、ジョブプログラム部2100が処理するレコードの集合である。分割データ130は、入力データ120を分割したデータである。なお、この記憶装置15aは、スケジュールサーバ10に直接接続されているが、ネットワーク等を介して間接接続されてもよい。
主記憶装置11aは、ジョブスケジュール部1100及びデータ分割部1200の機能を実現する命令コードを含むプログラムを記憶するRAM等の記憶装置である。この主記憶装置11aは、DBサーバ構成情報200及び分割データ管理テーブル500などのプログラムの実行に必要なファイル、データも記憶する。
ジョブスケジュール部1100は、分割データ管理テーブル500に基づいて、ジョブ実行サーバ20が実行するジョブをスケジューリングする。また、ジョブ実行サーバ20に、ジョブプログラム部2100の実行を要求する。このジョブスケジュール部1100の動作については、以下の点を除いて前述の第一実施形態(図10参照)と同様であるため、ここでは相違点のみ説明する。
すなわち、ステップ1115において、本発明の第二の実施形態のジョブスケジュール部1100は、ステップ1113で選択されたジョブ実行サーバ20のジョブプログラム起動部2000に、データベース100に出力すべき分割データ130の情報を送信するとともに、ジョブプログラム部2100の実行を要求する(ステップ1115)。データベース100に出力すべき分割データ130とは、分割データ管理テーブル500に登録された分割データ130のうちの、ステップ1111で選択された1つの分割データ130である。
なお、ステップ1110〜1112の処理により、ジョブスケジュール部1100は、分割データ管理テーブル500のDBサーバ名503を参照し、同一のDBサーバ30が同じ分割データ130の処理を同時に実行することを規制している。また、ステップ1111の処理により、レコード数の多い分割データ130を優先的に選択する。
データ分割部1200は、入力データ120を複数の分割データ130に分割する。このデータ分割部1200の動作については、詳細に後述する。
DBサーバ構成情報200は、各DBサーバ30の構成情報を管理する。分割データ管理テーブル500は、データ分割部1200によって生成された各分割データ130の範囲や処理状態などの分割データ130に関する情報を管理するテーブルである。これらDBサーバ構成情報200及び分割データ管理テーブル500については、前述の第一実施形態(図3、7参照)と同様であるため、ここでは説明を省略する。
ジョブ実行サーバ20は、前述の第一実施形態と同様に、主記憶装置11bと、CPU12bと、通信I/F13bとを備える。
主記憶装置11bは、ジョブプログラム起動部2000、ジョブプログラム部2100b及びDB要求受付部2200bの機能を実現する命令コードを含むプログラムを記憶するRAM等の記憶装置である。
ジョブプログラム起動部2000は、スケジュールサーバ10による要求を受け付けて、ジョブプログラム部2100を起動する。このジョブプログラム起動部2000は、以下の点を除いて前述の第一実施形態(図11参照)と同様であるため、ここでは相違点のみ説明する。
すなわち、ステップ2002において、本発明の第二の実施形態のジョブプログラム起動部2000は、キーレンジセット(レコード取得範囲パラメータ)502を受信せずに、分割データ130を受信してもよい。また、ステップ2003において、ステップ2002で受信した分割データ130を、ジョブプログラム部2100が参照可能な領域(環境変数など)に設定しない。
ジョブプログラム部2100bは、ジョブプログラム起動部2000によって起動され、データベース100内のレコードを処理する。ここでいう処理は、データベース100へのレコードの出力を伴う処理である。このジョブプログラム部2100bの動作については、詳細に後述する。
DB要求受付部2200bは、ジョブプログラム部2100による要求を受け付けて、DBアクセス部3100に対して、レコード出力などの要求を送信する。このDB要求受付部2200bの動作については、詳細に後述する。
DBサーバ30は、前述の第一の実施形態と同様に、主記憶装置11cと、CPU12cと、通信I/F13cと、入出力I/F14cとを備える。このDBサーバ30は、入出力I/F14cを介して記憶装置15cに接続されている。
主記憶装置11cは、DBアクセス部3100の機能を実現する命令コードを含むプログラムを記憶するRAM等の記憶装置である。この主記憶装置11cは、DBサーバ構成情報200などのプログラムの実行に必要なファイル、データも記憶する。
記憶装置15cは、データベース100を格納する。データベース100はレコードの集合である。なお、レコードとは、ジョブプログラム部2100が出力(格納)し処理するデータベース100内のデータの単位である。また、レコード内の特定フィールドの数値又は文字列をキーと呼ぶ。
図16は、本発明の第二実施形態の計算機システム1のブロックダイアグラムを示す図である。図16を用いて計算機システム1の動作の概要を説明する。
データ分割部1200は、入力データ120を複数の分割データ130に分割し、分割データ130の属性情報を、分割データ管理テーブル500に登録する。そうすると、ジョブスケジュール部1100は、分割データ管理テーブル500に基づいて、各ジョブ実行サーバ20が実行するジョブをスケジューリングし、各ジョブ実行サーバ20のジョブプログラム起動部2000に、ジョブプログラム部2100の実行を要求する。
ジョブプログラム起動部2000は、ジョブプログラム部2100bを起動する。そうすると、起動されたジョブプログラム部2100bは、分割データ130を読み込んで処理し、DB要求受付部2200bに、処理結果のレコードのデータベース100への出力要求を送信する。レコードの出力要求を受け付けたDB要求受付部2200bは、DBサーバ30のDBアクセス部3100に、データベース100へのレコード出力要求を送信する。
DBアクセス部3100bは、DB要求受付部2200bからの要求に応じて、データベース100にレコードを出力し、DB要求受付部2200bに回答する。
図17は、本発明の第二実施形態の入力データ120の一例を示す図である。
入力データ120は、複数のレコードから構成されるレコード群である。各レコードは、取引時刻(図中の先頭レコードでは「00:00:00」)、レコードのキーである取引銘柄名(「銘柄1」)、取引数(「20」)などの情報を含む。
図18は、本発明の第二実施形態の分割データ130の一例を示す図である。
分割データ130は、入力データ120に含まれる1又は複数のレコードから構成される。各レコードの内容は入力データ120と同様であるため、ここでは説明を省略する。
図19は、本発明の第二実施形態のデータ分割部1200の第一の制御ロジックを示すフローチャートである。
まず、データ分割部1200は、任意のDBサーバ30から、DBサーバ構成情報200を受信する(ステップ1201)。次に、データ分割部1200は、入力データ120から全レコードを読み出し(ステップ1202)、読み出された全レコードをソートする(ステップ1203)。
ステップ1203では、読み出された全レコードをソートする場合、ソートの第一キーは、レコードのキー値を含む管理レコード識別情報202のエントリのDBサーバ名201とする。また、ソートの第二キーはレコードのキー値とする。これにより、同一のDBサーバ30によってデータベース100に出力されるレコード群が、連続して並ぶようにソートされる。なお、レコードをソートするかわりに、レコードへのポインタをソートしてもよい。
次に、データ分割部1200は、ソート後の全レコードを、複数のレコードセットに分割し、生成された複数のレコードセットのそれぞれを、異なる分割データ130として出力する(ステップ1204)。
ステップ1204では、ソート後の全レコードの並び順に、予め指定された分割データ130のレコード数上限値毎に複数のレコードセットに分割する。ただし、分割データ130のレコード数上限値に達していない場合でも、所定のレコードのソートの第一キーの値が直前のレコードのソートの第一キーの値と異なる場合、当該レコードと直前のレコードとの間で分割する。これにより、ソートの第一キーの値が異なる(すなわち、データベース100へのレコードの出力を実行するDBサーバ30が異なる)レコードが、同一の分割データ130に混在してしまうのを回避できる。なお、ソートの第二キーの値が同じレコードは、同じ分割データ130に含まれるように分割することが好ましい。
次に、データ分割部1200は、分割データ管理テーブル500を生成し、分割データ130の数と同数のエントリを生成する(ステップ1205)。次に、データ分割部1200は、ステップ1204で生成された各分割データ130に関する情報を、ステップ1205で生成されたエントリに登録する(ステップ1206)。
ステップ1206では、生成された分割データ130の名称(又は、分割データ130を一意に識別するシーケンス番号)を、分割データ識別子501に設定する。分割データ130に含まれるレコードのキー値を含む管理レコード識別情報202のエントリのDBサーバ名201を、DBサーバ名503に設定する。分割データ130に含まれるレコード数を、レコード数504に設定する。実行状態505は、初期値として「未実行」に設定する。ジョブ実行サーバ名506は設定しない。
なお、ステップ1206では、データ分割部1200は、分割データ管理テーブル500に分割データ130に関する情報を登録する代わりに、分割データ識別子501、DBサーバ名503及びレコード数504を、ファイルに出力してもよい。この場合、ジョブスケジュール部1100は、ステップ1110(図10参照)の前に、出力されたファイルから、分割データ識別子501、DBサーバ名503及びレコード数504を読み込み、分割データ管理テーブル500に新規エントリを追加し、読み込まれた情報を登録する。
以上に示す第一の制御ロジックにより、データ分割部1200は、入力データ120(レコード群)を複数の分割データ130(分割レコード群)に分割し、各分割データ130の属性情報を、分割データ管理テーブル500に登録する。なお、データ分割部1200は、特にステップ1203〜1204により、DBサーバ構成情報200と入力データ120の各レコードのキー値を参照して、入力データ120のレコードのうちの同一のキー値の範囲に含まれるレコード(同一のDBサーバ30によって管理されるレコード)を組み合わせて、複数の分割データ130を生成している。そのため、異なるDBサーバ30によって管理されるレコードが、同一の分割データ130に混在してしまうのを回避している。すなわち、分割データ130内のレコードを処理した結果の出力用レコードの全てが、同一のDBサーバ30によって管理されるデータベース100に出力されるように、入力データ120を分割している。
図20は、本発明の第二実施形態のデータ分割部1200の第二の制御ロジックを示すフローチャートである。なお、以下では図19と同様の構成要素には同一の符号を付して重複する説明を適宜省略する。
まず、データ分割部1200は、前述の第一の制御ロジック(図19参照)と同様に、任意のDBサーバ30から、DBサーバ構成情報200を受信する(ステップ1201)。
次に、データ分割部1200は、入力データ120からレコードを順に読み出し、読み出されたレコードに基づいて、レコードのキー値(又は、予め指定された幅のキー値の範囲)毎の中間ファイルを生成、出力する(ステップ1211)。
ステップ1211では、キー値の範囲毎の中間ファイルを生成する場合は、キー値の範囲は、管理レコード識別情報202に示すキー値の範囲の部分集合とする。これにより、DBサーバ名201が異なるキーが、同一のキー値の範囲に含まれてしまうのを回避することができる。
次に、データ分割部1200は、ステップ1211で生成された複数の中間ファイルを組み合わせることによって、分割データ130を生成する(ステップ1212)。ここでは、中間ファイルに含まれるレコードのキー値を含む管理レコード識別情報202のエントリが同じ(すなわち、データベース100へのレコードの出力を実行するDBサーバ30が同じ)レコードを含む中間ファイル同士を、中間ファイルに含まれるレコード数の合計値が、予め指定された分割データ130のレコード数上限値に達するまで組み合わせる。
以降、ステップ1205及びステップ1206の処理については、前述の第一の制御ロジック(図19参照)と同様であるため、ここでは説明を省略する。
以上に示す第二の制御ロジックにより、データ分割部1200は、第一の制御ロジックのようなソート処理を実行することなく、入力データ120を、中間ファイルを介して複数の分割データ130に分割し、各分割データ130の属性情報を、分割データ管理テーブル500に登録することができる。
図21は、本発明の第二実施形態のジョブプログラム部2100bの制御ロジックを示すフローチャートである。
まず、ジョブプログラム部2100bは、分割データ130からレコードを取り出し、プログラム固有の処理を実行する(ステップ2111)。プログラム固有の処理とは、例えば、取り出されたレコードの重複チェックや加工を実行する処理である。
次に、ジョブプログラム部2100bは、ステップ2111でプログラム固有の処理が実行されたレコードとSQLのINSERT文とを、DB要求受付部2200bに送信するとともに、当該レコードをデータベース100に出力する要求を、DB要求受付部2200bに送信する(ステップ2112)。
以上に示す処理により、ジョブプログラム部2100bは、分割データ130からレコードを取り出してプログラム固有の処理を実行し、処理結果のレコードとSQLのINSERT文などを、DB要求受付部2200bに送信する。
図22は、本発明の第二実施形態のDB要求受付部2200bの制御ロジックを示すフローチャートである。
まず、DB要求受付部2200bは、第一実施形態と同様に、ジョブプログラム部2100bからSQL文(及びジョブプログラム部2100bのプログラム固有の処理が実行されたレコード)を受信する(ステップ2201)。次に、DB要求受付部2200bは、ステップ2201で受信したレコードのキーと、DBサーバ構成情報200の管理レコード識別情報202とを比較し、レコードのキーを含む管理レコード識別情報202に対応付けられたDBサーバ名201を求める(ステップ2212)。
次に、DB要求受付部2200bは、ステップ2212で求められたDBサーバ名201のDBサーバ30のDBアクセス部3100に、レコードを送信し、データベース100へのレコードの出力を要求する(ステップ2213)。
以上に示す処理により、DB要求受付部2200bは、DBサーバ構成情報200を参照し、ジョブプログラム部2100bの処理結果のレコードを管理するDBサーバ30を選択し、選択されたDBサーバ30のDBアクセス部3100に、データベース100へのレコード出力要求を送信する。
図23は、本発明の第二実施形態のDBアクセス部3100bの制御ロジックを示すフローチャートである。
まず、DBアクセス部3100bは、DB要求受付部2200bから、レコード出力要求(レコードの情報を含む)を受信する(ステップ3111)。次に、DBアクセス部3100は、ステップ3111で受信したレコードを、データベース100に出力する(ステップ3112)。
以上に示す処理により、DBアクセス部3100は、ジョブプログラム部2100bの処理結果のレコードを、データベース100に出力する。
以上説明してきたように、本発明の第二実施形態の計算機システム1によれば、データベース100への出力を伴うジョブの並列分散処理において、DBサーバ30及びジョブ実行サーバ20の関係を固定していない、又は、両者を同じ個数設けていない場合であっても、データベース100へのデータの出力を実行するDBサーバ30へのアクセス競合を回避することができる。
また、各ジョブ実行サーバ20が処理するレコード数を適正な大きさにし、且つ、平均化することができるので、各ジョブ実行サーバ20及びDBサーバ30の負荷を平準化し、ジョブを高速実行することができる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
本発明は、計算機システムに関し、特に、データベースの入出力を伴うバッチジョブの計算機システムに対して有用である。

Claims (11)

  1. データベースへのレコードの入出力処理を実行する1又は複数のデータベースサーバと、前記入出力処理を含むジョブを各々実行する1又は複数のジョブ実行サーバと、前記1又は複数のジョブ実行サーバが実行するジョブをスケジューリングするスケジュールサーバと、を備えた計算機システムであって、
    前記1又は複数のデータベースサーバ、前記1又は複数のジョブ実行サーバ、及び前記スケジュールサーバの各々は、プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、を備え、
    前記1又は複数のデータベースサーバの各々は、当該データベースサーバの管理下のデータベース内のレコードに含まれるキー値の範囲を複数の区間に分割し、前記分割された各区間のレコードの分布情報を取得し、
    前記スケジュールサーバは、
    前記1又は複数のデータベースサーバの各々の管理下のデータベース内のレコードに含まれるキー値の範囲を示すデータベースサーバ構成情報を保持し、
    取得された前記レコードの分布情報と、当該スケジュールサーバが保持する前記データベースサーバ構成情報とに基づいて、同一のキー値の範囲に含まれる複数の前記区間を組み合わせて複数の分割範囲を生成し、生成された分割範囲毎に、当該分割範囲のレコードを取得すべきレコードとして示すレコード取得範囲パラメータを生成し、
    生成された前記レコード取得範囲パラメータを、当該レコード取得範囲パラメータによって指定されるレコードの入出力処理を含むジョブを実行するジョブ実行サーバに送信し、
    送信された前記レコード取得範囲パラメータを受信したジョブ実行サーバは、受信した前記レコード取得範囲パラメータによって指定されるレコードの入出力処理を実行するデータベースサーバに、当該指定されるレコードの取得を要求することを特徴とする計算機システム。
  2. 前記スケジュールサーバは、生成された前記レコード取得範囲パラメータと、当該レコード取得範囲パラメータによって指定されるレコードの入出力処理を実行可能なデータベースサーバとの対応関係を示す管理情報を出力することを特徴とする請求項1に記載の計算機システム。
  3. 前記管理情報は、さらに、前記データベースサーバが前記指定されるレコードの入出力処理を実行中か否かの情報を含み、
    前記スケジュールサーバは、所定のレコード取得範囲パラメータによって指定されるレコードの入出力処理を実行中のデータベースサーバが存在する場合に、当該実行中のデータベースサーバによる他のレコードの入出力処理を含むジョブの実行を規制することを特徴とする請求項2に記載の計算機システム。
  4. 前記1又は複数のデータベースサーバの各々は、当該データベースサーバの管理下のデータベース内のレコードに含まれるキー値の範囲を、前記1又は複数のジョブ実行サーバが実行するジョブの数より多数の区間に分割することを特徴とする請求項1に記載の計算機システム。
  5. 前記スケジュールサーバは、同一のキー値の範囲に含まれる複数の前記区間を、組み合わせて生成される各分割範囲のレコード数が所定数より小さくなるよう組み合わせることを特徴とする請求項1に記載の計算機システム。
  6. データベースへのレコードの入出力処理を実行する1又は複数のデータベースサーバと、前記入出力処理を含むジョブを各々実行する1又は複数のジョブ実行サーバと、前記1又は複数のジョブ実行サーバが実行するジョブをスケジューリングするスケジュールサーバと、を備えた計算機システムであって、
    前記1又は複数のデータベースサーバ、前記1又は複数のジョブ実行サーバ、及び前記スケジュールサーバの各々は、プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、を備え、
    前記スケジュールサーバは、
    前記1又は複数のデータベースサーバの各々の管理下のデータベース内のレコードに含まれるキー値の範囲を示すデータベースサーバ構成情報を保持し、
    所定のレコード群を前記1又は複数のデータベースサーバの各々の管理下のデータベースに格納する場合に、当該スケジュールサーバが保持する前記データベースサーバ構成情報に基づいて、当該所定のレコード群に含まれるレコードのうちの同一のキー値の範囲に含まれるレコードを組み合わせて、複数の分割レコード群を生成し、
    生成された前記分割レコード群を、当該分割レコード群に含まれるレコードの入出力処理を含むジョブを実行するジョブ実行サーバに送信し、
    送信された前記分割レコード群を受信したジョブ実行サーバは、受信した前記分割レコード群に含まれるレコードの入出力処理を実行するデータベースサーバに、当該分割レコード群に含まれるレコードの格納を要求することを特徴とする計算機システム。
  7. 前記スケジュールサーバは、生成された前記分割レコード群と、当該分割レコード群に含まれるレコードの入出力処理を実行可能なデータベースサーバとの対応関係を示す管理情報を出力することを特徴とする請求項6に記載の計算機システム。
  8. 前記管理情報は、さらに、前記データベースサーバが前記分割レコード群に含まれるレコードの入出力処理を実行中か否かの情報を含み、
    前記スケジュールサーバは、所定の分割レコード群に含まれるレコードの入出力処理を実行中のデータベースサーバが存在する場合、当該実行中のデータベースサーバによる他の分割レコード群に含まれるレコードの入出力処理を含むジョブの実行を規制することを特徴とする請求項7に記載の計算機システム。
  9. 前記スケジュールサーバは、前記所定のレコード群に含まれるレコードのうちの同一のキー値の範囲に含まれるレコードを、組み合わせて生成される分割レコード群のレコード数が所定数より小さくなるよう組み合わせることを特徴とする請求項6に記載の計算機システム。
  10. データベースへのレコードの入出力処理を実行する1又は複数のデータベースサーバと、前記入出力処理を含むジョブを各々実行する1又は複数のジョブ実行サーバと、前記1又は複数のジョブ実行サーバが実行するジョブをスケジューリングするスケジュールサーバと、を備えた計算機システムにおける並列分散処理方法であって、
    前記1又は複数のデータベースサーバ、前記1又は複数のジョブ実行サーバ、及び前記スケジュールサーバの各々は、プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、を備え、
    前記スケジュールサーバは、
    前記1又は複数のデータベースサーバの各々の管理下のデータベース内のレコードに含まれるキー値の範囲を示すデータベースサーバ構成情報を前記メモリに保持し、
    前記方法は、
    前記1又は複数のデータベースサーバの各々が、当該データベースサーバの管理下のデータベース内のレコードに含まれるキー値の範囲を複数の区間に分割し、前記分割された各区間のレコードの分布情報を取得する手順と、
    前記スケジュールサーバが、取得された前記レコードの分布情報と、当該スケジュールサーバが保持する前記データベースサーバ構成情報とに基づいて、同一のキー値の範囲に含まれる複数の前記区間を組み合わせて複数の分割範囲を生成し、生成された分割範囲毎に、当該分割範囲のレコードを取得すべきレコードとして示すレコード取得範囲パラメータを生成する手順と、
    前記スケジュールサーバが、生成された前記レコード取得範囲パラメータを、当該レコード取得範囲パラメータによって指定されるレコードの入出力処理を含むジョブを実行するジョブ実行サーバに送信する手順と、
    送信された前記レコード取得範囲パラメータを受信したジョブ実行サーバが、受信した前記レコード取得範囲パラメータによって指定されるレコードの入出力処理を実行するデータベースサーバに、当該指定されるレコードの取得を要求する手順と、を含むことを特徴とする並列分散処理方法。
  11. データベースへのレコードの入出力処理を実行する1又は複数のデータベースサーバと、前記入出力処理を含むジョブを各々実行する1又は複数のジョブ実行サーバと、前記1又は複数のジョブ実行サーバが実行するジョブをスケジューリングするスケジュールサーバと、を備えた計算機システムにおける並列分散処理方法であって、
    前記1又は複数のデータベースサーバ、前記1又は複数のジョブ実行サーバ、及び前記スケジュールサーバの各々は、プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、を備え、
    前記スケジュールサーバは、
    前記1又は複数のデータベースサーバの各々の管理下のデータベース内のレコードに含まれるキー値の範囲を示すデータベースサーバ構成情報を前記メモリに保持し、
    前記方法は、
    前記スケジュールサーバが、所定のレコード群を前記1又は複数のデータベースサーバの各々の管理下のデータベースに格納する場合に、当該スケジュールサーバが保持する前記データベースサーバ構成情報に基づいて、当該所定のレコード群に含まれるレコードのうちの同一のキー値の範囲に含まれるレコードを組み合わせて、複数の分割レコード群を生成する手順と、
    前記スケジュールサーバが、生成された前記分割レコード群を、当該分割レコード群に含まれるレコードの入出力処理を含むジョブを実行するジョブ実行サーバに送信する手順と、
    送信された前記分割レコード群を受信したジョブ実行サーバが、受信した前記分割レコード群に含まれるレコードの入出力処理を実行するデータベースサーバに、当該分割レコード群に含まれるレコードの格納を要求手順と、を含むことを特徴とする並列分散処理方法。
JP2013508696A 2011-04-08 2011-04-08 計算機システム及び並列分散処理方法 Expired - Fee Related JP5730386B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/058907 WO2012137347A1 (ja) 2011-04-08 2011-04-08 計算機システム及び並列分散処理方法

Publications (2)

Publication Number Publication Date
JPWO2012137347A1 JPWO2012137347A1 (ja) 2014-07-28
JP5730386B2 true JP5730386B2 (ja) 2015-06-10

Family

ID=46968782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013508696A Expired - Fee Related JP5730386B2 (ja) 2011-04-08 2011-04-08 計算機システム及び並列分散処理方法

Country Status (3)

Country Link
US (1) US20140059000A1 (ja)
JP (1) JP5730386B2 (ja)
WO (1) WO2012137347A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI718916B (zh) 2020-03-30 2021-02-11 賴融毅 水流量調節裝置及其水輪機

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102193012B1 (ko) * 2014-02-04 2020-12-18 삼성전자주식회사 분산 처리 시스템 및 이의 동작 방법
JP6540110B2 (ja) * 2015-03-11 2019-07-10 富士通株式会社 データベースシステム、情報処理装置、及び、データベースプログラム
CN107103009B (zh) * 2016-02-23 2020-04-10 杭州海康威视数字技术股份有限公司 一种数据处理方法及装置
JP6679445B2 (ja) * 2016-08-31 2020-04-15 ヤフー株式会社 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
CN106953940B (zh) * 2017-04-13 2018-11-20 网宿科技股份有限公司 Dns服务器及配置加载方法、网络系统、域名解析方法及系统
JP2018206084A (ja) * 2017-06-05 2018-12-27 株式会社東芝 データベース管理システムおよびデータベース管理方法
US9934287B1 (en) * 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing
JP6702582B2 (ja) * 2019-05-09 2020-06-03 株式会社東芝 データベース管理システムおよびデータベース管理方法
CN111158889A (zh) * 2020-01-02 2020-05-15 中国银行股份有限公司 一种批量任务处理方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05242049A (ja) * 1991-07-10 1993-09-21 Hitachi Ltd 分散データベースのソート方法およびアクセス方法
JPH10242049A (ja) * 1997-02-27 1998-09-11 Toshiba Corp 半導体装置及びその製造方法
JP2007086951A (ja) * 2005-09-21 2007-04-05 Hitachi Software Eng Co Ltd ファイル分割処理方法及びファイル分割プログラム
JP2009181546A (ja) * 2008-02-01 2009-08-13 Toshiba Corp コーディネータサーバ、データ割当方法及びプログラム
JP2011053995A (ja) * 2009-09-03 2011-03-17 Hitachi Ltd データ処理制御方法および計算機システム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10269225A (ja) * 1997-03-25 1998-10-09 Hitachi Ltd データベース分割方法
JP4469252B2 (ja) * 2004-10-19 2010-05-26 株式会社日立製作所 ストレージネットワークシステム及びホスト計算機並びに物理パス割当方法
JP2006309638A (ja) * 2005-05-02 2006-11-09 Hitachi Ltd 計算機システムおよびその計算機システムに用いられるホスト計算機およびストレージ装置、ならびに、計算機システムに用いられるボリューム切替方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05242049A (ja) * 1991-07-10 1993-09-21 Hitachi Ltd 分散データベースのソート方法およびアクセス方法
JPH10242049A (ja) * 1997-02-27 1998-09-11 Toshiba Corp 半導体装置及びその製造方法
JP2007086951A (ja) * 2005-09-21 2007-04-05 Hitachi Software Eng Co Ltd ファイル分割処理方法及びファイル分割プログラム
JP2009181546A (ja) * 2008-02-01 2009-08-13 Toshiba Corp コーディネータサーバ、データ割当方法及びプログラム
JP2011053995A (ja) * 2009-09-03 2011-03-17 Hitachi Ltd データ処理制御方法および計算機システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI718916B (zh) 2020-03-30 2021-02-11 賴融毅 水流量調節裝置及其水輪機

Also Published As

Publication number Publication date
US20140059000A1 (en) 2014-02-27
JPWO2012137347A1 (ja) 2014-07-28
WO2012137347A1 (ja) 2012-10-11

Similar Documents

Publication Publication Date Title
JP5730386B2 (ja) 計算機システム及び並列分散処理方法
CN107239335B (zh) 分布式系统的作业调度系统及方法
US8438282B2 (en) Information processing system and load sharing method
US9177019B2 (en) Computer system for optimizing the processing of a query
US8271523B2 (en) Coordination server, data allocating method, and computer program product
CN108984177A (zh) 一种数据处理方法及系统
US20110179100A1 (en) Parallel distributed processing method and computer system
JP5939123B2 (ja) 実行制御プログラム、実行制御方法および情報処理装置
JP2004280528A (ja) データベースシステム、サーバ、問い合わせ投入方法及びデータ更新方法
CN104111958A (zh) 一种数据查询方法及装置
US20090235250A1 (en) Management machine, management system, management program, and management method
CN111324606A (zh) 数据分片的方法及装置
CN111078276B (zh) 应用程序的冗余资源处理方法、装置、设备及存储介质
CN111949856A (zh) 基于web的对象存储查询方法及装置
WO2013175611A1 (ja) データの分散検索システム、データの分散検索方法及び管理計算機
CN114756629B (zh) 基于sql的多源异构数据交互分析引擎及方法
CN113010286A (zh) 并行任务调度方法、装置、计算机设备和存储介质
US10048991B2 (en) System and method for parallel processing data blocks containing sequential label ranges of series data
US8667008B2 (en) Search request control apparatus and search request control method
CN115857918A (zh) 数据处理方法、装置、电子设备及存储介质
CN113886111B (zh) 一种基于工作流的数据分析模型计算引擎系统及运行方法
CN113868249A (zh) 一种数据存储方法、装置、计算机设备以及存储介质
US11157506B2 (en) Multiform persistence abstraction
CN115543994A (zh) 元数据检索方法、服务器、检索方法及终端设备
JP6506773B2 (ja) 情報処理装置、方法およびプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150407

R150 Certificate of patent or registration of utility model

Ref document number: 5730386

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees