(57)【要約】【課題】複雑な形式のデータの管理と、そのデータに対する高速なデータ操作とを両立することを課題とする。【解決手段】保存するデータと一意の標識情報との対をレコードとして保存し、標識情報を指定したデータの操作要求に基づいて、標識情報と対となるデータの操作を行う情報処理装置であって、データと標識情報との対を設定するレコード毎に、１つ以上の他のレコードの標識情報を設定可能なデータ構造により、データと標識情報との対を設定するレコードと、該レコードに標識情報が設定された他のレコードとを関連付けられたレコードとしてデータ操作を行うデータ操作手段、を有することにより上記課題を解決する。【選択図】  図１
2016218498.tif 000002
【特許請求の範囲】
【請求項１】
保存するデータと一意の標識情報との対をレコードとして保存し、前記標識情報を指定した前記データの操作要求に基づいて、前記標識情報と対となる前記データの操作を行う情報処理装置であって、
前記データと前記標識情報との対を設定するレコード毎に、１つ以上の他のレコードの前記標識情報を設定可能なデータ構造により、前記データと前記標識情報との対を設定するレコードと、該レコードに前記標識情報が設定された前記他のレコードとを関連付けられたレコードとしてデータ操作を行うデータ操作手段、
を有することを特徴とする情報処理装置。
【請求項２】
前記データ構造により、前記レコードを保存する保存手段、
を更に有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記データ操作手段は、前記データと前記標識情報との対を設定するレコード毎に、１つ以上の下位階層のレコードの前記標識情報を設定可能なデータ構造により、前記下位階層のレコードの前記標識情報を上位階層のレコードに設定して、前記上位階層のレコードと前記下位階層のレコードとを関連付けること
を特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記データ操作手段は、データ操作を行う場合の排他制御対象の範囲を、前記レコードの単位とすること
を特徴とする請求項１乃至３何れか一項記載の情報処理装置。
【請求項５】
前記データ操作手段は、前記レコードを保存する前記データ操作を受け付けた場合に、前記下位階層のレコードの前記標識情報を上位階層のレコードに設定して、前記上位階層のレコードと前記下位階層のレコードとを関連付けること
を特徴とする請求項３記載の情報処理装置。
【請求項６】
前記データ操作手段は、保存されている前記レコードを削除する操作を受け付けた場合に、削除する操作を受け付けた前記レコードを削除すると共に、該レコードの前記下位階層のレコードを削除すること
を特徴とする請求項３記載の情報処理装置。
【請求項７】
前記データ操作手段は、保存するファイルの情報を、日付を前記標識情報として設定している前記上位階層のレコードの前記下位階層のレコードに設定し、前記日付を前記標識情報として設定している前記上位階層のレコードを削除する操作を受け付けた場合に、前記上位階層のレコードの前記下位階層のレコードに設定されている前記ファイルの情報に基づき、前記ファイルを削除すること
を特徴とする請求項６記載の情報処理装置。
【請求項８】
前記情報処理装置は、受け付けた要求をキューにより管理して処理する場合に、受け付けた要求の情報を前記下位階層のレコードの前記データとして設定し、前記上位階層のレコードと関連付けられた前記下位階層のレコードを、前記キューとして利用すること
を特徴とする請求項３記載の情報処理装置。
【請求項９】
保存するデータと一意の標識情報との対をレコードとして保存し、前記標識情報を指定した前記データの操作要求に基づいて、前記標識情報と対となる前記データの操作を行う情報処理装置を、
前記データと前記標識情報との対を設定するレコード毎に、１つ以上の他のレコードの前記標識情報を設定可能なデータ構造により、前記データと前記標識情報との対を設定するレコードと、該レコードに前記標識情報が設定された前記他のレコードとを関連付けられたレコードとしてデータ操作を行うデータ操作手段、
として機能させるためのプログラム。
【請求項１０】
保存するデータと一意の標識情報との対をレコードとして保存し、前記標識情報を指定した前記データの操作要求に基づいて、前記標識情報と対となる前記データの操作を行う複数の情報処理装置を含む情報処理システムであって、
前記データと前記標識情報との対を設定するレコード毎に、１つ以上の他のレコードの前記標識情報を設定可能なデータ構造により、前記データと前記標識情報との対を設定するレコードと、該レコードに前記標識情報が設定された前記他のレコードとを関連付けられたレコードとしてデータ操作を行うデータ操作手段ととを関連付けられたレコードとしてデータ操作を行うデータ操作手段、
を有することを特徴とする情報処理システム。
【請求項１１】
保存するデータと一意の標識情報との対をレコードとして保存し、前記標識情報を指定した前記データの操作要求に基づいて、前記標識情報と対となる前記データの操作を行う情報処理装置において実行されるデータ管理方法であって、
前記データと前記標識情報との対を設定するレコード毎に、１つ以上の他のレコードの前記標識情報を設定可能なデータ構造により、前記データと前記標識情報との対を設定するレコードと、該レコードに前記標識情報が設定された前記他のレコードとを関連付けられたレコードとしてデータ操作を行うデータ操作ステップ、
を有することを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、プログラム、情報処理システム及びデータ管理方法に関する。
【背景技術】
【０００２】
従来から、ＫＶＳ（キーバリューストア）と呼ばれるデータの保存・管理手法が知られている。ＫＶＳは任意の保存したいデータ（値：ｖａｌｕｅ）に対し、対応する一意の標識情報（キー：ｋｅｙ）を設定し、バリューとキーとをペアで保存するデータの保存・管理手法である。ＫＶＳにおけるデータの読み出し時には、キーを指定することで、キーに対応するバリューを読み出すことができる。例えばＫＶＳにおけるキーとバリューとの対を基本構造とするレコードにおいて、バリューに他のキーとバリューとの対を複数含ませる内容が知られている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１７８６６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＫＶＳはバリューとキーとをペアで保存するため、データの書き込み及び読み出しがリレーショナルデータベース（ＲＤＢ）よりも高速となるが、複雑な形式のデータの管理に向いていない。
【０００５】
一方、ＲＤＢは１件のデータを複数の項目（フィールド）の集合として表現し、データの集合をテーブルと呼ばれる表で表すデータの保存・管理手法である。ＲＤＢは複雑な形式のデータの管理を行うことができるが、データの書き込み及び読み出しがＫＶＳよりも低速となることが多く、高速なデータ操作に向いていない。
【０００６】
なお、特許文献１に記載の内容ではバリューに他のキーとバリューとの対を複数含ませる構成であるため、バリューに複数含まれる他のキーとバリューとの対をデータ操作するプログラムの開発が別途必要である。また、特許文献１に記載の内容ではバリューに複数含まれる他のキーとバリューとの対を全て読み出してデータ操作するため、高速なデータ操作に向いていない。
【０００７】
本発明は上記した課題に鑑みなされたものであり、複雑な形式のデータの管理と、そのデータに対する高速なデータ操作とを両立することを目的とする。
【課題を解決するための手段】
【０００８】
上記した課題を解決するために、本願請求項１は、保存するデータと一意の標識情報との対をレコードとして保存し、前記標識情報を指定した前記データの操作要求に基づいて、前記標識情報と対となる前記データの操作を行う情報処理装置であって、前記データと前記標識情報との対を設定するレコード毎に、１つ以上の他のレコードの前記標識情報を設定可能なデータ構造により、前記データと前記標識情報との対を設定するレコードと、該レコードに前記標識情報が設定された前記他のレコードとを関連付けられたレコードとしてデータ操作を行うデータ操作手段、を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、複雑な形式のデータの管理と、そのデータに対する高速なデータ操作とを両立できる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態におけるＫＶＳのレコードの一例のデータ構造図である。
【図２】関連付けられたＫＶＳのレコードの一例の説明図である。
【図３】本実施形態におけるＫＶＳのバリューへのアクセス経路を示す図である。
【図４】本実施形態におけるＫＶＳのレコードの削除を示す図である。
【図５】本実施形態に係る情報処理システムの一例の構成図である。
【図６】本実施形態に係るコンピュータの一例のハードウェア構成図である。
【図７】本実施形態に係るデータ管理サーバ装置の一例の処理ブロック図である。
【図８】データ保存部に保存されているＫＶＳのレコードの一例の構成図である。
【図９】ロックする範囲について説明する図である。
【図１０】キー毎に複数の属性情報を持つデータでの利用を説明する為の図である。
【図１１】特定の条件で分類するデータでの利用を説明する為の図である。
【図１２】相互に関連付けられるデータでの利用を説明する為の図である。
【図１３】キャッシュサーバの処理の一例を示す図である。
【図１４】自機に保存しているファイルの情報を日付でグループ化してデータ管理する処理の一例のフローチャートである。
【図１５】データ転送バッファの処理の一例を示す図である。
【図１６】トランザクション処理用のスレッドプールとキューとを利用するトランザクション処理の一例の説明図である。
【図１７】データ保存部のトランザクション処理用のデータのキューについて説明する図である。
【発明を実施するための形態】
【００１１】
次に、本発明の実施形態について、詳細に説明する。
［データ構造］
図１は本実施形態におけるＫＶＳのレコードの一例のデータ構造図である。本実施形態におけるＫＶＳのレコード１は１つのキー２及びバリュー３のペアを有すると共に、１つ以上のサブキー４のリストを設定可能なデータ構成である。サブキー４にはレコード１と関連付けられている他のレコードのキーが設定される。
【００１２】
なお、図１ではキー２及びサブキー４として、キー２及びサブキー４から計算した値であるハッシュ値を設定している例を示している。図１のレコード１はサブキー４のリストを有することで、サブキー４がキーとして設定されている他のレコードと関連付けられている。
【００１３】
図１に示すデータ構造のレコード１により、複数のレコード１は図２に示すように関連付けられる。図２は関連付けられたＫＶＳのレコードの一例の説明図である。例えばＲＤＢで図２（Ａ）に示されるような１件のデータを本実施形態におけるＫＶＳのレコードにより表すと、図２（Ｂ）のようになる。
【００１４】
図２（Ａ）に示す１件のデータはキー「ｆｏｏ」で識別されるデータであり、項目及び値のペアとして「ｃｏ：ｊｐ」と「ｓｘ：ｍ」と「ｙｍ：ｆｏｏ＠ｘｘ．ｃｏ．ｊｐ」とを有している例を示している。
【００１５】
図２（Ｂ）に示されたレコード１ａ〜１ｄは図２（Ａ）のキー「ｆｏｏ」と項目「ｆｏｏ／ｃｏ」と項目「ｆｏｏ／ｓｘ」と項目「ｆｏｏ／ｙｍ」とをキー２ａ〜２ｄとして設定している。レコード１ａはレコード１ｂ〜１ｄのキー２ｂ〜２ｄをサブキー４ｂ〜４ｄとして設定することで、レコード１ｂ〜１ｄと関連付けられている。
【００１６】
レコード１ｂはキー２ｂのバリュー３ｂとして「ｊｐ」を設定している。レコード１ｃはキー２ｃのバリュー３ｃとして「ｍ」を設定している。また、レコード１ｄはキー２ｄのバリュー３ｄとして「ｆｏｏ＠ｘｘ．ｃｏ．ｊｐ」を設定している。
【００１７】
図２（Ｂ）に示すように、本実施形態におけるＫＶＳでは、図２（Ａ）に示した１件のデータを、サブキー４ｂ〜４ｄにより関連付けられた４つのレコード１ａ〜１ｄに分けて階層化して表すことができる。
【００１８】
図２（Ｂ）のレコード１ｂ〜１ｄのバリュー３ｂ〜３ｄへのアクセス経路は例えば図３に示すようになる。図３は本実施形態におけるＫＶＳのバリューへのアクセス経路を示す図である。
【００１９】
例えば図３に実線の矢印に示すように、レコード１ｃのバリュー３ｃへのアクセス経路はキー２ａの指定により識別されたレコード１ａからサブキー４ｃを取得し、サブキー４ｃをキー２ｃとするレコード１ｃを識別することで、レコード１ｃのバリュー３ｃへアクセスする経路となる。
【００２０】
また、図３の点線の矢印に示すように、レコード１ｃのバリュー３ｃへのアクセス経路はレコード１ｃのキー２ｃが分かっていれば、レコード１ｃのバリュー３ｃへ直接アクセスする経路も可能となる。
【００２１】
図２（Ｂ）のレコード１ａ〜１ｄの削除は例えば図４に示すように行われる。図４は本実施形態におけるＫＶＳのレコードの削除を示す図である。例えばレコード１ａを削除する場合はレコード１ａのサブキー４ｂ〜４ｄにより関連付けられているレコード１ｂ〜１ｄをレコード１ａと一緒に削除することができる。レコード１ａを削除する場合であってもレコード１ａのサブキー４ｂ〜４ｄにより関連付けられているレコード１ｂ〜１ｄはレコード１ａと一緒に削除せず、残すこともできる。
【００２２】
なお、図１〜図４ではサブキー４ｂ〜４ｄに、レコード１ａの下位階層に位置する他のレコード１ｂ〜１ｄのキー２ｂ〜２ｄを設定する例を示したが、レコード１ｂ〜１ｄの上位階層に位置するレコード１ａのキー２ａを、レコード１ｂ〜１ｄのサブキーとして設定するようにしてもよい。また、本実施形態におけるＫＶＳのレコード１のサブキー４のリストには上位階層及び下位階層に位置する他のレコードのキーを両方設定できるようにしてもよい。
【００２３】
さらに、図１〜図４ではＫＶＳのレコードを２階層に階層化した例を示したが、下位階層のレコード１ｂ〜１ｄにサブキー４を設定することで、３階層に階層化することも可能である。つまり、レコード１のサブキー４として一つ下の階層のレコードのキーを設定することを繰り返すことにより、ＫＶＳのレコードを４階層以上に階層化することも可能である。
［システム構成］
図５は、本実施形態に係る情報処理システムの一例の構成図である。なお、図５の構成図は一例であって、データ管理サーバ装置１２を有していれば、他の構成の情報処理システムであってもよい。
【００２４】
図５に示した情報処理システム１０は、データ管理サーバ装置１２、Ｗｅｂサーバ装置１４、１台以上のクライアント装置１６が、ＬＡＮやインターネット等のネットワークＮ１又はＮ２を介して接続される構成である。データ管理サーバ装置１２及びＷｅｂサーバ装置１４はネットワークＮ２を介して接続されている。Ｗｅｂサーバ装置１４とクライアント装置１６とはネットワークＮ１を介して接続されている。ネットワークＮ１及びＮ２は同一のネットワークであってもよい。
【００２５】
クライアント装置１６はユーザが操作するＰＣ、スマートフォン、タブレットなどの端末装置である。クライアント装置１６はＷｅｂサーバ装置１４に各種要求を行う。Ｗｅｂサーバ装置１４はクライアント装置１６から要求を受け付け、受け付けた要求に応じて処理を行う。
【００２６】
なお、Ｗｅｂサーバ装置１４は必要があればデータの読み出しをデータ管理サーバ装置１２に要求し、データを受信する。また、Ｗｅｂサーバ装置１４は必要があればデータの書き込みをデータ管理サーバ装置１２に要求し、送信したデータの書き込みをデータ管理サーバ装置１２に行わせる。
【００２７】
データ管理サーバ装置１２は、図１〜図４に示したデータ構造のＫＶＳのレコード１によりデータの保存・管理を行う。また、データ管理サーバ装置１２は図１〜図４に示したデータ構造のＫＶＳのレコード１により保存・管理されているデータを、Ｗｅｂサーバ装置１４からの要求に応じて読み出すデータ操作や書き込むデータ操作等を行う。データ管理サーバ装置１２が行う処理の詳細は後述する。
【００２８】
図１の情報処理システム１０は一例であって用途や目的に応じて様々なシステム構成例があることは言うまでもない。例えば図５に示したデータ管理サーバ装置１２は複数のコンピュータに分散して構成してもよい。
【００２９】
また、図５に示した情報処理システム１０は図１〜図４に示したデータ構造のＫＶＳのレコード１によりデータの保存・管理を行うサーバ装置を別途設けてもよい。このように図１〜図４に示したデータ構造のＫＶＳのレコード１によりデータの保存・管理を行う能はデータ管理サーバ装置１２以外に設けるようにしてもよい。
［ハードウェア構成］
図５のデータ管理サーバ装置１２、Ｗｅｂサーバ装置１４及びクライアント装置１６は例えば図６に示すハードウェア構成のコンピュータにより実現される。図６は、本実施形態に係るコンピュータの一例のハードウェア構成図である。
【００３０】
図６のコンピュータは、入力装置５０１、表示装置５０２、外部Ｉ／Ｆ５０３、ＲＡＭ５０４、ＲＯＭ５０５、ＣＰＵ５０６、通信Ｉ／Ｆ５０７、及びＨＤＤ５０８などを備えており、それぞれがバスＢで相互に接続されている。なお、入力装置５０１及び表示装置５０２は必要なときに接続して利用する形態であってもよい。
【００３１】
入力装置５０１はユーザが各種信号を入力するのに用いるタッチパネル、操作キーやボタン、キーボードやマウスなどである。表示装置５０２は画面を表示する液晶や有機ＥＬなどのディスプレイである。通信Ｉ／Ｆ５０７はコンピュータをネットワークＮ１、Ｎ２に接続するインタフェースである。これによりコンピュータは通信Ｉ／Ｆ５０７を介してデータ通信を行うことができる。
【００３２】
また、ＨＤＤ５０８はプログラムやデータを格納している不揮発性の記憶装置の一例である。格納されるプログラムやデータにはコンピュータ全体を制御する基本ソフトウェアであるＯＳ、及びＯＳ上において各種機能を提供するアプリケーションなどがある。
【００３３】
なお、コンピュータはＨＤＤ５０８に替えて、記憶媒体としてフラッシュメモリを用いるドライブ装置（例えばソリッドステートドライブ：ＳＳＤ）を利用するものであってもよい。
【００３４】
外部Ｉ／Ｆ５０３は、外部装置とのインタフェースである。外部装置には、記録媒体５０３ａなどがある。これにより、コンピュータは外部Ｉ／Ｆ５０３を介して記録媒体５０３ａの読み取り及び／又は書き込みを行うことができる。記録媒体５０３ａにはフレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリなどがある。
【００３５】
ＲＯＭ５０５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ（記憶装置）の一例である。ＲＯＭ５０５にはコンピュータの起動時に実行されるＢＩＯＳ、ＯＳ設定、及びネットワーク設定などのプログラムやデータが格納されている。ＲＡＭ５０４はプログラムやデータを一時保持する揮発性の半導体メモリ（記憶装置）の一例である。
【００３６】
ＣＰＵ５０６は、ＲＯＭ５０５やＨＤＤ５０８などの記憶装置からプログラムやデータをＲＡＭ５０４上に読み出し、処理を実行することで、コンピュータ全体の制御や機能を実現する演算装置である。
【００３７】
本実施形態に係るデータ管理サーバ装置１２、Ｗｅｂサーバ装置１４及びクライアント装置１６は上記したハードウェア構成のコンピュータにおいてプログラムを実行することにより各種処理を実現できる。
［ソフトウェア構成］
本実施形態に係る情報処理システム１０のデータ管理サーバ装置１２は例えば図７に示す処理ブロックにより実現される。図７は本実施形態に係るデータ管理サーバ装置の一例の処理ブロック図である。
【００３８】
図７の情報処理システム１０のデータ管理サーバ装置１２はプログラムを実行することによりデータ操作部２０とデータ保存部３０とを実現する。データ操作部２０は書込み部２１、読出し部２２、削除部２３、トランザクション機能部２４を有する構成である。
【００３９】
なお、図７はデータ管理サーバ装置１２がデータ保存部３０を有する構成を一例として示しているが、データ管理サーバ装置１２以外のサーバ装置にデータ保存部３０を設けるようにしてもよい。
【００４０】
データ保存部３０は、図１〜図４に示したデータ構造のＫＶＳのレコード１を保存している。データ操作部２０はデータ保存部３０へのレコード１の書き込みやデータ保存部３０からのキー２を指定したバリュー３やサブキー４の読み出し等、データ保存部３０に保存されているレコード１に対するデータ操作を行う。データ操作部２０は例えばＫＶＳ用ライブラリとして提供することができる。
【００４１】
書込み部２１はデータ保存部３０に対し、図１〜図４に示したデータ構造のレコード１の書き込みを行う。例えば書込み部２１は図２に示したデータ構造のレコード１ｂ〜１ｄの書き込みを行う際、レコード１ａのサブキー４ｂ〜４ｄにレコード１ｂ〜１ｄのキー２ｂ〜２ｄを設定することで、レコード１ａを上位階層のレコードとして下位階層のレコード１ｂ〜１ｄと関連付ける。
【００４２】
また、読出し部２２はキー２を指定して、指定したキー２に対応するバリュー３やサブキー４のデータ保存部３０からの読み出しを行う。削除部２３はデータ保存部３０から図１〜図４に示したデータ構造のレコード１の削除を行う。
【００４３】
トランザクション機能部２４はデータ保存部３０に保存されている図１〜図４に示したデータ構造のＫＶＳのレコード１が更新されたタイミングで（更新をトリガとして）任意のプログラムを実行できる機能である。トランザクション機能部２４の機能を利用することにより、本実施形態の情報処理システム１０では、データ保存部３０に保存されているレコード１が更新されたタイミングで実行される任意のプログラムを配置できる。
【００４４】
データ保存部３０は例えば図８に示すように、図１〜図４に示したデータ構造のＫＶＳのレコード１を保存している。図８はデータ保存部に保存されているＫＶＳのレコードの一例の構成図である。
【００４５】
図８では図２に示したレコード１ａ〜１ｄの他、キー「ｂａｒ」で識別されるデータを表した４つのレコード１Ａ、キー「ｂａｚ」で識別されるデータを表した４つのレコード１Ｂを示している。
【００４６】
データ操作部２０はデータ保存部３０に保存されているレコード１に対してデータ操作を行う場合、ロックする範囲（排他制御対象の範囲）を図９に示すように設定する。図９はロックする範囲について説明する図である。
【００４７】
本実施形態のデータ操作部２０がデータ保存部３０からバリュー１０００を読み出す場合にはレコード１ｄがロックする範囲１００３となる。例えばＫＶＳの一例であるＭＤＢＭ（Memory-mapped Database Management System）では図９に示す表全体がロックする範囲１００１となる。また、ＲＤＢではキー「ｆｏｏ」で識別されるデータを表した４つのレコード１ａ〜１ｄがロックする範囲１００２となる。
【００４８】
このように、本実施形態のデータ操作部２０がデータ保存部３０からバリュー１０００を読み出す場合にはロックする範囲１００３がレコード１ｄの単位となるため、ロック範囲を最小限とすることができる。したがって、本実施形態のデータ管理サーバ装置１２はロック待ちが発生しづらく、複数プログラムからの同時使用（マルチスレッドやマルチプロセスなどの並列処理）においても高速に処理できる。
［利用例］
＜キー毎に複数の属性情報を持つデータでの利用＞
図１０はキー毎に複数の属性情報を持つデータでの利用を説明する為の図である。図１０では図８に示したレコード１の関連を視覚的なイメージとして示している。
【００４９】
図１０ではデータがキー「ｆｏｏ」で識別されるレコード、キー「ｂａｒ」で識別されるレコード、キー「ｂａｚ」で識別されるレコードに分類され、更に分類されたレコードがサブキーにより副分類されている。各サブキーも独立したレコードとしてバリューが設定されている。
【００５０】
例えばキー毎に複数の属性情報を持つデータの一例としてはユーザのＩＤごとにユーザの性別、誕生日、メールアドレス等の数多くのユーザの属性情報を持つユーザ情報などがある。このようなユーザ情報を図１〜図４に示したデータ構造のＫＶＳで扱うことにより本実施形態の情報処理システム１０は、ロック範囲をユーザの属性情報をバリューとするレコード単位とすることができると共に、ユーザの属性情報をバリューとするレコードに直接アクセスすることで高速に処理できる。
【００５１】
＜特定の条件で分類するデータでの利用＞
また、図１１は特定の条件で分類するデータでの利用を説明する為の図である。図１１では日付でレコードを分類する例を示している。図１１ではキー「２０１４１０１４」で識別されるレコード、キー「２０１４１０１５」で識別されるレコード、キー「２０１４１０１６」で識別されるレコードに分類され、更に分類されたレコードが日付をキーとするレコードのサブキーにより関連付けられている。
【００５２】
例えば特定の条件で分類するデータの一例としては保存された日付で分類するファイルなどがある。このようなファイルを図１〜図４に示したデータ構造のＫＶＳでデータ管理することにより本実施形態の情報処理システム１０は、例えば保存された日付をキーとしてデータ操作（例えば削除など）を行うことで、その日付にキャッシュサーバに保存されたファイルに対して一括してデータ操作を行うことができる。このように、本実施形態の情報処理システム１０は共通した特徴でデータを分類（グループ化）できる。
【００５３】
＜相互に関連付けられるデータでの利用＞
また、図１２は相互に関連付けられるデータでの利用を説明する為の図である。図１２では相互に関連付けられるデータの一例として友達相関図を示している。図１２に示されているキーはユーザの名前である。
【００５４】
図１２の各キーから他のキーに向かって延びている矢印は、各キーに設定されたユーザが友達として登録している他のユーザのキーに向かって延びている。例えば図１２に示した図ではキー「Ｊａｃｋ」からキー「Ｄａｖｅ」とキー「Ｐａｔ」とキー「Ｇａｒｙ」とキー「Ｋｅｉｔｈ」とキー「Ｃｈｉｃｋ」とに向かって矢印が延びている。
【００５５】
したがって、ＪａｃｋはＤａｖｅ、Ｐａｔ、Ｇａｒｙ、Ｋｅｉｔｈ及びＣｈｉｃｋを友達として登録していることが分かる。なお、図１２では片方向に矢印が延びている状態を片思い、双方向に矢印が延びている状態を相思相愛としている。
【００５６】
図１２の友達相関図は、例えば各キーに設定されたユーザが友達として登録している他のユーザのキーを、図１〜図４に示したデータ構造のＫＶＳのサブキーとして設定することで、表すことができる。
【００５７】
例えばキー「Ｊａｃｋ」が設定されたレコードはサブキーとして、キー「Ｄａｖｅ」とキー「Ｐａｔ」とキー「Ｇａｒｙ」とキー「Ｋｅｉｔｈ」とキー「Ｃｈｉｃｋ」とを設定することで、Ｊａｃｋが友達として登録しているＤａｖｅ、Ｐａｔ、Ｇａｒｙ、Ｋｅｉｔｈ及びＣｈｉｃｋを表すことができる。図１２に示すように、キーとサブキーとは主従関係である必要はなく、各キーを関連付ける情報として利用することもできる。
【００５８】
＜キャッシュサーバでの利用＞
図１〜図４に示したデータ構造のＫＶＳは例えば図１３に示すようにキャッシュサーバにおいて利用できる。図１３はキャッシュサーバの処理の一例を示す図である。図１３ではデータ管理サーバ装置１２をキャッシュサーバとして機能させる。データ管理サーバ装置１２は必要に応じてオリジンサーバ装置１８からファイルを取得することができる。
【００５９】
データ管理サーバ装置１２はファイルの読出し要求を受信する。データ管理サーバ装置１２は読出し要求を受信したファイルを保存していれば、保存していたファイルを応答として返す。また、データ管理サーバ装置１２は読出し要求を受信したファイルを保持していなければ、そのファイルをオリジンサーバ装置１８から受信し、自機に保存したあとで応答として返す。
【００６０】
このようなキャッシュサーバとして機能するデータ管理サーバ装置１２ではファイルが保存されてから所定期間が経過した（キャッシュアウトした）ファイルを自動的に削除するキャッシュアウト処理を行うものがある。
【００６１】
キャッシュアウト処理を行うキャッシュサーバとして機能するデータ管理サーバ装置１２は例えば保存しているファイルを図１１に示すように日付でグループ化してデータ管理することで、日付を指定してキャッシュアウトしたファイルを一括して削除できる。
【００６２】
なお、データ管理サーバ装置１２は例えば図１４に示す処理手順により、自機に保存しているファイルの情報を図１１のように日付でグループ化してデータ管理する。図１４は自機に保存しているファイルの情報を日付でグループ化してデータ管理する処理の一例のフローチャートである。データ管理サーバ装置１２はファイルの読出し要求を受信することで図１４のフローチャートの処理を開始する。
【００６３】
ステップＳ１１において、データ管理サーバ装置１２は自機に保存していないファイルの読出し要求であるか否かを判定する。自機に保存しているファイルの読出し要求であればデータ管理サーバ装置１２はステップＳ１２に進み、自機に保存しているファイルを読出し要求元に返す。
【００６４】
自機に保存しているファイルの読出し要求でなければ、データ管理サーバ装置１２はステップＳ１３において、読出し要求のあったファイルをオリジンサーバ装置１８から取得して自機に保存する。また、ステップＳ１４において、データ管理サーバ装置１２は読出し要求のあったファイルを読出し要求元に返す。
【００６５】
ステップＳ１５に進み、データ管理サーバ装置１２はステップＳ１３で取得して保存したファイルの情報（ファイルパス等）を図１１のように、日付を示すキーのサブキーとして追加して登録することで、自機に保存しているファイルの情報を図１１のように日付でグループ化しておくことができる。データ管理サーバ装置１２は日付を指定してレコードの削除を要求するだけで、そのレコードとサブキーにより関連付けられたファイルを一括して自機から削除できる。
【００６６】
このように、自機に保存しているファイルの情報を図１１のように日付でグループ化してデータ管理するデータ管理サーバ装置１２では、全レコードからファイルを削除する日付が設定されたレコードを抽出する必要が無いため、高速にファイルを削除できる。
【００６７】
＜データ転送バッファでの利用＞
図１〜図４に示したデータ構造のＫＶＳは例えば図１５に示すデータ転送バッファにおいて利用できる。図１５はデータ転送バッファの処理の一例を示す図である。図１５ではデータ管理サーバ装置１２をデータ転送バッファとして機能させる。データ管理サーバ装置１２のデータ操作部２０にはトランザクション（処理履歴）出力機能を有するトランザクション機能部２４が含まれる。
【００６８】
データ管理サーバ装置１２のデータ操作部２０に含まれるトランザクション機能部２４の処理部分はプラグインとしてユーザが独自に実装し、置き換えることができる。図１５では前段プロセス４０が後段プロセス４２にデータを転送する際、ネットワーク断などの後段のエラーによるデータロストを防ぐ仕組みを表している。
【００６９】
トランザクション機能部２４は後段のエラーを検知した場合に、そのデータを書き戻す処理（フィードバック）を行うことにより、データ転送のリトライを行える。トランザクション機能部２４は後段に転送できたデータを削除する。
【００７０】
トランザクション機能部２４は、トランザクション処理にトランザクション処理用のスレッドプールを利用できる。また、トランザクション処理にトランザクション処理用のスレッドプールを利用した場合、トランザクション機能部２４はトランザクション処理用のデータをキューイングするために、図１〜図４に示したデータ構造のＫＶＳを利用した後述のキューを利用できる。
【００７１】
図１６は、トランザクション処理用のスレッドプールとキューとを利用するトランザクション処理の一例の説明図である。前段プロセス４０はデータ操作部２０を介してデータ保存部３０にデータ（ファイル）を書き込む。書き込み後、トランザクション機能部２４はトランザクション処理用のデータを、図１〜図４に示したデータ構造のＫＶＳを利用してデータ保存部３０にキューイングする。
【００７２】
データ保存部３０にキューイングされたトランザクション処理用のデータは図１〜図４に示したデータ構造のＫＶＳを利用した階層化により、トランザクション処理用のデータに順番を持たせることで、トランザクション処理用のデータのキューを実現する。
【００７３】
データ操作部２０の別スレッドで動作しているワーカスレッド５０は、データ保存部３０にキューイングされたトランザクション処理用のデータを順番に読み出し、トランザクション機能部２４の関数を呼び出す。読み出されたトランザクション処理用のデータは呼び出された関数により後段プロセス４２に出力される。
【００７４】
このように、スレッドプールを利用する場合、データ操作部２０はデータ保存部３０のトランザクション処理用のデータのキューにトランザクション処理用のデータをキューイングし、別スレッドでトランザクション処理を行う。
【００７５】
図１７はデータ保存部のトランザクション処理用のデータのキューについて説明する図である。図１７のキューは図１〜図４に示したデータ構造のＫＶＳを利用して順番を持たせたサブキー４のレコードのバリューとしてトランザクション処理用のデータを保存することにより、キューイング機能を実現する。
【００７６】
例えば図１７では申し込み・受付の番号をサブキー４に設定し、サブキー４をキーとして設定しているレコードに「申し込み・受付の内容」を設定している。ＦＩＦＯ（先入れ先出し）のキューでは申し込み・受付の番号をサブキー４として設定したレコードが一番後（図１７の登録処理キューの最下段）に位置するようにキー２と関連付ける。また、ＬＩＦＯ（後入れ先出し）のキューでは申し込み・受付の番号をサブキー４として設定したレコードが一番前（図１７の登録処理キューの最上段）に位置するようにキー２と関連付ける。なお、図１７の登録処理キューからのレコードの取り出しは、ＦＩＦＯのキュー又はＬＩＦＯのキューであっても、一番前（図１７の登録処理キューの最上段）の位置から行われる。
【００７７】
このように、図１〜図４に示したデータ構造のＫＶＳを利用することで、ＦＩＦＯ及びＬＩＦＯのキューイング機能を実現することができる。
【００７８】
図１７のようなキューと、前述したトランザクション機能とを利用することで、本実施形態のデータ管理サーバ装置１２は「プログラム１」の構造を「プログラム２」の構造にすることができるため、Ｓｔｅｐ１の申し込み・受付を、Ｓｔｅｐ２の登録処理とは非同期に行うことができる。
【００７９】
データ管理サーバ装置１２はＳｔｅｐ１の申し込み・受付のデータをデータ保存部３０にキューイングしておく。Ｓｔｅｐ２の登録処理はＳｔｅｐ１の申し込み・受付と非同期に行われ、データ保存部３０にキューイングされている順番にＳｔｅｐ１の申し込み・受付のデータを読み出し、そのデータを登録する処理を行う。
【００８０】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【００８１】
１、１ａ〜１ｄ、１Ａ、１Ｂ    レコード
２、２ａ〜２ｄ    キー（Ｋｅｙ）
３、３ｂ〜３ｄ、１０００    バリュー（Ｖａｌｕｅ）
４、４ｂ〜４ｄ    サブキー（Ｓｕｂｋｅｙ）
１０    情報処理システム
１２    データ管理サーバ装置
１４    Ｗｅｂサーバ装置
１６    クライアント装置
１８    オリジンサーバ装置
２０    データ操作部
２１    書込み部
２２    読出し部
２３    削除部
２４    トランザクション機能部
３０    データ保存部
４０    前段プロセス
４２    後段プロセス
５０    ワーカスレッド
５０１    入力装置
５０２    表示装置
５０３    外部Ｉ／Ｆ
５０３ａ    記録媒体
５０４    ＲＡＭ
５０５    ＲＯＭ
５０６    ＣＰＵ
５０７    通信Ｉ／Ｆ
５０８    ＨＤＤ
１００１〜１００３    ロックする範囲
Ｂ    バス
Ｎ１、Ｎ２    ネットワーク
【図１】
2016218498.tif 000003
【図２】
2016218498.tif 000004
【図３】
2016218498.tif 000005
【図４】
2016218498.tif 000006
【図５】
2016218498.tif 000007
【図６】
2016218498.tif 000008
【図７】
2016218498.tif 000009
【図８】
2016218498.tif 000010
【図９】
2016218498.tif 000011
【図１０】
2016218498.tif 000012
【図１１】
2016218498.tif 000013
【図１２】
2016218498.tif 000014
【図１３】
2016218498.tif 000015
【図１４】
2016218498.tif 000016
【図１５】
2016218498.tif 000017
【図１６】
2016218498.tif 000018
【図１７】
2016218498.tif 000019