JP2010266952A - メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法 - Google Patents

メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法 Download PDF

Info

Publication number
JP2010266952A
JP2010266952A JP2009115804A JP2009115804A JP2010266952A JP 2010266952 A JP2010266952 A JP 2010266952A JP 2009115804 A JP2009115804 A JP 2009115804A JP 2009115804 A JP2009115804 A JP 2009115804A JP 2010266952 A JP2010266952 A JP 2010266952A
Authority
JP
Japan
Prior art keywords
section
bit string
bit
storage unit
range information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2009115804A
Other languages
English (en)
Inventor
Yukio Teramoto
幸生 寺本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009115804A priority Critical patent/JP2010266952A/ja
Publication of JP2010266952A publication Critical patent/JP2010266952A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 メンバを登録したシステムが、偽陽性判定確率の上昇を抑えつつ、効率的にメンバを検索出来ない。
【解決手段】 メンバ管理装置は、検索値がとりうる範囲を分割した区間ごとに、区間の範囲情報とビット列を格納するフィルタ記憶部と、検索値と範囲情報から特定される第1の区間に対応する第1のビット列が生成条件を満たさなければ、入力データである又は入力データから生成したメンバを第1のビット列に登録し、生成条件を満たせば、第2の区間の範囲情報と第2のビット列を生成してフィルタ記憶部に格納し、第1の区間の範囲情報を第1の区間と第2の区間が重複しないように変更して(変更後を第3の区間とする)、メンバを第3の区間のビット列または第2のビット列に登録する登録手段を備える。
【選択図】 図1

Description

本発明は、メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法に関する。
特許文献1は、文書IDをブルームフィルタに登録し、検索するデータベースピアを開示する。当該ブルームフィルタは、登録される文書の数が増加していくにつれて、長さが段階的に4096ビット数ずつ長くなる。
特許文献2は、ブラウズセッションIDごとにパーティションに分割されて、各自の範囲のセッションIDに関連付けられたイベントデータを記憶するキャッシュ層サーバを開示する。このサーバは、ブルームフィルタの容量が満たされると、当該ブルームフィルタを大きなものに交換する。
特許文献3は、電子メールアドレスから算出されるビットパターンを登録したビット列をユーザ対応に保持するフィルタシステムを開示する。当該システムは、ユーザ宛の電子メールを受信すると、当該ユーザのビット列を検索して、ビット列に送信元アドレスが登録された場合だけ当該ユーザに当該電子メールを転送する。
特許文献4は、他の各々のボーダールータから受信したエリアサマリーをブルームフィルタとして格納するボーダールータを開示する。当該ルータは、この情報を用いて全てのエリア間宛先へのパスを計算する。
特開2008−102795 特表2007−526537 特開2008−306369 特表2003−516035
ビット列に属性値の組(メンバ)を登録したシステムが、偽陽性判定確率の上昇を抑えつつ、効率的にメンバを検索出来ない。
特許文献1のデータベースピアは、登録ファイル数の増加に応じてブルームフィルタの長さを拡張する。従って、ファイル数が増加してくるとブルームフィルタのサイズが大きくなり、検索効率が悪化する。その理由は、検索時にブルームフィルタに対して局所性の無いアクセスが発生したり、桁数の大きなハッシュ値を計算する過程で長整数型データ演算が発生したりするからである。特許文献2のサーバも同様である。
特許文献3のシステムおよび特許文献4のボーダールータは、偽陽性判定確率の上昇を抑えないため、上述の課題を解決しない。
本発明は、上記課題を解決する、メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法を提供することを目的とする。
本発明の一実施形態のメンバ管理装置は、属性値の組であるメンバとビット列のビット数で特定される、前記ビット列中のビットをONにすることを『ビット列にメンバを登録する』、当該ビットがONであることを検出することを『ビット列からメンバ検出する』、登録されていないメンバを検出してしまう確率を『偽陽性判定確率』、ビット列にメンバを追加すると当該ビットの偽陽性判定確率が所定の最大値以上になることを『生成条件』と定義した場合に於いて、検索値がとりうる範囲を分割した区間ごとに、区間の範囲情報とビット列を格納するフィルタ記憶部と、a)検索値と範囲情報から特定される第1の区間に対応するビット列(第1のビット列)が生成条件を満たさなければ、入力データである又は入力データから生成したメンバを前記第1のビット列に登録し、b)前記生成条件を満たせば、新たな区間(第2の区間)の範囲情報とビット列(第2のビット列)を生成して前記フィルタ記憶部に格納し、前記第1の区間の範囲情報を前記第1の区間と前記第2の区間が重複しないように変更して(変更後を第3の区間とする)、当該メンバを前記第3の区間に対応するビット列または前記第2のビット列に登録する登録手段、を備える。
本発明の一実施形態のメンバ管理プログラムは、属性値の組であるメンバとビット列のビット数で特定される、前記ビット列中のビットをONにすることを『ビット列にメンバを登録する』、当該ビットがONであることを検出することを『ビット列からメンバ検出する』、登録されていないメンバを検出してしまう確率を『偽陽性判定確率』、ビット列にメンバを追加すると当該ビットの偽陽性判定確率が所定の最大値以上になることを『生成条件』と定義した場合に於いて、検索値がとりうる範囲を分割した区間ごとに、区間の範囲情報とビット列を格納するフィルタ記憶部を備えるコンピュータに、a)検索値と範囲情報から特定される第1の区間に対応するビット列(第1のビット列)が生成条件を満たさなければ、入力データである又は入力データから生成したメンバを前記第1のビット列に登録し、b)前記生成条件を満たせば、新たな区間(第2の区間)の範囲情報とビット列(第2のビット列)を生成して前記フィルタ記憶部に格納し、前記第1の区間の範囲情報を前記第1の区間と前記第2の区間が重複しないように変更して(変更後を第3の区間とする)、当該メンバを前記第3の区間に対応するビット列または前記第2のビット列に登録する登録処理、を実行させる。
本発明の一実施形態のメンバ管理方法は、属性値の組であるメンバとビット列のビット数で特定される、前記ビット列中のビットをONにすることを『ビット列にメンバを登録する』、当該ビットがONであることを検出することを『ビット列からメンバ検出する』、登録されていないメンバを検出してしまう確率を『偽陽性判定確率』、ビット列にメンバを追加すると当該ビットの偽陽性判定確率が所定の最大値以上になることを『生成条件』と定義した場合に於いて、検索値がとりうる範囲を分割した区間ごとに、区間の範囲情報とビット列を格納するフィルタ記憶部を備えるコンピュータが、a)検索値と範囲情報から特定される第1の区間に対応するビット列(第1のビット列)が生成条件を満たさなければ、入力データである又は入力データから生成したメンバを前記第1のビット列に登録し、b)前記生成条件を満たせば、新たな区間(第2の区間)の範囲情報とビット列(第2のビット列)を生成して前記フィルタ記憶部に格納し、前記第1の区間の範囲情報を前記第1の区間と前記第2の区間が重複しないように変更して(変更後を第3の区間とする)、当該メンバを前記第3の区間に対応するビット列または前記第2のビット列に登録する登録工程、を有する。
ビット列にメンバを登録したシステムが、偽陽性判定確率の上昇を抑えつつ、効率的にメンバを検索出来る。
第1の実施形態にかかるメンバ管理装置10の全体構成図である。 フィルタ記憶部23の構成を示す図である。 メンバ記憶部22の構成を示す図である。 許容表50の構成を示す図である。 登録手段20(初期設定)の動作フローチャートである。 登録手段20(登録処理)の動作フローチャートである。 検索手段21の動作フローチャートである。 圧縮手段24の動作フローチャートである。 登録手段20(定期処理)の動作フローチャートである。 第2の実施形態にかかるメンバ記憶部22の構成を示す図である。 第2の実施形態にかかる登録手段20(フィルタ生成登録処理)の動作フローチャートである。 第3の実施形態にかかるメンバ管理装置システム60の全体構成図である。 メンバ管理装置10の基本構成図である。
データベースの負荷低減を行うために、ブルームフィルタをキャッシュとして利用する方法が提案されている。ブルームフィルタは次の非特許文献に示されている。
2004年、インターネット・マセマティクス、ネットワーク・アプリケーションズ・オブ・ブルーム・フィルタース:ア・サーベイ(Network Applications of Bloom Filters: A Survey, Internet Mathematics, vol. 1, no. 4: 485-509, 2004.http://www.internetmathematics.org/volumes/1/4/Broder.pdf)
ブルームフィルタの役割は、メンバシップクエリを実現することである。メンバシップクエリとは、特定のデータがデータベースに格納されているか否かの判定を行うことである。例えば、メンバシップクエリを行うサーバ等は「ユーザXは、以前にURL(Uniform Resource Locator)Yにアクセスしたことがあるか?」という問い合わせに対して、当該事実のログがログデータベースに有るか否かの判定を行う。判定の結果に応じて、サーバ等は、膨大なログデータベースに対する検索処理を省略できる。
また、サプライチェインマネジメント等のアプリケーションは、製品の流通履歴を解析しコスト最適化を行う。当該アプリケーションは、製品の流通履歴を把握するために、サプライチェインに関わる企業間をまたがって製品のトラッキングが必要となる。
製品のトラッキングに於いて、当該アプリケーションは、所望の製品のトレース情報を保有するデータベースサーバ等を特定する必要がある。このようなデータベースサーバがブルームフィルタをキャッシュとして備えることで、アプリケーションは、必要なデータを保有する候補となるデータベースサーバ等をより効率良く絞り込むことができる。
ブルームフィルタを備えない場合、アプリケーションが「指定された検索条件に合う情報を保持しているか」を判定するには、検索条件を用いて実際にデータベースの検索を行う必要がある。このため、上述の判定のための問い合わせが頻繁に行われると、サーバ等のデータベース検索負荷が増大する。
ブルームフィルタへの入力は、{(ユーザID,X),(URL,Y),…}のような、属性情報のリストである。属性情報は、ユーザIDやURL等といったデータの種類を特定する属性名と、XやY等の具体値である属性値の組から構成される。この属性情報のリストがメンバである。
ブルームフィルタは、ビット数Mのビット列とK個のハッシュ関数群{h1,h2,…,hk}で構成される。ビット列のすべてのビットはOFF(例えば0)で初期化される。あるメンバeのブルームフィルタへの登録は、各ハッシュ関数hi(i=1,2,…,k)に対して、B[hi(e,M)]をON(例えば1)とすることでなされる。
ここで、B[hi(e,M)]は、メンバeとビット数Mを入力とする各ハッシュ関数hiの関数値で特定されるビット列のビットである。B[hi(e,M)]は、例えば、ビット列の最下位ビット(第0番目ビット)から数えて第hi(e,M)番目のビットである。なお、ON/OFFと0/1の対応は逆でも良い。
メンバシップクエリを実行するサーバ等は、B[hi(e,M)]の値が全てONである場合、メンバeはフィルタに登録されている(真)と判定し、そうでない場合は、登録されていない(偽)と判定する。
ブルームフィルタを用いたメンバシップクエリの判定結果は、偽陽性を含むことがある。偽陽性は、フィルタに登録されていないメンバの検索に対して、本来偽と判定すべきところを誤って真と判定することである。偽陽性判定確率とは、あるブルームフィルタを用いたメンバシップクエリの判定結果に、偽陽性が含まれる確率である。
ブルームフィルタに登録されるメンバ数の増加に伴い、偽陽性判定確率は上昇する。例えば、前述の特許文献2のシステムにおいて、あるユーザXの操作履歴は、時間経過とともに増加する。操作回数が一定限度を越えた場合、偽陽性判定確率が高くなり過ぎてブルームフィルタはキャッシュとしての機能を果たさなくなる。
偽陽性判定確率が所定の定数p以下であるとの条件下で、ブルームフィルタに登録できるメンバの最大数が当該ブルームフィルタの許容値である。ブルームフィルタの許容値は、当該ブルームフィルタのビット数に依存する。
なお、多くの場合、メンバシップクエリの検索条件は、検索範囲を絞り込むために時間等の指定を含む。これは、データベースに保持されている全てのデータを検索対象とする必要が無いことが多いからである。従って、検索効率向上のため、ブルームフィルタを備えた装置が「ここ1カ月の内に物品Xのエラー情報Yは記録されたか?」というようなメンバシップクエリを処理できることが望ましい。
以下、図面を参照して、本発明の第1の実施形態にかかるメンバ管理装置10について説明する。
図1は、本発明の第1の実施形態にかかるメンバ管理装置10の全体構成図である。メンバ管理装置10は、直接または通信網経由でイベント生成装置12および検索端末13と接続されている。接続関係は一対一に限られない。例えば、一台の検索端末13が複数のメンバ管理装置10に接続されて、複数のメンバ管理装置10に検索依頼を行う。
イベント生成装置12は、ある事象の発生等に伴って、イベントデータを生成して検索値と共にメンバ管理装置10に送信する。ここで、イベントデータは、複数個の属性情報のリストを包含する。属性情報は属性名と属性値から構成される。属性名は属性値の種類を特定する。イベントデータ内に於ける順序で属性値の種類が特定できるとき、属性名は省略されても良い。イベントデータは、発生した事象等を表現するデータであり、タグID、ユーザ名、住所、温度等を包含する。
イベント生成装置12は、例えば、サプライチェインに所属する企業の製品出荷管理システムである。イベント生成装置12は、例えば製品の出荷を検知すると、出荷のイベントデータとして、製品ID(タグID)、製品種類、出荷先ユーザ名、住所等からなるイベントデータを出力する。
検索値は、メンバ管理装置10に登録されたイベントデータを検索する時の検索範囲を限定するために用いられる値である。検索値は、例えば、イベントデータの生成時刻、通番、イベント生成装置12の識別子である。以降、検索値はメンバ14の生成時刻であるとする。なお、生成時刻は、イベント生成装置12が生成してメンバ管理装置10に送信しても良いし、メンバ管理装置10がイベントデータを受信したときに生成しても良い。
メンバ管理装置10は、イベントデータと検索値をイベントDB26(Database)に記憶すると共に、イベントデータから生成したメンバをブルームフィルタに登録する。
メンバはイベントデータ内のL個の属性情報から構成される。メンバの属性値(Xi、i=1,2,…,L)は一般にイベントデータの属性値を正の整数値に変換したものである。例えば、データ長が長いユーザ名、住所等は、以降の処理を簡潔にするため、予め登録された整数コード等に変換される。当該変換はなされなくても構わない。
検索端末13は、イベントデータeのL個の属性情報と検索値の範囲をメンバ管理装置10に送信する。メンバ管理装置10は、指定された検索値の範囲内に、指定されたL個の属性情報から生成されたメンバが、ブルームフィルタに登録されているかを調べて判定し、その判定結果を検索端末13に送信する。
検索端末13は、上記判定結果が真であるメンバ管理装置10に、イベントデータeのイベントDB26からの検索依頼を送信する。
メンバ管理装置10は、登録手段20、検索手段21、圧縮手段24、DBMS25、メンバ記憶部22、フィルタ記憶部23、イベントDB26を包含する。
登録手段20は、入力したイベントデータからメンバを生成し、ブルームフィルタに登録等する。検索手段21は、入力した属性情報からメンバを生成し、当該メンバがブルームフィルタに登録されているか否かを判定し、判定結果を出力する。圧縮手段24は登録されたメンバ数に併せて、ブルームフィルタのビット数を小さくする。DBMS25(Database Managiment System)は、イベントDB26にイベントデータおよび検索値を登録したり、イベントDB26からイベントデータおよび検索値を検索したりする。
登録手段20、検索手段21、圧縮手段24およびDBMS25は、論理回路装置としてハードウェアで実現される。登録手段20、検索手段21、圧縮手段24またはDBMS25は、コンピュータ11であるメンバ管理装置10のプロセッサが、メモリ上のメンバ管理プログラム29を実行することで実現されても良い。
また、DBMS25は、市販のデータベース管理システムを使用しても良い。また、DBMS25とイベントDB26は、メンバ管理装置10とは別の装置(データベースサーバ等)に備えられていても良い。
フィルタ記憶部23は、ブルームフィルタの情報を格納する。メンバ記憶部22は、ブルームフィルタに登録されているメンバに関する情報を格納する。フィルタ記憶部23およびメンバ記憶部22は、ディスク装置、メモリ等の記憶装置に設けられる。
図2は、フィルタ記憶部23の構成を示す図である。フィルタ記憶部23は、複数の区間エントリ30と、各区間エントリ30に対応したビット列37を格納する。ビット列37はブルームフィルタとして機能する。各区間エントリ30は、区間ID31、範囲情報32、サイズ33、許容数34、登録数35、フィルタポインタ36を包含する。区間ID31は、時刻等の検索値の範囲を分割した区間の識別子である。
範囲情報32は区間の範囲を規定する。範囲情報32は、例えば、開始時刻と終了時刻を年月日時分の形式で包含する。この場合、区間は、例えば開始時刻から終了時刻直前までである。区間には、開始時刻だけが決まっていて、終了時刻が決まっていない区間(最終区間と呼ぶ)があっても良い。
区間が重複しない(ある期間で同時に二つ以上のビット列37を使用することが無い)場合、範囲情報32は開始時刻だけを格納しても良い。この場合、区間は、例えば、当該開始時刻から次の区間の開始時刻直前迄である。
なお、区間の重複は、区間の区切りが異なる複数台のメンバ管理装置10で作成したフィルタ記憶部23のデータをマージした場合等に発生する。
サイズ33は、対応するビット列37のビット数を格納する。本実施形態に於いてサイズ33は、例えば2のべき乗の整数倍(整数a×2**jと表記する)である。許容数34は、偽陽性判定確率をシステムパラメータ等で与えられた定数p以下に抑えるための、当該区間エントリ30に対応するビット列37の許容値である。
登録数35は、当該区間エントリ30に対応するビット列37に登録されているメンバ数である。フィルタポインタ36は、当該区間エントリ30に対応するビット列37へのポインタ情報(アドレス等)である。
図3はメンバ記憶部22の構成を示す図である。メンバ記憶部22は、区間に対応した複数の区間行40を格納する。各区間行40は区間ID31とペア情報43を格納する。ペア情報43は、区間ID31に対応するビット列37に登録されているメンバ対応にメンバエントリ41を格納する。各メンバエントリ41には、各ハッシュ関数hi(i=1,2,…,k)の2つの関数値(後述)であるRpiとRmiのペアを格納する。このペア情報43はビット列37の拡張に使用される。
図4は許容表50の構成を示す図である。許容表50は図示しないメモリ等に設けられる作業域である。許容表50はビット列37のサイズ33ごとの所定の偽陽性判定確率に対する許容数34を格納する。許容表50は、システムパラメータとして与えられても良いし、後述するように初期設定処理で作成されても良い。
図5は、登録手段20(初期設定)の動作フローチャートである。登録手段20は、許容される偽陽性判定確率p、ビット列37のビット数の最小値(a×2**x等)、最大値(a×2**z等)を入力する(S301)。これらの値は、例えば、システムパラメータとして与えられる。
次に登録手段20は許容表50を作成する(S302)。同手段は、許容表50の各エントリのサイズ33に、最小値(a×2**x等)から始まって、順次2倍しながら、最大値(a×2**z等)迄の値を格納する。次に同手段は、各エントリの許容数34を算出して格納する。
各エントリの許容数34は次式で計算される。

Figure 2010266952
また、ceil(x)は、ceiling関数であり、実数xより大きい最小の整数を返す関数である。なお、許容数34のうち最大の値が最大許容値である。最大許容値は、ビット列37のビット数の最大値(Bmax)から算出される許容数34である。
なお、前述したハッシュ関数の個数kも同様に以下の式で決定される。

Figure 2010266952
これらの値の導出に関する詳細は、以下の非特許文献開示されている。
インターネット・マセマティクス、ネットワーク・アプリケーションズ・オブ・ブルーム・フィルタース:ア・サーベイ(Network Applications of Bloom Filters: A Survey, InternetMathematics, vol. 1, no. 4: 485-509, 2004.
http://www.internetmathematics.org/volumes/1/4/Broder.pdf)
初期設定の最後に、登録手段20はフィルタ記憶部23に最初の区間エントリ30とビット列37を、メンバ記憶部22に最初の区間行40を生成して、初期設定する(S303)。
具体的に同手段は、当該区間エントリ30の区間ID31に通番を、範囲情報32の開始時刻に現時刻を、範囲情報32の終了時刻に『未定』を格納する。登録手段20は、『未定』を表す値として、例えば、メンバ数が許容数34以上になる十分遠い将来の時刻を格納する。次いで同手段は、当該区間エントリ30のサイズ33には、システムパラメータで与えられたビット列37の初期ビット数(a×2**y等;yはx以上z以下の値)を格納する。同手段は、当該区間エントリ30の許容数34に、サイズ33が初期ビット数である許容値表50エントリの許容数34の値をコピーする。登録数35は0に設定される。
同手段は、初期ビット数のビット列37を生成して全ビットをOFFで初期化して、そのアドレスをフィルタポインタ36に格納する。また、同手段は、メンバ記憶部22に最初の区間行40を生成して、区間エントリ30の区間ID31を区間行40の区間ID31にコピーする。
図6は、登録手段20(登録処理)の動作フローチャートである。登録手段20は、登録処理により、受信したイベントデータからメンバを生成してフィルタ記憶部23に登録する。
登録手段20は、イベント生成装置12から受信したイベントデータからメンバを生成する(S101)。同手段は、イベントデータ内の予め定められたL個の属性情報を取得して、属性値を正の整数値等に変換して、メンバの属性値(xi i=1,2,…,L)を得る。また、受信したイベントデータ内にある属性の値が含まれない場合、登録手段20はそのことを表す予約数値(システムパラメータ等として与えられている)を属性値xとして設定する。
取得したメンバをブルームフィルタに登録するために、登録手段20は、フィルタ記憶部23内の最終区間のフィルタポインタ36から最終区間のビット列37を取得する(S102)。最終区間の登録数35が許容数34よりも小さい場合(S105でN)、そのメンバを最終区間のビット列37に登録する(S103)。
メンバのビット列37への登録は、k個のハッシュ関数hi(i=1,2,…,k)の関数値で示される位置のビットをONにすることで行われる。ここで、ビット位置は、最下位ビット(第0番目ビット)から数えられる。各ハッシュ関数hiは、次のように設計される。
hi(x1,x2,…,xL,μ)=(ai1×x1+ai2×x2+…+aiL×xL)mod μ
ここで、ai1、ai2、…、aiLはシステムパラメータとして与えられる定数係数である。また、除数μは、登録するビット列37のサイズ33を意味する。最終区間のビット列37にメンバを登録する際は、サイズ33は最終区間の区間エントリ30から取得される。また、登録手段20は最終区間の登録数35に1を加算する。
登録されるメンバ数に応じたビット列37の拡張を容易にするために、サイズ33は、定数a×2のべき乗で表される整数値とする。また、各i=1,2,…,kに関して、ai1,ai2,…,aiLおよびμは、互いに素であるように設定されている。例えば、ai1、ai2、…、aiLは、互いに異なる3以上の素数である。
続いて、登録手段20は、ビット列37の拡張処理に必要なペア情報43を生成し、メンバ記憶部22に記録する(S104)。記録に当たり、登録手段20は最終区間と同じ区間ID31を有するメンバ記憶部22の区間行40を特定する。同手段は、当該行に新たなメンバエントリ41を生成して、生成したペア情報43を格納する。
ここで、ペア情報43はk組の数値(Rpi,Rmi)(i=1,2,…,k)のペアである。Rpiは現在のビット列37のビット数(サイズ33の値)を除数μとしたときのハッシュ関数hiの関数値である。Rmiは、a×2**m(m=0,1,…,Bmax−1)を除数μとしたときのハッシュ関数hiが奇数の時はON、偶数の時はOFFであるBmaxビット長のビット列である。ここで、Bmaxはビット列37のビット数の最大値であり、システムパラメータ等としてメンバ管理装置10に与えられる。
最終区間の登録数35が許容数34と等しいが(S105でY)、最大許容数より小さい場合(S106でN)、登録手段20はフィルタ拡張処理を行う。
本処理に於いて登録手段20は、まず最終区間の現在のビット列37のサイズ33をフィルタ記憶部23から、最終区間の全ペア情報43をメンバ記憶部22から取得する(S107)。取得したサイズ33がa×2**jであると仮定する。
続いて同部は、ビット数を2倍に拡張したビット列37を生成し、そのアドレスを最終区間のフィルタポインタ36に設定する。同部は、最終区間のサイズ33を2倍(a×2**(j+1))にすると共に許容数34も更新する(S110)。このとき同部は、新たに生成した全ビットをOFFに初期設定すると共に、古いビット列37を削除する。最終区間の区間エントリ30の許容数34は、サイズ33がa×2**(j+1)である許容値表50エントリの許容数34の値で更新される。
同手段は取得したペア情報43のRpiの更新処理を行う(S111)。具体的に、同手段は、ペア情報43のRmiの最下位ビット(第0番目ビット)から数えてj番目ビットがOFFであれば更新せず、ONであればRpiに2**jを加算して更新する。
同手段は、生成した新たなビット列37のRpi番目のビットをONに設定する(S112)。
上記のようなフィルタ拡張処理を行っても、そのブルームフィルタを利用したメンバシップクエリの真偽判定の結果が変わらないことは、次のことから保証される。任意の整数Aに対する2**jの剰余演算は、Aのjビット以上のビット値を0にすることである。整数Aの2**jと2**(j+1)を除数とするそれぞれの剰余値をxとx’、xとx’の排他的論理和の値をyとする。このとき、x’=x+yが成り立つ。従って、サイズ33が2**jから2**(j+1)への拡張を行ったビット列37と、もとのサイズ33が2**jのビット列37では同じ位置に1が設定される。
最終区間の全てのペア情報43についての処理が終了したら(S113でY)、登録手段20は、拡張されたビット列37に対してメンバを登録する(S103、S104)。なお、登録手段20は、フィルタ拡張処理を実行しないように実現されても良い。
最終区間の登録数35が最大許容数と等しい場合(S105、S106でY)、登録手段20はフィルタ生成登録処理を行う。
フィルタ生成登録処理において、登録手段20は、現在の最終区間の範囲情報32の終了時刻を『未定』から現時刻に変更する(S108)。このとき、登録手段20は、現在の最終区間の区間行40(格納されている全ペア情報43を含む)を削除しても良い。本実施形態に於いては、今後、当該区間を対象としたフィルタ拡張処理は発生せず、当該区間のペア情報43は不要となるからである。
次に同手段は、フィルタ記憶部23に新たな区間エントリ30とビット列37を、メンバ記憶部22に新たな区間行40を生成して、新たな最終区間として初期設定する(S109)。具体的な処理は、前述の初期設定処理S303に準ずる。
図7は、検索手段21の動作フローチャートである。
検索手段21は、検索端末13からL個の属性情報と検索の範囲を受信し、受信した属性情報からメンバを生成する(S201)。検索手段21は、メンバの生成を登録手段20と同様に行う。なお、検索の範囲は受信しなくても構わない。また、検索手段21は、L個の属性値の代わりにイベントデータ全体を受信しても良い。
検索の範囲を受信した場合(S202でY)、検索手段21は、フィルタ記憶部23の範囲情報32を走査して、当該検索の範囲の検索値の範囲の少なくとも一部を包含する全ての区間の区間エントリ30を取得する(S203)。具体的に同手段は、区間エントリ30のアドレスまたは区間ID31のリストを取得する。
検索の範囲を受信しない場合(S202でN)、検索手段21は全ての区間の区間エントリ30を取得する(S204)。
検索手段21は、取得した全ての区間のビット列37を取得し、生成したメンバが、当該ビット列37に登録されているかどうかを判定する(S205)。メンバのビット列37への登録判定は、上述したk個のハッシュ関数hi(i=1,2,…,k)の関数値で示される位置のビットがONであるか否かで行われる。ここで、ビット位置は、最下位ビット(第0番目ビット)から数えられる。ハッシュ関数hiの関数値で示された位置のビットが全てONであれば、検索手段21はメンバが登録されている(真)と判定する。そうでない場合、同手段は登録されていない(偽)であると判定する。
ある区間のビット列37について判定を行った結果が真である場合(S206でY)、検索手段21は、真という判定結果を検索端末13に送信する(S208)。
取得した全ての区間のビット列37について偽である場合(S206、S207共にN)、検索手段21は、偽という判定結果を検索端末13に送信する(S208)。
図8は圧縮手段24の動作フローチャートである。圧縮手段24は、登録数35に対して偽陽性判定確率がp以下を保証することのできるビット列37のビット数Mを計算し、ビット列37をMビット数に縮小させて、フィルタ記憶部23の容量を削減する。
圧縮手段24は、フィルタ拡張処理が実装されていない場合等、ビット列37の生成される初期ビット数が大きな場合に有効である。圧縮手段24は実装されていなくても良い。
圧縮手段24は例えば、定期的に繰り返し起動される。圧縮手段24は新たな最終区間の生成に伴って起動されても良い。起動されると、圧縮手段24はフィルタ記憶部23を参照して、例えば最終区間以外の全区間について、登録数35から偽陽性判定確率がp以下であることを保証できるビット数Mを求める(S401)。
具体的に、圧縮手段24は以下の式を満たす値jを求め、M=a×2**jとする。

Figure 2010266952
次に、圧縮手段24は、ある区間について値Mが処理対象区間のサイズ33より小さい場合(S402でY)、次の手順に従い当該区間のビット列37の圧縮処理を行う。そのような区間が複数ある場合は、全てのそのような区間について圧縮処理を行う。圧縮手段24は、先ず、圧縮処理対象区間の現在のビット列37(B)をフィルタポインタ36から取得する(S403)。同手段は、ビット数がMのビット列37(B’)を生成して全ビットをOFFに初期化する。同手段は、そのアドレスとビット数Mを、処理対象区間のサイズ33とフィルタポインタ36に設定し、許容数34をMに合わせて更新する(S404)。許容数34の更新は許容表50を参照して行われる。
最後に圧縮手段24は、Bに登録されていたメンバをB’に登録し直す(S405)。同手段は、同時にペア情報43の更新も行う。具体的に、圧縮手段24は処理対象区間の区間行40に格納されている全てのペア情報43を対象に以下のことを行う。
1)圧縮手段24は、Rmiの第nビット目(n=M−1...j+1)のON/OFFを検査し、ONである時はRpiからa×2**nを減ずるように更新し、OFFである時はそのままの値とする。
2)圧縮部24は、更新後のRpiの値に基づいて、B’の第Rpi番目ビットをONとする。
ビット列37のビット長が2のべき乗(a=1)のとき、圧縮手段24は、Bを走査し、ONが設定されているビット位置iに対して、Mを除数とするiの剰余i’を求め、B’のi’番目のビットをONに設定しても良い。この場合、圧縮手段24は、ペア情報43を必要としない。検索時に、Bの代わりにB’を用いても偽陽性判定確率が悪化しないことは、圧縮前と圧縮後のサイズ33が共に2のべき乗であることにより保証される。
図9は、登録手段20(定期処理)の動作フローチャートである。本処理に於いて、登録手段20は、例えば定期的に起動され(S501)て、フィルタ生成登録処理を行う(S502)。フィルタ生成登録処理は、登録手段20(登録処理)の一部として行われるものと同じである(図6参照)。
本処理を実装したメンバ管理装置10は、メンバ数がビット列37の最大許容値と等しくなった時点で新たなビット列37を生成することに加え、ビット列37の使用開始後、一定時間経過に伴い新たなビット列37を生成する。
本処理により、同一ビット列37が長時間使用される(当該ビット列37の区間が長期間にわたる)ことを防止し、時間範囲指定を伴うメンバ検索時の偽陽性判定確率の上昇を抑えることが出来る。
なお、本処理は実装されなくても良い。さらに、本処理を実装したときは、登録手段20の登録処理におけるフィルタ生成登録処理はなくても良い。
[具体的な説明]
以下、メンバ管理装置10のいくつかの処理について、データ例を挙げて説明する。
最初は、メンバeをブルームフィルタ(ビット列37)に登録する処理の説明である。以下の説明に於いて、フィルタ記憶部23のブルームフィルタの情報は以下の4つの項目で表現される。
(区間ID31、サイズ33、登録数35、ビット列37)
フィルタの最大ビット数をM、現在のフィルタのビット数(サイズ33の値)をMjとする。ブルームフィルタの最大ビット数をM=2**23=8388608、偽陽性判定確率をp=0.01とする。
このとき、ハッシュ関数の個数k(式(1))は、小数点以下を繰り上げてk=7となる。以下は、属性値の数Lを2とした場合のハッシュ関数例である。
h1(x1,x2)=(617×x1+2089×x2) mod μ
h2(x1,x2)=(22783×x1+15511×x2) mod μ
h3(x1,x2)=(4157×x1+751×x2) mod μ
h4(x1,x2)=(11161×x1+10399×x2) mod μ
h5(x1,x2)=(67801×x1+11113×x2) mod μ
h6(x1,x2)=(83×x1+2671×x2) mod μ
h7(x1,x2)=(107×x1+54517×x2) mod μ
但し、μはフィルタの最大ビット数Mもしくは現在のフィルタのビット数Mjである。各ハッシュ関数hi(x1,x2,…,xL)=(ai1×x1+ai2×x2+…+aiL×xL) mod μの、剰余演算を行う前の値がYi(=ai1×x1+ai2×x2+…+aiL×xL)であるとする。
メンバeの属性値1および属性値2が、それぞれx1=123、x2=456であるとする。このとき、取得した最新のブルームフィルタの情報が、(000001,65536,6836,B)であるとする。
ハッシュ関数h1(123,456)のY1の値は1028475となる。従って、登録手段20は、Bの(X1 mod Mj)=45435番目のビット(B[45435])を1にセットする。登録手段20は、他の各ハッシュ関数についても同様にBの更新を行う。
このとき、ブルームフィルタの拡張やブルームフィルタの生成登録が無ければ、登録手段20が(000001,65536,6837,B)をブルームフィルタの情報としてフィルタ記憶部23に格納して、メンバeの登録を完了する(S103)。
次の説明は、各ハッシュ関数hi(123,456)から導出されるメンバ情報を生成する場合についての説明である。
現在使用しているブルームフィルタの区間ID31が000001である場合、ハッシュ関数h1を用いて生成されるメンバ情報(区間ID31,Rp1,Rm1)は、(000001,45435,1028475)である。ここで、Rp1=Y1 mod Mjである。Rm1は、第mビットを、Y1 mod 2**mが奇数であれば1、偶数であれば0とする最大ビット数Mのビット列である。上記のメンバ登録処理と同様、登録手段20は、他の各ハッシュ関数から導出されるメンバ情報についても計算し、メンバ記憶部22に格納する(S104)。
次の説明は、メンバ情報を使用したフィルタの拡張処理の説明である。
フィルタ拡張処理(図6参照)は、例えば、Mj=65536でp=0.01と設定されている場合、登録数35が、許容数34(Mj/log0.6185(p)=65536/9.584957167=6837)と等しい状態で実行される。
登録手段20は、ブルームフィルタ000001のサイズ33を拡張するため、ブルームフィルタのビット列37の更新と、その更新に伴うメンバ情報の修正を行う。同手段は、各メンバ情報について以下の処理を行う。
ここで、メンバ情報が、(000001,45435,1028475)および(000001,44925,1486717)であるとする。現在使用しているブルームフィルタのビット列37(B)において、B[45434]とB[44924]は1にセットされている。
このとき、登録手段20は、サイズ33を65536(2の16乗)から131072(2の17乗)へ拡張しても、ハッシュ関数で指されるビット位置の値が同じであることを保証するように更新を行う。
メンバ情報(000001,45435,1028475)に関して、Rmiである1028475(1111 1011 0001 0111 10112)の16ビット目が1である。従って、登録手段20は、45435+Mjを計算し、メンバ情報を(000001,110971,1028475)に更新する。
メンバ情報(000001,44925,1486717)に関して、Rmiである1486717(1 0110 1010 1111 0111 11012)は16ビット目が0であるので、メンバ情報の変更は行われない。
登録手段20は、更新があったメンバ情報について、B[更新後Rpi]値を1にセットすることでフィルタを更新する。さらに登録手段20は、フィルタ記憶部23が管理する情報についても(000001,65536,6836,B)から(000001,131072,6837,B’)のように更新する(S110)。
上記のようなフィルタ拡張処理を行っても、そのブルームフィルタを利用したメンバシップクエリの真偽判定の結果が変わらないのは、x≦yのとき、以下の恒等式から保証される。

Figure 2010266952
ここでAは任意の正整数である。例えば、μ=65536およびμ=131072とした場合のハッシュ関数h1(123,456)およびh2(123,456)の値は等しい。
次の説明は、検索範囲を入力した場合の検索処理についての説明である。
属性値(123,345)および検索範囲[Ts,Te]が与えられた場合、検索手段21は以下の検索を行う。例えば、範囲情報32が{(000000,200902010000),(000001,200902010100),(000002,200902010200),…,(000024,200902020000)}であるとする。ここで、(000000,20090201000)は、区間ID31が000000で、範囲情報32の開始時刻が2009年2月1日午前0時0分を表しているものとする。終了時刻は、次の区間の開始直前である。
この状況において、検索手段21が、Ts=200902010830(2009年2月1日8時30分)とTe=200902011715(2009年2月1日17時15分)の検索範囲を入力したとする。
検索手段21は、範囲情報32に対して二分探索などを実行することにより、TsおよびTeに関して、それら以下の値のなかで最も大きい値(predecessor;Pre)を持つような値をそれぞれ求める。開始時刻TsのPreは200902010800であり、終了日時TeのPreは200902011700となる。その結果、検索手段21は、区間ID31の集合{000008,000009,…,000017}を得る(S203)。検索手段21は、これらの区間ID31に対応するビット列37に対して、検索を実行する。
なお、フィルタ記憶部23は、範囲情報32が無効な(所定の無効値が格納されている)区間エントリ30を包含しても良い。当該区間は、例えば、検索値を伴わずにイベントデータが入力された場合に、メンバ登録対象となる。また、当該区間は、検索範囲を伴わずに属性情報が入力された場合に、メンバ検索対象となる。
本実施形態のメンバ管理装置10の第1の効果は、時間経過等とともにイベントデータの個数が増加するようなデータベースの利用に関し、偽陽性判定確率を増加させることなく、効率的にブルームフィルタをキャッシュとして利用できることである。その理由は、時間等の区間ごとにブルームフィルタとして使用するビット列37を用意し、登録数35の上昇を抑えるように、新たな区間を生成して当該区間に新たなビット列37を生成するからである。
本実施形態のメンバ管理装置10の第2の効果は、時間等の検索範囲指定を含むメンバシップクエリを実現できることである。その理由は、時間等の検索値の区間ごとにブルームフィルタを分割し、検索の際に必要とするフィルタを特定し、検索処理を行うためである。
本実施形態のメンバ管理装置10の第3の効果は、メンバ管理装置10がブルームフィルタの記憶容量を無駄にしないことである。その理由は、登録されているメンバの数に比して、ビット列37が大きすぎる場合に圧縮するからである。
本実施形態のメンバ管理装置10の第4の効果は、効率よくブルームフィルタの拡張/圧縮を行うことである。その理由は、ブルームフィルタとして使用するビット列37のサイズ33を定数a×2のべき乗に設定し、拡張/圧縮処理を簡単にしているためである。メンバ管理装置10は、ブルームフィルタの拡張/圧縮処理において、ハッシュ値の計算を省くことができ、さらに、単純なビット操作により更新が実行できる。
以下は、本発明の第2の実施形態にかかるメンバ管理装置10の説明である。本実施形態のメンバ管理装置10は、範囲の定まった(例えば、開始時刻と終了時刻等が定まった)区間のビット列37にメンバを追加しても、偽陽性判定確率の上昇を抑えつつ効率的にメンバを検索出来る。従って、本実施形態のメンバ管理装置10は、年齢や温度のような一般に有界な値を検索範囲に使用する場合に適している。
図10は、第2の実施形態にかかるメンバ記憶部22の構成を示す図である。本実施形態のメンバ記憶部22の各メンバエントリ41はペア情報43に加え、メンバポインタ44を格納する。メンバポインタ44は、各イベントデータまたは各メンバへのアクセス情報である。メンバポインタ44は、例えば、メンバ自体でも良いしイベントDB26に格納されているイベントデータのアドレスでも良い。
本実施形態において、イベント生成装置12が送信する検索値は温度等である。第1の実施形態のような場合には、検索値は過去のある時点の時刻であってもよい。検索値はイベントデータの属性値のひとつ(例えば、イベントデータが属性値として温度を包含する)でも良い。以降、検索値はイベントデータの属性値のひとつであるとする。
本実施形態の登録手段20は、図6の登録処理においてメンバ生成(S101)後、フィルタ記憶部23から、入力検索値を範囲情報32の範囲内に含む区間エントリ30を特定して、当該エントリのポインタ36からビット列37を取得する(S102)。ここで、特定した区間を第1の区間とする。
なお、検索値がイベントデータの属性値のひとつであって、当該属性値が省略されたイベントデータが入力された場合、登録手段20は、範囲情報32が無効な区間エントリ30からビット列37を取得する。
図11は、第2の実施形態にかかる登録手段20(フィルタ生成登録処理)の動作フローチャートである。本処理に於いて、登録手段20は第1の区間を分割して2つの区間(第2の区間と第3の区間)とそれぞれの区間のビット列37を生成する。
登録手段20は、第2の区間用にファイル記憶部23に区間エントリ30、ビット列37を、メンバ記憶部22に区間行40を新たに生成する(S601)。ビット列37は、初期ビット数で生成され全ビットOFFで初期化される。許容数34は、許容表50から取得された初期ビット数対応の値を格納する。登録数35は0に設定される。
なお、第3の区間の区間エントリ30、ビット列37、区間行40は、第1の区間のものが流用される。流用せず、登録手段20が新たに生成しても良い。
登録手段20は、新たに作成した区間エントリ30に第2の区間の範囲情報32を、第1の区間の区間エントリ30に第3の区間の範囲情報32をそれぞれ格納する(S602)。例えば、第1の区間の中央値を境界値として第1の区間を分割すると、登録手段20は、第1の区間の開始値と中央値を第2の区間の範囲情報32に格納し、中央値と第1の区間の終了値を第3の区間の範囲情報32に格納する。境界値は他の値であっても構わない。
登録手段20は、第1の区間のビット列37の全ビットをOFFで初期化する。また、登録手段20は第1の区間の区間エントリ30の登録数35を0に設定する(S603)。
登録手段20は、メンバ記憶部22の第1の区間のメンバポインタ44経由で、イベントDB26内のイベントデータにアクセスして、各イベントデータからメンバを生成する(S604)。
登録手段20は、生成されたメンバから検索値を取り出して、第2の区間に属するか判断する(S605)。メンバが第2の区間に属せば(S605でY)、登録手段20は当該メンバを第2の区間に登録する(S606)。具体的に、登録手段20は、第2の区間のビット列37に当該メンバを登録し、登録数35を1加算する。さらに登録手段20は、メンバ記憶部22の第2の区間の区間行40に当該メンバのメンバエントリ41を追加して、当該メンバのペア情報43を新たに作成して格納する。同手段は、追加したメンバエントリ41に第1の区間の区間行40の当該メンバのメンバエントリ41のメンバポインタ44をコピーし、第1の区間の当該メンバのメンバエントリ41を削除する。
メンバが第3の区間に属せば(S605でN)、登録手段20は当該メンバを第3の区間に登録する(S607)。具体的に、登録手段20は、第3の区間のビット列37に当該メンバを登録し、登録数35を1加算する。
登録手段20は、第1の区間に登録されていた全メンバの処理が終了すると(S608でY)、フィルタ生成登録処理を終了する。
本実施形態は、他の点に於いて、第1の実施形態と同じである。
本実施形態のメンバ管理装置10は、範囲の定まった区間のビット列37にメンバを追加しても、偽陽性判定確率の上昇を抑えつつ効率的にメンバを検索出来る。その理由は、区間ごとにブルームフィルタとして使用するビット列37を用意し、登録数35の上昇を抑えるように、区間を分割して当該分割区間の各々に新たなビット列37を生成するからである。
図12は、第3の実施形態にかかるメンバ管理システム60の全体構成図である。本実施形態にかかるメンバ管理システム60は、メンバ管理装置10、メンバ検索装置61、イベント生成装置12および検索端末13を包含する。
本実施形態のメンバ管理装置10は検索部21を備えない。検索部21は、メンバ管理装置10とフィルタ記憶部23を共有するメンバ検索装置61に包含されている。本実施形態のメンバ管理装置10は負荷軽減が可能である。
図13は、メンバ管理装置10の基本構成図である。
メンバ管理装置10は、検索値がとりうる範囲を分割した区間ごとに、区間の範囲情報32とビット列37を格納するフィルタ記憶部23と、a)検索値と範囲情報32から特定される第1の区間に対応するビット列37(第1のビット列)が生成条件を満たさなければ、入力データである又は入力データから生成したメンバを第1のビット列に登録し、b)生成条件を満たせば、新たな区間(第2の区間)の範囲情報32とビット列37(第2のビット列)を生成してフィルタ記憶部23に格納し、第1の区間の範囲情報32を第1の区間と第2の区間が重複しないように変更して(変更後を第3の区間とする)、当該メンバを第3の区間に対応するビット列37または第2のビット列に登録する登録手段20、を備える。
10 メンバ管理装置
11 コンピュータ
12 イベント生成装置
13 検索端末
20 登録手段
21 検索手段
22 メンバ記憶部
23 フィルタ記憶部
24 圧縮手段
25 DBMS
26 イベントDB
29 メンバ管理プログラム
30 区間エントリ
31 区間ID
32 範囲情報
33 サイズ
34 許容数
35 登録数
36 フィルタポインタ
37 ビット列
40 区間行
41 メンバエントリ
43 ペア情報
44 メンバポインタ
50 許容表
60 メンバ管理システム
61 メンバ検索装置

Claims (22)

  1. 属性値の組であるメンバとビット列のビット数で特定される、前記ビット列中のビットをONにすることを『ビット列にメンバを登録する』、当該ビットがONであることを検出することを『ビット列からメンバ検出する』、登録されていないメンバを検出してしまう確率を『偽陽性判定確率』、ビット列にメンバを追加すると当該ビットの偽陽性判定確率が所定の最大値以上になることを『生成条件』と定義した場合に於いて、
    検索値がとりうる範囲を分割した区間ごとに、区間の範囲情報とビット列を格納するフィルタ記憶部と、
    a)検索値と範囲情報から特定される第1の区間に対応するビット列(第1のビット列)が生成条件を満たさなければ、入力データである又は入力データから生成したメンバを前記第1のビット列に登録し、
    b)前記生成条件を満たせば、新たな区間(第2の区間)の範囲情報とビット列(第2のビット列)を生成して前記フィルタ記憶部に格納し、前記第1の区間の範囲情報を前記第1の区間と前記第2の区間が重複しないように変更して(変更後を第3の区間とする)、当該メンバを前記第3の区間に対応するビット列または前記第2のビット列に登録する登録手段、を備えるメンバ管理装置。
  2. 時間を分割した複数の区間であって最終区間の終了時刻が未定である区間ごとに、区間の範囲情報とビット列を格納する前記フィルタ記憶部と、
    前記検索値として現時刻を、前記第1の区間として前記最終区間を特定し、前記生成条件を満たした場合に、前記最終区間の終了時刻が現時刻の直前になるように当該区間の範囲情報を変更して、前記第2の区間の範囲情報として、開始時刻が前記現時刻である新たな最終区間の範囲情報を生成して前記フィルタ記憶部に格納する前記登録手段、を備える請求項1のメンバ管理装置。
  3. 前記最終区間の開始時刻から所定時間が経過すると、前記最終区間の終了時刻が現時刻の直前になるように当該区間の範囲情報を変更して、前記第2の区間の範囲情報として、開始時刻が前記現時刻である新たな最終区間の範囲情報を生成して前記フィルタ記憶部に格納する前記登録手段を備える請求項2のメンバ管理装置。
  4. 区間ごとに当該区間のビット列に登録されているメンバへのアクセス情報を格納するメンバ記憶部と、
    前記第1の区間を分割して、前記第2の区間と前記第3の区間を生成して両区間の範囲情報を格納し、前記第1のビット列に登録されていたメンバを前記メンバ記憶部の情報に基づいて、前記第3の区間に対応するビット列または前記第2のビット列に登録し直す前記登録手段、を備える請求項1乃至3の何れかのメンバ管理装置。
  5. 2のべき乗のビット数を有するビット列を格納する前記フィルタ記憶部と、
    前記フィルタ記憶部のビット列に登録されているメンバの数に基づいてビット数2のj乗を算出し、前記ビット列の最下位ビット(第0番目ビット)から数えてi番目ビットがONであるとき各iを2のj乗で除した乗余(mod)値を求め、各mod値番目ビットをONに、他のビットをOFFに設定したビット数2のj乗の新たなビット列を生成して、前記ビット列を置換する圧縮手段、を備える請求項1乃至4の何れかのメンバ管理装置。
  6. 2のべき乗の整数(a)倍のビット数を有するビット列を格納する前記フィルタ記憶部と、
    区間ごとに当該区間のビット列に登録されているメンバのペア情報を格納するメンバ記憶部と、
    メンバとビット列のビット数を入力とした複数(k)個のハッシュ関数の各関数値で特定されるビットをONにして当該ビット列に当該メンバを登録し、
    ビット列ごとに登録する各メンバ対応に、k個のハッシュ関数ごとのRp(当該メンバと当該ビット列の現ビット数a×2のj乗のハッシュ関数値)とRm(当該メンバとa×2のm乗(mは0乃至(ビット列の所定最大ビット数−1)の各整数値)のハッシュ関数値が奇数であれば最下位ビット(第0ビット目)から数えて第m番目ビットをON、偶数であればOFFとしたビット列)のk個のペアを前記ペア情報として前記メンバ記憶部に格納し、
    前記生成条件を満たす場合、前記メンバ記憶部に格納されている前記第1のビット列対応に格納されている前記Rpと前記Rmのペアに基づいて、
    a)前記Rmの最下位ビット(第0番目ビット)から数えて第j番目ビットがOFFである各ペアについては前記Rp番目ビットをONに、
    b)前記Rmの第j番目ビットがONである各ペアについて前記Rp+2のj乗番目ビットをONに、
    他のビットをOFFに設定したビット数が2倍(a×2のj+1乗)のビット列を生成して、前記第1のビット列を置換する前記登録手段、を備える請求項1乃至4の何れかのメンバ管理装置。
  7. 入力された検索値の範囲の少なくとも一部を包含する全ての区間を前記フィルタ記憶部の範囲情報に基づいて取得し、入力データから生成したメンバが、取得した前記区間に対応するビット列から検出できるか否かを判定して判定結果を出力する検索手段、を備える請求項1乃至6の何れかのメンバ管理装置。
  8. 請求項1乃至6の何れかのメンバ管理装置と、
    前記メンバ管理装置と前記フィルタ記憶部を共有し、
    入力された検索値の範囲の少なくとも一部を包含する全ての区間を前記フィルタ記憶部の範囲情報に基づいて取得し、入力データである又は入力データから生成したメンバが、取得した前記区間に対応するビット列から検出できるか否かを判定して判定結果を出力する検索手段、を備えるメンバ検索装置を包含するメンバ管理システム。
  9. 属性値の組であるメンバとビット列のビット数で特定される、前記ビット列中のビットをONにすることを『ビット列にメンバを登録する』、当該ビットがONであることを検出することを『ビット列からメンバ検出する』、登録されていないメンバを検出してしまう確率を『偽陽性判定確率』、ビット列にメンバを追加すると当該ビットの偽陽性判定確率が所定の最大値以上になることを『生成条件』と定義した場合に於いて、
    検索値がとりうる範囲を分割した区間ごとに、区間の範囲情報とビット列を格納するフィルタ記憶部を備えるコンピュータに、
    a)検索値と範囲情報から特定される第1の区間に対応するビット列(第1のビット列)が生成条件を満たさなければ、入力データである又は入力データから生成したメンバを前記第1のビット列に登録し、
    b)前記生成条件を満たせば、新たな区間(第2の区間)の範囲情報とビット列(第2のビット列)を生成して前記フィルタ記憶部に格納し、前記第1の区間の範囲情報を前記第1の区間と前記第2の区間が重複しないように変更して(変更後を第3の区間とする)、当該メンバを前記第3の区間に対応するビット列または前記第2のビット列に登録する登録処理、を実行させるメンバ管理プログラム。
  10. 時間を分割した複数の区間であって最終区間の終了時刻が未定である区間ごとに、区間の範囲情報とビット列を格納する前記フィルタ記憶部を備える前記コンピュータに、
    前記検索値として現時刻を、前記第1の区間として前記最終区間を特定し、前記生成条件を満たした場合に、前記最終区間の終了時刻が現時刻の直前になるように当該区間の範囲情報を変更して、前記第2の区間の範囲情報として、開始時刻が前記現時刻である新たな最終区間の範囲情報を生成して前記フィルタ記憶部に格納する前記登録処理、を実行させる請求項9のメンバ管理プログラム。
  11. 前記コンピュータに
    前記最終区間の開始時刻から所定時間が経過すると、前記最終区間の終了時刻が現時刻の直前になるように当該区間の範囲情報を変更して、前記第2の区間の範囲情報として、開始時刻が前記現時刻である新たな最終区間の範囲情報を生成して前記フィルタ記憶部に格納する前記登録処理を実行させる請求項10のメンバ管理プログラム。
  12. 区間ごとに当該区間のビット列に登録されているメンバへのアクセス情報を格納するメンバ記憶部を備える前記コンピュータに、
    前記第1の区間を分割して、前記第2の区間と前記第3の区間を生成して両区間の範囲情報を格納し、前記第1のビット列に登録されていたメンバを前記メンバ記憶部の情報に基づいて、前記第3の区間に対応するビット列または前記第2のビット列に登録し直す前記登録処理、を実行させる請求項9乃至11の何れかのメンバ管理プログラム。
  13. 2のべき乗のビット数を有するビット列を格納する前記フィルタ記憶部を備える前記コンピュータに、
    前記フィルタ記憶部のビット列に登録されているメンバの数に基づいてビット数2のj乗を算出し、前記ビット列の最下位ビット(第0番目ビット)から数えてi番目ビットがONであるとき各iを2のj乗で除した乗余(mod)値を求め、各mod値番目ビットをONに、他のビットをOFFに設定したビット数2のj乗の新たなビット列を生成して、前記ビット列を置換する圧縮処理、を実行させる請求項9乃至12の何れかのメンバ管理プログラム。
  14. 2のべき乗の整数(a)倍のビット数を有するビット列を格納する前記フィルタ記憶部と、区間ごとに当該区間のビット列に登録されているメンバのペア情報を格納するメンバ記憶部を備える前記コンピュータに、
    メンバとビット列のビット数を入力とした複数(k)個のハッシュ関数の各関数値で特定されるビットをONにして当該ビット列に当該メンバを登録し、
    ビット列ごとに登録する各メンバ対応に、k個のハッシュ関数ごとのRp(当該メンバと当該ビット列の現ビット数a×2j乗のハッシュ関数値)とRm(当該メンバとa×2のm乗(mは0乃至(ビット列の所定最大ビット数−1)の各整数値)のハッシュ関数値が奇数であれば最下位ビット(第0ビット目)から数えて第m番目ビットをON、、偶数であればOFFとしたビット列)のk個のペアを前記ペア情報として前記メンバ記憶部に格納し、
    前記生成条件を満たす場合、前記メンバ記憶部に格納されている前記第1のビット列対応に格納されている前記Rpと前記Rmのペアに基づいて、
    a)前記Rmの最下位ビット(第0番目ビット)から数えて第j番目ビットがOFFである各ペアについては前記Rp番目ビットをONに、
    b)前記Rmの第j番目ビットがONである各ペアについて前記Rp+2のj乗番目ビットをONに、
    他のビットをOFFに設定したビット数が2倍(a×2のj+1乗)のビット列を生成して、前記第1のビット列を置換する前記登録処理、を実行させる請求項9乃至12の何れかのメンバ管理プログラム。
  15. 前記コンピュータに
    入力された検索値の範囲の少なくとも一部を包含する全ての区間を前記フィルタ記憶部の範囲情報に基づいて取得し、入力データから生成したメンバが、取得した前記区間に対応するビット列から検出できるか否かを判定して判定結果を出力する検索処理、を実行させる請求項9乃至14の何れかのメンバ管理プログラム。
  16. 属性値の組であるメンバとビット列のビット数で特定される、前記ビット列中のビットをONにすることを『ビット列にメンバを登録する』、当該ビットがONであることを検出することを『ビット列からメンバ検出する』、登録されていないメンバを検出してしまう確率を『偽陽性判定確率』、ビット列にメンバを追加すると当該ビットの偽陽性判定確率が所定の最大値以上になることを『生成条件』と定義した場合に於いて、
    検索値がとりうる範囲を分割した区間ごとに、区間の範囲情報とビット列を格納するフィルタ記憶部を備えるコンピュータが、
    a)検索値と範囲情報から特定される第1の区間に対応するビット列(第1のビット列)が生成条件を満たさなければ、入力データである又は入力データから生成したメンバを前記第1のビット列に登録し、
    b)前記生成条件を満たせば、新たな区間(第2の区間)の範囲情報とビット列(第2のビット列)を生成して前記フィルタ記憶部に格納し、前記第1の区間の範囲情報を前記第1の区間と前記第2の区間が重複しないように変更して(変更後を第3の区間とする)、当該メンバを前記第3の区間に対応するビット列または前記第2のビット列に登録する登録工程、を有するメンバ管理方法。
  17. 時間を分割した複数の区間であって最終区間の終了時刻が未定である区間ごとに、区間の範囲情報とビット列を格納する前記フィルタ記憶部を備える前記コンピュータが、
    前記検索値として現時刻を、前記第1の区間として前記最終区間を特定し、前記生成条件を満たした場合に、前記最終区間の終了時刻が現時刻の直前になるように当該区間の範囲情報を変更して、前記第2の区間の範囲情報として、開始時刻が前記現時刻である新たな最終区間の範囲情報を生成して前記フィルタ記憶部に格納する前記登録工程、を有する請求項16のメンバ管理方法。
  18. 前記コンピュータが
    前記最終区間の開始時刻から所定時間が経過すると、前記最終区間の終了時刻が現時刻の直前になるように当該区間の範囲情報を変更して、前記第2の区間の範囲情報として、開始時刻が前記現時刻である新たな最終区間の範囲情報を生成して前記フィルタ記憶部に格納する前記登録工程を有する請求項17のメンバ管理方法。
  19. 区間ごとに当該区間のビット列に登録されているメンバへのアクセス情報を格納するメンバ記憶部を備える前記コンピュータが、
    前記第1の区間を分割して、前記第2の区間と前記第3の区間を生成して両区間の範囲情報を格納し、前記第1のビット列に登録されていたメンバを前記メンバ記憶部の情報に基づいて、前記第3の区間に対応するビット列または前記第2のビット列に登録し直す前記登録工程、を有する請求項16乃至18の何れかのメンバ管理方法。
  20. 2のべき乗のビット数を有するビット列を格納する前記フィルタ記憶部を備える前記コンピュータが、
    前記フィルタ記憶部のビット列に登録されているメンバの数に基づいてビット数2のj乗を算出し、前記ビット列の最下位ビット(第0番目ビット)から数えてi番目ビットがONであるとき各iを2のj乗で除した乗余(mod)値を求め、各mod値番目ビットをONに、他のビットをOFFに設定したビット数2のj乗の新たなビット列を生成して、前記ビット列を置換する圧縮工程、を有する請求項16乃至19の何れかのメンバ管理方法。
  21. 2のべき乗の整数(a)倍のビット数を有するビット列を格納する前記フィルタ記憶部と、区間ごとに当該区間のビット列に登録されているメンバのペア情報を格納するメンバ記憶部を備える前記コンピュータが、
    メンバとビット列のビット数を入力とした複数(k)個のハッシュ関数の各関数値で特定されるビットをONにして当該ビット列に当該メンバを登録し、
    ビット列ごとに登録する各メンバ対応に、k個のハッシュ関数ごとのRp(当該メンバと当該ビット列の現ビット数a×2j乗のハッシュ関数値)とRm(当該メンバとa×2のm乗(mは0乃至(ビット列の所定最大ビット数−1)の各整数値)のハッシュ関数値が奇数であれば最下位ビット(第0ビット目)から数えて第m番目ビットをON、、偶数であればOFFとしたビット列)のk個のペアを前記ペア情報として前記メンバ記憶部に格納し、
    前記生成条件を満たす場合、前記メンバ記憶部に格納されている前記第1のビット列対応に格納されている前記Rpと前記Rmのペアに基づいて、
    a)前記Rmの最下位ビット(第0番目ビット)から数えて第j番目ビットがOFFである各ペアについては前記Rp番目ビットをONに、
    b)前記Rmの第j番目ビットがONである各ペアについて前記Rp+2のj乗番目ビットをONに、
    他のビットをOFFに設定したビット数が2倍(a×2のj+1乗)のビット列を生成して、前記第1のビット列を置換する前記登録工程、を有する請求項16乃至19の何れかのメンバ管理方法。
  22. 前記コンピュータが
    入力された検索値の範囲の少なくとも一部を包含する全ての区間を前記フィルタ記憶部の範囲情報に基づいて取得し、入力データから生成したメンバが、取得した前記区間に対応するビット列から検出できるか否かを判定して判定結果を出力する検索工程、を有する請求項16乃至21の何れかのメンバ管理方法。
JP2009115804A 2009-05-12 2009-05-12 メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法 Withdrawn JP2010266952A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009115804A JP2010266952A (ja) 2009-05-12 2009-05-12 メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009115804A JP2010266952A (ja) 2009-05-12 2009-05-12 メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法

Publications (1)

Publication Number Publication Date
JP2010266952A true JP2010266952A (ja) 2010-11-25

Family

ID=43363901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009115804A Withdrawn JP2010266952A (ja) 2009-05-12 2009-05-12 メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法

Country Status (1)

Country Link
JP (1) JP2010266952A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015132927A (ja) * 2014-01-10 2015-07-23 日本電気株式会社 情報処理システム、情報処理装置、監視装置、監視方法、及び、プログラム
CN106347412A (zh) * 2016-09-27 2017-01-25 湖南中车时代通信信号有限公司 一种自动化的lkj2000基础数据的复用方法和装置
JP2018525678A (ja) * 2015-08-18 2018-09-06 ノキア ソリューションズ アンド ネットワークス オサケユキチュア データベースクエリのための方法及びシステム
JP2019161256A (ja) * 2018-03-07 2019-09-19 株式会社東芝 情報管理装置、認証装置、情報管理システム、情報管理方法、およびコンピュータプログラム
JP2021092950A (ja) * 2019-12-10 2021-06-17 富士通株式会社 データ処理装置およびデータ処理プログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015132927A (ja) * 2014-01-10 2015-07-23 日本電気株式会社 情報処理システム、情報処理装置、監視装置、監視方法、及び、プログラム
US10282239B2 (en) 2014-01-10 2019-05-07 Nec Corporation Monitoring method
JP2018525678A (ja) * 2015-08-18 2018-09-06 ノキア ソリューションズ アンド ネットワークス オサケユキチュア データベースクエリのための方法及びシステム
CN106347412A (zh) * 2016-09-27 2017-01-25 湖南中车时代通信信号有限公司 一种自动化的lkj2000基础数据的复用方法和装置
JP2019161256A (ja) * 2018-03-07 2019-09-19 株式会社東芝 情報管理装置、認証装置、情報管理システム、情報管理方法、およびコンピュータプログラム
JP2021092950A (ja) * 2019-12-10 2021-06-17 富士通株式会社 データ処理装置およびデータ処理プログラム
JP7323804B2 (ja) 2019-12-10 2023-08-09 富士通株式会社 データ処理装置およびデータ処理プログラム

Similar Documents

Publication Publication Date Title
CN106815350B (zh) 一种云环境中动态的密文多关键词模糊搜索方法
US8037076B2 (en) Federated indexing from hashed primary key slices
JP4722620B2 (ja) 暗号化文書検索方法および暗号化文書検索システム
Urbani et al. Scalable RDF data compression with MapReduce
US10572442B2 (en) Systems and methods for providing distributed tree traversal using hardware-based processing
CN107729371B (zh) 区块链的数据索引及查询方法、装置、设备及存储介质
Awad et al. Chaotic searchable encryption for mobile cloud storage
US8346812B2 (en) Indexing in a resource description framework environment
Xiao et al. Using parallel bloom filters for multiattribute representation on network services
JP2010266952A (ja) メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法
US9734178B2 (en) Searching entity-key associations using in-memory objects
US20100287172A1 (en) Federated Document Search by Keywords
Yang et al. An enhanced dynamic hash TRIE algorithm for lexicon search
Naor et al. Tight bounds for sliding bloom filters
Ananthi et al. FSS-SDD: fuzzy-based semantic search for secure data discovery from outsourced cloud data
CN104580428A (zh) 一种数据路由方法、数据管理装置和分布式存储系统
CN101635001A (zh) 从数据库提取信息的方法和设备
AU2002351296B2 (en) System and method for processing a request using multiple database units
Elmi et al. Efficient skyline maintenance over frequently updated evidential databases
JP5949561B2 (ja) 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム
Kniesburges et al. Hashed Patricia Trie: Efficient longest prefix matching in peer-to-peer systems
Abawajy et al. A framework for scalable distributed provenance storage system
Zhu et al. Parallelization of skyline probability computation over uncertain preferences
Bhattacharya et al. Sampling in space restricted settings
JP5466191B2 (ja) アクセス制御システム、サーバ管理装置、データ蓄積装置、アクセス制御方法、サーバ管理プログラム、及びデータ蓄積プログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110706

A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120807