(57)【特許請求の範囲】
【請求項１】
システムであって、
１つまたは複数のプロセッサと、
命令を含むメモリであって、前記１つまたは複数のプロセッサによって実行されると、前記命令により、前記システムが、
エントリをブルームフィルタに追加するための第１の要求を受信し、
前記ブルームフィルタを照会して、前記ブルームフィルタの前記エントリの現在の反復値を判定し、前記現在の反復値が、第１のパリティ値または第２のパリティ値のいずれかであるパリティ属性を有し、前記第１のパリティ値が、前記ブルームフィルタの前記エントリの存在を示し、前記第２のパリティ値が、前記エントリが前記ブルームフィルタから削除されたことを示し、
少なくとも前記第１の要求に、少なくとも、
前記現在の反復値が、前記第１のパリティ値を有する場合、前記エントリが前記ブルームフィルタ内に存在することを示し、
前記現在の反復値が、前記第２のパリティ値を有する場合、
前記現在の反復値を、前記第１のパリティ値を有する第１の現在の反復値になるように増分し、
前記第１の現在の反復値及び前記エントリを利用して第１の出力値を生成し、
前記生成された第１の出力値を前記ブルームフィルタに追加することによって応答し、
前記ブルームフィルタから前記エントリを削除するための第２の要求を受信し、
少なくとも前記第２の要求に、少なくとも、
前記ブルームフィルタを照会して前記ブルームフィルタの前記エントリの前記現在の反復値を判定し、
第２の現在の反復値が、前記第２のパリティ値に対応する場合、前記エントリが前記ブルームフィルタ内に存在しないことを示し、
前記第２の現在の反復値が、前記第１のパリティ値に対応する場合、
前記現在の反復値を、前記第２のパリティ値を有する前記第２の現在の反復値に増分し、
前記第２の現在の反復値及び前記エントリを利用して第２の出力値を生成し、
前記生成された第２の出力値を前記ブルームフィルタに追加することによって応答する、
前記メモリを含む、
前記システム。
【請求項２】
前記１つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、前記ブルームフィルタを照会して、それぞれが異なる反復値を有する、前記ブルームフィルタを少なくとも複数回照会することによって前記現在の反復値を判定し、前記ブルームフィルタに前記エントリが追加された最も高い反復値として前記現在の反復値を判定する、請求項１に記載のシステム。
【請求項３】
前記１つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、前記第１の現在の反復値及び前記エントリをエントリ関数に入力し、前記現在の反復値と前記エントリを結合して、前記ブルームフィルタに追加される前記第１の出力値を生成する、請求項１または２に記載のシステム。
【請求項４】
コンピュータ実装方法であって、
実行可能な命令で構成される１つまたは複数のコンピュータシステムの制御下で、
確率的データ構造を照会して前記確率的データ構造内のエントリの現在の反復状態を判定し、前記現在の反復状態が、前記エントリがセットのメンバであることに対応する第１の状態及びセット内の前記エントリが存在しないことに対応する第２の状態を含む複数の状態からの前記エントリの状態を示すことと、
前記エントリが前記セットのメンバであることに対応する前記現在の反復状態の結果として、新しい反復状態が前記セットからの前記エントリの削除に対応するように、前記現在の反復状態を前記新しい反復状態に修正することと、
前記新しい反復状態及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記出力値を追加することとを含む、コンピュータ実装方法。
【請求項５】
前記確率的データ構造がブルームフィルタであり、
前記ブルームフィルタに前記出力値を追加することが、前記ブルームフィルタ内の前記出力値の存在を示すために、前記ブルームフィルタ内の１つまたは複数のビットをゼロから１に変更することを含む、請求項４に記載のコンピュータ実装方法。
【請求項６】
前記コンピュータ実装方法が、
前記エントリを前記確率的データ構造に追加するための要求を受信することと、
前記確率的データ構造を照会して前記エントリの前記現在の反復状態を判定することと、
前記第２の状態に対応する前記現在の反復状態の結果として、
前記現在の反復状態が、前記第１の状態に対応する新しい現在の反復状態になるように修正することと、
前記新しい現在の反復値及び前記エントリを利用して第２の出力値を生成することと、
前記確率的データ構造に前記生成された第２の出力値を追加することとをさらに含む、請求項４または５に記載のコンピュータ実装方法。
【請求項７】
前記出力値が、少なくとも前記新しい反復状態及び前記エントリをハッシュ関数に入力することによって生成される、請求項４から６のいずれか一項に記載のコンピュータ実装方法。
【請求項８】
前記現在の反復値を判定するために前記確率的データ構造に照会することが、
それぞれが異なる反復状態を有する、前記確率的データ構造を複数回照会することと、
前記現在の反復状態を、前記エントリが前記確率的データ構造に追加された最も高い反復状態として判定することとを含む、請求項４から７のいずれか一項に記載のコンピュータ実装方法。
【請求項９】
前記セットからの前記エントリの削除が、前記確率的データ構造に関連するデータベースからの前記エントリの削除の結果として生成された要求に応答して実行される、請求項４から８のいずれか一項に記載のコンピュータ実装方法。
【請求項１０】
コンピュータシステムに、少なくとも、
エントリを確率的データ構造に追加するための要求を受信する手順と、
前記追加の前記要求に応答して確率的データ構造内の前記エントリの現在の反復値を判定する手順であって、前記現在の反復値が、第１の状態及び第２の状態を含む複数の状態からの前記エントリの状態を示し、前記現在の反復値が、前記エントリが前記確率的データ構造に追加、または前記確率的データ構造から削除されるために使用された回数を示す、手順と、
前記判定された現在の反復値に少なくとも部分的に基づいて前記エントリの状態を判定する手順と、
少なくとも、
前記現在の反復値が前記第１の状態に対応する場合、前記エントリが前記確率的データ構造内に存在することを示すことと、
前記現在の反復値が前記第２の状態に対応する場合、
前記現在の反復値を、前記第１の状態に対応する新しい現在の反復値になるように増分することと、
前記新しい現在の反復値及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することとによって前記要求を満たす手順と、
を実行させるためのプログラム。
【請求項１１】
前記コンピュータシステムに、少なくとも、
前記エントリを前記確率的データ構造から削除するための要求を受信する手順であって、前記要求が前記確率的データ構造に関連するデータベースから前記エントリの削除の検出に応答して生成される、手順と、
前記削除の前記要求に応答して前記エントリの前記現在の反復値を判定する手順と、
少なくとも、
前記現在の反復値が前記第２の状態に対応する場合、前記エントリが前記確率的データ構造内に存在しないことを示すことと、
前記現在の反復値が前記第１の状態に対応する場合、
前記現在の反復値を、前記第２の状態に対応する新しい現在の反復値になるように増分することと、
前記新しい現在の反復値及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することとによって前記要求を満たす手順と、
をさらに実行させるための、請求項１０に記載のプログラム。
【請求項１２】
コンピュータシステムに、
エントリを確率的データ構造から削除するための要求を受信する手順であって、前記要求が前記確率的データ構造に関連するデータベースから前記エントリの削除の検出に応答して生成される、手順と、
前記削除の前記要求に応答して前記確率的データ構造内の前記エントリの現在の反復値を判定する手順であって、前記現在の反復値が、第１の状態及び第２の状態を含む複数の状態からの前記エントリの状態を示し、前記現在の反復値が、前記エントリが前記確率的データ構造に追加、または削除されるために使用された回数を示す、手順と、
前記判定された現在の反復値に少なくとも部分的に基づいて前記エントリの状態を判定する手順と、
少なくとも、
前記現在の反復値が前記第２の状態に対応する場合、前記エントリが前記確率的データ構造内に存在しないことを示すことと、
前記現在の反復値が前記第１の状態に対応する場合、
前記現在の反復値を、前記第２の状態に対応する新しい現在の反復値になるように増分することと、
前記新しい現在の反復値及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することとによって前記要求を満たす手順と、
を実行させるためのプログラム。
【請求項１３】
前記コンピュータシステムに、それぞれが異なる反復値を有する、前記確率的データ構造を複数回照会して、現在の反復値を判定する手順をさらに実行させるための、請求項１０から１２の何れか一項に記載のプログラム。
【請求項１４】
前記第１の状態が、セット内の前記エントリのメンバシップに対応し、前記第２の状態が、前記セット内の前記エントリが存在しないことに対応する、請求項１０から１３の何れか1つに記載のプログラム。
【請求項１５】
前記コンピュータシステムに、
前記エントリが前記確率的データ構造内に存在することに対応する前記現在の反復値の結果として、新しい反復値が、前記エントリが前記確率的データ構造に存在しないことに対応するように、前記新しい反復値を選択する手順と、
前記新しい反復値及び前記エントリを使用して生成された値を前記確率的データ構造に追加する手順と、
をさらに実行させるための、請求項１０から１４のいずれか一項に記載のプログラム。
【請求項１６】
コンピュータシステムに、少なくとも、
確率的データ構造を照会して前記確率的データ構造内のエントリの現在の反復状態を判定する手順であって、前記現在の反復状態が、前記エントリがセットのメンバであることに対応する第１の状態及びセット内の前記エントリが存在しないことに対応する第２の状態を含む複数の状態からの前記エントリの状態を示す、手順と、
前記エントリが前記セットのメンバであることに対応する前記現在の反復状態の結果として、
前記現在の反復状態の少なくとも部分的に基づいて新しい反復状態を判定する手順と、
前記新しい反復状態及び前記エントリを利用して出力値を生成する手順と、
前記確率的データ構造において、前記セットからの前記エントリの削除を示すために、前記確率的データ構造に前記出力値を追加する手順と、
を実行させるためのプログラム。
【請求項１７】
前記エントリを前記確率的データ構造に追加するための要求を受信する手順と、
前記確率的データ構造を照会して前記エントリの前記現在の反復状態を判定する手順と、
前記第２の状態に対応する前記現在の反復状態の結果として、
前記現在の反復状態の少なくとも部分的に基づいて異なる反復状態を判定し、前記第１の状態に対応させる手順と、
前記異なる反復状態及び前記エントリを利用して第２の出力値を生成する手順と、
前記確率的データ構造において、前記セットへの前記エントリの追加を示すために、前記確率的データ構造に前記出力値を追加する手順と、
をさらに実行させるための、請求項１６に記載のプログラム。
【請求項１８】
前記現在の反復状態は、第１のパリティ状態または第２のパリティ状態のいずれかであるパリティ属性を有し、前記第１のパリティ状態は第１の状態に対応し、前記第２のパリティ状態は第２の状態に対応する、請求項１６または１７に記載のプログラム。
【請求項１９】
前記第１のパリティ状態は、奇数の性質であり、前記第２のパリティ状態は、偶数の性質である、請求項１８に記載のプログラム。
【請求項２０】
前記出力値が、少なくとも前記新しい反復状態及び前記エントリをハッシュ関数に入力することによって生成される、請求項１６から１９のいずれか一項に記載のプログラム。
【請求項２１】
前記現在の反復値を判定するために前記確率的データ構造に照会することが、
それぞれが、異なる反復状態及びエントリに対応する異なる出力値を有する、前記確率的データ構造を複数回照会することと、
前記現在の反復状態を、前記エントリが前記確率的データ構造に追加された最も高い反復状態として判定することとを含む、請求項１６から２０のいずれか一項に記載のプログラム。
【請求項２２】
前記セットからの前記エントリの削除が、前記確率的データ構造に関連するデータベースからの前記エントリの削除の結果として生成された要求に応答して実行される、請求項１６から２１のいずれか一項に記載のプログラム。
【請求項２３】
前記確率的データ構造がブルームフィルタであり、
前記ブルームフィルタに前記出力値を追加することが、前記ブルームフィルタ内の前記出力値の存在を示すために、前記ブルームフィルタ内の１つまたは複数のビットをゼロから１に変更することを含む、請求項１０から２２のいずれか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１５年９月９日に出願された「確率的データ構造からの要素の削除」と題する米国特許出願第１４／８４９，４８１号（代理人整理番号００９７７４９−５４３ＵＳ０）、２０１５年９月９日に出願された、「デジタル署名された確率的データ構造を用いたデータセットコンポーネントの検証」と題する米国特許出願第１４／８４９，４８８号（代理人整理番号００９７７４９−５４５ＵＳ０）及び２０１５年９月９日に出願された「確率的データ構造を用いたデータセットコンポーネントのための署名検証」と題された米国特許出願第１４／８４９，４９３号（代理人整理番号００９７７４９−５８８ＵＳ０）の全開示をあらゆる目的のために参照によって組み込む。
【背景技術】
【０００２】
ブルームフィルタ及び他の確率的データ構造は、要素が要素の集合の一部であるかどうかを迅速かつ簡潔に判定するためにしばしば利用される。例えば、データベースの管理者は、ブルームフィルタにデータベースエントリを追加することができ、それは、データベースエントリがデータベース内に存在する可能性があるか、または絶対にデータベース内に存在しないのかを識別することによって、データベースクエリをサポートするために使用され得る。ブルームフィルタに追加されたエントリは、結果の値がブルームフィルタ内のビットをゼロから１にトリガする方法でハッシュされているため、ブルームフィルタは省メモリという本来の利点を有する。しかし、ブルームフィルタにエントリが追加されると、ブルームフィルタのビットを１からゼロに変更することで、ブルームフィルタ内の他のエントリに影響が及び得て、ブルームフィルタの整合性が犠牲になり得るため、エントリを削除することができない。各ブルームフィルタセグメントに対してｎビットカウンタを有するカウンティングフィルタを利用して、ブルームフィルタからエントリを削除することができるが、ブルームフィルタの各セグメントは、そうするとさらに多くのビット値を含み、ブルームフィルタのサイズを増加させ得るので、これも省メモリを犠牲にし得る。
【０００３】
本開示に従った多様な実施形態を、図面を参照して説明する。
【図面の簡単な説明】
【０００４】
【図１】様々な実施形態を実施することができる環境の具体例を示す図である。
【図２】少なくとも一実施形態による、ブルームフィルタ内にエントリが存在するかどうかを判定するために反復クエリが実行される環境の具体例を示す図である。
【図３】少なくとも一実施形態による、データベース属性及び値のキー値ペアのエントリに対応するブルームフィルタがデジタル署名される環境の具体例を示す図である。
【図４】少なくとも一実施形態による、データベース属性及び値のキー値ペアのデジタル署名が、ブルームフィルタに追加される環境の具体例を示す図である。
【図５】少なくとも一実施形態による、エントリの現在の反復に少なくとも部分的に基づいてブルームフィルタに新しいエントリを追加するためのプロセスの具体例を示す図である。
【図６】少なくとも一実施形態による、エントリの現在の反復に少なくとも部分的に基づいてブルームフィルタからエントリを削除するためのプロセスの具体例を示す図である。
【図７】少なくとも一実施形態による、ブルームフィルタ内のエントリの現在の反復を識別するためのバイナリ検索を実行するためのプロセスの具体例を示す図である。
【図８】少なくとも一実施形態による、データベースレコードに署名するための要求に応答して、ブルームフィルタにデータベースのキー値ペアを追加し、ブルームフィルタにデジタル署名するためのプロセスの具体例を示す図である。
【図９】少なくとも一実施形態による、データベースレコードに署名するための要求に応答して、ブルームフィルタにデータベースのキー値ペアのデジタル署名を追加するためのプロセスの具体例を示す図である。
【図１０】様々な実施形態を実施することができる環境の具体例を示す図である。
【発明を実施するための形態】
【０００５】
以下の説明で、様々な実施形態を説明する。説明するという目的のために、実施形態の完全な理解を提供すべく、特定の構成及び詳細を記載している。しかしまた、実施形態はそれらの特定の詳細なしに実施し得ることが、当業者には明らかであろう。また、周知の特徴は、記述されている実施形態を不明瞭にしないために省略または簡略化し得る。
【０００６】
本明細書で説明及び示唆される技術は、ブルームフィルタから追加または削除されたデータ及び反復値を入力として使用する関数の使用による、ブルームフィルタからのデータ（データベースエントリなど）の追加及び削除に関し、反復値は、エントリがブルームフィルタに追加されているか削除されているかを示す。一例では、新しいブルームフィルタが作成されたとき、または作成された後で、新しいエントリがデータベースに追加され得る。データベースシステムは、これらの新しいエントリのデータベースへの追加を検出し、ブルームフィルタを更新して、これらのエントリがデータベース内、またはクエリをサポートし得るエントリの他のグループ内で指定されていることを示し得る。ブルームフィルタに新しいエントリを追加するために、データベースシステムは、エントリ関数への入力として、追加されるエントリ及びゼロの初期反復値を使用し得る。この関数の出力はハッシュされ、このハッシュ結果はブルームフィルタ内のビット数をゼロから１に設定するために使用され得る。これは、エントリがブルームフィルタ内にあることを示す働きをする。したがって、エントリに対してクエリが送信されると、ブルームフィルタ内のエントリの唯一の値が、エントリ及びゼロの最も高い反復値を使用する関数の出力に対応し得るので、データベースシステムは、エントリがブルームフィルタ内にあると判定し得る。
【０００７】
その後、データベースからこのエントリを初めて削除するために、データベースシステムはエントリを使用し、反復値をゼロから１に増分して、エントリ関数に新しい入力を提供し得る。また、この関数の出力も、ブルームフィルタ内の関数出力の存在を示すために、ハッシュされ、ブルームフィルタ内のビット数を設定するために使用され得る。しかし、反復値はゼロから１に増分されているため、この関数出力の存在を利用して、エントリがブルームフィルタ内にもはや存在しないことを示し得る。したがって、データベースシステムは、エントリがデータベース内に存在するかどうかを判定するためにクエリが送信されると、最も高い反復値が１であるとブルームフィルタから判定し、エントリがデータベース内にもはや存在しないことを示し得る。データベースシステムは、この関数を引き続き利用して、時間の経過とともにフィルタのエントリの存在または削除を示すために、以前の反復値に対する増分値及びエントリ自体にわたってハッシュを計算し、ブルームフィルタのビットを設定することによって、ブルームフィルタ内のエントリの存在をトグルし得る。例えば、最も高い反復値が偶数である場合、エントリはブルームフィルタ内に存在し得る。あるいは、最も高い反復値が奇数である場合、エントリはブルームフィルタ内にもはや存在し得ない。
【０００８】
エントリがデータベース内に存在するかどうかを判定するためにクエリが送信されると、データベースシステムは、指定されたエントリ及び反復値の関数出力の照会をブルームフィルタにし得る。例えば、データベースシステムは、反復値を増分して、様々な関数出力を生成し得て、これらの出力は、ブルームフィルタにこれらの出力の存在を照会するために使用され得る。最も高い反復値が偶数である場合、エントリはブルームフィルタ内に存在する。最も高い反復値が奇数である場合、エントリはブルームフィルタ内から削除されている。
【０００９】
いくつかの例では、ブルームフィルタの最も高い反復値が、現在の反復値に対する線形探索が最適になり得ないように高くなり得る。そのような状況下では、データベースシステムは、バイナリ検索または他のより効率的なアルゴリズムを利用して、特定のエントリの最も高い反復値を識別し、ユーザのクエリに応答してこの最後の反復値を報告し得る。この最後の反復値を使用して、エントリがブルームフィルタに存在するか、または存在しない（すなわち、ブルームフィルタは、集合からのエントリがないことを示す）かどうかを判定し得る。さらに、ブルームフィルタ内のこのエントリの状態を変更するには、要求をデータベースシステムに送信して、反復値を１だけ増分し、新しい関数出力を生成し、その関数出力をブルームフィルタに追加してエントリの状態を変更し得る。
【００１０】
このようにして、データベースシステムは、データベースが時間の経過とともに更新されると、ブルームフィルタからエントリを追加または削除し得、ブルームフィルタ内のエントリの最も高い反復値を識別することによって、ブルームフィルタ内の特定のエントリの現在の状態を判定し得る。さらに、本明細書中に記載され、示唆される技術は、さらなる技術的な利点を容易にする。例えば、エントリは、これらのエントリの反復値を増分することによって、ブルームフィルタから追加または削除できるため、ブルームフィルタを利用して、データベース属性及び対応する値のキー値ペアのデジタル署名の現在の状態を示し得る。例えば、データベースの値及び属性が変更されると、これらのデータベースの値及び属性に関連付けられたデジタル署名も変更され得る。データベースシステムは、期限切れのデジタル署名及び新しいデジタル署名の反復値を修正し、ブルームフィルタを更新してデータベースの現在の状態を示し、データベースの様々なキー値ペアに対して現在有効な一組の署名を提供することによって、データベースのセキュリティを確保し得る。
【００１１】
図１は、様々な実施形態を実施することができる環境１００の具体例を示す。環境１００では、データストア１０４のユーザは、ユーザクライアントデバイス１０２を介して、データストア１０４内に新しいエントリを格納するための要求を送信し得る。データストア１０４は、必要に応じて、これらのデータベース及びデータストア１０４からデータを格納または削除するためのユーザ要求を処理し得る、データベースシステムによって動作及び維持され得る１つまたは複数のデータベースを含み得る。ユーザがデータストア１０４内のデータベース内にエントリを格納するための要求を送信すると、データベースシステムは、ブルームフィルタ１０６を評価して、エントリがブルームフィルタ１０６に追加されたかどうかを判定し得る。例えば、データベースシステムは、エントリ及びゼロの反復値をエントリ関数への入力として利用して、出力値を取得し得る。例えば、エントリ関数は、エントリと反復値とを連結して、連結したエントリを生成し、次いでそれはブルームフィルタ１０６に追加され得る。したがって、エントリ関数は、確実にまたは許容可能な確率で、エントリが一定に保持されたときに異なる反復値に対して異なる値を生成する関数であり得る。
【００１２】
データベースシステムは、ブルームフィルタ１０６を照会して、この出力値がブルームフィルタ１０６内に存在するかどうかを判定し得る。例えば、出力値がブルームフィルタ１０６内に存在するかどうかを判定するために、データベースシステムは、ブルームフィルタ１０６を介して出力値を渡し得て、ブルームフィルタ１０６の出力値に対応する一連のビットが１に設定されているかどうかを判定し得る。設定されている場合、出力値はブルームフィルタ１０６に存在するものと見なされ得る。しかし、出力値に対応するビットのいずれかがゼロに設定されている場合、出力値はブルームフィルタ１０６内に含まれ得ず、したがって、エントリはデータストア１０４内に存在し得ない。出力値がブルームフィルタ１０６内に存在しない場合、データベースシステムは、エントリがデータストア１０４内で観察されていないため、ブルームフィルタ１０６にエントリが取り込まれていないと判定し得る。したがって、データベースシステムは、この出力値をブルームフィルタ１０６に追加し得て、ブルームフィルタ１０６の１つまたは複数のビットをゼロの値から１の値に変更させ得る。この第０反復値は、これがデータストア１０４内に格納されているエントリの最初のインスタンスであることを示し得る。さらに、ブルームフィルタ１０６へのエントリに対応する出力値の追加は、ユーザがデータストア１０４内のエントリの存在を判定したい場合には、後でユーザからのエントリのクエリをサポートし得る。
【００１３】
その後、ユーザは、ユーザクライアントデバイス１０２を介して、データストア１０４内の１つまたは複数のデータベースからエントリを削除するための要求をデータベースシステムに送信し得る。データベースシステムは、１つまたは複数のデータベースからエントリを削除し、ブルームフィルタ１０６を評価して、エントリがブルームフィルタ１０６内に存在するかどうかを判定し得る。例えば、データベースシステムは、ブルームフィルタ１０６の１つまたは複数のクエリを実行して、エントリの第０反復値がブルームフィルタ１０６内に存在するかどうかを判定し得る。例えば、データベースシステムは、第０反復値及びエントリをエントリ関数への入力として利用して、出力値を生成し得る。データベースシステムは、この出力値をブルームフィルタ１０６に通して、この出力値がブルームフィルタ１０６内に存在するかどうかを判定し得る。存在する場合、データベースシステムは、現在の反復値が１になるように反復値を１だけ増分し得る。データベースシステムは、この新しい反復値及びエントリをエントリ関数への入力として利用して、新しい出力値を生成し得る。データベースシステムは、ブルームフィルタ１０６を照会して、この新しい出力値がブルームフィルタ１０６内に存在するかどうかを判定し得る。存在する場合、データベースシステムは、エントリがブルームフィルタ１０６から削除されたと判定し得る。存在しない場合、データベースシステムは、ブルームフィルタ１０６に出力値を追加して、エントリがデータストア１０４から削除されたことを示し得る。
【００１４】
一実施形態では、エントリが時間の経過とともにデータストア１０４に追加及び削除されると、データベースシステムは、偶数の反復値がデータストア１０４内にエントリが存在することを示し、奇数の反復値がデータストア１０４内にエントリが存在しなくなったことを示すように、反復値を増分する。ユーザが、そのユーザクライアントデバイス１０２を介して、データストア１０４内の１つまたは複数のデータベース内にエントリを格納するための要求を送信すると、データベースシステムは、ブルームフィルタ１０６に照会して、ブルームフィルタ１０６内のエントリの現在の反復を判定し得る。ブルームフィルタの最も高い反復値に少なくとも部分的に基づいて、反復値が偶数であるとデータベースシステムが判定した場合、データベースシステムは、エントリがデータストア１０４内に現在格納されていると判定し、したがって、ブルームフィルタは既にデータストア１０４内のエントリの存在を示しているので、反復値を増分する必要はない。しかし、データベースシステムが最も高い反復値が奇数であると判定した場合、データベースシステムは、エントリがデータストア１０４から削除されたことをブルームフィルタ１０６が示していると判定し得る。データベースシステムは、最も高い反復値を１だけ増分し、この新しい反復値及びエントリをエントリ関数への入力として利用して、ブルームフィルタ１０６に追加され得る出力値を取得し得る。したがって、ブルームフィルタ１０６は、この出力値の入力を示すために更新され得る。
【００１５】
同様に、ユーザが、そのユーザクライアントデバイス１０２を介して、データストア１０４の１つまたは複数のデータベースからエントリを削除するための要求を送信すると、データベースシステムは、ブルームフィルタ１０６にエントリ及び反復値を入力として含む関数の出力値の照会をすることによって、エントリの現在の反復値を判定し得る。エントリの最も高い反復値が奇数である場合、データベースシステムは、それ以来、エントリがデータストア１０４の１つまたは複数のデータベースから削除されていることをブルームフィルタ１０６が示していると判定し得る。したがって、データベースシステムは、データストア１０４の１つまたは複数のデータベースからのエントリの削除を示すためにブルームフィルタ１０６を更新する必要がなくなり得る。しかし、エントリの最も高い反復値が偶数である場合、データベースシステムは、エントリのこの最も高い反復値を１だけ増分して奇数を取得し得る。この新しい奇数及びエントリをエントリ関数への入力として使用して、ブルームフィルタ１０６に追加し得る新しい出力値を生成し得る。ブルームフィルタ１０６へのこの更新はここで、将来のエントリクエリをサポートするために、データストア１０４の１つまたは複数のデータベースからエントリが削除されたことを示すように働き得る。
【００１６】
一実施形態では、データベースシステムが、ブルームフィルタ１０６のクエリを実行して、特定のエントリの現在の反復値を判定するとき、データベースシステムは、現在の反復値を迅速に判定するためにバイナリ検索方法を利用し得る。例えば、データベースシステムは、ブルームフィルタ１０６を照会して、エントリが以前にブルームフィルタ１０６に追加されているかどうかを識別し得る。データベースシステムは、入力としてエントリ及び第０反復値を使用するエントリ関数の使用に少なくとも部分的に基づいて出力値のためのクエリを送信し得る。ブルームフィルタ１０６に第０反復値に対応する出力値が含まれていない場合、データベースシステムは、エントリが以前にデータストア１０４内で観察されていないと判定し得る。第０反復値の出力値がブルームフィルタ１０６内に存在するとデータベースシステムが判定した場合、データベースシステムは、より高い反復値を選択し、ブルームフィルタ１０６を照会して、このより高い反復値の出力値がブルームフィルタ１０６内に存在するかどうかを判定し得る。データベースシステムは、この選択された値に対応する出力値がブルームフィルタ１０６内に存在しなくなるまで、より高い反復値を選択し続け得る。
【００１７】
この選択された反復値に対応する出力値がブルームフィルタ１０６内に存在しない場合、データベースシステムは、この反復値が以前選択された反復値を上回る単位増分値であるかどうかを判定し得る。上回る場合、データベースシステムは、以前選択された反復値が、ブルームフィルタ１０６内のエントリの現在の反復値であると判定し得る。上述のように、この反復値が偶数である場合、ブルームフィルタ１０６は、エントリがデータストア１０４内の１つまたは複数のデータベース内に存在することを示し得る。あるいは、反復値が奇数の整数である場合、ブルームフィルタ１０６は、それ以来、エントリがデータストア１０４内の１つまたは複数のデータベースから削除されていることを示し得る。データベースシステムは、ブルームフィルタ１０６内の検出された出力値の以前の反復値と現在の反復値との間の新しい反復値を選択して、この新しい反復値に対応する出力値がブルームフィルタ１０６内に存在するかどうかを判定し得る。データベースシステムは、照会されたより高い反復値が、ブルームフィルタ１０６内で検出された最後の反復値よりも高い単位増分であるとデータベースシステムが判定するまで、このプロセスを続行し得る。したがって、データベースシステムは、本バイナリ検索方法を利用して、ブルームフィルタ１０６内のエントリの最も高い反復値を識別し、この値をユーザクライアントデバイス１０２のユーザに返すか、この値を利用して、ブルームフィルタ１０６内の特定のエントリの状態を更新するために、この値を増分する必要があるかどうかを判定し得る。
【００１８】
一実施形態では、データベースシステムは、データストア１０４内のデータベースの特定の属性の現在の状態を示すために、ブルームフィルタ１０６への追加の入力を含むことができる。例えば、データベースシステムは、データベース属性名及び現在の反復値を含む関数を利用して、特定のデータベース属性の現在のバージョンに対応する出力値を生成し得る。データベースシステムは、この出力値をブルームフィルタ１０６に追加して、クエリに応答してデータベース属性の現在のバージョンを示し得る。この特定のデータベース属性については、データベースシステムは、データベース属性名、現在の反復値、及び現在の反復のこのデータベース属性内のエントリを含む第２の関数を、エントリ関数への入力として利用して、第２の出力値を生成し得る。この第２の出力値は、時間の経過とともにデータベースエントリクエリを有効にするために、ブルームフィルタ１０６に追加することもできる。したがって、データベース属性が時間の経過とともに更新されると、属性の反復値（例えば、バージョン）が増加し得て、現在の反復値が検出されると、データベースシステムが特定のデータベース属性内の現在値を照会することが可能になる。
【００１９】
上述のように、データベースシステムは、ユーザクライアントデバイスからの要求を受信して、特定のデータベースエントリがデータストア内の１つまたは複数のデータベース内に存在するかどうかを判定し得る。要求に応答して、データベースシステムは、１つまたは複数のデータベース内のエントリの存在またはその欠如に対応する要素を含むブルームフィルタを照会し得る。ブルームフィルタの要素に少なくとも部分的に基づいて、データベースシステムは、要求されたエントリがデータストア内に存在するかしないかを判定し得る。したがって、図２は、少なくとも一実施形態による、ブルームフィルタ２０８内にエントリが存在するかどうかを判定するために反復クエリ２０６が実行される環境２００の具体例を示す。
【００２０】
一実施形態では、コンピュータシステムは、ブルームフィルタ１０６内のエントリの反復値の変更に少なくとも部分的に基づいて、コンピュータシステムのハードウェア及び／またはソフトウェアコンポーネントで実行される１つまたは複数の実行可能命令を判定することができる。例えば、ブルームフィルタ１０６内の特定のエントリの反復値に少なくとも部分的に基づいて、コンピュータシステムは異なる動作を実行し得る。例えば、ブルームフィルタ１０６が４つの可能なエントリ状態を、任意の反復値がこれらの４つの可能なエントリ状態の１つ（例えば、４を法とする反復値）に対応し得るように可能にする場合、コンピュータシステムは、これらの４つの状態のそれぞれに対して異なる一連の動作を実行し得る。具体例として、エントリは、コンピュータシステムの特定のユーザのユーザアカウント識別子に対応し得る。このエントリでは、アカウント作成保留中、アカウント存在、アカウント削除保留中、及びアカウント削除済み（例えば、数値以外の反復値）の４つの可能な状態があり得る。コンピュータシステムが、ユーザアカウント識別子の現在の反復値を判定するためにブルームフィルタ２０６を照会すると、コンピュータシステムはモジュロ演算を実行して、ユーザアカウントの反復値、したがってユーザアカウントの現在の状態を判定し得る。少なくともこの状態に部分的に基づいて、コンピュータシステムは異なる動作を実行し得る。例えば、ユーザアカウントの状態が「アカウント作成保留中」である場合、コンピュータシステムは、ユーザアカウントの作成を完了するための１つまたは複数の動作を実行し、次いで、反復値を増分して、アカウントが存在することを示し得る。したがって、コンピュータシステムは、この新しい反復値及びユーザアカウントに対応する新しい出力値を生成し、この出力値をブルームフィルタに追加して、アカウントが現在存在することを示し得る。
【００２１】
別の具体例として、コンピュータシステムは、周知の悪意のあるウェブサイトのＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）に対応するエントリを含むデータベースを維持し得る。各エントリは、関連するウェブサイトが依然として悪意のあるものと分類されている限り、ブルームフィルタ内に含め得る。したがって、各ＵＲＬの反復値を使用して、ＵＲＬに関連付けられたウェブサイトが悪意のあるものかどうかを判定し得る。コンピュータシステムが、特定のサイトの評価後、サイトがもはや悪意のあるものではないと判定した場合、コンピュータシステムはブルームフィルタ２０６を照会して、そのサイトのＵＲＬの現在の反復値を判定し得る。この現在の反復値を使用して、コンピュータシステムは、ブルームフィルタ２０６内でそのサイトが悪意あるものとして分類されているかどうかを判定し得る。分類されている場合、コンピュータシステムは、この反復値を増分し、この新しい反復値及びＵＲＬをエントリ関数に通し、悪意のあるウェブサイトのグループからそのＵＲＬを削除するために、ブルームフィルタ２０６に追加し得る新しい出力値を生成し得る。したがって、コンピュータシステムのユーザがＵＲＬを使用してこのサイトにアクセスする要求を送信する場合、コンピュータシステムはブルームフィルタ２０６を照会し、このＵＲＬがもはや悪意のあるウェブサイトに該当しないと判定し、ユーザがウェブサイトにアクセスできるようにし得る。
【００２２】
ブルームフィルタ２０６が、例示の目的のために本開示を通して広範囲に使用されているが、他の確率的データ構造が使用され得ることに留意されたい。一実施形態では、確率的データ構造は、正しく維持された場合、（例えば、要素が集合内にあるかどうかを判定するための）データ構造に対するクエリが、（例えば、ハッシュ衝突のために）不正確である可能性がゼロではないように構成されたデータ構造である。例えば、いくつかの実施形態では、確率的データ構造は、データ構造によって提供される計算効率と、偽陽性の結果として不必要に実行されるセキュリティ動作によって引き起こされる不都合とのバランスを取るため、偽陽性の確率が指定された閾値未満になるように構成されている。違反が検出される可能性がある場合にのみ、データベースを参照するなど、偽陽性を軽減するための他の技術が、追加のコンピューティングリソースを使用して、違反が発生した可能性が検出された場合にのみ違反があったことを確認するように使用され得る。
【００２３】
環境２００では、ユーザは、ユーザクライアントデバイス２０２を介して、エントリが格納され得る１つまたは複数のデータベースを含むデータストア２０４内の特定のエントリのクエリを送信し得る。データストア２０４を操作及び維持し得るデータベースシステムは、エントリがデータストア２０４内に格納されているかどうかを識別するために、ブルームフィルタ２０８に対して１つまたは複数のクエリ２０６を生成し得る。例えば、図２に示すように、データベースシステムは、ブルームフィルタ２０８のクエリで使用され得る出力値を取得するために、エントリ関数を利用して、出力値が存在するかどうかを判定し得て、存在する場合は、この出力値がデータストア２０４内のエントリの存在を示すかどうかを判定し得る。エントリ関数は、ハッシュ関数を含み得て、ハッシュ関数は、反復値及びユーザクライアントデバイス２０２を介してユーザによって要求されたエントリのハッシュを生成するために使用され得る。反復値は、データストア２０４内のエントリの有無に対応し得る。例えば、偶数である反復値は、データストア２０４内の特定のエントリの存在に対応し得る。あるいは、奇数である反復値は、データストア２０４からの特定のエントリの不在または削除に対応し得る。パリティ値（例えば、偶数及び奇数の値に対応する存在または存在しない）が、説明のために本開示を通して広範囲に使用されているが、データストア２０４内のエントリの状態を示すために、他の値が利用され得ることに留意されたい。例えば、反復値が複数の状態を定義する場合、反復値及び可能な状態の数に少なくとも部分的に基づく特定のモジュロ値が、ブルームフィルタ２０６内のエントリの存在に対応し得る。例えば、エントリが３つの可能な状態を有する場合、２に等しいモジュロ値になる反復値は、エントリがブルームフィルタ内に存在することを示し得る（例えば、５  ｍｏｄ  ３。ここで、５は反復値である。など）。可能な状態は、非整数値に対応し得ることにも留意されたい。例えば、ブルームフィルタ２０６内のエントリの存在を示すために偶数を利用するのではなく、「存在」の反復値は存在を示し得て、「存在しない」はブルームフィルタ２０６内にエントリが存在しないことを示し得る。
【００２４】
ユーザが、ユーザクライアントデバイス２０２を介して、データストア２０４内にエントリを格納するための要求を送信すると、データベースシステムは、ブルームフィルタ２０８内のエントリの反復クエリ２０６を実行して、エントリが現在データストア２０４内に存在するか、またはエントリがデータストア２０４から削除されているか、またはデータストア２０４内で以前に観察されていないかを判定し得る。例えば、データベースシステムは、エントリ及び第０反復値をエントリ関数への入力として利用して、出力値を取得し得る。データベースシステムは、ブルームフィルタ２０８にこの出力値の照会をして、その出力値がブルームフィルタ２０８内に存在するかどうかを判定し得る。ブルームフィルタ２０８は、ブルームフィルタ２０８内に値が存在しないかどうかを明確に示すように構成されているため、データベースシステムは、エントリに対してこの第０反復が存在するかどうかを判定し得る。第０反復の関数出力値が存在しない場合、データベースシステムは、エントリが以前にデータストア２０４内で観察されていないと判定し得る。
【００２５】
エントリの第０反復がブルームフィルタ２０８内に存在する場合、データベースシステムは、ブルームフィルタ２０８内の関数出力値に対して線形反復検索を実行し得る。例えば、図２に示すように、データベースシステムは、反復値を１だけ増分することによって（例えば、第０反復が第１反復まで増分されるなど）、データストアクエリ２０６を変更し得る。したがって、データベースシステムは、増分された反復値及びエントリを使用したエントリ関数を利用して、照会し得る新しい出力値を生成し得る。データベースシステムは、ブルームフィルタ２０８にこの新しい出力値の照会を行い、この出力値がブルームフィルタ２０８内に存在するかしないかを判定し得る。新しい出力値が存在する場合、データベースシステムは、ブルームフィルタ２０８内で出力値が検出されなくなるまで、反復値を再増分し追加のクエリを実行し得る。特定の出力値がブルームフィルタ２０８内に存在しないとデータベースシステムが判定した場合、データベースシステムは、最後の反復値がブルームフィルタ２０８内の特定のエントリの現在の反復を表すと判定し得る。
【００２６】
一実施形態では、データベースシステムは、反復値を利用して、特定のエントリがデータストア２０４内に存在するのか、または、それ以来、データストア２０４から削除されているかを判定する。例えば、第０反復値で始まる、偶数の反復値は、特定のエントリがデータストア２０４内に格納されていることを示し得る。あるいは、第１反復値から始まる、奇数の反復値は、特定のエントリがそれ以来データストア２０４から削除されていることを示し得る。例えば、ユーザクライアントデバイス２０２を介したユーザが、データストア２０４の１つまたは複数のデータベース内にエントリを格納するための要求を送信すると、データベースシステムはブルームフィルタ２０８を照会してエントリの現在の反復値を判定し得る。第０反復値がブルームフィルタ２０８内に存在しない場合、データベースシステムは、データストア２０４内にエントリを格納し、エントリの第０反復に対応するブルームフィルタ２０８に出力値を追加し得る。あるいは、現在の反復値が偶数値であるとデータベースシステムが判定した場合、エントリが既にデータストア２０４内に格納されていると識別されたことを示し得る。これにより、データベースシステムは、エントリが既に利用可能であることを示し、エントリをデータストア２０４内に格納しないようにし得る。あるいは、反復値が複数の状態を示すために使用される場合、データベースシステムはモジュロ演算を利用してエントリの現在の状態を判定し得る。さらに、エントリの可能な状態が非数値を使用して示される場合、データベースシステムは、エントリの現在の非数値反復値を評価することによってエントリの現在の状態を判定し得る。
【００２７】
エントリの現在の反復値が奇数値であり、エントリが以前にデータストア２０４から削除されていることを示す場合、データベースシステムは、要求を満たすためにエントリをデータストア２０４内に格納し得る。さらに、データベースシステムは、新しい反復値が偶数値になるように反復値を増分し得る。データベースシステムは、この新しい偶数の反復値及びエントリをエントリ関数の入力として利用し、この関数の出力値をブルームフィルタ２０８に追加し得る。したがって、ブルームフィルタ２０８内のエントリの将来のクエリは、偶数の反復値を検出し、エントリが現在データストア２０４内に格納されていることを判定し得る。同様に、現在の反復値が、エントリが以前にデータストア２０４から削除されることを示し、反復値が状態のパリティ値よりも大きい複数の状態に対応し得る場合、データベースシステムは、新しい反復値がデータストア２０４内のエントリの存在を示すように反復値を修正し得る。例えば、データベースシステムは、モジュロ演算を利用して、データストア２０４内のエントリの存在に対応する新しい反復値を識別し、この新しい反復値及びエントリをエントリ関数への入力として利用して、ブルームフィルタ２０６に追加し得る出力値を生成し得る。
【００２８】
同様に、ユーザは、ユーザクライアントデバイス２０２を介して、データストア２０４からエントリを削除するための要求を送信し得る。データベースシステムは、ブルームフィルタ２０８を照会して、特定のエントリの現在の反復値を判定し、この反復値に少なくとも部分的に基づいて、エントリがデータストア２０４及びブルームフィルタ２０８から削除されたことを示すために実行する必要がある動作を決定し得る。例えば、現在の反復値が奇数値である場合、データベースシステムは、エントリがデータストア２０４から削除されていることをブルームフィルタ２０８が現在示していると判定し得る。したがって、データベースシステムは、現在の反復値を更新する必要なく、データストア２０４からエントリを削除し得る。しかし、現在の反復値が偶数値である場合、データベースシステムは、現在の反復値を１だけ増分して、奇数の反復値を生成し得る。データベースシステムはこの新しい奇数の反復値、ならびにエントリをエントリ関数への入力として使用して、データストア２０４からのエントリの削除を示すために、ブルームフィルタ２０８に追加し得る新しい出力値を生成し得る。次いで、データベースシステムは、データストア２０４からエントリを削除することによって、ユーザクライアントデバイス２０２からの要求を満たし得る。同様に、現在の反復値が、エントリがデータストア２０４内に格納されていることを示し、反復値が状態のパリティ値よりも大きい複数の状態に対応し得る場合、データベースシステムは、新しい反復値がデータストア２０４からのエントリの削除を示すように反復値を修正し得る。例えば、データベースシステムは、モジュロ演算を利用して、データストア２０４からのエントリの削除に対応する新しい反復値を識別し、この新しい反復値及びエントリをエントリ関数への入力として利用して、ブルームフィルタ２０６に追加し得る出力値を生成し得る。
【００２９】
一実施形態では、データベースシステムは、特定のエントリの現在の反復値を線形反復検索するのではなく、バイナリ検索アルゴリズムを使用してブルームフィルタ２０８を照会する。データベースシステムは、第０反復出力値がブルームフィルタ２０８内に存在するかどうかを判定することによって、ブルームフィルタ２０８のクエリを開始し得る。この出力値がブルームフィルタ２０８内に存在しない場合、データベースシステムは、エントリがデータストア２０４内で以前に観察されておらず、したがって、エントリの履歴情報がないため、エントリの現在の反復値は存在しないと判定し得る。第０反復の出力値がブルームフィルタ２０８内に存在する場合、データベースシステムは評価のためにより高い反復値を選択し得る。例えば、データベースシステムは、データベースシステムの管理者によって決定された、データストア２０４のエントリに対して最も高い可能な反復値を選択し得る。あるいは、データベースシステムは、第０値（例えば、１より大きい新しい反復値）からの単位増分よりも大きい任意の反復値を選択し得る。
【００３０】
データベースシステムは、ブルームフィルタ２０８にこの新しい反復値に対応する出力値の照会をして、出力値がブルームフィルタ２０８内に存在するかどうかを判定し得る。この新しい反復値の出力値がブルームフィルタ２０８内に存在する場合、データベースシステムはより高い反復値を選択し、出力値がブルームフィルタ２０８内に存在しない反復値が識別されるまで、このプロセスを継続し得る。しかし、この新しい反復値の出力値がブルームフィルタ２０８内に存在しない場合、データベースシステムは、現在の反復値（例えば、使用されたばかりの新しい反復値）と、出力値がブルームフィルタ２０８内で検出された以前の反復値との間の平均値である反復値を選択し得る。次いで、データベースシステムは、この平均反復値を利用して、この反復値の出力値がブルームフィルタ２０８内に存在するかどうかを判定し得る。出力値がブルームフィルタ２０８内に存在しない場合、データベースシステムは、現在の反復値が、この平均値とブルームフィルタ２０８内で検出された最新の出力値に対応する以前の反復値との間にあると判定し得る。
【００３１】
データベースシステムは、新しい反復値が、ブルームフィルタ２０８内で検出された出力値に対応する最後の反復値より大きい一単位増分になるまで、エントリの反復値を修正し続け得る。この新しい反復値の出力値が、ブルームフィルタ２０８内で検出された場合、データベースシステムは、この新しい反復値がエントリの現在の反復値であると判定し、反復値がブルームフィルタ２０８内のエントリの存在に対応するか、ブルームフィルタ２０８からのエントリの削除に対応するかを判定し得る。同様に、新しい反復値に対応する出力値が、ブルームフィルタ２０８内で検出されない場合、データベースシステムは、ブルームフィルタ２０８内で検出された出力値に対応する最後の反復値が、エントリの現在の反復値であると判定し得る。図２に示すように、現在の反復値が偶数値である場合、エントリはブルームフィルタ２０８内に存在し得る。あるいは、現在の反復値が奇数値である場合、以前の動作の間に、エントリはブルームフィルタ２０８及びデータストア２０４から削除されていた状態であり得る。
【００３２】
一実施形態では、データベースシステムは、データストアからのデータベース属性名及びこれらのデータベース属性のそれぞれの値のキー値ペアをハッシュし、このハッシュされたキー値ペアをブルームフィルタに追加し得る。次いで、ブルームフィルタは、データベース属性及び値、ならびにブルームフィルタ自体の整合性を保護するためにデジタル署名され得る。したがって、図３は、少なくとも１つの実施形態による、データベース属性及び値のキー値ペアのエントリに対応するブルームフィルタ３０４がデジタル署名される環境３００の具体例を示す。環境３００では、非リレーショナルデータベース３０２は、様々なデータベース属性に対応し、これらの属性のごとに１つまたは複数の値を含む様々なインデックスを含み得る。
【００３３】
非リレーショナルデータベース３０２を維持及び動作させるように構成されたデータベースシステムは、各データベース属性（例えば、インデックス）及び属性に対応する値をエントリ関数への入力として使用して、ブルームフィルタ３０４に追加され得る出力値を生成するために、エントリ関数を利用し得る。エントリ関数は、データベース属性及び対応する値をハッシュし、次いでブルームフィルタ３０４に追加される出力値を生成し得るハッシュ関数を含み得る。データベースシステムが、データベースエントリ及び対応する値の出力値を含むようにブルームフィルタ３０４の更新を完了した場合、データベースシステムは、署名されたブルームフィルタ３０６がデータベースシステムのユーザに利用可能となるように、ブルームフィルタ３０４にデジタル署名し得る。これらのユーザは、公開秘密暗号キーペアの公開暗号化キーを利用して、デジタル署名されたブルームフィルタ３０６を検証し、自身の使用のために署名されたブルームフィルタ３０６を復号化し得る。例えば、データベースシステムのユーザは、署名されたブルームフィルタ３０４を利用して、データベース３０２のデータベース属性のある特定のエントリが存在するか、または時間の経過とともにブルームフィルタ３０４から削除されたかどうかを判定し得る。
【００３４】
一実施形態では、データベースシステムは、データベース属性自体とデータベース属性内のエントリの２つの別々の出力値を生成する。例えば、データベースシステムは、上述のエントリ関数を利用して、ブルームフィルタ３０４内の特定のデータベース属性の現在の反復を指定し得る。ただし、エントリがデータベース内に存在するかしないかを示すために反復値を使用するのではなく、データベース属性の現行バージョンを指定するために反復値を使用し得る。データベース属性のブルームフィルタ３０４に追加し得る第２の出力値は、その属性のデータベース３０２内に格納されている値に対応し得る。この第２の出力値は、属性名、属性の反復値、及び反復値の属性内のエントリをエントリ関数の入力として使用して、生成し得る。これらの２つの出力値は、ブルームフィルタ３０４に追加され、この現在の反復値の属性及び属性内のエントリの現在の反復を判定するために利用され得る。したがって、属性から値を削除するためのＮｕｌｌセットを含む、新しい値を含むように属性が更新されるとき、データベースシステムは、新しい反復値の属性内の新しい出力値及び属性内のエントリを生成し得る。
【００３５】
別の実施形態では、データベースシステムは、データベース属性の出力値、属性内のエントリ、及びエントリの反復値を生成して、ブルームフィルタ３０４内に特定のキー値ペアが存在するかどうかを示す。例えば、キー値ペアの反復値は、複数の状態のうちの１つを示し得て、これにより、状態は、ブルームフィルタ３０４内のキー値ペアの存在に対応し得て、別の状態は、ブルームフィルタ３０４からのキー値ペアの削除に対応し得る。新しい値が特定の属性に割り当てられると、データベースシステムは、以前の属性値の現在の反復値を識別し、現在の反復値がブルームフィルタ３０４内のキー値ペアの存在を示すかどうかを判定し得る。現在の反復値がブルームフィルタ３０４内のキー値ペアの存在を示す場合、データベースシステムは、新しい反復値がブルームフィルタ３０４からのキー値ペアの削除を示すように反復値を修正し得る。データベースシステムは、属性値、属性内のエントリ、及び新しい反復値をエントリ関数への入力として利用して、ブルームフィルタ３０４に追加される出力値を生成し得る。さらに、データベースシステムは、属性名、属性内の新しいエントリ、及びブルームフィルタ３０４内のキー値ペアの存在を示す反復値をエントリ関数への入力として使用して、ブルームフィルタ３０４に追加し得る出力値を生成し得る。したがって、ブルームフィルタ３０４内の特定のキー値ペアのクエリを送信するとき、データベースシステムは、キー値ペアの現在の反復値に少なくとも部分的に基づいて、ブルームフィルタ３０４内にキー値ペアが存在するかどうかを判定し得る。
【００３６】
データベースシステムのユーザが、データベース属性内の特定の値のクエリを送信すると、データベースシステムは、ブルームフィルタ３０４の様々なクエリを実行して、ユーザのクエリに応答し得る。例えば、データベースシステムは、最初にブルームフィルタ３０４を照会して、指定された属性の現在の反復値を判定し得る。データベースシステムは、図１及び図２に関連して上述のエントリ関数と同様のエントリ関数を利用して、ブルームフィルタ３０４のクエリで利用し得る出力値を生成し得る。データベースシステムが属性の現在の反復値を識別すると、データベースシステムは、この現在の反復値、属性名及びエントリを、ブルームフィルタ３０４を照会するために使用され得る第２の出力値を生成するために使用され得る第２関数への入力として、利用し得る。データベースシステムは、この第２の出力値を利用して、エントリが属性の現在の反復のデータベース内で指定されているかどうかを判定し得る。指定されている場合、データベースシステムは、属性内の値の存在を示す、クエリに対する応答をユーザに返し得る。出力値がブルームフィルタ３０４内に存在しない場合、データベースシステムは、エントリが属性の現在の反復に対して存在しないことを示し得て、及び／またはデータベースにアクセスして、属性の現在のエントリを識別し、要求に応じてこのエントリの値をユーザに返し得る。
【００３７】
別の実施形態では、データベース属性名及び属性の対応するエントリを含む各キー値ペアは、ブルームフィルタ内に含める前にデータベースシステムによってデジタル署名される。キー値ペアの各デジタル署名は、特定の属性の現在のエントリが、属性の現在のデジタル署名に少なくとも部分的に基づいて判定され得るようにブルームフィルタに追加され得る。例えば、ユーザは、データベース属性及び属性内の対応するエントリのデジタル署名を生成し、このデジタル署名ためにデータベースシステムにクエリを送信し得る。したがって、図４は、少なくとも一実施形態による、データベース属性及び値のキー値ペアのデジタル署名４０４が、ブルームフィルタ４０６に追加される環境４００の具体例を示す。
【００３８】
環境４００では、データベースシステムは、暗号化キーを利用して、属性名及びデータベース４０２内の属性の対応する値の各キー値ペアをデジタル署名し得る。データベースシステムは、ブルームフィルタ４０６を利用して、図１及び図２で上述の方法と同様の方法で、デジタル署名の現在の反復を識別し得る。例えば、データベースシステムは、デジタル署名に対して、デジタル署名の現在の反復値を判定し得、偶数の反復値は、デジタル署名がブルームフィルタ４０６内にあることを示し得、奇数の反復値は、デジタル署名がブルームフィルタ４０６内にないことを示し得る（例えば、属性の値が変更され、新しい署名が生成されている、など）。デジタル署名が特定の属性に対して変更された場合、データベースシステムは、属性の前のデジタル署名の反復値を変更して属性の削除を示し、ブルームフィルタ４０６を更新して、属性に対して新しく生成されたデジタル署名４０４を含み得る。
【００３９】
ユーザが特定のデジタル署名のクエリを送信すると、データベースシステムはデジタル署名を取得し、デジタル署名及び反復値をエントリ関数への入力として利用して、出力値を生成し得る。データベースシステムは、ブルームフィルタ４０６のクエリにこの出力値を利用して、ブルームフィルタ４０６内のこの出力値の存在を検出し得る。いずれかの反復値に対して出力値が検出されない場合、データベースシステムは、デジタル署名が以前に観察されておらず、したがって、任意の属性のデータベース４０２内の現在または以前のエントリに対応しないと判定する。あるいは、出力値が識別された場合、データベースシステムは、ブルームフィルタ４０６内で出力値が識別されなくなるまで、反復値を増分し、新しい出力値を生成し得る。データベースシステムは、デジタル署名の最も高い反復値を識別し、この値に少なくとも部分的に基づいて、デジタル署名が現在ブルームフィルタ４０６内に存在するのか、または、それ以来、ブルームフィルタ４０６から削除されているのかを判定し得る。例えば、反復値が偶数値である場合、デジタル署名はブルームフィルタ４０６内に存在し得る。あるいは、反復値が奇数値である場合、データベースシステムは、デジタル署名がブルームフィルタ４０６内にもはや存在しないと判定し得る。ただし、これは、ある時点で、属性の値がデータベース４０２内にあったことも示し得て、データベースシステムのユーザのためのユーティリティとして働き得る。
【００４０】
上述のように、ユーザは、ユーザクライアントデバイスを介して、データベースシステムに要求を送信して、データベースまたは他のデータ構造にエントリを追加し得る。このエントリをカタログ化するために、データベースシステムは、ブルームフィルタの評価によってエントリのクエリを満たし得るように、エントリをブルームフィルタに追加し得る。いくつかの実施形態では、データベースシステムは、ブルームフィルタを照会して、エントリの現在の反復値を識別し、反復値は、エントリがブルームフィルタ内にあるものとして指定されているか、またはブルームフィルタ内で削除されたものとして指定されているかを判定するために使用し得る。この反復値に少なくとも部分的に基づいて、データベースシステムは、ブルームフィルタ内のエントリの存在を示すために反復値を更新し得るか、またはエントリの存在がブルームフィルタに既に示されている場合には同じ反復値を保持し得る。したがって、図５は、少なくとも一実施形態による、エントリの現在の反復に少なくとも部分的に基づいてブルームフィルタに新しいエントリを追加するためのプロセス５００の具体例を示す。プロセス５００は、データベース、スプレッドシート、インデックス、データ記憶装置などのデータ構造内の様々な要素の存在を判定するためのブルームフィルタを管理するように構成された、前述のデータベースシステムまたは他のコンピュータシステムによって実行され得る。
【００４１】
ユーザがデータベースまたは他のデータ構造に新しいエントリを追加すると、ユーザは、データベースシステムまたは他のコンピュータシステムに要求を送信して、データベースまたは他のデータ構造を直接検査する必要なく、エントリのクエリのサポートを有効にするために、ブルームフィルタにエントリを追加し得る。例えば、ユーザは、そのエントリについてデータベースシステムにクエリを送信し、データベースシステムは、そこでブルームフィルタを使用して、エントリがデータベース内に存在しないか、または偽陽性のエラー率の対象となるデータベース内に存在し得るかどうかを判定し得る。したがって、データベースシステムは、このエントリをブルームフィルタに追加するための要求を受信し得る（５０２）。
【００４２】
データベースシステムまたは他のコンピュータシステムが、ブルームフィルタにエントリを追加するための要求を受信すると、データベースシステムは、エントリが以前にブルームフィルタに追加されているかどうかを判定し得る（５０４）。エントリが最初にブルームフィルタに追加されると、データベースシステムは、エントリ関数を利用して、ブルームフィルタに追加され得るエントリに対応する出力値を生成し得る。この関数は、反復値及びエントリ自体を入力として利用して、ブルームフィルタに追加される出力値を生成し得る。反復値は、ブルームフィルタ内のエントリの状態を示し得る。例えば、反復値は、ブルームフィルタ内のエントリの存在またはブルームフィルタのエントリの不在／削除のいずれかを示すために、パリティ値（例えば、偶数値または奇数値）を有し得る。あるいは、反復値は、エントリの複数の状態に対応し得る。例えば、反復値は、エントリが保留中であるか、ブルームフィルタから削除されたか、またはブルームフィルタに追加されたかを示し得る。データベースシステムは、最も低い可能な反復値（例えば、第０反復値）に対応する出力値を使用してブルームフィルタを照会し、ブルームフィルタ内でエントリが以前に観察されているかどうかを判定し得る。この出力値がブルームフィルタ内で検出されない場合、データベースシステムは、新しい反復値（例えば、第０反復値）及びエントリを使用して、前述の関数を利用して（５１２）、ブルームフィルタへのエントリの追加を示すために、ブルームフィルタに追加され得る出力値を生成し得る。
【００４３】
データベースシステムが、エントリの第０反復の出力値に対応するブルームフィルタ内の要素を識別する場合、データベースシステムは、ブルームフィルタを照会して、ブルームフィルタ内のエントリの現在の反復を識別し得る（５０６）。例えば、反復値が状態のパリティを定義する場合、偶数の反復値はブルームフィルタ内のエントリの存在を示し得て、奇数の反復値はブルームフィルタからエントリが削除されたことを示し得る。あるいは、反復値が複数の状態を定義する場合、反復値及び可能な状態の数に少なくとも部分的に基づく特定のモジュロ値が、ブルームフィルタ内のエントリの存在に対応し得る。例えば、エントリが３つの可能な状態を有する場合、２に等しいモジュロ値になる反復値は、エントリがブルームフィルタ内に存在することを示し得る（例えば、５  ｍｏｄ  ３であり、ここで５は反復値が２に等しいモジュロ値であって、存在を示す。など）。
【００４４】
特定のエントリの現在の反復値を判定するために、データベースシステムは、ブルームフィルタの線形検索クエリ、バイナリ検索クエリ、または他の検索クエリを実行して、ブルームフィルタ内に存在する最も高い反復値に対応する出力値を識別し得る。データベースシステムがブルームフィルタ内のエントリの現在の反復値を識別すると、データベースシステムは、この反復値がブルームフィルタ内のエントリの存在に対応するかどうかを判定し得る（５０８）。例えば、反復値がブルームフィルタ内のエントリの存在に対応するとデータベースシステムが判定した場合、データベースシステムは、エントリがブルームフィルタ内に既に存在すること、または要求に応答してブルームフィルタに正常に追加されたことを示し得る（５１０）。しかし、現在の反復値がブルームフィルタ内のエントリの存在に対応しない場合、データベースシステムは、現在の反復値を増分または他の方法で修正して、ブルームフィルタ内のエントリの存在に対応する新しい反復値を取得し得る。例えば、データベースシステムは、エントリの存在に対応するモジュロ演算解に対応する新しい反復値を取得する分だけ現在の反復値を修正し得る。
【００４５】
データベースシステムが、エントリの新しい反復値を計算すると、データベースシステムは、エントリ関数を利用して（５１２）、ブルームフィルタ内のエントリの存在を示すために、ブルームフィルタに追加し得る出力値を生成し得る。例えば、データベースシステムは、関数からの出力値がブルームフィルタ内のエントリの存在に対応するように、新しい反復値及びエントリを関数への入力として利用し得る。データベースシステムは、関数からのこの出力値をブルームフィルタに追加して（５１４）、エントリが現在ブルームフィルタ内に存在することを示し得る。さらに、データベースシステムは、エントリがブルームフィルタに追加されたことを示し得る（５１０）。例えば、データベースシステムは、ブルームフィルタへのエントリの追加が完了したことを示す通知をユーザクライアントデバイスに送信し得る。いくつかの例では、このエントリを含むためのブルームフィルタの更新は、ユーザの関与または対話を必要としない内部プロセスの一部であり得るため、データベースシステムはこの通知を生成し得ない。
【００４６】
上述のように、データベースシステムまたは他のコンピュータシステムのユーザは、ブルームフィルタからエントリを削除するための要求を送信し得る。データベースシステムは、ブルームフィルタを照会して、削除するエントリの現在の反復値を判定し、この反復値がブルームフィルタ内のエントリの存在に対応するかどうかを判定し得る。この反復値に少なくとも部分的に基づいて、データベースシステムは反復値を修正して、エントリがブルームフィルタから削除されたことを示し得る。したがって、図６は、少なくとも一実施形態による、エントリの現在の反復に少なくとも部分的に基づいてブルームフィルタからエントリを削除するためのプロセス６００の具体例を示す。プロセス６００は、ブルームフィルタ内のエントリの現在の状態に少なくとも部分的に基づいて、コンピュータシステムにインストールされたハードウェアまたはソフトウェアを使用して、実行可能な命令を実行するように構成された前述のデータベースシステムまたは他のコンピュータシステムによって実行され得る。
【００４７】
ユーザがデータベースまたは他のデータ構造からエントリを削除すると、ユーザは、データベースまたは他のデータ構造を直接検査する必要なく、エントリがデータベース内に存在しなくなったことを示すために、ブルームフィルタからエントリを削除するための要求をデータベースシステムに送信し得る。例えば、ユーザは、そのエントリについてデータベースシステムにクエリを送信し、データベースシステムは、そこでブルームフィルタを使用して、エントリがデータベースから削除されたか、または偽陽性のエラー率の対象となるデータベース内に存在し得るかどうか判定し得る。あるいは、ブルームフィルタが様々なエントリの情報のリポジトリとして機能し得るため、ユーザは、データベースに関連付けられていないブルームフィルタから特定のエントリを削除するように要求し得る。したがって、データベースシステムは、ブルームフィルタへのこのエントリを削除するための要求を受信し得る（６０２）。
【００４８】
データベースシステムが、ブルームフィルタからエントリを削除するための要求を受信すると、データベースシステムは、ブルームフィルタ内に特定のエントリが存在するかどうかを判定し得る（６０４）。例えば、エントリが最初にブルームフィルタに追加されると、データベースシステムは、関数を利用して、ブルームフィルタに追加され得るエントリに対応する出力値を生成し得る。この関数は、反復値及びエントリ自体を入力として利用して、ブルームフィルタに追加される出力値を生成し得る。反復値は、ブルームフィルタ内のエントリの状態を示し得る。例えば、反復値は、ブルームフィルタ内のエントリの存在またはブルームフィルタのエントリの不在／削除のいずれかを示すために、パリティ値を有し得る。あるいは、反復値は、エントリの複数の属性に対応し得る。データベースシステムは、最も低い可能な反復値（例えば、第０反復値）に対応する出力値を使用してブルームフィルタを照会し、ブルームフィルタ内でエントリが以前に観察されているかどうかを判定し得る。この出力値がブルームフィルタ内で検出されない場合、データベースシステムは、この特定のエントリが以前に観察され得ないため、エントリがブルームフィルタ内にないことを示し得る（６１０）。
【００４９】
データベースシステムが、ブルームフィルタに、エントリの第０反復に対応する出力値（例えば、ブルームフィルタへのエントリの最初の追加）が含まれていると判定した場合、データベースシステムは、ブルームフィルタ内のエントリの現在の反復値を識別し得る（６０６）。例えば、データベースシステムは、反復値を修正し、この新しい値及びエントリをエントリ関数への入力として使用することによって、ブルームフィルタの検索クエリを実行して、ブルームフィルタを照会するために使用し得る新しい出力値を生成し得る。例えば、反復値が状態のパリティを定義する場合、偶数の反復値はブルームフィルタ内のエントリの存在を示し得て、奇数の反復値はブルームフィルタからエントリが削除されたことを示し得る。あるいは、反復値が複数の状態を定義する場合、反復値及び可能な状態の数に少なくとも部分的に基づく特定のモジュロ値が、ブルームフィルタ内のエントリの存在に対応し得る。エントリの現在の反復値に少なくとも部分的に基づいて、データベースシステムは、エントリがブルームフィルタ内に存在するかどうかを判定し得る（６０８）。
【００５０】
エントリの現在の反復値が、ブルームフィルタ内にエントリがもはや存在しないことを示す場合、データベースシステムは、エントリがブルームフィルタ内に存在しないことをユーザに示し得る（６１０）。あるいは、エントリの反復値が、ブルームフィルタ内にエントリが存在することを示す場合、データベースシステムは、反復値を修正して、ブルームフィルタからのエントリの削除に対応し得る新しい反復値を取得し得る。続いて、データベースシステムは、新しい反復値及びエントリを入力として使用して、上述のエントリ関数を利用して（６１２）、ブルームフィルタに追加され得る新しい出力値を生成し得る。この出力値を利用して、エントリがブルームフィルタ内にもはや存在しないことを示し得る。データベースシステムは、この新しい出力値をブルームフィルタに追加して（６１４）、ブルームフィルタ内にエントリがもはや存在しないことを示し（６１０）、したがって、要求を満たし得る。
【００５１】
上述のように、データベースシステムまたは他のコンピュータシステムは、バイナリ検索アルゴリズムを利用して、ブルームフィルタ内の特定のエントリの現在の反復値を判定し得る。例えば、ブルームフィルタ内のエントリが時間の経過とともに広範囲に修正される場合、ブルームフィルタは、多数の反復値に関連付けられたエントリ要素を含み得る。そのような状況下では、バイナリ検索アルゴリズムを利用して、必要なクエリの数を減らす方法で特定のエントリの現在の反復値を識別し得る。したがって、図７は、少なくとも一実施形態による、ブルームフィルタ内のエントリの現在の反復値を識別するためのバイナリ検索を実行するためのプロセス７００の具体例を示す。プロセス７００は、ユーザクエリに応答して、またはブルームフィルタ内のエントリの状態に少なくとも部分的に基づいて実行される動作の判定の際に、ブルームフィルタ内の特定のエントリの現在の状態を識別するためにブルームフィルタを利用し得る、前述のデータベースシステムまたは他のコンピュータシステムによって実行され得る。
【００５２】
任意の時点で、データベースシステムまたは他のコンピュータシステムは、ブルームフィルタ内の特定のエントリの現在の反復値を識別する要求を受信し得る（７０２）。例えば、データベースシステムのユーザは、特定のエントリがブルームフィルタ内に含まれているかどうかを判定するために、データベースシステムに要求を送信し得る。これには、データベースシステムが、ユーザに代わってこの判定を行うために、エントリの現在の反復値を識別する必要があり得る。いくつかの例では、データベースシステムまたは他のコンピュータシステムには、この現在の状態に少なくとも部分的に基づいて１つまたは複数の動作を実行するために、特定のエントリの現在の状態を識別する必要があり得るため、ユーザまたは他のエンティティからの要求の受信を必要とせずに、データベースシステムまたは他のコンピュータシステムは、プロセス７００を実行し得る。
【００５３】
エントリの現在の反復値を識別するために、データベースシステムまたは他のコンピュータシステムは、ブルームフィルタに、エントリの最も低い反復値（例えば、第０反復値）に対応する出力値の照会をし得る（７０４）。例えば、データベースシステムまたは他のコンピュータシステムは、第０反復値及びエントリをエントリ関数に入力して、この第０反復値に対応する出力値を生成し得る。データベースシステムまたは他のコンピュータシステムは、ブルームフィルタを照会して、この出力値がブルームフィルタ内に存在するかどうかを判定し得る（７０６）。この出力値がブルームフィルタ内に存在しない場合、データベースシステムまたは他のコンピュータシステムは、エントリが以前にデータベースシステムまたはブルームフィルタによって観察され得ないため、エントリがブルームフィルタ内で利用可能でないことを指定し得る（７０８）。
【００５４】
第０反復値の出力値がブルームフィルタ内に存在する場合、データベースシステムは、エントリのより高い反復値を選択し得る（７１０）。データベースシステムまたは他のコンピュータシステムは、ブルームフィルタ内の任意のエントリの最も高い観察された反復値に等しい値を選択し得る。あるいは、データベースシステムまたは他のコンピュータシステムは、指数関数を利用して、高い反復値を選択し得る。例えば、データベースシステムまたは他のコンピュータシステムは、２つの反復値を使用して検索を開始し得る。後続の検索は、反復値を２の次の指数値（例えば、２，４，８，１６など）に増加させ得る。任意の基準値を利用して、ブルームフィルタの評価のためにより高い反復値を選択するために、反復値を増分し得ることに留意されたい。
【００５５】
データベースシステムは、このより高い反復値及びエントリをエントリ関数への入力として利用して、新しい出力値を生成し得る。上記の第０反復値と同様に、データベースシステムは、ブルームフィルタを照会して、そのより高い反復値に対応するこの新しく生成された出力値が、ブルームフィルタ内に存在するかどうかを判定し得る（７１２）。この出力値がブルームフィルタ内に存在する場合、データベースシステムは、エントリのより高い反復値を再び選択し（７１０）、ブルームフィルタを再び照会して、このより高い反復値の出力値がブルームフィルタ内に存在するかどうかを判定し得る。データベースシステムまたは他のコンピュータシステムは、特定の反復値の出力値がブルームフィルタ内に存在しないと判定されるまで、これらの動作を実行し続け得る。
【００５６】
エントリのそのより高い反復値に対応する出力値がブルームフィルタ内に存在しない場合、データベースシステムは、このより高い反復値と、ブルームフィルタ内で検出された最後の出力値に対応する以前の反復値との間の差が、単位増分であるかどうかを判定し得る（７１４）。これらの反復値の差が増分値である場合、データベースシステムは、エントリの以前の反復値が、現在の反復値であると判定し得る。したがって、データベースシステムは、この最後の反復値を、要求に応答してユーザに報告し得る（７１６）。あるいは、データベースシステムは、この最後の反復値を利用して、ブルームフィルタ内のエントリの現在の状態を判定し得る。例えば、偶数の反復値がブルームフィルタ内のエントリの存在を示し、奇数の反復値がブルームフィルタからのエントリの削除を示す場合、データベースシステムは、現在の反復値を利用して、エントリがブルームフィルタ内に存在するか存在しないかを判定し得る。偶数の反復値はエントリの存在を示すために使用され、奇数の反復値はブルームフィルタからのエントリの削除を示すために使用されるが、偶数の反復値がブルームフィルタからのエントリの削除を示し、奇数の値がブルームフィルタのエントリの存在を示し得る仕様を含む、任意の指定を偶数及び奇数の反復値に適用し得る。
【００５７】
そのより高い反復値が、ブルームフィルタ内にエントリが存在した最後の反復値との単位差でない場合、データベースシステムは、最後の反復値とこのより高い反復値との間の新しい反復値を選択し得る（７１８）。データベースシステムは、この選択された反復値及びエントリを利用して、ブルームフィルタにその存在の照会をするために使用される新しい出力値を生成し得る。この新しい出力値が存在しない場合、データベースシステムは、この新しい反復値が、ブルームフィルタ内で出力値が検出された最後の反復値とは異なる単位増分であるかどうかを再び判定し得る（７１４）。最後の反復値と異なる単位増分でない場合は、データベースシステムは、反復値が、ブルームフィルタ内で出力値が検出された最後の反復値との単位差のみになるまで、新しい反復値を選択し続け得る（７１８）。次いで、データベースシステムは、この最後の反復値をユーザに報告する（７１６）か、またはその値を利用してブルームフィルタ内のエントリの現在の状態を判定し得る。
【００５８】
上述のように、データベースシステムは、データベース属性名及びこれらの属性の対応する値のキー値ペアに対応し得るブルームフィルタに要素を追加し得る。例えば、データベースシステムは、これらのキー値ペアをハッシュし、これらのハッシュをブルームフィルタに挿入し得る。ブルームフィルタにこれらのハッシュが入力されると、データベースシステムはブルームフィルタにデジタル署名して、データベース全体に対してデジタル署名のより厳密なバインディングを提供し得る。したがって、図８は、少なくとも一実施形態による、データベースレコードに署名するための要求に応答して、ブルームフィルタにデータベースのキー値ペアを追加し、ブルームフィルタにデジタル署名するためのプロセス８００の具体例を示す。プロセス８００は、前述のデータベースシステムによって実行し得て、データベースシステムは、エントリ関数を利用して、データベース属性のキー値ペアの出力値を生成し、これらの出力値をブルームフィルタに追加するように構成し得る。データベースシステムはまた、暗号キーペアの秘密暗号キーを利用して、ブルームフィルタにデジタル署名するように構成し得る。
【００５９】
任意の時点て、データベースシステムは、データベースレコードにデジタル署名するための要求を受信し得る（８０２）。例えば、データベースシステムのユーザは、データベースレコードのデジタル署名を使用して、後でレコードの内容を検証するために使用し得る、データベースレコードにセキュリティの追加層を提供したいことがあり得る。例えば、ユーザが暗号キーペアの公開暗号キーを使用してデジタル署名を検証する場合、ユーザは、データベースレコードが本物であるかどうかを判定し得る。したがって、デジタル署名は、レコードのユーザ向けのデータベースレコードの認証のための方法として働き得る。
【００６０】
要求に応答して、データベースシステムは、データベースレコードからデータベース属性及び属性の対応する値の第１のキー値ペアを選択し得る（８０４）。この第１のキー値ペアは、データベースレコードからランダムに選択されるか、レコード内のオフセットに少なくとも部分的に基づいて選択され得る。例えば、データベースシステムは、データベースレコード内の最も低いオフセットを有する属性を選択し得る。データベースシステムが、データベースレコードから最初のキー値ペアを選択すると、データベースシステムは、エントリ関数を利用して、エントリ関数への入力として選択されたキー値ペアをハッシュするか、または他の方法で使用して、ブルームフィルタに追加し得る出力値を生成し得る。一実施形態では、データベースシステムは、属性のキー値ペアに対応する２つの別々の出力値を生成する。例えば、第１の出力値は、属性名及び属性の反復値に少なくとも部分的に基づいて生成され得る。この反復値を使用して、属性の現在の反復を示し得る。ユーザまたはデータベースシステムが、属性の特定のエントリの照会をブルームフィルタに行えるようにするために、データベースシステムは、属性名、反復値、及びこの所与の反復での属性のエントリに少なくとも部分的に基づいている第２の出力値を生成し得る。したがって、データベースシステムは、後でブルームフィルタを照会し、属性の現在の反復値を最初に識別し、反復値を使用して、この反復値での属性の特定のエントリが指定されているかどうかを判定するクエリを実行し得る。
【００６１】
データベースシステムが出力値を生成するためにキー値ペアをハッシュすると、データベースシステムは、このハッシュ値（例えば、エントリ関数からの出力値）をブルームフィルタに追加して（８０８）、現在の反復値のブルームフィルタ内のキー値ペアの存在を示し得る。これにより、ブルームフィルタに追加された出力値が、キー値ペアのより高い反復値に対応し得るため、ブルームフィルタ内の以前のすべてのキー値ペアのエントリが置き換えられ得る。続いて、データベースシステムは、ブルームフィルタに追加する必要があるデータベースレコードの追加のキー値ペアがあるかどうかを判定し得る（８１０）。ある場合、データベースシステムは、データベースレコードから次のキー値ペアを選択し（８０４）、エントリ関数への入力としてキー値ペアを使用することによって、この選択されたキー値ペアをハッシュして（８０６）、ブルームフィルタに追加されるハッシュ／出力値を生成し得る。次いで、データベースシステムは、選択されたキー値ペアのこのハッシュをブルームフィルタに追加し得る（８０８）。これは、データベースレコードのキー値ペアのすべてのハッシュ／出力値がブルームフィルタに追加されるまで続き得る。これが生じると、データベースシステムは、暗号キーペアの秘密暗号キーを利用して、データベースレコードのキー値ペアを指定するブルームフィルタにデジタル署名し得る（８１２）。データベースシステムは、このデジタル署名されたブルームフィルタをデータベースシステムのユーザに提供して、データベースレコードの信頼性を検証し、ブルームフィルタのクエリを実行して、現在の反復値の様々なデータベース属性の現在値を判定し得る。
【００６２】
データベースのキー値ペアが、例示の目的のために本開示を通して広範囲に使用されているが、他のデータセットが利用され得ることに留意されたい。例えば、コンピュータシステムは、エンティティが、ブルームフィルタに対してコンポーネントを検証し、ブルームフィルタのデジタル署名を検証することによって、データセットの個々のコンポーネントを検証し得るように、データセットの複数のコンポーネントをブルームフィルタまたは他の確率的データ構造に符号化し得る。一実施形態では、データセットは、ブルームフィルタまたは他の確率的データ構造に追加された個々のコンポーネントが、（例えば、そのハッシュをブルームフィルタに追加することによって）データオブジェクトのビットのサブシーケンスとすることができるように、データオブジェクトの複数のビット（例えば、シーケンス）を含むことができる。このようにして、すべてのデータにアクセスする必要なく、ブルームフィルタを使用してすべてのデータを確認するより少ないデータで整合性を確認し得る。
【００６３】
上述のように、上述のプロセス８００の代替として、データベースシステムが代わって、各キー値ペアにデジタル署名し、これらのデジタル署名をエントリ関数への入力として利用して、ハッシュ／出力値を生成し得る。データベースシステムは、ユーザがブルームフィルタを照会して、特定のデジタル署名がブルームフィルタ内に存在するかどうかを判定し得るように、これらのハッシュ／出力値をブルームフィルタに追加し得る。その場合、次いで特定のキー値ペアを認証し得る。さらに、属性の値が変更されると、データベースシステムは、新しいデジタル署名を生成して、キー値ペアの最新の反復の認証のためにブルームフィルタに追加し得る。したがって、図９は、少なくとも一実施形態による、データベースレコードに署名するための要求に応答して、ブルームフィルタにデータベースのキー値ペアのデジタル署名を追加するためのプロセス９００の具体例を示す。プロセス９００は、データベースレコードの各キー値ペアをデジタル署名し、これらのデジタル署名をブルームフィルタ内に含めるためにハッシュするように構成し得る、前述のデータベースシステムによって実行し得る。
【００６４】
上述のプロセス８００と同様に、データベースシステムは、データベースレコードにデジタル署名するための要求を受信し得る（９０２）。これにより、データベースシステムは、データベース属性及びその属性の対応する値の第１のキー値ペアを選択し得る（９０４）。この第１のキー値ペアは、データベースレコードからランダムに選択されるか、レコード内のオフセットに少なくとも部分的に基づいて選択され得る。例えば、データベースシステムは、データベースレコード内の最も低いオフセットを有する属性を選択し得る。データベースシステムが、この最初のキー値ペアをデータベースレコードから選択すると、データベースシステムは、暗号キーペアの秘密暗号キーを利用して、選択されたキー値ペアをデジタル署名し（９０６）、ブルームフィルタのエントリとして追加し得るデジタル署名を生成し得る。例えば、データベースシステムは、エントリ関数を利用して、デジタル署名されたキー値ペア及びキー値ペアのデジタル署名の反復値に少なくとも部分的に基づいている出力値（例えば、ハッシュ）を生成し得る（９０８）。
【００６５】
一実施形態では、データベースシステムは、キー値ペアのデジタル署名に対応し得る２つの別々の出力値を生成する。例えば、第１の出力値は、属性名及び属性の反復値に少なくとも部分的に基づいて生成され得る。この反復値を使用して、属性の現在の反復を示し得る。ユーザまたはデータベースシステムが、属性の特定のデジタル署名の照会をブルームフィルタに行えるようにするために、データベースシステムは、属性名、反復値、及びこの所与の反復での属性のデジタル署名に少なくとも部分的に基づいている第２の出力値を生成し得る。したがって、データベースシステムは、後でブルームフィルタを照会し、属性の現在の反復値を最初に識別し、反復値を使用して、この反復値での属性の特定のデジタル署名が指定されているかどうかを判定するクエリを実行し得る。
【００６６】
データベースシステムが、エントリ関数を使用してブルームフィルタに追加されるデジタル署名の出力値を生成すると、データベースシステムは、ブルームフィルタにデジタル署名を追加する必要がある追加のキー値ペアがあるかどうかを判定し得る（９１０）。その場合、データベースシステムは、データベースレコードの次のキー値ペアを選択し（９０４）、このキー値ペアをデジタル署名し得る（９０６）。次いで、このデジタル署名を使用して、ブルームフィルタに追加し得る出力値を生成し得る。データベースシステムがキー値ペアのデジタル署名のための様々なハッシュ／出力値を生成すると、データベースシステムは、これらのハッシュ／出力値をブルームフィルタに追加して（９１２）、データベースレコードの認証のためのデジタル署名の照会を行えるようにし得る。一実施形態では、データベースシステムは、ブルームフィルタ自体にデジタル署名して、データベースレコードの追加認証層を提供することもできる。
【００６７】
上述のプロセス８００と同様に、データベースのキー値ペアが、例示の目的のために本開示を通して広範囲に使用されているが、他のデータセットが利用され得ることに留意されたい。例えば、コンピュータシステムは、エンティティが、ブルームフィルタに対してコンポーネントのデジタル署名を検証することによって、データセットの個々のコンポーネントを検証し得るように、データセットの複数のコンポーネントのデジタル署名をブルームフィルタまたは他の確率的データ構造に符号化し得る。一実施形態では、データセットは、ブルームフィルタまたは他の確率的データ構造に追加された個々のコンポーネントの署名が、データオブジェクトのビットのサブシーケンスに対応することができるように、データオブジェクトの複数のビットを含むことができる。
【００６８】
図１０は、多様な実施形態による態様を実装するための例示的な環境１０００の態様を示す。理解されるように、ウェブベースの環境が説明目的に使用されるが、必要に応じて、異なる環境を使用して様々な実施形態を実装し得る。環境は、電子クライアントデバイス１００２を含み、これは、適切なネットワーク１００４上でリクエスト、メッセージまたは情報を送信かつ／または受信し、かつ一部の実施形態で、情報をデバイスのユーザに戻して伝達するように動作可能な任意の適切なデバイスを含むことができる。そのようなクライアントデバイスの例には、パーソナルコンピュータ、携帯電話、携帯型メッセージングデバイス、ラップトップ型コンピュータ、タブレットコンピュータ、セットトップボックス、個人データ端末、埋込み型コンピュータシステム、電子ブックリーダなどが挙げられる。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワークまたは任意の他のそのようなネットワーク及び／もしくはそれらの組み合わせを含む任意の適切なネットワークを含み得る。そのようなシステムに用いられるコンポーネントは、ネットワークの種類及び／または選択された環境に少なくとも部分的に依存し得る。そのようなネットワークを介した通信用のプロトコル及びコンポーネントは周知であり、本明細書で詳細に論じることはない。ネットワークを介する通信は、有線または無線接続及びそれらの組み合わせによって可能にされ得る。この例では、当業者には明らかであるように、ネットワークには、要求を受信し、それに応答してコンテンツを提供するためのウェブサーバ１００６を含む環境のような、インターネットが含まれるが、他のネットワークについては、同様の働きをする代替デバイスが使用できる。
【００６９】
具体例の環境は、少なくとも１つのアプリケーションサーバ１００８及びデータストア１０１０を含む。適切なデータストアからデータを取得するなどのタスクを実行するように、連結またはそうでなければ構成され得、そのようにやりとりすることができる複数のアプリケーションサーバ、層または他の要素、プロセスもしくはコンポーネントが存在し得ることを理解されたい。本明細書中で用いられるサーバは、ハードウェア装置または仮想コンピュータシステムなど様々な方法で実装され得る。一部の文脈で、サーバとは、コンピュータシステム上で実行されているプログラミングモジュールを指し得る。本明細書で使用される「データストア」という用語は、別様に記載されていない限りまたは文脈から明らかでない限り、データを格納し、データにアクセスし、データを読み出すことができる任意のデバイスまたはデバイスの組み合わせを指し、任意の標準、分散型、仮想またはクラスタ化環境における、任意の組み合わせ及び任意の数のデータサーバ、データベース、データストレージデバイス及びデータストレージ媒体を含み得る。アプリケーションサーバは、必要に応じてデータストアと統合して、クライアントデバイスの１つまたは複数のアプリケーションの態様を実行し、アプリケーションのデータアクセス及びビジネスロジックの一部または全部を処理するための、任意の好適なハードウェア、ソフトウェア及びファームウェアを含み得る。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し得、以下に限定するものではないが、ユーザに提供されるのに使用可能なテキスト、画像、音声、動画及び／または他のコンテンツを含むコンテンツも生成することができ、これは、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）、拡張マークアップ言語（「ＸＭＬ」）、Ｊａｖａスクリプト（登録商標）、カスケーディングスタイルシート（「ＣＳＳ」）または別の適切なクライアント側構造化言語の形態で、ウェブサーバによってユーザに提供され得る。クライアントデバイスに転送されるコンテンツは、クライアントデバイスによって処理されて、以下に限定するものではないが、聴覚的に、視覚的にかつ／または触覚、味覚及び／または嗅覚を含む他の感覚を通してユーザに感知可能な形式を含む１つまたは複数の形式で、コンテンツを提供し得る。すべての要求及び応答の処理、ならびにクライアントデバイス１００２とアプリケーションサーバ１００８との間のコンテンツの配信は、この例では、ＰＨＰ：ハイパーテキストプリプロセッサ（「ＰＨＰ」）、Ｐｙｔｈｏｎ、Ｒｕｂｙ、Ｐｅｒｌ、Ｊａｖａ（登録商標）、ＨＴＭＬ、ＸＭＬまたは別の適切なサーバ側構造化言語を使用してウェブサーバによって処理され得る。本明細書で論じられる構造化コードは、本明細書の他の箇所で論じられる任意の適切なデバイスまたはホストマシン上で実行され得るので、ウェブサーバ及びアプリケーションサーバは必須ではなく、単に例示のコンポーネントにすぎないことを理解されたい。さらに、本明細書中で記載される、単一のデバイスで行われている操作は、文脈から別様であることが明らかでない限り、分散型かつ／または仮想システムを形成し得る複数のデバイスによって集合的に行われ得る。
【００７０】
データストア１０１０は、本開示の特定の態様に関するデータを格納するための、いくつかの別個のデータテーブル、データベース、データドキュメント、ダイナミックデータストレージスキーム及び／または他のデータストレージ機構及び媒体を含み得る。例えば、説明されるデータストアは、生産データ１０１２及びユーザ情報１０１６を格納する機構を含み得、それは生産側にコンテンツを提供するために使用され得る。データストアは、ログデータ１０１４を格納するための機構を含むこともまた示され、これは、報告、分析または他のかかる目的のために使用され得る。ページの画像情報及びアクセス権情報など、データストアに格納する必要があり得る多数の他の態様が存在し得、これは、必要に応じて上に列挙された機構のいずれかまたはデータストア１０１０内の追加の機構に格納することができることを理解されたい。データストア１０１０は、それに関連するロジックを介して、アプリケーションサーバ１００８から命令を受信し、それに応答してデータを取得、更新、またはその他の処理をするように動作可能である。アプリケーションサーバ１００８は、受信した命令に応答して、静的なデータ、動的なデータまたは静的なデータと動的なデータの組み合わせのデータを提供し得る。ウェブログ（ブログ）、買い物アプリケーション、ニュースサービス及び他のそのようなアプリケーションで用いられるデータなどの動的なデータは、本明細書中で記載されるようなサーバ側の構造化言語によって生成され得、または、アプリケーションサーバ上でまたはその制御下で動作しているコンテンツ管理システム（「ＣＭＳ」）によって提供され得る。一例では、ユーザは、ユーザが操作するデバイスを通じて、特定の種類の品目の検索リクエストを送信し得る。この事例において、データストアは、ユーザ情報にアクセスして、ユーザの識別情報を検証することができ、カタログの詳細情報にアクセスして、その種類の品目についての情報を取得することができる。次いで、この情報は、ユーザがユーザデバイス１００２上でブラウザを介して見ることのできるウェブページ上にリスト化された結果などでユーザに戻され得る。関心のある特定の品目の情報を、ブラウザの専用ページまたはウィンドウで見ることができる。しかし、本開示の実施形態は必ずしもウェブページの文脈に限定されるものではなく、リクエストが必ずしもコンテンツに対するリクエストではない一般の処理リクエストに、より一般的に適用可能であり得ることに留意されたい。
【００７１】
各サーバは、通常、一般管理及びそのサーバの操作のための実行可能なプログラム命令を提供するオペレーティングシステムを含み、通常、サーバのプロセッサによって実行されると、サーバがその意図される機能を実行することを可能にする命令を格納するコンピュータ可読ストレージ媒体（例えば、ハードディスク、ランダムアクセスメモリ、読出し専用メモリなど）を含む。サーバのオペレーティングシステム及び一般的な機能性の好適な実装は、周知である、または市販入手可能であり、特に、本明細書の開示を踏まえて、当業者によって容易に実装される。
【００７２】
一実施形態における環境は、１つまたは複数のコンピュータネットワークもしくは直接接続を使用し、通信リンクを介して相互接続された複数のコンピュータシステム及びコンポーネントを利用する、分散型及び／または仮想コンピューティング環境である。しかしながら、当業者であれば、そのようなシステムが、図１０に説明されるコンポーネントよりも少ない数または多い数のコンポーネントを有するシステムにおいても同等にうまく動作し得ることを理解する。したがって、図１０におけるシステム１０００の描写は、本質的に例示であり、本開示の範囲を限定するものではないと見なされるべきである。
【００７３】
さらに、本開示の実施形態は、以下の条項に照らして、説明することができる。
【００７４】
１．システムであって、
１つまたは複数のプロセッサと、
命令を含むメモリであって、前記１つまたは複数のプロセッサによって実行されると、前記命令により、前記システムが、
エントリをブルームフィルタに追加するための第１の要求を受信し、
前記ブルームフィルタを照会して、前記ブルームフィルタの前記エントリの現在の反復値を判定し、前記現在の反復値が、第１のパリティ値または第２のパリティ値のいずれかであるパリティ属性を有し、前記第１のパリティ値が、前記ブルームフィルタの前記エントリの存在を示し、前記第２のパリティ値が、前記エントリが前記ブルームフィルタから削除されたことを示し、
前記第１の要求に、少なくとも、
前記現在の反復値が、前記第１のパリティ値を有する場合、前記エントリが前記ブルームフィルタ内に存在することを示し、
前記現在の反復値が、前記第２のパリティ値を有する場合、
前記現在の反復値を、前記第１のパリティ値を有する第１の現在の反復値になるように増分し、
前記第１の現在の反復値及び前記エントリを利用して第１の出力値を生成し、
前記生成された第１の出力値を前記ブルームフィルタに追加することによって応答し、
前記ブルームフィルタから前記エントリを削除するための第２の要求を受信し、
前記第２の要求に、少なくとも、
前記ブルームフィルタを照会して前記ブルームフィルタの前記エントリの前記現在の反復値を判定し、
前記第２の現在の反復値が、前記第２のパリティ値に対応する場合、前記エントリが前記ブルームフィルタ内に存在しないことを示し、
前記第２の現在の反復値が、前記第１のパリティ値に対応する場合、
前記現在の反復値を、前記第２のパリティ値を有する前記第２の現在の反復値に増分し、
前記第２の現在の反復値及び前記エントリを利用して第２の出力値を生成し、
前記生成された第２の出力値を前記ブルームフィルタに追加することによって応答する、
前記メモリを含む、
前記システム。
【００７５】
２．前記１つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、前記ブルームフィルタを照会して、それぞれが異なる反復値を有する、前記ブルームフィルタを少なくとも複数回照会することによって前記現在の反復値を判定し、前記ブルームフィルタに前記エントリが追加された最も高い反復値として前記現在の反復値を判定する、条項１に記載のシステム。
【００７６】
３．前記第１のパリティ値が偶数であり、前記第２のパリティの値が奇数である、条項１または２に記載のシステム。
【００７７】
４．前記１つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、前記第１の現在の反復値及び前記エントリをエントリ関数に入力し、前記現在の反復値と前記エントリを結合して、前記ブルームフィルタに追加される前記第１の出力値を生成する、条項１〜３のいずれか１項に記載のシステム。
【００７８】
５．コンピュータ実装方法であって、
実行可能な命令で構成される１つまたは複数のコンピュータシステムの制御下で、
確率的データ構造を照会して前記確率的データ構造内のエントリの現在の反復状態を判定し、前記現在の反復状態が、前記エントリがセットのメンバであることに対応する第１の状態及びセット内の前記エントリが存在しないことに対応する第２の状態を含む複数の状態からの前記エントリの状態を示すことと、
前記エントリが前記セットのメンバであることに対応する前記現在の反復状態の結果として、新しい反復状態が前記セットからの前記エントリの削除に対応するように、前記現在の反復状態を前記新しい反復状態に修正することと、
前記新しい反復状態及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記出力値を追加することとを含む、前記コンピュータ実装方法。
【００７９】
６．前記確率的データ構造がブルームフィルタであり、
前記ブルームフィルタに前記出力値を追加することが、前記ブルームフィルタ内の前記出力値の存在を示すために、前記ブルームフィルタ内の１つまたは複数のビットをゼロから１に変更することを含む、条項５に記載のコンピュータ実装方法。
【００８０】
７．前記方法が、
前記エントリを前記確率的データ構造に追加するための要求を受信することと、
前記確率的データ構造を照会して前記エントリの前記現在の反復状態を判定することと、
前記第２の状態に対応する前記現在の反復状態の結果として、
前記現在の反復状態が、前記第１の状態に対応する新しい現在の反復状態になるように修正することと、
前記新しい現在の反復値及び前記エントリを利用して第２の出力値を生成することと、
前記確率的データ構造に前記生成された第２の出力値を追加することとをさらに含む、条項５または６に記載のコンピュータ実装方法。
【００８１】
８．前記現在の反復状態が、第１のパリティ状態または第２のパリティ状態のいずれかであるパリティ属性を有し、前記第１のパリティ状態が前記第１の状態に対応し、前記第２のパリティ状態が前記第２の状態に対応する、条項５〜７のいずれか１項に記載のコンピュータ実装方法。
【００８２】
９．前記第１のパリティ状態が奇数であり、前記第２のパリティの状態が偶数である、条項８に記載のコンピュータ実装方法。
【００８３】
１０．前記出力値が、少なくとも前記新しい反復状態及び前記エントリをハッシュ関数に入力することによって生成される、条項５〜９のいずれか１項に記載のコンピュータ実装方法。
【００８４】
１１．前記確率的データ構造に照会して前記現在の反復値を判定することが、
それぞれが異なる反復状態を有する、前記確率的データ構造を複数回照会することと、
前記現在の反復状態を、前記エントリが前記確率的データ構造に追加された前記最も高い反復状態として判定することとを含む、条項５〜１０のいずれか１項に記載のコンピュータ実装方法。
【００８５】
１２．前記セットからの前記エントリの削除が、前記確率的データ構造に関連するデータベースからの前記エントリの削除の結果として生成された要求に応答して実行される、条項５〜１１のいずれか１項に記載のコンピュータ実装方法。
【００８６】
１３．非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を格納し、コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記命令により、前記コンピュータシステムが、少なくとも、
確率的データ構造内のエントリの現在の反復値を判定し、前記現在の反復値が、第１の状態及び第２の状態を含む複数の状態からの前記エントリの状態を示し、前記現在の反復値が、前記エントリが前記確率的データ構造を更新するために使用された回数を示し、
前記判定された現在の反復値に少なくとも部分的に基づいて前記エントリの状態を判定し、
前記判定した状態を示す情報を提供する、前記非一時的なコンピュータ可読ストレージ媒体。
【００８７】
１４．前記命令によりさらに、前記コンピュータシステムが、それぞれが異なる反復値を有する、前記確率的データ構造を複数回照会して、現在の反復値を判定する、条項１３に記載の非一時的なコンピュータ可読記憶媒体。
【００８８】
１５．前記第１の状態が、セット内の前記エントリのメンバシップに対応し、前記第２の状態が、前記セット内の前記エントリが存在しないことに対応する、条項１３または１４に記載の非一時的なコンピュータ可読記憶媒体。
【００８９】
１６．前記確率論的データ構造が、ブルームフィルタ内の前記値の存在を示すために使用される１つまたは複数のビットを含む前記ブルームフィルタである、条項１３〜１５のいずれか１項に記載の非一時的コンピュータ可読記憶媒体。
【００９０】
１７．前記命令によりさらに、前記コンピュータシステムが、
前記エントリを前記確率的データ構造に追加するための要求を受信し、
前記エントリの前記現在の反復値を判定し、
少なくとも、
前記現在の反復値が前記第１の状態に対応する場合、前記エントリが前記確率的データ構造内に存在することを示すことと、
前記現在の反復値が前記第２の状態に対応する場合、
前記現在の反復値を、前記第１の状態に対応する新しい現在の反復値になるように増分することと、
前記新しい現在の反復値及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することによって前記要求を満たす、条項１３〜１６のいずれか１項に記載のコンピュータ実装方法。
【００９１】
１８．前記命令によりさらに、前記コンピュータシステムが、
前記エントリを前記確率的データ構造から削除するための要求を受信し、前記要求が前記確率的データ構造に関連するデータベースから前記エントリの削除の検出に応答して生成され、
前記要求に応答して前記エントリの前記現在の反復値を判定し、
少なくとも、
前記現在の反復値が前記第２の状態に対応する場合、前記エントリが前記確率的データ構造内に存在しないことを示すことと、
前記現在の反復値が前記第１の状態に対応する場合、
前記現在の反復値を、前記第２の状態に対応する新しい現在の反復値になるように増分することと、
前記新しい現在の反復値及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することによって前記要求を満たす、条項１３〜１７のいずれか１項に記載のコンピュータ実装方法。
【００９２】
１９．前記現在の反復値が、第１のパリティ値または第２のパリティ状態のいずれかであるパリティ属性を有し、前記第１のパリティ値が前記第１の状態に対応し、前記第２のパリティ値が前記第２の状態に対応する、条項１３〜１８のいずれか１項に記載の非一時的なコンピュータ可読記憶媒体。
【００９３】
２０．前記命令によりさらに、前記コンピュータシステムが、
前記エントリが前記確率的データ構造内に存在することに対応する前記現在の反復値の結果として、新しい反復値が、前記エントリが前記確率的データ構造に存在しないことに対応するように、前記新しい反復値を選択し、
前記新しい反復値及び前記エントリを使用して生成された値を前記確率的データ構造に追加する、条項１３〜１９のいずれか１項に記載の非一時的なコンピュータ可読記憶媒体。
【００９４】
２１．システムであって、
１つまたは複数のプロセッサと、
命令を含むメモリであって、前記一つまたは複数のプロセッサによって実行されると、前記命令により、前記システムが、
クライアントデバイスから、データベースレコードをデジタル署名するための要求を受信し、前記データベースレコードは複数のキー値ペアを含み、
ハッシュ関数を利用して、前記複数のキー値ペアの個々のキー値ペアをハッシュし、ハッシュのセットを生成し、
前記生成されたハッシュのセットをブルームフィルタに追加して、更新されたブルームフィルタを生成し、
前記更新されたブルームフィルタにデジタル署名して、前記更新されたブルームフィルタのデジタル署名を生成し、
前記更新されたブルームフィルタ及び前記生成されたデジタル署名を提供する、
前記メモリを含む、
前記システム。
【００９５】
２２．前記１つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、
前記ブルームフィルタ内の前記複数のキー値ペアの個々のキー値ペアを、以前に観察された属性及び前記属性の新しい値を含む新しいキー値ペアに置き換えるための要求を受信し、
前記ブルームフィルタを照会して、前記ブルームフィルタ内の前記個々のキー値ペアの現在の反復値を判定し、
少なくとも、
前記現在の反復値を、新しい反復値になるように増分することと、
前記新しい反復値と、前記キー値ペアの前記キーと、前記キー値ペアの前記新しい値とを利用して出力値を生成することと、
前記生成された出力値を前記ブルームフィルタに追加することによって前記要求を満たす、条項２１に記載のシステム。
【００９６】
２３．前記ブルームフィルタ内の前記個々のキー値ペアを置き換えるための要求が、前記個々のキー値ペアの値の削除を指定し、
前記１つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、少なくとも、
前記新しい反復値と、前記キー値ペアの前記キーと、Ｎｕｌｌ値とを利用して前記出力値を生成することと、
前記生成された出力値を前記ブルームフィルタに追加することによって前記要求を満たす、条項２２に記載のシステム。
【００９７】
２４．前記１つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、
前記複数のキー値ペアのうちの特定のキーの前記ブルームフィルタ内に値が存在するかどうかを判定するための要求を受信し、
前記ブルームフィルタを照会して、前記特定のキーに対応する個々のキー値ペアの現在の反復値を判定し、
前記判定された現在の反復値と、前記キーと、前記要求で指定した前記値を利用して、出力値を生成し、
前記ブルームフィルタを照会して、前記出力値の存在を判定し、その結果、判定前記出力値が前記ブルームフィルタ内に存在する場合、前記要求で指定した前記値が、前記ブルームフィルタ内に存在する、条項２１〜２３のいずれか１項に記載のシステム。
【００９８】
２５．コンピュータ実装方法であって、
実行可能な命令で構成される１つまたは複数のコンピュータシステムの制御下で、
データセットの複数のコンポーネントを取得することと、
前記データセットの前記複数のコンポーネントの個々のコンポーネントをハッシュして複数のハッシュを生成することと、
前記生成された複数のハッシュを確率的データ構造に追加することと、
前記確率的データ構造にデジタル署名することとを含む、前記コンピュータ実装方法。
【００９９】
２６．前記確率論的データ構造がブルームフィルタであり、
前記生成された複数のハッシュを前記ブルームフィルタに追加することが、前記ブルームフィルタ内に前記生成された複数のハッシュの存在を示すために、前記ブルームフィルタ内の１つまたは複数のビットをゼロから１に変更することを含む、条項２５に記載のコンピュータ実装方法。
【０１００】
２７．データベースレコードにデジタル署名するための要求に応答して、前記確率的データ構造及びデジタル署名された前記確率的データ構造の結果として生成されたデジタル署名を提供することをさらに含む、条項２５または２６に記載のコンピュータ実装方法。
【０１０１】
２８．コンポーネントが前記確率的データ構造内に存在するかどうかを判定するための要求を受信することと、
前記コンポーネントの現在の反復値を判定することと、
前記現在の反復値及び前記コンポーネントを使用して前記コンポーネントが前記確率的データ構造内に存在するかどうかを判定することとを含む、条項２５〜２７に記載のコンピュータ実装方法。
【０１０２】
２９．それぞれが異なる反復値を有する、前記確率的データ構造を複数回照会して、前記現在の反復値を判定し、前記コンポーネントが前記確率的データ構造に追加された最も高い反復値として前記現在の反復値を判定することをさらに含む、条項２８に記載のコンピュータ実装方法。
【０１０３】
３０．前記確率的データ構造からの個々のコンポーネントを、新しいコンポーネントに置き換えるための要求を受信することと、
前記個々のコンポーネントの現在の反復値を判定することと、
前記現在の反復値を修正して新しい反復値を生成することと、
前記新しい反復値及び前記新しいコンポーネントをハッシュして新しいハッシュを生成することと、
前記確率的データ構造に前記新しいハッシュを追加することとを含む、条項２５〜２９のいずれか１項に記載のコンピュータ実装方法。
【０１０４】
３１．前記個々のコンポーネントを置き換えるための要求が、前記個々のコンポーネントを前記確率的データ構造から削除するための削除要求であり、
前記前記現在の反復値を修正して新しい反復値を生成することが、前記新しい反復値が前記確率的データ構造からの前記個々のコンポーネントが存在しないことに対応するように前記新しい反復値を選択することを含む、条項３０に記載のコンピュータ実装方法。
【０１０５】
３２．前記削除要求が、前記確率的データ構造に関連するデータベースから前記コンポーネントを削除した結果として生成される、条項３１に記載のコンピュータ実装方法。
【０１０６】
３３．非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を格納し、コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記命令により、前記コンピュータシステムが、少なくとも、
データセットの複数のコンポーネントを確率的データ構造に符号化し、
前記データセットの前記複数のコンポーネントのうちの個々のコンポーネントを、少なくとも、
前記確率的データ構造に対して前記個々のコンポーネントを検証することと、
前記確率的データ構造のデジタル署名を検証することによって検証する、前記非一時的なコンピュータ可読ストレージ媒体。
【０１０７】
３４．前記確率論的データ構造が、ブルームフィルタ内の前記複数のコンポーネントの存在を示すために使用される１つまたは複数のビットを含む前記ブルームフィルタである、条項３３に記載の非一時的コンピュータ可読記憶媒体。
【０１０８】
３５．前記データセットの前記複数のコンポーネントを前記確率的データ構造に符号化することが、
前記データセットの前記複数のコンポーネントを取得することと、
前記データセットの前記複数のコンポーネントの個々のコンポーネントをハッシュして複数のハッシュを生成することと、
前記生成された複数のハッシュを前記確率的データ構造に追加することと、
前記確率的データ構造にデジタル署名することとを含む、条項３３または３４に記載の非一時的なコンピュータ可読記憶媒体。
【０１０９】
３６．前記命令によりさらに、前記コンピュータシステムが、
前記確率的データ構造からコンポーネントを削除するための要求を受信し、
前記コンポーネントの現在の反復値を判定し、
少なくとも、
前記コンポーネントの前記現在の反復値が、前記コンポーネントが前記確率的データ構造内に存在することに対応する場合、
前記現在の反復値を新しい反復値になるように修正して、前記新しい反復値が、前記確率的データ構造に前記コンポーネントが存在しないことに対応するようにすることと、
前記コンポーネント及び前記新しい反復値をハッシュしてハッシュを生成することと、
前記ハッシュを前記確率的データ構造に追加することと、
前記コンポーネントの前記現在の反復値が、前記コンポーネントが前記確率的データ構造に存在しないことに対応する場合、前記コンポーネントが前記確率的データ構造に存在しないことを示すことによって前記要求を満たす、条項３３〜３５のいずれか１項に記載の非一時的なコンピュータ可読記憶媒体。
【０１１０】
３７．前記複数のコンポーネントが、データベースレコードのキー値ペアである、条項３３〜３６のいずれか１項に記載の非一時的なコンピュータ可読記憶媒体。
【０１１１】
３８．前記命令によりさらに、前記コンピュータシステムが、
コンポーネントが前記確率的データ構造内に存在するかどうかを判定するための要求に応答して、前記コンポーネントの現在の反復値を判定し、
前記現在の反復値及び前記コンポーネントをハッシュしてハッシュを生成し、
前記ハッシュを利用して前記コンポーネントが、前記確率的データ構造内に存在するかどうかを判定する、条項３３〜３７のいずれか１項に記載の非一時的なコンピュータ可読記憶媒体。
【０１１２】
３９．前記命令によりさらに、前記コンピュータシステムが、前記確率的データ構造の複数のクエリを実行して前記現在の反復値を判定し、異なる反復値を使用して各クエリを実行して前記コンポーネントが前記確率的データ構造に追加された最も高い反復値として前記現在の反復値を判定する、条項３８に記載の非一時的なコンピュータ可読記憶媒体。
【０１１３】
４０．前記命令によりさらに、前記コンピュータシステムが、
前記確率的データ構造内のコンポーネントを更新するための要求を受信し、
前記コンポーネントの現在の反復値を判定し、
前記現在の反復値を修正して新しい反復値を生成し、
前記新しい反復値及び前記更新されたコンポーネントをハッシュして新しいハッシュを生成し、
前記確率的データ構造に前記新しいハッシュを追加する、条項３８に記載の非一時的なコンピュータ可読記憶媒体。
【０１１４】
４１．システムであって、
１つまたは複数のプロセッサと、
命令を含むメモリであって、前記一つまたは複数のプロセッサによって実行されると、前記命令により、前記システムが、
クライアントデバイスから、データベースレコードをデジタル署名するための要求を受信し、前記データベースレコードは複数のキー値ペアを含み、
前記複数のキー値ペアの個々のキー値ペアに少なくとも部分的に基づいて、前記個々のキー値ペアの個別のデジタル署名を生成し、
前記生成された個々の電子署名をブルームフィルタに追加して更新されたブルームフィルタを生成し、
前記更新されたブルームフィルタを提供する、
前記メモリを含む、
前記システム。
【０１１５】
４２．前記１つまたは複数のプロセッサによって実行されると、前記命令によってさらに、前記システムが、
前記ブルームフィルタ内のキー値ペアに対応する個々のデジタル署名を、以前に観察された属性及び前記属性の新しい値を含む新しいキー値対に対応する新しいデジタル署名に置き換えるための要求を受信し、
前記ブルームフィルタを照会して前記ブルームフィルタ内のデジタル署名の現在の反復値を判定し、
少なくとも、
前記現在の反復値を、新しい反復値になるように増分することと、
前記新しいキー値ペアにデジタル署名して前記新しいキー値ペアの新しいデジタル署名を生成することと、
前記新しい反復値及び前記新しいデジタル署名を利用して出力値を生成することと、
前記生成された出力値を前記ブルームフィルタに追加することによって前記要求を満たす、条項４１に記載のシステム。
【０１１６】
４３．前記デジタル署名を置き換えるための要求が、前記デジタル署名が前記ブルームフィルタから削除されるように、前記キー値ペアの値の削除を指定し、
前記１つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記コンピュータシステムが、少なくとも、
Ｎｕｌｌ値及び前記キー値ペアのキーをデジタル署名して前記新しいデジタル署名を生成することと、
前記新しい反復値及び前記新しいデジタル署名を利用して出力値を生成することと、
前記生成された出力値を前記ブルームフィルタに追加することによって前記要求を満たす、条項４２に記載のシステム。
【０１１７】
４４．前記１つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、
前記複数のキー値ペアのうちの特定のキー値ペアのデジタル署名を検証するための要求を受信し、
前記ブルームフィルタを照会して前記特定のデジタル署名の現在の反復値を判定し、
前記判定された現在の反復値及び前記デジタル署名を利用して出力値を生成し、
前記ブルームフィルタを照会して、前記出力値の存在を判定し、前記出力値が前記ブルームフィルタ内に存在する場合、前記デジタル署名が真正であると検証される、条項４１〜４３のいずれか１項に記載のシステム。
【０１１８】
４５．コンピュータ実装方法であって、
実行可能な命令で構成される１つまたは複数のコンピュータシステムの制御下で、
データセットの複数のコンポーネントを取得することと、
前記複数のコンポーネントの個々のコンポーネントにデジタル署名して複数のデジタル署名を生成することと、
前記複数のデジタル署名を確率的データ構造に追加することと、
前記確率論的データ構造を利用して前記複数のデジタル署名の個々のデジタル署名を検証することとを含む、前記コンピュータ実装方法。
【０１１９】
４６．前記確率論的データ構造がブルームフィルタであり、
前記ブルームフィルタに前記デジタル署名を追加することが、前記ブルームフィルタ内の前記複数のデジタル署名の存在を示すために、前記ブルームフィルタ内の１つまたは複数のビットをゼロと１との間で変更することを含む、条項４５に記載のコンピュータ実装方法。
【０１２０】
４７．前記確率的データ構造からの個々のコンポーネントを、新しいコンポーネントに置き換えるための要求を受信することと、
前記個々のコンポーネントの現在の反復値を判定することと、
前記現在の反復値を修正して新しい反復値を生成することと、
前記新しいコンポーネントをデジタル署名して新しいデジタル署名を生成することと、
前記新しい反復値及び前記新しいデジタル署名を利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することによって前記要求を満たす、条項４５または４６に記載のコンピュータ実装方法。
【０１２１】
４８．データベースレコードにデジタル署名するための要求に応答して、前記確率的データ構造を提供することをさらに含む、条項４５〜４７のいずれか１項に記載のコンピュータ実装方法。
【０１２２】
４９．前記確率的データ構造から個々のコンポーネントを削除するための要求を受信することと、
前記個々のコンポーネントについて、対応するデジタル署名を判定することと、
前記対応するデジタル署名の現在の反復値を判定することと、
前記現在反復値を新しい反復値になるように修正して前記新しい反復値が前記確率的データ構造からの前記対応するデジタル署名の削除に対応するようにすることと、
前記新しい反復値及び前記対応するデジタル署名を利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することとをさらに含む、条項４５〜４８のいずれか１項に記載のコンピュータ実装方法。
【０１２３】
５０．前記確率的データ構造から前記個々のコンポーネントを削除するための前記要求が、前記確率的データ構造に関連するデータベースから前記コンポーネントを削除した結果として生成される、条項４９に記載のコンピュータ実装方法。
【０１２４】
５１．前記確率論的データ構造を利用して前記複数のデジタル署名の個々のデジタル署名を検証することが、
前記個々のデジタル署名の現在の反復値を判定することと、
前記個々のコンポーネントの前記判定された現在の反復値及び前記デジタル署名を利用して出力値を生成することと、
個々のデジタル署名に対応する個々の出力値が、前記確率的データ構造内に存在する場合、前記確率的データ構造を照会して、前記個々のコンポーネントの前記デジタル署名が真正であると検証されるように、前記出力値の存在を判定することとを含む、条項４５〜５０のいずれか１項に記載のコンピュータ実装方法。
【０１２５】
５２．それぞれが異なる反復値を有する、前記確率的データ構造を複数回照会して、前記現在の反復値を判定し、個々のデジタル署名が前記確率的データ構造に追加された最も高い反復値として前記現在の反復値を判定することをさらに含む、条項５１に記載のコンピュータ実装方法。
【０１２６】
５３．非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を格納し、コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記命令により、前記コンピュータシステムが、少なくとも、
複数のデジタル署名に少なくとも部分的に基づいて生成された確率的データ構造を格納し、前記複数のデジタル署名の個々のデジタル署名を、データセットの複数のコンポーネントのそれぞれのコンポーネントに少なくとも部分的に基づいて生成し、
デジタル署名を受信し、
前記確率的データ構造に対して前記デジタル署名を検証することによって、前記受信されたデジタル署名を検証する、非一時的なコンピュータ可読ストレージ媒体。
【０１２７】
５４．前記命令によりさらに、前記コンピュータシステムが、
デジタル署名が前記確率的データ構造内に存在するかどうかを判定するための要求に応答して、前記デジタル署名の現在の反復値を判定し、
前記現在の反復値及び前記デジタル署名を利用して出力値を生成し、
出力値を利用して、前記デジタル署名が、前記確率的データ構造内に存在するかどうかを判定する、条項５３に記載の非一時的なコンピュータ可読記憶媒体。
【０１２８】
５５．前記命令によりさらに、前記コンピュータシステムが、前記確率的データ構造の複数のクエリを実行して前記現在の反復値を判定し、異なる反復値を使用して各クエリを実行して前記デジタル署名が前記確率的データ構造に追加された最も高い反復値として前記現在の反復値を判定する、条項５４に記載の非一時的なコンピュータ可読記憶媒体。
【０１２９】
５６．前記命令によりさらに、前記コンピュータシステムが、
前記確率的データ構造内のデジタル署名を更新するための要求を受信し、
前記コンポーネントに対応するデジタル署名の現在の反復値を判定し、
前記現在の反復値を修正して新しい反復値を生成し、
前記新しい反復値及び前記更新されたコンポーネントを利用して新しい出力値を生成し、
前記確率的データ構造に前記新しい出力値を追加する、条項５４に記載の非一時的なコンピュータ可読記憶媒体。
【０１３０】
５７．前記命令によりさらに、前記コンピュータシステムが、
前記確率的データ構造からデジタル署名を削除するための要求を受信し、
前記デジタル署名の現在の反復値を判定し、
少なくとも、
前記デジタル署名の前記現在の反復値が、前記デジタル署名が前記確率的データ構造内に存在することに対応する場合、
前記現在の反復値を新しい反復値になるように修正することであって、前記新しい反復値が、前記確率的データ構造に前記デジタル署名が存在しないことに対応することと、
新しい出力値を生成するために、前記デジタル署名及び前記新しい反復値を利用することと、
前記確率的データ構造に前記新しい出力値を追加することと、
前記デジタル署名の前記現在の反復値が、前記デジタル署名が前記確率的データ構造に存在しないことに対応する場合、前記デジタル署名が前記確率的データ構造に存在しないことを示すことによって前記要求を満たす、条項５３〜５６のいずれか１項に記載の非一時的なコンピュータ可読記憶媒体。
【０１３１】
５８．前記確率論的データ構造が、ブルームフィルタ内の前記複数のデジタル署名の存在を示すために使用される１つまたは複数のビットを含む前記ブルームフィルタである、条項５３〜５７のいずれか１項に記載の非一時的コンピュータ可読記憶媒体。
【０１３２】
５９．前記命令によりさらに、前記コンピュータシステムが、前記確率的データ構造にデジタル署名をする、条項５３〜５８のいずれか１項に記載の非一時的なコンピュータ読み取り可能記憶媒体。
【０１３３】
６０．前記確率論的データ構造が、
前記データセットの前記複数のコンポーネントを取得することと、
前記複数のコンポーネントの前記個々のコンポーネントについて、前記個々のコンポーネントのデジタル署名を生成することと、
前記個々のコンポーネントの前記デジタル署名を前記確率的データ構造に追加することによって作成される、条項５３〜５９のいずれか１項に記載の非一時的なコンピュータ読み取り可能記憶媒体。
【０１３４】
様々な実施形態はさらに、多種多様な動作環境で実装することができ、場合によっては、いくつかのアプリケーションのうちのいずれかを操作するために使用することができる１つまたは複数のユーザコンピュータ、コンピューティングデバイスまたは処理デバイスを含み得る。ユーザまたはクライアントデバイスは、標準的なオペレーティングシステムを起動させるデスクトップ型、ラップトップ型、またはタブレットコンピュータ、ならびに、モバイルソフトウェアを起動させ、多数のネットワーク及びメッセージプロトコルをサポートすることが可能な携帯電話、無線、及び携帯型デバイスなど、あらゆる数の汎用パーソナルコンピュータを含み得る。かかるシステムは、様々な商用的に入手可能なオペレーティングシステムならびに開発及びデータベース管理などの目的のための他の周知のアプリケーションを稼働させる、いくつかのワークステーションもまた含み得る。これらのデバイスは、ダミー端末、シンクライアント、ゲーム機及びネットワークを介して通信することができる他のデバイスなどの、他の電子デバイスもまた含み得る。これらのデバイスは、仮想マシン、ハイパーバイザー及び、ネットワークを介して通信可能である他の仮想デバイスなどの仮想デバイスも含み得る。
【０１３５】
本開示の様々な実施形態は、伝送制御プロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ」）、ユーザデータグラムプロトコル（「ＵＤＰ」）、開放型システム間相互接続（「ＯＳＩ」）モデルの各層で動作するプロトコル、ファイル転送プロトコル（「ＦＴＰ」）、ユニバーサルプラグアンドプレイ（「ＵＰｎＰ」）、ネットワークファイルシステム（「ＮＦＳ」）、共通インターネットファイルシステム（「ＣＩＦＳ」）及びＡｐｐｌｅＴａｌｋなどの商用的に入手可能な各種プロトコルのいずれかを用いる通信をサポートするのに、当業者に知られている少なくとも１つのネットワークを利用している。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク及びそれらの任意の組み合わせであってよい。
【０１３６】
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキストトランスファープロトコル（「ＨＴＴＰ」）サーバ、ＦＴＰサーバ、コモンゲートウェイインタフェース（「ＣＧＩ」）サーバ、データサーバ、Ｊａｖａサーバ（登録商標）、Ａｐａｃｈｅサーバ及びビジネスアプリケーションサーバを含む、多様なサーバまたは中間層アプリケーションのうちのいずれかを運用することができる。サーバ（複数可）は、ユーザデバイスからのリクエストに応答して、Ｊａｖａ（登録商標）、Ｃ、Ｃ♯またはＣ＋＋などの任意のプログラミング言語またはＲｕｂｙ、ＰＨＰ、Ｐｅｒｌ、ＰｙｔｈｏｎまたはＴＣＬ及びそれらの組み合わせなどの任意のスクリプト言語で記述された１つまたは複数のスクリプトまたはプログラムとして実装され得る１つまたは複数のウェブアプリケーションを実行することなどによって、プログラムまたはスクリプトも実行可能でもあり得る。サーバ（複数可）は、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）及びＩＢＭ（登録商標）から市販されているものならびにＭｙＳＱＬ、Ｐｏｓｔｇｒｅｓ、ＳＱＬｉｔｅ、ＭｏｎｇｏＤＢなどのオープンソースサーバ、ならびに構造化または非構造化データを格納、読み出し、それにアクセスが可能な任意の他のサーバを、限定することなしに含むデータベースサーバも含み得る。データベースサーバは、テーブルベースのサーバ、ドキュメントベースのサーバ、非構造化サーバ、関係サーバ、非関係サーバ、または、これらの組み合わせ及び／または他のデータベースサーバの組み合わせを含み得る。
【０１３７】
環境は、上述の種々のデータストア及び他のメモリ及びストレージ媒体を含み得る。これらは、様々な位置、例えば、コンピュータのうちの１つまたは複数にローカル（かつ／またはそこに存在する）の、またはネットワーク上のコンピュータのうちのいくつかまたはすべてからリモートのストレージ媒体上に存在し得る。特定の組の実施形態において、情報は、当業者に周知のストレージエリアネットワーク（「ＳＡＮ」）に存在し得る。同様に、コンピュータ、サーバまたは他のネットワークデバイスによる機能を実行するための任意の必要なファイルは、必要に応じて、ローカルにかつ／またはリモートに格納され得る。システムがコンピュータ化デバイスを含む場合、そのようなデバイスはそれぞれ、バスを介して電気的に連結され得るハードウェア要素を含むことができ、該要素は、例えば、少なくとも１つの中央処理装置（「ＣＰＵ」または「プロセッサ」）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーンまたはキーパッド）及び少なくとも１つの出力デバイス（例えば、ディスプレイデバイス、プリンタまたはスピーカ）を含む。そのようなシステムは、１つまたは複数のストレージデバイス、例えば、ディスクドライブ、光学式記憶デバイス及びソリッドステートストレージデバイス、例えば、ランダムアクセスメモリ（「ＲＡＭ」）または読出し専用メモリ（「ＲＯＭ」）、ならびに取り外し可能な媒体デバイス、メモリカード、フラッシュカードなども含み得る。
【０１３８】
そのような装置はまた、上述のように、コンピュータ可読ストレージ媒体リーダ、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイスなど）及び作業メモリを含み得る。コンピュータ可読ストレージ媒体リーダは、コンピュータ可読ストレージ媒体と接続され得るか、またはコンピュータ可読ストレージ媒体を受容するよう構成され得、リモート、ローカル、固定及び／または取り外し可能なストレージデバイス、ならびにコンピュータ可読情報を一時的にかつ／またはより恒久的に含有し、格納し、送信し、かつ読み込むためのストレージ媒体を表す。システム及び様々なデバイスは、通常、いくつかのソフトウェアアプリケーション、モジュール、サービスまたはオペレーティングシステム及びアプリケーションプログラム、例えば、クライアントアプリケーションまたはウェブブラウザを含む少なくとも１つのワーキングメモリデバイス内で見つけられる他の要素も含む。代替実施形態が、上述のものからの多数の変形を有し得ることを理解されたい。例えば、特製のハードウェアもまた使用可能である、かつ／または特定の要素をハードウェア、ソフトウェア（アプレットなどのポータブルソフトウェアを含む）、もしくはその両方に実装することができる。さらに、ネットワーク入力／出力デバイスなどの他のコンピューティングデバイスへの接続が用いられ得る。
【０１３９】
コードまたはコードの一部を含むためのストレージ媒体及びコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、電子的消去可能プログラマブル読出し専用メモリ（「ＥＥＰＲＯＭ」）、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読出し専用メモリ（「ＣＤ−ＲＯＭ」）、デジタルバーサタイルディスク（ＤＶＤ）、もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができ、かつシステムデバイスによってアクセスされ得る任意の他の媒体をはじめとする、限定するものではないが、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の格納及び／または送信のために任意の方法または技術で実装される揮発性及び非揮発性、可換型及び非可換型媒体などのストレージ媒体及び通信媒体を含む当該術分野において周知の、または使用される任意の適切な媒体を含むことができる。本明細書に提供される本開示及び教示に基づいて、当業者であれば、様々な実施形態を実装する他の様式及び／または方法を理解する。
【０１４０】
したがって、明細書及び図面は、限定する意味ではなくて例示的なものと見なされる。しかしながら、種々の修正及び変更が、特許請求の範囲に記載される本発明のより広範な精神と範囲から逸脱することなく、そこになされ得ることは明らかであろう。
【０１４１】
他の変形例は、本開示の精神の範囲内にある。したがって開示された技術は、様々な修正及び代替構成が可能であるが、ある特定の例示の実施形態が図面に示され、上で詳細に記載されている。しかしながら、本発明を特定の形式または開示される形式に限定する意図はなく、しかし、むしろ、添付の特許請求の範囲において定義される本発明の精神及び範囲内に収まるすべての修正、代替構造及び等価物を網羅するところに意図があるということが理解されるべきである。
【０１４２】
開示される実施形態を説明する文脈における（特に以下の特許請求の範囲の文脈における）「ａ」、「ａｎ」及び「ｔｈｅ」という用語ならびに同様の指示語の使用は、本明細書において別段の指示がない限り、または文脈に明らかに矛盾するものでない限り、単数及び複数の双方を網羅すると解釈される。「ｃｏｍｐｒｉｓｉｎｇ（備える）」、「ｈａｖｉｎｇ（有する）」、「ｉｎｃｌｕｄｉｎｇ（含む）」及び「ｃｏｎｔａｉｎｉｎｇ（含有する）」という用語は、特に断りのない限り、オープンエンドの用語（すなわち、「含むが、これらに限定されない」ことを意味する）として解釈されるべきである。修飾されていないかつ物理的な接続を指す用語「ｃｏｎｎｅｃｔｅｄ（接続され）」は、介在するものが存在しても、部分的にまたは全体的に含まれ、付着されもしくは１つに結合することとして解釈されるべきである。本明細書中の値の範囲の列挙は、本明細書において他に示されない限り、単に、範囲内に入るそれぞれ別個の値に個々に言及する速記方法として役立つように意図され、それが個々に本明細書に記載されているかのように、各個別の値は、本明細書に組み込まれる。「セット」（例えば、「アイテムのセット」）または「サブセット」という用語の使用は、別段の記載がない限りまたは文脈によって矛盾しない限り、１つまたは複数のメンバを含む非空コレクションとして解釈されるべきである。さらに、別段の記載がない限りまたは文脈によって矛盾しない限り、対応するセットの「サブセット」という用語は、必ずしも対応するセットの適切なサブセットを意味するものではなく、サブセット及び対応するセットは同等であり得る。
【０１４３】
「Ａ、Ｂ、及びＣの少なくとも１つ」または「Ａ、Ｂ及びＣのうちの少なくとも１つ」の形の表現などの接続表現は、特に明記しない限り、または文脈によって明らかに矛盾しない限り、項目、用語などがＡ、Ｂ、もしくはＣ、またはＡとＢとＣのセットの空でないサブセットのどちらかであってよいことを提示するために一般的に使用される文脈で理解される。例えば、３つのメンバを有するセットの例示的な例では、「Ａ、Ｂ、及びＣの少なくとも１つ」及び「Ａ、Ｂ及びＣのうちの少なくとも１つ」という接続表現は、｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ、Ｂ｝、｛Ａ、Ｃ｝、｛Ｂ、Ｃ｝、｛Ａ、Ｂ、Ｃ｝のセットのいずれをも指す。したがって、そのような接続表現は、一般に、ある特定の実施形態が、Ａの少なくとも１つ、Ｂの少なくとも１つ及びＣの少なくとも１つがそれぞれ存在することを必要とすることを含意することは意図していない。
【０１４４】
本明細書に記載される処理の操作は、本明細書において別途指示されない限り、または文脈によって明らかに矛盾しない限り、任意の適切な順序で行うことができる。本明細書に記載された処理（もしくは変形及び／またはその組み合わせ）は、実行可能な命令で構成された１つまたは複数のコンピュータシステムの制御下で実行され得、ハードウェアまたはその組み合わせにより１つまたは複数のプロセッサ上で集合的に実行するコード（例えば、実行可能な命令、１つまたは複数のコンピュータプログラムまたは１つまたは複数のアプリケーション）として実装され得る。コードは、コンピュータ可読ストレージ媒体に、例えば、１つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形で格納され得る。コンピュータ可読ストレージ媒体は、非一時的であり得る。
【０１４５】
本明細書で示される任意の及びすべての例、または例示表現（例えば、「〜など」）は、単に本発明の実施形態をよりよく示すことを意図しており、別段の請求がない限り、本発明の範囲を限定するものではない。明細書のいかなる表現も、非請求の要素が本発明の実施に不可欠であると示していると解釈されるべきではない。
【０１４６】
本発明を実施するために本発明者らに知られている最良の形態を含む本発明の実施形態を本明細書に記載する。それらの実施形態の変形例は、前述の説明を読めば当業者に明らかになるであろう。本発明者らは、当業者がこのような変形例を適切に使用することを期待しており、本発明者らは、本発明の実施形態が本明細書に具体的に記載されたものとは別の方法で実施されることを意図する。したがって、本発明の範囲は、適用法によって許容されるように、本明細書に添付された特許請求の範囲に記載された主題のすべての改変及び均等物を含む。さらに、本明細書に別段の指示がない限り、または文脈に明らかに矛盾するものでない限り、そのすべての考え得る変形形態での上記要素の任意の組み合わせが本発明に包含される。
【０１４７】
本明細書で引用する刊行物、特許出願及び特許を含むすべての参考文献は、各文献が個々にかつ具体的に参照により組み込まれることが示され、その全体が本明細書に記載された場合と同程度に、本明細書に参照により組み込まれる。
【図１】
0006646847.tif 000002
【図２】
0006646847.tif 000003
【図３】
0006646847.tif 000004
【図４】
0006646847.tif 000005
【図５】
0006646847.tif 000006
【図６】
0006646847.tif 000007
【図７】
0006646847.tif 000008
【図８】
0006646847.tif 000009
【図９】
0006646847.tif 000010
【図１０】
0006646847.tif 000011