特許第6646847号(P6646847)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アマゾン・テクノロジーズ、インコーポレイテッドの特許一覧

<>
  • 特許6646847-確率的データ構造からの要素の削除 図000002
  • 特許6646847-確率的データ構造からの要素の削除 図000003
  • 特許6646847-確率的データ構造からの要素の削除 図000004
  • 特許6646847-確率的データ構造からの要素の削除 図000005
  • 特許6646847-確率的データ構造からの要素の削除 図000006
  • 特許6646847-確率的データ構造からの要素の削除 図000007
  • 特許6646847-確率的データ構造からの要素の削除 図000008
  • 特許6646847-確率的データ構造からの要素の削除 図000009
  • 特許6646847-確率的データ構造からの要素の削除 図000010
  • 特許6646847-確率的データ構造からの要素の削除 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6646847
(24)【登録日】2020年1月16日
(45)【発行日】2020年2月14日
(54)【発明の名称】確率的データ構造からの要素の削除
(51)【国際特許分類】
   G06F 16/901 20190101AFI20200203BHJP
【FI】
   G06F16/901
【請求項の数】23
【全頁数】43
(21)【出願番号】特願2018-509746(P2018-509746)
(86)(22)【出願日】2016年9月9日
(65)【公表番号】特表2018-526737(P2018-526737A)
(43)【公表日】2018年9月13日
(86)【国際出願番号】US2016051129
(87)【国際公開番号】WO2017044867
(87)【国際公開日】20170316
【審査請求日】2018年3月27日
(31)【優先権主張番号】14/849,481
(32)【優先日】2015年9月9日
(33)【優先権主張国】US
(31)【優先権主張番号】14/849,488
(32)【優先日】2015年9月9日
(33)【優先権主張国】US
(31)【優先権主張番号】14/849,493
(32)【優先日】2015年9月9日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】506223509
【氏名又は名称】アマゾン・テクノロジーズ、インコーポレイテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ルビン、グレゴリー アラン
(72)【発明者】
【氏名】ロス、グレゴリー ブランチェク
【審査官】 早川 学
(56)【参考文献】
【文献】 特表2015−508924(JP,A)
【文献】 米国特許出願公開第2014/0143505(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00−16/958
(57)【特許請求の範囲】
【請求項1】
システムであって、
1つまたは複数のプロセッサと、
命令を含むメモリであって、前記1つまたは複数のプロセッサによって実行されると、前記命令により、前記システムが、
エントリをブルームフィルタに追加するための第1の要求を受信し、
前記ブルームフィルタを照会して、前記ブルームフィルタの前記エントリの現在の反復値を判定し、前記現在の反復値が、第1のパリティ値または第2のパリティ値のいずれかであるパリティ属性を有し、前記第1のパリティ値が、前記ブルームフィルタの前記エントリの存在を示し、前記第2のパリティ値が、前記エントリが前記ブルームフィルタから削除されたことを示し、
少なくとも前記第1の要求に、少なくとも、
前記現在の反復値が、前記第1のパリティ値を有する場合、前記エントリが前記ブルームフィルタ内に存在することを示し、
前記現在の反復値が、前記第2のパリティ値を有する場合、
前記現在の反復値を、前記第1のパリティ値を有する第1の現在の反復値になるように増分し、
前記第1の現在の反復値及び前記エントリを利用して第1の出力値を生成し、
前記生成された第1の出力値を前記ブルームフィルタに追加することによって応答し、
前記ブルームフィルタから前記エントリを削除するための第2の要求を受信し、
少なくとも前記第2の要求に、少なくとも、
前記ブルームフィルタを照会して前記ブルームフィルタの前記エントリの前記現在の反復値を判定し、
第2の現在の反復値が、前記第2のパリティ値に対応する場合、前記エントリが前記ブルームフィルタ内に存在しないことを示し、
前記第2の現在の反復値が、前記第1のパリティ値に対応する場合、
前記現在の反復値を、前記第2のパリティ値を有する前記第2の現在の反復値に増分し、
前記第2の現在の反復値及び前記エントリを利用して第2の出力値を生成し、
前記生成された第2の出力値を前記ブルームフィルタに追加することによって応答する、
前記メモリを含む、
前記システム。
【請求項2】
前記1つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、前記ブルームフィルタを照会して、それぞれが異なる反復値を有する、前記ブルームフィルタを少なくとも複数回照会することによって前記現在の反復値を判定し、前記ブルームフィルタに前記エントリが追加された最も高い反復値として前記現在の反復値を判定する、請求項1に記載のシステム。
【請求項3】
前記1つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、前記第1の現在の反復値及び前記エントリをエントリ関数に入力し、前記現在の反復値と前記エントリを結合して、前記ブルームフィルタに追加される前記第1の出力値を生成する、請求項1または2に記載のシステム。
【請求項4】
コンピュータ実装方法であって、
実行可能な命令で構成される1つまたは複数のコンピュータシステムの制御下で、
確率的データ構造を照会して前記確率的データ構造内のエントリの現在の反復状態を判定し、前記現在の反復状態が、前記エントリがセットのメンバであることに対応する第1の状態及びセット内の前記エントリが存在しないことに対応する第2の状態を含む複数の状態からの前記エントリの状態を示すことと、
前記エントリが前記セットのメンバであることに対応する前記現在の反復状態の結果として、新しい反復状態が前記セットからの前記エントリの削除に対応するように、前記現在の反復状態を前記新しい反復状態に修正することと、
前記新しい反復状態及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記出力値を追加することとを含む、コンピュータ実装方法。
【請求項5】
前記確率的データ構造がブルームフィルタであり、
前記ブルームフィルタに前記出力値を追加することが、前記ブルームフィルタ内の前記出力値の存在を示すために、前記ブルームフィルタ内の1つまたは複数のビットをゼロから1に変更することを含む、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記コンピュータ実装方法が、
前記エントリを前記確率的データ構造に追加するための要求を受信することと、
前記確率的データ構造を照会して前記エントリの前記現在の反復状態を判定することと、
前記第2の状態に対応する前記現在の反復状態の結果として、
前記現在の反復状態が、前記第1の状態に対応する新しい現在の反復状態になるように修正することと、
前記新しい現在の反復値及び前記エントリを利用して第2の出力値を生成することと、
前記確率的データ構造に前記生成された第2の出力値を追加することとをさらに含む、請求項4または5に記載のコンピュータ実装方法。
【請求項7】
前記出力値が、少なくとも前記新しい反復状態及び前記エントリをハッシュ関数に入力することによって生成される、請求項4から6のいずれか一項に記載のコンピュータ実装方法。
【請求項8】
前記現在の反復値を判定するために前記確率的データ構造に照会することが、
それぞれが異なる反復状態を有する、前記確率的データ構造を複数回照会することと、
前記現在の反復状態を、前記エントリが前記確率的データ構造に追加された最も高い反復状態として判定することとを含む、請求項4から7のいずれか一項に記載のコンピュータ実装方法。
【請求項9】
前記セットからの前記エントリの削除が、前記確率的データ構造に関連するデータベースからの前記エントリの削除の結果として生成された要求に応答して実行される、請求項4から8のいずれか一項に記載のコンピュータ実装方法。
【請求項10】
コンピュータシステムに、少なくとも、
エントリを確率的データ構造に追加するための要求を受信する手順と、
前記追加の前記要求に応答して確率的データ構造内の前記エントリの現在の反復値を判定する手順であって、前記現在の反復値が、第1の状態及び第2の状態を含む複数の状態からの前記エントリの状態を示し、前記現在の反復値が、前記エントリが前記確率的データ構造に追加、または前記確率的データ構造から削除されるために使用された回数を示す、手順と、
前記判定された現在の反復値に少なくとも部分的に基づいて前記エントリの状態を判定する手順と、
少なくとも、
前記現在の反復値が前記第1の状態に対応する場合、前記エントリが前記確率的データ構造内に存在することを示すことと、
前記現在の反復値が前記第2の状態に対応する場合、
前記現在の反復値を、前記第1の状態に対応する新しい現在の反復値になるように増分することと、
前記新しい現在の反復値及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することとによって前記要求を満たす手順と、
を実行させるためのプログラム。
【請求項11】
前記コンピュータシステムに、少なくとも、
前記エントリを前記確率的データ構造から削除するための要求を受信する手順であって、前記要求が前記確率的データ構造に関連するデータベースから前記エントリの削除の検出に応答して生成される、手順と、
前記削除の前記要求に応答して前記エントリの前記現在の反復値を判定する手順と、
少なくとも、
前記現在の反復値が前記第2の状態に対応する場合、前記エントリが前記確率的データ構造内に存在しないことを示すことと、
前記現在の反復値が前記第1の状態に対応する場合、
前記現在の反復値を、前記第2の状態に対応する新しい現在の反復値になるように増分することと、
前記新しい現在の反復値及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することとによって前記要求を満たす手順と、
をさらに実行させるための、請求項10に記載のプログラム。
【請求項12】
コンピュータシステムに、
エントリを確率的データ構造から削除するための要求を受信する手順であって、前記要求が前記確率的データ構造に関連するデータベースから前記エントリの削除の検出に応答して生成される、手順と、
前記削除の前記要求に応答して前記確率的データ構造内の前記エントリの現在の反復値を判定する手順であって、前記現在の反復値が、第1の状態及び第2の状態を含む複数の状態からの前記エントリの状態を示し、前記現在の反復値が、前記エントリが前記確率的データ構造に追加、または削除されるために使用された回数を示す、手順と、
前記判定された現在の反復値に少なくとも部分的に基づいて前記エントリの状態を判定する手順と、
少なくとも、
前記現在の反復値が前記第2の状態に対応する場合、前記エントリが前記確率的データ構造内に存在しないことを示すことと、
前記現在の反復値が前記第1の状態に対応する場合、
前記現在の反復値を、前記第2の状態に対応する新しい現在の反復値になるように増分することと、
前記新しい現在の反復値及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することとによって前記要求を満たす手順と、
を実行させるためのプログラム。
【請求項13】
前記コンピュータシステムに、それぞれが異なる反復値を有する、前記確率的データ構造を複数回照会して、現在の反復値を判定する手順をさらに実行させるための、請求項10から12の何れか一項に記載のプログラム。
【請求項14】
前記第1の状態が、セット内の前記エントリのメンバシップに対応し、前記第2の状態が、前記セット内の前記エントリが存在しないことに対応する、請求項10から13の何れか1つに記載のプログラム。
【請求項15】
前記コンピュータシステムに、
前記エントリが前記確率的データ構造内に存在することに対応する前記現在の反復値の結果として、新しい反復値が、前記エントリが前記確率的データ構造に存在しないことに対応するように、前記新しい反復値を選択する手順と、
前記新しい反復値及び前記エントリを使用して生成された値を前記確率的データ構造に追加する手順と、
をさらに実行させるための、請求項10から14のいずれか一項に記載のプログラム。
【請求項16】
コンピュータシステムに、少なくとも、
確率的データ構造を照会して前記確率的データ構造内のエントリの現在の反復状態を判定する手順であって、前記現在の反復状態が、前記エントリがセットのメンバであることに対応する第1の状態及びセット内の前記エントリが存在しないことに対応する第2の状態を含む複数の状態からの前記エントリの状態を示す、手順と、
前記エントリが前記セットのメンバであることに対応する前記現在の反復状態の結果として、
前記現在の反復状態の少なくとも部分的に基づいて新しい反復状態を判定する手順と、
前記新しい反復状態及び前記エントリを利用して出力値を生成する手順と、
前記確率的データ構造において、前記セットからの前記エントリの削除を示すために、前記確率的データ構造に前記出力値を追加する手順と、
を実行させるためのプログラム。
【請求項17】
前記エントリを前記確率的データ構造に追加するための要求を受信する手順と、
前記確率的データ構造を照会して前記エントリの前記現在の反復状態を判定する手順と、
前記第2の状態に対応する前記現在の反復状態の結果として、
前記現在の反復状態の少なくとも部分的に基づいて異なる反復状態を判定し、前記第1の状態に対応させる手順と、
前記異なる反復状態及び前記エントリを利用して第2の出力値を生成する手順と、
前記確率的データ構造において、前記セットへの前記エントリの追加を示すために、前記確率的データ構造に前記出力値を追加する手順と、
をさらに実行させるための、請求項16に記載のプログラム。
【請求項18】
前記現在の反復状態は、第1のパリティ状態または第2のパリティ状態のいずれかであるパリティ属性を有し、前記第1のパリティ状態は第1の状態に対応し、前記第2のパリティ状態は第2の状態に対応する、請求項16または17に記載のプログラム。
【請求項19】
前記第1のパリティ状態は、奇数の性質であり、前記第2のパリティ状態は、偶数の性質である、請求項18に記載のプログラム。
【請求項20】
前記出力値が、少なくとも前記新しい反復状態及び前記エントリをハッシュ関数に入力することによって生成される、請求項16から19のいずれか一項に記載のプログラム。
【請求項21】
前記現在の反復値を判定するために前記確率的データ構造に照会することが、
それぞれが、異なる反復状態及びエントリに対応する異なる出力値を有する、前記確率的データ構造を複数回照会することと、
前記現在の反復状態を、前記エントリが前記確率的データ構造に追加された最も高い反復状態として判定することとを含む、請求項16から20のいずれか一項に記載のプログラム。
【請求項22】
前記セットからの前記エントリの削除が、前記確率的データ構造に関連するデータベースからの前記エントリの削除の結果として生成された要求に応答して実行される、請求項16から21のいずれか一項に記載のプログラム。
【請求項23】
前記確率的データ構造がブルームフィルタであり、
前記ブルームフィルタに前記出力値を追加することが、前記ブルームフィルタ内の前記出力値の存在を示すために、前記ブルームフィルタ内の1つまたは複数のビットをゼロから1に変更することを含む、請求項10から22のいずれか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2015年9月9日に出願された「確率的データ構造からの要素の削除」と題する米国特許出願第14/849,481号(代理人整理番号0097749−543US0)、2015年9月9日に出願された、「デジタル署名された確率的データ構造を用いたデータセットコンポーネントの検証」と題する米国特許出願第14/849,488号(代理人整理番号0097749−545US0)及び2015年9月9日に出願された「確率的データ構造を用いたデータセットコンポーネントのための署名検証」と題された米国特許出願第14/849,493号(代理人整理番号0097749−588US0)の全開示をあらゆる目的のために参照によって組み込む。
【背景技術】
【0002】
ブルームフィルタ及び他の確率的データ構造は、要素が要素の集合の一部であるかどうかを迅速かつ簡潔に判定するためにしばしば利用される。例えば、データベースの管理者は、ブルームフィルタにデータベースエントリを追加することができ、それは、データベースエントリがデータベース内に存在する可能性があるか、または絶対にデータベース内に存在しないのかを識別することによって、データベースクエリをサポートするために使用され得る。ブルームフィルタに追加されたエントリは、結果の値がブルームフィルタ内のビットをゼロから1にトリガする方法でハッシュされているため、ブルームフィルタは省メモリという本来の利点を有する。しかし、ブルームフィルタにエントリが追加されると、ブルームフィルタのビットを1からゼロに変更することで、ブルームフィルタ内の他のエントリに影響が及び得て、ブルームフィルタの整合性が犠牲になり得るため、エントリを削除することができない。各ブルームフィルタセグメントに対してnビットカウンタを有するカウンティングフィルタを利用して、ブルームフィルタからエントリを削除することができるが、ブルームフィルタの各セグメントは、そうするとさらに多くのビット値を含み、ブルームフィルタのサイズを増加させ得るので、これも省メモリを犠牲にし得る。
【0003】
本開示に従った多様な実施形態を、図面を参照して説明する。
【図面の簡単な説明】
【0004】
図1】様々な実施形態を実施することができる環境の具体例を示す図である。
図2】少なくとも一実施形態による、ブルームフィルタ内にエントリが存在するかどうかを判定するために反復クエリが実行される環境の具体例を示す図である。
図3】少なくとも一実施形態による、データベース属性及び値のキー値ペアのエントリに対応するブルームフィルタがデジタル署名される環境の具体例を示す図である。
図4】少なくとも一実施形態による、データベース属性及び値のキー値ペアのデジタル署名が、ブルームフィルタに追加される環境の具体例を示す図である。
図5】少なくとも一実施形態による、エントリの現在の反復に少なくとも部分的に基づいてブルームフィルタに新しいエントリを追加するためのプロセスの具体例を示す図である。
図6】少なくとも一実施形態による、エントリの現在の反復に少なくとも部分的に基づいてブルームフィルタからエントリを削除するためのプロセスの具体例を示す図である。
図7】少なくとも一実施形態による、ブルームフィルタ内のエントリの現在の反復を識別するためのバイナリ検索を実行するためのプロセスの具体例を示す図である。
図8】少なくとも一実施形態による、データベースレコードに署名するための要求に応答して、ブルームフィルタにデータベースのキー値ペアを追加し、ブルームフィルタにデジタル署名するためのプロセスの具体例を示す図である。
図9】少なくとも一実施形態による、データベースレコードに署名するための要求に応答して、ブルームフィルタにデータベースのキー値ペアのデジタル署名を追加するためのプロセスの具体例を示す図である。
図10】様々な実施形態を実施することができる環境の具体例を示す図である。
【発明を実施するための形態】
【0005】
以下の説明で、様々な実施形態を説明する。説明するという目的のために、実施形態の完全な理解を提供すべく、特定の構成及び詳細を記載している。しかしまた、実施形態はそれらの特定の詳細なしに実施し得ることが、当業者には明らかであろう。また、周知の特徴は、記述されている実施形態を不明瞭にしないために省略または簡略化し得る。
【0006】
本明細書で説明及び示唆される技術は、ブルームフィルタから追加または削除されたデータ及び反復値を入力として使用する関数の使用による、ブルームフィルタからのデータ(データベースエントリなど)の追加及び削除に関し、反復値は、エントリがブルームフィルタに追加されているか削除されているかを示す。一例では、新しいブルームフィルタが作成されたとき、または作成された後で、新しいエントリがデータベースに追加され得る。データベースシステムは、これらの新しいエントリのデータベースへの追加を検出し、ブルームフィルタを更新して、これらのエントリがデータベース内、またはクエリをサポートし得るエントリの他のグループ内で指定されていることを示し得る。ブルームフィルタに新しいエントリを追加するために、データベースシステムは、エントリ関数への入力として、追加されるエントリ及びゼロの初期反復値を使用し得る。この関数の出力はハッシュされ、このハッシュ結果はブルームフィルタ内のビット数をゼロから1に設定するために使用され得る。これは、エントリがブルームフィルタ内にあることを示す働きをする。したがって、エントリに対してクエリが送信されると、ブルームフィルタ内のエントリの唯一の値が、エントリ及びゼロの最も高い反復値を使用する関数の出力に対応し得るので、データベースシステムは、エントリがブルームフィルタ内にあると判定し得る。
【0007】
その後、データベースからこのエントリを初めて削除するために、データベースシステムはエントリを使用し、反復値をゼロから1に増分して、エントリ関数に新しい入力を提供し得る。また、この関数の出力も、ブルームフィルタ内の関数出力の存在を示すために、ハッシュされ、ブルームフィルタ内のビット数を設定するために使用され得る。しかし、反復値はゼロから1に増分されているため、この関数出力の存在を利用して、エントリがブルームフィルタ内にもはや存在しないことを示し得る。したがって、データベースシステムは、エントリがデータベース内に存在するかどうかを判定するためにクエリが送信されると、最も高い反復値が1であるとブルームフィルタから判定し、エントリがデータベース内にもはや存在しないことを示し得る。データベースシステムは、この関数を引き続き利用して、時間の経過とともにフィルタのエントリの存在または削除を示すために、以前の反復値に対する増分値及びエントリ自体にわたってハッシュを計算し、ブルームフィルタのビットを設定することによって、ブルームフィルタ内のエントリの存在をトグルし得る。例えば、最も高い反復値が偶数である場合、エントリはブルームフィルタ内に存在し得る。あるいは、最も高い反復値が奇数である場合、エントリはブルームフィルタ内にもはや存在し得ない。
【0008】
エントリがデータベース内に存在するかどうかを判定するためにクエリが送信されると、データベースシステムは、指定されたエントリ及び反復値の関数出力の照会をブルームフィルタにし得る。例えば、データベースシステムは、反復値を増分して、様々な関数出力を生成し得て、これらの出力は、ブルームフィルタにこれらの出力の存在を照会するために使用され得る。最も高い反復値が偶数である場合、エントリはブルームフィルタ内に存在する。最も高い反復値が奇数である場合、エントリはブルームフィルタ内から削除されている。
【0009】
いくつかの例では、ブルームフィルタの最も高い反復値が、現在の反復値に対する線形探索が最適になり得ないように高くなり得る。そのような状況下では、データベースシステムは、バイナリ検索または他のより効率的なアルゴリズムを利用して、特定のエントリの最も高い反復値を識別し、ユーザのクエリに応答してこの最後の反復値を報告し得る。この最後の反復値を使用して、エントリがブルームフィルタに存在するか、または存在しない(すなわち、ブルームフィルタは、集合からのエントリがないことを示す)かどうかを判定し得る。さらに、ブルームフィルタ内のこのエントリの状態を変更するには、要求をデータベースシステムに送信して、反復値を1だけ増分し、新しい関数出力を生成し、その関数出力をブルームフィルタに追加してエントリの状態を変更し得る。
【0010】
このようにして、データベースシステムは、データベースが時間の経過とともに更新されると、ブルームフィルタからエントリを追加または削除し得、ブルームフィルタ内のエントリの最も高い反復値を識別することによって、ブルームフィルタ内の特定のエントリの現在の状態を判定し得る。さらに、本明細書中に記載され、示唆される技術は、さらなる技術的な利点を容易にする。例えば、エントリは、これらのエントリの反復値を増分することによって、ブルームフィルタから追加または削除できるため、ブルームフィルタを利用して、データベース属性及び対応する値のキー値ペアのデジタル署名の現在の状態を示し得る。例えば、データベースの値及び属性が変更されると、これらのデータベースの値及び属性に関連付けられたデジタル署名も変更され得る。データベースシステムは、期限切れのデジタル署名及び新しいデジタル署名の反復値を修正し、ブルームフィルタを更新してデータベースの現在の状態を示し、データベースの様々なキー値ペアに対して現在有効な一組の署名を提供することによって、データベースのセキュリティを確保し得る。
【0011】
図1は、様々な実施形態を実施することができる環境100の具体例を示す。環境100では、データストア104のユーザは、ユーザクライアントデバイス102を介して、データストア104内に新しいエントリを格納するための要求を送信し得る。データストア104は、必要に応じて、これらのデータベース及びデータストア104からデータを格納または削除するためのユーザ要求を処理し得る、データベースシステムによって動作及び維持され得る1つまたは複数のデータベースを含み得る。ユーザがデータストア104内のデータベース内にエントリを格納するための要求を送信すると、データベースシステムは、ブルームフィルタ106を評価して、エントリがブルームフィルタ106に追加されたかどうかを判定し得る。例えば、データベースシステムは、エントリ及びゼロの反復値をエントリ関数への入力として利用して、出力値を取得し得る。例えば、エントリ関数は、エントリと反復値とを連結して、連結したエントリを生成し、次いでそれはブルームフィルタ106に追加され得る。したがって、エントリ関数は、確実にまたは許容可能な確率で、エントリが一定に保持されたときに異なる反復値に対して異なる値を生成する関数であり得る。
【0012】
データベースシステムは、ブルームフィルタ106を照会して、この出力値がブルームフィルタ106内に存在するかどうかを判定し得る。例えば、出力値がブルームフィルタ106内に存在するかどうかを判定するために、データベースシステムは、ブルームフィルタ106を介して出力値を渡し得て、ブルームフィルタ106の出力値に対応する一連のビットが1に設定されているかどうかを判定し得る。設定されている場合、出力値はブルームフィルタ106に存在するものと見なされ得る。しかし、出力値に対応するビットのいずれかがゼロに設定されている場合、出力値はブルームフィルタ106内に含まれ得ず、したがって、エントリはデータストア104内に存在し得ない。出力値がブルームフィルタ106内に存在しない場合、データベースシステムは、エントリがデータストア104内で観察されていないため、ブルームフィルタ106にエントリが取り込まれていないと判定し得る。したがって、データベースシステムは、この出力値をブルームフィルタ106に追加し得て、ブルームフィルタ106の1つまたは複数のビットをゼロの値から1の値に変更させ得る。この第0反復値は、これがデータストア104内に格納されているエントリの最初のインスタンスであることを示し得る。さらに、ブルームフィルタ106へのエントリに対応する出力値の追加は、ユーザがデータストア104内のエントリの存在を判定したい場合には、後でユーザからのエントリのクエリをサポートし得る。
【0013】
その後、ユーザは、ユーザクライアントデバイス102を介して、データストア104内の1つまたは複数のデータベースからエントリを削除するための要求をデータベースシステムに送信し得る。データベースシステムは、1つまたは複数のデータベースからエントリを削除し、ブルームフィルタ106を評価して、エントリがブルームフィルタ106内に存在するかどうかを判定し得る。例えば、データベースシステムは、ブルームフィルタ106の1つまたは複数のクエリを実行して、エントリの第0反復値がブルームフィルタ106内に存在するかどうかを判定し得る。例えば、データベースシステムは、第0反復値及びエントリをエントリ関数への入力として利用して、出力値を生成し得る。データベースシステムは、この出力値をブルームフィルタ106に通して、この出力値がブルームフィルタ106内に存在するかどうかを判定し得る。存在する場合、データベースシステムは、現在の反復値が1になるように反復値を1だけ増分し得る。データベースシステムは、この新しい反復値及びエントリをエントリ関数への入力として利用して、新しい出力値を生成し得る。データベースシステムは、ブルームフィルタ106を照会して、この新しい出力値がブルームフィルタ106内に存在するかどうかを判定し得る。存在する場合、データベースシステムは、エントリがブルームフィルタ106から削除されたと判定し得る。存在しない場合、データベースシステムは、ブルームフィルタ106に出力値を追加して、エントリがデータストア104から削除されたことを示し得る。
【0014】
一実施形態では、エントリが時間の経過とともにデータストア104に追加及び削除されると、データベースシステムは、偶数の反復値がデータストア104内にエントリが存在することを示し、奇数の反復値がデータストア104内にエントリが存在しなくなったことを示すように、反復値を増分する。ユーザが、そのユーザクライアントデバイス102を介して、データストア104内の1つまたは複数のデータベース内にエントリを格納するための要求を送信すると、データベースシステムは、ブルームフィルタ106に照会して、ブルームフィルタ106内のエントリの現在の反復を判定し得る。ブルームフィルタの最も高い反復値に少なくとも部分的に基づいて、反復値が偶数であるとデータベースシステムが判定した場合、データベースシステムは、エントリがデータストア104内に現在格納されていると判定し、したがって、ブルームフィルタは既にデータストア104内のエントリの存在を示しているので、反復値を増分する必要はない。しかし、データベースシステムが最も高い反復値が奇数であると判定した場合、データベースシステムは、エントリがデータストア104から削除されたことをブルームフィルタ106が示していると判定し得る。データベースシステムは、最も高い反復値を1だけ増分し、この新しい反復値及びエントリをエントリ関数への入力として利用して、ブルームフィルタ106に追加され得る出力値を取得し得る。したがって、ブルームフィルタ106は、この出力値の入力を示すために更新され得る。
【0015】
同様に、ユーザが、そのユーザクライアントデバイス102を介して、データストア104の1つまたは複数のデータベースからエントリを削除するための要求を送信すると、データベースシステムは、ブルームフィルタ106にエントリ及び反復値を入力として含む関数の出力値の照会をすることによって、エントリの現在の反復値を判定し得る。エントリの最も高い反復値が奇数である場合、データベースシステムは、それ以来、エントリがデータストア104の1つまたは複数のデータベースから削除されていることをブルームフィルタ106が示していると判定し得る。したがって、データベースシステムは、データストア104の1つまたは複数のデータベースからのエントリの削除を示すためにブルームフィルタ106を更新する必要がなくなり得る。しかし、エントリの最も高い反復値が偶数である場合、データベースシステムは、エントリのこの最も高い反復値を1だけ増分して奇数を取得し得る。この新しい奇数及びエントリをエントリ関数への入力として使用して、ブルームフィルタ106に追加し得る新しい出力値を生成し得る。ブルームフィルタ106へのこの更新はここで、将来のエントリクエリをサポートするために、データストア104の1つまたは複数のデータベースからエントリが削除されたことを示すように働き得る。
【0016】
一実施形態では、データベースシステムが、ブルームフィルタ106のクエリを実行して、特定のエントリの現在の反復値を判定するとき、データベースシステムは、現在の反復値を迅速に判定するためにバイナリ検索方法を利用し得る。例えば、データベースシステムは、ブルームフィルタ106を照会して、エントリが以前にブルームフィルタ106に追加されているかどうかを識別し得る。データベースシステムは、入力としてエントリ及び第0反復値を使用するエントリ関数の使用に少なくとも部分的に基づいて出力値のためのクエリを送信し得る。ブルームフィルタ106に第0反復値に対応する出力値が含まれていない場合、データベースシステムは、エントリが以前にデータストア104内で観察されていないと判定し得る。第0反復値の出力値がブルームフィルタ106内に存在するとデータベースシステムが判定した場合、データベースシステムは、より高い反復値を選択し、ブルームフィルタ106を照会して、このより高い反復値の出力値がブルームフィルタ106内に存在するかどうかを判定し得る。データベースシステムは、この選択された値に対応する出力値がブルームフィルタ106内に存在しなくなるまで、より高い反復値を選択し続け得る。
【0017】
この選択された反復値に対応する出力値がブルームフィルタ106内に存在しない場合、データベースシステムは、この反復値が以前選択された反復値を上回る単位増分値であるかどうかを判定し得る。上回る場合、データベースシステムは、以前選択された反復値が、ブルームフィルタ106内のエントリの現在の反復値であると判定し得る。上述のように、この反復値が偶数である場合、ブルームフィルタ106は、エントリがデータストア104内の1つまたは複数のデータベース内に存在することを示し得る。あるいは、反復値が奇数の整数である場合、ブルームフィルタ106は、それ以来、エントリがデータストア104内の1つまたは複数のデータベースから削除されていることを示し得る。データベースシステムは、ブルームフィルタ106内の検出された出力値の以前の反復値と現在の反復値との間の新しい反復値を選択して、この新しい反復値に対応する出力値がブルームフィルタ106内に存在するかどうかを判定し得る。データベースシステムは、照会されたより高い反復値が、ブルームフィルタ106内で検出された最後の反復値よりも高い単位増分であるとデータベースシステムが判定するまで、このプロセスを続行し得る。したがって、データベースシステムは、本バイナリ検索方法を利用して、ブルームフィルタ106内のエントリの最も高い反復値を識別し、この値をユーザクライアントデバイス102のユーザに返すか、この値を利用して、ブルームフィルタ106内の特定のエントリの状態を更新するために、この値を増分する必要があるかどうかを判定し得る。
【0018】
一実施形態では、データベースシステムは、データストア104内のデータベースの特定の属性の現在の状態を示すために、ブルームフィルタ106への追加の入力を含むことができる。例えば、データベースシステムは、データベース属性名及び現在の反復値を含む関数を利用して、特定のデータベース属性の現在のバージョンに対応する出力値を生成し得る。データベースシステムは、この出力値をブルームフィルタ106に追加して、クエリに応答してデータベース属性の現在のバージョンを示し得る。この特定のデータベース属性については、データベースシステムは、データベース属性名、現在の反復値、及び現在の反復のこのデータベース属性内のエントリを含む第2の関数を、エントリ関数への入力として利用して、第2の出力値を生成し得る。この第2の出力値は、時間の経過とともにデータベースエントリクエリを有効にするために、ブルームフィルタ106に追加することもできる。したがって、データベース属性が時間の経過とともに更新されると、属性の反復値(例えば、バージョン)が増加し得て、現在の反復値が検出されると、データベースシステムが特定のデータベース属性内の現在値を照会することが可能になる。
【0019】
上述のように、データベースシステムは、ユーザクライアントデバイスからの要求を受信して、特定のデータベースエントリがデータストア内の1つまたは複数のデータベース内に存在するかどうかを判定し得る。要求に応答して、データベースシステムは、1つまたは複数のデータベース内のエントリの存在またはその欠如に対応する要素を含むブルームフィルタを照会し得る。ブルームフィルタの要素に少なくとも部分的に基づいて、データベースシステムは、要求されたエントリがデータストア内に存在するかしないかを判定し得る。したがって、図2は、少なくとも一実施形態による、ブルームフィルタ208内にエントリが存在するかどうかを判定するために反復クエリ206が実行される環境200の具体例を示す。
【0020】
一実施形態では、コンピュータシステムは、ブルームフィルタ106内のエントリの反復値の変更に少なくとも部分的に基づいて、コンピュータシステムのハードウェア及び/またはソフトウェアコンポーネントで実行される1つまたは複数の実行可能命令を判定することができる。例えば、ブルームフィルタ106内の特定のエントリの反復値に少なくとも部分的に基づいて、コンピュータシステムは異なる動作を実行し得る。例えば、ブルームフィルタ106が4つの可能なエントリ状態を、任意の反復値がこれらの4つの可能なエントリ状態の1つ(例えば、4を法とする反復値)に対応し得るように可能にする場合、コンピュータシステムは、これらの4つの状態のそれぞれに対して異なる一連の動作を実行し得る。具体例として、エントリは、コンピュータシステムの特定のユーザのユーザアカウント識別子に対応し得る。このエントリでは、アカウント作成保留中、アカウント存在、アカウント削除保留中、及びアカウント削除済み(例えば、数値以外の反復値)の4つの可能な状態があり得る。コンピュータシステムが、ユーザアカウント識別子の現在の反復値を判定するためにブルームフィルタ206を照会すると、コンピュータシステムはモジュロ演算を実行して、ユーザアカウントの反復値、したがってユーザアカウントの現在の状態を判定し得る。少なくともこの状態に部分的に基づいて、コンピュータシステムは異なる動作を実行し得る。例えば、ユーザアカウントの状態が「アカウント作成保留中」である場合、コンピュータシステムは、ユーザアカウントの作成を完了するための1つまたは複数の動作を実行し、次いで、反復値を増分して、アカウントが存在することを示し得る。したがって、コンピュータシステムは、この新しい反復値及びユーザアカウントに対応する新しい出力値を生成し、この出力値をブルームフィルタに追加して、アカウントが現在存在することを示し得る。
【0021】
別の具体例として、コンピュータシステムは、周知の悪意のあるウェブサイトのURL(Uniform Resource Locator)に対応するエントリを含むデータベースを維持し得る。各エントリは、関連するウェブサイトが依然として悪意のあるものと分類されている限り、ブルームフィルタ内に含め得る。したがって、各URLの反復値を使用して、URLに関連付けられたウェブサイトが悪意のあるものかどうかを判定し得る。コンピュータシステムが、特定のサイトの評価後、サイトがもはや悪意のあるものではないと判定した場合、コンピュータシステムはブルームフィルタ206を照会して、そのサイトのURLの現在の反復値を判定し得る。この現在の反復値を使用して、コンピュータシステムは、ブルームフィルタ206内でそのサイトが悪意あるものとして分類されているかどうかを判定し得る。分類されている場合、コンピュータシステムは、この反復値を増分し、この新しい反復値及びURLをエントリ関数に通し、悪意のあるウェブサイトのグループからそのURLを削除するために、ブルームフィルタ206に追加し得る新しい出力値を生成し得る。したがって、コンピュータシステムのユーザがURLを使用してこのサイトにアクセスする要求を送信する場合、コンピュータシステムはブルームフィルタ206を照会し、このURLがもはや悪意のあるウェブサイトに該当しないと判定し、ユーザがウェブサイトにアクセスできるようにし得る。
【0022】
ブルームフィルタ206が、例示の目的のために本開示を通して広範囲に使用されているが、他の確率的データ構造が使用され得ることに留意されたい。一実施形態では、確率的データ構造は、正しく維持された場合、(例えば、要素が集合内にあるかどうかを判定するための)データ構造に対するクエリが、(例えば、ハッシュ衝突のために)不正確である可能性がゼロではないように構成されたデータ構造である。例えば、いくつかの実施形態では、確率的データ構造は、データ構造によって提供される計算効率と、偽陽性の結果として不必要に実行されるセキュリティ動作によって引き起こされる不都合とのバランスを取るため、偽陽性の確率が指定された閾値未満になるように構成されている。違反が検出される可能性がある場合にのみ、データベースを参照するなど、偽陽性を軽減するための他の技術が、追加のコンピューティングリソースを使用して、違反が発生した可能性が検出された場合にのみ違反があったことを確認するように使用され得る。
【0023】
環境200では、ユーザは、ユーザクライアントデバイス202を介して、エントリが格納され得る1つまたは複数のデータベースを含むデータストア204内の特定のエントリのクエリを送信し得る。データストア204を操作及び維持し得るデータベースシステムは、エントリがデータストア204内に格納されているかどうかを識別するために、ブルームフィルタ208に対して1つまたは複数のクエリ206を生成し得る。例えば、図2に示すように、データベースシステムは、ブルームフィルタ208のクエリで使用され得る出力値を取得するために、エントリ関数を利用して、出力値が存在するかどうかを判定し得て、存在する場合は、この出力値がデータストア204内のエントリの存在を示すかどうかを判定し得る。エントリ関数は、ハッシュ関数を含み得て、ハッシュ関数は、反復値及びユーザクライアントデバイス202を介してユーザによって要求されたエントリのハッシュを生成するために使用され得る。反復値は、データストア204内のエントリの有無に対応し得る。例えば、偶数である反復値は、データストア204内の特定のエントリの存在に対応し得る。あるいは、奇数である反復値は、データストア204からの特定のエントリの不在または削除に対応し得る。パリティ値(例えば、偶数及び奇数の値に対応する存在または存在しない)が、説明のために本開示を通して広範囲に使用されているが、データストア204内のエントリの状態を示すために、他の値が利用され得ることに留意されたい。例えば、反復値が複数の状態を定義する場合、反復値及び可能な状態の数に少なくとも部分的に基づく特定のモジュロ値が、ブルームフィルタ206内のエントリの存在に対応し得る。例えば、エントリが3つの可能な状態を有する場合、2に等しいモジュロ値になる反復値は、エントリがブルームフィルタ内に存在することを示し得る(例えば、5 mod 3。ここで、5は反復値である。など)。可能な状態は、非整数値に対応し得ることにも留意されたい。例えば、ブルームフィルタ206内のエントリの存在を示すために偶数を利用するのではなく、「存在」の反復値は存在を示し得て、「存在しない」はブルームフィルタ206内にエントリが存在しないことを示し得る。
【0024】
ユーザが、ユーザクライアントデバイス202を介して、データストア204内にエントリを格納するための要求を送信すると、データベースシステムは、ブルームフィルタ208内のエントリの反復クエリ206を実行して、エントリが現在データストア204内に存在するか、またはエントリがデータストア204から削除されているか、またはデータストア204内で以前に観察されていないかを判定し得る。例えば、データベースシステムは、エントリ及び第0反復値をエントリ関数への入力として利用して、出力値を取得し得る。データベースシステムは、ブルームフィルタ208にこの出力値の照会をして、その出力値がブルームフィルタ208内に存在するかどうかを判定し得る。ブルームフィルタ208は、ブルームフィルタ208内に値が存在しないかどうかを明確に示すように構成されているため、データベースシステムは、エントリに対してこの第0反復が存在するかどうかを判定し得る。第0反復の関数出力値が存在しない場合、データベースシステムは、エントリが以前にデータストア204内で観察されていないと判定し得る。
【0025】
エントリの第0反復がブルームフィルタ208内に存在する場合、データベースシステムは、ブルームフィルタ208内の関数出力値に対して線形反復検索を実行し得る。例えば、図2に示すように、データベースシステムは、反復値を1だけ増分することによって(例えば、第0反復が第1反復まで増分されるなど)、データストアクエリ206を変更し得る。したがって、データベースシステムは、増分された反復値及びエントリを使用したエントリ関数を利用して、照会し得る新しい出力値を生成し得る。データベースシステムは、ブルームフィルタ208にこの新しい出力値の照会を行い、この出力値がブルームフィルタ208内に存在するかしないかを判定し得る。新しい出力値が存在する場合、データベースシステムは、ブルームフィルタ208内で出力値が検出されなくなるまで、反復値を再増分し追加のクエリを実行し得る。特定の出力値がブルームフィルタ208内に存在しないとデータベースシステムが判定した場合、データベースシステムは、最後の反復値がブルームフィルタ208内の特定のエントリの現在の反復を表すと判定し得る。
【0026】
一実施形態では、データベースシステムは、反復値を利用して、特定のエントリがデータストア204内に存在するのか、または、それ以来、データストア204から削除されているかを判定する。例えば、第0反復値で始まる、偶数の反復値は、特定のエントリがデータストア204内に格納されていることを示し得る。あるいは、第1反復値から始まる、奇数の反復値は、特定のエントリがそれ以来データストア204から削除されていることを示し得る。例えば、ユーザクライアントデバイス202を介したユーザが、データストア204の1つまたは複数のデータベース内にエントリを格納するための要求を送信すると、データベースシステムはブルームフィルタ208を照会してエントリの現在の反復値を判定し得る。第0反復値がブルームフィルタ208内に存在しない場合、データベースシステムは、データストア204内にエントリを格納し、エントリの第0反復に対応するブルームフィルタ208に出力値を追加し得る。あるいは、現在の反復値が偶数値であるとデータベースシステムが判定した場合、エントリが既にデータストア204内に格納されていると識別されたことを示し得る。これにより、データベースシステムは、エントリが既に利用可能であることを示し、エントリをデータストア204内に格納しないようにし得る。あるいは、反復値が複数の状態を示すために使用される場合、データベースシステムはモジュロ演算を利用してエントリの現在の状態を判定し得る。さらに、エントリの可能な状態が非数値を使用して示される場合、データベースシステムは、エントリの現在の非数値反復値を評価することによってエントリの現在の状態を判定し得る。
【0027】
エントリの現在の反復値が奇数値であり、エントリが以前にデータストア204から削除されていることを示す場合、データベースシステムは、要求を満たすためにエントリをデータストア204内に格納し得る。さらに、データベースシステムは、新しい反復値が偶数値になるように反復値を増分し得る。データベースシステムは、この新しい偶数の反復値及びエントリをエントリ関数の入力として利用し、この関数の出力値をブルームフィルタ208に追加し得る。したがって、ブルームフィルタ208内のエントリの将来のクエリは、偶数の反復値を検出し、エントリが現在データストア204内に格納されていることを判定し得る。同様に、現在の反復値が、エントリが以前にデータストア204から削除されることを示し、反復値が状態のパリティ値よりも大きい複数の状態に対応し得る場合、データベースシステムは、新しい反復値がデータストア204内のエントリの存在を示すように反復値を修正し得る。例えば、データベースシステムは、モジュロ演算を利用して、データストア204内のエントリの存在に対応する新しい反復値を識別し、この新しい反復値及びエントリをエントリ関数への入力として利用して、ブルームフィルタ206に追加し得る出力値を生成し得る。
【0028】
同様に、ユーザは、ユーザクライアントデバイス202を介して、データストア204からエントリを削除するための要求を送信し得る。データベースシステムは、ブルームフィルタ208を照会して、特定のエントリの現在の反復値を判定し、この反復値に少なくとも部分的に基づいて、エントリがデータストア204及びブルームフィルタ208から削除されたことを示すために実行する必要がある動作を決定し得る。例えば、現在の反復値が奇数値である場合、データベースシステムは、エントリがデータストア204から削除されていることをブルームフィルタ208が現在示していると判定し得る。したがって、データベースシステムは、現在の反復値を更新する必要なく、データストア204からエントリを削除し得る。しかし、現在の反復値が偶数値である場合、データベースシステムは、現在の反復値を1だけ増分して、奇数の反復値を生成し得る。データベースシステムはこの新しい奇数の反復値、ならびにエントリをエントリ関数への入力として使用して、データストア204からのエントリの削除を示すために、ブルームフィルタ208に追加し得る新しい出力値を生成し得る。次いで、データベースシステムは、データストア204からエントリを削除することによって、ユーザクライアントデバイス202からの要求を満たし得る。同様に、現在の反復値が、エントリがデータストア204内に格納されていることを示し、反復値が状態のパリティ値よりも大きい複数の状態に対応し得る場合、データベースシステムは、新しい反復値がデータストア204からのエントリの削除を示すように反復値を修正し得る。例えば、データベースシステムは、モジュロ演算を利用して、データストア204からのエントリの削除に対応する新しい反復値を識別し、この新しい反復値及びエントリをエントリ関数への入力として利用して、ブルームフィルタ206に追加し得る出力値を生成し得る。
【0029】
一実施形態では、データベースシステムは、特定のエントリの現在の反復値を線形反復検索するのではなく、バイナリ検索アルゴリズムを使用してブルームフィルタ208を照会する。データベースシステムは、第0反復出力値がブルームフィルタ208内に存在するかどうかを判定することによって、ブルームフィルタ208のクエリを開始し得る。この出力値がブルームフィルタ208内に存在しない場合、データベースシステムは、エントリがデータストア204内で以前に観察されておらず、したがって、エントリの履歴情報がないため、エントリの現在の反復値は存在しないと判定し得る。第0反復の出力値がブルームフィルタ208内に存在する場合、データベースシステムは評価のためにより高い反復値を選択し得る。例えば、データベースシステムは、データベースシステムの管理者によって決定された、データストア204のエントリに対して最も高い可能な反復値を選択し得る。あるいは、データベースシステムは、第0値(例えば、1より大きい新しい反復値)からの単位増分よりも大きい任意の反復値を選択し得る。
【0030】
データベースシステムは、ブルームフィルタ208にこの新しい反復値に対応する出力値の照会をして、出力値がブルームフィルタ208内に存在するかどうかを判定し得る。この新しい反復値の出力値がブルームフィルタ208内に存在する場合、データベースシステムはより高い反復値を選択し、出力値がブルームフィルタ208内に存在しない反復値が識別されるまで、このプロセスを継続し得る。しかし、この新しい反復値の出力値がブルームフィルタ208内に存在しない場合、データベースシステムは、現在の反復値(例えば、使用されたばかりの新しい反復値)と、出力値がブルームフィルタ208内で検出された以前の反復値との間の平均値である反復値を選択し得る。次いで、データベースシステムは、この平均反復値を利用して、この反復値の出力値がブルームフィルタ208内に存在するかどうかを判定し得る。出力値がブルームフィルタ208内に存在しない場合、データベースシステムは、現在の反復値が、この平均値とブルームフィルタ208内で検出された最新の出力値に対応する以前の反復値との間にあると判定し得る。
【0031】
データベースシステムは、新しい反復値が、ブルームフィルタ208内で検出された出力値に対応する最後の反復値より大きい一単位増分になるまで、エントリの反復値を修正し続け得る。この新しい反復値の出力値が、ブルームフィルタ208内で検出された場合、データベースシステムは、この新しい反復値がエントリの現在の反復値であると判定し、反復値がブルームフィルタ208内のエントリの存在に対応するか、ブルームフィルタ208からのエントリの削除に対応するかを判定し得る。同様に、新しい反復値に対応する出力値が、ブルームフィルタ208内で検出されない場合、データベースシステムは、ブルームフィルタ208内で検出された出力値に対応する最後の反復値が、エントリの現在の反復値であると判定し得る。図2に示すように、現在の反復値が偶数値である場合、エントリはブルームフィルタ208内に存在し得る。あるいは、現在の反復値が奇数値である場合、以前の動作の間に、エントリはブルームフィルタ208及びデータストア204から削除されていた状態であり得る。
【0032】
一実施形態では、データベースシステムは、データストアからのデータベース属性名及びこれらのデータベース属性のそれぞれの値のキー値ペアをハッシュし、このハッシュされたキー値ペアをブルームフィルタに追加し得る。次いで、ブルームフィルタは、データベース属性及び値、ならびにブルームフィルタ自体の整合性を保護するためにデジタル署名され得る。したがって、図3は、少なくとも1つの実施形態による、データベース属性及び値のキー値ペアのエントリに対応するブルームフィルタ304がデジタル署名される環境300の具体例を示す。環境300では、非リレーショナルデータベース302は、様々なデータベース属性に対応し、これらの属性のごとに1つまたは複数の値を含む様々なインデックスを含み得る。
【0033】
非リレーショナルデータベース302を維持及び動作させるように構成されたデータベースシステムは、各データベース属性(例えば、インデックス)及び属性に対応する値をエントリ関数への入力として使用して、ブルームフィルタ304に追加され得る出力値を生成するために、エントリ関数を利用し得る。エントリ関数は、データベース属性及び対応する値をハッシュし、次いでブルームフィルタ304に追加される出力値を生成し得るハッシュ関数を含み得る。データベースシステムが、データベースエントリ及び対応する値の出力値を含むようにブルームフィルタ304の更新を完了した場合、データベースシステムは、署名されたブルームフィルタ306がデータベースシステムのユーザに利用可能となるように、ブルームフィルタ304にデジタル署名し得る。これらのユーザは、公開秘密暗号キーペアの公開暗号化キーを利用して、デジタル署名されたブルームフィルタ306を検証し、自身の使用のために署名されたブルームフィルタ306を復号化し得る。例えば、データベースシステムのユーザは、署名されたブルームフィルタ304を利用して、データベース302のデータベース属性のある特定のエントリが存在するか、または時間の経過とともにブルームフィルタ304から削除されたかどうかを判定し得る。
【0034】
一実施形態では、データベースシステムは、データベース属性自体とデータベース属性内のエントリの2つの別々の出力値を生成する。例えば、データベースシステムは、上述のエントリ関数を利用して、ブルームフィルタ304内の特定のデータベース属性の現在の反復を指定し得る。ただし、エントリがデータベース内に存在するかしないかを示すために反復値を使用するのではなく、データベース属性の現行バージョンを指定するために反復値を使用し得る。データベース属性のブルームフィルタ304に追加し得る第2の出力値は、その属性のデータベース302内に格納されている値に対応し得る。この第2の出力値は、属性名、属性の反復値、及び反復値の属性内のエントリをエントリ関数の入力として使用して、生成し得る。これらの2つの出力値は、ブルームフィルタ304に追加され、この現在の反復値の属性及び属性内のエントリの現在の反復を判定するために利用され得る。したがって、属性から値を削除するためのNullセットを含む、新しい値を含むように属性が更新されるとき、データベースシステムは、新しい反復値の属性内の新しい出力値及び属性内のエントリを生成し得る。
【0035】
別の実施形態では、データベースシステムは、データベース属性の出力値、属性内のエントリ、及びエントリの反復値を生成して、ブルームフィルタ304内に特定のキー値ペアが存在するかどうかを示す。例えば、キー値ペアの反復値は、複数の状態のうちの1つを示し得て、これにより、状態は、ブルームフィルタ304内のキー値ペアの存在に対応し得て、別の状態は、ブルームフィルタ304からのキー値ペアの削除に対応し得る。新しい値が特定の属性に割り当てられると、データベースシステムは、以前の属性値の現在の反復値を識別し、現在の反復値がブルームフィルタ304内のキー値ペアの存在を示すかどうかを判定し得る。現在の反復値がブルームフィルタ304内のキー値ペアの存在を示す場合、データベースシステムは、新しい反復値がブルームフィルタ304からのキー値ペアの削除を示すように反復値を修正し得る。データベースシステムは、属性値、属性内のエントリ、及び新しい反復値をエントリ関数への入力として利用して、ブルームフィルタ304に追加される出力値を生成し得る。さらに、データベースシステムは、属性名、属性内の新しいエントリ、及びブルームフィルタ304内のキー値ペアの存在を示す反復値をエントリ関数への入力として使用して、ブルームフィルタ304に追加し得る出力値を生成し得る。したがって、ブルームフィルタ304内の特定のキー値ペアのクエリを送信するとき、データベースシステムは、キー値ペアの現在の反復値に少なくとも部分的に基づいて、ブルームフィルタ304内にキー値ペアが存在するかどうかを判定し得る。
【0036】
データベースシステムのユーザが、データベース属性内の特定の値のクエリを送信すると、データベースシステムは、ブルームフィルタ304の様々なクエリを実行して、ユーザのクエリに応答し得る。例えば、データベースシステムは、最初にブルームフィルタ304を照会して、指定された属性の現在の反復値を判定し得る。データベースシステムは、図1及び図2に関連して上述のエントリ関数と同様のエントリ関数を利用して、ブルームフィルタ304のクエリで利用し得る出力値を生成し得る。データベースシステムが属性の現在の反復値を識別すると、データベースシステムは、この現在の反復値、属性名及びエントリを、ブルームフィルタ304を照会するために使用され得る第2の出力値を生成するために使用され得る第2関数への入力として、利用し得る。データベースシステムは、この第2の出力値を利用して、エントリが属性の現在の反復のデータベース内で指定されているかどうかを判定し得る。指定されている場合、データベースシステムは、属性内の値の存在を示す、クエリに対する応答をユーザに返し得る。出力値がブルームフィルタ304内に存在しない場合、データベースシステムは、エントリが属性の現在の反復に対して存在しないことを示し得て、及び/またはデータベースにアクセスして、属性の現在のエントリを識別し、要求に応じてこのエントリの値をユーザに返し得る。
【0037】
別の実施形態では、データベース属性名及び属性の対応するエントリを含む各キー値ペアは、ブルームフィルタ内に含める前にデータベースシステムによってデジタル署名される。キー値ペアの各デジタル署名は、特定の属性の現在のエントリが、属性の現在のデジタル署名に少なくとも部分的に基づいて判定され得るようにブルームフィルタに追加され得る。例えば、ユーザは、データベース属性及び属性内の対応するエントリのデジタル署名を生成し、このデジタル署名ためにデータベースシステムにクエリを送信し得る。したがって、図4は、少なくとも一実施形態による、データベース属性及び値のキー値ペアのデジタル署名404が、ブルームフィルタ406に追加される環境400の具体例を示す。
【0038】
環境400では、データベースシステムは、暗号化キーを利用して、属性名及びデータベース402内の属性の対応する値の各キー値ペアをデジタル署名し得る。データベースシステムは、ブルームフィルタ406を利用して、図1及び図2で上述の方法と同様の方法で、デジタル署名の現在の反復を識別し得る。例えば、データベースシステムは、デジタル署名に対して、デジタル署名の現在の反復値を判定し得、偶数の反復値は、デジタル署名がブルームフィルタ406内にあることを示し得、奇数の反復値は、デジタル署名がブルームフィルタ406内にないことを示し得る(例えば、属性の値が変更され、新しい署名が生成されている、など)。デジタル署名が特定の属性に対して変更された場合、データベースシステムは、属性の前のデジタル署名の反復値を変更して属性の削除を示し、ブルームフィルタ406を更新して、属性に対して新しく生成されたデジタル署名404を含み得る。
【0039】
ユーザが特定のデジタル署名のクエリを送信すると、データベースシステムはデジタル署名を取得し、デジタル署名及び反復値をエントリ関数への入力として利用して、出力値を生成し得る。データベースシステムは、ブルームフィルタ406のクエリにこの出力値を利用して、ブルームフィルタ406内のこの出力値の存在を検出し得る。いずれかの反復値に対して出力値が検出されない場合、データベースシステムは、デジタル署名が以前に観察されておらず、したがって、任意の属性のデータベース402内の現在または以前のエントリに対応しないと判定する。あるいは、出力値が識別された場合、データベースシステムは、ブルームフィルタ406内で出力値が識別されなくなるまで、反復値を増分し、新しい出力値を生成し得る。データベースシステムは、デジタル署名の最も高い反復値を識別し、この値に少なくとも部分的に基づいて、デジタル署名が現在ブルームフィルタ406内に存在するのか、または、それ以来、ブルームフィルタ406から削除されているのかを判定し得る。例えば、反復値が偶数値である場合、デジタル署名はブルームフィルタ406内に存在し得る。あるいは、反復値が奇数値である場合、データベースシステムは、デジタル署名がブルームフィルタ406内にもはや存在しないと判定し得る。ただし、これは、ある時点で、属性の値がデータベース402内にあったことも示し得て、データベースシステムのユーザのためのユーティリティとして働き得る。
【0040】
上述のように、ユーザは、ユーザクライアントデバイスを介して、データベースシステムに要求を送信して、データベースまたは他のデータ構造にエントリを追加し得る。このエントリをカタログ化するために、データベースシステムは、ブルームフィルタの評価によってエントリのクエリを満たし得るように、エントリをブルームフィルタに追加し得る。いくつかの実施形態では、データベースシステムは、ブルームフィルタを照会して、エントリの現在の反復値を識別し、反復値は、エントリがブルームフィルタ内にあるものとして指定されているか、またはブルームフィルタ内で削除されたものとして指定されているかを判定するために使用し得る。この反復値に少なくとも部分的に基づいて、データベースシステムは、ブルームフィルタ内のエントリの存在を示すために反復値を更新し得るか、またはエントリの存在がブルームフィルタに既に示されている場合には同じ反復値を保持し得る。したがって、図5は、少なくとも一実施形態による、エントリの現在の反復に少なくとも部分的に基づいてブルームフィルタに新しいエントリを追加するためのプロセス500の具体例を示す。プロセス500は、データベース、スプレッドシート、インデックス、データ記憶装置などのデータ構造内の様々な要素の存在を判定するためのブルームフィルタを管理するように構成された、前述のデータベースシステムまたは他のコンピュータシステムによって実行され得る。
【0041】
ユーザがデータベースまたは他のデータ構造に新しいエントリを追加すると、ユーザは、データベースシステムまたは他のコンピュータシステムに要求を送信して、データベースまたは他のデータ構造を直接検査する必要なく、エントリのクエリのサポートを有効にするために、ブルームフィルタにエントリを追加し得る。例えば、ユーザは、そのエントリについてデータベースシステムにクエリを送信し、データベースシステムは、そこでブルームフィルタを使用して、エントリがデータベース内に存在しないか、または偽陽性のエラー率の対象となるデータベース内に存在し得るかどうかを判定し得る。したがって、データベースシステムは、このエントリをブルームフィルタに追加するための要求を受信し得る(502)。
【0042】
データベースシステムまたは他のコンピュータシステムが、ブルームフィルタにエントリを追加するための要求を受信すると、データベースシステムは、エントリが以前にブルームフィルタに追加されているかどうかを判定し得る(504)。エントリが最初にブルームフィルタに追加されると、データベースシステムは、エントリ関数を利用して、ブルームフィルタに追加され得るエントリに対応する出力値を生成し得る。この関数は、反復値及びエントリ自体を入力として利用して、ブルームフィルタに追加される出力値を生成し得る。反復値は、ブルームフィルタ内のエントリの状態を示し得る。例えば、反復値は、ブルームフィルタ内のエントリの存在またはブルームフィルタのエントリの不在/削除のいずれかを示すために、パリティ値(例えば、偶数値または奇数値)を有し得る。あるいは、反復値は、エントリの複数の状態に対応し得る。例えば、反復値は、エントリが保留中であるか、ブルームフィルタから削除されたか、またはブルームフィルタに追加されたかを示し得る。データベースシステムは、最も低い可能な反復値(例えば、第0反復値)に対応する出力値を使用してブルームフィルタを照会し、ブルームフィルタ内でエントリが以前に観察されているかどうかを判定し得る。この出力値がブルームフィルタ内で検出されない場合、データベースシステムは、新しい反復値(例えば、第0反復値)及びエントリを使用して、前述の関数を利用して(512)、ブルームフィルタへのエントリの追加を示すために、ブルームフィルタに追加され得る出力値を生成し得る。
【0043】
データベースシステムが、エントリの第0反復の出力値に対応するブルームフィルタ内の要素を識別する場合、データベースシステムは、ブルームフィルタを照会して、ブルームフィルタ内のエントリの現在の反復を識別し得る(506)。例えば、反復値が状態のパリティを定義する場合、偶数の反復値はブルームフィルタ内のエントリの存在を示し得て、奇数の反復値はブルームフィルタからエントリが削除されたことを示し得る。あるいは、反復値が複数の状態を定義する場合、反復値及び可能な状態の数に少なくとも部分的に基づく特定のモジュロ値が、ブルームフィルタ内のエントリの存在に対応し得る。例えば、エントリが3つの可能な状態を有する場合、2に等しいモジュロ値になる反復値は、エントリがブルームフィルタ内に存在することを示し得る(例えば、5 mod 3であり、ここで5は反復値が2に等しいモジュロ値であって、存在を示す。など)。
【0044】
特定のエントリの現在の反復値を判定するために、データベースシステムは、ブルームフィルタの線形検索クエリ、バイナリ検索クエリ、または他の検索クエリを実行して、ブルームフィルタ内に存在する最も高い反復値に対応する出力値を識別し得る。データベースシステムがブルームフィルタ内のエントリの現在の反復値を識別すると、データベースシステムは、この反復値がブルームフィルタ内のエントリの存在に対応するかどうかを判定し得る(508)。例えば、反復値がブルームフィルタ内のエントリの存在に対応するとデータベースシステムが判定した場合、データベースシステムは、エントリがブルームフィルタ内に既に存在すること、または要求に応答してブルームフィルタに正常に追加されたことを示し得る(510)。しかし、現在の反復値がブルームフィルタ内のエントリの存在に対応しない場合、データベースシステムは、現在の反復値を増分または他の方法で修正して、ブルームフィルタ内のエントリの存在に対応する新しい反復値を取得し得る。例えば、データベースシステムは、エントリの存在に対応するモジュロ演算解に対応する新しい反復値を取得する分だけ現在の反復値を修正し得る。
【0045】
データベースシステムが、エントリの新しい反復値を計算すると、データベースシステムは、エントリ関数を利用して(512)、ブルームフィルタ内のエントリの存在を示すために、ブルームフィルタに追加し得る出力値を生成し得る。例えば、データベースシステムは、関数からの出力値がブルームフィルタ内のエントリの存在に対応するように、新しい反復値及びエントリを関数への入力として利用し得る。データベースシステムは、関数からのこの出力値をブルームフィルタに追加して(514)、エントリが現在ブルームフィルタ内に存在することを示し得る。さらに、データベースシステムは、エントリがブルームフィルタに追加されたことを示し得る(510)。例えば、データベースシステムは、ブルームフィルタへのエントリの追加が完了したことを示す通知をユーザクライアントデバイスに送信し得る。いくつかの例では、このエントリを含むためのブルームフィルタの更新は、ユーザの関与または対話を必要としない内部プロセスの一部であり得るため、データベースシステムはこの通知を生成し得ない。
【0046】
上述のように、データベースシステムまたは他のコンピュータシステムのユーザは、ブルームフィルタからエントリを削除するための要求を送信し得る。データベースシステムは、ブルームフィルタを照会して、削除するエントリの現在の反復値を判定し、この反復値がブルームフィルタ内のエントリの存在に対応するかどうかを判定し得る。この反復値に少なくとも部分的に基づいて、データベースシステムは反復値を修正して、エントリがブルームフィルタから削除されたことを示し得る。したがって、図6は、少なくとも一実施形態による、エントリの現在の反復に少なくとも部分的に基づいてブルームフィルタからエントリを削除するためのプロセス600の具体例を示す。プロセス600は、ブルームフィルタ内のエントリの現在の状態に少なくとも部分的に基づいて、コンピュータシステムにインストールされたハードウェアまたはソフトウェアを使用して、実行可能な命令を実行するように構成された前述のデータベースシステムまたは他のコンピュータシステムによって実行され得る。
【0047】
ユーザがデータベースまたは他のデータ構造からエントリを削除すると、ユーザは、データベースまたは他のデータ構造を直接検査する必要なく、エントリがデータベース内に存在しなくなったことを示すために、ブルームフィルタからエントリを削除するための要求をデータベースシステムに送信し得る。例えば、ユーザは、そのエントリについてデータベースシステムにクエリを送信し、データベースシステムは、そこでブルームフィルタを使用して、エントリがデータベースから削除されたか、または偽陽性のエラー率の対象となるデータベース内に存在し得るかどうか判定し得る。あるいは、ブルームフィルタが様々なエントリの情報のリポジトリとして機能し得るため、ユーザは、データベースに関連付けられていないブルームフィルタから特定のエントリを削除するように要求し得る。したがって、データベースシステムは、ブルームフィルタへのこのエントリを削除するための要求を受信し得る(602)。
【0048】
データベースシステムが、ブルームフィルタからエントリを削除するための要求を受信すると、データベースシステムは、ブルームフィルタ内に特定のエントリが存在するかどうかを判定し得る(604)。例えば、エントリが最初にブルームフィルタに追加されると、データベースシステムは、関数を利用して、ブルームフィルタに追加され得るエントリに対応する出力値を生成し得る。この関数は、反復値及びエントリ自体を入力として利用して、ブルームフィルタに追加される出力値を生成し得る。反復値は、ブルームフィルタ内のエントリの状態を示し得る。例えば、反復値は、ブルームフィルタ内のエントリの存在またはブルームフィルタのエントリの不在/削除のいずれかを示すために、パリティ値を有し得る。あるいは、反復値は、エントリの複数の属性に対応し得る。データベースシステムは、最も低い可能な反復値(例えば、第0反復値)に対応する出力値を使用してブルームフィルタを照会し、ブルームフィルタ内でエントリが以前に観察されているかどうかを判定し得る。この出力値がブルームフィルタ内で検出されない場合、データベースシステムは、この特定のエントリが以前に観察され得ないため、エントリがブルームフィルタ内にないことを示し得る(610)。
【0049】
データベースシステムが、ブルームフィルタに、エントリの第0反復に対応する出力値(例えば、ブルームフィルタへのエントリの最初の追加)が含まれていると判定した場合、データベースシステムは、ブルームフィルタ内のエントリの現在の反復値を識別し得る(606)。例えば、データベースシステムは、反復値を修正し、この新しい値及びエントリをエントリ関数への入力として使用することによって、ブルームフィルタの検索クエリを実行して、ブルームフィルタを照会するために使用し得る新しい出力値を生成し得る。例えば、反復値が状態のパリティを定義する場合、偶数の反復値はブルームフィルタ内のエントリの存在を示し得て、奇数の反復値はブルームフィルタからエントリが削除されたことを示し得る。あるいは、反復値が複数の状態を定義する場合、反復値及び可能な状態の数に少なくとも部分的に基づく特定のモジュロ値が、ブルームフィルタ内のエントリの存在に対応し得る。エントリの現在の反復値に少なくとも部分的に基づいて、データベースシステムは、エントリがブルームフィルタ内に存在するかどうかを判定し得る(608)。
【0050】
エントリの現在の反復値が、ブルームフィルタ内にエントリがもはや存在しないことを示す場合、データベースシステムは、エントリがブルームフィルタ内に存在しないことをユーザに示し得る(610)。あるいは、エントリの反復値が、ブルームフィルタ内にエントリが存在することを示す場合、データベースシステムは、反復値を修正して、ブルームフィルタからのエントリの削除に対応し得る新しい反復値を取得し得る。続いて、データベースシステムは、新しい反復値及びエントリを入力として使用して、上述のエントリ関数を利用して(612)、ブルームフィルタに追加され得る新しい出力値を生成し得る。この出力値を利用して、エントリがブルームフィルタ内にもはや存在しないことを示し得る。データベースシステムは、この新しい出力値をブルームフィルタに追加して(614)、ブルームフィルタ内にエントリがもはや存在しないことを示し(610)、したがって、要求を満たし得る。
【0051】
上述のように、データベースシステムまたは他のコンピュータシステムは、バイナリ検索アルゴリズムを利用して、ブルームフィルタ内の特定のエントリの現在の反復値を判定し得る。例えば、ブルームフィルタ内のエントリが時間の経過とともに広範囲に修正される場合、ブルームフィルタは、多数の反復値に関連付けられたエントリ要素を含み得る。そのような状況下では、バイナリ検索アルゴリズムを利用して、必要なクエリの数を減らす方法で特定のエントリの現在の反復値を識別し得る。したがって、図7は、少なくとも一実施形態による、ブルームフィルタ内のエントリの現在の反復値を識別するためのバイナリ検索を実行するためのプロセス700の具体例を示す。プロセス700は、ユーザクエリに応答して、またはブルームフィルタ内のエントリの状態に少なくとも部分的に基づいて実行される動作の判定の際に、ブルームフィルタ内の特定のエントリの現在の状態を識別するためにブルームフィルタを利用し得る、前述のデータベースシステムまたは他のコンピュータシステムによって実行され得る。
【0052】
任意の時点で、データベースシステムまたは他のコンピュータシステムは、ブルームフィルタ内の特定のエントリの現在の反復値を識別する要求を受信し得る(702)。例えば、データベースシステムのユーザは、特定のエントリがブルームフィルタ内に含まれているかどうかを判定するために、データベースシステムに要求を送信し得る。これには、データベースシステムが、ユーザに代わってこの判定を行うために、エントリの現在の反復値を識別する必要があり得る。いくつかの例では、データベースシステムまたは他のコンピュータシステムには、この現在の状態に少なくとも部分的に基づいて1つまたは複数の動作を実行するために、特定のエントリの現在の状態を識別する必要があり得るため、ユーザまたは他のエンティティからの要求の受信を必要とせずに、データベースシステムまたは他のコンピュータシステムは、プロセス700を実行し得る。
【0053】
エントリの現在の反復値を識別するために、データベースシステムまたは他のコンピュータシステムは、ブルームフィルタに、エントリの最も低い反復値(例えば、第0反復値)に対応する出力値の照会をし得る(704)。例えば、データベースシステムまたは他のコンピュータシステムは、第0反復値及びエントリをエントリ関数に入力して、この第0反復値に対応する出力値を生成し得る。データベースシステムまたは他のコンピュータシステムは、ブルームフィルタを照会して、この出力値がブルームフィルタ内に存在するかどうかを判定し得る(706)。この出力値がブルームフィルタ内に存在しない場合、データベースシステムまたは他のコンピュータシステムは、エントリが以前にデータベースシステムまたはブルームフィルタによって観察され得ないため、エントリがブルームフィルタ内で利用可能でないことを指定し得る(708)。
【0054】
第0反復値の出力値がブルームフィルタ内に存在する場合、データベースシステムは、エントリのより高い反復値を選択し得る(710)。データベースシステムまたは他のコンピュータシステムは、ブルームフィルタ内の任意のエントリの最も高い観察された反復値に等しい値を選択し得る。あるいは、データベースシステムまたは他のコンピュータシステムは、指数関数を利用して、高い反復値を選択し得る。例えば、データベースシステムまたは他のコンピュータシステムは、2つの反復値を使用して検索を開始し得る。後続の検索は、反復値を2の次の指数値(例えば、2,4,8,16など)に増加させ得る。任意の基準値を利用して、ブルームフィルタの評価のためにより高い反復値を選択するために、反復値を増分し得ることに留意されたい。
【0055】
データベースシステムは、このより高い反復値及びエントリをエントリ関数への入力として利用して、新しい出力値を生成し得る。上記の第0反復値と同様に、データベースシステムは、ブルームフィルタを照会して、そのより高い反復値に対応するこの新しく生成された出力値が、ブルームフィルタ内に存在するかどうかを判定し得る(712)。この出力値がブルームフィルタ内に存在する場合、データベースシステムは、エントリのより高い反復値を再び選択し(710)、ブルームフィルタを再び照会して、このより高い反復値の出力値がブルームフィルタ内に存在するかどうかを判定し得る。データベースシステムまたは他のコンピュータシステムは、特定の反復値の出力値がブルームフィルタ内に存在しないと判定されるまで、これらの動作を実行し続け得る。
【0056】
エントリのそのより高い反復値に対応する出力値がブルームフィルタ内に存在しない場合、データベースシステムは、このより高い反復値と、ブルームフィルタ内で検出された最後の出力値に対応する以前の反復値との間の差が、単位増分であるかどうかを判定し得る(714)。これらの反復値の差が増分値である場合、データベースシステムは、エントリの以前の反復値が、現在の反復値であると判定し得る。したがって、データベースシステムは、この最後の反復値を、要求に応答してユーザに報告し得る(716)。あるいは、データベースシステムは、この最後の反復値を利用して、ブルームフィルタ内のエントリの現在の状態を判定し得る。例えば、偶数の反復値がブルームフィルタ内のエントリの存在を示し、奇数の反復値がブルームフィルタからのエントリの削除を示す場合、データベースシステムは、現在の反復値を利用して、エントリがブルームフィルタ内に存在するか存在しないかを判定し得る。偶数の反復値はエントリの存在を示すために使用され、奇数の反復値はブルームフィルタからのエントリの削除を示すために使用されるが、偶数の反復値がブルームフィルタからのエントリの削除を示し、奇数の値がブルームフィルタのエントリの存在を示し得る仕様を含む、任意の指定を偶数及び奇数の反復値に適用し得る。
【0057】
そのより高い反復値が、ブルームフィルタ内にエントリが存在した最後の反復値との単位差でない場合、データベースシステムは、最後の反復値とこのより高い反復値との間の新しい反復値を選択し得る(718)。データベースシステムは、この選択された反復値及びエントリを利用して、ブルームフィルタにその存在の照会をするために使用される新しい出力値を生成し得る。この新しい出力値が存在しない場合、データベースシステムは、この新しい反復値が、ブルームフィルタ内で出力値が検出された最後の反復値とは異なる単位増分であるかどうかを再び判定し得る(714)。最後の反復値と異なる単位増分でない場合は、データベースシステムは、反復値が、ブルームフィルタ内で出力値が検出された最後の反復値との単位差のみになるまで、新しい反復値を選択し続け得る(718)。次いで、データベースシステムは、この最後の反復値をユーザに報告する(716)か、またはその値を利用してブルームフィルタ内のエントリの現在の状態を判定し得る。
【0058】
上述のように、データベースシステムは、データベース属性名及びこれらの属性の対応する値のキー値ペアに対応し得るブルームフィルタに要素を追加し得る。例えば、データベースシステムは、これらのキー値ペアをハッシュし、これらのハッシュをブルームフィルタに挿入し得る。ブルームフィルタにこれらのハッシュが入力されると、データベースシステムはブルームフィルタにデジタル署名して、データベース全体に対してデジタル署名のより厳密なバインディングを提供し得る。したがって、図8は、少なくとも一実施形態による、データベースレコードに署名するための要求に応答して、ブルームフィルタにデータベースのキー値ペアを追加し、ブルームフィルタにデジタル署名するためのプロセス800の具体例を示す。プロセス800は、前述のデータベースシステムによって実行し得て、データベースシステムは、エントリ関数を利用して、データベース属性のキー値ペアの出力値を生成し、これらの出力値をブルームフィルタに追加するように構成し得る。データベースシステムはまた、暗号キーペアの秘密暗号キーを利用して、ブルームフィルタにデジタル署名するように構成し得る。
【0059】
任意の時点て、データベースシステムは、データベースレコードにデジタル署名するための要求を受信し得る(802)。例えば、データベースシステムのユーザは、データベースレコードのデジタル署名を使用して、後でレコードの内容を検証するために使用し得る、データベースレコードにセキュリティの追加層を提供したいことがあり得る。例えば、ユーザが暗号キーペアの公開暗号キーを使用してデジタル署名を検証する場合、ユーザは、データベースレコードが本物であるかどうかを判定し得る。したがって、デジタル署名は、レコードのユーザ向けのデータベースレコードの認証のための方法として働き得る。
【0060】
要求に応答して、データベースシステムは、データベースレコードからデータベース属性及び属性の対応する値の第1のキー値ペアを選択し得る(804)。この第1のキー値ペアは、データベースレコードからランダムに選択されるか、レコード内のオフセットに少なくとも部分的に基づいて選択され得る。例えば、データベースシステムは、データベースレコード内の最も低いオフセットを有する属性を選択し得る。データベースシステムが、データベースレコードから最初のキー値ペアを選択すると、データベースシステムは、エントリ関数を利用して、エントリ関数への入力として選択されたキー値ペアをハッシュするか、または他の方法で使用して、ブルームフィルタに追加し得る出力値を生成し得る。一実施形態では、データベースシステムは、属性のキー値ペアに対応する2つの別々の出力値を生成する。例えば、第1の出力値は、属性名及び属性の反復値に少なくとも部分的に基づいて生成され得る。この反復値を使用して、属性の現在の反復を示し得る。ユーザまたはデータベースシステムが、属性の特定のエントリの照会をブルームフィルタに行えるようにするために、データベースシステムは、属性名、反復値、及びこの所与の反復での属性のエントリに少なくとも部分的に基づいている第2の出力値を生成し得る。したがって、データベースシステムは、後でブルームフィルタを照会し、属性の現在の反復値を最初に識別し、反復値を使用して、この反復値での属性の特定のエントリが指定されているかどうかを判定するクエリを実行し得る。
【0061】
データベースシステムが出力値を生成するためにキー値ペアをハッシュすると、データベースシステムは、このハッシュ値(例えば、エントリ関数からの出力値)をブルームフィルタに追加して(808)、現在の反復値のブルームフィルタ内のキー値ペアの存在を示し得る。これにより、ブルームフィルタに追加された出力値が、キー値ペアのより高い反復値に対応し得るため、ブルームフィルタ内の以前のすべてのキー値ペアのエントリが置き換えられ得る。続いて、データベースシステムは、ブルームフィルタに追加する必要があるデータベースレコードの追加のキー値ペアがあるかどうかを判定し得る(810)。ある場合、データベースシステムは、データベースレコードから次のキー値ペアを選択し(804)、エントリ関数への入力としてキー値ペアを使用することによって、この選択されたキー値ペアをハッシュして(806)、ブルームフィルタに追加されるハッシュ/出力値を生成し得る。次いで、データベースシステムは、選択されたキー値ペアのこのハッシュをブルームフィルタに追加し得る(808)。これは、データベースレコードのキー値ペアのすべてのハッシュ/出力値がブルームフィルタに追加されるまで続き得る。これが生じると、データベースシステムは、暗号キーペアの秘密暗号キーを利用して、データベースレコードのキー値ペアを指定するブルームフィルタにデジタル署名し得る(812)。データベースシステムは、このデジタル署名されたブルームフィルタをデータベースシステムのユーザに提供して、データベースレコードの信頼性を検証し、ブルームフィルタのクエリを実行して、現在の反復値の様々なデータベース属性の現在値を判定し得る。
【0062】
データベースのキー値ペアが、例示の目的のために本開示を通して広範囲に使用されているが、他のデータセットが利用され得ることに留意されたい。例えば、コンピュータシステムは、エンティティが、ブルームフィルタに対してコンポーネントを検証し、ブルームフィルタのデジタル署名を検証することによって、データセットの個々のコンポーネントを検証し得るように、データセットの複数のコンポーネントをブルームフィルタまたは他の確率的データ構造に符号化し得る。一実施形態では、データセットは、ブルームフィルタまたは他の確率的データ構造に追加された個々のコンポーネントが、(例えば、そのハッシュをブルームフィルタに追加することによって)データオブジェクトのビットのサブシーケンスとすることができるように、データオブジェクトの複数のビット(例えば、シーケンス)を含むことができる。このようにして、すべてのデータにアクセスする必要なく、ブルームフィルタを使用してすべてのデータを確認するより少ないデータで整合性を確認し得る。
【0063】
上述のように、上述のプロセス800の代替として、データベースシステムが代わって、各キー値ペアにデジタル署名し、これらのデジタル署名をエントリ関数への入力として利用して、ハッシュ/出力値を生成し得る。データベースシステムは、ユーザがブルームフィルタを照会して、特定のデジタル署名がブルームフィルタ内に存在するかどうかを判定し得るように、これらのハッシュ/出力値をブルームフィルタに追加し得る。その場合、次いで特定のキー値ペアを認証し得る。さらに、属性の値が変更されると、データベースシステムは、新しいデジタル署名を生成して、キー値ペアの最新の反復の認証のためにブルームフィルタに追加し得る。したがって、図9は、少なくとも一実施形態による、データベースレコードに署名するための要求に応答して、ブルームフィルタにデータベースのキー値ペアのデジタル署名を追加するためのプロセス900の具体例を示す。プロセス900は、データベースレコードの各キー値ペアをデジタル署名し、これらのデジタル署名をブルームフィルタ内に含めるためにハッシュするように構成し得る、前述のデータベースシステムによって実行し得る。
【0064】
上述のプロセス800と同様に、データベースシステムは、データベースレコードにデジタル署名するための要求を受信し得る(902)。これにより、データベースシステムは、データベース属性及びその属性の対応する値の第1のキー値ペアを選択し得る(904)。この第1のキー値ペアは、データベースレコードからランダムに選択されるか、レコード内のオフセットに少なくとも部分的に基づいて選択され得る。例えば、データベースシステムは、データベースレコード内の最も低いオフセットを有する属性を選択し得る。データベースシステムが、この最初のキー値ペアをデータベースレコードから選択すると、データベースシステムは、暗号キーペアの秘密暗号キーを利用して、選択されたキー値ペアをデジタル署名し(906)、ブルームフィルタのエントリとして追加し得るデジタル署名を生成し得る。例えば、データベースシステムは、エントリ関数を利用して、デジタル署名されたキー値ペア及びキー値ペアのデジタル署名の反復値に少なくとも部分的に基づいている出力値(例えば、ハッシュ)を生成し得る(908)。
【0065】
一実施形態では、データベースシステムは、キー値ペアのデジタル署名に対応し得る2つの別々の出力値を生成する。例えば、第1の出力値は、属性名及び属性の反復値に少なくとも部分的に基づいて生成され得る。この反復値を使用して、属性の現在の反復を示し得る。ユーザまたはデータベースシステムが、属性の特定のデジタル署名の照会をブルームフィルタに行えるようにするために、データベースシステムは、属性名、反復値、及びこの所与の反復での属性のデジタル署名に少なくとも部分的に基づいている第2の出力値を生成し得る。したがって、データベースシステムは、後でブルームフィルタを照会し、属性の現在の反復値を最初に識別し、反復値を使用して、この反復値での属性の特定のデジタル署名が指定されているかどうかを判定するクエリを実行し得る。
【0066】
データベースシステムが、エントリ関数を使用してブルームフィルタに追加されるデジタル署名の出力値を生成すると、データベースシステムは、ブルームフィルタにデジタル署名を追加する必要がある追加のキー値ペアがあるかどうかを判定し得る(910)。その場合、データベースシステムは、データベースレコードの次のキー値ペアを選択し(904)、このキー値ペアをデジタル署名し得る(906)。次いで、このデジタル署名を使用して、ブルームフィルタに追加し得る出力値を生成し得る。データベースシステムがキー値ペアのデジタル署名のための様々なハッシュ/出力値を生成すると、データベースシステムは、これらのハッシュ/出力値をブルームフィルタに追加して(912)、データベースレコードの認証のためのデジタル署名の照会を行えるようにし得る。一実施形態では、データベースシステムは、ブルームフィルタ自体にデジタル署名して、データベースレコードの追加認証層を提供することもできる。
【0067】
上述のプロセス800と同様に、データベースのキー値ペアが、例示の目的のために本開示を通して広範囲に使用されているが、他のデータセットが利用され得ることに留意されたい。例えば、コンピュータシステムは、エンティティが、ブルームフィルタに対してコンポーネントのデジタル署名を検証することによって、データセットの個々のコンポーネントを検証し得るように、データセットの複数のコンポーネントのデジタル署名をブルームフィルタまたは他の確率的データ構造に符号化し得る。一実施形態では、データセットは、ブルームフィルタまたは他の確率的データ構造に追加された個々のコンポーネントの署名が、データオブジェクトのビットのサブシーケンスに対応することができるように、データオブジェクトの複数のビットを含むことができる。
【0068】
図10は、多様な実施形態による態様を実装するための例示的な環境1000の態様を示す。理解されるように、ウェブベースの環境が説明目的に使用されるが、必要に応じて、異なる環境を使用して様々な実施形態を実装し得る。環境は、電子クライアントデバイス1002を含み、これは、適切なネットワーク1004上でリクエスト、メッセージまたは情報を送信かつ/または受信し、かつ一部の実施形態で、情報をデバイスのユーザに戻して伝達するように動作可能な任意の適切なデバイスを含むことができる。そのようなクライアントデバイスの例には、パーソナルコンピュータ、携帯電話、携帯型メッセージングデバイス、ラップトップ型コンピュータ、タブレットコンピュータ、セットトップボックス、個人データ端末、埋込み型コンピュータシステム、電子ブックリーダなどが挙げられる。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワークまたは任意の他のそのようなネットワーク及び/もしくはそれらの組み合わせを含む任意の適切なネットワークを含み得る。そのようなシステムに用いられるコンポーネントは、ネットワークの種類及び/または選択された環境に少なくとも部分的に依存し得る。そのようなネットワークを介した通信用のプロトコル及びコンポーネントは周知であり、本明細書で詳細に論じることはない。ネットワークを介する通信は、有線または無線接続及びそれらの組み合わせによって可能にされ得る。この例では、当業者には明らかであるように、ネットワークには、要求を受信し、それに応答してコンテンツを提供するためのウェブサーバ1006を含む環境のような、インターネットが含まれるが、他のネットワークについては、同様の働きをする代替デバイスが使用できる。
【0069】
具体例の環境は、少なくとも1つのアプリケーションサーバ1008及びデータストア1010を含む。適切なデータストアからデータを取得するなどのタスクを実行するように、連結またはそうでなければ構成され得、そのようにやりとりすることができる複数のアプリケーションサーバ、層または他の要素、プロセスもしくはコンポーネントが存在し得ることを理解されたい。本明細書中で用いられるサーバは、ハードウェア装置または仮想コンピュータシステムなど様々な方法で実装され得る。一部の文脈で、サーバとは、コンピュータシステム上で実行されているプログラミングモジュールを指し得る。本明細書で使用される「データストア」という用語は、別様に記載されていない限りまたは文脈から明らかでない限り、データを格納し、データにアクセスし、データを読み出すことができる任意のデバイスまたはデバイスの組み合わせを指し、任意の標準、分散型、仮想またはクラスタ化環境における、任意の組み合わせ及び任意の数のデータサーバ、データベース、データストレージデバイス及びデータストレージ媒体を含み得る。アプリケーションサーバは、必要に応じてデータストアと統合して、クライアントデバイスの1つまたは複数のアプリケーションの態様を実行し、アプリケーションのデータアクセス及びビジネスロジックの一部または全部を処理するための、任意の好適なハードウェア、ソフトウェア及びファームウェアを含み得る。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し得、以下に限定するものではないが、ユーザに提供されるのに使用可能なテキスト、画像、音声、動画及び/または他のコンテンツを含むコンテンツも生成することができ、これは、ハイパーテキストマークアップ言語(「HTML」)、拡張マークアップ言語(「XML」)、Javaスクリプト(登録商標)、カスケーディングスタイルシート(「CSS」)または別の適切なクライアント側構造化言語の形態で、ウェブサーバによってユーザに提供され得る。クライアントデバイスに転送されるコンテンツは、クライアントデバイスによって処理されて、以下に限定するものではないが、聴覚的に、視覚的にかつ/または触覚、味覚及び/または嗅覚を含む他の感覚を通してユーザに感知可能な形式を含む1つまたは複数の形式で、コンテンツを提供し得る。すべての要求及び応答の処理、ならびにクライアントデバイス1002とアプリケーションサーバ1008との間のコンテンツの配信は、この例では、PHP:ハイパーテキストプリプロセッサ(「PHP」)、Python、Ruby、Perl、Java(登録商標)、HTML、XMLまたは別の適切なサーバ側構造化言語を使用してウェブサーバによって処理され得る。本明細書で論じられる構造化コードは、本明細書の他の箇所で論じられる任意の適切なデバイスまたはホストマシン上で実行され得るので、ウェブサーバ及びアプリケーションサーバは必須ではなく、単に例示のコンポーネントにすぎないことを理解されたい。さらに、本明細書中で記載される、単一のデバイスで行われている操作は、文脈から別様であることが明らかでない限り、分散型かつ/または仮想システムを形成し得る複数のデバイスによって集合的に行われ得る。
【0070】
データストア1010は、本開示の特定の態様に関するデータを格納するための、いくつかの別個のデータテーブル、データベース、データドキュメント、ダイナミックデータストレージスキーム及び/または他のデータストレージ機構及び媒体を含み得る。例えば、説明されるデータストアは、生産データ1012及びユーザ情報1016を格納する機構を含み得、それは生産側にコンテンツを提供するために使用され得る。データストアは、ログデータ1014を格納するための機構を含むこともまた示され、これは、報告、分析または他のかかる目的のために使用され得る。ページの画像情報及びアクセス権情報など、データストアに格納する必要があり得る多数の他の態様が存在し得、これは、必要に応じて上に列挙された機構のいずれかまたはデータストア1010内の追加の機構に格納することができることを理解されたい。データストア1010は、それに関連するロジックを介して、アプリケーションサーバ1008から命令を受信し、それに応答してデータを取得、更新、またはその他の処理をするように動作可能である。アプリケーションサーバ1008は、受信した命令に応答して、静的なデータ、動的なデータまたは静的なデータと動的なデータの組み合わせのデータを提供し得る。ウェブログ(ブログ)、買い物アプリケーション、ニュースサービス及び他のそのようなアプリケーションで用いられるデータなどの動的なデータは、本明細書中で記載されるようなサーバ側の構造化言語によって生成され得、または、アプリケーションサーバ上でまたはその制御下で動作しているコンテンツ管理システム(「CMS」)によって提供され得る。一例では、ユーザは、ユーザが操作するデバイスを通じて、特定の種類の品目の検索リクエストを送信し得る。この事例において、データストアは、ユーザ情報にアクセスして、ユーザの識別情報を検証することができ、カタログの詳細情報にアクセスして、その種類の品目についての情報を取得することができる。次いで、この情報は、ユーザがユーザデバイス1002上でブラウザを介して見ることのできるウェブページ上にリスト化された結果などでユーザに戻され得る。関心のある特定の品目の情報を、ブラウザの専用ページまたはウィンドウで見ることができる。しかし、本開示の実施形態は必ずしもウェブページの文脈に限定されるものではなく、リクエストが必ずしもコンテンツに対するリクエストではない一般の処理リクエストに、より一般的に適用可能であり得ることに留意されたい。
【0071】
各サーバは、通常、一般管理及びそのサーバの操作のための実行可能なプログラム命令を提供するオペレーティングシステムを含み、通常、サーバのプロセッサによって実行されると、サーバがその意図される機能を実行することを可能にする命令を格納するコンピュータ可読ストレージ媒体(例えば、ハードディスク、ランダムアクセスメモリ、読出し専用メモリなど)を含む。サーバのオペレーティングシステム及び一般的な機能性の好適な実装は、周知である、または市販入手可能であり、特に、本明細書の開示を踏まえて、当業者によって容易に実装される。
【0072】
一実施形態における環境は、1つまたは複数のコンピュータネットワークもしくは直接接続を使用し、通信リンクを介して相互接続された複数のコンピュータシステム及びコンポーネントを利用する、分散型及び/または仮想コンピューティング環境である。しかしながら、当業者であれば、そのようなシステムが、図10に説明されるコンポーネントよりも少ない数または多い数のコンポーネントを有するシステムにおいても同等にうまく動作し得ることを理解する。したがって、図10におけるシステム1000の描写は、本質的に例示であり、本開示の範囲を限定するものではないと見なされるべきである。
【0073】
さらに、本開示の実施形態は、以下の条項に照らして、説明することができる。
【0074】
1.システムであって、
1つまたは複数のプロセッサと、
命令を含むメモリであって、前記1つまたは複数のプロセッサによって実行されると、前記命令により、前記システムが、
エントリをブルームフィルタに追加するための第1の要求を受信し、
前記ブルームフィルタを照会して、前記ブルームフィルタの前記エントリの現在の反復値を判定し、前記現在の反復値が、第1のパリティ値または第2のパリティ値のいずれかであるパリティ属性を有し、前記第1のパリティ値が、前記ブルームフィルタの前記エントリの存在を示し、前記第2のパリティ値が、前記エントリが前記ブルームフィルタから削除されたことを示し、
前記第1の要求に、少なくとも、
前記現在の反復値が、前記第1のパリティ値を有する場合、前記エントリが前記ブルームフィルタ内に存在することを示し、
前記現在の反復値が、前記第2のパリティ値を有する場合、
前記現在の反復値を、前記第1のパリティ値を有する第1の現在の反復値になるように増分し、
前記第1の現在の反復値及び前記エントリを利用して第1の出力値を生成し、
前記生成された第1の出力値を前記ブルームフィルタに追加することによって応答し、
前記ブルームフィルタから前記エントリを削除するための第2の要求を受信し、
前記第2の要求に、少なくとも、
前記ブルームフィルタを照会して前記ブルームフィルタの前記エントリの前記現在の反復値を判定し、
前記第2の現在の反復値が、前記第2のパリティ値に対応する場合、前記エントリが前記ブルームフィルタ内に存在しないことを示し、
前記第2の現在の反復値が、前記第1のパリティ値に対応する場合、
前記現在の反復値を、前記第2のパリティ値を有する前記第2の現在の反復値に増分し、
前記第2の現在の反復値及び前記エントリを利用して第2の出力値を生成し、
前記生成された第2の出力値を前記ブルームフィルタに追加することによって応答する、
前記メモリを含む、
前記システム。
【0075】
2.前記1つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、前記ブルームフィルタを照会して、それぞれが異なる反復値を有する、前記ブルームフィルタを少なくとも複数回照会することによって前記現在の反復値を判定し、前記ブルームフィルタに前記エントリが追加された最も高い反復値として前記現在の反復値を判定する、条項1に記載のシステム。
【0076】
3.前記第1のパリティ値が偶数であり、前記第2のパリティの値が奇数である、条項1または2に記載のシステム。
【0077】
4.前記1つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、前記第1の現在の反復値及び前記エントリをエントリ関数に入力し、前記現在の反復値と前記エントリを結合して、前記ブルームフィルタに追加される前記第1の出力値を生成する、条項1〜3のいずれか1項に記載のシステム。
【0078】
5.コンピュータ実装方法であって、
実行可能な命令で構成される1つまたは複数のコンピュータシステムの制御下で、
確率的データ構造を照会して前記確率的データ構造内のエントリの現在の反復状態を判定し、前記現在の反復状態が、前記エントリがセットのメンバであることに対応する第1の状態及びセット内の前記エントリが存在しないことに対応する第2の状態を含む複数の状態からの前記エントリの状態を示すことと、
前記エントリが前記セットのメンバであることに対応する前記現在の反復状態の結果として、新しい反復状態が前記セットからの前記エントリの削除に対応するように、前記現在の反復状態を前記新しい反復状態に修正することと、
前記新しい反復状態及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記出力値を追加することとを含む、前記コンピュータ実装方法。
【0079】
6.前記確率的データ構造がブルームフィルタであり、
前記ブルームフィルタに前記出力値を追加することが、前記ブルームフィルタ内の前記出力値の存在を示すために、前記ブルームフィルタ内の1つまたは複数のビットをゼロから1に変更することを含む、条項5に記載のコンピュータ実装方法。
【0080】
7.前記方法が、
前記エントリを前記確率的データ構造に追加するための要求を受信することと、
前記確率的データ構造を照会して前記エントリの前記現在の反復状態を判定することと、
前記第2の状態に対応する前記現在の反復状態の結果として、
前記現在の反復状態が、前記第1の状態に対応する新しい現在の反復状態になるように修正することと、
前記新しい現在の反復値及び前記エントリを利用して第2の出力値を生成することと、
前記確率的データ構造に前記生成された第2の出力値を追加することとをさらに含む、条項5または6に記載のコンピュータ実装方法。
【0081】
8.前記現在の反復状態が、第1のパリティ状態または第2のパリティ状態のいずれかであるパリティ属性を有し、前記第1のパリティ状態が前記第1の状態に対応し、前記第2のパリティ状態が前記第2の状態に対応する、条項5〜7のいずれか1項に記載のコンピュータ実装方法。
【0082】
9.前記第1のパリティ状態が奇数であり、前記第2のパリティの状態が偶数である、条項8に記載のコンピュータ実装方法。
【0083】
10.前記出力値が、少なくとも前記新しい反復状態及び前記エントリをハッシュ関数に入力することによって生成される、条項5〜9のいずれか1項に記載のコンピュータ実装方法。
【0084】
11.前記確率的データ構造に照会して前記現在の反復値を判定することが、
それぞれが異なる反復状態を有する、前記確率的データ構造を複数回照会することと、
前記現在の反復状態を、前記エントリが前記確率的データ構造に追加された前記最も高い反復状態として判定することとを含む、条項5〜10のいずれか1項に記載のコンピュータ実装方法。
【0085】
12.前記セットからの前記エントリの削除が、前記確率的データ構造に関連するデータベースからの前記エントリの削除の結果として生成された要求に応答して実行される、条項5〜11のいずれか1項に記載のコンピュータ実装方法。
【0086】
13.非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を格納し、コンピュータシステムの1つまたは複数のプロセッサによって実行されると、前記命令により、前記コンピュータシステムが、少なくとも、
確率的データ構造内のエントリの現在の反復値を判定し、前記現在の反復値が、第1の状態及び第2の状態を含む複数の状態からの前記エントリの状態を示し、前記現在の反復値が、前記エントリが前記確率的データ構造を更新するために使用された回数を示し、
前記判定された現在の反復値に少なくとも部分的に基づいて前記エントリの状態を判定し、
前記判定した状態を示す情報を提供する、前記非一時的なコンピュータ可読ストレージ媒体。
【0087】
14.前記命令によりさらに、前記コンピュータシステムが、それぞれが異なる反復値を有する、前記確率的データ構造を複数回照会して、現在の反復値を判定する、条項13に記載の非一時的なコンピュータ可読記憶媒体。
【0088】
15.前記第1の状態が、セット内の前記エントリのメンバシップに対応し、前記第2の状態が、前記セット内の前記エントリが存在しないことに対応する、条項13または14に記載の非一時的なコンピュータ可読記憶媒体。
【0089】
16.前記確率論的データ構造が、ブルームフィルタ内の前記値の存在を示すために使用される1つまたは複数のビットを含む前記ブルームフィルタである、条項13〜15のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
【0090】
17.前記命令によりさらに、前記コンピュータシステムが、
前記エントリを前記確率的データ構造に追加するための要求を受信し、
前記エントリの前記現在の反復値を判定し、
少なくとも、
前記現在の反復値が前記第1の状態に対応する場合、前記エントリが前記確率的データ構造内に存在することを示すことと、
前記現在の反復値が前記第2の状態に対応する場合、
前記現在の反復値を、前記第1の状態に対応する新しい現在の反復値になるように増分することと、
前記新しい現在の反復値及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することによって前記要求を満たす、条項13〜16のいずれか1項に記載のコンピュータ実装方法。
【0091】
18.前記命令によりさらに、前記コンピュータシステムが、
前記エントリを前記確率的データ構造から削除するための要求を受信し、前記要求が前記確率的データ構造に関連するデータベースから前記エントリの削除の検出に応答して生成され、
前記要求に応答して前記エントリの前記現在の反復値を判定し、
少なくとも、
前記現在の反復値が前記第2の状態に対応する場合、前記エントリが前記確率的データ構造内に存在しないことを示すことと、
前記現在の反復値が前記第1の状態に対応する場合、
前記現在の反復値を、前記第2の状態に対応する新しい現在の反復値になるように増分することと、
前記新しい現在の反復値及び前記エントリを利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することによって前記要求を満たす、条項13〜17のいずれか1項に記載のコンピュータ実装方法。
【0092】
19.前記現在の反復値が、第1のパリティ値または第2のパリティ状態のいずれかであるパリティ属性を有し、前記第1のパリティ値が前記第1の状態に対応し、前記第2のパリティ値が前記第2の状態に対応する、条項13〜18のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【0093】
20.前記命令によりさらに、前記コンピュータシステムが、
前記エントリが前記確率的データ構造内に存在することに対応する前記現在の反復値の結果として、新しい反復値が、前記エントリが前記確率的データ構造に存在しないことに対応するように、前記新しい反復値を選択し、
前記新しい反復値及び前記エントリを使用して生成された値を前記確率的データ構造に追加する、条項13〜19のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【0094】
21.システムであって、
1つまたは複数のプロセッサと、
命令を含むメモリであって、前記一つまたは複数のプロセッサによって実行されると、前記命令により、前記システムが、
クライアントデバイスから、データベースレコードをデジタル署名するための要求を受信し、前記データベースレコードは複数のキー値ペアを含み、
ハッシュ関数を利用して、前記複数のキー値ペアの個々のキー値ペアをハッシュし、ハッシュのセットを生成し、
前記生成されたハッシュのセットをブルームフィルタに追加して、更新されたブルームフィルタを生成し、
前記更新されたブルームフィルタにデジタル署名して、前記更新されたブルームフィルタのデジタル署名を生成し、
前記更新されたブルームフィルタ及び前記生成されたデジタル署名を提供する、
前記メモリを含む、
前記システム。
【0095】
22.前記1つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、
前記ブルームフィルタ内の前記複数のキー値ペアの個々のキー値ペアを、以前に観察された属性及び前記属性の新しい値を含む新しいキー値ペアに置き換えるための要求を受信し、
前記ブルームフィルタを照会して、前記ブルームフィルタ内の前記個々のキー値ペアの現在の反復値を判定し、
少なくとも、
前記現在の反復値を、新しい反復値になるように増分することと、
前記新しい反復値と、前記キー値ペアの前記キーと、前記キー値ペアの前記新しい値とを利用して出力値を生成することと、
前記生成された出力値を前記ブルームフィルタに追加することによって前記要求を満たす、条項21に記載のシステム。
【0096】
23.前記ブルームフィルタ内の前記個々のキー値ペアを置き換えるための要求が、前記個々のキー値ペアの値の削除を指定し、
前記1つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、少なくとも、
前記新しい反復値と、前記キー値ペアの前記キーと、Null値とを利用して前記出力値を生成することと、
前記生成された出力値を前記ブルームフィルタに追加することによって前記要求を満たす、条項22に記載のシステム。
【0097】
24.前記1つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、
前記複数のキー値ペアのうちの特定のキーの前記ブルームフィルタ内に値が存在するかどうかを判定するための要求を受信し、
前記ブルームフィルタを照会して、前記特定のキーに対応する個々のキー値ペアの現在の反復値を判定し、
前記判定された現在の反復値と、前記キーと、前記要求で指定した前記値を利用して、出力値を生成し、
前記ブルームフィルタを照会して、前記出力値の存在を判定し、その結果、判定前記出力値が前記ブルームフィルタ内に存在する場合、前記要求で指定した前記値が、前記ブルームフィルタ内に存在する、条項21〜23のいずれか1項に記載のシステム。
【0098】
25.コンピュータ実装方法であって、
実行可能な命令で構成される1つまたは複数のコンピュータシステムの制御下で、
データセットの複数のコンポーネントを取得することと、
前記データセットの前記複数のコンポーネントの個々のコンポーネントをハッシュして複数のハッシュを生成することと、
前記生成された複数のハッシュを確率的データ構造に追加することと、
前記確率的データ構造にデジタル署名することとを含む、前記コンピュータ実装方法。
【0099】
26.前記確率論的データ構造がブルームフィルタであり、
前記生成された複数のハッシュを前記ブルームフィルタに追加することが、前記ブルームフィルタ内に前記生成された複数のハッシュの存在を示すために、前記ブルームフィルタ内の1つまたは複数のビットをゼロから1に変更することを含む、条項25に記載のコンピュータ実装方法。
【0100】
27.データベースレコードにデジタル署名するための要求に応答して、前記確率的データ構造及びデジタル署名された前記確率的データ構造の結果として生成されたデジタル署名を提供することをさらに含む、条項25または26に記載のコンピュータ実装方法。
【0101】
28.コンポーネントが前記確率的データ構造内に存在するかどうかを判定するための要求を受信することと、
前記コンポーネントの現在の反復値を判定することと、
前記現在の反復値及び前記コンポーネントを使用して前記コンポーネントが前記確率的データ構造内に存在するかどうかを判定することとを含む、条項25〜27に記載のコンピュータ実装方法。
【0102】
29.それぞれが異なる反復値を有する、前記確率的データ構造を複数回照会して、前記現在の反復値を判定し、前記コンポーネントが前記確率的データ構造に追加された最も高い反復値として前記現在の反復値を判定することをさらに含む、条項28に記載のコンピュータ実装方法。
【0103】
30.前記確率的データ構造からの個々のコンポーネントを、新しいコンポーネントに置き換えるための要求を受信することと、
前記個々のコンポーネントの現在の反復値を判定することと、
前記現在の反復値を修正して新しい反復値を生成することと、
前記新しい反復値及び前記新しいコンポーネントをハッシュして新しいハッシュを生成することと、
前記確率的データ構造に前記新しいハッシュを追加することとを含む、条項25〜29のいずれか1項に記載のコンピュータ実装方法。
【0104】
31.前記個々のコンポーネントを置き換えるための要求が、前記個々のコンポーネントを前記確率的データ構造から削除するための削除要求であり、
前記前記現在の反復値を修正して新しい反復値を生成することが、前記新しい反復値が前記確率的データ構造からの前記個々のコンポーネントが存在しないことに対応するように前記新しい反復値を選択することを含む、条項30に記載のコンピュータ実装方法。
【0105】
32.前記削除要求が、前記確率的データ構造に関連するデータベースから前記コンポーネントを削除した結果として生成される、条項31に記載のコンピュータ実装方法。
【0106】
33.非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を格納し、コンピュータシステムの1つまたは複数のプロセッサによって実行されると、前記命令により、前記コンピュータシステムが、少なくとも、
データセットの複数のコンポーネントを確率的データ構造に符号化し、
前記データセットの前記複数のコンポーネントのうちの個々のコンポーネントを、少なくとも、
前記確率的データ構造に対して前記個々のコンポーネントを検証することと、
前記確率的データ構造のデジタル署名を検証することによって検証する、前記非一時的なコンピュータ可読ストレージ媒体。
【0107】
34.前記確率論的データ構造が、ブルームフィルタ内の前記複数のコンポーネントの存在を示すために使用される1つまたは複数のビットを含む前記ブルームフィルタである、条項33に記載の非一時的コンピュータ可読記憶媒体。
【0108】
35.前記データセットの前記複数のコンポーネントを前記確率的データ構造に符号化することが、
前記データセットの前記複数のコンポーネントを取得することと、
前記データセットの前記複数のコンポーネントの個々のコンポーネントをハッシュして複数のハッシュを生成することと、
前記生成された複数のハッシュを前記確率的データ構造に追加することと、
前記確率的データ構造にデジタル署名することとを含む、条項33または34に記載の非一時的なコンピュータ可読記憶媒体。
【0109】
36.前記命令によりさらに、前記コンピュータシステムが、
前記確率的データ構造からコンポーネントを削除するための要求を受信し、
前記コンポーネントの現在の反復値を判定し、
少なくとも、
前記コンポーネントの前記現在の反復値が、前記コンポーネントが前記確率的データ構造内に存在することに対応する場合、
前記現在の反復値を新しい反復値になるように修正して、前記新しい反復値が、前記確率的データ構造に前記コンポーネントが存在しないことに対応するようにすることと、
前記コンポーネント及び前記新しい反復値をハッシュしてハッシュを生成することと、
前記ハッシュを前記確率的データ構造に追加することと、
前記コンポーネントの前記現在の反復値が、前記コンポーネントが前記確率的データ構造に存在しないことに対応する場合、前記コンポーネントが前記確率的データ構造に存在しないことを示すことによって前記要求を満たす、条項33〜35のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【0110】
37.前記複数のコンポーネントが、データベースレコードのキー値ペアである、条項33〜36のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【0111】
38.前記命令によりさらに、前記コンピュータシステムが、
コンポーネントが前記確率的データ構造内に存在するかどうかを判定するための要求に応答して、前記コンポーネントの現在の反復値を判定し、
前記現在の反復値及び前記コンポーネントをハッシュしてハッシュを生成し、
前記ハッシュを利用して前記コンポーネントが、前記確率的データ構造内に存在するかどうかを判定する、条項33〜37のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【0112】
39.前記命令によりさらに、前記コンピュータシステムが、前記確率的データ構造の複数のクエリを実行して前記現在の反復値を判定し、異なる反復値を使用して各クエリを実行して前記コンポーネントが前記確率的データ構造に追加された最も高い反復値として前記現在の反復値を判定する、条項38に記載の非一時的なコンピュータ可読記憶媒体。
【0113】
40.前記命令によりさらに、前記コンピュータシステムが、
前記確率的データ構造内のコンポーネントを更新するための要求を受信し、
前記コンポーネントの現在の反復値を判定し、
前記現在の反復値を修正して新しい反復値を生成し、
前記新しい反復値及び前記更新されたコンポーネントをハッシュして新しいハッシュを生成し、
前記確率的データ構造に前記新しいハッシュを追加する、条項38に記載の非一時的なコンピュータ可読記憶媒体。
【0114】
41.システムであって、
1つまたは複数のプロセッサと、
命令を含むメモリであって、前記一つまたは複数のプロセッサによって実行されると、前記命令により、前記システムが、
クライアントデバイスから、データベースレコードをデジタル署名するための要求を受信し、前記データベースレコードは複数のキー値ペアを含み、
前記複数のキー値ペアの個々のキー値ペアに少なくとも部分的に基づいて、前記個々のキー値ペアの個別のデジタル署名を生成し、
前記生成された個々の電子署名をブルームフィルタに追加して更新されたブルームフィルタを生成し、
前記更新されたブルームフィルタを提供する、
前記メモリを含む、
前記システム。
【0115】
42.前記1つまたは複数のプロセッサによって実行されると、前記命令によってさらに、前記システムが、
前記ブルームフィルタ内のキー値ペアに対応する個々のデジタル署名を、以前に観察された属性及び前記属性の新しい値を含む新しいキー値対に対応する新しいデジタル署名に置き換えるための要求を受信し、
前記ブルームフィルタを照会して前記ブルームフィルタ内のデジタル署名の現在の反復値を判定し、
少なくとも、
前記現在の反復値を、新しい反復値になるように増分することと、
前記新しいキー値ペアにデジタル署名して前記新しいキー値ペアの新しいデジタル署名を生成することと、
前記新しい反復値及び前記新しいデジタル署名を利用して出力値を生成することと、
前記生成された出力値を前記ブルームフィルタに追加することによって前記要求を満たす、条項41に記載のシステム。
【0116】
43.前記デジタル署名を置き換えるための要求が、前記デジタル署名が前記ブルームフィルタから削除されるように、前記キー値ペアの値の削除を指定し、
前記1つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記コンピュータシステムが、少なくとも、
Null値及び前記キー値ペアのキーをデジタル署名して前記新しいデジタル署名を生成することと、
前記新しい反復値及び前記新しいデジタル署名を利用して出力値を生成することと、
前記生成された出力値を前記ブルームフィルタに追加することによって前記要求を満たす、条項42に記載のシステム。
【0117】
44.前記1つまたは複数のプロセッサによって実行されると、前記命令によりさらに、前記システムが、
前記複数のキー値ペアのうちの特定のキー値ペアのデジタル署名を検証するための要求を受信し、
前記ブルームフィルタを照会して前記特定のデジタル署名の現在の反復値を判定し、
前記判定された現在の反復値及び前記デジタル署名を利用して出力値を生成し、
前記ブルームフィルタを照会して、前記出力値の存在を判定し、前記出力値が前記ブルームフィルタ内に存在する場合、前記デジタル署名が真正であると検証される、条項41〜43のいずれか1項に記載のシステム。
【0118】
45.コンピュータ実装方法であって、
実行可能な命令で構成される1つまたは複数のコンピュータシステムの制御下で、
データセットの複数のコンポーネントを取得することと、
前記複数のコンポーネントの個々のコンポーネントにデジタル署名して複数のデジタル署名を生成することと、
前記複数のデジタル署名を確率的データ構造に追加することと、
前記確率論的データ構造を利用して前記複数のデジタル署名の個々のデジタル署名を検証することとを含む、前記コンピュータ実装方法。
【0119】
46.前記確率論的データ構造がブルームフィルタであり、
前記ブルームフィルタに前記デジタル署名を追加することが、前記ブルームフィルタ内の前記複数のデジタル署名の存在を示すために、前記ブルームフィルタ内の1つまたは複数のビットをゼロと1との間で変更することを含む、条項45に記載のコンピュータ実装方法。
【0120】
47.前記確率的データ構造からの個々のコンポーネントを、新しいコンポーネントに置き換えるための要求を受信することと、
前記個々のコンポーネントの現在の反復値を判定することと、
前記現在の反復値を修正して新しい反復値を生成することと、
前記新しいコンポーネントをデジタル署名して新しいデジタル署名を生成することと、
前記新しい反復値及び前記新しいデジタル署名を利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することによって前記要求を満たす、条項45または46に記載のコンピュータ実装方法。
【0121】
48.データベースレコードにデジタル署名するための要求に応答して、前記確率的データ構造を提供することをさらに含む、条項45〜47のいずれか1項に記載のコンピュータ実装方法。
【0122】
49.前記確率的データ構造から個々のコンポーネントを削除するための要求を受信することと、
前記個々のコンポーネントについて、対応するデジタル署名を判定することと、
前記対応するデジタル署名の現在の反復値を判定することと、
前記現在反復値を新しい反復値になるように修正して前記新しい反復値が前記確率的データ構造からの前記対応するデジタル署名の削除に対応するようにすることと、
前記新しい反復値及び前記対応するデジタル署名を利用して出力値を生成することと、
前記確率的データ構造に前記生成された出力値を追加することとをさらに含む、条項45〜48のいずれか1項に記載のコンピュータ実装方法。
【0123】
50.前記確率的データ構造から前記個々のコンポーネントを削除するための前記要求が、前記確率的データ構造に関連するデータベースから前記コンポーネントを削除した結果として生成される、条項49に記載のコンピュータ実装方法。
【0124】
51.前記確率論的データ構造を利用して前記複数のデジタル署名の個々のデジタル署名を検証することが、
前記個々のデジタル署名の現在の反復値を判定することと、
前記個々のコンポーネントの前記判定された現在の反復値及び前記デジタル署名を利用して出力値を生成することと、
個々のデジタル署名に対応する個々の出力値が、前記確率的データ構造内に存在する場合、前記確率的データ構造を照会して、前記個々のコンポーネントの前記デジタル署名が真正であると検証されるように、前記出力値の存在を判定することとを含む、条項45〜50のいずれか1項に記載のコンピュータ実装方法。
【0125】
52.それぞれが異なる反復値を有する、前記確率的データ構造を複数回照会して、前記現在の反復値を判定し、個々のデジタル署名が前記確率的データ構造に追加された最も高い反復値として前記現在の反復値を判定することをさらに含む、条項51に記載のコンピュータ実装方法。
【0126】
53.非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を格納し、コンピュータシステムの1つまたは複数のプロセッサによって実行されると、前記命令により、前記コンピュータシステムが、少なくとも、
複数のデジタル署名に少なくとも部分的に基づいて生成された確率的データ構造を格納し、前記複数のデジタル署名の個々のデジタル署名を、データセットの複数のコンポーネントのそれぞれのコンポーネントに少なくとも部分的に基づいて生成し、
デジタル署名を受信し、
前記確率的データ構造に対して前記デジタル署名を検証することによって、前記受信されたデジタル署名を検証する、非一時的なコンピュータ可読ストレージ媒体。
【0127】
54.前記命令によりさらに、前記コンピュータシステムが、
デジタル署名が前記確率的データ構造内に存在するかどうかを判定するための要求に応答して、前記デジタル署名の現在の反復値を判定し、
前記現在の反復値及び前記デジタル署名を利用して出力値を生成し、
出力値を利用して、前記デジタル署名が、前記確率的データ構造内に存在するかどうかを判定する、条項53に記載の非一時的なコンピュータ可読記憶媒体。
【0128】
55.前記命令によりさらに、前記コンピュータシステムが、前記確率的データ構造の複数のクエリを実行して前記現在の反復値を判定し、異なる反復値を使用して各クエリを実行して前記デジタル署名が前記確率的データ構造に追加された最も高い反復値として前記現在の反復値を判定する、条項54に記載の非一時的なコンピュータ可読記憶媒体。
【0129】
56.前記命令によりさらに、前記コンピュータシステムが、
前記確率的データ構造内のデジタル署名を更新するための要求を受信し、
前記コンポーネントに対応するデジタル署名の現在の反復値を判定し、
前記現在の反復値を修正して新しい反復値を生成し、
前記新しい反復値及び前記更新されたコンポーネントを利用して新しい出力値を生成し、
前記確率的データ構造に前記新しい出力値を追加する、条項54に記載の非一時的なコンピュータ可読記憶媒体。
【0130】
57.前記命令によりさらに、前記コンピュータシステムが、
前記確率的データ構造からデジタル署名を削除するための要求を受信し、
前記デジタル署名の現在の反復値を判定し、
少なくとも、
前記デジタル署名の前記現在の反復値が、前記デジタル署名が前記確率的データ構造内に存在することに対応する場合、
前記現在の反復値を新しい反復値になるように修正することであって、前記新しい反復値が、前記確率的データ構造に前記デジタル署名が存在しないことに対応することと、
新しい出力値を生成するために、前記デジタル署名及び前記新しい反復値を利用することと、
前記確率的データ構造に前記新しい出力値を追加することと、
前記デジタル署名の前記現在の反復値が、前記デジタル署名が前記確率的データ構造に存在しないことに対応する場合、前記デジタル署名が前記確率的データ構造に存在しないことを示すことによって前記要求を満たす、条項53〜56のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【0131】
58.前記確率論的データ構造が、ブルームフィルタ内の前記複数のデジタル署名の存在を示すために使用される1つまたは複数のビットを含む前記ブルームフィルタである、条項53〜57のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
【0132】
59.前記命令によりさらに、前記コンピュータシステムが、前記確率的データ構造にデジタル署名をする、条項53〜58のいずれか1項に記載の非一時的なコンピュータ読み取り可能記憶媒体。
【0133】
60.前記確率論的データ構造が、
前記データセットの前記複数のコンポーネントを取得することと、
前記複数のコンポーネントの前記個々のコンポーネントについて、前記個々のコンポーネントのデジタル署名を生成することと、
前記個々のコンポーネントの前記デジタル署名を前記確率的データ構造に追加することによって作成される、条項53〜59のいずれか1項に記載の非一時的なコンピュータ読み取り可能記憶媒体。
【0134】
様々な実施形態はさらに、多種多様な動作環境で実装することができ、場合によっては、いくつかのアプリケーションのうちのいずれかを操作するために使用することができる1つまたは複数のユーザコンピュータ、コンピューティングデバイスまたは処理デバイスを含み得る。ユーザまたはクライアントデバイスは、標準的なオペレーティングシステムを起動させるデスクトップ型、ラップトップ型、またはタブレットコンピュータ、ならびに、モバイルソフトウェアを起動させ、多数のネットワーク及びメッセージプロトコルをサポートすることが可能な携帯電話、無線、及び携帯型デバイスなど、あらゆる数の汎用パーソナルコンピュータを含み得る。かかるシステムは、様々な商用的に入手可能なオペレーティングシステムならびに開発及びデータベース管理などの目的のための他の周知のアプリケーションを稼働させる、いくつかのワークステーションもまた含み得る。これらのデバイスは、ダミー端末、シンクライアント、ゲーム機及びネットワークを介して通信することができる他のデバイスなどの、他の電子デバイスもまた含み得る。これらのデバイスは、仮想マシン、ハイパーバイザー及び、ネットワークを介して通信可能である他の仮想デバイスなどの仮想デバイスも含み得る。
【0135】
本開示の様々な実施形態は、伝送制御プロトコル/インターネットプロトコル(「TCP/IP」)、ユーザデータグラムプロトコル(「UDP」)、開放型システム間相互接続(「OSI」)モデルの各層で動作するプロトコル、ファイル転送プロトコル(「FTP」)、ユニバーサルプラグアンドプレイ(「UPnP」)、ネットワークファイルシステム(「NFS」)、共通インターネットファイルシステム(「CIFS」)及びAppleTalkなどの商用的に入手可能な各種プロトコルのいずれかを用いる通信をサポートするのに、当業者に知られている少なくとも1つのネットワークを利用している。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク及びそれらの任意の組み合わせであってよい。
【0136】
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキストトランスファープロトコル(「HTTP」)サーバ、FTPサーバ、コモンゲートウェイインタフェース(「CGI」)サーバ、データサーバ、Javaサーバ(登録商標)、Apacheサーバ及びビジネスアプリケーションサーバを含む、多様なサーバまたは中間層アプリケーションのうちのいずれかを運用することができる。サーバ(複数可)は、ユーザデバイスからのリクエストに応答して、Java(登録商標)、C、C♯またはC++などの任意のプログラミング言語またはRuby、PHP、Perl、PythonまたはTCL及びそれらの組み合わせなどの任意のスクリプト言語で記述された1つまたは複数のスクリプトまたはプログラムとして実装され得る1つまたは複数のウェブアプリケーションを実行することなどによって、プログラムまたはスクリプトも実行可能でもあり得る。サーバ(複数可)は、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)及びIBM(登録商標)から市販されているものならびにMySQL、Postgres、SQLite、MongoDBなどのオープンソースサーバ、ならびに構造化または非構造化データを格納、読み出し、それにアクセスが可能な任意の他のサーバを、限定することなしに含むデータベースサーバも含み得る。データベースサーバは、テーブルベースのサーバ、ドキュメントベースのサーバ、非構造化サーバ、関係サーバ、非関係サーバ、または、これらの組み合わせ及び/または他のデータベースサーバの組み合わせを含み得る。
【0137】
環境は、上述の種々のデータストア及び他のメモリ及びストレージ媒体を含み得る。これらは、様々な位置、例えば、コンピュータのうちの1つまたは複数にローカル(かつ/またはそこに存在する)の、またはネットワーク上のコンピュータのうちのいくつかまたはすべてからリモートのストレージ媒体上に存在し得る。特定の組の実施形態において、情報は、当業者に周知のストレージエリアネットワーク(「SAN」)に存在し得る。同様に、コンピュータ、サーバまたは他のネットワークデバイスによる機能を実行するための任意の必要なファイルは、必要に応じて、ローカルにかつ/またはリモートに格納され得る。システムがコンピュータ化デバイスを含む場合、そのようなデバイスはそれぞれ、バスを介して電気的に連結され得るハードウェア要素を含むことができ、該要素は、例えば、少なくとも1つの中央処理装置(「CPU」または「プロセッサ」)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーンまたはキーパッド)及び少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタまたはスピーカ)を含む。そのようなシステムは、1つまたは複数のストレージデバイス、例えば、ディスクドライブ、光学式記憶デバイス及びソリッドステートストレージデバイス、例えば、ランダムアクセスメモリ(「RAM」)または読出し専用メモリ(「ROM」)、ならびに取り外し可能な媒体デバイス、メモリカード、フラッシュカードなども含み得る。
【0138】
そのような装置はまた、上述のように、コンピュータ可読ストレージ媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイスなど)及び作業メモリを含み得る。コンピュータ可読ストレージ媒体リーダは、コンピュータ可読ストレージ媒体と接続され得るか、またはコンピュータ可読ストレージ媒体を受容するよう構成され得、リモート、ローカル、固定及び/または取り外し可能なストレージデバイス、ならびにコンピュータ可読情報を一時的にかつ/またはより恒久的に含有し、格納し、送信し、かつ読み込むためのストレージ媒体を表す。システム及び様々なデバイスは、通常、いくつかのソフトウェアアプリケーション、モジュール、サービスまたはオペレーティングシステム及びアプリケーションプログラム、例えば、クライアントアプリケーションまたはウェブブラウザを含む少なくとも1つのワーキングメモリデバイス内で見つけられる他の要素も含む。代替実施形態が、上述のものからの多数の変形を有し得ることを理解されたい。例えば、特製のハードウェアもまた使用可能である、かつ/または特定の要素をハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、もしくはその両方に実装することができる。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続が用いられ得る。
【0139】
コードまたはコードの一部を含むためのストレージ媒体及びコンピュータ可読媒体は、RAM、ROM、電子的消去可能プログラマブル読出し専用メモリ(「EEPROM」)、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読出し専用メモリ(「CD−ROM」)、デジタルバーサタイルディスク(DVD)、もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができ、かつシステムデバイスによってアクセスされ得る任意の他の媒体をはじめとする、限定するものではないが、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の格納及び/または送信のために任意の方法または技術で実装される揮発性及び非揮発性、可換型及び非可換型媒体などのストレージ媒体及び通信媒体を含む当該術分野において周知の、または使用される任意の適切な媒体を含むことができる。本明細書に提供される本開示及び教示に基づいて、当業者であれば、様々な実施形態を実装する他の様式及び/または方法を理解する。
【0140】
したがって、明細書及び図面は、限定する意味ではなくて例示的なものと見なされる。しかしながら、種々の修正及び変更が、特許請求の範囲に記載される本発明のより広範な精神と範囲から逸脱することなく、そこになされ得ることは明らかであろう。
【0141】
他の変形例は、本開示の精神の範囲内にある。したがって開示された技術は、様々な修正及び代替構成が可能であるが、ある特定の例示の実施形態が図面に示され、上で詳細に記載されている。しかしながら、本発明を特定の形式または開示される形式に限定する意図はなく、しかし、むしろ、添付の特許請求の範囲において定義される本発明の精神及び範囲内に収まるすべての修正、代替構造及び等価物を網羅するところに意図があるということが理解されるべきである。
【0142】
開示される実施形態を説明する文脈における(特に以下の特許請求の範囲の文脈における)「a」、「an」及び「the」という用語ならびに同様の指示語の使用は、本明細書において別段の指示がない限り、または文脈に明らかに矛盾するものでない限り、単数及び複数の双方を網羅すると解釈される。「comprising(備える)」、「having(有する)」、「including(含む)」及び「containing(含有する)」という用語は、特に断りのない限り、オープンエンドの用語(すなわち、「含むが、これらに限定されない」ことを意味する)として解釈されるべきである。修飾されていないかつ物理的な接続を指す用語「connected(接続され)」は、介在するものが存在しても、部分的にまたは全体的に含まれ、付着されもしくは1つに結合することとして解釈されるべきである。本明細書中の値の範囲の列挙は、本明細書において他に示されない限り、単に、範囲内に入るそれぞれ別個の値に個々に言及する速記方法として役立つように意図され、それが個々に本明細書に記載されているかのように、各個別の値は、本明細書に組み込まれる。「セット」(例えば、「アイテムのセット」)または「サブセット」という用語の使用は、別段の記載がない限りまたは文脈によって矛盾しない限り、1つまたは複数のメンバを含む非空コレクションとして解釈されるべきである。さらに、別段の記載がない限りまたは文脈によって矛盾しない限り、対応するセットの「サブセット」という用語は、必ずしも対応するセットの適切なサブセットを意味するものではなく、サブセット及び対応するセットは同等であり得る。
【0143】
「A、B、及びCの少なくとも1つ」または「A、B及びCのうちの少なくとも1つ」の形の表現などの接続表現は、特に明記しない限り、または文脈によって明らかに矛盾しない限り、項目、用語などがA、B、もしくはC、またはAとBとCのセットの空でないサブセットのどちらかであってよいことを提示するために一般的に使用される文脈で理解される。例えば、3つのメンバを有するセットの例示的な例では、「A、B、及びCの少なくとも1つ」及び「A、B及びCのうちの少なくとも1つ」という接続表現は、{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}のセットのいずれをも指す。したがって、そのような接続表現は、一般に、ある特定の実施形態が、Aの少なくとも1つ、Bの少なくとも1つ及びCの少なくとも1つがそれぞれ存在することを必要とすることを含意することは意図していない。
【0144】
本明細書に記載される処理の操作は、本明細書において別途指示されない限り、または文脈によって明らかに矛盾しない限り、任意の適切な順序で行うことができる。本明細書に記載された処理(もしくは変形及び/またはその組み合わせ)は、実行可能な命令で構成された1つまたは複数のコンピュータシステムの制御下で実行され得、ハードウェアまたはその組み合わせにより1つまたは複数のプロセッサ上で集合的に実行するコード(例えば、実行可能な命令、1つまたは複数のコンピュータプログラムまたは1つまたは複数のアプリケーション)として実装され得る。コードは、コンピュータ可読ストレージ媒体に、例えば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形で格納され得る。コンピュータ可読ストレージ媒体は、非一時的であり得る。
【0145】
本明細書で示される任意の及びすべての例、または例示表現(例えば、「〜など」)は、単に本発明の実施形態をよりよく示すことを意図しており、別段の請求がない限り、本発明の範囲を限定するものではない。明細書のいかなる表現も、非請求の要素が本発明の実施に不可欠であると示していると解釈されるべきではない。
【0146】
本発明を実施するために本発明者らに知られている最良の形態を含む本発明の実施形態を本明細書に記載する。それらの実施形態の変形例は、前述の説明を読めば当業者に明らかになるであろう。本発明者らは、当業者がこのような変形例を適切に使用することを期待しており、本発明者らは、本発明の実施形態が本明細書に具体的に記載されたものとは別の方法で実施されることを意図する。したがって、本発明の範囲は、適用法によって許容されるように、本明細書に添付された特許請求の範囲に記載された主題のすべての改変及び均等物を含む。さらに、本明細書に別段の指示がない限り、または文脈に明らかに矛盾するものでない限り、そのすべての考え得る変形形態での上記要素の任意の組み合わせが本発明に包含される。
【0147】
本明細書で引用する刊行物、特許出願及び特許を含むすべての参考文献は、各文献が個々にかつ具体的に参照により組み込まれることが示され、その全体が本明細書に記載された場合と同程度に、本明細書に参照により組み込まれる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10