情報検索装置、情報検索方法及びプログラム
【課題】クライアント計算機からの問い合わせに対する応答性能及びキャッシュに必要な記憶領域の利用効率を向上させることを可能とする。
【解決手段】データベース検索処理部512は、データにおける問い合わせに合致する範囲であってアクセス権テーブル42に保持されているアクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する。データベース検索処理部512は、データにおける問い合わせに合致する範囲であってアクセス権テーブル42に保持されているアクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を抽出する。キャッシュ管理部511は、問い合わせ、アクセス許可リスト及び検索結果文字列を対応付けて含むキャッシュエントリをキャッシュ43に登録する。
【解決手段】データベース検索処理部512は、データにおける問い合わせに合致する範囲であってアクセス権テーブル42に保持されているアクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する。データベース検索処理部512は、データにおける問い合わせに合致する範囲であってアクセス権テーブル42に保持されているアクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を抽出する。キャッシュ管理部511は、問い合わせ、アクセス許可リスト及び検索結果文字列を対応付けて含むキャッシュエントリをキャッシュ43に登録する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、問い合わせに応じて検索された検索結果をキャッシュする情報検索装置、情報検索方法及びプログラムに関する。
【背景技術】
【0002】
一般的に、データベース管理システムに代表されるデータ検索システムにおいては、サーバ計算機(上で動作するデータ検索プログラム)がクライアント計算機(上で動作するクライアントプログラム)から送信された問い合わせ(検索要求)を受信し、当該問い合わせに応じてデータベースから必要なデータを検索する。このように検索された結果(検索結果)が、問い合わせに対する応答としてクライアント計算機に対して返される。
【0003】
ところで、サーバ計算機におけるデータベース検索処理は処理コストが高く検索システム全体のボトルネックになりやすい。このボトルネックを解消するために、例えば検索結果をサーバ計算機の主記憶装置上にキャッシュするという対策が考えられる。
【0004】
このようにキャッシュを用いたシステムにおいては、例えばクライアント計算機からの最初の問い合わせではキャッシュ内に該当するデータが存在しないため、サーバ計算機(上で動作するデータ検索プログラム)においてはデータベース検索処理が実行される。サーバ計算機は、検索結果をクライアント計算機に対して返信するとともに、当該クライアント計算機からの問い合わせの内容及び当該検索結果をキャッシュに登録する。
【0005】
この後、クライアント計算機から同一内容の問い合わせが送信された場合、サーバ計算機は、当該問い合わせに対する検索結果をキャッシュから取得することができるため、当該問い合わせに応じたデータベース検索処理を再度実行することなく当該検索結果をクライアント計算機に返すことができる。
【0006】
これにより、キャッシュを用いたシステムにおいては、サーバ計算機への負荷を軽減することができるとともに、クライアント計算機(上で動作するクライアントプログラム)に対する応答時間を短縮することができる。
【0007】
ところで、一般的に、データベース管理システム等のデータ検索システムは、アクセス権制御が可能である。クライアント計算機からの問い合わせが例えばアクセス権が設定されたデータベースに対する問い合わせである場合には、当該問い合わせを送信したクライアント計算機(を利用するユーザ)に設定されている権限によっては、当該問い合わせに応じて検索される検索結果に差が生じることがある。
【0008】
例えばデータA及びデータBにアクセス可能なユーザXとデータAにアクセス可能であってデータBにアクセス不能なユーザYとがともにデータA及びBが検索される内容の問い合わせをした場合を想定する。この場合、サーバ計算機においては、ユーザXからの問い合わせに対してはデータA及びBが検索結果として返される。一方、ユーザYからの問い合わせに対しては、当該ユーザYはデータBにアクセス不能であるため、データAのみが検索結果として返されることになる。
【0009】
したがって、上記したようにサーバ計算機において検索結果をキャッシュしておく場合、アクセス権によって検索結果が異なるため、当該キャッシュをユーザ別に管理する必要がある。
【0010】
上記したような検索結果をキャッシュする技術に関連して、制限されたコンテンツの効率的なコンテンツキャッシュを容易にする技術(以下、先行技術と表記)が開示されている(例えば、特許文献1を参照)。この先行技術によれば、制限されたコンテンツがキャッシュサーバに位置する場合は、制限されたコンテンツにユーザがアクセス認可されているか否かを判断し、アクセス認可されている場合は、制限されたコンテンツがキャッシュサーバから供給される。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特表2007−501984号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
ところで、上記したように問い合わせが同一であってもユーザが異なれば検索結果が異なる場合がある一方で、ユーザに設定されている権限によっては問い合わせが同一であればユーザが異なっていても検索結果が同一になる場合もある。上記した例において例えばユーザX及びユーザYがともにデータAが検索される内容の問い合わせをした場合には、異なるアクセス権が設定されたユーザからの問い合わせであるにもかかわらず、ユーザX及びユーザYのどちらからの問い合わせに対してもデータAが検索結果として返される。
【0013】
しかしながら、上記したようなユーザ別にキャッシュを管理する方法では、たとえ問い合わせ及びその検索結果が等しい場合であっても当該問い合わせをしたユーザが異なる場合には、キャッシュ内のデータ(検索結果)を共有できない。このため、キャッシュミスによる応答性能劣化及びキャッシュデータの重複による主記憶使用量(キャッシュに必要な記憶領域)の増加を招く。
【0014】
そこで、本発明の目的は、クライアント計算機からの問い合わせに対する応答性能及びキャッシュに必要な記憶領域の利用効率を向上させることが可能な情報検索装置、情報検索方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0015】
本発明の1つの態様によれば、ユーザによって利用されるクライアント計算機及び階層構造を有する構造化データを格納するデータベースと接続された情報検索装置が提供される。この情報検索装置は、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されている構造化データが有する階層構造において当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブルと、前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信する問い合わせ受信手段と、前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されている構造化データが有する階層構造における前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する作成手段と、前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されている構造化データが有する階層構造における前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該構造化データから抽出する抽出手段と、前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを格納するキャッシュ格納手段とを具備する。
【発明の効果】
【0016】
本発明は、クライアント計算機からの問い合わせに対する応答性能及びキャッシュに必要な記憶領域の利用効率を向上させることを可能とする。
【図面の簡単な説明】
【0017】
【図1】本発明の実施形態に係る文書検索装置を含む文書検索システムのハードウェア構成を示すブロック図。
【図2】図1に示す文書検索装置50の主として機能構成を示すブロック図。
【図3】図2に示すデータベース60に格納されている構造化文書のデータ構造の一例を示す図。
【図4】図2に示すアクセス権テーブル42のデータ構造の一例を示す図。
【図5】図2に示すキャッシュ43のデータ構造の一例を示す図。
【図6】クライアント計算機20によって問い合わせが送信された場合の文書検索装置50に含まれるDBMS51の処理手順を示すフローチャート。
【図7】キャッシュヒット判定処理の処理手順を示すフローチャート。
【図8】データベース検索処理の処理手順を示すフローチャート。
【図9】クライアント計算機20によって構造化文書の登録要求が送信された場合の文書検索装置50に含まれるDBMS51の処理手順を示すフローチャート。
【図10】キャッシュエントリ無効化処理の処理手順を示すフローチャート。
【図11】データベース登録処理部513によって抽出された構造化文書100の木構造の一例を示す図。
【図12】キャッシュ管理部511によるキャッシュエントリ統合処理の処理手順を示すフローチャート。
【発明を実施するための形態】
【0018】
以下、図面を参照して、本発明の実施形態について説明する。
【0019】
図1は、本実施形態に係る文書検索装置(情報検索装置)を含む文書検索システムのハードウェア構成を示すブロック図である。
【0020】
図1の文書検索システムは、主として、コンピュータ10と、複数のクライアント計算機とから構成される。複数のクライアント計算機は、例えば複数のユーザによって利用される。複数のクライアント計算機は、クライアント計算機20を含む。クライアント計算機20上では、コンピュータ10を利用するクライアントプログラムが動作する。クライアント計算機20を含む複数のクライアント計算機は、例えば通信路30を介してコンピュータ10と接続されている。なお、図1にはクライアント計算機20以外のクライアント計算機は省略されている。
【0021】
コンピュータ10は、ハードディスクドライブ(HDD:Hard Disk Drive)のような外部記憶装置40と接続されている。この外部記憶装置40は、コンピュータ10によって実行されるプログラム41を格納する。コンピュータ10及び外部記憶装置40は、文書検索装置50を構成する。
【0022】
なお、上記したクライアント計算機20上で動作するクライアントプログラムは、例えば文書検索装置50に対して通信路30介して当該クライアント計算機20を利用するユーザによって指定された問い合わせを送信し、当該問い合わせに対する検索結果(応答)を当該文書検索装置50から受信するプログラムである。
【0023】
図2は、図1に示す文書検索装置50の主として機能構成を示すブロック図である。文書検索システム50は、クライアント計算機20(上で動作するクライアントプログラム)によって送信される問い合わせによる検索対象となる文書(データ)が格納されているデータベース60と接続されている。なお、検索対象となる文書は、例えば階層構造を有する構造化文書(構造化データ)である。この構造化文書は、例えばXML(eXtensible Markup Language)で記述される。XMLで記述された構造化文書(XMLデータ)は、タグで囲まれたノードと呼ばれる構造からなり、当該ノード内に更にノードが存在することにより階層構造を有する。
【0024】
文書検索装置50は、データベース管理システム(DBMS:Database Management System)51を含む。このDBMS51は、クライアント計算機20によって送信された問い合わせを受信し、データベース60に対する検索処理の結果を当該クライアント計算機20に返す処理を実行する。
【0025】
DBMS51は、キャッシュ管理部511、データベース検索処理部512及びデータベース登録処理部513を含む。本実施形態において、これらの各部511乃至513(を含むDBMS51)は、図1に示すコンピュータ10が外部記憶装置40に格納されているプログラム41を実行することにより実現されるものとする。このプログラム41は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム41が通信路30を介してコンピュータ10にダウンロードされても構わない。
【0026】
また、DBMS51は、アクセス権テーブル42及びキャッシュ(格納部)43を含む。本実施形態において、アクセス権テーブル42は、例えば外部記憶装置40に格納される。また、キャッシュ43は、例えばコンピュータ10に備えられる主記憶装置(メモリ)内にその領域が確保される。
【0027】
なお、本実施形態に係る文書検索装置50においては、予め設定されているクライアント計算機20を利用するユーザの権限に基づいてデータベース60(に格納されている構造化データ)に対するアクセスが制限(つまり、アクセス権制御)される。
【0028】
具体的には、データベース60に格納されている構造化文書が有する階層構造において、ユーザによって指定された問い合わせ(検索条件)に合致する範囲であっても当該範囲が当該ユーザのアクセス可能な範囲外である場合には、当該範囲(に該当する文字列)は検索結果として当該ユーザが利用するクライアント計算機20には返されない。なお、文書検索装置50におけるアクセス権の制御は、例えば構造化文書が有する階層構造におけるノード(以下、単に構造化文書上のノードと表記)の位置を示すXPath(以下、パスと表記)単位で行われる。
【0029】
アクセス権テーブル42には、クライアント計算機20を利用するユーザに設定されているアクセス権を示すアクセス権情報が管理される。アクセス権テーブル42には、クライアント計算機20を利用するユーザを識別するためのユーザIDに対応付けて、データベース60に格納されている構造化文書上において当該ユーザがアクセス可能なノードの範囲を示すアクセス許可設定情報及び当該ユーザがアクセス不能なノードの範囲を示すアクセス禁止設定情報が予め保持される。なお、アクセス許可設定情報及びアクセス禁止設定情報は、パスによって表される。
【0030】
キャッシュ43には、後述するようにクライアント計算機20によって送信された問い合わせ(文字列)、データベース検索処理部512によって作成されたアクセス許可リスト、アクセス拒否リスト及び当該問い合わせに応じてデータベース60に格納されている構造化文書から抽出された検索結果文字列を対応付けて含むキャッシュエントリが格納される。
【0031】
キャッシュ管理部511は、クライアント計算機20を利用するユーザによって指定された検索対象範囲を示す問い合わせを受信する。この問い合わせには、当該問い合わせを送信したクライアント計算機20を利用するユーザを識別するためのユーザ識別情報(以下、ユーザIDと表記)が含まれる。キャッシュ管理部511によって受信された問い合わせは、後述するように当該問い合わせに含まれるユーザIDによって識別されるユーザに設定されている権限に応じて処理される。なお、問い合わせとしては、例えばXMLデータ用の検索言語であるXQueryが用いられる。
【0032】
キャッシュ管理部511は、受信された問い合わせに基づいてキャッシュヒット判定処理を実行する。キャッシュ管理部511は、受信された問い合わせを含むキャッシュエントリがキャッシュ43に格納(登録)されているか否かを判定する。キャッシュ管理部511は、受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報及びアクセス許可設定情報と、当該問い合わせを含むキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストとに基づいてキャッシュヒットであるか否かを判定する。
【0033】
キャッシュ管理部511は、キャッシュヒット判定処理においてキャッシュヒットであると判定された場合、受信された問い合わせを送信したクライアント計算機(当該問い合わせに含まれるユーザIDによって識別されるユーザによって利用されるクライアント計算機)20に対してキャッシュ43に格納されている検索文字列(キャッシュヒットと判定されたキャッシュエントリの検索文字列)を送信する。
【0034】
キャッシュ管理部511は、クライアント計算機20によって送信された構造化文書の登録要求を受信する。キャッシュ管理部511は、受信された登録要求に付随する構造化文書をデータベース登録処理部513に渡す。
【0035】
データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに応じてデータベース60(に格納されている構造化文書)に対する検索処理(以下、データベース検索処理と表記)を実行する。
【0036】
データベース検索処理部512は、データベース検索処理において、キャッシュ管理部511によって受信された問い合わせに合致するデータベース60に格納されている構造化文書上の各ノードに対するアクセス可否判定処理を実行する。データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報及びアクセス禁止設定情報に基づいてアクセス可否判定処理を実行する。
【0037】
データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報に基づいて、データベース60に格納されている構造化文書上における当該問い合わせ(によって示される検索対象範囲)に合致するノードの範囲であって当該アクセス許可設定情報及び当該アクセス禁止設定情報によって示されるアクセス可能なノードの範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する。
【0038】
また、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報に基づいて、データベース60に格納されている構造化文書上における当該問い合わせに合致するノードの範囲であって当該アクセス許可設定情報及び当該アクセス禁止設定情報によって示されるアクセス不能なノードの範囲を示すアクセス権管理単位を保持するアクセス拒否リストを作成する。
【0039】
データベース検索処理部512は、作成されたアクセス許可リスト及びアクセス拒否リストをキャッシュ管理部511に渡す。
【0040】
なお、データベース検索処理部512によって作成されたアクセス許可リスト及びアクセス拒否リストに含まれるアクセス権管理単位はパスによって表される。
【0041】
データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報に基づいて、データベース60に格納されている構造化文書上における当該問い合わせに合致するノードの範囲であって当該アクセス許可設定情報及び当該アクセス禁止設定情報によって示されるアクセス可能なノードの範囲に該当する文字列を検索結果文字列として当該構造化文書から抽出する。
【0042】
データベース検索処理部512は、抽出された検索結果文字列をキャッシュ管理部511に渡す。
【0043】
上記したようにキャッシュ管理部511に渡されたアクセス許可リスト、アクセス拒否リスト及び検索結果文字列は、当該キャッシュ管理部511によって受信された問い合わせに対応付けてキャッシュ43に登録される。また、キャッシュ管理部511に渡された検索結果文字列は、当該キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDによって識別されるユーザによって利用されるクライアント計算機(つまり、当該問い合わせを送信したクライアント計算機)20に送信される。
【0044】
データベース登録処理部513は、キャッシュ管理部511から渡された構造化文書をデータベース60に登録する。
【0045】
データベース登録処理部513は、キャッシュ管理部511から渡された構造化文書を解析する。データベース登録処理部513は、解析結果を含むキャッシュ無効化要求をキャッシュ管理部511に返す。なお、データベース登録処理部513による解析結果には、データベース60に登録された構造化文書上の各ノードの位置を示すパスの一覧が含まれる。
【0046】
この場合、キャッシュ管理部511においては、データベース登録処理部513から渡された解析結果及びキャッシュ43に格納されているキャッシュエントリに含まれるアクセス許可リストに基づいて、当該キャッシュエントリの無効化処理が実行される。なお、キャッシュエントリの無効化処理の詳細については後述する。
【0047】
図3は、図2に示すデータベース60に格納されている構造化文書のデータ構造の一例を示す。データベース60に格納されている構造化文書は、例えばXMLで記述されている。図3に示すように、構造化文書は、タグで囲まれたノードと呼ばれる構造からなり、当該ノード内に更にノードが存在することにより階層構造を有する。
【0048】
図3に示す例では、構造化文書100が有する階層構造におけるノード(構造化文書100上のノード)には、dbノード、empノード、nameノード、addressノード及びテキストノードが含まれる。
【0049】
なお、構造化文書が有する階層構造において、任意のノードより下位の階層に位置するノードを当該任意のノードに対する子孫ノードと称する。図3に示す構造化文書100においては、empノード、nameノード及びaddressノードは、dbノードに対する子孫ノードである。
【0050】
また、構造化文書が有する階層構造において、任意のノードより上位の階層に位置するノードを当該任意のノードに対する祖先ノードと称する。図3に示す構造化文書100においては、dbノード及びempノードは、nameノード(またはaddressノード)に対する祖先ノードである。
【0051】
図4は、図2に示すアクセス権テーブル42のデータ構造の一例を示す。図4に示すように、アクセス権テーブル42には、クライアント計算機20を利用するユーザを識別するためのユーザIDに対応付けて、データベース60に格納されている構造化文書上において当該ユーザがアクセス可能なノードの範囲を示すアクセス許可設定情報及び当該ユーザがアクセス不能なノードの範囲を示すアクセス禁止設定情報が保持される。アクセス許可設定情報及びアクセス禁止設定情報としては、構造化文書上のノードの位置を示すパスが用いられる。
【0052】
図4に示す例では、アクセス権テーブル42には、ユーザID「db user1」に対応付けて、アクセス許可設定情報「/db/emp/name」及びアクセス禁止設定情報「NIL」が保持されている。
【0053】
ここで、「/db/emp/name」は、構造化文書上におけるdbノードより下位の階層に位置するempノードより更に下位の階層に位置するnameノードを示す(特定する)パスである。この場合、アクセス許可設定情報「/db/emp/name」は、パス「/db/emp/name」によって示されるnameノードと、当該nameノードに対する子孫ノードと、当該nameノードに対する祖先ノードであるdbノード及びempノードとにアクセス可能であることを示す。このように、アクセス許可設定情報「/db/emp/name」は、構造化文書上においてアクセス可能なノードの範囲を示す。
【0054】
一方、アクセス禁止設定情報「NIL」は、空集合、つまり、構造化文書上においてアクセス不能なノードの範囲が設定(指定)されていないことを示す。
【0055】
図4に示す例では、アクセス権テーブル42には、ユーザID「db user2」に対応付けて、アクセス許可設定情報「/db/emp」及びアクセス禁止設定情報「/db/emp/address」が保持されている。
【0056】
ここで、「/db/emp」は、構造化文書上におけるdbノードより下位の階層に位置するempノードを示すパスである。この場合、アクセス許可設定情報「/db/emp」は、パス「/db/emp」によって示されるempノードと、当該empノードに対する子孫ノードと、当該empノードに対する祖先ノードであるdbノードとにアクセス可能であることを示す。
【0057】
一方、「/db/emp/address」は、構造化文書上におけるdbノードより下位の階層に位置するempノードより更に下位の階層に位置するnameノードを示すパスである。この場合、アクセス禁止設定情報「/db/emp/address」は、パス「/db/emp/address」によって示されるaddressノードと、当該addressノードに対する子孫ノードとにアクセス不能であることを示す。このように、アクセス禁止設定情報「/db/emp/address」は、構造化文書上においてアクセス不能なノードの範囲を示す。
【0058】
ここで、アクセス禁止設定情報によって示されるアクセス不能なノードの範囲に含まれるaddressノード(及び当該addressノードに対する子孫ノード)は、empノードに対する子孫ノードである。このため、addressノード(及び当該addressノードに対する子孫ノード)は、アクセス許可設定情報「/db/emp」によって示されるアクセス可能なノードの範囲に含まれる。よって、addressノード及び当該addressノードに対する子孫ノードは、アクセス許可設定情報「/db/emp」によって示されるアクセス可能なノードの範囲及びアクセス禁止設定情報「/db/emp/address」によって示されるアクセス不能なノードの範囲の両方が設定されていることになるが、この場合、アクセス禁止設定情報はアクセス許可設定情報よりも優先されるものとする。
【0059】
つまり、ユーザID「db user2」によって識別されるユーザは、アクセス許可設定情報「/db/emp」及びアクセス禁止設定情報「/db/emp/address」によれば、addressノード及び当該addressノードに対する子孫ノードについてはアクセス不能である。
【0060】
また、図4に示す例では、アクセス権テーブル42には、ユーザID「db user3」に対応付けて、アクセス許可設定情報「/db/emp/address」及びアクセス禁止設定情報「NIL」が保持されている。
【0061】
ここで、「/db/emp/address」は、構造化文書上におけるdbノードより下位の階層に位置するempノードより更に下位の階層に位置するaddressノードを示す(特定する)パスである。この場合、アクセス許可設定情報「/db/emp/address」は、パス「/db/emp/address」によって示されるaddressノードと、当該addressノードに対する子孫ノードと、当該addressノードに対する祖先ノードであるdbノード及びempノードとにアクセス可能であることを示す。
【0062】
一方、アクセス禁止設定情報「NIL」は、上記したように構造化文書上においてアクセス不能なノードの範囲が設定(指定)されていないことを示す。
【0063】
なお、図4に示すアクセス権テーブル42においては、アクセス可能なノードの範囲及びアクセス不能なノードの範囲を明示的に設定可能なようにアクセス許可設定情報及びアクセス禁止設定情報が保持されるものとして説明したが、アクセス権テーブル42に例えばアクセス許可設定情報のみが保持され、当該アクセス許可設定情報によって明示的にアクセスが許可されている範囲以外は全てアクセス禁止という形態でも構わない。同様に、アクセス権テーブル42に例えばアクセス禁止設定情報のみが保持され、当該アクセス許可設定情報によって明示的にアクセスが禁止されている範囲以外は全てアクセス可能という形態でも構わない。つまり、アクセス権テーブル42においては、ユーザに設定されているアクセス権を示すことができるものであれば、上記した図4に示すデータ構造に限定されない。
【0064】
図5は、図2に示すキャッシュ43のデータ構造の一例を示す。キャッシュ43には、キャッシュエントリが格納される。キャッシュエントリには、問い合わせ(文字列)、アクセス許可リスト、アクセス拒否リスト及び検索結果文字列が含まれる。
【0065】
問い合わせは、クライアント計算機20から送信された問い合わせ文字列(例えばXQuery)である。
【0066】
アクセス許可リストは、対応付けられている問い合わせに応じて実行されるデータベース検索処理におけるアクセス可否判定処理(アクセス権監査)においてアクセス可能と判定された構造化文書上のノードの位置を示すパス(アクセス権管理単位)のリストである。
【0067】
アクセス拒否リストは、対応付けられている問い合わせに応じて実行されるデータベース検索処理におけるアクセス可否判定処理(アクセス権監査)においてアクセス不能と判定された構造化文書上のノードの位置を示すパス(アクセス権管理単位)のリストである。
【0068】
検索結果文字列は、当該検索結果文字列に対応付けられている問い合わせに応じて実行されるデータベース検処処理においてデータベース60に格納されている構造化文書から検索結果として抽出された文字列である。
【0069】
図5に示す例では、キャッシュ43には、キャッシュエントリ431及び432が格納されている。
【0070】
キャッシュエントリ431に含まれる問い合わせは、問い合わせ「/db/emp」である。キャッシュエントリ431に含まれるアクセス許可リストには、アクセス権管理単位としてパス「/db/emp」、「/db/emp/name」及び「/db/emp/name/text()」が保持されている。このアクセス許可リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス可能と判定された構造化文書上のノードが、パス「/db/emp」によって示されるempノード、パス「/db/emp/name」によって示されるnameノード及びパス「/db/emp/name/text()」によって示されるテキストノードであることが示される。
【0071】
キャッシュエントリ431に含まれるアクセス拒否リストには、アクセス権管理単位としてパス「/db/emp/address」が保持されている。このアクセス拒否リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス不能と判定された構造化文書上のノードが、パス「/db/emp/address」によって示されるaddressノードであることが示される。
【0072】
また、キャッシュエントリ431に含まれる検索結果文字列は、検索結果文字列「<emp><name>name1</name></emp>」及び「<emp><name>name2</name></emp>」である。この検索結果文字列は、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理においてデータベース60に格納されている構造化文書から検索結果として抽出された文字列である。
【0073】
また、キャッシュエントリ432に含まれる問い合わせは、問い合わせ「/db/emp」である。キャッシュエントリ432に含まれるアクセス許可リストには、アクセス権管理単位としてパス「/db/emp」、「/db/emp/address」及び「/db/emp/address/text()」が保持されている。このアクセス許可リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス可能と判定された構造化文書上のノードが、パス「/db/emp」によって示されるempノード、パス「/db/emp/address」によって示されるadressノード及びパス「/db/emp/address/text()」によって示されるテキストノードであることが示される。
【0074】
キャッシュエントリ432に含まれるアクセス拒否リストには、アクセス権管理単位としてパス「/db/emp/name」が保持されている。このアクセス拒否リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス不能と判定された構造化文書上のノードが、パス「/db/emp/name」によって示されるnameノードであることが示される。
【0075】
また、キャッシュエントリ432に含まれる検索結果文字列は、検索結果文字列「<emp><address>address1</address></emp>」及び「<emp><address>address2 </address></emp>」である。この検索結果文字列は、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理においてデータベース60に格納されている構造化文書から検索結果として抽出された文字列である。
【0076】
上記したように、キャッシュエントリに含まれる問い合わせが同一である場合であっても、当該問い合わせを送信したクライアント端末20を利用するユーザに設定されている権限(アクセス許可設定情報及びアクセス禁止設定情報)によっては、当該問い合わせに応じて実行されるデータベース検索処理において作成されるアクセス許可リスト、アクセス拒否リスト及び構造化文書から抽出される検索結果文字列は異なる。
【0077】
次に、図6のフローチャートを参照して、クライアント計算機20によって問い合わせが送信された場合の文書検索装置50に含まれるDBMS51の処理手順について説明する。
【0078】
まず、DBMS51に含まれるキャッシュ管理部511は、クライアント計算機20によって送信された問い合わせを受信する(ステップS1)。問い合わせは、当該問い合わせを送信したクライアント端末20を利用するユーザによって指定された検索対象範囲を示す。問い合わせには、当該問い合わせを送信したクライアント計算機20を利用するユーザを識別するためのユーザIDが含まれる。なお、問い合わせとしては、例えばXMLデータ用の検索言語であるXQueryが用いられる。
【0079】
次に、キャッシュ管理部511は、受信された問い合わせに基づいて、キャッシュ43に格納されているキャッシュエントリに対するキャッシュヒット判定処理を実行する(ステップS2)。キャッシュヒットの判定処理は、受信された問い合わせに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報及びアクセス禁止設定情報と、当該問い合わせに対応付けてキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに基づいて実行される。キャッシュヒット判定処理の詳細については後述する。
【0080】
キャッシュヒット判定処理においてキャッシュヒットでない(つまり、キャッシュミスヒット)と判定された場合(ステップS3のNO)、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに応じて、データベース60に格納されている構造化文書100に対するデータベース検索処理を実行する(ステップS4)。データベース検索処理部512は、アクセス権テーブル42を参照してデータベース検索処理を実行する。
【0081】
このデータベース検索処理においては、キャッシュ管理部511によって受信された問い合わせ(によって示される検索範囲)に合致する検索結果文字列がデータベース60に格納されている構造化文書から抽出される。また、データベース検索処理においては、検索結果文字列の抽出と同時に、アクセス許可リスト及びアクセス拒否リストが作成される。なお、データベース検索処理の詳細については後述する。
【0082】
データベース検索処理部512は、作成されたアクセス許可リスト、アクセス拒否リスト及びデータベース60に格納されている構造化文書から抽出された検索結果文字列をキャッシュ管理部511に渡す。
【0083】
キャッシュ管理部511は、受信された問い合わせに対応付けて、データベース検索処理部512から渡されたアクセス許可リスト、アクセス拒否リスト及び検索結果文字列を対応付けて含むキャッシュエントリをキャッシュ43に登録する(キャッシュする)処理(キャッシュ登録処理)を実行する(ステップS5)。
【0084】
キャッシュ管理部511は、受信された問い合わせに対する応答として、データベース検索処理部512から渡された検索結果文字列を当該問い合わせに含まれるユーザIDによって識別されるユーザによって利用されるクライアント計算機(当該問い合わせを送信したクライアント計算機)20に対して送信する(ステップS6)。
【0085】
一方、ステップS3においてキャッシュヒットであると判定された場合、キャッシュ管理部511は、受信された問い合わせに対応付けてキャッシュエントリ(キャッシュヒットであると判定されたキャッシュエントリ)に含まれる検索結果文字列をキャッシュ43から取得する(ステップS7)。ステップS7の処理が実行されると、ステップS6の処理が実行される。つまり、ステップS7において取得された検索結果文字列が、キャッシュ管理部511によって受信された問い合わせに対する応答として当該問い合わせに含まれるユーザIDによって識別されるユーザによって利用されるクライアント計算機20に対して送信される。
【0086】
次に、図7に示すフローチャートを参照して、前述したキャッシュヒット判定処理(図6に示すステップS2の処理)の処理手順について説明する。なお、キャッシュヒット判定処理は、キャッシュ43に格納されているキャッシュエントリ毎に実行される。以下、キャッシュヒット判定処理の対象となるキャッシュエントリを対象キャッシュエントリと称する。
【0087】
まず、キャッシュ管理部511は、受信された問い合わせ(文字列)及び対象キャッシュエントリに含まれる問い合わせ(文字列)が一致するか否かを判定する(ステップS11)。
【0088】
問い合わせが一致すると判定された場合(ステップS11のYES)、キャッシュ管理部511は、受信された問い合わせに含まれるユーザIDによって識別されるユーザが対象キャッシュエントリに含まれるアクセス許可リストに保持されるパス(アクセス権管理単位)によって示されるノード(の範囲)の全てにアクセス可能(アクセス許可リストの全てにアクセス可能)であるか否かを判定する(ステップS12)。キャッシュ管理部511は、受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報及びアクセス禁止設定情報に基づいて判定処理を実行する。
【0089】
この場合、受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報によって示されるアクセス可能なノードの範囲に、対象キャッシュエントリに含まれるアクセス許可リストに保持されるパスによって示されるノード(の範囲)が全て含まれる場合には、アクセス許可リストの全てにアクセス可能であると判定される。
【0090】
アクセス許可リストの全てにアクセス可能であると判定された場合(ステップS13のYES)、キャッシュ管理部511は、受信された問い合わせに含まれるユーザIDによって識別されるユーザが対象キャッシュエントリに含まれるアクセス拒否リストに保持されるパス(アクセス権管理単位)によって示されるノード(の範囲)の全てにアクセス不能(アクセス拒否リストの全てにアクセス不能)であるか否かを判定する(ステップS13)。キャッシュ管理部511は、受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報に基づいて判定処理を実行する。
【0091】
この場合、受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報によって示されるアクセス不能なノードの範囲に、対象キャッシュエントリに含まれるアクセス拒否リストに保持されるパスによって示されるノード(の範囲)が全て含まれる場合には、アクセス拒否リストの全てにアクセス不能であると判定される。
【0092】
アクセス拒否リストの全てにアクセス不能であると判定された場合(ステップS13のYES)、キャッシュ管理部511は、対象キャッシュエントリに対するキャッシュヒット判定処理結果をキャッシュヒット判定とする(ステップS14)。
【0093】
一方、ステップS11において問い合わせが一致しないと判定された場合(ステップS11のNO)、キャッシュ管理部511は、対象キャッシュエントリに対するキャッシュヒット判定処理結果をキャッシュミスヒット判定とする(ステップS15)。
【0094】
同様に、ステップS12においてアクセス許可リストの全てにアクセス可能でないと判定された場合、または、ステップS13においてアクセス拒否リストの全てにアクセス不能でないと判定された場合、キャッシュ管理部511は、対象キャッシュエントリに対するキャッシュヒット判定処理結果をキャッシュミスヒット判定とする(ステップS15)。
【0095】
キャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リスト(に保持されるパス)の和集合は、当該キャッシュエントリに含まれる問い合わせに応じて実行されるデータベース検索処理に関わるパスの集合である。このため、上記したステップS12及びステップS13の処理においては、対象キャッシュエントリに含まれる問い合わせに応じて実行されるデータベース検索処理に関わるパスに基づいて、当該対象キャッシュエントリが登録された際のユーザのアクセス権と現在処理中の問い合わせを指定したユーザのアクセス権が同等であるか否かが判定されている。
【0096】
次に、図8のフローチャートを参照して、前述したデータベース検索処理(図6に示すステップS4の処理)の処理手順について説明する。
【0097】
データベース検索処理においては、キャッシュ管理部511によって受信された問い合わせに合致する構造化文書上の各ノードに対するアクセス可否判定処理が実行される。アクセス可否判定処理は、キャッシュ管理部511によって受信された問い合わせに合致する構造化文書上の各ノードの各々に対して、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDによって識別されるユーザがアクセス可能であるかまたはアクセス不能であるか(つまり、アクセス可否)を判定する処理である。
【0098】
このアクセス可否判定処理においては、データベース60に格納されている構造化文書を参照して、キャッシュ管理部511によって受信された問い合わせ(パス)によって示される当該構造化文書上のノード以下(つまり、検索対象範囲)の階層構造を辿ることにより当該アクセス可否判定処理の対象となるノードが抽出(特定)される。以下、アクセス可否判定処理の対象となるノードを対象ノードと称する。
【0099】
まず、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報によって示されるアクセス不能なノードの範囲(以下、禁止範囲と表記)に対象ノードが含まれるか否かを判定する(ステップS21)。
【0100】
禁止範囲に対象ノードが含まれないと判定された場合(ステップS21のNO)、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報によって示されるアクセス可能なノードの範囲(以下、許可範囲と表記)に対象ノードが含まれるか否かを判定する(ステップS22)。
【0101】
許可範囲に対象ノードが含まれると判定された場合(ステップS22のYES)、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDによって識別されるユーザが対象ノードにアクセス可能である(つまり、アクセス可)と判定する(ステップS23)。
【0102】
データベース検索処理部512は、アクセス可と判定された場合、対象ノードを示すパスをアクセス権管理単位としてアクセス許可リストに追加する(ステップS24)。なお、アクセス許可リストに既に対象ノードを示すパスが保持されている場合には、当該パスは追加されない。
【0103】
一方、禁止範囲に対象ノードが含まれると判定された場合(ステップS21のYES)または許可範囲に対象ノードが含まれないと判定された場合(ステップS22のNO)、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDによって識別されるユーザが対象ノードにアクセス不能である(つまり、アクセス不可)と判定する(ステップS25)。
【0104】
データベース検索処理部512は、アクセス不可と判定された場合、対象ノードを示すパスをアクセス権管理単位としてアクセス拒否リストに追加する(ステップS26)。なお、アクセス拒否リストに既に対象ノードを示すパスが保持されている場合には、当該パスは追加されない。
【0105】
ステップS24またはステップS26の処理が実行されると、データベース検索処理部512は、上記したステップS21以降の処理がキャッシュ管理部511によって受信された問い合わせによって示される検索対象範囲内の全てのノード(問い合わせによって示される構造化文書上のノード以下の全てのノード)について実行されたか否かを判定する(ステップS27)。
【0106】
全てのノードについて実行されていないと判定された場合(ステップS27のNO)、ステップS21に戻って処理が繰り返される。この場合、ステップS21の処理が実行されていないノードを対象ノードとして当該処理が実行される。
【0107】
このように、キャッシュ管理部511によって受信された問い合わせによって示される構造化文書上のノード以下の全てのノードについて上記したステップS21以降の処理(アクセス可否判定処理)が実行されることにより、アクセス許可リスト及びアクセス拒否リストが作成される。
【0108】
ステップS27において全てのノードについて実行されたと判定された場合、データベース検索処理部512は、上記したキャッシュ管理部511によって受信された問い合わせによって示される検索対象範囲内の全てのノードに対するアクセス可否判定処理結果に基づいて構造化文書(データベース60に格納されている構造化文書)から検索結果文字列を抽出する(ステップS28)。データベース検索処理部512は、データベース60に格納されている構造化文書が有する階層構造における問い合わせ(によって示される検索対象範囲)に合致するノードの範囲であって当該問い合わせに含まれるユーザIDによって識別されるユーザがアクセス可能なノードの範囲(許可範囲)に該当する文字列を検索結果文字列として抽出する。
【0109】
上記したようにデータベース検索処理部512によって作成されたアクセス許可リスト、アクセス拒否リスト及び当該データベース検索処理部512によって抽出された検索結果文字列は、キャッシュ管理部511を介してキャッシュ43に登録される。
【0110】
以下、上述した図3及び図4を用いて、クライアント計算機20によって問い合わせが送信された場合のDBMS51の動作について具体的に説明する。ここでは、データベース60に格納される構造化文書は、図3に示す構造化文書100であるものとする。また、DBMS51に含まれるアクセス権テーブル42は、図4に示すデータ構造を有するものとする。なお、キャッシュ43には、キャッシュエントリは格納(登録)されていないものとする。
【0111】
まず、キャッシュ管理部511は、クライアント計算機20によって送信された問い合わせを受信する。
【0112】
ここでは、問い合わせ「/db/emp」が受信されたものとする。この問い合わせ「/db/emp」は、データベース60に格納されている構造化文書100が有する階層構造においてdbノードより下位の階層に位置するempノード及び当該empノードに対する子孫のノード(に該当する文字列)を取得する旨を指示する問い合わせである。換言すれば、問い合わせ「/db/emp」によって示される検索対象範囲には、dbノードより下位の階層に位置するempノード及び当該empノードに対する子孫のノードが含まれる。
【0113】
また、問い合わせ「/db/emp」には、当該問い合わせを送信したクライアント端末20を利用するユーザを識別するためのユーザIDとしてユーザID「db user1」が含まれているものとする。なお、ユーザID「db user1」によって識別されるユーザを第1のユーザと称する。
【0114】
次に、キャッシュ管理部511は、受信された問い合わせ「/db/emp」に基づいてキャッシュヒット判定処理を実行する。上記したようにキャッシュ43にはキャッシュエントリは格納されていないため、ここでは、キャッシュミスヒットと判定される。
【0115】
この場合、キャッシュ管理部511は、データベース検索処理部512に対して検索処理要求を行う。この際、キャッシュ管理部511は、受信された問い合わせ「/db/emp」をデータベース検索処理部512に渡す。
【0116】
データベース検索処理部512は、キャッシュ管理部511からの検索処理要求に応じてデータベース検索処理を実行する。
【0117】
データベース検索処理においては、問い合わせ「/db/emp」、当該問い合わせ「/db/emp」に含まれるユーザID「db user1」に対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報及びアクセス拒否設定情報に基づいて、データベース60に格納されている構造化文書100上の各ノードに対するアクセス可否判定処理が実行される。
【0118】
アクセス可否判定処理においては、キャッシュ部511によって受信された問い合わせ「/db/emp」によって示される構造化文書100上のempノード以下(検索対象範囲)の階層構造を辿ることにより当該アクセス可否判定処理の対象となるノードが抽出(特定)される。つまり、アクセス可否判定処理は、問い合わせ「/db/emp」によって示されるempノードを始点として構造化文書100の階層構造において深さ優先で各ノードに対して実行される。
【0119】
ここで、図4に示すアクセス権テーブル42によれば、問い合わせ「/db/emp」に含まれるユーザID「db user1」に対応付けて当該アクセス権テーブル42に保持されているアクセス許可設定情報は、アクセス許可設定情報「/db/emp/name」である。また、図4に示すアクセス権テーブル42によれば、問い合わせ「/db/emp」に含まれるユーザID「db user1」に対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報は、アクセス禁止設定情報「NIL」である。
【0120】
まず、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせ「/db/emp」によって示される構造化文書100上のempノードを対象ノードとしてアクセス可否判定処理を実行する。
【0121】
データベース検索処理部512は、問い合わせ「/db/emp」に含まれるユーザID「db user1」に対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報によって示される禁止範囲に対象ノード(empノード)が含まれるか否かを判定する。
【0122】
ここで、ユーザID「db user1」に対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報「NIL」は、禁止範囲が設定されていないことを示す。
【0123】
したがって、データベース検索処理部512は、アクセス禁止設定情報「NIL」によって示される禁止範囲には対象ノードであるempノードが含まれないと判定する。
【0124】
次に、データベース検索処理部512は、問い合わせ「/db/emp」に含まれるユーザID「db user1」に対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報「/db/emp/name」によって示される許可範囲に対象ノードが含まれているかを判定する。
【0125】
ここで、アクセス許可設定情報「/db/emp/name」によって示される許可範囲には、パス「/db/emp/name」によって示されるnameノード、当該nameノードに対する子孫ノード、当該nameノードに対する祖先ノード(dbノード及びempノード)が含まれる。
【0126】
したがって、データベース検索処理部512は、アクセス許可設定情報「/db/emp/name」によって示される許可範囲には対象ノードであるempノードが含まれると判定する。
【0127】
この場合、データベース検索処理部512は、対象ノードであるempノードを示すパス「/db/emp」がアクセス許可リストに保持されていなければ、当該パス「/db/emp」をアクセス権管理単位としてアクセス許可リストに追加する。
【0128】
このように、問い合わせ「/db/emp」によって示されるempノードを対象ノードとしてアクセス可否判定処理が実行されると、構造化文書100上の当該empノードに対する子ノード(当該empノードの下位の階層に位置するノード)を対象ノードとしてアクセス可否判定処理が実行される。この場合、問い合わせ「/db/emp」によって示されるempノードに対する子ノードは、nameノード及びaddressノードであるので、これらを対象ノードとしてアクセス可否判定処理が実行される。
【0129】
ここで、構造化文書100上のnameノードを対象ノードとしてアクセス可否判定処理が実行された場合を想定する。この場合、構造化文書100上のnameノード(対象ノード)は、アクセス許可設定情報「/db/emp/name」によって示される許可範囲に含まれる。したがって、構造化文書100上のnameノードを示すパス「/db/emp/name」がアクセス許可リストに保持されていなければ、当該パス「/db/emp/name」がアクセス権管理単位としてアクセス許可リストに追加される。
【0130】
次に、構造化文書100上のnameノードに対する子ノードを対象ノードとしてアクセス可否判定処理が実行される。この場合、構造化文書100上のnameノードに対する子ノードはテキストノードである。構造化文書100上のテキストノード(nameノードに対する子ノード)は、アクセス許可設定情報「/db/emp/name」によって示される許可範囲に含まれる。したがって、構造化文書100上のテキストノードを示すパス「/db/emp/name/text()」がアクセス許可リストに保持されていなければ、当該パス「/db/emp/name/text()」がアクセス権管理単位としてアクセス許可リストに追加される。
【0131】
ここで、構造化文書100上のnameノードに対する子ノードであるテキストノードは当該構造化文書100が有する階層構造において子孫ノードを有さないため、当該テキストノードの上位のnameノードに処理が戻される。また、nameノードは、構造化文書100が有する階層構造においてテキストノード以外の子孫ノードを有さないため、更に上位のempノードに処理が戻される。empノードは、構造化文書100が有する階層構造において、アクセス可否判定処理が実行されたnameノード以外にaddressノードを有するため、当該addressノードを対象ノードとしてアクセス可否判定処理が実行される。
【0132】
この場合、構造化文書100上のaddressノードは、アクセス許可設定情報「/db/emp/name」によって示される許可範囲に含まれない。したがって、構造化文書100上のaddressノードを示すパス「/db/emp/address」がアクセス拒否リストに保持されていなければ、当該パス「/db/emp/address」がアクセス権管理単位としてアクセス拒否リストに追加される。
【0133】
なお、構造化文書100上のaddressノードへのアクセスは不能であるため、当該addressノードより下位の階層に位置するノードについてはアクセス可否判定処理は実行されない。
【0134】
上記したように構造化文書100上のaddressノードを対象ノードとしてアクセス可否判定処理が実行されると、当該addressノードの上位のempノードに処理が戻される。この場合、構造化文書100上のempノード以下の全てのノードに対してアクセス可否判定処理が実行されたため、アクセス可否判定処理は終了される。このように、構造化文書100上のempノード(問い合わせ「/db/emp」によって示されるempノード)以下の全てのノードに対してアクセス可否判定処理が実行されることで、アクセス許可リスト及びアクセス拒否リストが作成される。
【0135】
上記したように作成されたアクセス許可リストには、パス「/db/emp」、「/db/emp/name」及び「/db/emp/name/text()」がアクセス権管理単位として保持される。また、アクセス拒否リストには、パス「/db/emp/address」がアクセス権管理単位として保持される。
【0136】
なお、構造化文書100上に問い合わせ「/db/emp」によって示されるempノードが複数存在する場合には、それらの全てのついて同様の処理が繰り返される。
【0137】
ここで、データベース検索処理部512は、以上のアクセス可否判定処理結果に基づいて構造化文書100から検索結果文字列を抽出する。この場合、データベース検索処理部512は、アクセス可否判定処理においてアクセス可能と判定された構造化文書100上のノード、すなわちempノード、nameノード及びnameノード直下のテキストノードに該当する文字列(empノード、nameノード及びnameノード直下のテキストノードの内容)が検索結果文字列として抽出される。これにより、データベース検索処理部512によるデータベース検索処理は終了される。
【0138】
この場合、データベース検索処理部512によって抽出された検索結果文字列は、「<emp><name>name1</name></emp>」及び「<emp><name>name2</name></emp>」である。
【0139】
上記したように、データベース検索処理が終了されると、データベース検索処理部512は、作成されたアクセス許可リスト、アクセス拒否リスト及び構造化文書100から抽出された検索結果文字列をキャッシュ管理部511に渡す。
【0140】
キャッシュ管理部511は、問い合わせ「/db/emp」に対応付けて、データベース検索処理部511から渡されたアクセス許可リスト、アクセス拒否リスト及び検索結果文字列を含むキャッシュエントリをキャッシュ43に登録する。ここでは、上述した図5に示すキャッシュエントリ431がキャッシュ43に登録される。
【0141】
また、キャッシュ管理部511は、データベース検索処理部511から渡された検索結果文字列を、問い合わせ「/db/emp」に対する応答としてクライアント計算機20に送信する。この場合、キャッシュ管理部511は、問い合わせ「/db/emp」に含まれるユーザID「db user1」によって識別される第1のユーザによって利用されるクライアント計算機(問い合わせ「/db/emp」を送信したクライアント計算機)20に対して検索結果文字列を送信する。
【0142】
このように、問い合わせ「/db/emp」に対する応答がクライアント計算機20に返されると、DBMS51の処理は終了される。
【0143】
なお、上記したキャッシュ43に対するキャッシュエントリ431の登録に際して、例えばアクセス許可リスト及びアクセス拒否リストに複数のパス(アクセス権管理単位)が保持されている場合に当該アクセス許可リスト及びアクセス拒否リストから冗長な情報を必要に応じて除去する処理(以下、冗長情報除去処理と表記)が実行されても構わない。アクセス権テーブル42に保持されている例えばアクセス許可設定情報「/de/emp/name」によれば、パス「/db/emp/name」によって示されるnameノード、当該nameノードに対する子孫ノード、当該nameノードに対する祖先ノードであるdbノード及びempノードへのアクセスが可能である旨が示される。つまり、アクセス許可設定情報と同様に、例えばアクセス許可リストに保持されているパス「/db/emp/name」によって示されるnameノードへのアクセスが許可されたという情報は、パス「/db/emp」によって示されるempノードへのアクセスが許可されたという情報を含むことができる。したがって、冗長情報除去処理によれば、例えばアクセス許可リストに保持される複数のパスのうち、第1のパス(第1アクセス権管理単位)によって示される範囲が第2のパス(第2のアクセス権管理単位)によって示される範囲に含まれる場合、当該第1のパスが当該アクセス許可リストから除去される。具体的には、アクセス許可リストにパス「/db/emp」及びパス「/db/emp/name」が保持されている場合には、当該アクセス許可リストからパス「/db/emp」(冗長な情報)を除去(削除)することができる。なお、アクセス拒否リストについても同様に冗長な情報を除去することができる。
【0144】
例えば図5に示すキャッシュエントリ431に含まれるアクセス許可リストに対して冗長情報除去処理が実行されると、当該アクセス許可リストに保持されるパス(アクセス権管理単位)は、パス「/db/emp/name/text()」のみとなる。
【0145】
このようにアクセス許可リスト及びアクセス拒否リストに対して冗長情報除去処理が実行されることにより、当該アクセス許可リスト及びアクセス拒否リストに保持されるパスが削減されるため、キャッシュヒット判定処理における処理量を軽減することが可能となる。
【0146】
ここで、上記したようにキャッシュ43にキャッシュエントリ431が登録された後に、例えばユーザID「db user2」によって識別されるユーザによって利用されるクライアント計算機20から問い合わせ「/db/emp」が送信された場合を想定する。この場合、問い合わせ「/db/emp」には、ユーザID「db user2」が含まれる。なお、ユーザID「db user2」によって識別されるユーザを第2のユーザと称する。
【0147】
キャッシュ管理部511は、クライアント計算機20よって送信された問い合わせ「/db/emp」を受信する。
【0148】
キャッシュ管理部511は、受信された問い合わせ「/db/emp」及びキャッシュ43に格納されているキャッシュエントリ431に基づいてキャッシュヒット判定処理を実行する。ここでは、キャッシュエントリ431について説明するが、キャッシュ43に複数のキャッシュエントリが格納されている場合には、当該キャッシュエントリの各々についてキャッシュヒット判定処理が実行される。
【0149】
まず、キャッシュ管理部511は、受信された問い合わせ(文字列)「/db/emp」及びキャッシュエントリ431に含まれる問い合わせ(文字列)が一致するか否かを判定する。図5に示すように、キャッシュエントリ431に含まれる問い合わせは、問い合わせ「/db/emp」である。したがって、キャッシュ管理部511は、問い合わせ「/db/emp」が一致すると判定する。
【0150】
次に、キャッシュ管理部511は、受信された問い合わせ「/db/emp」に含まれるユーザID「db user2」によって識別される第2のユーザがキャッシュエントリ431に含まれるアクセス許可リストに保持されるパス(アクセス権管理単位)によって示されるノード(の範囲)の全てにアクセス可能(アクセス許可リストの全てにアクセス可能)であるか否かを判定する。キャッシュ管理部511は、問い合わせ「/db/emp」に含まれるユーザID「db user2」に対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報に基づいて判定処理を実行する。
【0151】
ここで、ユーザID「db user2」に対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報は、アクセス許可設定情報「/db/emp」である。このアクセス許可設定情報「/db/emp」によれば、第2のユーザがアクセス可能な構造化文書100上のノードは、パス「/db/emp」によって示されるempノード、当該empノードに対する子孫ノード及び当該empノードに対する祖先ノード(dbノード)である。
【0152】
また、キャッシュエントリ431に含まれるアクセス許可リストに保持されるパス(アクセス権管理単位)によって示される構造化文書100上のノードは、パス「/db/emp」によって示されるempノード、パス「/db/emp/name」によって示されるnameノード及びパス「/db/emp/name/text()」によって示されるテキストノードである。
【0153】
この場合、キャッシュエントリ431に含まれるアクセス許可リストに保持されているパスによって示されるノードの全てが、アクセス許可設定情報「/db/emp」によって示されるアクセス可能なノード(第2のユーザがアクセス可能なノード)の範囲に含まれている。したがって、キャッシュ管理部511は、キャッシュエントリ431に含まれるアクセス許可リストの全てにアクセス可能であると判定する。
【0154】
次に、キャッシュ管理部511は、受信された問い合わせ「/db/emp」に含まれるユーザID「db user2」によって識別される第2のユーザがキャッシュエントリ431に含まれるアクセス拒否リストに保持されるパス(アクセス権管理単位)によって示されるノード(の範囲)の全てにアクセス不能(アクセス拒否リストの全てにアクセス可能)であるか否かを判定する。キャッシュ管理部511は、問い合わせ「/db/emp」に含まれるユーザID「db user2」に対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報に基づいて判定処理を実行する。
【0155】
ここで、ユーザID「db user2」に対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報は、アクセス禁止設定情報「/db/emp/address」である。このアクセス禁止設定情報「/db/emp/address」によれば、第2のユーザがアクセス可能な構造化文書100上のノードは、パス「/db/emp/address」によって示されるaddressノード及び当該addressノードに対する子孫ノードである。
【0156】
また、キャッシュエントリ431に含まれるアクセス拒否リストに保持されるパス(アクセス権管理単位)によって示される構造化文書100上のノードは、パス「/db/emp/address」によって示されるaddressノードである。
【0157】
この場合、キャッシュエントリ431に含まれるアクセス拒否リストに保持されているパスによって示されるノードの全てが、アクセス禁止設定情報「/db/emp/address」によって示されるアクセス不能なノード(第2のユーザがアクセス不能なノード)の範囲に含まれている。したがって、キャッシュ管理部511は、キャッシュエントリ431に含まれるアクセス拒否リストの全てにアクセス不能であると判定する。
【0158】
上記したようにキャッシュエントリ431に含まれるアクセス許可リストの全てにアクセス可能であると判定され、かつ、当該キャッシュエントリ431に含まれるアクセス拒否リストの全てにアクセス不能であると判定された場合、キャッシュ管理部511はキャッシュヒット、つまり、第2のユーザがキャッシュエントリ431を利用可能であると判定する。
【0159】
この場合、キャッシュ管理部511は、キャッシュエントリ431に含まれる検索結果文字列「<emp><name>name1</name></emp>」及び「<emp><name>name2</name> </emp>」を、問い合わせ「/db/emp」に対する応答として、ユーザID「db user2」によって識別される第2のユーザによって利用されるクライアント計算機20に対して送信する。
【0160】
このように、問い合わせ「/db/emp」に対する応答がクライアント計算機20に返されると、DBMS51の処理は終了される。
【0161】
上記したように、ユーザID「db user1」によって識別される第1のユーザのアクセス権(アクセス許可設定情報及びアクセス禁止設定情報)に基づいて登録されたキャッシュエントリ(ここでは、キャッシュエントリ431)であっても、ユーザID「db user2」によって識別される第2のユーザによって同一の問い合わせ(ここでは、問い合わせ「/db/emp」)が送信された場合にはキャッシュヒット判定がされる。したがって、第1のユーザとはアクセス権が異なる第2のユーザであっても、キャッシュエントリ431を利用することができる。つまり、異なるユーザであっても同一の問い合わせが送信された場合には、同一のキャッシュエントリ431を利用することができる。
【0162】
なお、詳細な説明は省略するが、例えばユーザID「db user3」によって識別されるユーザ(以下、第3のユーザと表記)によって利用されるクライアント端末20によって問い合わせ「/db/emp」が送信された場合には、図5に示すキャッシュエントリ432がキャッシュ43に登録される。この後に、ユーザID「db user2」によって識別される第2のユーザによって利用されるクライアント端末20によって問い合わせ「/db/emp」が送信された場合には、キャッシュヒット判定処理においてはキャッシュエントリ432に対してキャッシュミスヒットが判定される。
【0163】
このように、異なるユーザが同一の問い合わせを送信した場合であっても、当該ユーザに設定されているアクセス権(アクセス許可設定情報及びアクセス拒否設定情報)によってはキャッシュエントリの利用を拒否することができる。
【0164】
次に、図9のフローチャートを参照して、クライアント計算機20によって構造化文書の登録要求が送信された場合の文書検索装置50に含まれるDBMS51の処理手順について説明する。
【0165】
まず、DBMS51に含まれるキャッシュ管理部511は、クライアント計算機20によって送信された構造化文書の登録要求を受信する。これにより、キャッシュ管理部511は、受信された登録要求に付随する構造化文書(データベース60への登録の対象となる構造化文書)を受信する(ステップS31)。キャッシュ管理部511は、受信された構造化文書をデータベース登録処理部513に渡す。
【0166】
次に、データベース登録処理部513は、キャッシュ管理部511から渡された構造化文書をデータベース60に登録する(ステップS32)。
【0167】
ステップS32において構造化文書がデータベース60に登録されると、当該構造化文書に基づいてキャッシュ43に格納(登録)されているキャッシュエントリを無効化する処理(以下、キャッシュエントリ無効化処理と表記)が実行される(ステップS33)。
【0168】
図10のフローチャートを参照して、キャッシュエントリ無効化処理(図9に示すステップ33の処理)の処理手順について説明する。ここでは、図9に示すステップS32においてデータベース60に登録された構造化文書は、図3に示す構造化文書100であるものとして説明する。
【0169】
まず、データベース登録処理部513は、データベース60に登録された構造化文書100を解析する(ステップS41)。これにより、データベース登録処理部513は、構造化文書100のデータ構造(階層構造)を表す木構造(構造化文書100の木構造)を抽出する。
【0170】
データベース登録処理部513は、抽出された構造化文書100の木構造における祖先ノードを記憶しながら例えば深さ優先探索によってトラバースすることにより、構造化文書100上の各ノードを示すパス(構造化文書100に含まれるパス)の一覧を、当該木構造から抽出する(ステップS42)。
【0171】
ここで、図11は、データベース登録処理部513によって抽出された構造化文書100の木構造の一例を示す。図11に示す木構造200によれば、構造化文書100上のノードは、dbノード、empノード、nameノード、当該nameノードに対する子ノードであるテキストノード、addressノード及び当該addressノードに対する子ノードであるテキストノードである。したがって、この木構造200から抽出されるパスの一覧には、「/db」、「/db/emp」、「/db/emp/name」、「/db/emp/name/text()」、「/db/emp/address」及び「/db/emp/address/text()」が含まれる。なお、図11に示す木構造200において、「/db/emp」、「/db/emp/name」、「/db/emp/name/text()」、「/db/emp/address」及び「/db/emp/address/text()」のように同一のパスが複数抽出される場合には、当該同一のパスは1つのパスとして扱われる。
【0172】
デーベース登録処理部513は、抽出されたパスの一覧を含むキャッシュエントリ無効化要求をキャッシュ管理部511に送る。
【0173】
キャッシュ管理部511は、データベース登録処理部513からのキャッシュエントリ無効化要求を受け取ると、当該キャッシュエントリ無効化要求に含まれるパスの一覧とキャッシュ43に格納されているキャッシュエントリ(に含まれるアクセス許可リスト)の1つとを照合する(ステップS43)。
【0174】
キャッシュ管理部511は、キャッシュエントリ無効化要求に含まれるパスの一覧に含まれるパスの少なくとも1つがキャッシュエントリに含まれるアクセス許可リストに保持されているか否かを判定する(ステップS44)。この処理により、キャッシュ管理部511は、キャッシュエントリに含まれるアクセス許可リストに保持されているパス(アクセス権管理単位)によって示されるノード(の範囲)の一部がデータベース60に登録された構造化文書100(が有する階層構造)に含まれるか否かを判定する。
【0175】
パスの一覧に含まれるパスの少なくとも1つがキャッシュエントリに含まれるアクセス許可リストに保持されていると判定された場合(ステップS44のYES)、キャッシュ管理部511は、キャッシュ43に格納されている当該キャッシュエントリを無効化(つまり、キャッシュ43から削除)する(ステップS45)。
【0176】
ここで、例えば上述した図5に示すキャッシュエントリ431及び432がキャッシュ43に格納されている場合を想定する。
【0177】
この場合、キャッシュエントリ431に含まれるアクセス許可リストには、パスの一覧に含まれるパス「/db/emp」、「/db/emp/name」、「/db/emp/name/text()」が保持されている。このため、上記したように構造化文書100がデータベース60に新たに登録されたときは、キャッシュエントリ431はキャッシュエントリ無効化処理によって無効化される。
【0178】
また、キャッシュエントリ432に含まれるアクセス許可リストには、パスの一覧に含まれる「/db/emp」、「/db/emp/address」及び「/db/emp/address/text()」が保持されている。このため、構造化文書100がデータベース60に新たに登録されたときは、キャッシュエントリ432はキャッシュエントリ無効化処理によって無効化される。
【0179】
次に、キャッシュ管理部511は、キャッシュ43に格納されている全てのキャッシュエントリについて上記したステップS43以降の処理が実行されたか否かを判定する(ステップS46)。
【0180】
全てのキャッシュエントリについて処理が実行されていないと判定された場合(ステップS46のNO)、上記したステップS43に戻って処理が繰り返される。
【0181】
一方、全てのキャッシュエントリについて処理が実行されたと判定された場合(ステップS46のYES)、処理は終了される。
【0182】
また、上記したステップS44においてパスの一覧に含まれるパスがいずれもキャッシュエントリに含まれるアクセス許可リストに保持されていないと判定された場合、ステップS46の処理が実行される。つまり、この場合にはキャッシュエントリは無効化されない。
【0183】
上記したように、キャッシュエントリ無効化処理においては、データベース60に新たな構造化文書が登録されることにより、検索結果(文字列)が変更されるようなキャッシュエントリのみが無効化される。
【0184】
ところで、キャッシュ43に複数のキャッシュエントリが格納されている場合において、キャッシュ管理部511が当該複数のキャッシュエントリを統合する処理(以下、キャッシュエントリ統合処理と表記)を実行する構成であっても構わない。
【0185】
以下、図12のフローチャートを参照して、キャッシュ管理部511によるキャッシュエントリ統合処理の処理手順について説明する。キャッシュエントリ統合処理は、例えばキャッシュ43にキャッシュエントリが登録(追加)された場合に実行される。なお、キャッシュエントリ統合処理は、例えば定期的に実行されても構わない。
【0186】
まず、キャッシュ管理部511は、キャッシュ43に格納されている複数のキャッシュエントリのうち、問い合わせ(文字列)が同一のキャッシュエントリのペアを選択する(ステップS51)。キャッシュ管理部511によって選択されたキャッシュエントリのペアのうち、一方のキャッシュエントリを第1のキャッシュエントリ、他方のキャッシュエントリを第2のキャッシュエントリと称する。
【0187】
次に、キャッシュ管理部511は、選択された第1及び第2のキャッシュエントリに含まれる検索結果文字列が同一であるか否かを判定する(ステップS52)。
【0188】
つまり、ステップS51及びステップS52の処理によって、キャッシュエントリ統合処理の対象となるキャッシュエントリ(問い合わせ及び検索結果文字列が同一の第1及び第2のキャッシュエントリ)が選択される。
【0189】
第1及び第2のキャッシュエントリに含まれる検索結果文字列が同一であると判定された場合(ステップS52のYES)、キャッシュ管理部511は、第1のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されているパス(アクセス権管理単位)の和集合(以下、第1の和集合と表記)を算出する。
【0190】
また、キャッシュ管理部511は、第2のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されているパス(アクセス権管理単位)の和集合(以下、第2の和集合と表記)を算出する。
【0191】
キャッシュ管理部511は、算出された第1の和集合(に含まれるパス)と第2の和集合(に含まれるパス)とが同一であるか否かを判定する(ステップS53)。
【0192】
第1の和集合と第2の和集合とが同一であると判定された場合(ステップS53のYES)、キャッシュ管理部511は、選択された第1のキャッシュエントリに含まれるアクセス許可リスト(に保持されているパス)と第2のキャッシュエントリに含まれるアクセス許可リスト(に保持されているパス)との差集合を算出する(ステップS54)。
【0193】
次に、キャッシュ管理部は前述の差集合の要素数が1であるか否かを判定する(ステップS55)。
【0194】
差集合の要素数が1であると判定された場合(ステップS55のYES)、キャッシュ管理部511は、選択された第1及び第2のキャッシュエントリのうち、アクセス許可リストに保持されるパスが少ないキャッシュエントリ(ここでは、第2のキャッシュエントリとする)を無効化(つまり、キャッシュ43から削除)する(ステップS56)。
【0195】
次に、キャッシュ管理部511は、選択された第1及び第2のキャッシュエントリのうち、ステップS56において削除されていないキャッシュエントリ(ここでは、第1のキャッシュエントリ)に含まれるアクセス許可リストからステップS54において算出された差集合(に含まれるパス)を削除する(ステップS57)。
【0196】
上記したようにキャッシュエントリ統合処理が実行されることで、ステップS51において選択された第1及び第2のキャッシュエントリを1つのキャッシュエントリに統合することができる。
【0197】
なお、ステップS52において第1及び第2のキャッシュエントリに含まれる検索結果文字列が同一でないと判定された場合、処理は終了される。
【0198】
また、ステップS53において第1の和集合と第2の和集合とが同一でないと判定された場合、処理は終了される。
【0199】
また、ステップS55において差集合の要素数が1でないと判定された場合、処理は終了される。
【0200】
図12に示すキャッシュエントリ統合処理では、第1及び第2のキャッシュエントリに含まれるアクセス許可リスト(に保持されているパス)に基づいて第1及び第2のキャッシュエントリが統合される場合について説明したが、例えばアクセス拒否リスト(に保持されているパス)に基づいて統合される構成であってもよい。
【0201】
この場合、図12に示すステップS54においては、第1のキャッシュエントリに含まれるアクセス許可リストと第2のキャッシュエントリに含まれるアクセス拒否リストとの差集合が算出される。ステップS55においては、算出された差集合の要素数が1であるか否かが判定される。ステップS56においては、第1及び第2のキャッシュエントリのうち、アクセス拒否リストに保持されるパスが少ないキャッシュエントリが無効化される。更に、ステップS57においては、ステップS55において無効化されていないキャッシュエントリに含まれるアクセス拒否リストからステップS54において算出された差集合が削除される。
【0202】
上記したように本実施形態においては、例えば第1のユーザによって利用されるクライアント計算機20から問い合わせが送信された場合、当該問い合わせに応じて実行されるデータベース検索処理において第1のユーザに設定されているアクセス権に基づいてアクセス許可リスト及びアクセス拒否リストが作成され、当該問い合わせに対する検索結果文字列が構造化文書から抽出される。本実施形態においては、クライアント計算機20によって送信された問い合わせ、データベース検索処理において作成されたアクセス許可リスト、アクセス拒否リスト及び抽出された検索結果文字列がキャッシュ43に登録される。
【0203】
これにより、本実施形態においては、例えば第1のユーザとは異なる第2のユーザによって利用されるクライアント計算機20から上記した第1のユーザと同一の問い合わせが送信された場合、当該問い合わせに対応付けてキャッシュエントリに含まれているアクセス許可リストに保持されているパス(アクセス権管理単位)によって示されるノード(の範囲)の全てに第2のユーザがアクセス可能であり、かつ、アクセス拒否リストに保持されているパス(アクセス権管理単位)によって示されるノード(の範囲)の全てに第2のユーザがアクセス不能であれば、当該第2のユーザは当該キャッシュエントリを利用することができる。
【0204】
つまり、本実施形態においては、例えばキャッシュエントリをアクセス権が異なるユーザ毎に管理する場合と比較して、異なるユーザによる問い合わせに応じて登録されたキャッシュエントリであっても利用することができるためキャッシュヒット率を向上させることが可能となる。これにより、本実施形態においては、クライアント計算機からの問い合わせに対する応答性能を向上(応答時間を短縮)させることができる。
【0205】
また、本実施形態においては、異なるユーザ間であってもキャッシュエントリを共有することが可能となるため、キャッシュエントリをユーザ毎に管理する場合と比較して、よりキャッシュに必要な記憶領域の利用効率(主記憶使用効率)を向上させることが可能となる。
【0206】
また、本実施形態においては、上述した冗長情報除去処理により、キャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストから冗長な情報(パス)を除去することができる。これにより、キャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されているパスが簡潔になり、例えばキャッシュヒット判定処理に必要な処理が軽減されるため、文書検索装置50(に含まれるDBMS51)の負荷及び処理時間を低減することが可能となる。
【0207】
また、本実施形態においては、データベース60に新たに構造化文書が登録された場合に、キャッシュ43に格納されている上述したキャッシュエントリを無効化する処理が実行される。これにより、本実施形態においては、データベース60に新たに登録された構造化文書(構造化データ)に関連するキャッシュエントリのみを高精度に特定(つまり、無効化されるキャッシュエントリを限定)して無効化することが可能となる。これにより、本実施形態においては、データベース60に新たに構造化文書が登録された場合において必要最低限のキャッシュエントリのみを無効化することができるため、当該キャッシュエントリの無効化によるキャッシュヒット率の低下を抑制することが可能となる。
【0208】
また、本実施形態においては、上述したキャッシュエントリ統合処理によって、キャッシュ43に格納されている複数のキャッシュエントリを統合することができる。これにより、本実施形態においては、キャッシュ43に必要な記憶領域を削減することにより、記憶領域の有効利用を図ることができる。
【0209】
上述したように本実施形態においては文書検索装置50について説明したが、本実施形態は、例えばファイルシステムのファイル一覧検索のような問い合わせが一致していてもアクセス権設定によって検索結果に差が生じる可能性のある検索システムにおけるキャッシュ全般において適用可能であり、このようなキャッシュに適用された場合であってもキャッシュヒット率の向上及び主記憶使用効率の向上が期待できる。
【0210】
なお、本実施形態においては、新たに構造化文書がデータベース60に登録された場合にキャッシュエントリ無効化処理が実行されるものとして説明したが、当該キャッシュエントリ無効化処理は、例えばデータベース60に既に登録されている構造化文書が部分的に更新された場合に実行される構成であっても構わない。この場合には、部分的に更新された構造化文書に対して図10に示すキャッシュエントリ無効化処理が実行される。
【0211】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【符号の説明】
【0212】
10…コンピュータ、20…クライアント計算機、30…通信路、40…外部記憶装置、42…アクセス権テーブル、43…キャッシュ(キャッシュ格納手段)、50…文書検索装置(情報検索装置)、51…DBMS、60…データベース、511…キャッシュ管理部、512…データベース検索処理部、513…データベース登録処理部。
【技術分野】
【0001】
本発明は、問い合わせに応じて検索された検索結果をキャッシュする情報検索装置、情報検索方法及びプログラムに関する。
【背景技術】
【0002】
一般的に、データベース管理システムに代表されるデータ検索システムにおいては、サーバ計算機(上で動作するデータ検索プログラム)がクライアント計算機(上で動作するクライアントプログラム)から送信された問い合わせ(検索要求)を受信し、当該問い合わせに応じてデータベースから必要なデータを検索する。このように検索された結果(検索結果)が、問い合わせに対する応答としてクライアント計算機に対して返される。
【0003】
ところで、サーバ計算機におけるデータベース検索処理は処理コストが高く検索システム全体のボトルネックになりやすい。このボトルネックを解消するために、例えば検索結果をサーバ計算機の主記憶装置上にキャッシュするという対策が考えられる。
【0004】
このようにキャッシュを用いたシステムにおいては、例えばクライアント計算機からの最初の問い合わせではキャッシュ内に該当するデータが存在しないため、サーバ計算機(上で動作するデータ検索プログラム)においてはデータベース検索処理が実行される。サーバ計算機は、検索結果をクライアント計算機に対して返信するとともに、当該クライアント計算機からの問い合わせの内容及び当該検索結果をキャッシュに登録する。
【0005】
この後、クライアント計算機から同一内容の問い合わせが送信された場合、サーバ計算機は、当該問い合わせに対する検索結果をキャッシュから取得することができるため、当該問い合わせに応じたデータベース検索処理を再度実行することなく当該検索結果をクライアント計算機に返すことができる。
【0006】
これにより、キャッシュを用いたシステムにおいては、サーバ計算機への負荷を軽減することができるとともに、クライアント計算機(上で動作するクライアントプログラム)に対する応答時間を短縮することができる。
【0007】
ところで、一般的に、データベース管理システム等のデータ検索システムは、アクセス権制御が可能である。クライアント計算機からの問い合わせが例えばアクセス権が設定されたデータベースに対する問い合わせである場合には、当該問い合わせを送信したクライアント計算機(を利用するユーザ)に設定されている権限によっては、当該問い合わせに応じて検索される検索結果に差が生じることがある。
【0008】
例えばデータA及びデータBにアクセス可能なユーザXとデータAにアクセス可能であってデータBにアクセス不能なユーザYとがともにデータA及びBが検索される内容の問い合わせをした場合を想定する。この場合、サーバ計算機においては、ユーザXからの問い合わせに対してはデータA及びBが検索結果として返される。一方、ユーザYからの問い合わせに対しては、当該ユーザYはデータBにアクセス不能であるため、データAのみが検索結果として返されることになる。
【0009】
したがって、上記したようにサーバ計算機において検索結果をキャッシュしておく場合、アクセス権によって検索結果が異なるため、当該キャッシュをユーザ別に管理する必要がある。
【0010】
上記したような検索結果をキャッシュする技術に関連して、制限されたコンテンツの効率的なコンテンツキャッシュを容易にする技術(以下、先行技術と表記)が開示されている(例えば、特許文献1を参照)。この先行技術によれば、制限されたコンテンツがキャッシュサーバに位置する場合は、制限されたコンテンツにユーザがアクセス認可されているか否かを判断し、アクセス認可されている場合は、制限されたコンテンツがキャッシュサーバから供給される。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特表2007−501984号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
ところで、上記したように問い合わせが同一であってもユーザが異なれば検索結果が異なる場合がある一方で、ユーザに設定されている権限によっては問い合わせが同一であればユーザが異なっていても検索結果が同一になる場合もある。上記した例において例えばユーザX及びユーザYがともにデータAが検索される内容の問い合わせをした場合には、異なるアクセス権が設定されたユーザからの問い合わせであるにもかかわらず、ユーザX及びユーザYのどちらからの問い合わせに対してもデータAが検索結果として返される。
【0013】
しかしながら、上記したようなユーザ別にキャッシュを管理する方法では、たとえ問い合わせ及びその検索結果が等しい場合であっても当該問い合わせをしたユーザが異なる場合には、キャッシュ内のデータ(検索結果)を共有できない。このため、キャッシュミスによる応答性能劣化及びキャッシュデータの重複による主記憶使用量(キャッシュに必要な記憶領域)の増加を招く。
【0014】
そこで、本発明の目的は、クライアント計算機からの問い合わせに対する応答性能及びキャッシュに必要な記憶領域の利用効率を向上させることが可能な情報検索装置、情報検索方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0015】
本発明の1つの態様によれば、ユーザによって利用されるクライアント計算機及び階層構造を有する構造化データを格納するデータベースと接続された情報検索装置が提供される。この情報検索装置は、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されている構造化データが有する階層構造において当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブルと、前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信する問い合わせ受信手段と、前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されている構造化データが有する階層構造における前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する作成手段と、前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されている構造化データが有する階層構造における前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該構造化データから抽出する抽出手段と、前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを格納するキャッシュ格納手段とを具備する。
【発明の効果】
【0016】
本発明は、クライアント計算機からの問い合わせに対する応答性能及びキャッシュに必要な記憶領域の利用効率を向上させることを可能とする。
【図面の簡単な説明】
【0017】
【図1】本発明の実施形態に係る文書検索装置を含む文書検索システムのハードウェア構成を示すブロック図。
【図2】図1に示す文書検索装置50の主として機能構成を示すブロック図。
【図3】図2に示すデータベース60に格納されている構造化文書のデータ構造の一例を示す図。
【図4】図2に示すアクセス権テーブル42のデータ構造の一例を示す図。
【図5】図2に示すキャッシュ43のデータ構造の一例を示す図。
【図6】クライアント計算機20によって問い合わせが送信された場合の文書検索装置50に含まれるDBMS51の処理手順を示すフローチャート。
【図7】キャッシュヒット判定処理の処理手順を示すフローチャート。
【図8】データベース検索処理の処理手順を示すフローチャート。
【図9】クライアント計算機20によって構造化文書の登録要求が送信された場合の文書検索装置50に含まれるDBMS51の処理手順を示すフローチャート。
【図10】キャッシュエントリ無効化処理の処理手順を示すフローチャート。
【図11】データベース登録処理部513によって抽出された構造化文書100の木構造の一例を示す図。
【図12】キャッシュ管理部511によるキャッシュエントリ統合処理の処理手順を示すフローチャート。
【発明を実施するための形態】
【0018】
以下、図面を参照して、本発明の実施形態について説明する。
【0019】
図1は、本実施形態に係る文書検索装置(情報検索装置)を含む文書検索システムのハードウェア構成を示すブロック図である。
【0020】
図1の文書検索システムは、主として、コンピュータ10と、複数のクライアント計算機とから構成される。複数のクライアント計算機は、例えば複数のユーザによって利用される。複数のクライアント計算機は、クライアント計算機20を含む。クライアント計算機20上では、コンピュータ10を利用するクライアントプログラムが動作する。クライアント計算機20を含む複数のクライアント計算機は、例えば通信路30を介してコンピュータ10と接続されている。なお、図1にはクライアント計算機20以外のクライアント計算機は省略されている。
【0021】
コンピュータ10は、ハードディスクドライブ(HDD:Hard Disk Drive)のような外部記憶装置40と接続されている。この外部記憶装置40は、コンピュータ10によって実行されるプログラム41を格納する。コンピュータ10及び外部記憶装置40は、文書検索装置50を構成する。
【0022】
なお、上記したクライアント計算機20上で動作するクライアントプログラムは、例えば文書検索装置50に対して通信路30介して当該クライアント計算機20を利用するユーザによって指定された問い合わせを送信し、当該問い合わせに対する検索結果(応答)を当該文書検索装置50から受信するプログラムである。
【0023】
図2は、図1に示す文書検索装置50の主として機能構成を示すブロック図である。文書検索システム50は、クライアント計算機20(上で動作するクライアントプログラム)によって送信される問い合わせによる検索対象となる文書(データ)が格納されているデータベース60と接続されている。なお、検索対象となる文書は、例えば階層構造を有する構造化文書(構造化データ)である。この構造化文書は、例えばXML(eXtensible Markup Language)で記述される。XMLで記述された構造化文書(XMLデータ)は、タグで囲まれたノードと呼ばれる構造からなり、当該ノード内に更にノードが存在することにより階層構造を有する。
【0024】
文書検索装置50は、データベース管理システム(DBMS:Database Management System)51を含む。このDBMS51は、クライアント計算機20によって送信された問い合わせを受信し、データベース60に対する検索処理の結果を当該クライアント計算機20に返す処理を実行する。
【0025】
DBMS51は、キャッシュ管理部511、データベース検索処理部512及びデータベース登録処理部513を含む。本実施形態において、これらの各部511乃至513(を含むDBMS51)は、図1に示すコンピュータ10が外部記憶装置40に格納されているプログラム41を実行することにより実現されるものとする。このプログラム41は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム41が通信路30を介してコンピュータ10にダウンロードされても構わない。
【0026】
また、DBMS51は、アクセス権テーブル42及びキャッシュ(格納部)43を含む。本実施形態において、アクセス権テーブル42は、例えば外部記憶装置40に格納される。また、キャッシュ43は、例えばコンピュータ10に備えられる主記憶装置(メモリ)内にその領域が確保される。
【0027】
なお、本実施形態に係る文書検索装置50においては、予め設定されているクライアント計算機20を利用するユーザの権限に基づいてデータベース60(に格納されている構造化データ)に対するアクセスが制限(つまり、アクセス権制御)される。
【0028】
具体的には、データベース60に格納されている構造化文書が有する階層構造において、ユーザによって指定された問い合わせ(検索条件)に合致する範囲であっても当該範囲が当該ユーザのアクセス可能な範囲外である場合には、当該範囲(に該当する文字列)は検索結果として当該ユーザが利用するクライアント計算機20には返されない。なお、文書検索装置50におけるアクセス権の制御は、例えば構造化文書が有する階層構造におけるノード(以下、単に構造化文書上のノードと表記)の位置を示すXPath(以下、パスと表記)単位で行われる。
【0029】
アクセス権テーブル42には、クライアント計算機20を利用するユーザに設定されているアクセス権を示すアクセス権情報が管理される。アクセス権テーブル42には、クライアント計算機20を利用するユーザを識別するためのユーザIDに対応付けて、データベース60に格納されている構造化文書上において当該ユーザがアクセス可能なノードの範囲を示すアクセス許可設定情報及び当該ユーザがアクセス不能なノードの範囲を示すアクセス禁止設定情報が予め保持される。なお、アクセス許可設定情報及びアクセス禁止設定情報は、パスによって表される。
【0030】
キャッシュ43には、後述するようにクライアント計算機20によって送信された問い合わせ(文字列)、データベース検索処理部512によって作成されたアクセス許可リスト、アクセス拒否リスト及び当該問い合わせに応じてデータベース60に格納されている構造化文書から抽出された検索結果文字列を対応付けて含むキャッシュエントリが格納される。
【0031】
キャッシュ管理部511は、クライアント計算機20を利用するユーザによって指定された検索対象範囲を示す問い合わせを受信する。この問い合わせには、当該問い合わせを送信したクライアント計算機20を利用するユーザを識別するためのユーザ識別情報(以下、ユーザIDと表記)が含まれる。キャッシュ管理部511によって受信された問い合わせは、後述するように当該問い合わせに含まれるユーザIDによって識別されるユーザに設定されている権限に応じて処理される。なお、問い合わせとしては、例えばXMLデータ用の検索言語であるXQueryが用いられる。
【0032】
キャッシュ管理部511は、受信された問い合わせに基づいてキャッシュヒット判定処理を実行する。キャッシュ管理部511は、受信された問い合わせを含むキャッシュエントリがキャッシュ43に格納(登録)されているか否かを判定する。キャッシュ管理部511は、受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報及びアクセス許可設定情報と、当該問い合わせを含むキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストとに基づいてキャッシュヒットであるか否かを判定する。
【0033】
キャッシュ管理部511は、キャッシュヒット判定処理においてキャッシュヒットであると判定された場合、受信された問い合わせを送信したクライアント計算機(当該問い合わせに含まれるユーザIDによって識別されるユーザによって利用されるクライアント計算機)20に対してキャッシュ43に格納されている検索文字列(キャッシュヒットと判定されたキャッシュエントリの検索文字列)を送信する。
【0034】
キャッシュ管理部511は、クライアント計算機20によって送信された構造化文書の登録要求を受信する。キャッシュ管理部511は、受信された登録要求に付随する構造化文書をデータベース登録処理部513に渡す。
【0035】
データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに応じてデータベース60(に格納されている構造化文書)に対する検索処理(以下、データベース検索処理と表記)を実行する。
【0036】
データベース検索処理部512は、データベース検索処理において、キャッシュ管理部511によって受信された問い合わせに合致するデータベース60に格納されている構造化文書上の各ノードに対するアクセス可否判定処理を実行する。データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報及びアクセス禁止設定情報に基づいてアクセス可否判定処理を実行する。
【0037】
データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報に基づいて、データベース60に格納されている構造化文書上における当該問い合わせ(によって示される検索対象範囲)に合致するノードの範囲であって当該アクセス許可設定情報及び当該アクセス禁止設定情報によって示されるアクセス可能なノードの範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する。
【0038】
また、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報に基づいて、データベース60に格納されている構造化文書上における当該問い合わせに合致するノードの範囲であって当該アクセス許可設定情報及び当該アクセス禁止設定情報によって示されるアクセス不能なノードの範囲を示すアクセス権管理単位を保持するアクセス拒否リストを作成する。
【0039】
データベース検索処理部512は、作成されたアクセス許可リスト及びアクセス拒否リストをキャッシュ管理部511に渡す。
【0040】
なお、データベース検索処理部512によって作成されたアクセス許可リスト及びアクセス拒否リストに含まれるアクセス権管理単位はパスによって表される。
【0041】
データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報に基づいて、データベース60に格納されている構造化文書上における当該問い合わせに合致するノードの範囲であって当該アクセス許可設定情報及び当該アクセス禁止設定情報によって示されるアクセス可能なノードの範囲に該当する文字列を検索結果文字列として当該構造化文書から抽出する。
【0042】
データベース検索処理部512は、抽出された検索結果文字列をキャッシュ管理部511に渡す。
【0043】
上記したようにキャッシュ管理部511に渡されたアクセス許可リスト、アクセス拒否リスト及び検索結果文字列は、当該キャッシュ管理部511によって受信された問い合わせに対応付けてキャッシュ43に登録される。また、キャッシュ管理部511に渡された検索結果文字列は、当該キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDによって識別されるユーザによって利用されるクライアント計算機(つまり、当該問い合わせを送信したクライアント計算機)20に送信される。
【0044】
データベース登録処理部513は、キャッシュ管理部511から渡された構造化文書をデータベース60に登録する。
【0045】
データベース登録処理部513は、キャッシュ管理部511から渡された構造化文書を解析する。データベース登録処理部513は、解析結果を含むキャッシュ無効化要求をキャッシュ管理部511に返す。なお、データベース登録処理部513による解析結果には、データベース60に登録された構造化文書上の各ノードの位置を示すパスの一覧が含まれる。
【0046】
この場合、キャッシュ管理部511においては、データベース登録処理部513から渡された解析結果及びキャッシュ43に格納されているキャッシュエントリに含まれるアクセス許可リストに基づいて、当該キャッシュエントリの無効化処理が実行される。なお、キャッシュエントリの無効化処理の詳細については後述する。
【0047】
図3は、図2に示すデータベース60に格納されている構造化文書のデータ構造の一例を示す。データベース60に格納されている構造化文書は、例えばXMLで記述されている。図3に示すように、構造化文書は、タグで囲まれたノードと呼ばれる構造からなり、当該ノード内に更にノードが存在することにより階層構造を有する。
【0048】
図3に示す例では、構造化文書100が有する階層構造におけるノード(構造化文書100上のノード)には、dbノード、empノード、nameノード、addressノード及びテキストノードが含まれる。
【0049】
なお、構造化文書が有する階層構造において、任意のノードより下位の階層に位置するノードを当該任意のノードに対する子孫ノードと称する。図3に示す構造化文書100においては、empノード、nameノード及びaddressノードは、dbノードに対する子孫ノードである。
【0050】
また、構造化文書が有する階層構造において、任意のノードより上位の階層に位置するノードを当該任意のノードに対する祖先ノードと称する。図3に示す構造化文書100においては、dbノード及びempノードは、nameノード(またはaddressノード)に対する祖先ノードである。
【0051】
図4は、図2に示すアクセス権テーブル42のデータ構造の一例を示す。図4に示すように、アクセス権テーブル42には、クライアント計算機20を利用するユーザを識別するためのユーザIDに対応付けて、データベース60に格納されている構造化文書上において当該ユーザがアクセス可能なノードの範囲を示すアクセス許可設定情報及び当該ユーザがアクセス不能なノードの範囲を示すアクセス禁止設定情報が保持される。アクセス許可設定情報及びアクセス禁止設定情報としては、構造化文書上のノードの位置を示すパスが用いられる。
【0052】
図4に示す例では、アクセス権テーブル42には、ユーザID「db user1」に対応付けて、アクセス許可設定情報「/db/emp/name」及びアクセス禁止設定情報「NIL」が保持されている。
【0053】
ここで、「/db/emp/name」は、構造化文書上におけるdbノードより下位の階層に位置するempノードより更に下位の階層に位置するnameノードを示す(特定する)パスである。この場合、アクセス許可設定情報「/db/emp/name」は、パス「/db/emp/name」によって示されるnameノードと、当該nameノードに対する子孫ノードと、当該nameノードに対する祖先ノードであるdbノード及びempノードとにアクセス可能であることを示す。このように、アクセス許可設定情報「/db/emp/name」は、構造化文書上においてアクセス可能なノードの範囲を示す。
【0054】
一方、アクセス禁止設定情報「NIL」は、空集合、つまり、構造化文書上においてアクセス不能なノードの範囲が設定(指定)されていないことを示す。
【0055】
図4に示す例では、アクセス権テーブル42には、ユーザID「db user2」に対応付けて、アクセス許可設定情報「/db/emp」及びアクセス禁止設定情報「/db/emp/address」が保持されている。
【0056】
ここで、「/db/emp」は、構造化文書上におけるdbノードより下位の階層に位置するempノードを示すパスである。この場合、アクセス許可設定情報「/db/emp」は、パス「/db/emp」によって示されるempノードと、当該empノードに対する子孫ノードと、当該empノードに対する祖先ノードであるdbノードとにアクセス可能であることを示す。
【0057】
一方、「/db/emp/address」は、構造化文書上におけるdbノードより下位の階層に位置するempノードより更に下位の階層に位置するnameノードを示すパスである。この場合、アクセス禁止設定情報「/db/emp/address」は、パス「/db/emp/address」によって示されるaddressノードと、当該addressノードに対する子孫ノードとにアクセス不能であることを示す。このように、アクセス禁止設定情報「/db/emp/address」は、構造化文書上においてアクセス不能なノードの範囲を示す。
【0058】
ここで、アクセス禁止設定情報によって示されるアクセス不能なノードの範囲に含まれるaddressノード(及び当該addressノードに対する子孫ノード)は、empノードに対する子孫ノードである。このため、addressノード(及び当該addressノードに対する子孫ノード)は、アクセス許可設定情報「/db/emp」によって示されるアクセス可能なノードの範囲に含まれる。よって、addressノード及び当該addressノードに対する子孫ノードは、アクセス許可設定情報「/db/emp」によって示されるアクセス可能なノードの範囲及びアクセス禁止設定情報「/db/emp/address」によって示されるアクセス不能なノードの範囲の両方が設定されていることになるが、この場合、アクセス禁止設定情報はアクセス許可設定情報よりも優先されるものとする。
【0059】
つまり、ユーザID「db user2」によって識別されるユーザは、アクセス許可設定情報「/db/emp」及びアクセス禁止設定情報「/db/emp/address」によれば、addressノード及び当該addressノードに対する子孫ノードについてはアクセス不能である。
【0060】
また、図4に示す例では、アクセス権テーブル42には、ユーザID「db user3」に対応付けて、アクセス許可設定情報「/db/emp/address」及びアクセス禁止設定情報「NIL」が保持されている。
【0061】
ここで、「/db/emp/address」は、構造化文書上におけるdbノードより下位の階層に位置するempノードより更に下位の階層に位置するaddressノードを示す(特定する)パスである。この場合、アクセス許可設定情報「/db/emp/address」は、パス「/db/emp/address」によって示されるaddressノードと、当該addressノードに対する子孫ノードと、当該addressノードに対する祖先ノードであるdbノード及びempノードとにアクセス可能であることを示す。
【0062】
一方、アクセス禁止設定情報「NIL」は、上記したように構造化文書上においてアクセス不能なノードの範囲が設定(指定)されていないことを示す。
【0063】
なお、図4に示すアクセス権テーブル42においては、アクセス可能なノードの範囲及びアクセス不能なノードの範囲を明示的に設定可能なようにアクセス許可設定情報及びアクセス禁止設定情報が保持されるものとして説明したが、アクセス権テーブル42に例えばアクセス許可設定情報のみが保持され、当該アクセス許可設定情報によって明示的にアクセスが許可されている範囲以外は全てアクセス禁止という形態でも構わない。同様に、アクセス権テーブル42に例えばアクセス禁止設定情報のみが保持され、当該アクセス許可設定情報によって明示的にアクセスが禁止されている範囲以外は全てアクセス可能という形態でも構わない。つまり、アクセス権テーブル42においては、ユーザに設定されているアクセス権を示すことができるものであれば、上記した図4に示すデータ構造に限定されない。
【0064】
図5は、図2に示すキャッシュ43のデータ構造の一例を示す。キャッシュ43には、キャッシュエントリが格納される。キャッシュエントリには、問い合わせ(文字列)、アクセス許可リスト、アクセス拒否リスト及び検索結果文字列が含まれる。
【0065】
問い合わせは、クライアント計算機20から送信された問い合わせ文字列(例えばXQuery)である。
【0066】
アクセス許可リストは、対応付けられている問い合わせに応じて実行されるデータベース検索処理におけるアクセス可否判定処理(アクセス権監査)においてアクセス可能と判定された構造化文書上のノードの位置を示すパス(アクセス権管理単位)のリストである。
【0067】
アクセス拒否リストは、対応付けられている問い合わせに応じて実行されるデータベース検索処理におけるアクセス可否判定処理(アクセス権監査)においてアクセス不能と判定された構造化文書上のノードの位置を示すパス(アクセス権管理単位)のリストである。
【0068】
検索結果文字列は、当該検索結果文字列に対応付けられている問い合わせに応じて実行されるデータベース検処処理においてデータベース60に格納されている構造化文書から検索結果として抽出された文字列である。
【0069】
図5に示す例では、キャッシュ43には、キャッシュエントリ431及び432が格納されている。
【0070】
キャッシュエントリ431に含まれる問い合わせは、問い合わせ「/db/emp」である。キャッシュエントリ431に含まれるアクセス許可リストには、アクセス権管理単位としてパス「/db/emp」、「/db/emp/name」及び「/db/emp/name/text()」が保持されている。このアクセス許可リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス可能と判定された構造化文書上のノードが、パス「/db/emp」によって示されるempノード、パス「/db/emp/name」によって示されるnameノード及びパス「/db/emp/name/text()」によって示されるテキストノードであることが示される。
【0071】
キャッシュエントリ431に含まれるアクセス拒否リストには、アクセス権管理単位としてパス「/db/emp/address」が保持されている。このアクセス拒否リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス不能と判定された構造化文書上のノードが、パス「/db/emp/address」によって示されるaddressノードであることが示される。
【0072】
また、キャッシュエントリ431に含まれる検索結果文字列は、検索結果文字列「<emp><name>name1</name></emp>」及び「<emp><name>name2</name></emp>」である。この検索結果文字列は、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理においてデータベース60に格納されている構造化文書から検索結果として抽出された文字列である。
【0073】
また、キャッシュエントリ432に含まれる問い合わせは、問い合わせ「/db/emp」である。キャッシュエントリ432に含まれるアクセス許可リストには、アクセス権管理単位としてパス「/db/emp」、「/db/emp/address」及び「/db/emp/address/text()」が保持されている。このアクセス許可リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス可能と判定された構造化文書上のノードが、パス「/db/emp」によって示されるempノード、パス「/db/emp/address」によって示されるadressノード及びパス「/db/emp/address/text()」によって示されるテキストノードであることが示される。
【0074】
キャッシュエントリ432に含まれるアクセス拒否リストには、アクセス権管理単位としてパス「/db/emp/name」が保持されている。このアクセス拒否リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス不能と判定された構造化文書上のノードが、パス「/db/emp/name」によって示されるnameノードであることが示される。
【0075】
また、キャッシュエントリ432に含まれる検索結果文字列は、検索結果文字列「<emp><address>address1</address></emp>」及び「<emp><address>address2 </address></emp>」である。この検索結果文字列は、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理においてデータベース60に格納されている構造化文書から検索結果として抽出された文字列である。
【0076】
上記したように、キャッシュエントリに含まれる問い合わせが同一である場合であっても、当該問い合わせを送信したクライアント端末20を利用するユーザに設定されている権限(アクセス許可設定情報及びアクセス禁止設定情報)によっては、当該問い合わせに応じて実行されるデータベース検索処理において作成されるアクセス許可リスト、アクセス拒否リスト及び構造化文書から抽出される検索結果文字列は異なる。
【0077】
次に、図6のフローチャートを参照して、クライアント計算機20によって問い合わせが送信された場合の文書検索装置50に含まれるDBMS51の処理手順について説明する。
【0078】
まず、DBMS51に含まれるキャッシュ管理部511は、クライアント計算機20によって送信された問い合わせを受信する(ステップS1)。問い合わせは、当該問い合わせを送信したクライアント端末20を利用するユーザによって指定された検索対象範囲を示す。問い合わせには、当該問い合わせを送信したクライアント計算機20を利用するユーザを識別するためのユーザIDが含まれる。なお、問い合わせとしては、例えばXMLデータ用の検索言語であるXQueryが用いられる。
【0079】
次に、キャッシュ管理部511は、受信された問い合わせに基づいて、キャッシュ43に格納されているキャッシュエントリに対するキャッシュヒット判定処理を実行する(ステップS2)。キャッシュヒットの判定処理は、受信された問い合わせに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報及びアクセス禁止設定情報と、当該問い合わせに対応付けてキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに基づいて実行される。キャッシュヒット判定処理の詳細については後述する。
【0080】
キャッシュヒット判定処理においてキャッシュヒットでない(つまり、キャッシュミスヒット)と判定された場合(ステップS3のNO)、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに応じて、データベース60に格納されている構造化文書100に対するデータベース検索処理を実行する(ステップS4)。データベース検索処理部512は、アクセス権テーブル42を参照してデータベース検索処理を実行する。
【0081】
このデータベース検索処理においては、キャッシュ管理部511によって受信された問い合わせ(によって示される検索範囲)に合致する検索結果文字列がデータベース60に格納されている構造化文書から抽出される。また、データベース検索処理においては、検索結果文字列の抽出と同時に、アクセス許可リスト及びアクセス拒否リストが作成される。なお、データベース検索処理の詳細については後述する。
【0082】
データベース検索処理部512は、作成されたアクセス許可リスト、アクセス拒否リスト及びデータベース60に格納されている構造化文書から抽出された検索結果文字列をキャッシュ管理部511に渡す。
【0083】
キャッシュ管理部511は、受信された問い合わせに対応付けて、データベース検索処理部512から渡されたアクセス許可リスト、アクセス拒否リスト及び検索結果文字列を対応付けて含むキャッシュエントリをキャッシュ43に登録する(キャッシュする)処理(キャッシュ登録処理)を実行する(ステップS5)。
【0084】
キャッシュ管理部511は、受信された問い合わせに対する応答として、データベース検索処理部512から渡された検索結果文字列を当該問い合わせに含まれるユーザIDによって識別されるユーザによって利用されるクライアント計算機(当該問い合わせを送信したクライアント計算機)20に対して送信する(ステップS6)。
【0085】
一方、ステップS3においてキャッシュヒットであると判定された場合、キャッシュ管理部511は、受信された問い合わせに対応付けてキャッシュエントリ(キャッシュヒットであると判定されたキャッシュエントリ)に含まれる検索結果文字列をキャッシュ43から取得する(ステップS7)。ステップS7の処理が実行されると、ステップS6の処理が実行される。つまり、ステップS7において取得された検索結果文字列が、キャッシュ管理部511によって受信された問い合わせに対する応答として当該問い合わせに含まれるユーザIDによって識別されるユーザによって利用されるクライアント計算機20に対して送信される。
【0086】
次に、図7に示すフローチャートを参照して、前述したキャッシュヒット判定処理(図6に示すステップS2の処理)の処理手順について説明する。なお、キャッシュヒット判定処理は、キャッシュ43に格納されているキャッシュエントリ毎に実行される。以下、キャッシュヒット判定処理の対象となるキャッシュエントリを対象キャッシュエントリと称する。
【0087】
まず、キャッシュ管理部511は、受信された問い合わせ(文字列)及び対象キャッシュエントリに含まれる問い合わせ(文字列)が一致するか否かを判定する(ステップS11)。
【0088】
問い合わせが一致すると判定された場合(ステップS11のYES)、キャッシュ管理部511は、受信された問い合わせに含まれるユーザIDによって識別されるユーザが対象キャッシュエントリに含まれるアクセス許可リストに保持されるパス(アクセス権管理単位)によって示されるノード(の範囲)の全てにアクセス可能(アクセス許可リストの全てにアクセス可能)であるか否かを判定する(ステップS12)。キャッシュ管理部511は、受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報及びアクセス禁止設定情報に基づいて判定処理を実行する。
【0089】
この場合、受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報によって示されるアクセス可能なノードの範囲に、対象キャッシュエントリに含まれるアクセス許可リストに保持されるパスによって示されるノード(の範囲)が全て含まれる場合には、アクセス許可リストの全てにアクセス可能であると判定される。
【0090】
アクセス許可リストの全てにアクセス可能であると判定された場合(ステップS13のYES)、キャッシュ管理部511は、受信された問い合わせに含まれるユーザIDによって識別されるユーザが対象キャッシュエントリに含まれるアクセス拒否リストに保持されるパス(アクセス権管理単位)によって示されるノード(の範囲)の全てにアクセス不能(アクセス拒否リストの全てにアクセス不能)であるか否かを判定する(ステップS13)。キャッシュ管理部511は、受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報に基づいて判定処理を実行する。
【0091】
この場合、受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報によって示されるアクセス不能なノードの範囲に、対象キャッシュエントリに含まれるアクセス拒否リストに保持されるパスによって示されるノード(の範囲)が全て含まれる場合には、アクセス拒否リストの全てにアクセス不能であると判定される。
【0092】
アクセス拒否リストの全てにアクセス不能であると判定された場合(ステップS13のYES)、キャッシュ管理部511は、対象キャッシュエントリに対するキャッシュヒット判定処理結果をキャッシュヒット判定とする(ステップS14)。
【0093】
一方、ステップS11において問い合わせが一致しないと判定された場合(ステップS11のNO)、キャッシュ管理部511は、対象キャッシュエントリに対するキャッシュヒット判定処理結果をキャッシュミスヒット判定とする(ステップS15)。
【0094】
同様に、ステップS12においてアクセス許可リストの全てにアクセス可能でないと判定された場合、または、ステップS13においてアクセス拒否リストの全てにアクセス不能でないと判定された場合、キャッシュ管理部511は、対象キャッシュエントリに対するキャッシュヒット判定処理結果をキャッシュミスヒット判定とする(ステップS15)。
【0095】
キャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リスト(に保持されるパス)の和集合は、当該キャッシュエントリに含まれる問い合わせに応じて実行されるデータベース検索処理に関わるパスの集合である。このため、上記したステップS12及びステップS13の処理においては、対象キャッシュエントリに含まれる問い合わせに応じて実行されるデータベース検索処理に関わるパスに基づいて、当該対象キャッシュエントリが登録された際のユーザのアクセス権と現在処理中の問い合わせを指定したユーザのアクセス権が同等であるか否かが判定されている。
【0096】
次に、図8のフローチャートを参照して、前述したデータベース検索処理(図6に示すステップS4の処理)の処理手順について説明する。
【0097】
データベース検索処理においては、キャッシュ管理部511によって受信された問い合わせに合致する構造化文書上の各ノードに対するアクセス可否判定処理が実行される。アクセス可否判定処理は、キャッシュ管理部511によって受信された問い合わせに合致する構造化文書上の各ノードの各々に対して、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDによって識別されるユーザがアクセス可能であるかまたはアクセス不能であるか(つまり、アクセス可否)を判定する処理である。
【0098】
このアクセス可否判定処理においては、データベース60に格納されている構造化文書を参照して、キャッシュ管理部511によって受信された問い合わせ(パス)によって示される当該構造化文書上のノード以下(つまり、検索対象範囲)の階層構造を辿ることにより当該アクセス可否判定処理の対象となるノードが抽出(特定)される。以下、アクセス可否判定処理の対象となるノードを対象ノードと称する。
【0099】
まず、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報によって示されるアクセス不能なノードの範囲(以下、禁止範囲と表記)に対象ノードが含まれるか否かを判定する(ステップS21)。
【0100】
禁止範囲に対象ノードが含まれないと判定された場合(ステップS21のNO)、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDに対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報によって示されるアクセス可能なノードの範囲(以下、許可範囲と表記)に対象ノードが含まれるか否かを判定する(ステップS22)。
【0101】
許可範囲に対象ノードが含まれると判定された場合(ステップS22のYES)、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDによって識別されるユーザが対象ノードにアクセス可能である(つまり、アクセス可)と判定する(ステップS23)。
【0102】
データベース検索処理部512は、アクセス可と判定された場合、対象ノードを示すパスをアクセス権管理単位としてアクセス許可リストに追加する(ステップS24)。なお、アクセス許可リストに既に対象ノードを示すパスが保持されている場合には、当該パスは追加されない。
【0103】
一方、禁止範囲に対象ノードが含まれると判定された場合(ステップS21のYES)または許可範囲に対象ノードが含まれないと判定された場合(ステップS22のNO)、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせに含まれるユーザIDによって識別されるユーザが対象ノードにアクセス不能である(つまり、アクセス不可)と判定する(ステップS25)。
【0104】
データベース検索処理部512は、アクセス不可と判定された場合、対象ノードを示すパスをアクセス権管理単位としてアクセス拒否リストに追加する(ステップS26)。なお、アクセス拒否リストに既に対象ノードを示すパスが保持されている場合には、当該パスは追加されない。
【0105】
ステップS24またはステップS26の処理が実行されると、データベース検索処理部512は、上記したステップS21以降の処理がキャッシュ管理部511によって受信された問い合わせによって示される検索対象範囲内の全てのノード(問い合わせによって示される構造化文書上のノード以下の全てのノード)について実行されたか否かを判定する(ステップS27)。
【0106】
全てのノードについて実行されていないと判定された場合(ステップS27のNO)、ステップS21に戻って処理が繰り返される。この場合、ステップS21の処理が実行されていないノードを対象ノードとして当該処理が実行される。
【0107】
このように、キャッシュ管理部511によって受信された問い合わせによって示される構造化文書上のノード以下の全てのノードについて上記したステップS21以降の処理(アクセス可否判定処理)が実行されることにより、アクセス許可リスト及びアクセス拒否リストが作成される。
【0108】
ステップS27において全てのノードについて実行されたと判定された場合、データベース検索処理部512は、上記したキャッシュ管理部511によって受信された問い合わせによって示される検索対象範囲内の全てのノードに対するアクセス可否判定処理結果に基づいて構造化文書(データベース60に格納されている構造化文書)から検索結果文字列を抽出する(ステップS28)。データベース検索処理部512は、データベース60に格納されている構造化文書が有する階層構造における問い合わせ(によって示される検索対象範囲)に合致するノードの範囲であって当該問い合わせに含まれるユーザIDによって識別されるユーザがアクセス可能なノードの範囲(許可範囲)に該当する文字列を検索結果文字列として抽出する。
【0109】
上記したようにデータベース検索処理部512によって作成されたアクセス許可リスト、アクセス拒否リスト及び当該データベース検索処理部512によって抽出された検索結果文字列は、キャッシュ管理部511を介してキャッシュ43に登録される。
【0110】
以下、上述した図3及び図4を用いて、クライアント計算機20によって問い合わせが送信された場合のDBMS51の動作について具体的に説明する。ここでは、データベース60に格納される構造化文書は、図3に示す構造化文書100であるものとする。また、DBMS51に含まれるアクセス権テーブル42は、図4に示すデータ構造を有するものとする。なお、キャッシュ43には、キャッシュエントリは格納(登録)されていないものとする。
【0111】
まず、キャッシュ管理部511は、クライアント計算機20によって送信された問い合わせを受信する。
【0112】
ここでは、問い合わせ「/db/emp」が受信されたものとする。この問い合わせ「/db/emp」は、データベース60に格納されている構造化文書100が有する階層構造においてdbノードより下位の階層に位置するempノード及び当該empノードに対する子孫のノード(に該当する文字列)を取得する旨を指示する問い合わせである。換言すれば、問い合わせ「/db/emp」によって示される検索対象範囲には、dbノードより下位の階層に位置するempノード及び当該empノードに対する子孫のノードが含まれる。
【0113】
また、問い合わせ「/db/emp」には、当該問い合わせを送信したクライアント端末20を利用するユーザを識別するためのユーザIDとしてユーザID「db user1」が含まれているものとする。なお、ユーザID「db user1」によって識別されるユーザを第1のユーザと称する。
【0114】
次に、キャッシュ管理部511は、受信された問い合わせ「/db/emp」に基づいてキャッシュヒット判定処理を実行する。上記したようにキャッシュ43にはキャッシュエントリは格納されていないため、ここでは、キャッシュミスヒットと判定される。
【0115】
この場合、キャッシュ管理部511は、データベース検索処理部512に対して検索処理要求を行う。この際、キャッシュ管理部511は、受信された問い合わせ「/db/emp」をデータベース検索処理部512に渡す。
【0116】
データベース検索処理部512は、キャッシュ管理部511からの検索処理要求に応じてデータベース検索処理を実行する。
【0117】
データベース検索処理においては、問い合わせ「/db/emp」、当該問い合わせ「/db/emp」に含まれるユーザID「db user1」に対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報及びアクセス拒否設定情報に基づいて、データベース60に格納されている構造化文書100上の各ノードに対するアクセス可否判定処理が実行される。
【0118】
アクセス可否判定処理においては、キャッシュ部511によって受信された問い合わせ「/db/emp」によって示される構造化文書100上のempノード以下(検索対象範囲)の階層構造を辿ることにより当該アクセス可否判定処理の対象となるノードが抽出(特定)される。つまり、アクセス可否判定処理は、問い合わせ「/db/emp」によって示されるempノードを始点として構造化文書100の階層構造において深さ優先で各ノードに対して実行される。
【0119】
ここで、図4に示すアクセス権テーブル42によれば、問い合わせ「/db/emp」に含まれるユーザID「db user1」に対応付けて当該アクセス権テーブル42に保持されているアクセス許可設定情報は、アクセス許可設定情報「/db/emp/name」である。また、図4に示すアクセス権テーブル42によれば、問い合わせ「/db/emp」に含まれるユーザID「db user1」に対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報は、アクセス禁止設定情報「NIL」である。
【0120】
まず、データベース検索処理部512は、キャッシュ管理部511によって受信された問い合わせ「/db/emp」によって示される構造化文書100上のempノードを対象ノードとしてアクセス可否判定処理を実行する。
【0121】
データベース検索処理部512は、問い合わせ「/db/emp」に含まれるユーザID「db user1」に対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報によって示される禁止範囲に対象ノード(empノード)が含まれるか否かを判定する。
【0122】
ここで、ユーザID「db user1」に対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報「NIL」は、禁止範囲が設定されていないことを示す。
【0123】
したがって、データベース検索処理部512は、アクセス禁止設定情報「NIL」によって示される禁止範囲には対象ノードであるempノードが含まれないと判定する。
【0124】
次に、データベース検索処理部512は、問い合わせ「/db/emp」に含まれるユーザID「db user1」に対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報「/db/emp/name」によって示される許可範囲に対象ノードが含まれているかを判定する。
【0125】
ここで、アクセス許可設定情報「/db/emp/name」によって示される許可範囲には、パス「/db/emp/name」によって示されるnameノード、当該nameノードに対する子孫ノード、当該nameノードに対する祖先ノード(dbノード及びempノード)が含まれる。
【0126】
したがって、データベース検索処理部512は、アクセス許可設定情報「/db/emp/name」によって示される許可範囲には対象ノードであるempノードが含まれると判定する。
【0127】
この場合、データベース検索処理部512は、対象ノードであるempノードを示すパス「/db/emp」がアクセス許可リストに保持されていなければ、当該パス「/db/emp」をアクセス権管理単位としてアクセス許可リストに追加する。
【0128】
このように、問い合わせ「/db/emp」によって示されるempノードを対象ノードとしてアクセス可否判定処理が実行されると、構造化文書100上の当該empノードに対する子ノード(当該empノードの下位の階層に位置するノード)を対象ノードとしてアクセス可否判定処理が実行される。この場合、問い合わせ「/db/emp」によって示されるempノードに対する子ノードは、nameノード及びaddressノードであるので、これらを対象ノードとしてアクセス可否判定処理が実行される。
【0129】
ここで、構造化文書100上のnameノードを対象ノードとしてアクセス可否判定処理が実行された場合を想定する。この場合、構造化文書100上のnameノード(対象ノード)は、アクセス許可設定情報「/db/emp/name」によって示される許可範囲に含まれる。したがって、構造化文書100上のnameノードを示すパス「/db/emp/name」がアクセス許可リストに保持されていなければ、当該パス「/db/emp/name」がアクセス権管理単位としてアクセス許可リストに追加される。
【0130】
次に、構造化文書100上のnameノードに対する子ノードを対象ノードとしてアクセス可否判定処理が実行される。この場合、構造化文書100上のnameノードに対する子ノードはテキストノードである。構造化文書100上のテキストノード(nameノードに対する子ノード)は、アクセス許可設定情報「/db/emp/name」によって示される許可範囲に含まれる。したがって、構造化文書100上のテキストノードを示すパス「/db/emp/name/text()」がアクセス許可リストに保持されていなければ、当該パス「/db/emp/name/text()」がアクセス権管理単位としてアクセス許可リストに追加される。
【0131】
ここで、構造化文書100上のnameノードに対する子ノードであるテキストノードは当該構造化文書100が有する階層構造において子孫ノードを有さないため、当該テキストノードの上位のnameノードに処理が戻される。また、nameノードは、構造化文書100が有する階層構造においてテキストノード以外の子孫ノードを有さないため、更に上位のempノードに処理が戻される。empノードは、構造化文書100が有する階層構造において、アクセス可否判定処理が実行されたnameノード以外にaddressノードを有するため、当該addressノードを対象ノードとしてアクセス可否判定処理が実行される。
【0132】
この場合、構造化文書100上のaddressノードは、アクセス許可設定情報「/db/emp/name」によって示される許可範囲に含まれない。したがって、構造化文書100上のaddressノードを示すパス「/db/emp/address」がアクセス拒否リストに保持されていなければ、当該パス「/db/emp/address」がアクセス権管理単位としてアクセス拒否リストに追加される。
【0133】
なお、構造化文書100上のaddressノードへのアクセスは不能であるため、当該addressノードより下位の階層に位置するノードについてはアクセス可否判定処理は実行されない。
【0134】
上記したように構造化文書100上のaddressノードを対象ノードとしてアクセス可否判定処理が実行されると、当該addressノードの上位のempノードに処理が戻される。この場合、構造化文書100上のempノード以下の全てのノードに対してアクセス可否判定処理が実行されたため、アクセス可否判定処理は終了される。このように、構造化文書100上のempノード(問い合わせ「/db/emp」によって示されるempノード)以下の全てのノードに対してアクセス可否判定処理が実行されることで、アクセス許可リスト及びアクセス拒否リストが作成される。
【0135】
上記したように作成されたアクセス許可リストには、パス「/db/emp」、「/db/emp/name」及び「/db/emp/name/text()」がアクセス権管理単位として保持される。また、アクセス拒否リストには、パス「/db/emp/address」がアクセス権管理単位として保持される。
【0136】
なお、構造化文書100上に問い合わせ「/db/emp」によって示されるempノードが複数存在する場合には、それらの全てのついて同様の処理が繰り返される。
【0137】
ここで、データベース検索処理部512は、以上のアクセス可否判定処理結果に基づいて構造化文書100から検索結果文字列を抽出する。この場合、データベース検索処理部512は、アクセス可否判定処理においてアクセス可能と判定された構造化文書100上のノード、すなわちempノード、nameノード及びnameノード直下のテキストノードに該当する文字列(empノード、nameノード及びnameノード直下のテキストノードの内容)が検索結果文字列として抽出される。これにより、データベース検索処理部512によるデータベース検索処理は終了される。
【0138】
この場合、データベース検索処理部512によって抽出された検索結果文字列は、「<emp><name>name1</name></emp>」及び「<emp><name>name2</name></emp>」である。
【0139】
上記したように、データベース検索処理が終了されると、データベース検索処理部512は、作成されたアクセス許可リスト、アクセス拒否リスト及び構造化文書100から抽出された検索結果文字列をキャッシュ管理部511に渡す。
【0140】
キャッシュ管理部511は、問い合わせ「/db/emp」に対応付けて、データベース検索処理部511から渡されたアクセス許可リスト、アクセス拒否リスト及び検索結果文字列を含むキャッシュエントリをキャッシュ43に登録する。ここでは、上述した図5に示すキャッシュエントリ431がキャッシュ43に登録される。
【0141】
また、キャッシュ管理部511は、データベース検索処理部511から渡された検索結果文字列を、問い合わせ「/db/emp」に対する応答としてクライアント計算機20に送信する。この場合、キャッシュ管理部511は、問い合わせ「/db/emp」に含まれるユーザID「db user1」によって識別される第1のユーザによって利用されるクライアント計算機(問い合わせ「/db/emp」を送信したクライアント計算機)20に対して検索結果文字列を送信する。
【0142】
このように、問い合わせ「/db/emp」に対する応答がクライアント計算機20に返されると、DBMS51の処理は終了される。
【0143】
なお、上記したキャッシュ43に対するキャッシュエントリ431の登録に際して、例えばアクセス許可リスト及びアクセス拒否リストに複数のパス(アクセス権管理単位)が保持されている場合に当該アクセス許可リスト及びアクセス拒否リストから冗長な情報を必要に応じて除去する処理(以下、冗長情報除去処理と表記)が実行されても構わない。アクセス権テーブル42に保持されている例えばアクセス許可設定情報「/de/emp/name」によれば、パス「/db/emp/name」によって示されるnameノード、当該nameノードに対する子孫ノード、当該nameノードに対する祖先ノードであるdbノード及びempノードへのアクセスが可能である旨が示される。つまり、アクセス許可設定情報と同様に、例えばアクセス許可リストに保持されているパス「/db/emp/name」によって示されるnameノードへのアクセスが許可されたという情報は、パス「/db/emp」によって示されるempノードへのアクセスが許可されたという情報を含むことができる。したがって、冗長情報除去処理によれば、例えばアクセス許可リストに保持される複数のパスのうち、第1のパス(第1アクセス権管理単位)によって示される範囲が第2のパス(第2のアクセス権管理単位)によって示される範囲に含まれる場合、当該第1のパスが当該アクセス許可リストから除去される。具体的には、アクセス許可リストにパス「/db/emp」及びパス「/db/emp/name」が保持されている場合には、当該アクセス許可リストからパス「/db/emp」(冗長な情報)を除去(削除)することができる。なお、アクセス拒否リストについても同様に冗長な情報を除去することができる。
【0144】
例えば図5に示すキャッシュエントリ431に含まれるアクセス許可リストに対して冗長情報除去処理が実行されると、当該アクセス許可リストに保持されるパス(アクセス権管理単位)は、パス「/db/emp/name/text()」のみとなる。
【0145】
このようにアクセス許可リスト及びアクセス拒否リストに対して冗長情報除去処理が実行されることにより、当該アクセス許可リスト及びアクセス拒否リストに保持されるパスが削減されるため、キャッシュヒット判定処理における処理量を軽減することが可能となる。
【0146】
ここで、上記したようにキャッシュ43にキャッシュエントリ431が登録された後に、例えばユーザID「db user2」によって識別されるユーザによって利用されるクライアント計算機20から問い合わせ「/db/emp」が送信された場合を想定する。この場合、問い合わせ「/db/emp」には、ユーザID「db user2」が含まれる。なお、ユーザID「db user2」によって識別されるユーザを第2のユーザと称する。
【0147】
キャッシュ管理部511は、クライアント計算機20よって送信された問い合わせ「/db/emp」を受信する。
【0148】
キャッシュ管理部511は、受信された問い合わせ「/db/emp」及びキャッシュ43に格納されているキャッシュエントリ431に基づいてキャッシュヒット判定処理を実行する。ここでは、キャッシュエントリ431について説明するが、キャッシュ43に複数のキャッシュエントリが格納されている場合には、当該キャッシュエントリの各々についてキャッシュヒット判定処理が実行される。
【0149】
まず、キャッシュ管理部511は、受信された問い合わせ(文字列)「/db/emp」及びキャッシュエントリ431に含まれる問い合わせ(文字列)が一致するか否かを判定する。図5に示すように、キャッシュエントリ431に含まれる問い合わせは、問い合わせ「/db/emp」である。したがって、キャッシュ管理部511は、問い合わせ「/db/emp」が一致すると判定する。
【0150】
次に、キャッシュ管理部511は、受信された問い合わせ「/db/emp」に含まれるユーザID「db user2」によって識別される第2のユーザがキャッシュエントリ431に含まれるアクセス許可リストに保持されるパス(アクセス権管理単位)によって示されるノード(の範囲)の全てにアクセス可能(アクセス許可リストの全てにアクセス可能)であるか否かを判定する。キャッシュ管理部511は、問い合わせ「/db/emp」に含まれるユーザID「db user2」に対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報に基づいて判定処理を実行する。
【0151】
ここで、ユーザID「db user2」に対応付けてアクセス権テーブル42に保持されているアクセス許可設定情報は、アクセス許可設定情報「/db/emp」である。このアクセス許可設定情報「/db/emp」によれば、第2のユーザがアクセス可能な構造化文書100上のノードは、パス「/db/emp」によって示されるempノード、当該empノードに対する子孫ノード及び当該empノードに対する祖先ノード(dbノード)である。
【0152】
また、キャッシュエントリ431に含まれるアクセス許可リストに保持されるパス(アクセス権管理単位)によって示される構造化文書100上のノードは、パス「/db/emp」によって示されるempノード、パス「/db/emp/name」によって示されるnameノード及びパス「/db/emp/name/text()」によって示されるテキストノードである。
【0153】
この場合、キャッシュエントリ431に含まれるアクセス許可リストに保持されているパスによって示されるノードの全てが、アクセス許可設定情報「/db/emp」によって示されるアクセス可能なノード(第2のユーザがアクセス可能なノード)の範囲に含まれている。したがって、キャッシュ管理部511は、キャッシュエントリ431に含まれるアクセス許可リストの全てにアクセス可能であると判定する。
【0154】
次に、キャッシュ管理部511は、受信された問い合わせ「/db/emp」に含まれるユーザID「db user2」によって識別される第2のユーザがキャッシュエントリ431に含まれるアクセス拒否リストに保持されるパス(アクセス権管理単位)によって示されるノード(の範囲)の全てにアクセス不能(アクセス拒否リストの全てにアクセス可能)であるか否かを判定する。キャッシュ管理部511は、問い合わせ「/db/emp」に含まれるユーザID「db user2」に対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報に基づいて判定処理を実行する。
【0155】
ここで、ユーザID「db user2」に対応付けてアクセス権テーブル42に保持されているアクセス禁止設定情報は、アクセス禁止設定情報「/db/emp/address」である。このアクセス禁止設定情報「/db/emp/address」によれば、第2のユーザがアクセス可能な構造化文書100上のノードは、パス「/db/emp/address」によって示されるaddressノード及び当該addressノードに対する子孫ノードである。
【0156】
また、キャッシュエントリ431に含まれるアクセス拒否リストに保持されるパス(アクセス権管理単位)によって示される構造化文書100上のノードは、パス「/db/emp/address」によって示されるaddressノードである。
【0157】
この場合、キャッシュエントリ431に含まれるアクセス拒否リストに保持されているパスによって示されるノードの全てが、アクセス禁止設定情報「/db/emp/address」によって示されるアクセス不能なノード(第2のユーザがアクセス不能なノード)の範囲に含まれている。したがって、キャッシュ管理部511は、キャッシュエントリ431に含まれるアクセス拒否リストの全てにアクセス不能であると判定する。
【0158】
上記したようにキャッシュエントリ431に含まれるアクセス許可リストの全てにアクセス可能であると判定され、かつ、当該キャッシュエントリ431に含まれるアクセス拒否リストの全てにアクセス不能であると判定された場合、キャッシュ管理部511はキャッシュヒット、つまり、第2のユーザがキャッシュエントリ431を利用可能であると判定する。
【0159】
この場合、キャッシュ管理部511は、キャッシュエントリ431に含まれる検索結果文字列「<emp><name>name1</name></emp>」及び「<emp><name>name2</name> </emp>」を、問い合わせ「/db/emp」に対する応答として、ユーザID「db user2」によって識別される第2のユーザによって利用されるクライアント計算機20に対して送信する。
【0160】
このように、問い合わせ「/db/emp」に対する応答がクライアント計算機20に返されると、DBMS51の処理は終了される。
【0161】
上記したように、ユーザID「db user1」によって識別される第1のユーザのアクセス権(アクセス許可設定情報及びアクセス禁止設定情報)に基づいて登録されたキャッシュエントリ(ここでは、キャッシュエントリ431)であっても、ユーザID「db user2」によって識別される第2のユーザによって同一の問い合わせ(ここでは、問い合わせ「/db/emp」)が送信された場合にはキャッシュヒット判定がされる。したがって、第1のユーザとはアクセス権が異なる第2のユーザであっても、キャッシュエントリ431を利用することができる。つまり、異なるユーザであっても同一の問い合わせが送信された場合には、同一のキャッシュエントリ431を利用することができる。
【0162】
なお、詳細な説明は省略するが、例えばユーザID「db user3」によって識別されるユーザ(以下、第3のユーザと表記)によって利用されるクライアント端末20によって問い合わせ「/db/emp」が送信された場合には、図5に示すキャッシュエントリ432がキャッシュ43に登録される。この後に、ユーザID「db user2」によって識別される第2のユーザによって利用されるクライアント端末20によって問い合わせ「/db/emp」が送信された場合には、キャッシュヒット判定処理においてはキャッシュエントリ432に対してキャッシュミスヒットが判定される。
【0163】
このように、異なるユーザが同一の問い合わせを送信した場合であっても、当該ユーザに設定されているアクセス権(アクセス許可設定情報及びアクセス拒否設定情報)によってはキャッシュエントリの利用を拒否することができる。
【0164】
次に、図9のフローチャートを参照して、クライアント計算機20によって構造化文書の登録要求が送信された場合の文書検索装置50に含まれるDBMS51の処理手順について説明する。
【0165】
まず、DBMS51に含まれるキャッシュ管理部511は、クライアント計算機20によって送信された構造化文書の登録要求を受信する。これにより、キャッシュ管理部511は、受信された登録要求に付随する構造化文書(データベース60への登録の対象となる構造化文書)を受信する(ステップS31)。キャッシュ管理部511は、受信された構造化文書をデータベース登録処理部513に渡す。
【0166】
次に、データベース登録処理部513は、キャッシュ管理部511から渡された構造化文書をデータベース60に登録する(ステップS32)。
【0167】
ステップS32において構造化文書がデータベース60に登録されると、当該構造化文書に基づいてキャッシュ43に格納(登録)されているキャッシュエントリを無効化する処理(以下、キャッシュエントリ無効化処理と表記)が実行される(ステップS33)。
【0168】
図10のフローチャートを参照して、キャッシュエントリ無効化処理(図9に示すステップ33の処理)の処理手順について説明する。ここでは、図9に示すステップS32においてデータベース60に登録された構造化文書は、図3に示す構造化文書100であるものとして説明する。
【0169】
まず、データベース登録処理部513は、データベース60に登録された構造化文書100を解析する(ステップS41)。これにより、データベース登録処理部513は、構造化文書100のデータ構造(階層構造)を表す木構造(構造化文書100の木構造)を抽出する。
【0170】
データベース登録処理部513は、抽出された構造化文書100の木構造における祖先ノードを記憶しながら例えば深さ優先探索によってトラバースすることにより、構造化文書100上の各ノードを示すパス(構造化文書100に含まれるパス)の一覧を、当該木構造から抽出する(ステップS42)。
【0171】
ここで、図11は、データベース登録処理部513によって抽出された構造化文書100の木構造の一例を示す。図11に示す木構造200によれば、構造化文書100上のノードは、dbノード、empノード、nameノード、当該nameノードに対する子ノードであるテキストノード、addressノード及び当該addressノードに対する子ノードであるテキストノードである。したがって、この木構造200から抽出されるパスの一覧には、「/db」、「/db/emp」、「/db/emp/name」、「/db/emp/name/text()」、「/db/emp/address」及び「/db/emp/address/text()」が含まれる。なお、図11に示す木構造200において、「/db/emp」、「/db/emp/name」、「/db/emp/name/text()」、「/db/emp/address」及び「/db/emp/address/text()」のように同一のパスが複数抽出される場合には、当該同一のパスは1つのパスとして扱われる。
【0172】
デーベース登録処理部513は、抽出されたパスの一覧を含むキャッシュエントリ無効化要求をキャッシュ管理部511に送る。
【0173】
キャッシュ管理部511は、データベース登録処理部513からのキャッシュエントリ無効化要求を受け取ると、当該キャッシュエントリ無効化要求に含まれるパスの一覧とキャッシュ43に格納されているキャッシュエントリ(に含まれるアクセス許可リスト)の1つとを照合する(ステップS43)。
【0174】
キャッシュ管理部511は、キャッシュエントリ無効化要求に含まれるパスの一覧に含まれるパスの少なくとも1つがキャッシュエントリに含まれるアクセス許可リストに保持されているか否かを判定する(ステップS44)。この処理により、キャッシュ管理部511は、キャッシュエントリに含まれるアクセス許可リストに保持されているパス(アクセス権管理単位)によって示されるノード(の範囲)の一部がデータベース60に登録された構造化文書100(が有する階層構造)に含まれるか否かを判定する。
【0175】
パスの一覧に含まれるパスの少なくとも1つがキャッシュエントリに含まれるアクセス許可リストに保持されていると判定された場合(ステップS44のYES)、キャッシュ管理部511は、キャッシュ43に格納されている当該キャッシュエントリを無効化(つまり、キャッシュ43から削除)する(ステップS45)。
【0176】
ここで、例えば上述した図5に示すキャッシュエントリ431及び432がキャッシュ43に格納されている場合を想定する。
【0177】
この場合、キャッシュエントリ431に含まれるアクセス許可リストには、パスの一覧に含まれるパス「/db/emp」、「/db/emp/name」、「/db/emp/name/text()」が保持されている。このため、上記したように構造化文書100がデータベース60に新たに登録されたときは、キャッシュエントリ431はキャッシュエントリ無効化処理によって無効化される。
【0178】
また、キャッシュエントリ432に含まれるアクセス許可リストには、パスの一覧に含まれる「/db/emp」、「/db/emp/address」及び「/db/emp/address/text()」が保持されている。このため、構造化文書100がデータベース60に新たに登録されたときは、キャッシュエントリ432はキャッシュエントリ無効化処理によって無効化される。
【0179】
次に、キャッシュ管理部511は、キャッシュ43に格納されている全てのキャッシュエントリについて上記したステップS43以降の処理が実行されたか否かを判定する(ステップS46)。
【0180】
全てのキャッシュエントリについて処理が実行されていないと判定された場合(ステップS46のNO)、上記したステップS43に戻って処理が繰り返される。
【0181】
一方、全てのキャッシュエントリについて処理が実行されたと判定された場合(ステップS46のYES)、処理は終了される。
【0182】
また、上記したステップS44においてパスの一覧に含まれるパスがいずれもキャッシュエントリに含まれるアクセス許可リストに保持されていないと判定された場合、ステップS46の処理が実行される。つまり、この場合にはキャッシュエントリは無効化されない。
【0183】
上記したように、キャッシュエントリ無効化処理においては、データベース60に新たな構造化文書が登録されることにより、検索結果(文字列)が変更されるようなキャッシュエントリのみが無効化される。
【0184】
ところで、キャッシュ43に複数のキャッシュエントリが格納されている場合において、キャッシュ管理部511が当該複数のキャッシュエントリを統合する処理(以下、キャッシュエントリ統合処理と表記)を実行する構成であっても構わない。
【0185】
以下、図12のフローチャートを参照して、キャッシュ管理部511によるキャッシュエントリ統合処理の処理手順について説明する。キャッシュエントリ統合処理は、例えばキャッシュ43にキャッシュエントリが登録(追加)された場合に実行される。なお、キャッシュエントリ統合処理は、例えば定期的に実行されても構わない。
【0186】
まず、キャッシュ管理部511は、キャッシュ43に格納されている複数のキャッシュエントリのうち、問い合わせ(文字列)が同一のキャッシュエントリのペアを選択する(ステップS51)。キャッシュ管理部511によって選択されたキャッシュエントリのペアのうち、一方のキャッシュエントリを第1のキャッシュエントリ、他方のキャッシュエントリを第2のキャッシュエントリと称する。
【0187】
次に、キャッシュ管理部511は、選択された第1及び第2のキャッシュエントリに含まれる検索結果文字列が同一であるか否かを判定する(ステップS52)。
【0188】
つまり、ステップS51及びステップS52の処理によって、キャッシュエントリ統合処理の対象となるキャッシュエントリ(問い合わせ及び検索結果文字列が同一の第1及び第2のキャッシュエントリ)が選択される。
【0189】
第1及び第2のキャッシュエントリに含まれる検索結果文字列が同一であると判定された場合(ステップS52のYES)、キャッシュ管理部511は、第1のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されているパス(アクセス権管理単位)の和集合(以下、第1の和集合と表記)を算出する。
【0190】
また、キャッシュ管理部511は、第2のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されているパス(アクセス権管理単位)の和集合(以下、第2の和集合と表記)を算出する。
【0191】
キャッシュ管理部511は、算出された第1の和集合(に含まれるパス)と第2の和集合(に含まれるパス)とが同一であるか否かを判定する(ステップS53)。
【0192】
第1の和集合と第2の和集合とが同一であると判定された場合(ステップS53のYES)、キャッシュ管理部511は、選択された第1のキャッシュエントリに含まれるアクセス許可リスト(に保持されているパス)と第2のキャッシュエントリに含まれるアクセス許可リスト(に保持されているパス)との差集合を算出する(ステップS54)。
【0193】
次に、キャッシュ管理部は前述の差集合の要素数が1であるか否かを判定する(ステップS55)。
【0194】
差集合の要素数が1であると判定された場合(ステップS55のYES)、キャッシュ管理部511は、選択された第1及び第2のキャッシュエントリのうち、アクセス許可リストに保持されるパスが少ないキャッシュエントリ(ここでは、第2のキャッシュエントリとする)を無効化(つまり、キャッシュ43から削除)する(ステップS56)。
【0195】
次に、キャッシュ管理部511は、選択された第1及び第2のキャッシュエントリのうち、ステップS56において削除されていないキャッシュエントリ(ここでは、第1のキャッシュエントリ)に含まれるアクセス許可リストからステップS54において算出された差集合(に含まれるパス)を削除する(ステップS57)。
【0196】
上記したようにキャッシュエントリ統合処理が実行されることで、ステップS51において選択された第1及び第2のキャッシュエントリを1つのキャッシュエントリに統合することができる。
【0197】
なお、ステップS52において第1及び第2のキャッシュエントリに含まれる検索結果文字列が同一でないと判定された場合、処理は終了される。
【0198】
また、ステップS53において第1の和集合と第2の和集合とが同一でないと判定された場合、処理は終了される。
【0199】
また、ステップS55において差集合の要素数が1でないと判定された場合、処理は終了される。
【0200】
図12に示すキャッシュエントリ統合処理では、第1及び第2のキャッシュエントリに含まれるアクセス許可リスト(に保持されているパス)に基づいて第1及び第2のキャッシュエントリが統合される場合について説明したが、例えばアクセス拒否リスト(に保持されているパス)に基づいて統合される構成であってもよい。
【0201】
この場合、図12に示すステップS54においては、第1のキャッシュエントリに含まれるアクセス許可リストと第2のキャッシュエントリに含まれるアクセス拒否リストとの差集合が算出される。ステップS55においては、算出された差集合の要素数が1であるか否かが判定される。ステップS56においては、第1及び第2のキャッシュエントリのうち、アクセス拒否リストに保持されるパスが少ないキャッシュエントリが無効化される。更に、ステップS57においては、ステップS55において無効化されていないキャッシュエントリに含まれるアクセス拒否リストからステップS54において算出された差集合が削除される。
【0202】
上記したように本実施形態においては、例えば第1のユーザによって利用されるクライアント計算機20から問い合わせが送信された場合、当該問い合わせに応じて実行されるデータベース検索処理において第1のユーザに設定されているアクセス権に基づいてアクセス許可リスト及びアクセス拒否リストが作成され、当該問い合わせに対する検索結果文字列が構造化文書から抽出される。本実施形態においては、クライアント計算機20によって送信された問い合わせ、データベース検索処理において作成されたアクセス許可リスト、アクセス拒否リスト及び抽出された検索結果文字列がキャッシュ43に登録される。
【0203】
これにより、本実施形態においては、例えば第1のユーザとは異なる第2のユーザによって利用されるクライアント計算機20から上記した第1のユーザと同一の問い合わせが送信された場合、当該問い合わせに対応付けてキャッシュエントリに含まれているアクセス許可リストに保持されているパス(アクセス権管理単位)によって示されるノード(の範囲)の全てに第2のユーザがアクセス可能であり、かつ、アクセス拒否リストに保持されているパス(アクセス権管理単位)によって示されるノード(の範囲)の全てに第2のユーザがアクセス不能であれば、当該第2のユーザは当該キャッシュエントリを利用することができる。
【0204】
つまり、本実施形態においては、例えばキャッシュエントリをアクセス権が異なるユーザ毎に管理する場合と比較して、異なるユーザによる問い合わせに応じて登録されたキャッシュエントリであっても利用することができるためキャッシュヒット率を向上させることが可能となる。これにより、本実施形態においては、クライアント計算機からの問い合わせに対する応答性能を向上(応答時間を短縮)させることができる。
【0205】
また、本実施形態においては、異なるユーザ間であってもキャッシュエントリを共有することが可能となるため、キャッシュエントリをユーザ毎に管理する場合と比較して、よりキャッシュに必要な記憶領域の利用効率(主記憶使用効率)を向上させることが可能となる。
【0206】
また、本実施形態においては、上述した冗長情報除去処理により、キャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストから冗長な情報(パス)を除去することができる。これにより、キャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されているパスが簡潔になり、例えばキャッシュヒット判定処理に必要な処理が軽減されるため、文書検索装置50(に含まれるDBMS51)の負荷及び処理時間を低減することが可能となる。
【0207】
また、本実施形態においては、データベース60に新たに構造化文書が登録された場合に、キャッシュ43に格納されている上述したキャッシュエントリを無効化する処理が実行される。これにより、本実施形態においては、データベース60に新たに登録された構造化文書(構造化データ)に関連するキャッシュエントリのみを高精度に特定(つまり、無効化されるキャッシュエントリを限定)して無効化することが可能となる。これにより、本実施形態においては、データベース60に新たに構造化文書が登録された場合において必要最低限のキャッシュエントリのみを無効化することができるため、当該キャッシュエントリの無効化によるキャッシュヒット率の低下を抑制することが可能となる。
【0208】
また、本実施形態においては、上述したキャッシュエントリ統合処理によって、キャッシュ43に格納されている複数のキャッシュエントリを統合することができる。これにより、本実施形態においては、キャッシュ43に必要な記憶領域を削減することにより、記憶領域の有効利用を図ることができる。
【0209】
上述したように本実施形態においては文書検索装置50について説明したが、本実施形態は、例えばファイルシステムのファイル一覧検索のような問い合わせが一致していてもアクセス権設定によって検索結果に差が生じる可能性のある検索システムにおけるキャッシュ全般において適用可能であり、このようなキャッシュに適用された場合であってもキャッシュヒット率の向上及び主記憶使用効率の向上が期待できる。
【0210】
なお、本実施形態においては、新たに構造化文書がデータベース60に登録された場合にキャッシュエントリ無効化処理が実行されるものとして説明したが、当該キャッシュエントリ無効化処理は、例えばデータベース60に既に登録されている構造化文書が部分的に更新された場合に実行される構成であっても構わない。この場合には、部分的に更新された構造化文書に対して図10に示すキャッシュエントリ無効化処理が実行される。
【0211】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【符号の説明】
【0212】
10…コンピュータ、20…クライアント計算機、30…通信路、40…外部記憶装置、42…アクセス権テーブル、43…キャッシュ(キャッシュ格納手段)、50…文書検索装置(情報検索装置)、51…DBMS、60…データベース、511…キャッシュ管理部、512…データベース検索処理部、513…データベース登録処理部。
【特許請求の範囲】
【請求項1】
ユーザによって利用されるクライアント計算機及びデータを格納するデータベースと接続された情報検索装置において、
前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されているデータにおいて当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブルと、
前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信する問い合わせ受信手段と、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する作成手段と、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該データから抽出する抽出手段と、
前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを格納するキャッシュ格納手段と
を具備することを特徴とする情報検索装置。
【請求項2】
前記受信された問い合わせを含むキャッシュエントリが前記キャッシュ格納手段に格納されているかを判定する第1の判定手段と、
前記受信された問い合わせを含むキャッシュエントリが前記キャッシュ格納手段に格納されていると判定された場合、当該問い合わせに対応付けて当該キャッシュエントリに含まれているアクセス許可リストに保持されるアクセス権管理単位によって示される範囲が当該問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報によって示されるアクセス可能な範囲に含まれるかを判定する第2の判定手段と、
前記アクセス許可リストに含まれるアクセス権管理単位によって示される範囲が前記アクセス許可設定情報によって示されるアクセス可能な範囲に含まれると前記第2の判定手段によって判定された場合、前記受信された問い合わせに対応付けて前記キャッシュエントリに含まれる検索結果文字列を、当該問い合わせに含まれるユーザ識別情報によって識別されるユーザによって利用されるクライアント計算機に対して送信する送信手段と
を具備することを特徴とする請求項1記載の情報検索装置。
【請求項3】
第3の判定手段を更に具備し、
前記アクセス権テーブルは、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて前記データベースに格納されているデータにおいて当該ユーザがアクセス不能な範囲を示すアクセス禁止設定情報を更に保持し、
前記作成手段は、前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス禁止設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせに合致する範囲であって当該アクセス禁止設定情報によって示されるアクセス不能な範囲を示すアクセス権管理単位を保持するアクセス拒否リストを更に作成し、
前記キャッシュ格納手段に格納されているキャッシュエントリは、前記受信された問い合わせに対応付けて前記作成されたアクセス拒否リストを更に含み、
前記第3の判定手段は、前記アクセス許可設定情報によって示されるアクセス可能な範囲に含まれると前記第2の判定手段によって判定された場合、前記受信された問い合わせに対応付けて前記キャッシュエントリに含まれるアクセス拒否リストに保持されるアクセス権管理単位によって示される範囲が当該問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス禁止設定情報によって示されるアクセス不能な範囲に含まれるかを判定し、
前記送信手段は、前記アクセス禁止リストに保持されるアクセス権管理単位によって示される範囲が前記アクセス禁止設定情報によって示されるアクセス不能な範囲に含まれると前記第3の判定手段によって判定された場合、前記受信された問い合わせに対応付けて前記キャッシュエントリに含まれる検索結果文字列を、当該問い合わせに含まれるユーザ識別情報によって識別されるユーザによって利用されるクライアント計算機に対して送信する
ことを特徴とする請求項2記載の情報検索装置。
【請求項4】
選択手段、第4の判定手段、算出手段、第5の判定手段、無効化手段及び削除手段を更に具備し、
前記キャッシュ格納手段は、複数のキャッシュエントリを格納し、
前記選択手段は、前記キャッシュ格納手段に格納されている複数のキャッシュエントリのうち、当該キャッシュエントリに含まれる問い合わせ及び検索結果文字列が同一の第1及び第2のキャッシュエントリを選択し、
前記第4の判定手段は、前記選択された第1のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されるアクセス権管理単位の第1の和集合と、前記選択された第2のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されるアクセス権管理単位の第2の和集合とが同一であるかを判定し、
前記算出手段は、前記第1の和集合と第2の和集合とが同一であると判定された場合、前記選択された第1のキャッシュエントリに含まれるアクセス許可リストに保持されるアクセス権管理単位と前記選択された第2のキャッシュエントリに含まれるアクセス許可リストに保持されるアクセス権管理単位との差集合を算出し、
前記第5の判定手段は、前記算出された差集合の要素数が1であるかを判定し、
前記無効化手段は、前記算出された差集合の要素数が1であると判定された場合、前記選択された第2のキャッシュエントリを前記キャッシュ格納手段において無効化し、
前記削除手段は、前記算出された差集合を前記第1のキャッシュエントリに含まれるアクセス許可リストから削除する
ことを特徴とする請求項3記載の情報検索装置。
【請求項5】
前記クライアント計算機によって送信された階層構造を有するデータを受信するデータ受信手段と、
前記データ受信手段によって受信されたデータを前記データベースに登録する登録手段と、
前記データ受信手段によって受信されたデータを解析する解析手段と、
前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス許可リストに保持されるアクセス権管理単位によって示される範囲の一部が前記データ受信手段によって受信されたデータに含まれるかを、前記解析手段による解析結果に基づいて判定する判定手段と、
前記アクセス許可リストに保持されるアクセス権管理単位によって示される範囲が前記データに含まれると判定された場合、当該アクセス許可リストを含むキャッシュエントリを前記キャッシュ格納手段において無効化する無効化手段と
を更に具備することを特徴とする請求項1記載の情報検索装置。
【請求項6】
除去手段を更に具備し、
前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス許可リストは、複数のアクセス権管理単位を保持し、
前記除去手段は、前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス許可リストに保持されている複数のアクセス権管理単位のうち、第1のアクセス権管理単位によって示される範囲が第2のアクセス権管理単位によって示される範囲に含まれる場合、当該第1のアクセス権管理単位を当該アクセス許可リストから除去する
ことを特徴とする請求項1記載の情報検索装置。
【請求項7】
除去手段を更に具備し、
前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス拒否リストは、複数のアクセス権管理単位を保持し、
前記除去手段は、前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス拒否リストに保持されている複数のアクセス権管理単位のうち、第1のアクセス権管理単位によって示される範囲が第2のアクセス権管理単位によって示される範囲に含まれる場合、当該第1のアクセス権管理単位を当該アクセス拒否リストから除去する
ことを特徴とする請求項3記載の情報検索装置。
【請求項8】
ユーザによって利用されるクライアント計算機及び階層構造を有するデータを格納するデータベースと接続され、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されているデータにおいて当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブル及びキャッシュ格納手段を備える情報検索装置が実行する情報検索方法であって、
前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該データから抽出するステップと、
前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを前記キャッシュ格納手段に登録するステップと
を具備することを特徴とする情報検索方法。
【請求項9】
ユーザによって利用されるクライアント計算機及びデータを格納するデータベースと接続され、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されているデータにおいて当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブル及びキャッシュ格納手段を備える情報検索装置のコンピュータによって実行されるプログラムであって、
前記コンピュータに、
前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該データから抽出するステップと、
前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを前記キャッシュ格納手段に登録するステップと
を実行させるためのプログラム。
【請求項1】
ユーザによって利用されるクライアント計算機及びデータを格納するデータベースと接続された情報検索装置において、
前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されているデータにおいて当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブルと、
前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信する問い合わせ受信手段と、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する作成手段と、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該データから抽出する抽出手段と、
前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを格納するキャッシュ格納手段と
を具備することを特徴とする情報検索装置。
【請求項2】
前記受信された問い合わせを含むキャッシュエントリが前記キャッシュ格納手段に格納されているかを判定する第1の判定手段と、
前記受信された問い合わせを含むキャッシュエントリが前記キャッシュ格納手段に格納されていると判定された場合、当該問い合わせに対応付けて当該キャッシュエントリに含まれているアクセス許可リストに保持されるアクセス権管理単位によって示される範囲が当該問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報によって示されるアクセス可能な範囲に含まれるかを判定する第2の判定手段と、
前記アクセス許可リストに含まれるアクセス権管理単位によって示される範囲が前記アクセス許可設定情報によって示されるアクセス可能な範囲に含まれると前記第2の判定手段によって判定された場合、前記受信された問い合わせに対応付けて前記キャッシュエントリに含まれる検索結果文字列を、当該問い合わせに含まれるユーザ識別情報によって識別されるユーザによって利用されるクライアント計算機に対して送信する送信手段と
を具備することを特徴とする請求項1記載の情報検索装置。
【請求項3】
第3の判定手段を更に具備し、
前記アクセス権テーブルは、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて前記データベースに格納されているデータにおいて当該ユーザがアクセス不能な範囲を示すアクセス禁止設定情報を更に保持し、
前記作成手段は、前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス禁止設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせに合致する範囲であって当該アクセス禁止設定情報によって示されるアクセス不能な範囲を示すアクセス権管理単位を保持するアクセス拒否リストを更に作成し、
前記キャッシュ格納手段に格納されているキャッシュエントリは、前記受信された問い合わせに対応付けて前記作成されたアクセス拒否リストを更に含み、
前記第3の判定手段は、前記アクセス許可設定情報によって示されるアクセス可能な範囲に含まれると前記第2の判定手段によって判定された場合、前記受信された問い合わせに対応付けて前記キャッシュエントリに含まれるアクセス拒否リストに保持されるアクセス権管理単位によって示される範囲が当該問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス禁止設定情報によって示されるアクセス不能な範囲に含まれるかを判定し、
前記送信手段は、前記アクセス禁止リストに保持されるアクセス権管理単位によって示される範囲が前記アクセス禁止設定情報によって示されるアクセス不能な範囲に含まれると前記第3の判定手段によって判定された場合、前記受信された問い合わせに対応付けて前記キャッシュエントリに含まれる検索結果文字列を、当該問い合わせに含まれるユーザ識別情報によって識別されるユーザによって利用されるクライアント計算機に対して送信する
ことを特徴とする請求項2記載の情報検索装置。
【請求項4】
選択手段、第4の判定手段、算出手段、第5の判定手段、無効化手段及び削除手段を更に具備し、
前記キャッシュ格納手段は、複数のキャッシュエントリを格納し、
前記選択手段は、前記キャッシュ格納手段に格納されている複数のキャッシュエントリのうち、当該キャッシュエントリに含まれる問い合わせ及び検索結果文字列が同一の第1及び第2のキャッシュエントリを選択し、
前記第4の判定手段は、前記選択された第1のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されるアクセス権管理単位の第1の和集合と、前記選択された第2のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されるアクセス権管理単位の第2の和集合とが同一であるかを判定し、
前記算出手段は、前記第1の和集合と第2の和集合とが同一であると判定された場合、前記選択された第1のキャッシュエントリに含まれるアクセス許可リストに保持されるアクセス権管理単位と前記選択された第2のキャッシュエントリに含まれるアクセス許可リストに保持されるアクセス権管理単位との差集合を算出し、
前記第5の判定手段は、前記算出された差集合の要素数が1であるかを判定し、
前記無効化手段は、前記算出された差集合の要素数が1であると判定された場合、前記選択された第2のキャッシュエントリを前記キャッシュ格納手段において無効化し、
前記削除手段は、前記算出された差集合を前記第1のキャッシュエントリに含まれるアクセス許可リストから削除する
ことを特徴とする請求項3記載の情報検索装置。
【請求項5】
前記クライアント計算機によって送信された階層構造を有するデータを受信するデータ受信手段と、
前記データ受信手段によって受信されたデータを前記データベースに登録する登録手段と、
前記データ受信手段によって受信されたデータを解析する解析手段と、
前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス許可リストに保持されるアクセス権管理単位によって示される範囲の一部が前記データ受信手段によって受信されたデータに含まれるかを、前記解析手段による解析結果に基づいて判定する判定手段と、
前記アクセス許可リストに保持されるアクセス権管理単位によって示される範囲が前記データに含まれると判定された場合、当該アクセス許可リストを含むキャッシュエントリを前記キャッシュ格納手段において無効化する無効化手段と
を更に具備することを特徴とする請求項1記載の情報検索装置。
【請求項6】
除去手段を更に具備し、
前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス許可リストは、複数のアクセス権管理単位を保持し、
前記除去手段は、前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス許可リストに保持されている複数のアクセス権管理単位のうち、第1のアクセス権管理単位によって示される範囲が第2のアクセス権管理単位によって示される範囲に含まれる場合、当該第1のアクセス権管理単位を当該アクセス許可リストから除去する
ことを特徴とする請求項1記載の情報検索装置。
【請求項7】
除去手段を更に具備し、
前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス拒否リストは、複数のアクセス権管理単位を保持し、
前記除去手段は、前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス拒否リストに保持されている複数のアクセス権管理単位のうち、第1のアクセス権管理単位によって示される範囲が第2のアクセス権管理単位によって示される範囲に含まれる場合、当該第1のアクセス権管理単位を当該アクセス拒否リストから除去する
ことを特徴とする請求項3記載の情報検索装置。
【請求項8】
ユーザによって利用されるクライアント計算機及び階層構造を有するデータを格納するデータベースと接続され、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されているデータにおいて当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブル及びキャッシュ格納手段を備える情報検索装置が実行する情報検索方法であって、
前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該データから抽出するステップと、
前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを前記キャッシュ格納手段に登録するステップと
を具備することを特徴とする情報検索方法。
【請求項9】
ユーザによって利用されるクライアント計算機及びデータを格納するデータベースと接続され、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されているデータにおいて当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブル及びキャッシュ格納手段を備える情報検索装置のコンピュータによって実行されるプログラムであって、
前記コンピュータに、
前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該データから抽出するステップと、
前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを前記キャッシュ格納手段に登録するステップと
を実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2010−217974(P2010−217974A)
【公開日】平成22年9月30日(2010.9.30)
【国際特許分類】
【出願番号】特願2009−60874(P2009−60874)
【出願日】平成21年3月13日(2009.3.13)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】
【公開日】平成22年9月30日(2010.9.30)
【国際特許分類】
【出願日】平成21年3月13日(2009.3.13)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】
[ Back to top ]