説明

情報提供プログラム、情報提供装置および情報提供方法

【課題】メモリの使用量を低減すること。
【解決手段】情報提供装置100は、ファイル110内の複数の項目のうちの利用者がデータを要求する項目と当該利用者とを示す要求情報101を取得する。情報提供装置100は、ファイル110内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報121,122,…の中から、取得した要求情報101が示す利用者がデータを取得する権限を有する項目の組合せに対応する索引情報を検索する。情報提供装置100は、検索により得られた索引情報に基づいて要求情報101が示す項目のデータを読み出し、読み出したデータを出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報提供プログラム、情報提供装置および情報提供方法に関する。
【背景技術】
【0002】
たとえばdata.govのように、様々なデータが通信ネットワークを通じて一般の利用者に公開されるようになっている(たとえば、下記特許文献1参照。)。しかし、データをそのまま公開してしまうと、データに含まれている個人情報を公開することになってしまう。そこで、データの提供元では利用者の権限に応じて、提供データに含まれる項目を取捨選択したり、データから個人が特定されないように個人情報を秘匿化したりすることで個人情報の流出を防いでいる。
【0003】
利用者に提供されるデータは、たとえばフラットファイルなどによって管理される。フラットファイルは、たとえば、プレーンテキストまたはテキストとバイナリの混合であり、通常1行が1レコードになっている。フラットファイルのレコード内はフィールドを区切り文字(デリミタ)で区切った構造になっている。フラットファイルには、たとえばCSV(Comma−Separated Values)ファイルがある。
【0004】
複数の利用者にフラットファイルのデータを提供するにあたり、複数の利用者のそれぞれの権限に応じて、提供するデータの項目を制限したり、提供するデータを秘匿化したりする。たとえば、フラットファイルから、利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに作成し、利用者からの要求に対して対応する利用者ファイルからデータを取得することで、利用者の権限に応じたデータ提供を行う。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−285490号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した従来技術では、データを提供するアプリケーションは利用者ごとにデータのファイルを作成して保持することになるため、メモリの使用量が多くなるという問題がある。たとえば、複数の利用者が同時にアクセスすると、アプリケーションは、データの提供処理が終了するまで大量のデータのファイルを保持することになるため、データを提供するためには巨大なディスクシステムを設けることになってしまう。
【0007】
本発明は、上述した従来技術による問題点を解消するため、メモリの使用量を低減することができる情報提供プログラム、情報提供装置および情報提供方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決し、目的を達成するため、本発明の一観点によれば、記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、前記記憶部に記憶されたファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、読み出した前記データを出力する報提供プログラム、情報提供装置および情報提供方法が提供される。
【発明の効果】
【0009】
本発明の一観点によれば、メモリの使用量を低減することができるという効果を奏する。
【図面の簡単な説明】
【0010】
【図1】図1は、実施の形態1にかかる情報提供装置による情報提供の一例を示す図である。
【図2】図2は、実施の形態1にかかる情報提供装置の通信システムへの適用の例を示す図である。
【図3】図3は、実施の形態1にかかる情報提供装置のハードウェア構成例を示すブロック図である。
【図4】図4は、実施の形態1にかかるフラットファイルの内容の一例を示す説明図である。
【図5】図5は、実施の形態1にかかる利用者テーブルの内容の一例を示す説明図である。
【図6】図6は、実施の形態1にかかる情報提供装置の機能的構成を示すブロック図である。
【図7】図7は、実施の形態1にかかるインデックス管理テーブルの内容の一例を示す説明図である。
【図8】図8は、実施の形態1にかかるインデックスの内容の一例を示す説明図である。
【図9】図9は、実施の形態1にかかる情報提供装置による処理の一例を示すフローチャートである。
【図10】図10は、実施の形態1にかかるインデックスの作成処理の一例を示すフローチャートである。
【図11】図11は、実施の形態1にかかるデータの提供処理の一例を示すフローチャートである。
【図12】図12は、実施の形態2にかかるインデックスの内容の一例を示す説明図である。
【図13】図13は、実施の形態2にかかる情報提供装置による処理の一例を示すフローチャートである。
【図14】図14は、実施の形態2にかかるインデックスの圧縮処理の一例を示すフローチャートである。
【図15】図15は、実施の形態3にかかる情報提供装置による情報提供の一例を示す図である。
【図16】図16は、実施の形態3にかかる情報提供装置の機能的構成を示すブロック図である。
【図17】図17は、実施の形態3にかかる抽出ファイルの内容の一例を示す説明図である。
【図18】図18は、実施の形態3にかかる情報提供装置による処理の一例を示すフローチャートである。
【図19】図19は、実施の形態3にかかるインデックスの作成処理の一例を示すフローチャートである。
【図20】図20は、実施の形態3にかかるデータの提供処理の一例を示すフローチャートである。
【図21】図21は、実施の形態4にかかる情報提供装置による情報提供の一例を示す図である。
【図22】図22は、実施の形態4にかかる情報提供装置の機能的構成を示すブロック図である。
【図23】図23は、実施の形態4にかかる秘匿化ファイルの内容の一例を示す説明図である。
【図24】図24は、実施の形態4にかかるインデックス管理テーブルの内容の一例を示す説明図である。
【図25】図25は、実施の形態4にかかる情報提供装置による処理の一例を示すフローチャートである。
【図26】図26は、実施の形態4にかかるインデックスの作成処理の一例を示すフローチャートである。
【図27】図27は、実施の形態4にかかるデータの提供処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。
【0012】
(実施の形態1)
(情報提供装置による情報提供)
図1は、実施の形態1にかかる情報提供装置による情報提供の一例を示す図である。図1に示す情報提供装置100は、利用者からの要求情報101に対して、索引情報121,122,…のうちの利用者のポリシ(権限)に対応する索引情報を用いてファイル110のデータを読み出し、読み出したデータを提供データ102として出力する。
【0013】
具体的には、情報提供装置100は、ファイル110をたとえば内部の記憶部に記憶している。または、ファイル110は、情報提供装置100からアクセス可能な外部の記憶部に記憶されていてもよい。また、内容の異なる複数のファイル110が記憶されていてもよい。ファイル110には複数の項目のデータが含まれている。図1に示す例では、ファイル110には、項目1〜n(nは自然数)のデータとしてそれぞれデータ1〜nが含まれている。
【0014】
ファイル110は、たとえば、プレーンテキストまたはテキストとバイナリの混合であり、1行が1レコードになっており、レコード内はフィールドを区切り文字(デリミタ)で区切った構造のフラットファイルである。フラットファイルの例としてはCSVファイルが挙げられる。
【0015】
また、情報提供装置100は、ファイル110のデータを要求する利用者と、利用者がデータを取得する権限を有するファイル110の項目の組合せ(ポリシ)と、を対応付ける権限情報をたとえば内部の記憶部に記憶している。または、権限情報は、情報提供装置100からアクセス可能な外部の記憶部に記憶されていてもよい。
【0016】
また、情報提供装置100は、索引情報121,122,…をたとえば内部の記憶部に記憶している。または、索引情報121,122,…は、情報提供装置100からアクセス可能な外部の記憶部に記憶されていてもよい。索引情報121,122,…は、ファイル110の項目と、ファイル110の項目のデータの格納場所(アドレス)と、を対応付けるファイル110の項目の組合せごとの索引情報である。索引情報121,122,…が示す格納場所は、ファイル110が記憶された記憶部における格納場所である。
【0017】
たとえば、索引情報121は、項目1および項目2の組合せに対応する索引情報である。索引情報121においては、項目1および項目2に対してそれぞれ格納場所1および格納場所2が対応付けられている。すなわち、索引情報121は、項目1のデータ(データ1)は格納場所1に格納されていることを示している。また、索引情報121は、項目2のデータ(データ2)は格納場所2に格納されていることを示している。
【0018】
索引情報122は、項目1および項目3の組合せに対応する索引情報である。索引情報122においては、項目1および項目3に対してそれぞれ格納場所1および格納場所3が対応付けられている。すなわち、索引情報122は、項目1のデータ(データ1)は格納場所1に格納されていることを示している。また、索引情報122は、項目3のデータ(データ3)は格納場所3に格納されていることを示している。
【0019】
情報提供装置100は、要求情報101を利用者から取得する。要求情報101は、ファイル110のデータを要求する情報である。たとえば、要求情報101は、要求元の利用者と、ファイル110の項目1〜nのうちの利用者がデータを要求する項目と、を示す情報である。図1に示す例では、要求情報101は、要求元としての利用者1と、利用者1が要求する項目としての項目2と、を示している。なお、複数のファイル110が記憶されている場合は、要求情報101には、複数のファイル110のうちの利用者が要求するデータが含まれるファイルを示す情報を含んでいてもよい。
【0020】
情報提供装置100は、索引情報121,122,…の中から、要求情報101が示す利用者がデータを取得する権限を有する項目の組合せに対応する索引情報を取得する。具体的には、情報提供装置100は、記憶された権限情報に基づいて、要求情報101が示す利用者に対応する項目の組合せを特定する。図1に示す例では、要求情報101が示す利用者1に対応する項目の組合せは、項目1,2の組合せであるとする。そして、情報提供装置100は、索引情報121,122,…の中から、特定した組合せに対応する索引情報を検索する。図1に示す例では、情報提供装置100は、特定した項目1,2の組合せに対応する索引情報121が検索により得られる。
【0021】
また、情報提供装置100は、特定した組合せに対応する索引情報が索引情報121,122,…の中にない場合は、特定した組合せに対応する索引情報を作成してもよい。情報提供装置100は、作成した索引情報を、情報提供装置100の内部または外部の記憶部に記憶することで、作成した索引情報を索引情報121,122,…に追加する。
【0022】
情報提供装置100が索引情報を作成する場合は、索引情報をあらかじめ情報提供装置100の内部または外部の記憶部に記憶しておかなくてもよい。または、ファイル110の項目の一部の組合せに対応する索引情報のみを情報提供装置100の内部または外部の記憶部に記憶しておいてもよい。この場合は、取得された要求情報101に基づく項目の組合せに対応する索引情報のみが記憶されるため、索引情報121,122,…が記憶される記憶部(メモリ)の使用量を低減することができる。
【0023】
または、ファイル110の項目のすべての組合せに対応する索引情報121,122,…を情報提供装置100の内部または外部の記憶部に記憶しておいてもよい。この場合は、情報提供装置100が特定した組合せに対応する索引情報は常に索引情報121,122,…に含まれているため、情報提供装置100は新たな索引情報を作成する処理を行わなくてもよい。このため、要求情報101の取得時の情報提供装置100の処理量を低減することができる。
【0024】
情報提供装置100は、取得した索引情報に基づいて、ファイル110が記憶された記憶部から、要求情報101が示す項目のデータを読み出す。図1に示す例では、情報提供装置100は、取得した索引情報121に基づいて、要求情報101が示す項目2の格納場所2を特定する。そして、情報提供装置100は、特定した格納場所2のデータを読み出すことでデータ2を読み出す。
【0025】
情報提供装置100は、読み出したデータを提供データ102として出力する。図1に示す例では、要求情報101が示す項目2のデータ(データ2)が提供データ102として出力される。なお、情報提供装置100は、提供データ102を利用者に応じて秘匿化して出力してもよい。情報提供装置100から出力された提供データ102は、たとえばネットワークを介して要求情報101の送信元の端末装置へ送信される。
【0026】
なお、情報提供装置100が取得した索引情報に要求情報101が示す項目が含まれていない場合は、要求情報101が示す項目のデータが読み出されず、要求情報101が示す項目のデータが出力されない。たとえば、図1に示す例において、要求情報101に含まれる項目が項目3であった場合は、利用者のポリシに対応する索引情報121には項目3が含まれていないため、項目3のデータは出力されない。これにより、利用者が取得する権限を有していないデータを出力しないようにすることができる。
【0027】
ここでは、要求情報101がファイル110の項目1〜nのうちの利用者がデータを要求する項目を示す情報である場合について説明したが、要求情報101はファイル110の項目1〜nのうちの特定の項目を示していなくてもよい。この場合は、たとえば、情報提供装置100は、利用者のポリシに対応する全項目のデータを読み出して出力する。
【0028】
(通信システムへの適用例)
図2は、実施の形態1にかかる情報提供装置の通信システムへの適用の例を示す図である。図1に示した情報提供装置100は、たとえば図2に示す通信システム200に適用することができる。通信システム200は、情報提供装置100と、端末装置221〜22nと、ネットワーク230と、を含んでいる。情報提供装置100と端末装置221〜22nは、ネットワーク230を介して互いに接続されている。
【0029】
ネットワーク230は、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークである。また、ネットワーク230は、有線のネットワークであってもよいし、無線のネットワークであってもよいし、有線および無線が混在したネットワークであってもよい。
【0030】
端末装置221は、たとえば端末装置221の利用者の操作にしたがって情報提供装置100へ要求情報(たとえば図1に示した要求情報101)送信する。情報提供装置100は、端末装置221から送信された要求情報に対して、端末装置221の利用者のポリシに応じてファイル110のデータを取得する。そして、情報提供装置100は、取得したデータを提供データ102として端末装置221へ送信する。
【0031】
同様に、端末装置222〜22nは、たとえばそれぞれ端末装置222〜22nの利用者の操作にしたがって情報提供装置100へ要求情報を送信する。これに対して、情報提供装置100は、端末装置222〜22nのそれぞれの利用者のポリシに応じてファイル110のデータを取得する。そして、情報提供装置100は、取得したデータをそれぞれ提供データ102として端末装置222〜22nへ送信する。
【0032】
(情報提供装置100のハードウェア構成例)
図3は、実施の形態1にかかる情報提供装置のハードウェア構成例を示すブロック図である。図1,図2に示した情報提供装置100は、たとえば図3に示すコンピュータ300によって実現することができる。コンピュータ300は、CPU(Central Processing Unit)301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、磁気ディスクドライブ304と、磁気ディスク305と、光ディスクドライブ306と、光ディスク307と、通信I/F(Interface)308と、ユーザI/F(Interface)309と、を備えている。また、各構成部はバス320によってそれぞれ接続されている。
【0033】
ここで、CPU301は、コンピュータ300の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。磁気ディスクドライブ304は、CPU301の制御にしたがって磁気ディスク305に対するデータのリード/ライトを制御する。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する。
【0034】
光ディスクドライブ306は、CPU301の制御にしたがって光ディスク307に対するデータのリード/ライトを制御する。光ディスク307は、光ディスクドライブ306の制御で書き込まれたデータを記憶したり、光ディスク307に記憶されたデータをコンピュータに読み取らせたりする。
【0035】
通信I/F308は、通信回線を通じてネットワーク230(図2参照)に接続され、ネットワーク230を介して端末装置222〜22n(図2参照)に接続される。そして、通信I/F308は、ネットワーク230とコンピュータ300のインターフェースを司り、端末装置222〜22nとの間のデータの入出力を制御する。通信I/F308には、たとえばモデムやLANアダプタなどを採用することができる。
【0036】
ユーザI/F309は、コンピュータ300とコンピュータ300の管理者との間のインターフェースを司る。たとえば、ユーザI/F309には、ディスプレイ、マウス、キーボードなどを用いることができる。また、コンピュータ300を管理者が操作したりモニタしたりしない場合は、ユーザI/F309を省いた構成にしてもよい。
【0037】
また、図2に示した端末装置222〜22nのそれぞれも、たとえばコンピュータ300によって実現することができる。この場合は、通信I/F308は、ネットワーク230を介して情報提供装置100に接続される。そして、通信I/F308は、情報提供装置100との間のデータの入出力を制御する。また、ユーザI/F309には、利用者から要求情報101が入力される入力インターフェースと、利用者へ提供データ102を出力する出力インターフェースと、が含まれる。
【0038】
(フラットファイルの内容)
図4は、実施の形態1にかかるフラットファイルの内容の一例を示す説明図である。図4に示すフラットファイル400は、図1に示したファイル110の一例である。フラットファイル400は、たとえば、プレーンテキストまたはテキストとバイナリが混在したデータである。フラットファイル400は、Name1(氏)、Name2(名)、Salary(給料)およびCode(識別コード)のフィールドを有する。各フィールドにデータを設定することで、人物データ400−1〜400−4がレコードとして記憶されている。
【0039】
フラットファイル400の各レコードは、それぞれ特定の人物に関するName1、Name2、SalaryおよびCodeを示している。また、フラットファイル400の各レコードは、Name1、Name2、SalaryおよびCodeが区切り文字で区切られた構造になっている。区切り文字はたとえばカンマなどである。
【0040】
一例として、人物データ400−1を例に挙げると、Name1「SALAZAR」、Name2「KATE」、Salary「439476」およびCode「DX2XS2」が記憶されている。フラットファイル400は、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されている。
【0041】
(利用者テーブル500の内容)
図5は、実施の形態1にかかる利用者テーブルの内容の一例を示す説明図である。図5に示す利用者テーブル500は、フラットファイル400のデータを要求する利用者と、利用者がデータを取得する権限を有するファイル110の項目の組合せ(ポリシ)と、を対応付ける権限情報の一例である。利用者テーブル500は、利用者、ポリシおよびシードのフィールドを有する。各フィールドに情報を設定することで、利用者データ500−1,500−2,…がレコードとして記憶されている。ここで、利用者は、情報提供装置100に対してフラットファイル400のデータの提供を要求する利用者である。利用者には、たとえば「Alice」、「Bob」、「Eve」などがある。
【0042】
ポリシは、フラットファイル400の項目の組合せのうちの、利用者が取得する権限を有する項目の組合せである。フラットファイル400の項目は、たとえば、フラットファイル400の列(フィールド)と行(レコード)によって表される。ポリシには、たとえば「p1」、「p2」、「p3」などがある。「p1」、「p2」、「p3」のそれぞれは、フラットファイル400の項目(列と行)の異なる組合せを示している。
【0043】
シードは、フラットファイル400のデータを利用者へ提供する際に、提供するデータを秘匿化するためのパラメータである。情報提供装置100は、利用者へ提供データ102を出力する際に、提供データ102を利用者のシードに基づいて完全にまたは部分的に秘匿化して提供する。シードには、たとえば「s1」、「s2」、「s3」などがある。「s1」、「s2」、「s3」はそれぞれ異なるパラメータを示している。
【0044】
一例として、利用者データ500−1を例に挙げると、利用者「Alice」、ポリシ「p1」およびシード「s1」が記憶されている。利用者テーブル500は、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されている。
【0045】
(情報提供装置100の機能的構成例)
図6は、実施の形態1にかかる情報提供装置の機能的構成を示すブロック図である。図6に示すように、情報提供装置100は、取得部601と、特定部602と、検索部603と、作成部604と、読出部605と、秘匿化部606と、出力部607と、を含む構成である。この制御部となる機能(取得部601〜出力部607)は、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F308により、その機能を実現する。
【0046】
取得部601は、たとえば通信I/F308により、利用者からの要求情報101を取得する。要求情報101は、少なくとも、フラットファイル400に含まれる複数の項目のうちの利用者がデータを要求する項目と、要求元の利用者とを示す。なお、取得部601によって取得された要求情報101は、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
【0047】
特定部602は、取得部601によって取得された要求情報101が示す要求元の利用者に対応するポリシおよびシードを利用者テーブル500に基づいて特定する。なお、特定部602によって特定されたポリシおよびシードは、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
【0048】
インデックス情報記憶部610には、インデックス管理テーブル611が記憶されている。また、インデックス情報記憶部610には、インデックス612a,612b,…が記憶される。インデックス情報記憶部610は、RAM303、磁気ディスク305、光ディスク307などの情報提供装置100の記憶装置によって実現してもよいし、通信I/F308を介して情報提供装置100が接続可能な外部の記憶装置によって実現してもよい。
【0049】
インデックス管理テーブル611は、ポリシと、インデックス情報記憶部610に記憶されているインデックス612a,612b,…の識別情報「index1」,「index2」,…と、を対応付ける情報である。
【0050】
インデックス612a,612b,…は、フラットファイル400の項目の組合せに含まれる項目と、項目のデータのアドレス(格納場所)と、を対応付ける索引情報の一例である。インデックス612a,612b,…は、フラットファイル400の項目の組合せ(ポリシ)ごとに存在する。インデックス612a,612b,…は、インデックス情報記憶部610にあらかじめ記憶されていてもよいし、作成部604によって作成されてインデックス情報記憶部610に記憶されてもよい。
【0051】
検索部603は、インデックス612a,612b,…のうちの特定部602によって特定されたポリシに対応するインデックスをインデックス情報記憶部610から検索する。具体的には、検索部603は、インデックス管理テーブル611に基づいて、インデックス612a,612b,…の中からポリシに対応するインデックスを検索する。検索の結果、対応するインデックスがインデックス情報記憶部610に存在する場合には、検索部603は、対応するインデックスをインデックス情報記憶部610から取得する。
【0052】
検索の結果、対応するインデックスが存在しない場合には、検索部603は、特定部602によって特定されたポリシを作成部604へ通知する。そして、検索部603は、作成部604によって作成され、インデックス情報記憶部610に追加されたインデックスを取得する。なお、検索部603によって取得されたインデックスは、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
【0053】
作成部604は、フラットファイル400に基づいて、検索部603から通知されたポリシに対応するインデックスを作成する。具体的には、作成部604は、通知されたポリシに含まれる項目のそれぞれのアドレス(格納場所)を取得し、取得したアドレスと項目とを対応付けることによってインデックスを作成する。作成部604は、作成したインデックスをインデックス情報記憶部610のインデックス612a,612b,…に追加する。また、作成部604は、作成したインデックスを、検索部603から通知されたポリシと対応付けてインデックス管理テーブル611に登録する。
【0054】
読出部605は、取得部601によって取得された要求情報101が示す項目のデータを、検索部603によって取得されたインデックスに基づいて、フラットファイル400が記憶された記憶部から読み出す。具体的には、読出部605は、要求情報101が示す項目のデータに対応するアドレスをインデックスから検索する。そして、読出部605は、フラットファイル400が記憶された記憶部における、検索により得られたアドレスのデータを読み出す。なお、読出部605によって読み出されたデータは、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
【0055】
また、検索の結果、要求情報101が示す項目のデータに対応するアドレスがインデックスに存在しなかった場合は、要求元の利用者は、要求情報101が示す項目のデータを取得する権限を有していない。この場合は、読出部605は、エラーメッセージを生成してもよい。これにより、要求元の利用者に対して、データの取得ができなかったことを通知することができる。なお、読出部605によって生成されたエラーメッセージは、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
【0056】
秘匿化部606は、読出部605によって読み出されたデータを、特定部602によって特定されたシードに基づいて秘匿化する。秘匿化部606によるデータの秘匿化としては、たとえば、シードに基づく乱数化や、文字列を頭文字のみに変換する処理などを用いることができる。
【0057】
秘匿化として乱数化を行う場合は、情報提供装置100のメモリに複数の乱数テーブルを記憶しておく。そして、秘匿化部606は、メモリに記憶された乱数テーブルの中から、特定されたシードに基づいて乱数テーブルを選択し、選択した乱数テーブルに基づいてデータを乱数化する。したがって、同一のシードが特定された場合は、選択される乱数テーブルも同一となる。なお、秘匿化部606によって秘匿化されたデータは、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
【0058】
出力部607は、たとえば通信I/F308により、秘匿化部606によって秘匿化されたデータ、または読出部605によって生成されたエラーメッセージを利用者の端末装置へ出力する。または、出力部607は、データまたはエラーメッセージをRAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶してもよい。
【0059】
(インデックス管理テーブル611の内容)
図7は、実施の形態1にかかるインデックス管理テーブルの内容の一例を示す説明図である。図7に示すインデックス管理テーブル611は、図6に示したインデックス管理テーブル611の一例である。インデックス管理テーブル611は、ポリシおよびインデックスのフィールドを有する。各フィールドに情報を設定することで、管理データ700−1〜700−3がレコードとして記憶されている。
【0060】
ここで、ポリシは、利用者テーブル500に含まれるポリシに対応する情報である。インデックスは、インデックス情報記憶部610に記憶されたインデックス612a,612b,…のそれぞれを示す識別情報である。インデックスの値には、たとえば「index1」、「index2」および「index3」がある。一例として、管理データ700−1を例に挙げると、ポリシ「p1」およびインデックス「index1」が記憶されている。
【0061】
(インデックス612a,612b,…の内容)
図8は、実施の形態1にかかるインデックスの内容の一例を示す説明図である。図8に示すインデックス612a,612b,…は、図7に示したインデックス管理テーブル611のインデックス「index1」、「index2」…に対応するそれぞれのインデックスを示している。インデックス612a,612b,…のそれぞれは、列、行およびアドレスのフィールドを有する。インデックス612aの各フィールドに情報を設定することで、インデックスデータ801−1〜801−3がレコードとして記憶されている。また、インデックス612bの各フィールドに情報を設定することで、インデックスデータ802−1〜802−3がレコードとして記憶されている。
【0062】
ここで、列は、フラットファイル400の列を示す情報である。行は、フラットファイル400の行を示す情報である。したがって、列および行の組合せは、フラットファイル400の項目を示す。列および行には、たとえば「1」および「2」などがある。アドレスは、列および行の組合せが示すフラットファイル400の項目の、フラットファイル400が記憶された記憶部における格納場所を示す情報である。アドレスには、たとえば「0」、「100」、「200」および「300」などがある。
【0063】
一例として、インデックス612aのインデックスデータ801−1を例に挙げると、列「1」、行「1」およびアドレス「0」が記憶されている。したがって、インデックスデータ801−1は、列「1」および行「1」の組合せが示すフラットファイル400の項目のデータがアドレス「0」に格納されていることを示している。
【0064】
(情報提供装置100による処理)
図9は、実施の形態1にかかる情報提供装置による処理の一例を示すフローチャートである。実施の形態1にかかる情報提供装置100は、たとえば図9に示す各ステップを実行する。まず、取得部601が、利用者からの要求情報101を取得する(ステップS901)。つぎに、特定部602が、ステップS901によって取得された要求情報101の要求元の利用者のポリシを特定する(ステップS902)。
【0065】
つぎに、検索部603が、ステップS902によって特定されたポリシに一致するインデックスがインデックス情報記憶部610にあるか否かを判断する(ステップS903)。ポリシに一致するインデックスがある場合(ステップS903:Yes)は、情報提供装置100は、ステップS906へ移行する。
【0066】
ステップS903において、ポリシに一致するインデックスがない場合(ステップS903:No)は、情報提供装置100は、ステップS904へ移行する。すなわち、作成部604が、フラットファイル400における、ステップS902によって特定されたポリシが示す各項目のデータのアドレスを示すインデックスを作成する(ステップS904)。つぎに、作成部604が、ステップS904によって作成されたインデックスをインデックス情報記憶部610に登録する(ステップS905)。
【0067】
つぎに、情報提供装置100は、要求情報101が示す項目のデータを利用者に提供する提供処理を行い(ステップS906)、一連の処理を終了する。以上の各ステップにより、利用者のポリシに対応するインデックスに基づいて、利用者からの要求情報101が示す項目のデータを利用者に提供することができる。
【0068】
(インデックスの作成処理)
図10は、実施の形態1にかかるインデックスの作成処理の一例を示すフローチャートである。作成部604は、図9に示したステップS904において、たとえば図10に示す各ステップを実行する。図10に示す各ステップにおいて、COL、ROWは、それぞれフラットファイル400の列、行を示す変数である。また、ADDRESSは、フラットファイル400におけるアドレスを示す変数である。
【0069】
まず、作成部604は、フラットファイル400を開く(ステップS1001)。つぎに、作成部604は、COLに1を設定する(ステップS1002)。つぎに、作成部604は、ROWに1を設定する(ステップS1003)。つぎに、作成部604は、ADDRESSに0を設定する(ステップS1004)。
【0070】
つぎに、作成部604は、現在のCOLとROWが示す項目は、利用者が取得する権限を有する項目か否かを、図9に示したステップS902によって特定されたポリシに基づいて判断する(ステップS1005)。権限を有する項目でない場合(ステップS1005:No)は、作成部604は、ステップS1007へ移行する。権限を有する項目である場合(ステップS1005:Yes)は、作成部604は、現在のCOL、ROWおよびADDRESSが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する(ステップS1006)。
【0071】
つぎに、作成部604は、フラットファイル400における現在のADDRESSが示すアドレスに格納された文字が区切り文字であるか否かを判断する(ステップS1007)。区切り文字には、たとえば、ファイルの終端(End Of File)、列の区切り、行の区切りがある。区切り文字でない場合(ステップS1007:No)は、作成部604は、ADDRESSをインクリメントし(ステップS1008)、ステップS1007へ戻る。
【0072】
ステップS1007において、区切り文字である場合(ステップS1007:Yes)は、作成部604は、フラットファイル400における現在のADDRESSが示すアドレスに格納された文字がファイルの終端であるか否かを判断する(ステップS1009)。ファイルの終端である場合(ステップS1009:Yes)は、作成部604は、一連の処理を終了する。ファイルの終端でない場合(ステップS1009:No)は、作成部604は、フラットファイル400における現在のADDRESSが示すアドレスに格納された文字が列の区切りであるか否かを判断する(ステップS1010)。
【0073】
ステップS1010において、格納された文字が列の区切りである場合(ステップS1010:Yes)は、作成部604は、COLをインクリメントし(ステップS1011)、ステップS1014へ移行する。格納された文字が列の区切りでなく行の区切りである場合(ステップS1010:No)は、作成部604は、ROWをインクリメントする(ステップS1012)。つぎに、作成部604は、COLを1に設定し(ステップS1013)、ステップS1014へ移行する。
【0074】
ステップS1014においては、作成部604は、現在のCOLとROWが示す項目は、利用者が取得する権限を有する項目か否かを、図9に示したステップS902によって特定されたポリシに基づいて判断する(ステップS1014)。権限を有する項目でない場合(ステップS1014:No)は、作成部604は、ステップS1016へ移行する。権限を有する項目である場合(ステップS1014:Yes)は、作成部604は、現在のCOL、ROWおよびADDRESSが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する(ステップS1015)。
【0075】
つぎに、作成部604は、ADDRESSをインクリメントし(ステップS1016)、ステップS1007へ戻る。以上の各ステップにより、図9に示したステップS902によって特定されたポリシが示す各項目のデータのアドレスを示すインデックスを作成することができる。
【0076】
(データの提供処理)
図11は、実施の形態1にかかるデータの提供処理の一例を示すフローチャートである。情報提供装置100は、図9に示したステップS906において、たとえば図11に示す各ステップを実行する。まず、検索部603が、図9に示したステップS902によって特定されたポリシに一致するインデックスをインデックス情報記憶部610から取得する(ステップS1101)。つぎに、読出部605が、要求情報101に利用者が要求する項目が含まれているか否かを判断する(ステップS1102)。要求情報101に項目が含まれていない場合(ステップS1102:No)は、情報提供装置100は、ステップS1104へ移行する。
【0077】
要求情報101に項目が含まれている場合(ステップS1102:Yes)は、読出部605が、要求情報101が示す項目(列および行)が、ステップS1101によって取得されたインデックスにあるか否かを判断する(ステップS1103)。項目がインデックスにある場合(ステップS1103:Yes)は、読出部605が、ステップS1101によって取得されたインデックスに基づいてデータをフラットファイル400から読み出す(ステップS1104)。
【0078】
具体的には、要求情報101に項目が含まれている場合は、読出部605は、要求情報101が示す列および行に対応するアドレスをインデックスに基づいて特定し、特定したアドレスのデータを読み出す。また、要求情報101に項目が含まれていない場合は、読出部605は、インデックスが示す各アドレスのデータを読み出す。
【0079】
つぎに、特定部602が、要求情報101が示す利用者のシードを特定する(ステップS1105)。つぎに、秘匿化部606が、ステップS1105によって特定されたシードに基づいて、ステップS1104によって読み出されたデータを秘匿化する(ステップS1106)。つぎに、出力部607が、ステップS1106によって秘匿化されたデータを出力し(ステップS1107)、一連の処理を終了する。
【0080】
ステップS1103において、項目がインデックスにない場合(ステップS1103:No)は、読出部605が、データを取得できなかった旨のエラーメッセージを生成する(ステップS1108)。つぎに、出力部607が、ステップS1108によって生成されたエラーメッセージを出力し(ステップS1109)、一連の処理を終了する。以上の各ステップにより、要求情報101が示す項目のデータを利用者に提供することができる。また、利用者が取得する権限を有していない項目のデータについては利用者へ提供せず、エラーメッセージを出力することができる。
【0081】
このように、実施の形態1にかかる情報提供装置100は、ポリシ(利用者がデータを取得する権限を有する項目の組合せ)ごとにデータのアドレスを示すインデックスを作成し、利用者が要求する項目のデータをインデックスに基づいて取得する。これにより、利用者の権限に応じて利用者にデータを提供することができる。
【0082】
また、ポリシの数は利用者の数より少ない。したがって、ポリシごとのインデックスを作成することで、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに作成する場合に比べて、作成するファイル数を低減することができる。このため、メモリの使用量を低減することができる。
【0083】
また、データのアドレスを示すインデックスは、データ自体を含む利用者ファイルよりも情報量が少ない。したがって、ポリシごとのインデックスを作成することで、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに作成する場合に比べて、作成するファイルのサイズを低減することができる。このため、メモリの使用量をさらに低減することができる。
【0084】
(実施の形態2)
実施の形態2にかかる情報提供装置100について、実施の形態1にかかる情報提供装置100と異なる部分について説明する。
【0085】
(インデックス612a,612b,…の内容)
図12は、実施の形態2にかかるインデックスの内容の一例を示す説明図である。図12において、図8に示した部分と同様の部分については同一の符号を付して説明を省略する。図8に示したインデックス612bのインデックスデータ802−1は、インデックス612aのインデックスデータ801−2と同一の項目(列「2」および行「1」の組合せ)を示している。この場合は、図12に示すように、インデックスデータ802−1を、列「2」および行「1」の組合せと、インデックス612aの識別情報「index1」と、を対応付ける情報としてもよい。
【0086】
ポリシごとのインデックスを示す識別情報は、記憶部の格納場所を示すアドレスよりもデータ量が小さいため、インデックス612bにおいてアドレスに代えてインデックスの識別情報を格納することで、インデックス612bのサイズを圧縮することができる。検索部603は、取得したインデックスのアドレスに他のインデックスの識別情報が含まれている場合は、含まれている識別情報が示すインデックスも取得する。
【0087】
読出部605は、検索部603によって取得された各インデックスに基づいて、要求情報101が示す項目のデータを読み出す。たとえば、読出部605は、検索部603によって取得された各インデックスのいずれかを取得する。そして、読出部605は、取得したインデックスにおいて、要求情報101が示す項目にアドレスが対応付けられている場合は対応付けられているアドレスを取得する。
【0088】
また、読出部605は、取得したインデックスにおいて、要求情報101が示す項目に他のインデックスの識別情報が対応付けられている場合は、検索部603によって取得された各インデックスのうちの識別情報が示すインデックスを取得する。そして、読出部605は、取得したインデックスに基づいて、要求情報101が示す項目に対応付けられているアドレスを取得する。
【0089】
図12に示す例では、検索部603は、検索によりインデックス612bを取得した場合に、インデックス612bに識別情報「index1」が含まれているため、識別情報「index1」が示すインデックス612aも取得する。読出部605は、検索部603によって取得された各インデックスのうちのたとえばインデックス612bを取得する。ここで、要求情報101が示す項目が列「2」および行「1」の組合せであるとする。
【0090】
インデックス612bにおいて、列「2」および行「1」の組合せには識別情報「index1」が対応付けられているため、読出部605は、識別情報「index1」が示すインデックス612aを取得する。そして、読出部605は、取得したインデックス612aにおいて、列「2」および行「1」の組合せにはアドレス「100」が対応付けられているため、アドレス「100」のデータを読み出す。
【0091】
(情報提供装置100による処理)
図13は、実施の形態2にかかる情報提供装置による処理の一例を示すフローチャートである。実施の形態2にかかる情報提供装置100は、たとえば図13に示す各ステップを実行する。図13に示すステップS1301〜S1304は、図9に示したステップS901〜S904と同様である。ステップS1304の後に、作成部604が、ステップS1304によって作成されたインデックスの圧縮処理を行う(ステップS1305)。
【0092】
図13に示すステップS1306,S1307は、図9に示したステップS905,S906と同様である。以上の各ステップにより、利用者のポリシに対応するインデックスに基づいて、利用者からの要求情報101が示す項目のデータを利用者に提供することができる。また、インデックスを作成する場合に、作成したインデックスの圧縮処理を行うことで、インデックス情報記憶部610(メモリ)の使用量を低減することができる。
【0093】
(インデックスの圧縮処理)
図14は、実施の形態2にかかるインデックスの圧縮処理の一例を示すフローチャートである。作成部604は、図13に示したステップS1305において、たとえば図14に示す各ステップを実行する。まず、作成部604は、インデックス情報記憶部610に記憶されたすべてのインデックスがステップS1402によって選択されたか否かを判断する(ステップS1401)。すべてのインデックスが選択されていない場合(ステップS1401:No)は、作成部604は、インデックス情報記憶部610に記憶されたインデックスのうちの未選択のインデックスを選択する(ステップS1402)。
【0094】
つぎに、作成部604は、ステップS1402によって選択されたインデックスのすべてのレコードがステップS1404によって選択されたか否かを判断する(ステップS1403)。すべてのレコードが選択されていない場合(ステップS1403:No)は、作成部604は、図13のステップS1304によって作成されたインデックスのレコードのうちの未選択のレコードを選択する(ステップS1404)。
【0095】
つぎに、作成部604は、ステップS1404によって選択されたレコードと一致するレコードが、ステップS1402によって選択されたインデックスにあるか否かを判断する(ステップS1405)。一致するレコードがない場合(ステップS1405:No)は、作成部604は、ステップS1403へ戻る。一致するレコードがある場合(ステップS1405:Yes)は、作成部604は、ステップS1404によって選択されたレコードのアドレスを、ステップS1402によって選択されたインデックスの識別情報に書き換え(ステップS1406)、ステップS1403へ戻る。
【0096】
ステップS1403において、すべてのレコードが選択された場合(ステップS1403:Yes)は、作成部604は、ステップS1401へ戻る。ステップS1401において、すべてのインデックスが選択された場合(ステップS1401:Yes)は、作成部604は、一連の処理を終了する。以上の各ステップにより、図13のステップS1304によって作成されたインデックスに既存のインデックスと共通のレコードがあった場合に、作成されたインデックスを圧縮することができる。
【0097】
このように、実施の形態2にかかる情報提供装置100によれば、記憶されるインデックスのサイズを圧縮することができる。具体的には、実施の形態2にかかる情報提供装置100において、他のインデックスと共通の項目を含むインデックスは、他のインデックスと共通の項目と、他のインデックスを示す識別情報と、を対応付ける。
【0098】
これにより、記憶されるインデックスのデータ量を少なくし、メモリの使用量をさらに低減することができる。この場合は、情報提供装置100は、他のインデックスを示す識別情報を含むインデックスが検索により得られた場合に、識別情報に基づいて他のインデックスを取得し、取得した他のインデックスに基づいてデータを読み出すことができる。
【0099】
(実施の形態3)
実施の形態3にかかる情報提供装置100について、実施の形態1または2にかかる情報提供装置100と異なる部分について説明する。
【0100】
(情報提供装置100による情報提供)
図15は、実施の形態3にかかる情報提供装置による情報提供の一例を示す図である。図15において、図1に示した部分と同様の部分については同一の符号を付して説明を省略する。情報提供装置100は、抽出ファイル1511,1512,…を内部の記憶部に記憶している。または、抽出ファイル1511,1512,…は、情報提供装置100からアクセス可能な外部の記憶部に記憶されていてもよい。
【0101】
抽出ファイル1511,1512,…は、ファイル110の項目の組合せごとの、項目に含まれるデータをファイル110から抽出した抽出ファイルである。実施の形態3においては、索引情報121,122,…が示す格納場所は、抽出ファイル1511,1512,…が記憶された記憶部における格納場所である。
【0102】
情報提供装置100は、特定したポリシに対応する索引情報が索引情報121,122,…の中にない場合は、特定したポリシに対応する抽出ファイルおよび索引情報を作成してもよい。情報提供装置100は、作成した抽出ファイルを、情報提供装置100の内部または外部の記憶部に記憶することで、作成した抽出ファイルを抽出ファイル1511,1512,…に追加する。
【0103】
情報提供装置100が抽出ファイルを作成する場合は、抽出ファイル1511,1512,…をあらかじめ情報提供装置100の内部または外部の記憶部に記憶しておかなくてもよい。または、ファイル110の項目の一部の組合せに対応する抽出ファイルのみを情報提供装置100の内部または外部の記憶部に記憶しておいてもよい。この場合は、取得された要求情報101に基づく項目の組合せに対応する抽出ファイルのみが記憶されるため、抽出ファイル1511,1512,…が記憶される記憶部(メモリ)の使用量を低減することができる。
【0104】
または、ファイル110の項目のすべての組合せに対応する抽出ファイルおよび索引情報を情報提供装置100の内部または外部の記憶部に記憶しておいてもよい。この場合は、情報提供装置100が特定した組合せに対応する抽出ファイルおよび索引情報は常に抽出ファイル1511,1512,…および索引情報121,122,…に含まれている。したがって、情報提供装置100は新たな抽出ファイルおよび索引情報を作成する処理を行わなくてもよい。このため、要求情報101の取得時の情報提供装置100の処理量を低減することができる。
【0105】
情報提供装置100は、取得した索引情報に基づいて、抽出ファイル1511,1512,…が記憶された記憶部から、要求情報101が示す項目のデータを読み出す。図1に示す例では、情報提供装置100は、取得した索引情報121に基づいて、要求情報101が示す項目2の格納場所2を特定する。そして、情報提供装置100は、特定した格納場所2のデータを読み出すことでデータ2を読み出す。
【0106】
ここでは、要求情報101がファイル110の項目1〜nのうちの利用者がデータを要求する項目を示す情報である場合について説明したが、要求情報101はファイル110の項目1〜nのうちの特定の項目を示していなくてもよい。この場合は、たとえば、情報提供装置100は、利用者のポリシに対応する全項目のデータを読み出して出力する。
【0107】
(情報提供装置100の機能的構成例)
図16は、実施の形態3にかかる情報提供装置の機能的構成を示すブロック図である。図16において、図6に示した部分と同様の部分については同一の符号を付して説明を省略する。図16に示すように、実施の形態3にかかる情報提供装置100は、図6に示した構成に加えて抽出ファイル記憶部1610を備えている。
【0108】
抽出ファイル記憶部1610には、抽出ファイル1611,1612…が記憶される。抽出ファイル1611,1612…は、抽出ファイル記憶部1610にあらかじめ記憶されていてもよいし、作成部604によって作成されて抽出ファイル記憶部1610に記憶されてもよい。抽出ファイル記憶部1610は、RAM303、磁気ディスク305、光ディスク307などの情報提供装置100の記憶装置によって実現してもよいし、たとえば通信I/F308を介して情報提供装置100が接続可能な外部の記憶装置によって実現してもよい。
【0109】
抽出ファイル1611,1612…は、フラットファイル400の項目の組合せ(ポリシ)ごとに作成される情報であって、項目の組合せに含まれる項目のデータをフラットファイル400から抽出した抽出ファイルである。上述したように、検索部603は、検索の結果、対応するインデックスが存在しない場合には、特定部602によって特定されたポリシを作成部604へ通知する。
【0110】
作成部604は、検索部603から通知されたポリシに基づいてフラットファイル400から抽出ファイル1611,1612…を作成する。具体的には、作成部604は、フラットファイル400の各データのうちの、通知されたポリシに含まれる項目のデータを抽出する。そして、作成部604は、抽出結果を抽出ファイルとして抽出ファイル記憶部1610に記憶する。
【0111】
また、作成部604は、検索部603から通知されたポリシに対応するインデックスを作成する。具体的には、作成部604は、通知されたポリシに含まれる項目のデータの抽出ファイル記憶部1610におけるアドレス(格納場所)を取得し、取得したアドレスと項目とを対応付けることによってインデックスを作成する。
【0112】
なお、作成部604によって作成されたインデックスは、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。また、作成部604は、作成したインデックスをインデックス情報記憶部610のインデックス612a,612b,…に追加する。また、作成部604は、作成したインデックスを、検索部603から通知されたポリシと対応付けてインデックス管理テーブル611に登録する。
【0113】
読出部605は、取得部601によって取得された要求情報101が示す項目のデータを、検索部603によって取得されたインデックスに基づいて、抽出ファイル記憶部1610から読み出す。具体的には、読出部605は、要求情報101が示す項目のデータに対応するアドレスをインデックスから検索する。そして、読出部605は、抽出ファイル記憶部1610における、検索により得られたアドレスのデータを読み出す。
【0114】
(抽出ファイルの内容)
図17は、実施の形態3にかかる抽出ファイルの内容の一例を示す説明図である。図17において、抽出ファイル1611は、フラットファイル400の項目のうちの、ポリシp1(Name1、Name2、SalaryおよびCodeの組合せ、すなわち全項目)に対応する抽出ファイルである。したがって、抽出ファイル1611は、Name1、Name2、SalaryおよびCodeのフィールドを有する。各フィールドに情報を設定することで、人物データ1701−1〜1701−4がレコードとして記憶されている。人物データ1701−1〜1701−4のそれぞれは、図4に示した人物データ400−1〜400−4の全項目を抽出したデータ(全データ)である。
【0115】
抽出ファイル1612は、フラットファイル400の項目のうちの、ポリシp2(Name1、SalaryおよびCodeの組合せ)に対応する抽出ファイルである。したがって、抽出ファイル1612は、Name1、SalaryおよびCodeのフィールドを有する。各フィールドに情報を設定することで、人物データ1702−1〜1702−4がレコードとして記憶されている。人物データ1702−1〜1702−4のそれぞれは、図4に示した人物データ400−1〜400−4のName1、SalaryおよびCodeを抽出したデータである。
【0116】
一例として、人物データ1701−1を例に挙げると、Name1「SALAZAR」、Name2「KATE」、Salary「439476」およびCode「DX2XS2」が記憶されている。抽出ファイル1611,1612,…は、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されている。
【0117】
図17に示す例では、フラットファイル400の各データを、セル(データ)単位でなく項目(行または列)単位でデータを削除することで抽出ファイル1611,1612,…を作成している。これにより、抽出ファイル1611,1612,…のデータ量を削減することができる。
【0118】
(情報提供装置100による処理)
図18は、実施の形態3にかかる情報提供装置による処理の一例を示すフローチャートである。実施の形態3にかかる情報提供装置100は、たとえば図18に示す各ステップを実行する。図18に示すステップS1801〜S1803は、図9に示したステップS901〜S903と同様である。
【0119】
ステップS1803において、ポリシに一致するインデックスがある場合(ステップS1803:Yes)は、情報提供装置100は、ステップS1808へ移行する。ポリシに一致するインデックスがない場合(ステップS1803:No)は、作成部604が、ステップS1802によって特定されたポリシに基づいてフラットファイル400からデータを抽出する(ステップS1804)。
【0120】
つぎに、作成部604が、ステップS1804による抽出結果を抽出ファイルとして抽出ファイル記憶部1610に記憶する(ステップS1805)。つぎに、作成部604が、ステップS1805によって記憶された抽出ファイルにおける、ステップS1802によって特定されたポリシが示す各項目のデータのアドレスを示すインデックスを作成する(ステップS1806)。
【0121】
図18に示すステップS1807,S1808は、図9に示したステップS905,S906と同様である。以上の各ステップにより、利用者のポリシごとに抽出ファイルを作成するとともに、利用者のポリシに対応するインデックスに基づいて、利用者からの要求情報101が示す項目のデータを利用者に提供することができる。
【0122】
(インデックスの作成処理)
図19は、実施の形態3にかかるインデックスの作成処理の一例を示すフローチャートである。作成部604は、図18に示したステップS1806において、たとえば図19に示す各ステップを実行する。図19に示す各ステップにおいて、COLab、ROWabは、図18のステップS1805によって記憶された抽出ファイルの列、行を示す変数である。また、ADDRESSabは、図18のステップS1805によって記憶された抽出ファイルにおけるアドレスを示す変数である。
【0123】
まず、作成部604は、図18のステップS1805によって記憶された抽出ファイルを開く(ステップS1901)。図19の説明において、ステップS1901によって開かれた抽出ファイルを単に抽出ファイルと称する。つぎに、作成部604は、COLabに1を設定する(ステップS1902)。つぎに、作成部604は、ROWabに1を設定する(ステップS1903)。つぎに、作成部604は、ADDRESSabに0を設定する(ステップS1904)。
【0124】
つぎに、作成部604は、現在のCOLab、ROWabおよびADDRESSabが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する(ステップS1905)。ステップS1905において、作成部604は、COLabおよびROWabが示す項目(列および行)を、抽出ファイルにおける項目から、フラットファイル400における項目に変換して追加する。
【0125】
たとえば、作成部604は、抽出ファイルの作成時に、フラットファイル400における項目と、抽出ファイルにおける項目と、の対応情報を生成して記憶部に記憶しておく。そして、作成部604は、記憶部に記憶された対応情報に基づいて、抽出ファイルにおける項目からフラットファイル400における項目への変換を行う。
【0126】
つぎに、作成部604は、抽出ファイルにおける現在のADDRESSabが示すアドレスに格納された文字が区切り文字であるか否かを判断する(ステップS1906)。区切り文字には、たとえば、ファイルの終端(End Of File)、列の区切り、行の区切りがある。区切り文字でない場合(ステップS1906:No)は、作成部604は、ADDRESSabをインクリメントし(ステップS1907)、ステップS1906へ戻る。
【0127】
ステップS1906において、区切り文字である場合(ステップS1906:Yes)は、作成部604は、抽出ファイルにおける現在のADDRESSabが示すアドレスに格納された文字がファイルの終端であるか否かを判断する(ステップS1908)。ファイルの終端である場合(ステップS1908:Yes)は、作成部604は、一連の処理を終了する。ファイルの終端でない場合(ステップS1908:No)は、作成部604は、抽出ファイルにおける現在のADDRESSabが示すアドレスに格納された文字が列の区切りであるか否かを判断する(ステップS1909)。
【0128】
ステップS1909において、格納された文字が列の区切りである場合(ステップS1909:Yes)は、作成部604は、COLabをインクリメントし(ステップS1910)、ステップS1913へ移行する。格納された文字が列の区切りでなく行の区切りである場合(ステップS1909:No)は、作成部604は、ROWabをインクリメントする(ステップS1911)。つぎに、作成部604は、COLabを1に設定し(ステップS1912)、ステップS1913へ移行する。
【0129】
つぎに、作成部604は、現在のCOLab、ROWabおよびADDRESSabが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する(ステップS1913)。ステップS1913において、作成部604は、COLabおよびROWabが示す列および行を、抽出ファイルにおける列および行から、フラットファイル400における列および行に変換して追加する。
【0130】
つぎに、作成部604は、ADDRESSabをインクリメントし(ステップS1914)、ステップS1906へ戻る。以上の各ステップにより、図18に示したステップS1802によって特定されたポリシに対応するインデックスを作成することができる。
【0131】
(データの提供処理)
図20は、実施の形態3にかかるデータの提供処理の一例を示すフローチャートである。情報提供装置100は、図18に示したステップS1808において、たとえば図20に示す各ステップを実行する。図20に示す各ステップは、図11に示した各ステップと同様である。ただし、ステップS2004においては、読出部605が、ステップS2001によって取得されたインデックスに基づいてデータを抽出ファイル記憶部1610から読み出す(ステップS2004)。
【0132】
具体的には、要求情報101に項目が含まれている場合は、読出部605は、要求情報101が示す列および行に対応する抽出ファイル記憶部1610のアドレスをインデックスに基づいて特定し、特定したアドレスのデータを読み出す。また、要求情報101に項目が含まれていない場合は、読出部605は、インデックスが示す抽出ファイル記憶部1610の各アドレスのデータを読み出す。
【0133】
以上の各ステップにより、要求情報101が示す項目のデータを利用者に提供することができる。また、利用者が取得する権限を有していない項目のデータについては利用者へ提供せず、エラーメッセージを出力することができる。
【0134】
このように、実施の形態3にかかる情報提供装置100は、ポリシごとにインデックスおよび抽出ファイルを作成し、利用者が要求する項目のデータをインデックスに基づいて抽出ファイルから取得する。これにより、利用者の権限に応じて利用者にデータを提供することができる。
【0135】
また、ポリシの数は利用者の数より少ない。したがって、ポリシごとの抽出ファイルを作成することで、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに作成する場合に比べて、作成するデータのファイル数を低減することができる。したがって、メモリの使用量を低減することができる。
【0136】
また、実施の形態3にかかる情報提供装置100において、実施の形態2にかかる情報提供装置100のようにインデックスの圧出処理を行ってもよい。これにより、メモリの使用量をさらに低減することができる。
【0137】
また、図19に示したインデックスの作成処理において、抽出ファイルの項目をフラットファイル400の項目に変換してインデックスに追加する処理について説明したが、抽出ファイルの項目をそのままインデックスに追加する処理としてもよい。この場合は、インデックスは、抽出ファイルにおける項目と、抽出ファイルにおけるデータのアドレスと、を対応付けることになる。
【0138】
これに対して、読出部605は、要求情報101が示す項目(フラットファイル400における項目)を抽出ファイルにおける項目に変換する。たとえば、作成部604が、抽出ファイルの作成時に、フラットファイル400における項目と、抽出ファイルにおける項目と、の対応情報を生成して記憶部に記憶しておく。読出部605は、記憶部に記憶された対応情報に基づいて、フラットファイル400における項目から抽出ファイルにおける項目への変換を行う。読出部605は、変換した項目およびインデックスに基づいてデータを読み出す。
【0139】
(実施の形態4)
実施の形態4にかかる情報提供装置100について、実施の形態1または2にかかる情報提供装置100と異なる部分について説明する。
【0140】
(情報提供装置100による情報提供)
図21は、実施の形態4にかかる情報提供装置による情報提供の一例を示す図である。図21において、図1に示した部分と同様の部分については同一の符号を付して説明を省略する。情報提供装置100は、秘匿化ファイル2111〜2113,…を内部の記憶部に記憶している。または、秘匿化ファイル2111〜2113,…は、情報提供装置100からアクセス可能な外部の記憶部に記憶されていてもよい。
【0141】
秘匿化ファイル2111〜2113,…は、ファイル110の項目に含まれるデータをファイル110から抽出し、抽出結果をシード(秘匿方法)に基づいて秘匿化したファイルである。秘匿化ファイル2111〜2113,…は、ポリシおよびシードの組合せごとに記憶される。また、索引情報121〜123,…は、ポリシおよびシードの組合せごとに記憶される。また、索引情報121〜123,…が示す格納場所は、秘匿化ファイル2111〜2113,…が記憶された記憶部における格納場所である。
【0142】
また、情報提供装置100は、ファイル110のデータを要求する利用者と、ポリシおよびシード(秘匿方法)の組合せと、を対応付ける権限情報をたとえば内部の記憶部に記憶している。または、権限情報は、情報提供装置100からアクセス可能な外部の記憶部に記憶されていてもよい。
【0143】
また、情報提供装置100は、索引情報121〜123,…をたとえば内部の記憶部に記憶している。または、索引情報121〜123,…は、情報提供装置100からアクセス可能な外部の記憶部に記憶されていてもよい。索引情報121〜123,…は、ファイル110の項目と、ファイル110の項目のデータの格納場所(アドレス)と、を対応付けるファイル110の項目の組合せごとの索引情報である。索引情報121〜123,…が示す格納場所は、ファイル110が記憶された記憶部における格納場所である。
【0144】
情報提供装置100は、要求情報101が示す利用者のポリシおよびシード(秘匿化方法)を特定する。そして、情報提供装置100は、特定したポリシおよびシードの組合せに対応する索引情報をインデックス情報記憶部610から検索する。情報提供装置100は、特定したポリシおよびシードの組合せに対応する索引情報が索引情報121,122,…の中にない場合は、特定したポリシおよびシードの組合せに対応する秘匿化ファイルおよび索引情報を作成してもよい。情報提供装置100は、作成した秘匿化ファイルを、情報提供装置100の内部または外部の記憶部に記憶することで、作成した秘匿化ファイルを秘匿化ファイル2111〜2113,…に追加する。
【0145】
情報提供装置100が秘匿化ファイルを作成する場合は、秘匿化ファイル2111〜2113,…をあらかじめ情報提供装置100の内部または外部の記憶部に記憶しておかなくてもよい。または、ファイル110の項目の一部の組合せに対応する秘匿化ファイルのみを情報提供装置100の内部または外部の記憶部に記憶しておいてもよい。この場合は、取得された要求情報101に基づく項目の組合せに対応する秘匿化ファイルのみが記憶されるため、秘匿化ファイル2111〜2113,…が記憶される記憶部(メモリ)の使用量を低減することができる。
【0146】
または、ファイル110の項目のすべての組合せに対応する秘匿化ファイルおよび索引情報を情報提供装置100の内部または外部の記憶部に記憶しておいてもよい。この場合は、情報提供装置100が特定した組合せに対応する秘匿化ファイルおよび索引情報は常に秘匿化ファイル2111〜2113,…および索引情報121,122,…に含まれている。したがって、情報提供装置100は新たな秘匿化ファイルおよび索引情報を作成する処理を行わなくてもよい。このため、要求情報101の取得時の情報提供装置100の処理量を低減することができる。
【0147】
情報提供装置100は、取得した索引情報に基づいて、秘匿化ファイル2111〜2113,…が記憶された記憶部から、要求情報101が示す項目のデータを読み出す。図1に示す例では、情報提供装置100は、取得した索引情報121に基づいて、要求情報101が示す項目2の格納場所2を特定する。そして、情報提供装置100は、特定した格納場所2のデータを読み出すことでデータ2を読み出す。
【0148】
ここでは、要求情報101がファイル110の項目1〜nのうちの利用者がデータを要求する項目を示す情報である場合について説明したが、要求情報101はファイル110の項目1〜nのうちの特定の項目を示していなくてもよい。この場合は、たとえば、情報提供装置100は、利用者のポリシに対応する全項目のデータを読み出して出力する。
【0149】
(情報提供装置100の機能的構成例)
図22は、実施の形態4にかかる情報提供装置の機能的構成を示すブロック図である。図22において、図6または図16に示した部分と同様の部分については同一の符号を付して説明を省略する。図22に示すように、実施の形態4にかかる情報提供装置100は、図6または図16に示した構成に加えて秘匿化ファイル記憶部2210を備えている。
【0150】
秘匿化ファイル記憶部2210には、秘匿化ファイル2211,2212…が記憶される。秘匿化ファイル2211,2212…は、秘匿化ファイル記憶部2210にあらかじめ記憶されていてもよいし、作成部604および秘匿化部606によって作成されて秘匿化ファイル記憶部2210に記憶されてもよい。秘匿化ファイル記憶部2210は、RAM303、磁気ディスク305、光ディスク307などの情報提供装置100の記憶装置によって実現してもよいし、通信I/F308を介して情報提供装置100が接続可能な外部の記憶装置によって実現してもよい。
【0151】
秘匿化ファイル2211,2212…は、ポリシおよびシードの組合せごとに作成される情報である。また、秘匿化ファイル2211,2212…は、項目の組合せに含まれる項目のデータをフラットファイル400から抽出し、抽出結果をシードに基づいて秘匿化したPP(Privacy Protection)ファイルである。秘匿化部606は、作成部604によって作成された抽出ファイルの各データを、特定部602によって特定されたシードに基づいて秘匿化する。秘匿化部606は、各データを秘匿化した抽出ファイルを秘匿化データとして秘匿化ファイル記憶部2210に記憶する。
【0152】
インデックス情報記憶部610のインデックス612a,612b,…は、ポリシ(フラットファイル400の項目の組合せ)およびシードの組合せごとに存在する。また、インデックス612a,612b,…が示すアドレスは、秘匿化ファイル記憶部2210におけるアドレスを示す。
【0153】
読出部605は、取得部601によって取得された要求情報101が示す項目のデータを、検索部603によって取得されたインデックスに基づいて、秘匿化ファイル記憶部2210から読み出す。具体的には、読出部605は、要求情報101が示す項目のデータに対応するアドレスをインデックスから検索する。そして、読出部605は、秘匿化ファイル記憶部2210における、検索により得られたアドレスのデータを読み出す。ここでは、読出部605が読み出したデータはすでに秘匿化されている。出力部607は、読出部605によって読み出された秘匿化済みのデータを出力する。
【0154】
(秘匿化ファイルの内容)
図23は、実施の形態4にかかる秘匿化ファイルの内容の一例を示す説明図である。図23に示す秘匿化ファイル2211は、フラットファイル400の項目のうちの、ポリシp1(Name1、Name2、SalaryおよびCodeの組合せ、すなわち全項目)およびシードs1に対応する秘匿化ファイルである。したがって、秘匿化ファイル2211は、Name1、Name2、SalaryおよびCodeのフィールドを有する。
【0155】
各フィールドに情報を設定することで、人物データ2301−1〜2301−4がレコードとして記憶されている。人物データ2301−1〜2301−4のそれぞれは、シードs1に基づいて秘匿化されている。たとえば、人物データ2301−1〜2301−4のName1は、元の文字列から頭文字だけに置換されている。また、人物データ2301−1〜2301−4のSalaryは、シードs1に基づいて乱数化されている。
【0156】
秘匿化ファイル2212は、フラットファイル400の項目のうちの、ポリシp2(Name1、SalaryおよびCodeの組合せ)およびシードs3に対応する秘匿化ファイルである。したがって、秘匿化ファイル2212は、Name1、SalaryおよびCodeのフィールドを有する。
【0157】
各フィールドに情報を設定することで、人物データ2302−1〜2302−4がレコードとして記憶されている。人物データ2302−1〜2302−4のそれぞれは、シードs3に基づいて秘匿化されている。たとえば、人物データ2302−1〜2302−4のName1は、数字に置換されている。また、人物データ2302−1〜2302−4のSalaryは、端数が切り捨てられている。
【0158】
秘匿化ファイル2213は、フラットファイル400の項目のうちの、ポリシp1(Name1、Name2、SalaryおよびCodeの組合せ、すなわち全項目)およびシードs2に対応する秘匿化ファイルである。したがって、秘匿化ファイル2213は、Name1、Name2、SalaryおよびCodeのフィールドを有する。
【0159】
各フィールドに情報を設定することで、人物データ2303−1〜2303−4がレコードとして記憶されている。人物データ2303−1〜2303−4のそれぞれは、シードs2に基づいて秘匿化されている。たとえば、人物データ2303−1〜2303−4のName1およびName2は、元の文字列から頭文字だけに置換されている。また、人物データ2301−2〜2302−4のSalaryは、シードs2に基づいて乱数化されている。
【0160】
一例として、人物データ2301−1を例に挙げると、Name1「S」、Name2「KATE」、Salary「413107」およびCode「DX2XS2」が記憶されている。秘匿化ファイル2211,2212,2213,…は、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されている。
【0161】
図23に示す例では、フラットファイル400の各データを、セル(データ)単位でなく項目(行または列)単位でデータを削除し、残りの各データを秘匿化することで秘匿化ファイル2211,2212…を作成している。これにより、秘匿化ファイル2211,2212…のデータ量を削減することができる。
【0162】
(インデックス管理テーブル611の内容)
図24は、実施の形態4にかかるインデックス管理テーブルの内容の一例を示す説明図である。図24に示すインデックス管理テーブル611は、図22に示したインデックス管理テーブル611の一例である。インデックス管理テーブル611は、ポリシ、シードおよびインデックスのフィールドを有する。各フィールドに情報を設定することで、管理データ2400−1〜2400−3がレコードとして記憶されている。
【0163】
ここで、ポリシは、利用者テーブル500に含まれるポリシに対応する情報である。シードは、利用者テーブル500に含まれるシードに対応する情報である。インデックスは、インデックス情報記憶部610に記憶されたインデックス612a,612b,…のそれぞれを示す識別情報である。
【0164】
一例として、管理データ2400−1を例に挙げると、ポリシ「p1」、シード「s1」およびインデックス「index1」が記憶されている。実施の形態4においては、ポリシおよびシードの組合せごとにインデックスが作成されるため、インデックス管理テーブル611においてはポリシおよびシードの組合せとインデックスとが対応付けられる。
【0165】
(情報提供装置100による処理)
図25は、実施の形態4にかかる情報提供装置による処理の一例を示すフローチャートである。実施の形態4にかかる情報提供装置100は、たとえば図25に示す各ステップを実行する。図25に示すステップS2501〜S2504は、図18に示したステップS1801〜S1804と同様である。ただし、ステップS2502においては、特定部602が、ステップS2501によって取得された要求情報101が示す利用者のポリシおよびシードを特定する(ステップS2502)。
【0166】
ステップS2504のつぎに、秘匿化部606が、ステップS2504による抽出結果を、ステップS2502によって特定されたシードに基づいて秘匿化する(ステップS2505)。つぎに、秘匿化部606が、ステップS2505によって秘匿化されたステップS2504による抽出結果を、秘匿化ファイルとして秘匿化ファイル記憶部2210に記憶する(ステップS2506)。つぎに、作成部604が、ステップS2506によって記憶された秘匿化ファイルにおける、ステップS2502によって特定されたポリシが示す各項目のデータのアドレスを示すインデックスを作成する(ステップS2507)。
【0167】
図25に示すステップS2508,S2509は、図9に示したステップS905,S906と同様である。以上の各ステップにより、利用者のポリシおよびシードの組合せごとに秘匿化ファイルを作成するとともに、利用者のポリシに対応するインデックスに基づいて、要求情報101が示す項目のデータを利用者に提供することができる。
【0168】
(インデックスの作成処理)
図26は、実施の形態4にかかるインデックスの作成処理の一例を示すフローチャートである。作成部604は、図25に示したステップS2507において、たとえば図26に示す各ステップを実行する。図26に示す各ステップにおいて、COLpp、ROWppは、図25のステップS2506によって記憶された秘匿化ファイルの列、行を示す変数である。また、ADDRESSppは、図25のステップS2506によって記憶された秘匿化ファイルにおけるアドレスを示す変数である。
【0169】
まず、作成部604は、図25のステップS2506によって記憶された秘匿化ファイルを開く(ステップS2601)。図26の説明において、ステップS2601によって開かれた秘匿化ファイルを単に秘匿化ファイルと称する。つぎに、作成部604は、COLppに1を設定する(ステップS2602)。つぎに、作成部604は、ROWppに1を設定する(ステップS2603)。つぎに、作成部604は、ADDRESSppに0を設定する(ステップS2604)。
【0170】
つぎに、作成部604は、現在のCOLpp、ROWppおよびADDRESSppが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する(ステップS2605)。ステップS2605において、作成部604は、COLppおよびROWppが示す項目(列および行)を、秘匿化ファイルにおける項目から、フラットファイル400における項目に変換して追加する。
【0171】
たとえば、作成部604は、秘匿化ファイルの作成時に、フラットファイル400における項目と、秘匿化ファイルにおける項目と、の対応情報を生成して記憶部に記憶しておく。そして、作成部604は、記憶部に記憶された対応情報に基づいて、秘匿化ファイルにおける項目からフラットファイル400における項目への変換を行う。
【0172】
つぎに、作成部604は、秘匿化ファイルにおける現在のADDRESSppが示すアドレスに格納された文字が区切り文字であるか否かを判断する(ステップS2606)。区切り文字には、たとえば、ファイルの終端(End Of File)、列の区切り、行の区切りがある。区切り文字でない場合(ステップS2606:No)は、作成部604は、ADDRESSppをインクリメントし(ステップS2607)、ステップS2606へ戻る。
【0173】
ステップS2606において、区切り文字である場合(ステップS2606:Yes)は、作成部604は、秘匿化ファイルにおける現在のADDRESSppが示すアドレスに格納された文字がファイルの終端であるか否かを判断する(ステップS2608)。ファイルの終端である場合(ステップS2608:Yes)は、作成部604は、一連の処理を終了する。ファイルの終端でない場合(ステップS2608:No)は、作成部604は、秘匿化ファイルにおける現在のADDRESSppが示すアドレスに格納された文字が列の区切りであるか否かを判断する(ステップS2609)。
【0174】
ステップS2609において、格納された文字が列の区切りである場合(ステップS2609:Yes)は、作成部604は、COLppをインクリメントし(ステップS2610)、ステップS2613へ移行する。格納された文字が列の区切りでなく行の区切りである場合(ステップS2609:No)は、作成部604は、ROWppをインクリメントする(ステップS2611)。つぎに、作成部604は、COLppを1に設定し(ステップS2612)、ステップS2613へ移行する。
【0175】
つぎに、作成部604は、現在のCOLpp、ROWppおよびADDRESSppが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する(ステップS2613)。ステップS2613において、作成部604は、COLppおよびROWppが示す列および行を、秘匿化ファイルにおける列および行から、フラットファイル400における列および行に変換して追加する。
【0176】
つぎに、作成部604は、ADDRESSppをインクリメントし(ステップS2614)、ステップS2606へ戻る。以上の各ステップにより、要求情報101が示す利用者のポリシおよびシードの組合せに対応するインデックスを作成することができる。
【0177】
(データの提供処理)
図27は、実施の形態4にかかるデータの提供処理の一例を示すフローチャートである。情報提供装置100は、図25に示したステップS2509において、たとえば図27に示す各ステップを実行する。まず、検索部603が、図25のステップS2502によって特定されたポリシおよびシードの組合せに一致するインデックスをインデックス情報記憶部610から取得する(ステップS2701)。つぎに、読出部605が、要求情報101に利用者が要求する項目が含まれているか否かを判断する(ステップS2702)。
【0178】
ステップS2702において、要求情報101に項目が含まれていない場合(ステップS2702:No)は、情報提供装置100は、ステップS2704へ移行する。要求情報101に項目が含まれている場合(ステップS2702:Yes)は、読出部605が、要求情報101が示す項目(列および行)が、ステップS2701によって取得されたインデックスにあるか否かを判断する(ステップS2703)。項目がインデックスにある場合(ステップS2703:Yes)は、読出部605が、ステップS2701によって取得されたインデックスに基づいてデータを秘匿化ファイル記憶部2210から読み出す(ステップS2704)。
【0179】
具体的には、要求情報101に項目が含まれている場合は、読出部605は、要求情報101が示す列および行に対応する秘匿化ファイル記憶部2210のアドレスをインデックスに基づいて特定し、特定したアドレスのデータを読み出す。また、要求情報101に項目が含まれていない場合は、読出部605は、インデックスが示す秘匿化ファイル記憶部2210の各アドレスのデータを読み出す。なお、ステップS2704によって読み出されるデータは、図25のステップS2505によって秘匿化されている。つぎに、出力部607が、ステップS2704によって読み出されたデータを出力し(ステップS2705)、一連の処理を終了する。
【0180】
ステップS2703において、項目がインデックスにない場合(ステップS2703:No)は、読出部605が、データを取得できなかった旨のエラーメッセージを生成する(ステップS2706)。つぎに、出力部607が、ステップS2706によって生成されたエラーメッセージを出力し(ステップS2707)、一連の処理を終了する。以上の各ステップにより、要求情報101が示す項目のデータを利用者に提供することができる。また、利用者が取得する権限を有していない項目のデータについては利用者へ提供せず、エラーメッセージを出力することができる。
【0181】
このように、実施の形態4にかかる情報提供装置100は、ポリシおよびシードの組合せごとにインデックスおよび秘匿化ファイルを作成し、利用者が要求する項目のデータをインデックスに基づいて秘匿化ファイルから取得する。これにより、利用者の権限に応じて利用者にデータを提供することができる。
【0182】
また、ポリシおよびシードの組合せの数は利用者の数より少ない。したがって、ポリシおよびシードの組合せごとの秘匿化ファイルを作成することで、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに作成する場合に比べて、作成するデータのファイル数を低減することができる。したがって、メモリの使用量を低減することができる。
【0183】
また、実施の形態4にかかる情報提供装置100において、実施の形態2にかかる情報提供装置100のようにインデックスの圧出処理を行ってもよい。これにより、メモリの使用量をさらに低減することができる。
【0184】
また、図26に示したインデックスの作成処理において、秘匿化ファイルの項目をフラットファイル400の項目に変換してインデックスに追加する処理について説明したが、秘匿化ファイルの項目をそのままインデックスに追加する処理としてもよい。この場合は、インデックスは、秘匿化ファイルにおける項目と、フラットファイル400におけるデータのアドレスと、を対応付けることになる。
【0185】
これに対して、読出部605は、要求情報101が示す項目(フラットファイル400における項目)を秘匿化ファイルにおける項目に変換する。たとえば、作成部604が、秘匿化ファイルの作成時に、フラットファイル400における項目と、秘匿化ファイルにおける項目と、の対応情報を生成して記憶部に記憶しておく。読出部605は、記憶部に記憶された対応情報に基づいて、フラットファイル400における項目から秘匿化ファイルにおける項目への変換を行う。読出部605は、変換した項目およびインデックスに基づいてデータを読み出す。
【0186】
以上説明したように、情報提供装置、情報提供方法および情報提供プログラムは、ポリシごとにデータのアドレスを示すインデックスを記憶し、利用者が要求する項目のデータをインデックスに基づいてフラットファイルから読み出す。これにより、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに記憶しなくても、利用者の権限に応じてデータを提供することができる。このため、メモリの使用量を低減することができる。
【0187】
また、ポリシに対応するインデックスがない場合にポリシに対応するインデックスをフラットファイルに基づいて作成し、作成したインデックスに基づいてデータを取得してもよい。これにより、すべてのポリシに対応するインデックスをあらかじめ記憶しておかなくても、利用者の権限に応じてデータを提供することができる。このため、インデックスを記憶する数を減らし、メモリの使用量を低減することができる。
【0188】
また、ポリシごとのインデックスのうちの、他のインデックスと共通の項目を含むインデックスは、他のインデックスと共通の項目と、他のインデックスを示す識別情報と、を対応付けてもよい。この場合は、他のインデックスを示す識別情報を含むインデックスが検索により得られた場合に、識別情報に基づいて他のインデックスを取得し、取得した他のインデックスに基づいてデータを読み出すことができる。これにより、記憶されるインデックスのデータ量を少なくし、メモリの使用量を低減することができる。
【0189】
また、利用者のポリシは、利用者とポリシとを対応付ける権限情報に基づいて特定することができる。また、読み出したデータは、たとえば要求元の利用者に対応するシードに基づいて秘匿化して出力してもよい。
【0190】
また、情報提供装置、情報提供方法および情報提供プログラムは、ポリシごとにデータのアドレスを示すインデックスを記憶し、インデックスに基づいてポリシごとの抽出ファイルからデータを読み出す。これにより、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに記憶しなくても、利用者の権限に応じてデータを提供することができる。このため、メモリの使用量を低減することができる。
【0191】
また、ポリシに対応する抽出ファイルがない場合にポリシに対応する抽出ファイルをフラットファイルに基づいて作成し、作成した抽出ファイルに基づいてデータを取得してもよい。これにより、すべてのポリシに対応する抽出ファイルをあらかじめ記憶しておかなくても、利用者の権限に応じてデータを提供することができる。このため、抽出ファイルを記憶する数を減らし、メモリの使用量を低減することができる。
【0192】
また、情報提供装置、情報提供方法および情報提供プログラムは、ポリシおよびシードの組合せごとにデータのアドレスを示すインデックスを記憶し、インデックスに基づいてポリシおよびシードの組合せごとの秘匿化ファイルからデータを読み出す。これにより、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに記憶しなくても、利用者の権限に応じてデータを提供することができる。このため、メモリの使用量を低減することができる。
【0193】
また、ポリシに対応する秘匿化ファイルがない場合にポリシに対応する秘匿化ファイルをフラットファイルに基づいて作成し、作成した秘匿化ファイルに基づいてデータを取得してもよい。これにより、すべてのポリシに対応する秘匿化ファイルをあらかじめ記憶しておかなくても、利用者の権限に応じてデータを提供することができる。このため、秘匿化ファイルを記憶する数を減らし、メモリの使用量を低減することができる。
【0194】
なお、各実施の形態で説明した情報提供方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報提供プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報提供プログラムは、インターネット等のネットワークを介して配布してもよい。
【0195】
また、各実施の形態で説明した情報提供装置100は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した情報提供装置100の機能(取得部601〜出力部607)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより情報提供装置100を製造することができる。
【0196】
上述した各実施の形態に関し、さらに以下の付記を開示する。
【0197】
(付記1)記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶されたファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【0198】
(付記2)前記ファイル内の項目の組合せごとの索引情報に前記対応する索引情報がない場合に、当該対応する索引情報を前記ファイルに基づいて作成し、
前記データを読み出す際に、作成した前記索引情報に基づいて前記読み出す処理を前記コンピュータに実行させることを特徴とする付記1に記載の情報提供プログラム。
【0199】
(付記3)前記ファイル内の項目の組合せごとの索引情報のうちの、当該索引情報のうちの他の索引情報と共通の項目を含む索引情報は、前記共通の項目と、前記他の索引情報を示す識別情報と、を対応付ける情報であり、
前記識別情報を含む索引情報が前記検索により得られた場合に、前記識別情報に基づいて前記他の索引情報を取得し、取得した前記他の索引情報に基づいて前記読み出す処理を前記コンピュータに実行させることを特徴とする付記1または2に記載の情報提供プログラム。
【0200】
(付記4)前記利用者情報と、前記ファイル内の項目のうちの当該利用者情報によって特定される利用者がデータを取得する権限を有する項目の組合せと、を対応付ける権限情報に基づいて前記利用者情報に対応する項目の組合せを特定し、
前記対応する索引情報を検索する際に、特定した前記組合せに対応する索引情報を検索する処理を前記コンピュータに実行させることを特徴とする付記1〜3のいずれか一つに記載の情報提供プログラム。
【0201】
(付記5)読み出した前記データを秘匿化し、
読み出した前記データを出力する際に、秘匿化した前記データを出力する処理を前記コンピュータに実行させることを特徴とする付記1〜4のいずれか一つに記載の情報提供プログラム。
【0202】
(付記6)前記要求情報は、前記ファイル内の複数の項目のうちの前記利用者がデータを要求する項目を示し、
前記データを読み出す際に、前記要求情報が示す項目のデータを読み出すことを特徴とする付記1〜5のいずれか一つに記載の情報提供プログラム。
【0203】
(付記7)記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出した抽出ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【0204】
(付記8)前記ファイル内の項目の組合せごとの前記抽出ファイルに、前記利用者情報によって特定される利用者がデータを取得する権限を有する項目の組合せに対応する抽出ファイルがない場合に、当該対応する抽出ファイルを前記ファイルに基づいて作成し、
前記データを読み出す際に、作成した前記抽出ファイルから前記対応する項目のデータの格納場所のデータを読み出す処理を前記コンピュータに実行させることを特徴とする付記7に記載の情報提供プログラム。
【0205】
(付記9)記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出し、抽出したデータを当該組合せに含まれる秘匿化方法によって秘匿化した秘匿化ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【0206】
(付記10)前記ファイル内の項目の組合せごとの前記秘匿化ファイルに、利用者情報によって特定される利用者がデータを取得する権限を有する項目の組合せおよび秘匿化方法に対応する秘匿化ファイルがない場合に、当該対応する秘匿化ファイルを前記ファイルに基づいて作成し、
前記データを読み出す際に、作成した前記秘匿化ファイルから前記対応する項目のデータの格納場所のデータを読み出す処理を前記コンピュータに実行させることを特徴とする付記9に記載の情報提供プログラム。
【0207】
(付記11)前記ファイルのデータを要求する利用者と、前記ファイル内の項目のうちの当該利用者がデータを取得する権限を有する項目の組合せと、前記データの秘匿化方法と、を対応付ける権限情報に基づいて、前記利用者情報によって特定される利用者に対応する組合せおよび秘匿化方法を特定し、
前記対応する索引情報を検索する際に、特定した前記組合せおよび前記秘匿化方法に対応する索引情報を検索する処理を前記コンピュータに実行させることを特徴とする付記9または10に記載の情報提供プログラム。
【0208】
(付記12)記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得する取得部と、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索する検索部と、
前記記憶部に記憶されたファイルから、前記検索部による検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出す読出部と、
前記読出部によって読み出されたデータを出力する出力部と、
を備えることを特徴とする情報提供装置。
【0209】
(付記13)記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得する取得部と、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索する検索部と、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出した抽出ファイルから、前記検索部による検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読出部と、
前記読出部によって読み出されたデータを出力する出力部と、
を備えることを特徴とする情報提供装置。
【0210】
(付記14)記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得する取得部と、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索する検索部と、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出し、抽出したデータを当該組合せに含まれる秘匿化方法によって秘匿化した秘匿化ファイルから、前記検索部による検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出す読出部と、
前記読出部によって読み出されたデータを出力する出力部と、
を備えることを特徴とする情報提供装置。
【0211】
(付記15)記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶されたファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
ことを特徴とする情報提供方法。
【0212】
(付記16)記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出した抽出ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
ことを特徴とする情報提供方法。
【0213】
(付記17)記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出し、抽出したデータを当該組合せに含まれる秘匿化方法によって秘匿化した秘匿化ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
ことを特徴とする情報提供方法。
【符号の説明】
【0214】
100 情報提供装置
101 要求情報
102 提供データ
110 ファイル
121〜123… 索引情報
200 通信システム
221〜22n 端末装置
230 ネットワーク
300 コンピュータ
301 CPU
302 ROM
303 RAM
304 磁気ディスクドライブ
305 磁気ディスク
306 光ディスクドライブ
307 光ディスク
308 通信I/F
309 ユーザI/F
320 バス
400 フラットファイル
500 利用者テーブル
601 取得部
602 特定部
603 検索部
604 作成部
605 読出部
606 秘匿化部
607 出力部
610 インデックス情報記憶部
611 インデックス管理テーブル
612a,612b インデックス
1511,1512,1611,1612 抽出ファイル
1610 抽出ファイル記憶部
2111〜2113,2211〜2213 秘匿化ファイル
2210 秘匿化ファイル記憶部
p1,p2 ポリシ
s1〜s3 シード

【特許請求の範囲】
【請求項1】
記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶されたファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【請求項2】
前記ファイル内の項目の組合せごとの索引情報に前記対応する索引情報がない場合に、当該対応する索引情報を前記ファイルに基づいて作成し、
前記データを読み出す際に、作成した前記索引情報に基づいて前記読み出す処理を前記コンピュータに実行させることを特徴とする請求項1に記載の情報提供プログラム。
【請求項3】
前記ファイル内の項目の組合せごとの索引情報のうちの、当該索引情報のうちの他の索引情報と共通の項目を含む索引情報は、前記共通の項目と、前記他の索引情報を示す識別情報と、を対応付ける情報であり、
前記識別情報を含む索引情報が前記検索により得られた場合に、前記識別情報に基づいて前記他の索引情報を取得し、取得した前記他の索引情報に基づいて前記読み出す処理を前記コンピュータに実行させることを特徴とする請求項1または2に記載の情報提供プログラム。
【請求項4】
記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出した抽出ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【請求項5】
前記ファイル内の項目の組合せごとの前記抽出ファイルに、前記利用者情報によって特定される利用者がデータを取得する権限を有する項目の組合せに対応する抽出ファイルがない場合に、当該対応する抽出ファイルを前記ファイルに基づいて作成し、
前記データを読み出す際に、作成した前記抽出ファイルから前記対応する項目のデータの格納場所のデータを読み出す処理を前記コンピュータに実行させることを特徴とする請求項4に記載の情報提供プログラム。
【請求項6】
記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出し、抽出したデータを当該組合せに含まれる秘匿化方法によって秘匿化した秘匿化ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【請求項7】
記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得する取得部と、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索する検索部と、
前記記憶部に記憶されたファイルから、前記検索部による検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出す読出部と、
前記読出部によって読み出されたデータを出力する出力部と、
を備えることを特徴とする情報提供装置。
【請求項8】
記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶されたファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
ことを特徴とする情報提供方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate