(57)【要約】【課題】クライアント装置とサーバ装置との間のネットワークトラフィックを軽減する。【解決手段】  情報処理システムは、クライアント装置とサーバ装置とを含み、サーバ装置はクエリに基づきデータに対する問い合わせ処理を行い、値リストと、値番号リストとを記憶し、値リストページの要求に基づき、値リストから値リストページを抽出し、問い合わせの結果が参照する値番号リスト、または、抽出された値リストページをクライアント装置に送信し、クライアント装置は、サーバ装置から送信された値リストページを記憶し、サーバ装置から送信された値番号リストに基づいて、第２記憶手段に、値リストページが格納されているか否かを判定し、値リストページが格納されていない場合、要求をサーバ装置に送信し、値リストページが格納されている場合、サーバ装置から送信された値番号リストに基づいて、値リストページを参照し、クエリに対する応答を生成する。【選択図】      図１４
2017062698.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置と、クライアント装置とを含み、
前記サーバ装置は、
前記クライアント装置から送信されたクエリに基づき、データに対する問い合わせ処理を行う問い合わせ処理手段と、
前記データの一覧を示す値リストと、前記データの位置を示す値番号の一覧を示す値番号リストとを記憶する第１記憶手段と、
前記クライアント装置からの、該値番号リストに含まれる値番号に対応する値を含む値リストページの要求に基づき、該値リストページに関連する前記値リストから、該値を含む所定の範囲のレコードを、前記値リストページとして抽出する抽出手段と、
前記問い合わせの結果が参照する値番号リスト、または、前記抽出された値リストページを前記クライアント装置に送信する通信手段とを備え、
前記クライアント装置は、
前記サーバ装置から送信された値リストページを記憶する第２記憶手段と、
前記サーバ装置から送信された値番号リストに基づいて、前記第２記憶手段に、前記値番号リストに含まれる値番号に対応する値が含まれる値リストページが格納されているか否かを判定し、前記第２記憶手段に前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されていない場合、前記要求を前記サーバ装置に送信し、前記第２記憶手段に前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されている場合、前記サーバ装置から送信された値番号リストに基づいて、前記第２記憶手段に格納された値リストページを参照し、前記クエリに対する応答を生成する生成手段と、
を備える情報処理システム。
【請求項２】
前記サーバ装置は、
前記値リストに、該値リストが一意であることを示す識別子をヘッダとして付与する付与手段を備え、
前記抽出手段は、
前記値リストページに、該値リストページの抽出元の値リストと同様の識別子をヘッダとして付与し、
前記付与手段は、
前記値リストの更新を検知する度に、前記値リストの識別子を更新する請求項１に記載の情報処理システム。
【請求項３】
前記情報処理システムは、
前記値リストページを格納可能なストレージを備え、
前記生成手段は、前記第２記憶手段に前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されていない場合、前記ストレージに該値リストページが格納されているか否か判定し、前記ストレージに該値リストページが格納されていない場合、前記サーバ装置に該値リストページを要求する
請求項２に記載の情報処理システム。
【請求項４】
前記生成手段は、前記ストレージに前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されている場合、または、前記サーバ装置から前記要求に対する値リストページを受信した場合、前記第２記憶手段に空きがあるか否か判定し、前記第２記憶手段に空きがない場合、前記第２記憶手段に格納された所定の条件を満たす値リストページを特定し、特定した値リストページの領域に前記値番号リストに含まれる値番号に対応する値を含む値リストページを移動させ、前記第２記憶手段に空きがある場合、前記値番号リストに対応する値リストページを前記第２記憶手段に移動させ、
前記生成手段は、前記第２記憶手段に移動させた値リストページに基づき、前記応答を生成する請求項３に記載の情報処理システム。
【請求項５】
前記値リストは、前記生成部が再利用するか否かを判断する再利用フラグをヘッダとして含み、
前記抽出手段は、
前記値リストページに、該値リストページの抽出元の値リストと同様の再利用フラグを該値リストページのヘッダとして付与し、
前記生成手段は、
前記再利用フラグに不可が設定されている値リストページがある場合、前記再利用フラグに不可が設定されている値リストページを破棄し、前記再利用フラグに不可が設定されている値リストページがない場合、所定の値リストページを前記ストレージに移動させ、
前記生成手段は、前記破棄または前記移動させた値リストページの領域に、前記値番号リストに対応する値リストページを移動させる請求項４に記載の情報処理システム。
【請求項６】
前記サーバ装置は、
前記値番号リストをソートするソート手段を備え、
前記送信手段は、
前記ソートされた値番号リスト、または、前記ソートされた値番号リストと、該値番号リストに対応する値リストページとを前記クライアント装置に送信し、
前記生成手段は、
前記ソートされた値番号リストに基づき、前記ソートされた値番号リストに対応する値リストページを参照して、前記クエリに対する応答を生成し、
前記クライアント装置は、
前記生成手段が生成したクエリに対する応答を、前記ソートされる前の値番号の添え字に基づいたクエリに対する応答に復元する復元手段を備える請求項１から請求項５のいずれか１項に記載の情報処理システム。
【請求項７】
前記ストレージは、
前記ソート手段が前記ソート結果を復元する際に使用する一時保存領域を含み、
前記復元手段は、
前記一時保存領域を用いて、前記クエリに対する応答を復元する請求項６に記載の情報処理システム。
【請求項８】
サーバ装置と、クライアント装置との情報処理方法であって、
前記サーバ装置は、
データの一覧を示す値リストと、前記データの位置を示す値番号の一覧を示す値番号リストを記憶し、
クライアント装置から送信されたクエリに基づき、前記データに対して問い合わせを行い、
前記クライアント装置からの、該値番号リストに含まれる値番号に対応する値を含む値リストページの要求に基づき、該値リストページに関連する前記値リストから、該値を含む所定の範囲のレコードを、前記値リストページとして抽出し、
前記問い合わせの結果が参照する値番号リスト、または、前記抽出された値リストページを前記クライアント装置に送信し、
前記クライアント装置は、
前記サーバ装置から送信された値リストページを記憶し、
前記サーバ装置から送信された値番号リストに基づいて、前記第２記憶手段に、前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されているか否かを判定し、前記第２記憶手段に前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されていない場合、前記要求を前記サーバ装置に送信し、前記第２記憶手段に前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されている場合、前記サーバ装置から送信された値番号リストに基づいて、前記第２記憶手段に格納された値リストページを参照し、前記クエリに対する応答を生成する情報処理方法。
【請求項９】
サーバ装置に対してクエリを送信し、前記クエリに基づき、問い合わせ処理を行った結果が参照するデータの位置を示す値番号の一覧を示す値番号リストを受信する送受信手段と、
前記受信した値番号リストに含まれる値番号に対応する値を含む値リストの一部である値リストページを格納可能な記憶手段と、
前記値リストページが前記記憶手段に格納されているか否か判定し、前記値リストページが前記記憶手段に格納されていない場合、前記サーバ装置に前記値リストページを要求し、前記値リストページが格納されている場合、前記受信した値番号リストに基づき、前記値リストページを参照して、前記クエリに対する応答を生成する生成手段と、
を備えるクライアント装置。
【請求項１０】
サーバ装置に対してクエリを送信する処理と、
前記クエリに基づき、問い合わせ処理を行った結果が参照するデータの位置を示す値番号の一覧を示す値番号リストを受信する処理と、
前記受信した値番号リストに含まれる値番号に対応する値を含む値リストの一部である値リストページを保持しているか否か判定し、前記値リストページを保持していない場合、前記サーバ装置に前記値リストページを要求し、前記値リストページを保持している場合、前記受信した値番号リストに基づき、前記値リストページを参照して、前記クエリに対する応答を生成する処理と、
をコンピュータに実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムを管理する技術に関する。
【背景技術】
【０００２】
データを列ごとにまとめて扱う列指向型データベースが知られている。列指向データベースは列方向にデータをまとめて扱うため、特定の列の値をまとめて処理することに非常に優れている。
【０００３】
このような列指向データベースに関する技術が、例えば、特許文献１に記載されている。特許文献１には、列ベース編成及び圧縮するデータパッキング技法に従ったコンパクトな構造のデータに対し、補助的な列指向のデータ構造のデータがローカルキャッシュメモリ内に生成されることにより、効率的な問い合わせ処理を行う技術が記載されている。
【０００４】
また、特許文献２には、クライアントからコマンドが発行される前に、そのコマンドによる検索結果が、クライアントのキャッシュに存在し、かつ検索結果のバージョンが、サーバのバージョンと一致する場合、その検索結果をアプリケーションに提供する技術が記載されている。
【０００５】
また、特許文献３には、データの異なるデータフィールドに対応する値の列ベースシーケンスの組を、値の列ベースの整数シーケンスの組に変換し、ランレングス符号化またはビットパッキング符号化のアルゴリズムに従って、列ベースの整数のシーケンスの組を圧縮する技術が記載されている。
【０００６】
また、複数の表形式データにおける複数の項目を結合することが特許文献４に記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２０１２−５０４８２４号公報
【特許文献２】特開平１０−１１１８２１号公報
【特許文献３】特許第５４６６２３２号公報
【特許文献４】特許第４４２８４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１においては、サーバ装置が保持する参照元データを、そのままクライアント装置に送信するため、一回の送信量が大きくなってしまう。
【０００９】
また、特許文献２においては、クライアント装置のメモリ上に問い合わせの結果が参照する参照元データの全てが保持されていないと、再びサーバ装置から、参照元データをクライアント装置に転送する必要がある。そのため、特許文献２の技術では、クライアント装置とサーバ装置との間のネットワークトラフィックが大きくなってしまう。
【００１０】
また、上述する特許文献３においては、問い合わせの結果が参照するデータを、問い合わせの都度、クライアント装置とサーバ装置との間で頻繁に問い合わせや、問い合わせの結果を送信しあう。そのため、特許文献３の技術では、クライアント装置とサーバ装置との間のネットワークトラフィックが大きくなってしまうことがある。
【００１１】
また、特許文献４においては、サーバ装置から送信された、クエリの結果が参照するデータを内部メモリにだけ保持するため、保持できるデータが外部ストレージを備える場合と比較すると少ない。そのため、特許文献４の技術では、頻繁にクライアント装置とサーバ装置との間で参照するデータを送信する必要がある。
【００１２】
そこで、本発明は上記課題を鑑みて発明されたものであって、クライアント装置とサーバ装置との間のネットワークトラフィックを軽減する技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の情報処理システムは、サーバ装置と、クライアント装置とを含み、前記サーバ装置は、前記クライアント装置から送信されたクエリに基づき、データに対する問い合わせ処理を行う問い合わせ処理手段と、前記データの一覧を示す値リストと、前記データの位置を示す値番号の一覧を示す値番号リストとを記憶する第１記憶手段と、前記クライアント装置からの、該値番号リストに含まれる値番号に対応する値を含む値リストページの要求に基づき、該値リストページに関連する前記値リストから、該値を含む所定の範囲のレコードを、前記値リストページとして抽出する抽出手段と、前記問い合わせの結果が参照する値番号リスト、または、前記抽出された値リストページを前記クライアント装置に送信する通信手段とを備え、前記クライアント装置は、前記サーバ装置から送信された値リストページを記憶する第２記憶手段と、前記サーバ装置から送信された値番号リストに基づいて、前記第２記憶手段に、前記値番号リストに含まれる値番号に対応する値が含まれる値リストページが格納されているか否かを判定し、前記第２記憶手段に前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されていない場合、前記要求を前記サーバ装置に送信し、前記第２記憶手段に前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されている場合、前記サーバ装置から送信された値番号リストに基づいて、前記第２記憶手段に格納された値リストページを参照し、前記クエリに対する応答を生成する生成手段とを備える。
【００１４】
本発明の情報処理方法は、サーバ装置と、クライアント装置との情報処理方法であって、前記サーバ装置は、データの一覧を示す値リストと、前記データの位置を示す値番号の一覧を示す値番号リストを記憶し、クライアント装置から送信されたクエリに基づき、前記データに対して問い合わせを行い、前記クライアント装置からの、該値番号リストに含まれる値番号に対応する値を含む値リストページの要求に基づき、該値リストページに関連する前記値リストから、該値を含む所定の範囲のレコードを、前記値リストページとして抽出し、前記問い合わせの結果が参照する値番号リスト、または、前記抽出された値リストページを前記クライアント装置に送信し、前記クライアント装置は、前記サーバ装置から送信された値リストページを記憶し、前記サーバ装置から送信された値番号リストに基づいて、前記第２記憶手段に、前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されているか否かを判定し、前記第２記憶手段に前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されていない場合、前記要求を前記サーバ装置に送信し、前記第２記憶手段に前記値番号リストに含まれる値番号に対応する値を含む値リストページが格納されている場合、前記サーバ装置から送信された値番号リストに基づいて、前記第２記憶手段に格納された値リストページを参照し、前記クエリに対する応答を生成する。
【００１５】
本発明のクライアント装置は、サーバ装置に対してクエリを送信し、前記クエリに基づき、問い合わせ処理を行った結果が参照するデータの位置を示す値番号の一覧を示す値番号リストを受信する送受信手段と、前記受信した値番号リストに含まれる値番号に対応する値を含む値リストの一部である値リストページを格納可能な記憶手段と、前記値リストページが前記記憶手段に格納されているか否か判定し、前記値リストページが前記記憶手段に格納されていない場合、前記サーバ装置に前記値リストページを要求し、前記値リストページが格納されている場合、前記受信した値番号リストに基づき、前記値リストページを参照して、前記クエリに対する応答を生成する生成手段とを備える。
【００１６】
本発明の情報処理プログラムは、サーバ装置に対してクエリを送信する処理と、前記クエリに基づき、問い合わせ処理を行った結果が参照するデータの位置を示す値番号の一覧を示す値番号リストを受信する処理と、前記受信した値番号リストに含まれる値番号に対応する値を含む値リストの一部である値リストページを保持しているか否か判定し、前記値リストページを保持していない場合、前記サーバ装置に前記値リストページを要求し、前記値リストページを保持している場合、前記受信した値番号リストに基づき、前記値リストページを参照して、前記クエリに対する応答を生成する処理と、をコンピュータに実行させる。
【発明の効果】
【００１７】
本発明によれば、クライアント装置とサーバ装置との間のネットワークトラフィックを軽減できる。
【図面の簡単な説明】
【００１８】
【図１】第１実施形態に係る情報処理システムの構成の一例を示すブロック図である。
【図２】抽出部が抽出した値リストページの一例を示す概念図である。
【図３】サーバ記憶部が記憶している表データと、結果セットとの一例を示す概念図である。
【図４】ＦＡＳＴ（Ｆｉｌｔｅｒ  Ａｒｒａｙ  Ｓｔｒｕｃｔｕｒｅ）構造を説明するための図である。
【図５】付与部が付与するヘッダの一例を示す概念図である。
【図６】第１実施形態に係るクライアント装置及びサーバ装置のハードウェア構成の一例を示すブロック図である。
【図７】第１実施形態における情報処理システムの動作の一例を示すフローチャートである。
【図８】抽出部が作成する再計算値番号リストの一例を示す概念図である。
【図９】本発明の第１実施形態における情報処理システムの処理Ａ及び処理Ｂの一例を示すフローチャートである。
【図１０】第２実施形態における情報処理システムの構成の一例を示すブロック図である。
【図１１】ソート部が作成したソート値番号リストの一例を示す概念図である。
【図１２】第２実施形態における情報処理システムの動作の一例を示すフローチャートである。
【図１３】第２実施形態における情報処理システムの処理Ｃ及び処理Ｄの一例を示すフローチャートである。
【図１４】第３実施形態における情報処理システムの一例を示すブロック図である。
【図１５】第３実施形態のおける情報処理システムの動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
【００２０】
＜第１実施形態＞
図１は、本発明の第１実施形態に係る情報処理システム１の構成の一例を示すブロック図である。
【００２１】
情報処理システム１は、クライアント装置１０と、ストレージ１１と、サーバ装置１２とを含む。クライアント装置１０と、サーバ装置１２とは、無線または有線のネットワークによって相互に接続されている。
【００２２】
クライアント装置１０は、通信部１０１と、クライアント送受信部１０２と、記憶制御部１０３と、記憶部１０４と、生成部１０５とを含む。
【００２３】
通信部１０１は、例えば、アプリケーションプログラム（以下、アプリケーション）からの処理要求を意味するクエリの入力を受け付け、受け付けたクエリをクライアント送受信部１０２に送信する。なお、本実施形態及び他の実施形態においてクエリは、ＳＱＬで記述されたものとして説明を行うが、その他の言語を用いて記述されたクエリでもよい。アプリケーションは、例えば、ＢＩ（Ｂｕｓｉｎｅｓｓ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）ツールや、表計算ソフト等のアプリケーションプログラムである。なお、アプリケーションは、クライアント装置１０上、またはクライアント装置１０とは別の装置上で実行されることにより、上記クエリを発行する。
【００２４】
また通信部１０１は、生成部１０５が生成したクエリに対する応答を、上記クエリを発行したアプリケーションに送信する。
【００２５】
クライアント送受信部１０２は、受信したクエリをサーバ送受信部１２１に送信する。クライアント送受信部１０２は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）や、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）などの通信プロトコルを利用する。また、クライアント送受信部１０２は、データの一覧を示す値リストから所定の範囲のレコードを抽出した値リストページ、または、値リストページに含まれる値が位置する場所を示す値番号リストをサーバ送受信部１２１から受信し、受信した該値リストページ、または値番号リストを記憶制御部１０３に送信する。また、クライアント送信部１０２は、該値番号リストを生成部１０５に送信する。
【００２６】
記憶制御部１０３は、クライアント送受信部１０２から受信した値番号リストを記憶部１０４に記憶させる。また、記憶制御部１０３は、値リストページをクライアント送受信部１０２から受信し、受信した値リストページを、記憶部１０４に記憶させる。
【００２７】
生成部１０５は、クライアント送受信部１０２から送信された値番号リストに含まれる値番号に対応する値を含む値リストページ（以下、対応値リストページ）が、記憶部１０４にあるか否か判定する。対応値リストページが記憶部１０４にある場合、生成部１０５は、クライアント送受信部１０２から送信された値番号リストと、記憶部１０４に記憶されている対応値リストページとに基づき、クエリに対する応答を生成する。また、生成部１０５は、生成したクエリに対する応答を通信部１０１に送信する。
【００２８】
一方で、対応値リストページが記憶部１０４にない場合、生成部１０５は、ストレージ１１に、対応値リストページがあるか否か判定する。対応値リストページがストレージ１１にある場合、生成部１０５は、記憶部１０４に空きがあるか否か判定する。記憶部１０４に空きがある場合、生成部１０５は、対応値リストページを記憶部１０４に記憶させる。そして、生成部１０５は、クライアント送受信部１０２から送信された値番号リストと、記憶部１０４に記憶されている対応値リストページとに基づき、クエリに対する応答を生成する。また、生成部１０５は、生成したクエリに対する応答を通信部１０１に送信する。
【００２９】
一方で、記憶部１０４に空きがない場合、生成部１０５は、再利用するか否かを判断するための再利用フラグに、不可が設定されている値リストページがあるか否か判定する。再利用フラグに不可が設定されている値リストページがある場合、生成部１０５は、再利用フラグに不可が設定されている値リストページを破棄する。一方で、再利用フラグに不可が設定されている値リストページが無い場合、生成部１０５は所定の値リストページをストレージ１１に移動させ、記憶部１０４に空きを作る。そして、生成部１０５は、対応値リストページを記憶部１０４に記憶させる。その後、生成部１０５は、クライアント送受信部１０２から送信された値番号リストと、記憶部１０４記憶されている対応値リストページとに基づき、クエリに対する応答を生成する。また、生成部１０５は、生成したクエリに対する応答を通信部１０１に送信する。
【００３０】
また、対応値リストページが、記憶部１０４及びストレージ１１のどちらにもない場合、生成部１０５は、クライアント送信部１０２を介して、サーバ装置１２に対して、対応値リストページの送信を要求（以下、ページ要求）する。その後、生成部１０５は、上記要求の応答として、クライアント送受信部１０２を介して対応値リストページを受信すると、記憶部１０４に空きがあるか否か判定し、記憶部１０４に空きがある場合、受信した対応値リストページを記憶部１０４に記憶させる。一方で、記憶部１０４に空きがない場合、生成部１０５は、再利用フラグに不可が設定されている値リストページが記憶部１０４にあるか否か判定し、再利用フラグに不可が設定されている値リストページを破棄する。また、再利用フラグに不可が設定されている値リストページがない場合、生成部１０５は所定の値リストページをストレージ１１に記憶させ、記憶部１０４に空きを作る。なお、所定の値リストページは、例えば、ＮＲＵ（Ｎｏｔ  Ｒｅａｃｅｎｔｌｙ  Ｕｓｅｄ）や、ＬＲＵ（Ｌｅａｓｔ  Ｒｅａｃｅｎｔｌｙ  Ｕｓｅｄ）などのアルゴリズムを用いて、生成部１０５が決定してもよい。そして、生成部１０５は、受信した対応値リストページを記憶部１０４に記憶させる。その後、生成部１０５は、クライアント送受信部１０２から送信された値番号リストと、記憶部１０４に記憶されている対応値リストページとに基づき、クエリに対する応答を生成する。また、生成部１０５は、生成したクエリに対する応答を通信部１０１に送信する。
【００３１】
サーバ装置１２は、サーバ送受信部１２１と、抽出部１２２と、問い合わせ処理部１２３と、付与部１２４と、サーバ記憶部１２５とを含む。
【００３２】
サーバ送受信部１２１は、クライアント送受信部１０２からクエリを受信し、受信したクエリを抽出部１２２と、問い合わせ処理部１２３とに送信する。
【００３３】
また、サーバ送受信部１２１は、クエリに基づき生成された結果セットが参照する値番号リストを抽出部１２２から受信し、受信した値番号リストをクライアント装置１０に送信する。また、サーバ送受信部１２１は、ページ要求を受信し、ページ要求に対する応答（対応値リストページ）を送信する。
【００３４】
抽出部１２２は、サーバ送受信部１２１からクエリを受信する。そして抽出部１２２は、受信したクエリに対する問い合わせ処理部１２３による実行結果（結果セット）を、サーバ記憶部１２５から取り出し、取り出した実行結果が参照している値番号の再計算を行う。再計算処理の詳細は後述する。また、抽出部１２２は、再計算された値番号リスト（以下、再計算値番号リスト）をサーバ送受信部１２１に送信する。
【００３５】
また、抽出部１２２は、サーバ送受信部１２１からページ要求を受信し、受信したページ要求に基づき、再計算値番号リストに含まれる値番号と対応する値を含む値リストページを結果セットが参照している値リストから抽出する。そして、抽出部１２２は、抽出した値リストページをサーバ送受信部１２１に送信する。ここで、値リストページについて図２を参照して説明する。
【００３６】
図２の左側は、結果セットが参照している値リストの一例を示している。値リストには、詳しくは後述するが、ヘッダが付されている。抽出部１２２は、例えば図２に示すように、左側に示す値リストから値リストページを抽出する。図２の右側は、抽出された値リストの一部（値リストページ）の一例を示している。抽出された値リストページに含まれる値が、図２の左側に示すように添え字が２５５〜３１９までの値である場合、抽出部１２２は、値リストページに抽出元の値リストヘッダと同様のヘッダを付与する。さらに、抽出部１２２は、抽出した値リストページに含まれる値の添え字の最小値及び最大値をヘッダとして付与する。
【００３７】
問い合わせ処理部１２３は、サーバ送受信部１２１からクエリを受信し、受信したクエリを解析する。そして問い合わせ処理部１２３は、解析結果に基づき、データ処理の実行計画を作成し、その実行計画に基づき、サーバ記憶部１２５に格納されているデータの操作を実行する。その後、問い合わせ処理部１２３は、その実行の結果を、結果セットとして生成し、生成した結果セットをサーバ記憶部１２５に記憶させる。
【００３８】
サーバ記憶部１２５は、図３に示すような、表データと、結果セットとを保持している。表データは、ＦＡＳＴ構造で保持されている。以下、図４を参照しながら、ＦＡＳＴ構造について説明する。
【００３９】
図４の上部には、通常の表形式の表が例示されている。この表は図４に示すように、商品名と、都道府県と、価格との列を夫々保持している。これをＦＡＳＴ構造に変形すると、図４の下部に例示されるＦＡＳＴ構造の表となる。ＦＡＳＴ構造の表は、通常の表が保持する３０件に対応する０から２９までを示す順序集合を保持し、値番号リスト及び値リストを、通常の表の列夫々に対応するように保持している。
【００４０】
ここで、図３に戻り、本実施形態における表データについて更に説明する。表データは、値の一覧を示す値リストと、値が位置する場所を示す番号である値番号の一覧を示す値番号リストと、値番号リストの添え字に対応するレコードの集合を示す順序集合とで構成されている。なお、順序集合の各レコードは結果セットの行番号を示している。また、順序集合の添え字は、図３では省略している。
【００４１】
順序集合の各レコードに含まれる順序番号は、値番号リストのうちの参照する値番号の添え字の位置を示している。例えば図３に示す順序集合のうち、順序番号「０」は、値番号リストの添え字「０」を参照することを示している。よって、順序集合に含まれる各レコードの順序番号は、値番号リストの添え字に該当する。そして、値番号リストの各レコードの値番号は、値リストの添え字に該当する。
【００４２】
また、値リストは、その値リストが一意であることを示すＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）と、再利用が可能か否かを示す再利用フラグとが付与部１２４によって付与されている。また、このＩＤ及び再利用フラグについては後述する。
【００４３】
結果セットは、問い合わせ処理部１２３が、クエリに基づき、表データに対して処理を行うことで生成されクエリの実行結果である。そして、生成された結果セットは、表データの参照によって表現される。例えば、図３に示す結果セットは、図３の右側にある値リスト及び値番号リストそれぞれを参照している。
【００４４】
また、結果セットは、表形式によって表示される。また、値リストと、値番号リストと、結果セットとの夫々の列にレコードの順序を示す添え字（行番号）が含まれる。
【００４５】
また、値リストと、値番号リストと、結果セットと、順序集合とは、夫々複数であってもよい。
【００４６】
付与部１２４は、サーバ記憶部１２５に格納された表データの値リストに対して、その値リストが一意であることを識別可能にするＩＤを生成し、ヘッダとして値リストに付与する。
【００４７】
具体的には、付与部１２４は、問い合わせ処理部１２３から、値リストを生成したという通知を受け、この通知に基づき、生成された値リストにヘッダを付与する。ＩＤは、例えば、既存のハッシュ生成アルゴリズムによって実装された計算関数によって生成されてもよい。また、付与部１２４は、ヘッダとして、所定の値に再利用フラグを設定する。
【００４８】
ここで、図５を参照して、付与部１２４が値リストにヘッダを設定する方法について説明する。図５の左側は、値リストの一例を示している。そして、この値リストは、付与部１２４によって、ヘッダが付与されている。このヘッダは、ＩＤと再利用フラグを含む。また再利用フラグには、「可」が設定されており、「可」が設定された再利用フラグは、生成部１０５が再利用可能であることを示している。なお、生成部１０５が再利用しない値リストの場合、付与部１２４は、その値リストの再利用フラグに「不可」を設定する。例えば、付与部１２４は、数値の平均や、合計等の計算によって得られた値リストの場合、再利用フラグに「不可」を設定してもよい。
【００４９】
また、付与部１２４は、定期的にサーバ記憶部１２５を監視し、新しい値リストを発見したことを契機にヘッダを生成してもよい。
【００５０】
また、付与部１２４は、値リストに含まれる値が更新された場合、その更新に基づき、同様に値リストに付与したＩＤを更新する。例えば、図５の左側の値リストに含まれる「和紙」が、右側の値リストのように「和紙（半紙）」に更新される。そうすると、付与部１２４は、左側の値リストのＩＤ「１２３４５６７８」を、値リストの更新に基づいて、右側の値リストのＩＤ「３２１９８７６５」に更新する。
【００５１】
なお、本実施形態では、特に区別しない限り図２に示すようにヘッダが付された値リストを、値リストと呼ぶ。
【００５２】
＜ハードウェア構成＞
図６は、本発明の第１実施形態に係る情報処理システム１のハードウェア構成の一例を示すブロック図である。
【００５３】
クライアント装置１０及びサーバ装置１２は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４２と、ネットワークインタフェース４３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４４と、記憶装置４５とによって構成可能である。
【００５４】
ストレージ１１は、例えば、二次記憶装置４６によって構成される。
【００５５】
通信部１０１及びクライアント送受信部１０２は、例えば、ネットワークインタフェース４３によって構成される。
【００５６】
記憶制御部１０３は、例えば、ＲＯＭ４２及び記憶装置４５に記憶されたコンピュータプログラムをＲＡＭ４４に書き込み、書き込まれたコンピュータプログラムを実行するＣＰＵ４１によって構成される。
【００５７】
記憶部１０４は、例えば、記憶装置４５によって構成される。
【００５８】
生成部１０５は、例えば、ＲＯＭ４２及び記憶装置４５に記憶されたコンピュータプログラムをＲＡＭ４４に書き込み、書き込まれたコンピュータプログラムを実行するＣＰＵ４１によって構成される。
【００５９】
サーバ送受信部１２１は、例えばネットワークインタフェース４３によって構成される。
【００６０】
抽出部１２２と、問い合わせ処理部１２３と、付与部１２４とは、例えば、ＲＯＭ２２及び記憶装置４５に記憶されたコンピュータプログラムをＲＡＭ４４に書き込み、書き込まれたコンピュータプログラムを実行するＣＰＵ４１によって構成される。
【００６１】
サーバ記憶部１２５は、例えば、記憶装置４５によって構成される。なお、上述したハードウェア構成は一例であり、上記構成には限定されない。
【００６２】
図７は、第１実施形態における情報処理システム１の動作の一例を示すフローチャートである。
【００６３】
また、図７は、クライアント装置１０の処理を左側に、サーバ装置１２の処理を右側に示している。また、クライアント装置１０と、サーバ装置１２との間にある破線の矢印は、情報の流れを示している。
【００６４】
図７に示すように、まず、通信部１０１は、アプリケーションから、クエリを受け付ける（ステップＳ１００）。その後、通信部１０１は、受け付けたクエリをクライアント送受信部１０２に送信する。そして、クライアント送受信部１０２は、クエリを受信し、受信したクエリをサーバ装置１２に送信する（ステップＳ１０１）。次にサーバ送受信部１２１は、クライアント装置１０からクエリを受信し、受信したクエリを問い合わせ処理部１２３に送信する。その後、問い合わせ処理部１２３は、サーバ送受信部１２１からクエリを受信する（ステップＳ１０２）。さらに、問い合わせ処理部１２３は、受信したクエリに基づいてサーバ記憶部１２５の表データを参照し、結果セットを生成する（ステップＳ１０３）。また、問い合わせ処理部１２３は、ステップＳ１０３において、生成した結果セットの列に、表データに含まれない列があるか否か判定する（ステップＳ１０４）。
【００６５】
表データに含まれない列がある場合、問い合わせ処理部１２３は、該列を参照し、値リスト及び値番号リストを新しく生成する（ステップＳ１０５）。その後、問い合わせ処理部１２３は、値番号リスト及び値リストを新しく生成したことを付与部１２４に通知する。そして、この通知に基づき、付与部１２４は、新しく生成された値リストに対し、その値リストが一意であることを識別できるＩＤと、不可または可のどちらかを設定した再利用フラグとを、ヘッダとして生成する（ステップＳ１０６）。なお、含まれない列が複数ある場合、複数の列の夫々に対してステップＳ１０５及びステップＳ１０６が行われる。なお、付与部１２４は、定期的にサーバ記憶部１２５を監視し、新しい値リストまたは値番号リストを発見したことを契機にヘッダを生成してもよい。この場合、問い合わせ処理部１２３は、新しく値番号リスト及び値リストを生成したことを付与部１２４に通知しない。
【００６６】
そして、問い合わせ処理部１２３は、結果セットの生成処理が終了したことを抽出部１２２に通知する。なお、この通知には、生成した結果セットの情報も含まれる。この通知に基づき、抽出部１２２は、結果セットが参照している値番号の添え字が、結果セットの行番号に対応するように、結果セットの各列が夫々参照する値番号リストの再計算を行う（ステップＳ１０７）。
【００６７】
この再計算値処理について、図８を参照して説明する。例えば、抽出部１２２は、図８を参照すると、順序集合の添え字「１」の順序集合のレコードの順序「２」を値番号リストにおける添え字とした場合、添え字「２」に対応する値番号リストの値番号は「１」である。これを抽出部１２２は、添え字「1」の値番号リストの値番号を「１」に再計算する。このような処理を繰り返して、抽出部１２２は、値番号リストの添え字を順序集合の添え字、つまり、結果セットの行番号に対応させる。このような処理を行うことで、サーバ装置１２は、値番号リストに順序集合を含めずに、クライアント装置１０に送信することができる。
【００６８】
さらに、抽出部１２２は、再計算値番号リストに対し、結果セットが参照している値のＩＤを、ヘッダとして付与する（ステップＳ１０８）。なお、ＩＤは付与部１２４が付与してもよい。
【００６９】
その後、抽出部１２２は、再計算値番号リストをサーバ送受信部１２１に送信する（ステップＳ１０９）。
【００７０】
ステップＳ１０９の終了後、クライアント送受信部１０２は、再計算値番号リストをサーバ装置１２から受信する（ステップＳ１１０）。そして、クライアント送受信部１０２は、受信した再計算値番号リストを記憶制御部１０３に送信する。その後、記憶制御部１０３は、再計算値番号リストを受信し、受信した再計算値番号リストを記憶部１０４に記憶させる（ステップＳ１１１）。そして、ステップＳ１１１の終了後、クライアント装置１０は処理Ａに進み、サーバ装置１２は、処理Ｂに進む。なお、処理Ａ及び処理Ｂの説明は後述する。
【００７１】
上記動作を行うことで、サーバ装置１２は、クエリに対する結果セットを生成することができる。また、その結果セットが参照している値番号リストをクライアント装置が保持することで、クライアント装置１０は、結果セットが参照する値番号リストと値とを含む値リストページがどこに存在するのかを検索することができる。
【００７２】
図９は、上記処理Ａ及び処理Ｂの一例を示すフローチャートである。以下の処理ＡのうちのステップＳ２００からステップＳ２１１及び処理Ｂは、再計算値番号リストに含まれる値番号ごとに行われる。また、値番号リストが複数ある場合、値番号リスト全ての値番号リストに対して行われる。
【００７３】
まず、記憶制御部１０３が、値番号リストを記憶部１０４に記憶させたことを生成部１０５に通知する。なお、通知に記憶部１０４に記憶させた再計算値番号リストの情報が含まれる場合、生成部１０５は、この通知に含まれる情報が示す再計算値番号リストを用いて上記判定を行っても良い。この通知に基づき、生成部１０５は、クライアント送受信部１０２から送信された再計算値番号リストに含まれる値番号に対応する値が含まれる対応値リストページが、記憶部１０４にあるか否かを判定する（ステップＳ２００）。対応値リストページが、記憶部１０４にある場合、処理は、後述するステップＳ２１２に進む。また、対応値リストページが、記憶部１０４にない場合、生成部１０５は、対応値リストページが、ストレージ１１にあるか否かを判定する（ステップＳ２０１）。対応値リストページがストレージ１１にある場合、処理は、後述するステップＳ２０７に進む。
【００７４】
一方で対応値リストページが、ストレージ１１にない場合、生成部１０５は、対応値リストページの要求（以下、ページ要求）をクライアント送信部１０２に送信する。その後、クライアント送信部１０２は、生成部１０５からページ要求を受信し、受信したページ要求をサーバ装置１２に送信する（ステップＳ２０２）。次にサーバ送受信部１２１は、クライアント装置１０から、ページ要求を受信し（ステップＳ２０３）、受信したページ要求を抽出部１２２に送信する。そして、抽出部１２２は、サーバ送受信部１２１からページ要求を受信し、受信したページ要求に基づいて、サーバ記憶部１２５に格納されている値リストから、対応する値を含む所定の範囲のレコードを、値リストページとして抽出した対応値リストページを作成する（ステップＳ２０４）。抽出部１２２は、ページ要求に含まれる結果セットの情報に基づき、結果セットが参照している値番号リストに対応する添え字が含まれるように、値リストページを抽出する。また、抽出部１２２は、抽出元の値に付与されているＩＤと、分割した値リストページの添え字の最小値及び最大値とをヘッダとして値リストページに付与する。
【００７５】
ステップＳ２０４終了後、抽出部１２２は、対応値リストページをサーバ送受信部１２１に送信する。そして、サーバ送受信部１２１は、抽出部１２２から対応値リストページを受信し、受信した対応値リストページをクライアント装置１０に送信する（ステップＳ２０５）。
【００７６】
その後、クライアント送受信部１０２は、サーバ装置１２から対応値リストページを受信し（ステップＳ２０６）、受信した対応値リストページを生成部１０５に送信する。その後、生成部１０５は記憶部１０４に空きがあるか否かを判定する（ステップＳ２０７）。記憶部１０４に空きがある場合、処理は、後述するステップＳ２１１に進む。
【００７７】
一方で、記憶部１０４に空きがない場合、生成部１０５は、記憶部１０４に再利用フラグに不可が設定されている値リストページがあるか否か判定する（ステップＳ２０８）。記憶部１０４に再利用フラグに不可が設定されている値リストページがない場合、所定の値リストページをストレージ１１に移動させる（ステップＳ２０９）。例えば、ＮＲＵや、ＬＲＵなどのアルゴリズムを用いて、生成部１０５は、移動させる値リストページを決定してもよい。
【００７８】
一方で、記憶部１０４に再利用フラグに不可が設定されている値リストページがある場合、生成部１０５は、再利用フラグに不可が設定されている値リストページを破棄する（ステップＳ２１０）。なお、生成部１０５は、ステップＳ２０９またはステップＳ２１０の終了後、対応値リストページのサイズと、記憶部１０４の空き領域のサイズとを比較し、対応値リストページのサイズが空き領域より大きい場合、処理をステップＳ２０７に戻しても良い。
【００７９】
そして、生成部１０５は、対応値リストページを記憶部１０４に記憶させる（ステップＳ２１１）。また、生成部１０５は、再計算値番号リストに含まれる全ての値番号に対してステップＳ２００からステップＳ２１１までの処理を行う。その後、生成部１０５は、対応値リストページと、再計算値番号リストとに基づき、クエリに対する応答を生成し、生成したクエリに対する応答を通信部１０１に送信する。そして、通信部１０１は、クエリに対する応答を受信し、受信したクエリに対する応答をアプリケーションに送信する（ステップＳ２１２）。
（効果）
上述したように、本実施形態における情報処理システム１では、抽出部１２２は、クライアント装置１０のページ要求に基づき、クライアント装置１０がクエリの応答を生成するために用いる値番号リストに対応する値が含まれる値リストから、対応する値を含む所定の範囲のレコードを、値リストページとして抽出する。そして、サーバ装置１２はこの値リストページのみをクライアント１０に送信する。その結果、サーバ装置１０は、クライアント装置１０がページ要求していない余分な値リストページを送信することがなくなる。また、抽出部１２２が、値リストから値リストページを抽出し、抽出した値リストページ送信することで、一度に送信する容量が小さくなる。その結果、本実施形態における情報処理システム１は、クライアント装置１０とサーバ装置１２との間のネットワークトラフィックを軽減することができる。
【００８０】
また、本実施形態における情報処理システム１では、クライアント装置１０は、結果セットが参照する値番号リストと、値リストページとを保持する。その結果、クエリの内容が、過去に参照した列を参照する場合、生成部１０５は、保持している値リストページを参照して、クエリに対する応答を生成することができる。したがって、クライアント装置１０は、クエリに対する応答が参照するデータ全体をサーバ装置１２から送信することなく、応答を生成できるため、ネットワークトラフィックを軽減することができる。
【００８１】
また、本実施形態における情報処理システム１では、付与部１２４が、値リストに、該値リストが一意であることを示すＩＤをヘッダとして付与し、値リストの更新を検知する度に、前記値リストのＩＤを更新する。こうすることで、ＩＤによって、値が更新されたか否かを判断することができる。
【００８２】
また、本実施形態における情報処理システム１では、値リストページを格納可能なストレージ１１を備え、生成部１０５は、ストレージ１１に対応値リストページが格納されていない場合、サーバ装置１２に対応値リストページを要求する。そして、この要求にしたがって、抽出部１２２は新たに値リストページをクライアント装置１０に送信する。これにより、クライアント装置１０は必要な値リストページのみをサーバ装置１２から受信するため、ネットワークトラフィックを軽減することができる。
【００８３】
また、本実施形態における情報処理システム１では、生成部１０５は、ストレージ１１に空きがない場合、ストレージ１１に格納された所定の条件を満たす値リストページを特定し、特定した値リストページの領域に対応値リストページを移動させる。ここで、所定の条件を満たす値リストページとは、再利用フラグが不可の値リストページ、または、ＮＲＵなどのアルゴリズムによって決定された値リストページである。また、生成部１０６は、ストレージ１１に空きがある場合、対応値リストページをストレージ１１に移動させる。これによって、クライアント装置１０は、値リストページと、ストレージとを管理することが可能となる。
【００８４】
＜第２実施形態＞
図１０は、第２実施形態における情報処理システム２の構成の一例を表すブロック図である。情報処理システム２は、クライアント装置２０と、ストレージ２１と、サーバ装置２２とを含む。また、クライアント装置２０と、サーバ装置２２とは、有線または無線のネットワークによって相互に接続されている。
なお、本実施形態の説明において参照する各図面において、他の実施形態と同様な構成は、同一の符号を付し、本実施形態において重複する説明は省略する（他実施形態においても同様）。
【００８５】
クライアント装置２０は、通信部２０１と、クライアント送受信部１０２と、記憶制御部１０３と、記憶部１０４と、生成部２０５と、復元部２０６とを備える。
【００８６】
通信部２０１は、第１実施形態の通信部１０１の機能を備え、復元部２０６から、復元されたクエリに対する応答を受信し、受信したクエリに対する応答を、アプリケーションに送信する。
【００８７】
生成部２０５は、第１実施形態の生成部１０５と同様の機能を備え、また、生成部２０５は、ソート値番号リストに含まれる値番号に対応する値を含む値リストから抽出した値リストページと、ソートされた値番号リストを用いて、クエリに関する応答を生成する。生成したクエリに関する応答を、ソートされた値番号リストとともに復元部２０６に送信する。
【００８８】
復元部２０６は、生成部２０５からクエリに関する応答を受信し、受信したクエリに関する応答を、ソートされた値番号リストに含まれるソート前の元の位置、クエリに対する応答に復元する。そして、復元部２０６は、クエリに対する応答を通信部２０１に送信する。また、復元部２０６は、クエリに対する応答をストレージ２１に送信し、格納させても良い。また、復元部２０６は、値番号リストの復元の際にストレージ２１内の一次保存領域２１１を使用して、復元を行っても良い。なお、復元処理については後述する。
【００８９】
ストレージ２１は、第１実施形態のストレージ１１と同様の機能を備える。
【００９０】
サーバ装置２２は、サーバ送受信部２２１と、問い合わせ処理部１２３と、付与部１２４と、サーバ記憶部１２５と、抽出部２２２と、ソート部２２６とを備える。
【００９１】
サーバ送受信部２２１は、第１実施形態のサーバ送受信部１２１と同様の機能を備え、ソート部２２６からソートされた値番号リストを受信する。そして、サーバ送受信部２２１は、ソートされた値番号リストをクライアント装置２０に送信する。また、サーバ送受信部２２１は、クライアント装置２０からページ要求を受信し、受信したページ要求を抽出部２２２に送信する。
【００９２】
抽出部２２２は、第１実施形態の抽出部１２２と同様の機能を備え、再計算値番号リストをソート部２２６に送信する。また、抽出部２２２は、サーバ送受信部か２２１からページ要求を受信し、受信したページ要求に基づき対応値リストページを抽出し、抽出した対応値リストページをサーバ送受信部２２１に送信する。
【００９３】
ソート部２２６は、抽出部２２２から送信された値番号リストに含まれる値番号を昇順にソートする。このソート処理について、図１１を参照して説明する。図１１の左側には、結果セットが参照する値番号リストと、値リストとの一例を示す。ソート部２２６は、値番号リストの値番号をソートし、図１１の右側に示すようなソート値番号を生成する。また、ソート部２２６は、ソートした値番号の元の位置と、ソートした値番号とを関連付ける。そして、ソート部２２６は、ソートした値番号リストをサーバ送受信部２２１に送信する。
【００９４】
図１２は、第２実施形態における情報処理システム２の動作の一例を示すフローチャートである。また、図１２は、クライアント装置２０の処理を左側に、サーバ装置２２の処理を右側に示している。また、クライアント装置２０と、サーバ装置２２との間にある破線の矢印は、情報の流れを示している。
【００９５】
まず、図１２に示すように、通信部２０１は、アプリケーションから、クエリを受け付ける（ステップＳ３００）。その後、通信部２０１は、受け付けたクエリをクライアント送受信部１０２に送信する。そして、クライアント送受信部１０２は、クエリを受信し、受信したクエリをサーバ装置２２に送信する（ステップＳ３０１）。次にサーバ送受信部２２１は、クライアント装置２０からクエリを受信し、受信したクエリを問い合わせ処理部１２３に送信する。その後、問い合わせ処理部１２３は、サーバ送受信部２２１からクエリを受信する（ステップＳ３０２）。さらに、問い合わせ処理部１２３は、受信したクエリに基づいてサーバ記憶部１２５の表データを参照し、結果セットを生成する（ステップＳ３０３）。また、問い合わせ処理部１２３は、ステップＳ３０３において、生成した結果セットの列に、表データに含まれない列があるか否か判定する（ステップＳ３０４）。
【００９６】
表データに含まれない列がある場合、問い合わせ処理部１２３は、該列を参照し、値番号リスト及び値リストを新しく生成する（ステップＳ３０５）。その後、問い合わせ処理部１２３は、値番号リスト及び値リストを新しく生成したことを付与部１２４に通知する。そして、この通知に基づき、付与部１２４は、新しく生成された値リストに対し、その値リストが一意であることを識別できるＩＤと、不可または可のどちらかを設定した再利用フラグとを、ヘッダとして生成する（ステップＳ３０６）。なお、付与部１２４は、定期的にサーバ記憶部１２５を監視し、新しい値リストまたは値番号リストを発見したことを契機にヘッダを生成してもよい。この場合、問い合わせ処理部１２３は、値番号リスト及び値リストを新しく生成したことを付与部１２４に通知しない。
【００９７】
そして、問い合わせ処理部１２３は、結果セット生成処理が終了したことを抽出部２２２に通知する。なお、この通知には、生成した結果セットの情報も含まれる。この通知に基づき、抽出部２２２は、結果セットが参照している値番号の添え字が、結果セットの行番号に対応するように、結果セットの各列が夫々参照する値番号リストの再計算を行う（ステップＳ３０７）。
【００９８】
さらに、抽出部２２２は、再計算値番号リストに対し、結果セットが参照している値のＩＤを、ヘッダとして付与する（ステップＳ３０８）なお、ＩＤは付与部１２４が付与してもよい。その後、抽出部２２２は、再計算値番号リストをソート部２２６に送信する。
【００９９】
そして、ソート部２２６は、再計算値番号リストを抽出部２２２から受信し、受信した再計算値番号リストを昇順にソートする（ステップＳ３０９）。そして、ソート部２２６は、ソートした再計算値番号リスト（以下、ソート値番号リスト）をサーバ送受信部２２１に送信する。その後、サーバ送受信部２２１は、ソート値番号リストをソート部２２６から受信し、受信したソート値番号リストをクライアント装置２０に送信する（ステップＳ３１０）。
【０１００】
ステップＳ３１０の終了後、クライアント送受信部１０２は、ソート値番号リストをサーバ装置２２から受信し（ステップＳ３１１）、受信したソート値番号リストを記憶制御部１０３に送信する。その後、記憶制御部１０３は、ソート値番号リストを受信し、受信したソート値番号リストを記憶部１０４に記憶させる（ステップＳ３１２）。ステップＳ３１２終了後、クライアント装置２０は処理Ｃに進み、サーバ装置２２は、処理Ｄに進む。
【０１０１】
図１３は、上記処理Ｃ及び処理Ｄの一例を示すフローチャートである。以下の処理Ｃ及び処理Ｄは、ソート値番号リストに含まれる値番号ごとに行われる。
【０１０２】
まず、記憶制御部１０３が、ソート値番号リストを記憶部１０４に記憶させたことを生成部２０５に通知する。なお、通知には、記憶部１０４に記憶させたソート値番号リストの情報が含まれる場合、生成部２０５は、この通知に含まれる情報が示すソート値番号リストを用いて上記判定を行っても良い。この通知に基づき、生成部２０５は、クライアント送受信部１０２から送信されたソート値番号リストに対応する値を含む値リストページ（以下、対応値リストページ）が、記憶部１０４にあるか否かを判定する（ステップＳ４００）。対応値リストページが記憶部１０４にある場合、処理は、後述するステップＳ４１２に進む。また、対応値リストページが記憶部１０４にない場合、生成部２０５は、対応値リストページが、ストレージ２１にあるか否かを判定する（ステップＳ４０１）。対応値リストページがストレージ２１にある場合、処理は、後述するステップＳ４０７に進む。
【０１０３】
一方で対応値リストページが、ストレージ２１にない場合、生成部２０５は、ページ要求をクライアント送信部１０２に送信する。その後、クライアント送信部１０２は、生成部２０５からページ要求を受信し、受信したページ要求をサーバ装置２２に送信する（ステップＳ４０２）。次にサーバ送受信部１２１は、クライアント装置２０から、ページ要求を受信し（ステップＳ４０３）、受信したページページ要求を抽出部２２２に送信する。そして、抽出部２２２は、サーバ送受信部１２１からページ要求を受信し、受信したページ要求に基づいて、対応値リストページを対応する値を含む値リストから抽出する（ステップＳ４０４）。
【０１０４】
ステップＳ４０４終了後、抽出部１２２は、対応値リストページをサーバ送受信部２２１に送信する。そして、サーバ送受信部２２１は、抽出部２２２から対応値リストページを受信し、受信した対応値リストページをクライアント装置２０に送信する（ステップＳ４０５）。
【０１０５】
その後、クライアント送受信部１０２は、サーバ装置２２から対応値リストページを受信し（ステップＳ４０６）、受信した対応値リストページを生成部２０５に送信する。その後、生成部２０５は、記憶部１０４に空きがあるか否かを判定する（ステップＳ４０７）。記憶部１０４に空きがある場合、処理は、後述するステップＳ４１１に進む。
【０１０６】
一方で、記憶部１０４に空きがない場合、生成部２０５は、記憶部１０４に再利用フラグに不可が設定されている値リストページがあるか否か判定する（ステップＳ４０８）。記憶部１０４に再利用フラグに不可が設定されている値リストページがない場合、所定の値リストページをストレージ２１に移動させる（ステップＳ４０９）。例えば、ＮＲＵ（Ｎｏｔ  Ｒｅａｃｅｎｔｌｙ  Ｕｓｅｄ）や、ＬＲＵ（Ｌｅａｓｔ  Ｒｅａｃｅｎｔｌｙ  Ｕｓｅｄ）などのアルゴリズムを用いて、生成部２０５は、移動させる値リストページを決定してもよい。
【０１０７】
一方で、記憶部１０４に再利用フラグに不可が設定されている値リストページがある場合、生成部２０５は、再利用フラグに不可が設定されている値リストページを破棄する（ステップＳ４１０）。そして、生成部２０５は、対応値リストページを記憶部１０４に記憶させる（ステップＳ４１１）。また、生成部２０５は、ソート値番号リストに含まれる全ての値番号に対してステップＳ４００からステップＳ４１１までの処理を行う。
【０１０８】
その後、生成部２０５は、ソート値番号リストに基づき、対応値リストページを参照し、クエリに関する応答を生成する。生成したクエリに関する応答を復元部２０６に送信する。そして、復元部２０６は、生成部２０５からクエリに関する応答と、生成部２０５が生成に用いたソートされた値番号リストとを受信する。この時、復元部２０６が受信したクエリに関する応答は、生成部２０５が、ソートされた値番号リストに基づき生成したため、クエリに対する応答と要素の順序が異なる。そのため、復元部２０６は、受信したクエリに関する応答を、生成部２０６が生成に用いたソートされた値番号リストに含まれるソート前の元の位置に基づき、クエリに対する応答に復元する（ステップＳ４１２）。その後、復元部２０６は、クエリに対する応答を通信部２０１に送信する。このステップＳ４１２は、全ての値番号リストに対して行う。そして通信部２０１は、クエリに対する応答を復元部２０６から受信し、受信したクエリに対する応答をアプリケーションに送信する（ステップＳ４１３）。
【０１０９】
上記動作によって、値番号を昇順にソートすることで、値番号が連続となり、同一の値リストページを使用し、クエリに対する応答を作成する可能性が高くなる。したがって、クライアント装置のページングを減らすことができる。
【０１１０】
＜第３実施形態＞
図１４は、第３実施形態における情報処理システム３の構成の一例を示すブロック図である。第３の実施形態は、第１実施形態と、第２実施形態との基本的な構成に対応する。情報処理システム３は、サーバ装置３０と、クライアント装置３１とを備える。サーバ装置３０と、クライアント装置３１とは、有線または無線のネットワークによって相互に接続されている。
【０１１１】
サーバ装置３０は、問い合わせ処理部３０１と、第１記憶部３０２と、抽出部３０３と、通信部３０４とを備える。
【０１１２】
問い合わせ処理部３０１は、例えば、クライアント装置３１から送信されたクエリを受け付ける。そして、問い合わせ処理部３０１は、受け付けたクエリに基づき、第１記憶部３０２に格納された表データを用いて、問い合わせ処理を行う。また、問い合わせ処理部３０１は、問い合わせ処理の結果（結果セット）を第１記憶部３０２に記憶させる。また、問い合わせ処理部３０１は、結果セットを生成したことを抽出部３０３に通知する。
【０１１３】
第１記憶部３０２は、図３に示すような、表データと、問い合わせ処理の結果とを保持している。
【０１１４】
抽出部３０３は、上記通知を受け、問い合わせ処理の結果が参照している値番号リストと通信部３０４に送信する。また、抽出部３０３は、通信部３０４からページ要求を受信し、受信したページ要求に基づき、第１記憶部３０２から対応値リストページを抽出し、抽出した対応値リストページを通信部３０４に送信する。
【０１１５】
通信部３０４は、抽出部３０３から値番号リスト、または対応値リストページを受信し、受信した値番号リスト、または対応値リストページをクライアント装置３１に送信する。また、通信部３０４は、クライアント装置３１からページ要求を受信し、受信したぺージ要求を抽出部３０３に送信する。
【０１１６】
クライアント装置３１は、生成部３１１と、第２記憶部３１２とを備える。
【０１１７】
生成部３１１は、サーバ装置３０から、値番号リストを受信し、受信した値番号リストを参照し、受信した値番号リストに対応する値を含む値リストページ（対応値リストページ）が第２記憶部３１２にあるか否か判定する。対応値リストページが第２記憶部３１２にない場合、生成部３１１は、サーバ装置３０にページ要求を送信する。
【０１１８】
一方で、対応値リストページが第２記憶部３１２にある場合、生成部３１１は、受信した値番号リストに基づき、対応値リストページを参照して、クエリに対する応答を生成する。
【０１１９】
図１５は、第３実施形態における情報処理システム３の動作の一例を示すフローチャートである。
【０１２０】
まず、クライアント装置３１は、サーバ装置３０に対して、クエリを送信する（ステップＳ５００）。次に、問い合わせ処理部３０１は、クライアント装置３１から送信されたからクエリを受信する（ステップＳ５０１）。そして、問い合わせ処理部３０１は、受け付けたクエリに基づき、第１記憶部３０２に格納された表データを用いて、問い合わせ処理を行う（ステップＳ５０２）。また、問い合わせ処理部３０１は、問い合わせ処理の結果（結果セット）を第１記憶部３０２に記憶させる。そして、問い合わせ処理部３０１は、結果セットを生成したことを抽出部３０３に通知する（ステップＳ５０３）。そして、問い合わせ処理部３０１は、結果セットが参照している値番号リストを第１記憶部３０２から取得し、取得した結果セットを通信部３０４に送信する。
【０１２１】
その後、通信部３０４は、問い合わせ処理部３０１から値番号リストを受信し、受信した値番号リストをクライアント装置３１に送信する。（ステップＳ５０４）。そして、生成部３１１は、値番号リストをサーバ装置３０から受信し（ステップＳ５０５）、受信した値番号リストを参照し、受信した値番号リストに対応する値を含む値リストページが第２記憶部３１２にあるか否か判定する（ステップＳ５０６）。対応する値を含む値リストページが第２記憶部３１２にない場合、生成部３１１は、ページ要求をサーバ装置３０に送信する（ステップＳ５０７）。
【０１２２】
ステップＳ５０７の終了後、通信部３０４は、クライアント装置３１からページ要求を受信し（ステップＳ５０８）、受信したページ要求を抽出部３０３に送信する。そして、抽出部３０３は、ページ要求を受信し、受信したページ要求に基づいて、第１記憶部３０２に格納されている値リストから、対応する値を含む所定の範囲のレコードを、値リストページとして抽出する（ステップＳ５０９）。その後、抽出部３０３は、抽出した値リストページを通信部３０４に送信する。そして、通信部３０４は値リストページを受信し、受信した値リストページをクライアント装置３１に送信する（ステップＳ５１０）。
【０１２３】
ステップＳ５１０の終了後、生成部３１１は、サーバ装置３０から値リストページを受信し（ステップＳ５１１）、受信した値リストページを第２記憶部３１２に記憶させる。上記ステップＳ５０４からステップＳ５１１は、値番号リスト全てに対して行う。そして、生成部３１１は、値番号リストに基づき、受信した値リストページ参照して、クエリに対する応答を生成する（ステップＳ５１２）。
【０１２４】
上記動作によって、抽出部３０３は、クライアント装置３１のページ要求に基づき、クライアント装置３１がクエリの応答を生成するために用いる値番号リストに対応する値が含まれる値リストから、対応する値を含む所定の範囲のレコードを、値リストページとして抽出する。そして、サーバ装置３０はこの値リストページのみをクライアント３１、サーバ装置３０は、クライアント装置３１がページ要求していない余分な値リストページを送信することがなくなる。また、抽出部３０３が値リストから値リストページを抽出し、抽出した値リストページを送信することで一度に送信する容量が小さくなる。その結果、クライアント装置３１とサーバ装置３０との間のネットワークトラフィックを軽減することができる。
【０１２５】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１２６】
１    情報処理システム
２    情報処理システム
３    情報処理システム
１０    クライアント装置
１１    ストレージ
１２    サーバ装置
２０    クライアント装置
２１    ストレージ
２２    サーバ装置
３０    サーバ装置
３１    クライアント装置
１０１    通信部
１０２    クライアント送受信部
１０３    記憶制御部
１０４    記憶部
１０５    生成部
１２１    サーバ送受信部
１２２    抽出部
１２３    問い合わせ処理部
１２４    付与部
１２５    サーバ記憶部
２０１    通信部
２０５    生成部
２０６    復元部
２２１    サーバ送受信部
２２２    抽出部
２２６    ソート部
３０１    問い合わせ処理部
３０２    第１記憶部
３０３    抽出部
３０４    通信部
３１１    生成部
３１２    記憶部
【図１】
2017062698.tif 000003
【図２】
2017062698.tif 000004
【図３】
2017062698.tif 000005
【図４】
2017062698.tif 000006
【図５】
2017062698.tif 000007
【図６】
2017062698.tif 000008
【図７】
2017062698.tif 000009
【図８】
2017062698.tif 000010
【図９】
2017062698.tif 000011
【図１０】
2017062698.tif 000012
【図１１】
2017062698.tif 000013
【図１２】
2017062698.tif 000014
【図１３】
2017062698.tif 000015
【図１４】
2017062698.tif 000016
【図１５】
2017062698.tif 000017