(57)【要約】【課題】情報処理装置における計算処理時間や計算処理能力の効率的な利用を図る。【解決手段】他装置と通信する通信部１０７と、計算処理対象データの母集団を記憶する記憶部１０１と、所定数の計算処理対象データからなるデータ群をデータ群間でのデータ重複無く前記母集団から複数抽出して部分データとして記憶部１０１に格納する部分データ作成部１１０と、端末２００からの計算処理要求を前記通信部１０７を介して受信し当該計算処理要求が示す計算処理を前記記憶部１０１における各部分データに対し順次実行し１または所定数の部分データに対する計算処理結果が得られるごとに該当部分データに関する計算処理結果を前記端末２００に返信する計算処理実行部１１１とを備える情報処理装置１００からデータ処理システム１０を構成する。【選択図】図１
2010271931.tif 000002
【特許請求の範囲】
【請求項１】
他装置と通信する通信部と、
計算処理対象データの母集団を記憶する記憶部と、
所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く前記母集団から複数抽出して部分データとして記憶部に格納する、部分データ作成部と、
端末からの計算処理要求を前記通信部を介して受信し、当該計算処理要求が示す計算処理を、前記記憶部における各部分データに対し順次実行し、１または所定数の部分データに対する計算処理結果が得られるごとに、該当部分データに関する計算処理結果を前記端末に返信する、計算処理実行部と、
を備える情報処理装置を含むデータ処理システム。
【請求項２】
前記情報処理装置の部分データ作成部は、
含まれる計算処理対象データ数が互いに異なる部分データを、部分データ間でのデータ重複無く前記母集団から複数抽出して記憶部に格納し、
前記情報処理装置の計算処理実行部は、
端末からの計算処理要求を前記通信部を介して受信し、当該計算処理要求が示す計算処理を、前記記憶部における部分データのうち、含まれる計算処理対象データ数が少ない順に順次実行し、含まれる計算処理対象データ数が少ない部分データ順に計算処理結果を前記端末に返信する、
ことを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記情報処理装置の記憶部は、
計算処理の種類毎に、前記部分データに関する計算処理結果の各部分データ間での統合可否の情報を記憶しており、
前記情報処理装置の部分データ作成部は、
前記部分データたる分割データとして、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く前記母集団から複数抽出して記憶部に格納し、前記部分データたるサンプリングデータとして、含まれる計算処理対象データが互いに異なるデータ群を、データ群間でのデータ重複回避を考慮せず前記母集団から複数抽出して記憶部に格納し、
前記情報処理装置の計算処理実行部は、
前記端末からの計算処理要求を前記通信部を介して受信し、当該計算処理要求が示す計算処理の情報を、前記記憶部の前記統合可否情報に照合し、
該当計算処理が各部分データ間で計算処理結果の統合可であるものであれば、前記記憶部における各分割データに対し該当計算処理を順次実行し、１の分割データに対する計算処理結果が得られるごとに記憶部に格納し、直前に得ている他分割データに関する計算処理結果が記憶部になければ前記計算処理結果を前記端末に返信し、直前に得ている他分割データに関する計算処理結果が記憶部にあれば該当計算処理結果と統合処理し、統合処理した計算処理結果を前記端末に返信し、
該当計算処理が各部分データ間で計算処理結果の統合不可であるものであれば、前記記憶部における各サンプリングデータに対し該当計算処理を実行し、各サンプリングデータに対する計算処理結果が得られるごとに、該当サンプリングデータに関する計算処理結果を前記端末に返信する、
ことを特徴とする請求項１または２に記載のデータ処理システム。
【請求項４】
前記情報処理装置の部分データ作成部は、
予め定めた所定要素を検索キーとして前記母集団から計算処理対象データを検索し、当該検索処理で得た計算処理対象データ群より、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く複数抽出して、或いは、含まれる計算処理対象データ数が互いに異なるデータ群を、データ群間でのデータ重複回避を考慮せず複数抽出して部分データとして記憶部に格納する、  
ことを特徴とする請求項１〜３のいずれかに記載のデータ処理システム。
【請求項５】
前記情報処理装置の計算処理実行部は、
前記端末からの計算停止要求を前記通信部を介して受信し、当該計算停止要求を受けた時点で前記部分データへの計算処理の実行を停止する、
ことを特徴とする請求項１〜４のいずれかに記載のデータ処理システム。
【請求項６】
前記情報処理装置は、
ネットワークで結ばれた従属計算機と通信してその稼働状況を記憶部において記憶しており、
前記計算処理実行部は、前記端末からの計算処理要求を前記通信部を介して受信したならば、前記記憶部において従属計算機の稼働状況を読み取り、計算処理を依頼可能な従属計算機に対し、前記計算処理要求が示す計算処理の情報と、前記記憶部から読み出した１または所定数の部分データとを含む計算依頼を送信し、前記１または所定数の部分データに対する計算処理結果を従属計算機から得られるごとに、該当部分データに関する計算処理結果を前記端末に返信する、
ことを特徴とする請求項１〜５のいずれかに記載のデータ処理システム。
【請求項７】
他装置と通信する通信部と、計算処理対象データの母集団を記憶する記憶部とを備えた情報処理装置が、
所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く前記母集団から複数抽出して部分データとして記憶部に格納する処理と、
端末からの計算処理要求を前記通信部を介して受信し、当該計算処理要求が示す計算処理を、前記記憶部における各部分データに対し順次実行し、１または所定数の部分データに対する計算処理結果が得られるごとに、該当部分データに関する計算処理結果を前記端末に返信する処理と、
を実行することを特徴とするデータ処理方法。
【請求項８】
他装置と通信する通信部と、計算処理対象データの母集団を記憶する記憶部とを備えた情報処理装置に、
所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く前記母集団から複数抽出して部分データとして記憶部に格納する処理と、
端末からの計算処理要求を前記通信部を介して受信し、当該計算処理要求が示す計算処理を、前記記憶部における各部分データに対し順次実行し、１または所定数の部分データに対する計算処理結果が得られるごとに、該当部分データに関する計算処理結果を前記端末に返信する処理と、
を実行させることを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム、データ処理方法、およびデータ処理プログラムに関する。
【背景技術】
【０００２】
ＧＰＳ（Global Positioning System）やＲＦＩＤ、電子マネー、ｅコマースの普及により、これまで電子化されていなかった実世界の人間活動の情報が電子化されるようになりつつある。これら電子化されたデータを収集／分析／活用することで様々なメリットがある。一方、処理対象の前記電子化データは膨大な数となりがちで、計算完了までに長時間を要するため、この点を考慮した技術が提案されている。例えば、検索対象データ全体のうち一部分のみを対象として予備的な検索を実施し、その結果を確認用データとしてクライアントに返送し、その後に全データへの検索要求が来たら、あらためて全データを対象として検索を実施することで、利用者が予期しない結果の返送による転送時間の無駄をなくす技術が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−２６６７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、プログラム開発時などに、前記電子化データに関する計算結果がプログラムのパラメータ値など各種用途に利用される場合がある。プログラムの開発者は、一旦は前記電子化データに関する計算要求を情報処理装置に指示したが、プログラムミスなどで意図しない計算要求となったことが判明した時など、その計算要求を取りやめたい場合もある。また、各種パラメータ等の設定に躊躇しがちなプログラム開発時ゆえに、前記プログラム開発者は、前記電子化データに関する複数段階（サンプリングデータ＝処理対象データの範囲や規模が複数段階）の計算処理結果を順次確認していきたい場合もある。
【０００５】
一方、従来技術を上記状況に適用するとすれば、データ母集団からデータをサンプリングする手法やサンプリングするデータ数などに関しバリエーションが無く、予備的計算も一度しか行われないことになる。この場合の利用者は、一度の予備的計算の結果のみで全データ対象の計算結果を推測する必要が生じる。また、予備的計算が一度のみであるから、計算要求がプログラム開発の意図に沿ったものであったか否か、プログラム開発者が計算結果を適切に検証することは難しく、結局は全データ対象の計算処理を実行せざるを得ないこととなりやすい。従って、計算要求が意図に沿わないものであったとしても、全データ対象の計算処理が実行されることになり、計算処理を行う情報処理装置における計算時間や計算能力の無駄使いが非常に大きくなるという問題点がある。こうした問題点は、処理対象のデータ数が膨大であればあるほど、より大きくなる。
【０００６】
そこで本発明は上記課題を鑑みてなされたものであり、情報処理装置における計算処理時間や計算処理能力の効率的な利用を図る技術の提供を主たる目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決する本発明のデータ処理システムは、例えば、ＧＰＳ装置から得た位置データや、企業や商店等での販売実績データなど、膨大な数のデータに対して、四則演算の他、平均値、合計値、各種偏差、など各種統用の計算処理などを行う情報処理装置からなるものであり、一例としてクライアントから計算要求を受けて該当計算処理を実行するサーバ装置を想定できる。
【０００８】
こうしたデータ処理システムにおける前記情報処理装置は、他装置と通信する通信部と、計算処理対象データの母集団を記憶する記憶部と、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く前記母集団から複数抽出して部分データとして記憶部に格納する、部分データ作成部と、端末からの計算処理要求を前記通信部を介して受信し、当該計算処理要求が示す計算処理を、前記記憶部における各部分データに対し順次実行し、１または所定数の部分データに対する計算処理結果が得られるごとに、該当部分データに関する計算処理結果を前記端末に返信する、計算処理実行部とを備える。
【０００９】
なお、前記情報処理装置の部分データ作成部は、含まれる計算処理対象データ数が互いに異なる部分データを、部分データ間でのデータ重複無く前記母集団から複数抽出して記憶部に格納するとしてもよい。
【００１０】
この場合、前記情報処理装置の計算処理実行部は、端末からの計算処理要求を前記通信部を介して受信し、当該計算処理要求が示す計算処理を、前記記憶部における部分データのうち、含まれる計算処理対象データ数が少ない順に順次実行し、含まれる計算処理対象データ数が少ない部分データ順に計算処理結果を前記端末に返信することとなる。
【００１１】
また、前記情報処理装置の記憶部は、計算処理の種類毎に、前記部分データに関する計算処理結果の各部分データ間での統合可否の情報を記憶しているとしてもよい。
【００１２】
この時、前記情報処理装置の部分データ作成部は、前記部分データたる分割データとして、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く前記母集団から複数抽出して記憶部に格納し、前記部分データたるサンプリングデータとして、含まれる計算処理対象データが互いに異なるデータ群を、データ群間でのデータ重複回避を考慮せず前記母集団から複数抽出して記憶部に格納するとしてもよい。
【００１３】
また、前記情報処理装置の計算処理実行部は、前記端末からの計算処理要求を前記通信部を介して受信し、当該計算処理要求が示す計算処理の情報を、前記記憶部の前記統合可否情報に照合する。そして、該当計算処理が各部分データ間で計算処理結果の統合可であるものである時、前記計算処理実行部は、前記記憶部における各分割データに対し該当計算処理を順次実行し、１の分割データに対する計算処理結果が得られるごとに記憶部に格納し、直前に得ている他分割データに関する計算処理結果が記憶部になければ前記計算処理結果を前記端末に返信し、直前に得ている他分割データに関する計算処理結果が記憶部にあれば該当計算処理結果と統合処理し、統合処理した計算処理結果を前記端末に返信する。他方、該当計算処理が各部分データ間で計算処理結果の統合不可であるものである時、前記計算処理実行部は、前記記憶部における各サンプリングデータに対し該当計算処理を実行し、各サンプリングデータに対する計算処理結果が得られるごとに、該当サンプリングデータに関する計算処理結果を前記端末に返信する。
【００１４】
また、前記情報処理装置の部分データ作成部は、予め定めた所定要素を検索キーとして前記母集団から計算処理対象データを検索し、当該検索処理で得た計算処理対象データ群より、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く複数抽出して、或いは、含まれる計算処理対象データ数が互いに異なるデータ群を、データ群間でのデータ重複回避を考慮せず複数抽出して部分データとして記憶部に格納する、としてもよい。
【００１５】
また、前記情報処理装置の計算処理実行部は、前記端末からの計算停止要求を前記通信部を介して受信し、当該計算停止要求を受けた時点で前記部分データへの計算処理の実行を停止する、としてもよい。
【００１６】
また、前記情報処理装置は、ネットワークで結ばれた従属計算機と通信してその稼働状況を記憶部において記憶しているとしてもよい。この場合、前記計算処理実行部は、前記端末からの計算処理要求を前記通信部を介して受信したならば、前記記憶部において従属計算機の稼働状況を読み取り、計算処理を依頼可能な従属計算機に対し、前記計算処理要求が示す計算処理の情報と、前記記憶部から読み出した１または所定数の部分データとを含む計算依頼を送信し、前記１または所定数の部分データに対する計算処理結果を従属計算機から得られるごとに、該当部分データに関する計算処理結果を前記端末に返信する、とすれば好適である。
【００１７】
また、本発明のデータ処理方法は、他装置と通信する通信部と、計算処理対象データの母集団を記憶する記憶部とを備えた情報処理装置が、以下の処理を実行することを特徴とする。すなわち、前記情報処理装置は、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く前記母集団から複数抽出して部分データとして記憶部に格納する処理と、端末からの計算処理要求を前記通信部を介して受信し、当該計算処理要求が示す計算処理を、前記記憶部における各部分データに対し順次実行し、１または所定数の部分データに対する計算処理結果が得られるごとに、該当部分データに関する計算処理結果を前記端末に返信する処理と、を実行する。
【００１８】
また、本発明のデータ処理プログラムは、他装置と通信する通信部と、計算処理対象データの母集団を記憶する記憶部とを備えた情報処理装置に、以下の処理を実行させることを特徴とする。すなわち、前記データ処理プログラムは、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く前記母集団から複数抽出して部分データとして記憶部に格納する処理と、端末からの計算処理要求を前記通信部を介して受信し、当該計算処理要求が示す計算処理を、前記記憶部における各部分データに対し順次実行し、１または所定数の部分データに対する計算処理結果が得られるごとに、該当部分データに関する計算処理結果を前記端末に返信する処理と、を前記情報処理装置に実行させる。
【発明の効果】
【００１９】
本発明によれば、情報処理装置における計算処理時間や計算処理能力の効率的な利用を図ることができる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態のデータ処理システムのネットワーク構成図である。
【図２】サーバ計算機（情報処理装置）のハードウェア構成を示す図である。
【図３】クライアント計算機（端末）のハードウェア構成を示す図である。
【図４】母集団テーブルと部分データとの関係を説明した図である。
【図５】本実施形態の母集団テーブルの例を示す図である。
【図６】本実施形態のデータ処理方法の処理手順例１を示すフロー図である。
【図７】本実施形態における分割データの例１を示す図である。
【図８】本実施形態における分割データの例２を示す図である。
【図９】本実施形態におけるサンプリングデータの例を示す図である。
【図１０】本実施形態の統合可否テーブルの例を示す図である。
【図１１】本実施形態のデータ処理方法の処理手順例２を示すフロー図である。
【図１２】本実施形態における計算処理要求と計算処理結果の例１を示す図である。
【図１３】本実施形態における計算処理要求と計算処理結果の例２を示す図である。
【図１４】他実施形態のデータ処理システムのネットワーク構成図である。
【図１５】他実施形態における従属計算機のハードウェア構成を示す図である。
【図１６】他実施形態におけるデータ処理方法の処理手順例を示す図である。
【発明を実施するための形態】
【００２１】
−−−システム構成−−−
以下に本発明の実施形態について図面を用いて詳細に説明する。図１は、本実施形態のデータ処理システム１０のネットワーク構成図である。図１に示すデータ処理システム１０は、利用者が大量のデータに関する計算処理結果を効率的に推測可能な情報を提供可能であり、情報処理装置における計算処理時間や計算処理能力の効率的な利用を図るコンピュータシステムである。本実施形態において、前記データ処理システム１０（以下システム１０）は、例えば、サーバ計算機１００（情報処理装置）を含むものである。このサーバ計算機１００はクライアント計算機２００（端末）から計算処理要求を受けて計算処理対象データに対する計算処理を実行し、その結果を返信する。そのため、前記サーバ計算機１００とクライアント計算機２００はネットワーク１９０で結ばれている。
【００２２】
図２は、サーバ計算機（情報処理装置）のハードウェア構成を示す図である。こうした本実施形態における前記サーバ計算機１００は、ハードディスクドライブなどの不揮発性記憶装置たる記憶部１０１に格納されたプログラム１０２をメモリ１０３に読み出し、演算装置たるＣＰＵ１０４により実行する。また、前記サーバ計算機１００は、コンピュータ装置が一般に備えている各種キーボードやボタン類などの入力装置１０５、ディスプレイなどの出力装置１０６を備えることができる。また、前記クライアント計算機２００との間のデータ授受を担うＮＩＣ（Network Interface Card）など通信部１０７を有している。
【００２３】
続いて、前記サーバ計算機１００が、例えばプログラム１０２に基づき前記記憶部１０１にて構成・保持する機能部につき説明を行う。なお、前記サーバ計算機１００は、記憶装置１０１（記憶部）において、母集団テーブル１２５、分割データ１２６、サンプリングデータ１２７、統合可否テーブル１２８を格納している（各テーブルについては後述する）。
【００２４】
前記サーバ計算機１００は、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く前記母集団テーブル１２５から複数抽出して部分データとして記憶部１０１に格納する、部分データ作成部１１０を備える。
【００２５】
また、前記サーバ計算機１００は、クライアント計算機２００からの計算処理要求を前記通信部１０７を介して受信し、当該計算処理要求が示す計算処理を、前記記憶部１０１における各部分データに対し順次実行し、１または所定数の部分データに対する計算処理結果が得られるごとに、該当部分データに関する計算処理結果を前記クライアント計算機２００に返信する、計算処理実行部１１１を備える。
【００２６】
なお、前記部分データ作成部１１０は、含まれる計算処理対象データ数が互いに異なる部分データを、部分データ間でのデータ重複無く前記母集団テーブル１２５から複数抽出し、分割データ１２６として記憶部１０１に格納するとしてよい。
【００２７】
この場合、前記計算処理実行部１１１は、クライアント計算機２００からの計算処理要求を前記通信部１０７を介して受信し、当該計算処理要求が示す計算処理を、前記記憶部１０１における部分データ＝分割データ１２６のうち、含まれる計算処理対象データ数が少ない順に順次実行し、含まれる計算処理対象データ数が少ない部分データ順＝分割データ順に計算処理結果を前記クライアント計算機２００に返信する、こととなる。
【００２８】
また、前記記憶部１０１は、計算処理の種類毎に、前記部分データに関する計算処理結果の各部分データ間での統合可否の情報として、統合可否テーブル１２８を記憶しているとしてもよい。この場合、前記部分データ作成部１１０は、前記部分データたる分割データ１２６として、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く前記母集団テーブル１２５から複数抽出して記憶部１０１に格納する。また、前記部分データ作成部１１０は、前記部分データたるサンプリングデータ１２７として、含まれる計算処理対象データが互いに異なるデータ群を、データ群間でのデータ重複回避を考慮せず前記母集団テーブル１２５から複数抽出して記憶部１０１に格納する。
【００２９】
一方、前記計算処理実行部１１１は、前記クライアント計算機２００からの計算処理要求を前記通信部１０７を介して受信し、当該計算処理要求が示す計算処理の情報を、前記記憶部１０１の前記統合可否テーブル１２８に照合する。この照合の結果、該当計算処理が各部分データ間で計算処理結果の統合可であるものであれば、前記計算処理実行部１１１は、前記記憶部１０１における各分割データ１２６に対し該当計算処理を順次実行し、１の分割データ１２６に対する計算処理結果が得られるごとに記憶部１０１に格納し、直前に得ている他分割データに関する計算処理結果が記憶部１０１になければ前記計算処理結果を前記クライアント計算機２００に返信する。また、直前に得ている他分割データに関する計算処理結果が記憶部１０１にあれば該当計算処理結果と統合処理し、統合処理した計算処理結果を前記クライアント計算機２００に返信する。
【００３０】
他方、前記照合の結果、該当計算処理が各部分データ間で計算処理結果の統合不可であるものであれば、前記計算処理実行部１１１は、前記記憶部１０１における各サンプリングデータ１２７に対し該当計算処理を実行し、各サンプリングデータ１２７に対する計算処理結果が得られるごとに、該当サンプリングデータ１２７に関する計算処理結果を前記クライアント計算機２００に返信することとなる。
【００３１】
なお、上記で述べた「部分データ間で計算処理結果の統合可」とは、例えば、計算処理要求が示す計算処理が「平均」や「合計値」などであれば、ある分割データＡに対して既に得られている計算処理結果ａと、今時得られた分割データＢに関する計算処理結果ｂとは「統合」できることを意味する。具体的には、前記計算処理結果ａが、３つの計算処理対象データの平均値ａ１であり、前記計算処理結果ｂが、６つの計算処理対象データの平均値ｂ１である時、“（（平均値ａ１×３）＋（平均値ｂ１×６））/（６＋３）”の計算を行えば、前記計算処理結果ｂに前記計算処理結果ａを統合することができる。一方、例えば、計算処理要求が示す計算処理が「標準偏差」などであれば、ある分割データＡに対して既に得られている計算処理結果ａと、今時得られた分割データＢに関する計算処理結果ｂとを「統合」できないことになる。
【００３２】
また、前記サーバ計算機１００の部分データ作成部１１０は、予め定めた所定要素（例：ユーザＩＤなど）を検索キーとして前記母集団テーブル１２５から計算処理対象データを検索し、当該検索処理で得た計算処理対象データ群より、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く複数抽出して、或いは、含まれる計算処理対象データ数が互いに異なるデータ群を、データ群間でのデータ重複回避を考慮せず複数抽出して部分データとして記憶部１０１に格納するとしてもよい。
【００３３】
また、前記サーバ計算機１００の計算処理実行部１１１は、前記クライアント計算機２００からの計算停止要求を前記通信部１０７を介して受信し、当該計算停止要求を受けた時点で前記部分データへの計算処理の実行を停止する、としてもよい。
【００３４】
図３はクライアント計算機２００のハードウェア構成を示す図である。一方、前記クライアント計算機２００は、例えば、プログラム開発を行っていて、前記母集団テーブル１２５における計算処理対象データに関する計算処理結果を、プログラム開発に活用したいユーザが利用する端末である。このクライアント計算機２００は、コンピュータとして、当然に、ハードディスクドライブなどの不揮発性記憶装置たる記憶部２０１に格納されたプログラム２０２をメモリ２０３に読み出し、演算装置たるＣＰＵ２０４により実行する。また、前記クライアント計算機２００は、コンピュータ装置が一般に備えている各種キーボードやボタン類などの入力装置２０５、ディスプレイなどの出力装置２０６を備える。また、前記サーバ計算機１００との間のデータ授受を担うＮＩＣ（Network Interface Card）など通信部２０７を有している。前記クライアント計算機２００は、例えば前記プログラム２０２として計算処理要求／結果受信／表示プログラム２１０を備える。前記クライアント計算機２００は、このプログラム２１０を実行することで、入力装置２０５より前記ユーザからの計算処理要求の指示受け付け、受け付けた計算処理要求をサーバ計算機１００へ送信、サーバ計算機１００からの計算処理要求の受信、計算処理結果を出力装置２０６へ表示、という一連の処理を行う。
【００３５】
これまで示した前記システム１０を構成する前記サーバ計算機１００における各部１１０〜１１１はハードウェアとして実現してもよいし、メモリやＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの適宜な記憶装置に格納したプログラムとして実現するとしてもよい。この場合、各情報処理装置のＣＰＵがプログラム実行に合わせて記憶装置より該当プログラムをメモリに読み出して、これを実行することとなる。
【００３６】
−−−テーブル構造例１（母集団テーブル）−−−
次に、本実施形態の前記システム１０が利用するテーブルの例について説明する。図４は母集団テーブル１２５と部分データとの関係を説明した図であり、図５は本実施形態の母集団テーブル１２５の例を示す図である。前記母集団テーブル１２５は、全ての計算処理対象データの集合である。図５に示す母集団テーブル１２５の例では、ＩＤ５０１が“１”〜“９”までの９レコードの計算処理対象データを含む母集団テーブル１２５であり、各レコードは、商品購入を行ったユーザを示す“ＵｓｅｒＩＤ”５０２、購入日たる“ｄａｙ”５０３、購入額たる“Ｐｒｉｃｅ”５０４、購入商品を示す“ＰｒｏｄｕｃｔＩＤ”５０５の各データを含んでいる。
【００３７】
例えば、前記母集団テーブル１２５内のレコード５１１は売上番号たるＩＤが「１」、ユーザＩＤが「Ｕ＿Ａ００１７」の利用者が「２００９年１月６日」に商品ＩＤ「Ｐ＿０００５」の商品を「１０００円」で購入したことを意味する。本実施形態のデータ処理方法は多数のレコード、および多数のテーブルからなる巨大なデータを処理する際に特に効果があるが、ここでは分かりやすくするため９レコードのテーブル１つだけの小さなデータを使って説明をしている。
【００３８】
−−−処理フロー例１（部分データの生成処理）−−−
以下、本実施形態におけるデータ処理方法の実際手順について図に基づき説明する。なお、以下で説明するデータ処理方法に対応する各種動作は、前記システム１０を構成する各装置のメモリに読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【００３９】
図６は本実施形態のデータ処理方法の処理フロー例１を示す図である。この場合、前記サーバ計算機１００の部分データ作成部１１０は、例えば、前記ＮＩＣ１０７を介し前記クライアント計算機２００から、母集団テーブル１２５の分割手法および分割数の指定を受け付ける（ｓ１００）。前記指定が、分割手法として「重複無く均等分割」、分割数として「３」を示すものである場合（ｓ１０１：重複無し均等）、前記部分データ作成部１１０は、前記記憶部１０１の母集団テーブル１２５に対し、計算処理対象データ数のカウントを行ってデータ数「９」を取得し、この「９」つの計算処理対象データを「３」つにグルーピングする処理を行う（ｓ１０２）。
【００４０】
前記部分データ作成部１１０が行うこのグルーピング処理は、例えばまず、各分割データが元の母集団テーブル１２５となるべく同様の統計的性質を持つように、前記母集団テーブル１２５において各計算処理対象データを時刻順（“ｄａｙ”を基準に）にソートする。その上で、各計算処理対象データにおける“ＵｓｅｒＩＤ”にハッシュ関数を適用し、所定桁数の整数値に変換する。前記部分データ作成部１１０はこの整数値を例えば「３」で除算し、余りが「０」となった計算処理対象データを前記時刻順に３つ選択し、１つの分割データ７０１ａとする（図７（ａ）に示すＩＤ“１”、“４”、“７”のレコードを含むもの）。次に前記部分データ作成部１１０は、前記分割データ７０１ａに含まれる計算処理対象データを除いて、前記整数値に対する「３」での除算を同様に実行し、余りが「０」となった計算処理対象データを前記時刻順に３つ選択し、２つ目の分割データ７０２ａとする（図７（ｂ）に示すＩＤ“２”、“５”、“８”のレコードを含むもの）。また、前記部分データ作成部１１０は、最後に残った３つの計算処理対象データを３つ目の分割データ７０３ａとする（図７（ｃ）に示すＩＤ“３”、“６”、“９”のレコードを含むもの）。勿論、前記グルーピング処理については他の手法を採用しても構わない。前記部分データ作成部１１０は、こうしたグルーピング処理で得た３つの分割データ７０１ａ〜７０３ａを記憶部１０１に格納し（ｓ１０３）、処理を終了する。
【００４１】
他方、前記クライアント計算機２００からの指定が、分割手法として「重複無く不均等分割」、分割数として「２」を示すものである場合（ｓ１０１：重複無し不均等）、前記部分データ作成部１１０は、前記記憶部１０１の母集団テーブル１２５に対し、計算処理対象データ数のカウントを行ってデータ数「９」を取得し、この「９」つの計算処理対象データを「２」つにグルーピングする処理を行う（ｓ１０４）。
【００４２】
前記部分データ作成部１１０が行うこのグルーピング処理は、例えばまず、各分割データが元の母集団テーブル１２５となるべく同様の統計的性質を持つように、前記母集団テーブル１２５において各計算処理対象データを時刻順（“ｄａｙ”を基準に）にソートする。その上で、各計算処理対象データにおける“ＵｓｅｒＩＤ”にハッシュ関数を適用し、所定桁数の整数値に変換する。前記部分データ作成部１１０はこの整数値を例えば「３」で除算し、例えば、余りが「０」〜「２」となった計算処理対象データを前記時刻順に６つ選択し、１つの分割データ７０１ｂとする（図８（ａ）に示すＩＤ“１”、“４”、“７”、“２”、“５”、“８”のレコードを含むもの）。次に前記部分データ作成部１１０は、最後に残った３つの計算処理対象データを２つ目の分割データ７０２ｂとする（図８（ｂ）に示すＩＤ“３”、“６”、“９”のレコードを含むもの）。勿論、前記グルーピング処理については他の手法を採用しても構わない。前記部分データ作成部１１０は、こうしたグルーピング処理で得た２つの分割データ７０１ｂ、７０２ｂを記憶部１０１に格納し（ｓ１０５）、処理を終了する。
【００４３】
なお、上記ではあくまで分割処理の一例として、母集団テーブル１２５が含む処理対象データを３つないし２つのより小さな分割データ７０１ａ〜７０３ａ、ないし７０１ｂ〜７０２ｂに分割する例を示した。母集団テーブル１２５が含む計算処理対象データの数に応じて、上記同様の手法で１０分割、１００分割するとしても勿論よい。１０分割する場合、前記部分データ作成部１１０は、例えばまず、各分割データが元の母集団テーブル１２５となるべく同様の統計的性質を持つように、前記母集団テーブル１２５において各計算処理対象データを時刻順（“ｄａｙ”を基準に）にソートする。その上で、各計算処理対象データにおける“ＵｓｅｒＩＤ”にハッシュ関数を適用し、所定桁数の整数値に変換する。前記部分データ作成部１１０はこの整数値を例えば「１０」で除算し、余りが「１」となった計算処理対象データを選択することで、元の母集団テーブル１２５での計算処理対象データ数を１０分の１した、１つの分割データを得ることができる。また同様に、前記部分データ作成部１１０は前記整数値を例えば「１００」で除算し、余りが「１」となった計算処理対象データを選択することで、元の母集団テーブル１２５での計算処理対象データ数を１００分の１した、１つの分割データを得ることができる。
【００４４】
一方、前記クライアント計算機２００からの指定が、分割手法として「重複回避せず不均等分割」、分割数として「２」を示すものである場合（ｓ１０１：重複無視不均等）、前記部分データ作成部１１０は、前記記憶部１０１の母集団テーブル１２５に対し、計算処理対象データ数のカウントを行ってデータ数「９」を取得し、この「９」つの計算処理対象データを「２」つにグルーピングする処理を行う（ｓ１０６）。
【００４５】
前記部分データ作成部１１０が行うこのグルーピング処理は、例えば、ランダムサンプリングにより前記母集団テーブル１２５から計算処理対象データを６つ選択し、１つのサンプリングデータ９０１とする（図９（ａ）に示すＩＤ“１”、“４”、“６”、“７”、“８”、“９”のレコードを含むもの）。次に前記部分データ作成部１１０は、最後に残った３つの計算処理対象データを２つ目のサンプリングデータ９０２とする（図９（ｂ）に示すＩＤ“１”、“６”、“８”のレコードを含むもの）。勿論、前記グルーピング処理については他の手法を採用しても構わない。前記部分データ作成部１１０は、こうしたグルーピング処理で得た２つのサンプリングデータ９０１〜９０２を記憶部１０１に格納し（ｓ１０７）、処理を終了する。なお、含まれるデータ数を「３」として均等にサンプリングデータを生成する場合、前記部分データ作成部１１０は、例えば、ランダムサンプリングにより前記母集団テーブル１２５から計算処理対象データを３つ選択し、１つのサンプリングデータとし、以下同様の処理で、前記母集団テーブル１２５から計算処理対象データを３つ選択する処理を２回実行して、あと２つのサンプリングデータを得ることとなる。
【００４６】
なお、前記部分データ作成部１１０は、予め定めた所定要素（例：ユーザＩＤなど）を検索キーとして前記母集団テーブル１２５から計算処理対象データを検索し、当該検索処理で得た計算処理対象データ群より、所定数の計算処理対象データからなるデータ群を、データ群間でのデータ重複無く或いはデータ重複回避を考慮せず複数抽出して部分データとして記憶部１０１に格納するとしてもよい。
【００４７】
この場合、前記部分データ作成部１１０は、表形式データとなっている母集団テーブル１２５において、特定列に関して重複のない値の集合を算出し、この集合の大きさを１／１０や１／１００にするようなレコードの抽出方法を採用する。例えば、母集団テーブル１２５において、“ＵｓｅｒＩＤ”５０２の列の値が「Ｕ＿Ａ００１７、Ｕ＿Ｂ００３１、Ｕ＿Ａ０００１、Ｕ＿Ｓ０００１」のうちから、１／２にあたる「Ｕ＿Ａ０００１、Ｕ＿Ｓ０００１」の２つを選択してキーとし、該当ＵｓｅｒＩＤを持つレコードを母集団テーブル１２５から抽出する。こうして抽出して分割データとしたのが図９（ｃ）に示す分割データ９０３である。
【００４８】
なお、前記サーバ計算機１００の部分データ作成部１１０は、記憶部１０１における前記母集団テーブル１２５に対する変更イベントを監視し、母集団テーブル１２５に変更が生じたことを検知すると、上記フローを実行して分割データやサンプリングデータを生成する。
【００４９】
また、前記母集団テーブル１２５が複数のテーブルから構成される場合、前記部分データ作成部１１０は、全てのテーブルに対して部分データを生成してもよいし、或いは、一部の大きなテーブル（例：データ数最大のもの）を検索して該当テーブルに対してのみ部分データを生成するとしてもよい。
【００５０】
−−−テーブル構造例２（部分データおよび統合可否テーブル）−−−
上述のように生成された部分データ、つまり分割データ１２６およびサンプリングデータ１２７についてその構造例を示す。図７は本実施形態における分割データの例１を示す図であり、図８は本実施形態における分割データの例２を示す図である。分割データ１２６は、母集団テーブル１２５（＝処理対象データ全体）を分割して重複なく保持するものである。図７に示す分割データ１２６は、分割データ７０１ａ〜７０３ａの３つの分割データを含んでいる。これら分割データ７０１ａ〜７０３ａは、含んでいる計算処理対象データ数が同じ「３」つである。ただし、分割データ７０１ａ〜７０３ａの各間で、各計算処理対象データは重複していない。一方、図８に示す分割データ１２６は、分割データ７０１ｂ〜７０２ｂの２つの分割データを含んでいる。これら分割データ７０１ｂ〜７０２ｂは、含んでいる計算処理対象データ数がそれぞれ「６」つと「３」つで異なっている。また、分割データ７０１ｂ〜７０２ｂの各間で、各計算処理対象データは重複していない。
【００５１】
また、図９は本実施形態におけるサンプリングデータ１２７の例を示す図である。サンプリングデータ１２７は、母集団テーブル１２５（＝計算処理対象データ全体）から少量をサンプリングしてサンプリング元データ（＝母集団テーブル１２５）と重複する形で保持するものである。図９に示すサンプリングデータ１２７は、サンプリングデータ９０１〜９０２の２つのサンプリングデータを含んでいる。これらサンプリングデータ９０１〜９０２は、含んでいる計算処理対象データ数がそれぞれ「６」つと「３」つで異なっている。ただし、サンプリングデータ９０１〜９０２の各間で、各計算処理対象データは重複しているものがある（図の例では、ＩＤ“１”、“６”、“８”が重複）。
【００５２】
また、図１０は本実施形態の統合可否テーブル１２８の例を示す図である。この統合可否テーブル１２８は、前記部分データに関する計算処理結果の各部分データ間での統合可否の情報を格納しているテーブルである。ここで、「部分データ間で計算処理結果の統合可」とは、例えば、計算処理要求が示す計算処理が「平均」や「合計値」などであれば、ある分割データＡに対して既に得られている計算処理結果ａと、今時得られた分割データＢに関する計算処理結果ｂとは「統合」できることを意味する。具体的には、前記計算処理結果ａが、３つの計算処理対象データの平均値ａ１であり、前記計算処理結果ｂが、６つの計算処理対象データの平均値ｂ１である時、“（（平均値ａ１×３）＋（平均値ｂ１×６））/（６＋３）”の計算を行えば、前記計算処理結果ｂに前記計算処理結果ａを統合することができる。一方、例えば、計算処理要求が示す計算処理が「標準偏差」などであれば、ある分割データＡに対して既に得られている計算処理結果ａと、今時得られた分割データＢに関する計算処理結果ｂとを「統合」できないことになる。
【００５３】
従って、図１０に示す統合可否テーブル１２８の例では、前記計算処理に対応する、“ｓｕｍ”＝合計、“ｃｏｕｎｔ”＝データ数の計数、“ａｖｇ”＝平均値、“ｓｔｄｄｅｖ”＝標準偏差、といった「関数」１１０１をキーとして、統合可否１１０２、経過記録値１０３、算出式１１０４といったデータを対応付けたレコードの集合体となっている。前記経過記録値は、分割データ間で計算結果の統合を行う場合に必要となる値であって、計算処理結果ないし当該計算処理結果を算定するに用いた値であり、関数１１０１が“ｓｕｍ”であれば、後に統合する際にも合計値を単純加算すればよいから“ｓｕｍ”＝合計値であり、関数１１０１が“ｃｏｕｎｔ”であれば、後に統合する際にもレコード数を単純加算すればよいから“ｃｏｕｎｔ”＝レコード数であり、関数１１０１が、“ａｖｇ”であれば、後に統合する際に必要となる、該当平均値を求めるに当たって用いた“ｓｕｍ”＝合計値とこれを除算したレコードの数“ｃｏｕｎｔ”である。関数１１０１のうち、“ｓｔｄｄｅｖ”＝標準偏差、については計算処理結果の統合は出来ないから、この経過記録値１１０３と算出式１１０４の欄は空欄となる。
【００５４】
また、前記算出式１１０４は、分割データ間で計算処理結果を統合する際の計算式であり、例えば、計算処理要求が示す計算処理が“ａｖｇ”＝平均であれば、ある分割データＡに対して既に得られている前記経過記録値１１０３＝“ｓｕｍ１”、“ｃｏｕｎｔ１”と、今時得られた分割データＢに関する前記経過記録値１１０３＝“ｓｕｍ２”、“ｃｏｕｎｔ２”とに基づき、“（ｓｕｍ１＋ｓｕｍ２）／（ｃｏｕｎｔ１＋ｃｏｕｎｔ２）”の計算を実行すれば、前記分割データＡの計算処理結果を分割データＢに統合することができる。或いは、例えば、計算処理結果ａが、３つの計算処理対象データの平均値ａ１であり、計算処理結果ｂが、６つの計算処理対象データの平均値ｂ１である時、“（（平均値ａ１×３）＋（平均値ｂ１×６））/（６＋３）”の計算を行えば、前記計算処理結果ｂに前記計算処理結果ａを統合することができる。
【００５５】
−−−処理フロー例２−−−
続いて、クライアント計算機２００から計算処理要求を受けて計算処理結果の統合等を行う処理について図に基づき説明する。図１１は本実施形態のデータ処理方法の処理フロー例２を示す図である。この場合、前記サーバ計算機１００の計算処理実行部１１１は、前記クライアント計算機２００からの計算処理要求を前記通信部１０７を介して受信し、当該計算処理要求が示す計算処理の情報を、前記記憶部１０１の前記統合可否テーブル１２８に照合する（ｓ２００）。ここで、前記クライアント計算機２００からの計算処理要求の例を図１２に示す。この計算処理要求６０１のデータは、例えばＳＱＬ言語（Structured Query Language）で記述されており、「ＳｏｌｄＩｔｅｍｓ」と名付けられた母集団テーブル１２５の「ｐｒｉｃｅ」列の値の平均（ａｖｇ）の計算結果を要求するものである。
【００５６】
前記ステップｓ２００での照合処理により、該当計算処理“ａｖｇ”は前記統合可否テーブル１２８において、統合可否が「○」＝統合可であるから、各部分データ間で計算処理結果の統合処理可であると判定できる（ｓ２０１：はい）。このように、計算処理要求が示す計算処理の関数が統合処理可能なものであった場合、前記計算処理実行部１１１は、前記記憶部１０１の分割データ１２６の集合の中から処理する分割データを選択する（ｓ２０２）。当該選択処理については、例えば、分割データのうち含まれる計算処理対象データ数が少ない順に選択するとすればよい。前記計算処理実行部１１１はここで選択した分割データにに対して前記計算処理要求が指定した関数で計算を実行する（ｓ２０３）。
【００５７】
ただし、ここでは前記クライアント計算機２００が要求した計算結果だけでなく、後の統合処理のために、前記統合可否テーブル１２８における経過記録値１１０３に関する計算も行なう。例えば、前記計算処理実行部１１１は、前記計算処理要求が示す“ａｖｇ”に関して、図７（ａ）の分割データ７０１ａに対する「ｓｕｍ」と「ｃｏｕｎｔ」を計算し、その結果、「ｓｕｍ：６３３００」、「ｃｏｕｎｔ：４」の値を得て、記憶部１０１に格納しておく。
【００５８】
次に前記計算処理実行部１１１は、ステップｓ２０４に進むが、前記分割データ７０１ａに対する処理が最初の分割データに対する処理のため、直前の結果（＝他の分割データに関する計算処理結果）がない。そのため、前記計算処理実行部１１１は、今時の分割データ７０１ａに関する計算処理結果だけを使って、統合可否テーブル１２８における前記“ａｖｇ”に関する算出式１１０４により、平均値「１５８２５」を算出する（ｓ２０４）。
【００５９】
また、前記計算処理実行部１１１は、前記ステップ２０４で計算した、平均値「１５８２５」を前記クライアント計算機２００に返送し（ｓ２０５）、次の分割データの処理に進む（ｓ２０６）。なお、クライアント計算機２００では前記平均値の値を受信し、出力装置２０６に表示することとなる。図１２の計算処理結果のうち、レコード８０１にその表示例を示す（図では、レコード８０２，８０３も表示されているが、この時点ではレコード８０１のみが表示されているものとする）。欄８１１の「Ｃ」は途中経過値であることを利用者に知らせる記号である。
【００６０】
続いて、前記計算処理実行部１１１は、前記クライアント計算機２００から計算停止要求を受信したか判定する（ｓ２０６）。前記レコード８０１の表示を前記クライアント計算機２００で閲覧したユーザが、これ以上の計算処理の実行を望まないとの意志を持っていたとする。その場合、前記ユーザは前記クライアント計算機２００から計算停止要求をサーバ計算機１００に送信してくる。一方、前記計算処理実行部１１１はこの計算停止要求をクライアント計算機２００から受信し（ｓ２０６：はい）、以降の計算処理を停止し処理を終了する。
【００６１】
他方、前記クライアント計算機２００から計算停止要求を受信していない場合（ｓ２０６：いいえ）、前記計算処理実行部１１１は、前記記憶部１０１において計算処理を未実行の分割データを検索する（ｓ２０７）。このため、計算処理実行部１１１は計算処理結果を得る毎に、記憶部１０１の各分割データに対して計算済みフラグを設定するなどすればよい。計算処理が未実行の分割データが記憶部１０１に無ければ（ｓ２０７：はい）、処理を終了する。
【００６２】
一方、計算処理が未実行の分割データが記憶部１０１に存在すれば（ｓ２０７：いいえ）、前記計算処理実行部１１１は、処理を前記ステップｓ２０２に戻す。ここで選択した分割データが、図７（ｂ）の分割データ７０２ａだったとする。前記計算処理実行部１１１はこの分割データ７０２ａを選択し、この分割データ７０２ａに対し、前記計算処理要求が指定した関数“ａｖｇ”で計算を実行する（ｓ２０３）。上記同様に、前記計算処理実行部１１１は、前記クライアント計算機２００が要求した計算結果だけでなく、後の統合処理のために、前記統合可否テーブル１２８における経過記録値１１０３に関する計算も行なう。例えば、前記計算処理実行部１１１は、前記計算処理要求が示す“ａｖｇ”に関して、図７（ｂ）の分割データ７０２ａに対する「ｓｕｍ」と「ｃｏｕｎｔ」を計算し、その結果、処理結果「ｓｕｍ：３０４８０」、「ｃｏｕｎｔ：３」を得て、記憶部１０１に格納しておく。
【００６３】
次に前記計算処理実行部１１１は、直前までの計算結果、つまり前記分割データ７０１ａに対する計算処理結果である「ｓｕｍ：６３３００」、「ｃｏｕｎｔ：４」のデータを記憶部１０１から読み出し、このデータと、今時の分割データ７０２ａの計算処理結果「ｓｕｍ：３０４８０」、「ｃｏｕｎｔ：３」に、前記算出式１１０４を適用して統合し、新たな値「ｓｕｍ：９３７８０」、「ｃｏｕｎｔ：７」を得て、記憶部１０１を記憶する（ｓ２０４）。
【００６４】
また、前記計算処理実行部１１１は、前記ステップｓ２０４で得た新たな平均値「１３３９７」を、前記クライアント計算機２００に返送する（ｓ２０５）。前記クライアント計算機２００では前記平均値の値を受信し、出力装置２０６に表示することとなる。図１２の計算処理結果のうち、レコード８０２にその表示例を示す（図では、レコード８０１、８０２，８０３が表示されているが、この時点ではレコード８０１、８０２のみが表示されているものとする）。欄８１１の「Ｃ」は途中経過値であることを利用者に知らせる記号である。
【００６５】
続いて、前記計算処理実行部１１１は、前記クライアント計算機２００から計算停止要求を受信したか判定する（ｓ２０６）。前記レコード８０１に加えてレコード８０２の表示を前記クライアント計算機２００で閲覧したユーザが、これ以上の計算処理の実行を望まないとの意志を持っていたとする。その場合、前記ユーザは前記クライアント計算機２００から計算停止要求をサーバ計算機１００に送信してくる。一方、前記計算処理実行部１１１はこの計算停止要求をクライアント計算機２００から受信し（ｓ２０６：はい）、以降の計算処理を停止し処理を終了する。
【００６６】
他方、前記クライアント計算機２００から計算停止要求を受信していない場合（ｓ２０６：いいえ）、前記計算処理実行部１１１は、前記記憶部１０１において計算処理を未実行の分割データを検索する（ｓ２０７）。計算処理が未実行の分割データが記憶部１０１に無ければ（ｓ２０７：はい）、処理を終了する。
【００６７】
一方、計算処理が未実行の分割データが記憶部１０１に存在すれば（ｓ２０７：いいえ）、前記計算処理実行部１１１は、処理を前記ステップｓ２０２に戻す。ここで選択した分割データが、図７（ｃ）の分割データ７０３ａだったとする。前記計算処理実行部１１１はこの分割データ７０３ａを選択し、この分割データ７０３ａに対し、前記計算処理要求が指定した関数“ａｖｇ”で計算を実行する（ｓ２０３）。上記同様に、前記計算処理実行部１１１は、前記クライアント計算機２００が要求した計算結果だけでなく、後の統合処理のために、前記統合可否テーブル１２８における経過記録値１１０３に関する計算も行なう。例えば、前記計算処理実行部１１１は、前記計算処理要求が示す“ａｖｇ”に関して、図７（ｃ）の分割データ７０３ａに対する「ｓｕｍ」と「ｃｏｕｎｔ」を計算し、その結果、処理結果「ｓｕｍ：２２７００」、「ｃｏｕｎｔ：３」を得て、記憶部１０１に格納しておく。
【００６８】
次に前記計算処理実行部１１１は、直前までの計算結果、つまり前記分割データ７０１ａと７０２ａに対する計算処理結果を統合したデータである「ｓｕｍ：９３７８０」、「ｃｏｕｎｔ：７」のデータを記憶部１０１から読み出し、このデータと、今時の分割データ７０３ａの計算処理結果「ｓｕｍ：２２７００」、「ｃｏｕｎｔ：３」に、前記算出式１１０４を適用して統合し、新たな値「ｓｕｍ：１１６４８０」、「ｃｏｕｎｔ：１０」および新たな平均値「１１６４８」を得て、記憶部１０１を記憶する（ｓ２０４）。
【００６９】
また、前記計算処理実行部１１１は、前記ステップｓ２０４で得た新たな平均値「１１６４８」を、前記クライアント計算機２００に返送する（ｓ２０５）。前記クライアント計算機２００では前記平均値の値を受信し、出力装置２０６に表示することとなる。図１２の計算処理結果のうち、レコード８０３にその表示例を示す（図では、レコード８０１、８０２，８０３が全て表示されている）。欄８１１の「Ｆ」は最終結果の値であることを利用者に知らせる記号である。
【００７０】
続いて、前記計算処理実行部１１１は、前記クライアント計算機２００から計算停止要求を受信したか判定する（ｓ２０６）。前記計算処理実行部１１１は計算停止要求をクライアント計算機２００から受信した場合（ｓ２０６：はい）、以降のフローを停止し処理を終了する。他方、前記クライアント計算機２００から計算停止要求を受信していない場合（ｓ２０６：いいえ）、前記計算処理実行部１１１は、前記記憶部１０１において計算処理を未実行の分割データを検索する（ｓ２０７）。計算処理が未実行の分割データが記憶部１０１に無ければ（ｓ２０７：はい）、処理を終了する。
【００７１】
一方、前記ステップ２００でクライアント計算機２００から受信した計算処理要求が、例えば、“ｓｔｄｄｅｖ”＝標準偏差の計算処理を要求するものであったとする。この場合、前記ステップｓ２００での照合処理により、該当計算処理“ｓｔｄｄｅｖ”は前記統合可否テーブル１２８において、統合可否が「×」＝統合不可であるから、各部分データ間で計算処理結果の統合処理が出来ない判定できる（ｓ２０１：いいえ）。
【００７２】
このように、計算処理要求が示す計算処理の関数が統合処理出来ないものであった場合、前記計算処理実行部１１１は、記憶部１０１のサンプリングデータ１２７中から、例えば、含まれる処理対象データ数が最少のものを選択し（ｓ２０８）、このサンプリングデータに対して、前記関数“ｓｔｔｄｅｖ”を適用した計算処理を実行する（ｓ２０９）。図９に示すサンプリングデータ１２７の例では、処理対象データ数最少のサンプリングデータはサンプリングデータ９０１となる。よって、前記計算処理実行部１１１はこのサンプリングデータ９０１に対し、標準偏差の計算を実行する。
【００７３】
前記計算処理実行部１１１は、前記ステップｓ２０９の実行の結果、前記サンプリングデータ９０１に関して、「ｓｔｄｄｅｖ：８８０９」なる計算処理結果を得る。計算処理実行部１１１はこの計算処理結果を、前記クライアント計算機２００に返送する（ｓ２１０）。なお、クライアント計算機２００では前記標準偏差の値を受信し、出力装置２０６に表示することとなる。図１３の計算処理結果のうち、レコード１０１１ａにその表示例を示す（図では、レコード１０１１ａ，１０１１ｂ、１０１２も表示されているが、この時点ではレコード１１０１ａのみが表示されているものとする）。欄１０１５の「Ｃ」は途中経過値であることを利用者に知らせる記号である。
【００７４】
続いて、前記計算処理実行部１１１は、前記クライアント計算機２００から計算停止要求を受信したか判定する（ｓ２１１）。前記レコード１１０１ａの表示を前記クライアント計算機２００で閲覧したユーザが、これ以上の計算処理の実行を望まないとの意志を持っていたとする。その場合、前記ユーザは前記クライアント計算機２００から計算停止要求をサーバ計算機１００に送信してくる。一方、前記計算処理実行部１１１はこの計算停止要求をクライアント計算機２００から受信し（ｓ２１１：はい）、以降の計算処理を停止し処理を終了する。
【００７５】
他方、前記クライアント計算機２００から計算停止要求を受信していない場合（ｓ２１１：いいえ）、前記計算処理実行部１１１は、前記記憶部１０１において計算処理を未実行のサンプリングデータを検索する（ｓ２１２）。このため、計算処理実行部１１１は計算処理結果を得る毎に、記憶部１０１の各サンプリングデータに対して計算済みフラグを設定するなどすればよい。計算処理が未実行のサンプリングデータが記憶部１０１に無ければ（ｓ２１２：はい）、処理を終了する。
【００７６】
一方、計算処理が未実行のサンプリングデータが記憶部１０１に存在すれば（ｓ２１２：いいえ）、前記計算処理実行部１１１は、処理を前記ステップｓ２０９に戻す。ここで選択したサンプリングデータが、図９（ｂ）のサンプリングデータ９０２だったとする。前記計算処理実行部１１１はこのサンプリングデータ９０２を選択し、このサンプリングデータ９０２に対し、前記計算処理要求が指定した関数“ｓｔｄｄｅｖ”で計算を実行する（ｓ２０９）。前記計算処理実行部１１１は、前記ステップｓ２０９の実行の結果、前記サンプリングデータ９０２に関して、「ｓｔｄｄｅｖ：１９８１３」なる計算処理結果を得る。計算処理実行部１１１はこの計算処理結果を、前記クライアント計算機２００に返送する（ｓ２１０）。なお、クライアント計算機２００では前記標準偏差の値を受信し、出力装置２０６に表示することとなる。図１３の計算処理結果のうち、レコード１０１１ｂにその表示例を示す（図では、レコード１０１１ａ，１０１１ｂ、１０１２も表示されているが、この時点ではレコード１１０１ａ、１１０１ｂのみが表示されているものとする）。欄１０１５の「Ｃ」は途中経過値であることを利用者に知らせる記号である。
【００７７】
続いて、前記計算処理実行部１１１は、前記クライアント計算機２００から計算停止要求を受信したか判定する（ｓ２１１）。前記レコード１１０１ａ、１１０１ｂの表示を前記クライアント計算機２００で閲覧したユーザが、これ以上の計算処理の実行を望まないとの意志を持っていたとする。その場合、前記ユーザは前記クライアント計算機２００から計算停止要求をサーバ計算機１００に送信してくる。一方、前記計算処理実行部１１１はこの計算停止要求をクライアント計算機２００から受信し（ｓ２１１：はい）、以降の計算処理を停止し処理を終了する。
【００７８】
他方、前記クライアント計算機２００から計算停止要求を受信していない場合（ｓ２１１：いいえ）、前記計算処理実行部１１１は、前記記憶部１０１において計算処理を未実行のサンプリングデータを検索する（ｓ２１２）。この例では、全サンプリングデータに対する処理は完了したため、前記計算処理実行部１１１は母集団テーブル１２５が含む全処理対象データを選択し、前記関数“ｓｔｄｄｅｖ”を適用した計算処理を実行し、最終結果として「ｓｔｄｄｅｖ：１５３８２」を得る。計算処理実行部１１１はこの結果を前記クライアント計算機２００に返送し、処理を完了する（ｓ２１２：はい→終了）。なお、クライアント計算機２００では前記標準偏差の値を受信し、出力装置２０６に表示することとなる。図１３の計算処理結果のうち、レコード１０１２にその表示例を示す（図では、レコード１０１１ａ，１０１１ｂ、１０１２が表示されている）。欄１０１５の「Ｆ」は最終結果の値であることを利用者に知らせる記号である。
【００７９】
なお、上記例では、クライアント計算機２００からＳＱＬで記述した処理要求がサーバ計算機１００に送信され、リレーショナルデータベースのテーブル形式でサーバ計算機１００に記憶されたデータ（＝分割データやサンプリングデータ）を処理する例を示したが、これに限定するわけではない。たとえば、ＨＴＴＰプロトコルで受け付けたリクエストに対する応答を返す処理で上記実施形態での処理方法を実行するとしてもよい。
【００８０】
−−−他の実施例−−−
上記実施例ではサーバ計算機１００で、部分データをひとつずつ処理する方法を示したが、この処理を複数の計算機で並列に処理することも可能である。これを実現する計算機システムの構成例を図１４に示す。上記実施例のサーバ計算機１００にネットワーク１９１を介して、複数の従属計算機３００を接続し、これらを利用して、並列分散処理を行なうことで、全体の処理時間の短縮が期待できる。
【００８１】
この場合のサーバ計算機１００の構成としては、上記実施例のサーバ計算機１００と同様の構成を備えるものであるが、（例えば、前記計算処理実行部１１１が）前記従属計算機３００と定期的に通信してその稼働状況のデータを記憶部１０１において記憶しているものとする。稼働状況のデータとは、サーバ計算機１００からの計算実行の指示を受けて計算実行中、或いは、計算は実行しておらず待機中、といった状況を示すデータとなる。従って、従属計算機３００側でも、自身の稼働状況についてサーバ計算機１００から問い合わせが来たら、回答するアプリケーションを備えているものとする。
【００８２】
こうした状況において、前記サーバ計算機１００の前記計算処理実行部１１１は新たな機能として、前記従属計算機３００への計算処理の割り振り機能を備えるものとする。この場合の計算処理実行部１１１は、前記クライアント計算機２００からの計算処理要求を前記通信部１０７を介して受信したならば、前記記憶部１０１において従属計算機３００の稼働状況を読み取り、計算処理を依頼可能な従属計算機３００に対し、前記計算処理要求が示す計算処理の情報と、前記記憶部１０１から読み出した１または所定数の部分データとを含む計算依頼を送信し、前記１または所定数の部分データに対する計算処理結果を従属計算機３００から得られるごとに、該当部分データに関する計算処理結果を前記クライアント計算機２００に返信する。
【００８３】
一方、前記従属計算機３００の構成は図１５に示す通りである。前記サーバ計算機１００と同様、ハードディスクドライブなどの不揮発性記憶装置たる記憶部３０１に格納されたプログラム３０２をメモリ３０３に読み出し、演算装置たるＣＰＵ３０４により実行する。また、前記従属計算機３００は、コンピュータ装置が一般に備えている各種キーボードやボタン類などの入力装置３０５、ディスプレイなどの出力装置３０６を備えることができる。また、前記サーバ計算機１００との間のデータ授受を担うＮＩＣ（Network Interface Card）など通信部３０７を有している。また、前記記憶部１０１には、前記サーバ計算機１００から送信されたきた部分データを格納するものとする。
【００８４】
−−−処理フロー例−−−
次に、従属計算機３００へ計算処理を依頼して計算処理の分散化を図る処理について説明する。図１６は他の実施形態のデータ処理方法の処理フロー例を示す図である。ここでは一例として、クライアント計算機２００から得た計算処理要求が、統合処理可能な関数による処理を示していた場合を想定している。
【００８５】
この場合、前記サーバ計算機１００の計算処理実行部１１１は、記憶部１０１における各分割データを処理する従属計算機３００を決定する（ｓ３００）。ここで前記計算処理実行部１１１は、前記記憶部１０１において従属計算機３００の稼働状況を読み取り、例えば、“待機中”など計算処理能力に余裕がある従属計算機３００を、計算処理を依頼可能な従属計算機３００として特定する。或いは、従属計算機３００の計算処理能力のスペックを記憶部１０１に予め保持している場合、稼働状況が“待機中”であり、なおかつ前記スペックがより高速な従属計算機３００に対し、処理対象データ数がより多い分割データを割り当てるなどとしてもよい。
【００８６】
前記計算処理実行部１１１は、前記ステップｓ３００で決定した割り振りに従って、各従属計算機３００に対し、処理対象の分割データと処理内容とを送信する（ｓ３０１）。一方、前記従属計算機３００は、前記サーバ計算機１００からのデータを受信し、指示に従って自身に割り振られた分割データに対する計算処理を実行し、その計算結果を前記サーバ計算機１００に返すこととなる。
【００８７】
なお、従属計算機３００で計算処理対象となる部分データであるが、前記サーバ計算機１００から従属計算機３００に対し必要な部分データを随時送信するとしても、部分データ作成時にサーバ計算機１００から従属計算機３００に部分データの事前配布を実行しておくとしてもよい。事前配布の場合、前記サーバ計算機１００は、各従属計算機３００に対し、従属計算機３００が持つ部分データの計算処理を指示することとなる。或いは、前記サーバ計算機１００と従属計算機３００とで共有された記憶装置（ネットワーク１９１上に配置）に部分データを格納しておき、その位置情報を従属計算機３００に知らせる方法でも構わない。
【００８８】
前記ステップｓ３０１の後、前記サーバ計算機１００の計算処理実行部１１１は、前記従属計算機３００からの返信待ち状態になる（ｓ３０２）。その後、前記従属計算機３００からの返信を受信すると（ｓ３０３）、ステップｓ３０４に処理を進める。このステップｓ３０４では、上記実施例と同じ処理（図１１のステップｓ２０４）を実行し、全分割データの計算処理が完了するまで、前記ステップｓ３０４〜ｓ３０５を繰り返す。なお、前記ステップｓ３０５は、図１１でのステップｓ２０５に該当する。
【００８９】
ここでは、分割データの場合の処理例を示したが、サンプリングデータに対しても同様に、上記実施例でサーバ計算機１００が行った処理（図１１のステップｓ２０８）を実行し、他方、前記ステップｓ２０９を従属計算機３００に実行させることで並列分散処理可能である。
【００９０】
以上、本実施形態によれば、サーバ計算機１００側では、処理対象データ量を段階的に増やしながら、部分データに対する処理結果をクライアント側に順次返すことで、全データを対象とした場合に長時間かかる処理について、例えば、おおまかな結果を途中段階でユーザ側に随時提供することができる。特に、ある項目の平均値の大まかな値が知りたい場合や、利用者が意図しない計算が行われてしまった場合などに対し、全データ対象の長時間の計算が完了するのを待たずに処理を中断する対応が可能となり、作業時間の大幅な短縮などの効果が期待できる。また、クライアント計算機２００では、全データを処理するための処理要求と、部分データを処理するための処理要求の２種類の要求を別々に作成する必要がないため、処理要求の効率化等が期待できる。
【００９１】
したがって、利用者が大量のデータに関する計算処理結果を効率的に推測可能な情報を提供可能であり、情報処理装置における計算処理時間や計算処理能力の効率的な利用を図ることができる。
【００９２】
以上、本発明の実施の形態について、その実施の形態に基づき具体的に説明したが、これに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【符号の説明】
【００９３】
１０  データ処理システム
１００  サーバ計算機（情報処理装置）
１０１、２０１、３０１  記憶部
１０２、２０２、３０２  プログラム
１０３、２０３、３０３  メモリ（Random Access Memory）
１０４、２０４、３０４  ＣＰＵ（Central Processing Unit）
１０５、２０５、３０５  入力装置
１０６、２０６、３０６  出力装置
１０７、２０８、３０７  ＮＩＣ（通信部）
１１０  部分データ作成部
１１１  計算処理実行部
１２５  母集団テーブル
１２６  分割データ
１２７  サンプリングデータ
１２８  統合可否テーブル
１９０  ネットワーク
２００  クライアント計算機（端末）
３００  従属計算機
【図１】
2010271931.tif 000003
【図２】
2010271931.tif 000004
【図３】
2010271931.tif 000005
【図４】
2010271931.tif 000006
【図５】
2010271931.tif 000007
【図６】
2010271931.tif 000008
【図７】
2010271931.tif 000009
【図８】
2010271931.tif 000010
【図９】
2010271931.tif 000011
【図１０】
2010271931.tif 000012
【図１１】
2010271931.tif 000013
【図１２】
2010271931.tif 000014
【図１３】
2010271931.tif 000015
【図１４】
2010271931.tif 000016
【図１５】
2010271931.tif 000017
【図１６】
2010271931.tif 000018