(57)【特許請求の範囲】
【請求項１】
データベースを検索するための情報処理装置であって、
グループのメンバである１または複数のユーザを前記グループごとに示す第１のキャッシュデータ、およびユーザをメンバとする１または複数のグループを前記ユーザごとに示す第２のキャッシュデータのいずれかを選択するためのキャッシュデータ選択部と、
前記データベースの蓄積情報に基づいて、前記キャッシュデータ選択部によって選択された前記第１のキャッシュデータまたは前記第２のキャッシュデータを作成するためのキャッシュ作成処理部と、
前記データベースの蓄積情報に基づいて、各グループと前記グループのメンバであるユーザの数との対応関係を示す第１の対応情報、または各ユーザと前記ユーザをメンバとするグループの数との対応関係を示す第２の対応情報を作成するための対応情報作成部と、
前記第１の対応情報に基づいて、ユーザ数で区分けした前記グループの度数分布を示す第１の分布情報を作成するか、または前記第２の対応情報に基づいて、グループ数で区分けした前記ユーザの度数分布を示す第２の分布情報を作成するための分布情報作成部と、
を備え、
前記キャッシュ作成処理部は、前記データベースの蓄積情報ならびに前記第１の対応情報および前記第１の分布情報に基づいて前記第１のキャッシュデータを作成するか、または前記データベースの蓄積情報ならびに前記第２の対応情報および前記第２の分布情報に基づいて前記第２のキャッシュデータを作成する、情報処理装置。
【請求項２】
前記キャッシュデータ選択部は、過去に実行された前記検索の内容に基づいて前記第１のキャッシュデータおよび前記第２のキャッシュデータのいずれかを選択する、請求項１に記載の情報処理装置。
【請求項３】
前記キャッシュ作成処理部は、前記キャッシュデータをビットマップデータで作成する代わりに、前記第１の対応情報および前記第１の分布情報、または前記第２の対応情報および前記第２の分布情報に基づいて、前記キャッシュデータの一部または全部を配列データで作成する、請求項１に記載の情報処理装置。
【請求項４】
前記キャッシュ作成処理部は、前記第１の分布情報において、ユーザ数の少ない区分に属する前記グループの情報を前記第１のキャッシュデータにおいて配列データで作成するか、または前記第２の分布情報において、グループ数の少ない区分に属する前記ユーザの情報を前記第２のキャッシュデータにおいて配列データで作成する、請求項３に記載の情報処理装置。
【請求項５】
前記情報処理装置は、さらに、
過去に実行された前記検索の回数を検索の種類ごとに示す問い合わせ統計情報を記憶するための記憶部と、
指定された前記検索のフィルタ条件に基づいて前記検索の種類を判別し、前記問い合わせ統計情報を更新するための問い合わせ判断部とを備え、
前記キャッシュデータ選択部は、前記問い合わせ統計情報に基づいて前記第１のキャッシュデータおよび前記第２のキャッシュデータのいずれかを選択する、請求項２に記載の情報処理装置。
【請求項６】
データベースを検索するための情報処理装置における検索情報作成方法であって、
グループのメンバである１または複数のユーザを前記グループごとに示す第１のキャッシュデータ、およびユーザをメンバとする１または複数のグループを前記ユーザごとに示す第２のキャッシュデータのいずれかを選択するステップと、
前記データベースの蓄積情報に基づいて、選択した前記第１のキャッシュデータまたは前記第２のキャッシュデータを作成するステップと、
前記データベースの蓄積情報に基づいて、各グループと前記グループのメンバであるユーザの数との対応関係を示す第１の対応情報、または各ユーザと前記ユーザをメンバとするグループの数との対応関係を示す第２の対応情報を作成するステップと、
前記第１の対応情報に基づいて、ユーザ数で区分けした前記グループの度数分布を示す第１の分布情報を作成するか、または前記第２の対応情報に基づいて、グループ数で区分けした前記ユーザの度数分布を示す第２の分布情報を作成するステップと、
を含み、
前記キャッシュデータを作成するステップにおいては、前記データベースの蓄積情報ならびに前記第１の対応情報および前記第１の分布情報に基づいて前記第１のキャッシュデータを作成するか、または前記データベースの蓄積情報ならびに前記第２の対応情報および前記第２の分布情報に基づいて前記第２のキャッシュデータを作成する、検索情報作成方法。
【請求項７】
データベースを検索するための情報処理装置における検索情報作成プログラムであって、コンピュータに、
グループのメンバである１または複数のユーザを前記グループごとに示す第１のキャッシュデータ、およびユーザをメンバとする１または複数のグループを前記ユーザごとに示す第２のキャッシュデータのいずれかを選択するステップと、
前記データベースの蓄積情報に基づいて、選択した前記第１のキャッシュデータまたは前記第２のキャッシュデータを作成するステップと、
前記データベースの蓄積情報に基づいて、各グループと前記グループのメンバであるユーザの数との対応関係を示す第１の対応情報、または各ユーザと前記ユーザをメンバとするグループの数との対応関係を示す第２の対応情報を作成するステップと、
前記第１の対応情報に基づいて、ユーザ数で区分けした前記グループの度数分布を示す第１の分布情報を作成するか、または前記第２の対応情報に基づいて、グループ数で区分けした前記ユーザの度数分布を示す第２の分布情報を作成するステップと、
を実行させ、
前記キャッシュデータを作成するステップにおいては、前記データベースの蓄積情報ならびに前記第１の対応情報および前記第１の分布情報に基づいて前記第１のキャッシュデータを作成するか、または前記データベースの蓄積情報ならびに前記第２の対応情報および前記第２の分布情報に基づいて前記第２のキャッシュデータを作成する、検索情報作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、検索情報作成方法、および検索情報作成プログラムに関し、特に、キャッシュデータを作成する情報処理装置、検索情報作成方法、および検索情報作成プログラムに関する。
【背景技術】
【０００２】
ダイナミックグループは、当該グループのメンバに所属するユーザをＬＤＡＰ（Lightweight Directory Access Protocol）ＵＲＬにより動的に指定できるグループである。しかしながら、ダイナミックグループ数およびユーザ数が多い環境では、当該グループのメンバ情報を取得する処理において、ＬＤＡＰデータベースに対して多数の検索処理が発生し、サーバのパフォーマンスが低下する問題がある。
【０００３】
データベースに対するアクセスを最適化させる方法の一例として、たとえば、特開２００３−８４８１８号公報（特許文献１）には、以下のような技術が開示されている。すなわち、記憶装置は、データベース管理システムが稼動している計算機との接続手段と、少なくとも１つ以上のデータを記憶する物理記憶手段と、上記データベース管理システムにおけるスキーマにより定義される表・索引・ログを含むデータ構造に関する情報と、上記データベース管理システムが管理するデータベースデータを上記スキーマにより定義されるデータ構造ごとに分類した上記物理記憶手段における記録位置に関する情報と、上記データベース管理システムが実行する問い合わせ処理の処理実行計画を含む上記データベース管理システムにより管理されるデータベースに関する情報を取得する情報取得手段と、上記物理記憶手段に対するアクセス順を決定する物理記憶制御手段とを備える。上記物理記憶制御手段が上記物理記憶手段に対するアクセス順を決定する際に上記情報取得手段により取得した情報を利用する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４１６２１８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のようなパフォーマンスの低下を解決する方法として、ビットマップデータを用いる方法が考えられる。すなわち、全ユーザ分のビットを用意し、ダイナミックグループごとに、当該グループのメンバであるユーザオブジェクトのビットを１で表し、メンバで無いユーザオブジェクトのビットを０で表したビットマップデータを作成する。そして、このビットマップデータをメモリにキャッシュすることで、検索の高速化を図る。
【０００６】
しかしながら、上記のようなビットマップデータを用いる方法では、ユーザを指定し、当該ユーザが所属するダイナミックグループを参照する、といった検索の場合、ダイナミックグループごとに当該ユーザの所属の有無をチェックしなければならず、検索処理が遅くなってしまう。
【０００７】
そして、特許文献１には、このような問題点を解決するための構成は開示されていない。
【０００８】
この発明は、上述の課題を解決するためになされたもので、その目的は、検索処理の高速化を図ることが可能な情報処理装置、検索情報作成方法、および検索情報作成プログラムを提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、この発明のある局面に係わる情報処理装置は、データベースを検索するための情報処理装置であって、グループのメンバである１または複数のユーザを上記グループごとに示す第１のキャッシュデータ、およびユーザをメンバとする１または複数のグループを上記ユーザごとに示す第２のキャッシュデータのいずれかを選択するためのキャッシュデータ選択部と、上記データベースの蓄積情報に基づいて、上記キャッシュデータ選択部によって選択された上記第１のキャッシュデータまたは上記第２のキャッシュデータを作成するためのキャッシュ作成処理部とを備える。
【００１０】
上記課題を解決するために、この発明のある局面に係わる検索情報作成方法は、データベースを検索するための情報処理装置における検索情報作成方法であって、グループのメンバである１または複数のユーザを上記グループごとに示す第１のキャッシュデータ、およびユーザをメンバとする１または複数のグループを上記ユーザごとに示す第２のキャッシュデータのいずれかを選択するステップと、上記データベースの蓄積情報に基づいて、選択した上記第１のキャッシュデータまたは上記第２のキャッシュデータを作成するステップとを含む。
【００１１】
上記課題を解決するために、この発明のある局面に係わる検索情報作成プログラムは、データベースを検索するための情報処理装置における検索情報作成プログラムであって、コンピュータに、グループのメンバである１または複数のユーザを上記グループごとに示す第１のキャッシュデータ、およびユーザをメンバとする１または複数のグループを上記ユーザごとに示す第２のキャッシュデータのいずれかを選択するステップと、上記データベースの蓄積情報に基づいて、選択した上記第１のキャッシュデータまたは上記第２のキャッシュデータを作成するステップとを実行させるためのプログラムである。
【発明の効果】
【００１２】
本発明によれば、検索処理の高速化を図ることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係る情報処理装置の概略構成図である。
【図２】本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。
【図３】本発明の実施の形態に係る情報処理装置における分布情報管理部の構成を示すブロック図である。
【図４】問い合わせ統計情報の一例を示す図である。
【図５】本発明の実施の形態に係る情報処理装置における問い合わせ判断部の動作手順を示すフローチャートである。
【図６】本発明の実施の形態に係る情報処理装置におけるソート情報作成部の動作手順を示すフローチャートである。
【図７】（ａ）および（ｂ）は、ソート情報の一例を示す図である。
【図８】本発明の実施の形態に係る情報処理装置における分布情報管理部の動作手順を示すフローチャートである。
【図９】（ａ）および（ｂ）は、分布情報の一例を示す図である。
【図１０】本発明の実施の形態に係る情報処理装置におけるキャッシュ作成処理部の動作手順を示すフローチャートである。
【図１１】本発明の実施の形態に係る情報処理装置におけるキャッシュ作成処理部が作成するビットマップデータの一例を示す図である。
【図１２】本発明の実施の形態に係る情報処理装置が検索処理で用いるビットマップデータの一例を示す図である。
【図１３】本発明の実施の形態に係る情報処理装置におけるデータ最適化処理部の動作手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００１５】
本発明の実施の形態に係る情報処理装置は、典型的には、汎用的なアーキテクチャを有するコンピュータを基本構造としており、予めインストールされたプログラムを実行することで、後述するような各種機能を提供する。一般的に、このようなプログラムは、フレキシブルディスク（Flexible Disk）およびＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの記録媒体に格納されて、あるいはネットワークなどを介して流通する。
【００１６】
本発明の実施の形態に係るプログラムは、ＯＳ等の他のプログラムの一部に組み込まれて提供されるものであってもよい。この場合でも、本発明の実施の形態に係るプログラム自体は、上記のような組み込み先の他のプログラムが有するモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本発明の実施の形態に係るプログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
【００１７】
なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００１８】
［装置構成］
図１は、本発明の実施の形態に係る情報処理装置の概略構成図である。
【００１９】
図１を参照して、情報処理装置２０１は、演算処理部であるＣＰＵ（Central Processing Unit）１０１と、メインメモリ１０２と、ハードディスク１０３と、入力インタフェース１０４と、表示コントローラ１０５と、データリーダ／ライタ１０６と、通信インタフェース１０７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【００２０】
ＣＰＵ１０１は、ハードディスク１０３に格納されたプログラム（コード）をメインメモリ１０２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１０２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置であり、ハードディスク１０３から読み出されたプログラムに加えて、各種の演算処理結果を示すデータなどを保持する。また、ハードディスク１０３は不揮発性の磁気記憶装置であり、ＣＰＵ１０１で実行されるプログラムに加えて、各種設定値などが格納される。このハードディスク１０３にインストールされるプログラムは、後述するように、記録媒体１１１に格納された状態で流通する。なお、ハードディスク１０３に加えて、あるいはハードディスク１０３に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【００２１】
入力インタフェース１０４は、ＣＰＵ１０１とキーボード１０８、マウス１０９および図示しないタッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インタフェース１０４は、ユーザが入力部を操作することで与えられる操作指令などの外部からの入力を受付ける。
【００２２】
表示コントローラ１０５は、表示部の典型例であるディスプレイ１１０と接続され、ディスプレイ１１０での表示を制御する。すなわち、表示コントローラ１０５は、ＣＰＵ１０１による画像処理の結果などをユーザに対して表示する。ディスプレイ１１０は、たとえばＬＣＤ（Liquid Crystal Display）またはＣＲＴ（Cathode Ray Tube）である。
【００２３】
データリーダ／ライタ１０６は、ＣＰＵ１０１と記録媒体１１１の間のデータ伝送を仲介する。すなわち、記録媒体１１１は、情報処理装置２０１で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１０６は、この記録媒体１１１からプログラムを読み出す。また、データリーダ／ライタ１０６は、ＣＰＵ１０１の内部指令に応答して、情報処理装置２０１における処理結果などを記録媒体１１１へ書き込む。なお、記録媒体１１１は、たとえば、ＣＦ（Compact Flash）およびＳＤ（Secure Digital）などの汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）などの磁気記憶媒体、またはＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体である。
【００２４】
通信インタフェース１０７は、ＣＰＵ１０１と他のパーソナルコンピュータおよびサーバ装置などの間のデータ伝送を仲介する。通信インタフェース１０７は、典型的には、イーサネット（登録商標）またはＵＳＢ（Universal Serial Bus）の通信機能を有する。なお、記録媒体１１１に格納されたプログラムを情報処理装置２０１にインストールする形態に代えて、通信インタフェース１０７を介して配信サーバなどからダウンロードしたプログラムを情報処理装置２０１にインストールしてもよい。
【００２５】
また、情報処理装置２０１には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
【００２６】
［制御構造］
次に、情報処理装置２０１における検索機能を提供するための制御構造について説明する。
【００２７】
図２は、本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。図２に示す情報処理装置２０１における各ブロックは、ハードディスク１０３に格納されたプログラム（コード）などをメインメモリ１０２に展開して、ＣＰＵ１０１に実行させることで提供される。なお、図２に示す情報処理装置２０１の制御構造の一部もしくは全部を専用ハードウェアおよび／または配線回路によって実現してもよい。
【００２８】
図２を参照して、情報処理装置２０１は、たとえばＬＤＡＰサーバであり、その制御構造として、ＬＤＡＰプロトコル処理部１と、ＬＤＡＰ検索処理部２と、問い合わせ判断部３と、分布情報管理部５と、データ最適化処理部６と、キャッシュ作成処理部（キャッシュデータ選択部）７と、検索結果キャッシュ取得処理部８とを備える。また、情報処理装置２０１は、ＬＤＡＰデータベース４と、キャッシュ９とを備える。ＬＤＡＰデータベース４と、キャッシュ９とは、たとえば図１に示すハードディスク１０３またはメインメモリ１０２に格納される。
【００２９】
図３は、本発明の実施の形態に係る情報処理装置における分布情報管理部の構成を示すブロック図である。
【００３０】
図３を参照して、分布情報管理部５は、ソート情報作成部（対応情報作成部）５１と、分布情報作成部５２とを含む。
【００３１】
図２および図３を参照して、ＬＤＡＰプロトコル処理部１は、クライアントからＬＤＡＰ操作要求を受け取り、受け取ったＬＤＡＰ操作要求の示す操作を解析する。
【００３２】
ＬＤＡＰ検索処理部２は、クライアントからの操作が検索であった場合に動作し、問い合わせ判断部３および検索結果キャッシュ取得処理部８を呼び出す。
【００３３】
問い合わせ判断部３は、ＬＤＡＰの検索処理が発生すると、当該検索のフィルタ条件に基づいて問い合わせのパターンを判断し、問い合わせ統計情報３２を更新する。
【００３４】
キャッシュ作成処理部７は、一定時間間隔で実行され、分布情報管理部５を呼び出す。
【００３５】
分布情報管理部５は、内部のソート情報管理部５１を呼び出す。ソート情報管理部５１は、ＬＤＡＰデータベース４から全エントリ情報を参照し、ソート情報５３を作成してたとえばメインメモリ１０２に格納する。
【００３６】
分布情報管理部５における分布情報作成部５２は、ソート情報５３を参照し、分布情報５４を作成してたとえばメインメモリ１０２に格納する。
【００３７】
キャッシュ作成処理部７は、問い合わせ統計情報３２を参照し、また、データ最適化処理部６を呼び出し、キャッシュ９を作成する。なお、キャッシュ作成処理部７は、キャッシュの定期リフレッシュを行なう際には、分布情報管理部５の呼び出しも行なう。
【００３８】
検索結果キャッシュ取得処理部８は、キャッシュ９を参照し、当該検索のフィルタ条件にマッチする情報を取得し、ＬＤＡＰ検索処理部２へ返却する。
【００３９】
ＬＤＡＰ検索処理部２は、返却された検索結果の情報をＬＤＡＰプロトコル処理部１へ返却する。
【００４０】
［動作］
次に、本発明の実施の形態に係る情報処理装置の動作について図面を用いて説明する。本発明の実施の形態では、情報処理装置２０１を動作させることによって、本発明の実施の形態に係る検索情報作成方法が実施される。よって、本発明の実施の形態に係る検索情報作成方法の説明は、以下の情報処理装置２０１の動作説明に代える。なお、以下の説明においては、適宜図２を参照する。
【００４１】
まず、検索処理時の動作について説明する。
【００４２】
ＬＤＡＰ検索処理部２から呼び出された問い合わせ判断部３は、ＬＤＡＰの検索処理に対して、検索のフィルタ条件に基づいて、問い合わせの種類を判別する。
【００４３】
問い合わせ判断部３は、問い合わせ統計情報３２を保持している。問い合わせ統計情報３２は、問い合わせの種類および当該問い合わせの数がマッピングされたものである。
【００４４】
図４は、問い合わせ統計情報の一例を示す図である。
【００４５】
図４を参照して、問い合わせ統計情報３２において、ダイナミックグループを指定し、そのメンバ情報を取得する問い合わせの数が８５であり、ユーザを指定し、そのユーザをメンバとするダイナミックグループを取得する問い合わせの数が１５である。
【００４６】
図５は、本発明の実施の形態に係る情報処理装置における問い合わせ判断部の動作手順を示すフローチャートである。
【００４７】
図５を参照して、問い合わせ判断部３は、問い合わせの種類を判別すると、判別した問い合わせの種類に対応する問い合わせ数に１を加える（ステップＳ１およびＳ２）。
【００４８】
次に、ＬＤＡＰ検索処理部２は、検索結果キャッシュ取得処理部８を呼び出す。呼び出された検索結果キャッシュ取得処理部８は、キャッシュ９を参照し、検索のフィルタ条件を満たす情報を取得する。
【００４９】
検索結果キャッシュ取得処理部８によって取得された情報は、ＬＤＡＰ検索処理部２からＬＤＡＰプロトコル処理部１へ返却され、検索結果としてＬＤＡＰ利用者に返却される。
【００５０】
次に、キャッシュの定期リフレッシュ時の動作について説明する。
【００５１】
図６は、本発明の実施の形態に係る情報処理装置におけるソート情報作成部の動作手順を示すフローチャートである。
【００５２】
図６を参照して、キャッシュ作成処理部７は、設定されたリフレッシュ間隔で動作する。この動作において、キャッシュ作成処理部７は、まず、分布情報管理部５を呼び出す。
【００５３】
呼び出された分布情報管理部５において、ソート情報作成部５１は、まず、ＬＤＡＰデータベース４のエントリ情報を参照する（ステップＳ１１）。
【００５４】
次に、ソート情報作成部５１は、各ダイナミックグループのメンバに属するユーザ数を計算し（ステップＳ１２）、ダイナミックグループと、当該ダイナミックグループのメンバに属するユーザの数との対応関係を示すダイナミックグループ―ユーザ数情報を作成し、たとえばメインメモリ１０２に格納する（ステップＳ１３）。
【００５５】
同様に、ソート情報作成部５１は、各ユーザについて、当該ユーザをメンバとするダイナミックグループの数を計算し（ステップＳ１４）、ユーザと、当該ユーザをメンバとするダイナミックグループの数との対応関係を示すユーザ―ダイナミックグループ数情報を作成し、たとえばメインメモリ１０２に格納する（ステップＳ１５）。
【００５６】
次に、ソート情報作成部５１は、ダイナミックグループ―ユーザ数情報、およびユーザ―ダイナミックグループ数情報をそれぞれユーザ数およびダイナミックグループ数でソートする（ステップＳ１６およびステップＳ１７）。そして、ソート情報作成部５１は、これら２つのソート結果を合わせたソート情報５３を作成し、たとえばメインメモリ１０２に格納する。
【００５７】
図７（ａ）および（ｂ）は、ソート情報の一例を示す図である。
【００５８】
図７（ａ）および（ｂ）を参照して、このソート情報５３は、ダイナミックグループ−ユーザ数情報（第１の対応情報）と、ユーザ−ダイナミックグループ数情報（第２の対応情報）とを含む。
【００５９】
ダイナミックグループ−ユーザ数情報において、識別番号が１００番のダイナミックグループのメンバに属するユーザ数が２２００であり、識別番号が１６６番のダイナミックグループのメンバに属するユーザ数が２２７０である。
【００６０】
また、ユーザ−ダイナミックグループ数情報において、識別番号が１００１番のユーザをメンバに持つロールの数が３０であり、識別番号が５５００番のユーザをメンバに持つロールの数が３８である。
【００６１】
次に、ソート情報５３が作成されると、分布情報管理部５における分布情報作成部５２は、ソート情報５３を参照し、閾値を用いて分布情報５４を作成する。
【００６２】
この閾値は、ダイナミックグループ―ユーザ数情報およびユーザ―ダイナミックグループ数情報に対して２つずつ用意される。
【００６３】
ここでは、ダイナミックグループ―ユーザ数情報に関する２つの閾値を閾値Ａおよび閾値Ｂとし、ユーザ―ダイナミックグループ数情報に関する２つの閾値を閾値Ｃおよび閾値Ｄとする。
【００６４】
図８は、本発明の実施の形態に係る情報処理装置における分布情報管理部の動作手順を示すフローチャートである。
【００６５】
図８を参照して、まず、分布情報管理部５は、ダイナミックグループ―ユーザ数情報を参照し（ステップＳ２１）、閾値Ａおよび閾値Ｂを用いて、ユーザ数が閾値Ａ以下であるダイナミックグループの数、ユーザ数が閾値Ｂ以上であるダイナミックグループの数、およびユーザ数が閾値Ａより多く、かつ閾値Ｂより少ないダイナミックグループの数を計算する（ステップＳ２２）。
【００６６】
次に、分布情報管理部５は、この計算結果、ならびに閾値Ａおよび閾値Ｂを含む情報、すなわち各ダイナミックグループのメンバの分布情報５４を作成し、たとえばメインメモリ１０２に格納する（ステップＳ２３）。
【００６７】
同様に、分布情報管理部５は、ユーザ―ダイナミックグループ数情報を参照し（ステップＳ２４）、閾値Ｃおよび閾値Ｄを用いて、ダイナミックグループ数が閾値Ｃ以下であるユーザの数、ダイナミックグループ数が閾値Ｄ以上であるユーザの数、およびダイナミックグループ数が閾値Ｃより多く、かつ閾値Ｄより少ないユーザの数を計算する（ステップＳ２５）。
【００６８】
次に、分布情報管理部５は、この計算結果、ならびに閾値Ｃおよび閾値Ｄを含む情報、すなわち各ユーザが所属するダイナミックグループの分布情報５４を作成し、たとえばメインメモリ１０２に格納する（ステップＳ２６）。
【００６９】
図９（ａ）および（ｂ）は、分布情報の一例を示す図である。
【００７０】
図９（ａ）を参照して、分布情報５４は、各ダイナミックグループのメンバの分布情報Ｘ（第１の分布情報）を含む。また、図９（ｂ）を参照して、分布情報５４は、各ユーザが所属するダイナミックグループの分布情報Ｙ（第２の分布情報）を含む。
【００７１】
各ダイナミックグループのメンバの分布情報Ｘにおいて、閾値Ａが９６０であり、閾値Ｂが６４５０００であり、ユーザ数が閾値Ａ以下であるダイナミックグループの数が４３００であり、ユーザ数が閾値Ｂ以上であるダイナミックグループの数が５００であり、ユーザ数が閾値Ａより多く、かつ閾値Ｂより少ないダイナミックグループの数が５０２００である。
【００７２】
各ユーザが所属するダイナミックグループの分布情報Ｙにおいて、閾値Ｃが５０であり、閾値Ｄが５４５００であり、ダイナミックグループが閾値Ｃ以下であるユーザの数が９００００であり、ダイナミックグループ数が閾値Ｄ以上であるユーザの数が５であり、ダイナミックグループ数が閾値Ｃより多く、かつ閾値Ｄより少ないユーザの数が５５４９９５である。
【００７３】
図１０は、本発明の実施の形態に係る情報処理装置におけるキャッシュ作成処理部の動作手順を示すフローチャートである。
【００７４】
図１０を参照して、まず、キャッシュ作成処理部７は、問い合わせ統計情報３２を参照し、キャッシュするビットマップデータを作成する（ステップＳ３１）。ここで、初期運用時の場合等、問い合わせ統計情報が有効でない場合には、予め設定されたモードを利用する。
【００７５】
図１１は、本発明の実施の形態に係る情報処理装置におけるキャッシュ作成処理部が作成するビットマップデータの一例を示す図である。
【００７６】
図１１を参照して、全ユーザ分のビットを用意し、ダイナミックグループごとに、当該グループのメンバであるユーザオブジェクトのビットを１で表し、メンバで無いユーザオブジェクトのビットを０で表したビットマップデータを作成する。
【００７７】
図１２は、本発明の実施の形態に係る情報処理装置が検索処理で用いるビットマップデータの一例を示す図である。
【００７８】
図１２を参照して、全ダイナミックグループ分のビットを用意し、ユーザオブジェクトごとに、当該ユーザオブジェクトの属するダイナミックグループのビットを１で表し、属さないダイナミックグループのビットを０で表したビットマップデータを作成する。
【００７９】
再び図１０を参照して、次に、キャッシュ作成処理部７は、データ最適化処理部６を呼び出す（ステップＳ３２）。
【００８０】
図１３は、本発明の実施の形態に係る情報処理装置におけるデータ最適化処理部の動作手順を示すフローチャートである。
【００８１】
図１３を参照して、データ最適化処理部６は、ソート情報５３および分布情報５４を参照し、閾値に収まるエントリ情報のデータ配列化処理、およびビット反転配列化処理を行ない、配列データを作成する（ステップＳ４１）。
【００８２】
再び図１０を参照して、キャッシュ作成処理部７は、作成したビットマップデータのうち、作成した配列データに対応するデータ部分を除いたものと、作成した配列データとを合わせて、キャッシュ９としてたとえばメインメモリ１０２に格納する（ステップＳ３３）。
【００８３】
このように、情報処理装置２０１では、ダイナミックグループのメンバのユーザ数、およびユーザをメンバに持つダイナミックグループの数に応じて、データの格納形式を変更する。これにより、全体としてのデータ量を圧縮することができるため、キャッシュするデータの消費メモリ量を小さくすることができる。
【００８４】
具体的な数値をあげて説明する。５０万ユーザおよび５万ロールの条件下で、キャッシュデータの作成に関し、すべてビットマップ形式で格納する場合と、本発明の実施の形態に係る検索情報作成方法を適用する場合とで、キャッシュデータのサイズを比較する。
【００８５】
簡単のため、ダイナミックグループを指定する問い合わせが圧倒的に多い環境とし、閾値Ａを１０００、閾値Ｂを４９９０００とし、閾値Ａ以下のダイナミックグループの数を４００００とし、閾値Ｂ以上のダイナミックグループ数を０とする。
【００８６】
ダイナミックグループを指定する問い合わせが圧倒的に多い環境では、問い合わせ統計情報から、キャッシュデータは、ダイナミックグループごとの所属ユーザ情報のデータが選択される。
【００８７】
すべてビットマップ形式で格納する場合には、キャッシュデータのサイズは、（５０００００×５００００）／（８×１０２４×１０２４×１０２４）［ＧＢ］≒３［ＧＢ］となる。
【００８８】
これに対して、本発明の実施の形態に係る検索情報作成方法を適用する場合には、４００００個のダイナミックグループの情報を配列データで作成することから、１つのダイナミックグループの情報に４バイトのデータが必要であるとすると、キャッシュデータのサイズは、（５０００００×１００００）／（８×１０２４×１０２４×１０２４）＋（４００００×３２×１０００）／（８×１０２４×１０２４×１０２４）［ＧＢ］≒０．７３［ＧＢ］となる。
【００８９】
すなわち、本発明の実施の形態に係る検索情報作成方法を適用することにより、約２．３ＧＢのメモリを節約することができる。
【００９０】
ところで、全ユーザ分のビットを用意し、ダイナミックグループごとに、当該グループのメンバであるユーザオブジェクトのビットを１で表し、メンバで無いユーザオブジェクトのビットを０で表したビットマップデータを用いる方法では、ユーザを指定し、当該ユーザが所属するダイナミックグループを参照する、といった検索の場合、ダイナミックグループごとに当該ユーザの所属の有無をチェックしなければならず、検索処理が遅くなってしまう。
【００９１】
これに対して、本発明の実施の形態に係る情報処理装置では、キャッシュ作成処理部７は、ダイナミックグループのメンバである１または複数のユーザをダイナミックグループごとに示す第１のキャッシュデータ、およびユーザをメンバとする１または複数のダイナミックグループをユーザごとに示す第２のキャッシュデータのいずれかを選択する。そして、キャッシュ作成処理部７は、ＬＤＡＰデータベース４の蓄積情報に基づいて、選択した第１のキャッシュデータまたは第２のキャッシュデータを作成する。
【００９２】
すなわち、本発明の実施の形態に係る情報処理装置では、たとえばＬＡＤＰのダイナミックグループに関連する検索処理に対して、環境に合わせた適切なデータを作成かつキャッシュする。これにより、高速に検索結果を取得することができる。
【００９３】
すなわち、本発明の実施の形態に係る情報処理装置における各構成要素のうち、キャッシュ作成処理部７からなる最小構成により、検索処理の高速化を図る、という本発明の目的を達成することが可能となる。
【００９４】
また、本発明の実施の形態に係る情報処理装置では、キャッシュ作成処理部７は、過去に実行された検索の内容に基づいて第１のキャッシュデータおよび第２のキャッシュデータのいずれかを選択する。
【００９５】
より詳細には、メインメモリ１０２またはハードディスク１０３は、過去に実行された検索の回数を検索の種類ごとに示す問い合わせ統計情報３２を記憶する。問い合わせ判断部３は、指定された検索のフィルタ条件に基づいて検索の種類を判別し、問い合わせ統計情報３２を更新する。そして、キャッシュ作成処理部７は、問い合わせ統計情報３２に基づいて第１のキャッシュデータおよび第２のキャッシュデータのいずれかを選択する。
【００９６】
すなわち、本発明の実施の形態に係る情報処理装置では、たとえばＬＤＡＰサーバの検索処理の傾向に基づいて、ダイナミックグループのどのような種類の情報をキャッシュするかを判断する。
【００９７】
具体的には、問い合わせ判断部３が、過去のＬＤＡＰ検索履歴を保持しており、この統計情報を元にキャッシュするデータの種類を決定する。
【００９８】
このような構成により、検索パターンに応じた適切なデータをキャッシュすることができるため、利用者がよく利用する検索の場面で、高速に検索結果を返すことができる。
【００９９】
また、キャッシュするデータに関し、全エントリ分のビットマップを用意し、各ビットの１／０によって各ユーザのダイナミックグループへの所属の有無を表わすようなデータを用いる方法では、ユーザおよびダイナミックグループの数が多くなると、キャッシュサイズが大きくなり、メモリを圧迫してしまう問題があった。
【０１００】
また、特許文献１に記載の技術では、データベース管理システムにおいて、問い合わせ処理の実行プランを記憶装置自身が取得し、記憶装置内のデータ配置に基づいて、アクセスが行われるデータおよび当該アクセスの順序を予測する。そして、予測したデータを予めキャッシュメモリに格納することにより、アクセス性能の向上を図る。すなわち、アクセス順序からキャッシュするデータが定まると、定まったデータをすべてキャッシュしてしまう。
【０１０１】
これに対して、本発明の実施の形態に係る情報処理装置では、ソート情報作成部５１は、ＬＤＡＰデータベース４の蓄積情報に基づいて、各ダイナミックグループとダイナミックグループのメンバであるユーザの数との対応関係を示すダイナミックグループ−ユーザ数情報、または各ユーザとユーザをメンバとするダイナミックグループの数との対応関係を示すユーザ−ダイナミックグループ数情報を作成する。分布情報作成部５２は、ダイナミックグループ−ユーザ数情報に基づいて、ユーザ数で区分けしたダイナミックグループの度数分布を示す分布情報Ｘを作成するか、またはユーザ−ダイナミックグループ数情報に基づいて、ダイナミックグループ数で区分けしたユーザの度数分布を示す分布情報Ｙを作成する。
【０１０２】
そして、キャッシュ作成処理部７は、ＬＤＡＰデータベース４の蓄積情報ならびにダイナミックグループ−ユーザ数情報および分布情報Ｘに基づいて第１のキャッシュデータを作成するか、またはＬＤＡＰデータベース４の蓄積情報ならびにユーザ−ダイナミックグループ数情報および分布情報Ｙに基づいて第２のキャッシュデータを作成する。
【０１０３】
具体的には、キャッシュ作成処理部７は、キャッシュデータをビットマップデータで作成する代わりに、ダイナミックグループ−ユーザ数情報および分布情報Ｘ、またはユーザ−ダイナミックグループ数情報および分布情報Ｙに基づいて、キャッシュデータの一部または全部を配列データで作成する。すなわち、キャッシュ作成処理部７は、分布情報Ｘにおいて、ユーザ数の少ない区分に属するダイナミックグループの情報を第１のキャッシュデータにおいて配列データで作成するか、または分布情報Ｙにおいて、ダイナミックグループ数の少ない区分に属するユーザの情報を第２のキャッシュデータにおいて配列データで作成する。
【０１０４】
このような構成により、メモリにキャッシュすべきデータのサイズが大きく、キャッシュメモリに格納しきれないような場合でも、キャッシュするデータのサイズを小さくし、かつアクセス性能の向上を図ることができる。
【０１０５】
本発明の実施の形態に係る情報処理装置では、ＬＤＡＰサーバの検索処理の傾向に基づいて、ダイナミックグループのどのような種類の情報をキャッシュするかを判断する構成、ダイナミックグループとユーザとの関連の分布情報を分析する構成、ならびに当該分布情報に基づいてデータ格納方式を適切に変更することで全体のデータ容量の圧縮を図る構成を有する。このような構成により、環境に合わせた適切なデータを作成かつキャッシュすることにより、全体のキャッシュデータの容量の圧縮を図ることができるため、メモリ使用量を抑えつつ、高速に検索結果を取得することができる。
【０１０６】
すなわち、ＬＤＡＰサーバにおけるダイナミックグループ情報を効率的にメモリ上で管理することができるため、データベース検索のためのメモリ消費を抑えながら、検索処理の高速化を図ることができる。
【０１０７】
なお、本発明は、ビットマップおよび配列等のデータの格納形式には依存せず、一般に、フィルタ条件に従って決定される情報を扱うシステムにおいて、当該情報のキャッシュデータを効率的に管理する目的にも適用可能である。
【０１０８】
上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１０９】
上記実施の形態の一部または全部は以下の付記のようにも記載されうるが、本発明の範囲は、以下の付記に限定されるものではない。
【０１１０】
［付記１］
データベースを検索するための情報処理装置であって、
グループのメンバである１または複数のユーザを前記グループごとに示す第１のキャッシュデータ、およびユーザをメンバとする１または複数のグループを前記ユーザごとに示す第２のキャッシュデータのいずれかを選択するためのキャッシュデータ選択部と、
前記データベースの蓄積情報に基づいて、前記キャッシュデータ選択部によって選択された前記第１のキャッシュデータまたは前記第２のキャッシュデータを作成するためのキャッシュ作成処理部とを備える、情報処理装置。
【０１１１】
［付記２］
前記キャッシュデータ選択部は、過去に実行された前記検索の内容に基づいて前記第１のキャッシュデータおよび前記第２のキャッシュデータのいずれかを選択する、付記１に記載の情報処理装置。
【０１１２】
［付記３］
前記情報処理装置は、さらに、
前記データベースの蓄積情報に基づいて、各グループと前記グループのメンバであるユーザの数との対応関係を示す第１の対応情報、または各ユーザと前記ユーザをメンバとするグループの数との対応関係を示す第２の対応情報を作成するための対応情報作成部と、
前記第１の対応情報に基づいて、ユーザ数で区分けした前記グループの度数分布を示す第１の分布情報を作成するか、または前記第２の対応情報に基づいて、グループ数で区分けした前記ユーザの度数分布を示す第２の分布情報を作成するための分布情報作成部とを備え、
前記キャッシュ作成処理部は、前記データベースの蓄積情報ならびに前記第１の対応情報および前記第１の分布情報に基づいて前記第１のキャッシュデータを作成するか、または前記データベースの蓄積情報ならびに前記第２の対応情報および前記第２の分布情報に基づいて前記第２のキャッシュデータを作成する、付記１または２に記載の情報処理装置。
【０１１３】
［付記４］
前記キャッシュ作成処理部は、前記キャッシュデータをビットマップデータで作成する代わりに、前記第１の対応情報および前記第１の分布情報、または前記第２の対応情報および前記第２の分布情報に基づいて、前記キャッシュデータの一部または全部を配列データで作成する、付記３に記載の情報処理装置。
【０１１４】
［付記５］
前記キャッシュ作成処理部は、前記第１の分布情報において、ユーザ数の少ない区分に属する前記グループの情報を前記第１のキャッシュデータにおいて配列データで作成するか、または前記第２の分布情報において、グループ数の少ない区分に属する前記ユーザの情報を前記第２のキャッシュデータにおいて配列データで作成する、付記４に記載の情報処理装置。
【０１１５】
［付記６］
前記情報処理装置は、さらに、
過去に実行された前記検索の回数を検索の種類ごとに示す問い合わせ統計情報を記憶するための記憶部と、
指定された前記検索のフィルタ条件に基づいて前記検索の種類を判別し、前記問い合わせ統計情報を更新するための問い合わせ判断部とを備え、
前記キャッシュデータ選択部は、前記問い合わせ統計情報に基づいて前記第１のキャッシュデータおよび前記第２のキャッシュデータのいずれかを選択する、付記２に記載の情報処理装置。
【０１１６】
［付記７］
データベースを検索するための情報処理装置における検索情報作成方法であって、
グループのメンバである１または複数のユーザを前記グループごとに示す第１のキャッシュデータ、およびユーザをメンバとする１または複数のグループを前記ユーザごとに示す第２のキャッシュデータのいずれかを選択するステップと、
前記データベースの蓄積情報に基づいて、選択した前記第１のキャッシュデータまたは前記第２のキャッシュデータを作成するステップとを含む、検索情報作成方法。
【０１１７】
［付記８］
前記キャッシュデータを選択するステップにおいては、過去に実行された前記検索の内容に基づいて前記第１のキャッシュデータおよび前記第２のキャッシュデータのいずれかを選択する、付記７に記載の検索情報作成方法。
【０１１８】
［付記９］
前記検索情報作成方法は、さらに、
前記データベースの蓄積情報に基づいて、各グループと前記グループのメンバであるユーザの数との対応関係を示す第１の対応情報、または各ユーザと前記ユーザをメンバとするグループの数との対応関係を示す第２の対応情報を作成するステップと、
前記第１の対応情報に基づいて、ユーザ数で区分けした前記グループの度数分布を示す第１の分布情報を作成するか、または前記第２の対応情報に基づいて、グループ数で区分けした前記ユーザの度数分布を示す第２の分布情報を作成するステップとを含み、
前記キャッシュデータを作成するステップにおいては、前記データベースの蓄積情報ならびに前記第１の対応情報および前記第１の分布情報に基づいて前記第１のキャッシュデータを作成するか、または前記データベースの蓄積情報ならびに前記第２の対応情報および前記第２の分布情報に基づいて前記第２のキャッシュデータを作成する、付記７または８に記載の検索情報作成方法。
【０１１９】
［付記１０］
前記キャッシュデータを作成するステップにおいては、前記キャッシュデータをビットマップデータで作成する代わりに、前記第１の対応情報および前記第１の分布情報、または前記第２の対応情報および前記第２の分布情報に基づいて、前記キャッシュデータの一部または全部を配列データで作成する、付記９に記載の検索情報作成方法。
【０１２０】
［付記１１］
前記キャッシュデータを作成するステップにおいては、前記第１の分布情報において、ユーザ数の少ない区分に属する前記グループの情報を前記第１のキャッシュデータにおいて配列データで作成するか、または前記第２の分布情報において、グループ数の少ない区分に属する前記ユーザの情報を前記第２のキャッシュデータにおいて配列データで作成する、付記１０に記載の検索情報作成方法。
【０１２１】
［付記１２］
前記検索情報作成方法は、さらに、
過去に実行された前記検索の回数を検索の種類ごとに示す問い合わせ統計情報を記憶するステップと、
指定された前記検索のフィルタ条件に基づいて前記検索の種類を判別し、前記問い合わせ統計情報を更新するステップとを含み、
前記キャッシュデータを選択するステップにおいては、前記問い合わせ統計情報に基づいて前記第１のキャッシュデータおよび前記第２のキャッシュデータのいずれかを選択する、付記８に記載の検索情報作成方法。
【０１２２】
［付記１３］
データベースを検索するための情報処理装置における検索情報作成プログラムであって、コンピュータに、
グループのメンバである１または複数のユーザを前記グループごとに示す第１のキャッシュデータ、およびユーザをメンバとする１または複数のグループを前記ユーザごとに示す第２のキャッシュデータのいずれかを選択するステップと、
前記データベースの蓄積情報に基づいて、選択した前記第１のキャッシュデータまたは前記第２のキャッシュデータを作成するステップとを実行させるための、検索情報作成プログラム。
【０１２３】
［付記１４］
前記キャッシュデータを選択するステップにおいては、過去に実行された前記検索の内容に基づいて前記第１のキャッシュデータおよび前記第２のキャッシュデータのいずれかを選択する、付記１３に記載の検索情報作成プログラム。
【０１２４】
［付記１５］
前記検索情報作成プログラムは、さらに、コンピュータに、
前記データベースの蓄積情報に基づいて、各グループと前記グループのメンバであるユーザの数との対応関係を示す第１の対応情報、または各ユーザと前記ユーザをメンバとするグループの数との対応関係を示す第２の対応情報を作成するステップと、
前記第１の対応情報に基づいて、ユーザ数で区分けした前記グループの度数分布を示す第１の分布情報を作成するか、または前記第２の対応情報に基づいて、グループ数で区分けした前記ユーザの度数分布を示す第２の分布情報を作成するステップとを実行させるプログラムであり、
前記キャッシュデータを作成するステップにおいては、前記データベースの蓄積情報ならびに前記第１の対応情報および前記第１の分布情報に基づいて前記第１のキャッシュデータを作成するか、または前記データベースの蓄積情報ならびに前記第２の対応情報および前記第２の分布情報に基づいて前記第２のキャッシュデータを作成する、付記１３または１４に記載の検索情報作成プログラム。
【０１２５】
［付記１６］
前記キャッシュデータを作成するステップにおいては、前記キャッシュデータをビットマップデータで作成する代わりに、前記第１の対応情報および前記第１の分布情報、または前記第２の対応情報および前記第２の分布情報に基づいて、前記キャッシュデータの一部または全部を配列データで作成する、付記１５に記載の検索情報作成プログラム。
【０１２６】
［付記１７］
前記キャッシュデータを作成するステップにおいては、前記第１の分布情報において、ユーザ数の少ない区分に属する前記グループの情報を前記第１のキャッシュデータにおいて配列データで作成するか、または前記第２の分布情報において、グループ数の少ない区分に属する前記ユーザの情報を前記第２のキャッシュデータにおいて配列データで作成する、付記１６に記載の検索情報作成プログラム。
【０１２７】
［付記１８］
前記検索情報作成プログラムは、さらに、コンピュータに、
過去に実行された前記検索の回数を検索の種類ごとに示す問い合わせ統計情報を記憶するステップと、
指定された前記検索のフィルタ条件に基づいて前記検索の種類を判別し、前記問い合わせ統計情報を更新するステップとを実行させるプログラムであり、
前記キャッシュデータを選択するステップにおいては、前記問い合わせ統計情報に基づいて前記第１のキャッシュデータおよび前記第２のキャッシュデータのいずれかを選択する、付記１４に記載の検索情報作成プログラム。
【産業上の利用可能性】
【０１２８】
本発明は、ＬＤＡＰのダイナミックグループを利用するシステムに適用可能である。したがって、本発明は、産業上の利用可能性を有している。
【符号の説明】
【０１２９】
１  ＬＤＡＰプロトコル処理部
２  ＬＤＡＰ検索処理部
３  問い合わせ判断部
４  ＬＤＡＰデータベース
５  分布情報管理部
６  データ最適化処理部
７  キャッシュ作成処理部（キャッシュデータ選択部）
８  検索結果キャッシュ取得処理部
９  キャッシュ
５１  ソート情報作成部（対応情報作成部）
５２  分布情報作成部
１０１  ＣＰＵ
１０２  メインメモリ
１０３  ハードディスク
１０４  入力インタフェース
１０５  表示コントローラ
１０６  データリーダ／ライタ
１０７  通信インタフェース
１０８  キーボード
１０９  マウス
１１０  ディスプレイ
１１１  記録媒体
１２１  バス
２０１  情報処理装置
【図１】
0005817194.tif 000002
【図２】
0005817194.tif 000003
【図３】
0005817194.tif 000004
【図４】
0005817194.tif 000005
【図５】
0005817194.tif 000006
【図６】
0005817194.tif 000007
【図７】
0005817194.tif 000008
【図８】
0005817194.tif 000009
【図９】
0005817194.tif 000010
【図１０】
0005817194.tif 000011
【図１１】
0005817194.tif 000012
【図１２】
0005817194.tif 000013
【図１３】
0005817194.tif 000014