"プロセッサーを有するデータストア上のデータセットをターゲットとするリクエストに応える方法であって、前記プロセッサー上で命令を実行するステップを含み、前記命令は、データアイテムを受け取ると、前記データセットに前記データアイテムを保存し、少なくとも1つのフィルタ基準を特定するリクエストを受け取ると、フィルタリングされたデータサブセットを生成するために、前記少なくとも1つのフィルタ基準を満たす前記データセットの前記データアイテムをリトリーブし、リクエストに応答して前記フィルタリングされたデータサブセットを送るように構成されている、方法。前記データストアが、少なくとも1つのフィルタ基準のための少なくとも1つのインデックスを含み、前記命令が、前記データアイテムを受け取ると、少なくとも1つのフィルタ基準に従い少なくとも1つのインデックスで前記データアイテムをインデックスを付けるように構成されており、少なくとも1つのフィルタ基準を満たす前記データセットの前記データアイテムをリトリーブすることが、それぞれのフィルタ基準に対し、前記フィルタ基準に対応するインデックスを用いて、前記フィルタ基準を満たすデータアイテムを識別することを含む、請求項1に記載の方法。前記インデックスが、前記インデックスに対応するフィルタ基準のフィルタ基準値に対し、前記フィルタ基準に対する前記フィルタ基準値を有するデータアイテムを識別するデータアイテムセットを特定する、請求項2に記載の方法。前記少なくとも1つのインデックスでデータアイテムのインデックス付けをすることは、それぞれのフィルタ基準に対し、前記フィルタ基準に対する前記フィルタ基準値を有するデータアイテムのデータアイテムセットに、前記データアイテムを追加することを含み、フィルタ基準値を有するフィルタ基準を満たす前記データアイテムを識別することは、前記フィルタ基準に対して前記フィルタ基準値を有するデータアイテムの前記データアイテムセットをリトリーブすることを含む、請求項3に記載の方法。データアイテムバッファを有する前記データストアは、受け取られたデータアイテムを保存するように構成され、前記データアイテムを保存することは、前記データアイテムバッファに保存されている前記データアイテムがデータアイテムバッファのサイズ閾値を超えるときには、前記データアイテムバッファのそれぞれのデータアイテムを、前記データアイテムセットに追加し、前記データアイテムバッファを空にすることを含む、請求項4に記載の方法。少なくとも1つのデータアイテム分割を含む前記データストアは、フィルタ基準に対するフィルタ基準値を有するデータアイテムを保存するように構成されており、前記少なくとも1つのフィルタ基準を満たす前記データセットの前記データアイテムをリトリーブすることは、それぞれのフィルタ基準に対する少なくとも1つのフィルタ基準値に対し、前記フィルタ基準に対する前記フィルタ基準値を有するデータアイテムを保存する前記データアイテム分割に保存されている前記データアイテムをリトリーブすることを含む、請求項3に記載の方法。前記命令が、データアイテムを受け取ると、前記インデックスに対応する少なくとも1つのフィルタ基準に対する少なくとも1つのフィルタ基準値を識別し、前記フィルタ基準に対する前記フィルタ基準値を有するデータアイテムを保存しているデータアイテム分割を識別し、前記データアイテムを前記データアイテム分割に保存する、ように構成されている、請求項6に記載の方法。前記データストアが、第1のフィルタ基準に対する第1のフィルタ基準値と第2のフィルタ基準に対する第2のフィルタ基準値とを有するデータアイテムを保存するように構成された少なくとも1つのデータアイテム分割と、前記第1のフィルタ基準に対する第1のフィルタ基準値を有するデータアイテムに対して、前記第2のフィルタ基準に対するそれぞれの第2のフィルタ基準値も有するデータアイテムを保存する前記それぞれのデータアイテム分割を識別するように構成された少なくとも1つのインデックスと、を含む、請求項6に記載の方法。前記リクエストが、前記フィルタリングされたデータサブセットを生成するのに用いられる第1のフィルタリングされたデータサブセットを特定し、前記データセットの前記データアイテムをリトリーブすることが、前記少なくとも1つのフィルタ基準を満たすデータセットのデータアイテムをリトリーブし、前記第1のフィルタリングされたデータサブセットを用いてフィルタリングされたデータサブセットを生成することを含む、請求項1に記載の方法。前記データアイテムをリトリーブすることが、前記データセットの前記データアイテムのすべてをリトリーブすることと、前記少なくとも1つのフィルタ基準を満たすデータアイテムだけを送ることと、を含む、請求項1記載の方法。前記データストアは、状態と少なくとも1つのフィルタリング条件とを有する少なくとも1つのデータアイテムプロセッサーを含むデータアイテムプロセッサーセットを含み、前記データアイテムプロセッサーセットは、データアイテムを受け取ると、前記データアイテムプロセッサーの状態を更新し、前記データアイテムプロセッサーの前記状態が、前記少なくとも1つのフィルタリング条件を満たすと、前記データアイテムが送られることを承認するように構成されており、前記少なくとも1つのフィルタ基準を満たすデータアイテムだけを送ることは、それぞれのデータアイテムを前記データアイテムプロセッサーセットに提供することと、前記データアイテムプロセッサーセットによって送ることが承認された前記データアイテムを送ることと、を含む、請求項10に記載の方法。前記リクエストが、リクエスト元から受け取られ、前記命令は、前記フィルタリングされたデータサブセットを送る前に、前記フィルタリングされたデータサブセットのフィルタリングされたデータサブセットのサイズを推定し、前記フィルタリングされたサブセットデータのサイズを前記リクエスト元に送り、前記リクエスト元からフィルタリングされたデータサブセットの承認を受け取ると、前記リクエストに応答して、前記フィルタリングされたデータサブセットを送るように構成されている、請求項1に記載の方法。プロセッサーを有するデバイスによって実行される、データストアによって保存されたデータセットにクエリーを適用する方法であって、前記プロセッサー上で命令を実行するステップを含み、前記命令は、前記クエリーから、少なくとも1つのフィルタ基準を特定するリクエストを生成し、前記リクエストを前記データストアに送り、前記リクエストに応答して、フィルタリングされたデータサブセットを前記データストアから受け取ると、前記クエリーを前記フィルタリングされたデータサブセットに適用する、ように構成されている、方法。前記クエリーが、第1のフィルタリングされたデータサブセットを生成する第1のフィルタ基準と、前記第1のフィルタリングされたデータサブセットを用いて、第2のフィルタリングされたデータサブセットを生成する第2のフィルタ基準と、を含んでおり、前記リクエストを生成することが、前記第1のフィルタ基準に従ってフィルタリングされた前記第1のデータサブセットを特定する第1のリクエストを生成することを含み、前記リクエストを前記データストアに送ることが、前記第1のリクエストを前記データストアに送ることを含み、前記クエリーを適用することが、前記第1のリクエストに応答して、前記第1のフィルタリングされたデータサブセットを前記データストアから受け取ると、前記第2のフィルタ基準に従い、前記第1のフィルタリングされたデータサブセットを用いてフィルタリングされた第2のデータサブセットを特定する第2のリクエストを生成することと、前記第2のリクエストを前記データストアに送ることと、前記第2のリクエストに応答して、前記第2のフィルタリングされたデータサブセットを前記データストアから受け取ると、前記第2のフィルタリングされたデータサブセットに前記クエリーを適用することと、を含む、請求項13に記載の方法。前記命令が、前記フィルタリングされたデータサブセットを前記データストアから受け取る前に、前記フィルタリングされたデータサブセットのフィルタリングされたデータサブセットのサイズを前記データストアから受け取り、フィルタリングされたデータサブセットの承認を生成するために、前記フィルタリングされたデータサブセットのサイズを確認し、フィルタリングされたデータサブセットの承認を生成すると、前記フィルタリングされたデータサブセットの承認を前記データストアに送る、ように構成されている、請求項13に記載の方法。0004この概要は、以下の詳細な説明において詳述される概念の選択された一部を簡略化された形式で紹介するために、提供されている。この概要は、特許請求される主題のキーとなるファクタまたは本質的な特徴を識別することは意図されていないし、特許請求される主題の範囲を限定するために用いられることも意図されていない。0005高度なトランザクションを処理する能力を有する高度なクエリー処理エンジンをデータストアに設けることは効果的ではありうるが、いくつかの問題点も生じうる。特に、ローカルに保存されているデータに対して複雑なクエリーを実行するようにデータストアを構成するのは、問題があるまたは非効率的である。例えば、データストアが特に大きな需要を有するデータを偶然に保存しているが、クエリー処理エンジンは、他のクエリーその中のいくつかは非常に単純なものでありうるが未処理のままである間に、保存されているデータに適用された複雑なクエリーの適用により負荷を負う場合がありうる。複雑なクエリーは、このように、能力とクエリー評価のスループットとを低下させるボトルネックを生じさせる可能性がある。0006第2の例として、データストアも高度なクエリーを実行するような分散型データベースアーキテクチャは、何らかのセキュリティ原則を含むことがある。その理由は、データを保存しているマシンは、そのデータに対して潜在的に危険なまたは悪意のある動作を実行することが許されるからである。更に、クエリー処理エンジンは、保存されているデータに対する任意のコードの実行例えば、実行可能なモジュールが第三者から受け取られ、保存されているデータに対して実行されるようなエージェントシナリオが許可されていることさえもある。保存されているデータと妥協したマシンとの間でデータアイテムを分割するなど、マシンの第1の集合でのデータの保存とマシンの第2の集合に配分されたデータに対する任意のコードを含む複雑な計算の実行とを分離するセキュリティ原則が、いくつかのセキュリティ上の効果を奏する可能性がある。0007これらのおよび他の効果は、データストア例えば、分散型データベースのデータを保存するように構成されているサーバファームのマシンからデータの複雑な処理を取り除くことから生じうる。しかし、例えば、純粋にデータ記憶装置としてのみ機能するデータストアであって、リクエストされたデータオブジェクト例えば、あるテーブルの全体を提供するだけの能力を有するまたは特定された変更を行うような、処理能力のないデータストアを構成することには、問題点もありうる。例えば、他のマシンが、特定のフィルタ基準を満たすテーブルからのレコードのサブセットなど、データのサブセットのみをデータストアにリクエストすることがありうる。しかし、そのリクエストが多くのレコードを含むテーブルの中の少数のレコードだけを特定する場合に、テーブル全体を送ることは、特にネットワーク接続された環境においてマシンとデータストアとの間に帯域幅の制限があることを仮定すると、著しく非効率である。0008本明細書に提示されるのは、そこに保存されているデータを求めるリクエストに応えるように、データストアを構成する手法である。これらの手法によると、データストアは、著しい計算上の費用を必要とし、リクエストに応える際の性能を低下させ、および/または保存されているデータに対する任意のコードに実行を許容するクエリー処理エンジンを用いない。しかし、データストアは、更に、そこに保存されているデータのサブセットだけを提供することができる。データストアは、1つまたは複数のフィルタ基準を特定するリクエストを受け入れることによってこの結果を達成する。なお、ここで、それぞれのリクエストによって、要求されるデータの量を特定の態様で減量している。例えば、リクエストに、特定のフィルタ基準値を特定するフィルタ基準を含むようにすることができ、ある特定のフィルタ基準に対するフィルタ基準値を有しているレコードだけを要求しうる例えば、イベントを表すデータを保存するように構成されているデータストアでは、フィルタ基準は、イベントのタイプまたはイベントが生じたときを識別しうる。従って、このリクエストは様々なフィルタ基準だけを特定し、データストアは、そのフィルタ基準を満たすデータを提供することができるが、複雑な動作を特定する可能性があるクエリーを処理するようには構成されない。従って、この構成により、分散型データベースの分割を、データを保存して提供するように構成されているデータノードの集合と、任意のコードを含む複雑なクエリーを適用することができる計算ノードの集合の中に設定することを可能にする。0009以上のおよび関連する目的を達成するために、以下の説明と添付の図面とにより、いくつかの説明的な態様と実装例とを明らかにしている。これらは、1つまたは複数の態様を用いることができる様々な方法のうちのいくつかを示している。本開示のそれ以外の態様、効果、および新規な特徴は、以下の詳細な説明を添付の図面と共に考察することによって、明らかになるはずである。0020以下では、特許請求されている主題について、図面を参照して説明する。図面では、類似の要素に言及する際には、図面全体を通じて、類似の参照番号が用いられている。説明を目的とする以下の記載では、特許請求されている主題の充分な理解を提供するために、多くの特定の詳細が明らかにされている。しかし、これら特定の詳細がなくても特許請求されている主題が実現されうることは、明白だろう。他の例では、特許請求されている主題の説明を容易にするために、構造およびデバイスがブロック図の形式で示されている。0021コンピューティングの分野の中では、多くのシナリオが、データストアによって保存されたデータベースなどのデータセットに関係している。データストアは、データの集合が保存される記憶コンポーネント例えば、メモリ回路、ハードディスクドライブ、ソリッドステートストレージデバイス、または磁気もしくは光ストレージディスクを備えたコンピューターを含んでおり、様々なユーザーおよび/またはプロセスから受け取られうるデータにアクセスするというリクエストに応えるソフトウェアを実行するように構成することができる。多くのそのようなシナリオでは、保存されているデータは、潜在的には1つのテーブルおよび/もしくは多数のテーブルに数百万や数億ものレコードが保存されているほど大量でありうるし、ならびに/または、レコードやテーブルの間に多数の相互関係があり保存されうるデータのタイプに対する制約条件として機能する高度な制約条件があるなど複雑でありうる。0022いくつかのそのようなシナリオでは、データセットが複数のデータストアに保存されることがある。第1の例として、2以上のデータストアが、データセットの同一のコピーを保存することがありうる。この構成は、可用性を高めるために効果がありうる例えば、あるデータストアが、別のデータストアが使用中またはオフラインであるときに、データに対するリクエストに応答することができる。第2の例として、データセットが、複数のデータストアに分散され、それぞれのデータストアがデータセットの一部を保存していることがありうる。この構成は、効率を高めるために効果的でありうる例えば、特定のレコードなど特定のデータセットに対するリクエストを満足させるという計算上の障壁の分散を、リクエストされているデータを保存しているデータストアだけに限定できる。多くのそのような例では、非常の大きなデータセットを保存し非常に大きなデータセットへのアクセスを提供する非常に多くのデータストアを含むサーバファームなどに、数ダースまたは数百のデータストアが、提供されうる。0023図1は、ユーザー12によって提出されたクエリー14をデータセット20に適用する第1のアーキテクチャを特色とする例示的なシナリオ10を示している。なお、データセット20は、特定の属性24を有するレコード26の集合をそれぞれが保存しているデータテーブル22の集合を含む。この例示的なシナリオ10では、データセット20は、多くのデータストア18にわたって様々な方法で分散されている。第1の例として、データセット20が垂直的に分散される場合がある。すなわち、例えば、データセット20が異なるタイプのレコード26を保存する複数のデータテーブル22を含んでいて、第1のデータストア18が第1のテータテーブル22のレコード26を保存し、他方で、第2のデータストア18が第2のテータテーブル22のレコード26を保存するような場合である。第2の例として、データセット20が水平的に分散される場合もある。すなわち、例えば、特定のデータテーブル22に対して、第1のデータストア18がレコード26の第1の集合を保存し、他方で、第2のデータストア18がレコード26の第2の集合を保存するような場合である。この分散は任意なのであって、すなわち、データテーブル22の特定の属性24に基づきうる例えば、アルファベット順のストリングを特定する属性24に対しては、第1のデータストア18がAからLの文字で始まるレコード26を保存し、他方で、第2のデータストア18がMからZの文字で始まるレコード26を保存しうる。データテーブル22とデータレコード26とを分散する他の方法を工夫することも可能である。すなわち、例えば、特定のデータテーブル22に対して、第1のデータストア18がレコード26に対する属性24の第1の集合を保存し、他方で、第2のデータストア18がレコード26に対する属性24の第2の集合を保存することがありうるし、または、レコード26の可用性とレコード26に関するクエリーの迅速な評価を促進するために、2つのデータストア18が同一のレコード26を冗長的に保存することもありうる。0024多くのこのようなシナリオにおいて、ユーザーまたはプロセスは、適用されるべきクエリーをデータセット20に提出しうる。例えば、構造化照会言語SQLのクエリーは、特定の属性24に対して特定の値を有する1つまたは複数のデータテーブル22からレコード26を選択する、そのようなレコード26の特定の属性24を投影する、複合レコード26を作成するために異なるレコード26の属性24を結合する、およびクエリー結果を提示する前に様々な他の動作を選択されたデータに適用する例えば、レコードのソーティング、グルーピング、およびカウンティングなど、データセット20に適用される1つまたは複数の動作を含みうる。クエリーは、また、データセット20の様々な変更を特定することがあるが、これは、例えば、新たなレコード26を挿入する、1つまたは複数のレコード26の様々な属性24を設定する、レコード26を消去する、意味論的に関係するレコード26の間の関係を確立または終了する、および、1つまたは複数のデータテーブル22を挿入、修正、または消去することによるなどデータセット20のレイアウトを変更する、などである。これらの動作は、また、そのような動作の集合、シーケンス、または条件的階層として、相互に連鎖することができる。構造化照会言語SQLのバリアントは、また、高度なデータ検索例えば、通常の表現と一致するレコードを識別することのサポート、ジャーナリング例えば、後で反転されうる動作の適用記録、およびトランザクション例えば、動作が成功裏に実行されるか、または、何も適用されない2以上の動作などの、より複雑な動作をサポートする。構造化照会言語SQLの更に別のバリアントは、データストア上でのコードの実行をサポートすることもある。例えば、クエリーが、保存されているデータに対しデータストアによって実行されるべき保存されている手順を特定するまたは呼び出すこと、または、局所的な実行のためにデータストアに提供されている解釈可能なスクリプトもしくは実行可能なバイナリなどのエージェントを含むことがありうる。そのようなクエリーを評価し応えるために、データストア18は、クエリーに対し様々なパージング動作を実行するコンポーネントを含むソフトウェアパイプラインなど、クエリー処理エンジンを含みうる。なお、クエリーに対する様々なパージング動作とは、クエリーの中の名前をデータベースの名付けられているオブジェクトと関連付けて、様々なオペレーターによって特定された動作を識別するなど、である。クエリーの言語を辞書的にパージング例えば、クエリー言語のシンタクス規則に従って、クエリーの様々なコンポーネントを識別するし、クエリーのそれぞれのコンポーネントによって特定される動作と動作の論理構造およびシーケンスとを識別し、動作に応えることができるコンポーネントを呼び出すことにより、データストア18は、クエリーの評価と満足とを達成しうる。0025これらのおよび他のシナリオでは、多くのデータストアにわたって分散されているデータセットに複雑なクエリーを適用するというタスクは、実装に関する多くの問題点を生じることがある。効率的で自動化された態様でのそのような適用を可能にするために、多くの手法とアーキテクチャに関するフレームワークとが提案されてきている。0026図1の例示的なシナリオ10は、更に、多くのデータストア18にわたって分散されているデータセット20にクエリー14を適用するのにしばしば用いられる1つの手法を提示している。この例示的なシナリオ10では、ユーザー12は、データセット20に対して適用されうる動作16の集合を含むクエリー14を提出しうる。更に、例えば、特定の動作16の結果を共に用いることができることを特定するためにブール演算子を用いるなど、動作16を相互に連鎖させて論理シーケンスにできる。クエリー14は、データセット20の様々な部分を保存している複数のデータストア18にわたってクエリー14を分散するためにMapReduce技術を適用するように構成されたコンピューターを含むMapReduceサーバ28に、運ばれうる。例えば、MapReduceサーバ28は、クエリー14内部の様々な動作16が、特定の複数のデータストア18によってそれぞれ保存されているデータセット20の様々な部分をターゲットにしていることを識別しうる。例えば、第1の動作16は第1のデータストア18によって保存されているデータをターゲットにしており例えば、第1のデータストア18によって保存されているデータテーブル22および/またはレコード26の集合に適用されたSelect動作、他方で、第2の動作16は第2のデータストア18によって保存されているデータをターゲットにしうる。従って、MapReduceサーバは、クエリー14を、特定のデータストア18によって実行される1つまたは複数の動作をそれぞれが含む様々なクエリー部分30に分解することができる。データストア18は、クエリー部分30を受け取り、そこで特定されている動作16を適用し、MapReduceサーバ28または、更なる処理のための別のデータストア18に運ばれうるクエリー結果32を生成しうる。MapReduceサーバ28は、次に、データストア18によって提供されたクエリー結果32を合成し、クエリー14に応答してユーザー12に提供されうるクエリー結果34を生成する。このようにして、データストア18とMapReduceサーバ28とが協働し、クエリー14に応えることを達成することができる。0027図1の例示的なシナリオ10は、いくつかの長所を有しうる例えば、クエリー14から複数のデータストア18への自動的な配分であり、これにより、クエリー14の評価を加速しうる様々なクエリー部分30の同時的な評価が可能になりうる。しかし、例示的なシナリオ10は、いくつかの短所も有しうる。特に、データの保存およびデータへのアクセスがデバイスの第1の集合で実行され、他方で、複雑な計算プロセスがデバイスの第2の集合で実行される分散型データベースなどの分散されたデータセットに対するアーキテクチャを工夫することが望まれる場合がある。例えばデータセット20のセキュリティを向上させるために、そのような分割が効果的でありうる。例えば、データセット20に適用されるクエリー14が、計算的に高価である例えば、多額の金銭と関係がある、逆説的である例えば、終了しないまたは論理的に評価できない再帰的なクエリー、または悪意がある例えば、データセット20の承認されていない開示または修正を過度にまたは密かに含む場合がある。いくつかのシナリオでは、計算が、データストア18で実装され保存されている手順を呼び出すクエリー14や、モバイルエージェントシナリオなど、コードの実行を含みうるが、その場合には、第三者がデータセット20に適用することが可能なエージェント例えば、解釈可能なスクリプト、または、部分的もしくは全体的にコンパイルされた実行可能ファイルなどを提供することがありうる。従って、注意深くモニタすることができ、データセット20に損害を与えうるように動作していると考えられる場合には、動作を一時的に中断する、オフライン扱いにする、または交換することが可能な特定のコンピューターの集合に複雑な計算を制限することによって、データセット20のセキュリティを向上させることができる。しかし、図1の例示的なシナリオ10は、そのよう分割を含まない。むしろ、データセット20の様々な部分を保存するデータストア18は、そのようなデータに対してもクエリー部分30を実行し、従って、データセット20へのアクセスとデータセット20に対して実行される計算とを分離していない。0028図1の例示的なシナリオ10で起こりうる第2の短所は、データセット20のパフォーマンスに関する。例えば、特定のデータストア18を、一時的または慢性的に、頻繁にアクセスされるクエリー部分30を保存するように構成することによって、データストア18が短い時間周期でデータセット20のその部分に関係する多くのクエリーを受け取り処理することがありうる。しかし、データストア18が更に保存されているデータの複雑な計算処理を実行するように構成されている場合には、複雑な動作を含むクエリー14は、他のクエリー14に応えるためには用いることができない可能性があるデータストア18の計算資源例えば、メモリ、プロセッサーの容量、および帯域幅を消費することがありうる。従って、ただひとつの複雑なクエリー14が、データストア18に保存されている同一のデータに関係する他の複数のクエリー14を評価し、それに応えることに先んじることがありうる。それとは対照的に、このデータに関係する複雑な計算がそのデータの保存から分割されている場合には、複数のクエリー14を並列に処理するように多くのコンピューターを構成することができるので、ある1つのコンピューターの資源を停止させているひとつの複雑なクエリー14が、他のコンピューターによって処理される他の複数のクエリー14を評価し、それに応えることに影響することがなくなる可能性がある。0029図1の例示的なシナリオ10において提示されているアーキテクチャから生じるこれらのおよび他の短所に鑑みると、あるデータセット20におけるデータの保存およびアクセスを、そのデータに適用されうる複雑な計算クエリーから分離することが望ましい場合がある。しかし、データストア18が低レベルのアクセスを提供するだけで、計算ノードがすべての計算を提供するリジッドな分割もまた、非効率的である可能性がある。0030図2は、例示的なシナリオ40を提示しており、ここでは、データストア18が、多数のレコード26例えば、5万個のレコードを含むデータセット20を保存するように構成されている。ユーザー12がクエリー14を提出し、このクエリー14は計算ノード42によって受け取られて全体的に評価されうる。計算ノード42は、例えば、クエリー処理エンジンを含みうる。このクエリー処理エンジンは、クエリー14を辞書的にパージングし、その中で特定されている動作16を識別し、データストア18からのデータのリトリーブを含めて、そのような動作16を実行するために様々なコンポーネントを呼び出すことができる。例えば、クエリー14またはクエリー部分30をデータストア18に送る代わりに、計算ノード42は、単に、データセット20のデータテーブル22を含むレコード26など、レコード26の特定の集合に対するリクエスト44を送りうる。データストア18は、計算ノード42がいくらかの複雑な計算例えば、クエリー14の中で特定されている動作16を適用する可能性があるリクエストされているレコード26を含むリクエスト結果48によって応答し、クエリー結果34をユーザー12に戻すことができる。しかし、この例示的なシナリオ40は、計算ノード42とデータストア18との間で責任をリジッドに分割している点で、非効率性を示す。例えば、クエリー14は、ひとつのレコード26例えば、特定の識別子と関連する従業員のレコード26をリトリーブすることをリクエストすることがありうるが、データストア18によって保存されているデータテーブル22には、そのようなレコード26が多数含まれていることがありうる。従って、データストア18は、そのようなレコード26がただひとつだけクエリー結果34に含まれている場合でも、5万個のレコード26を含むリクエスト結果48を計算ノード42に提供することがありうる。更に、例えば、クエリー14が、それぞれのレコード26に対して一意的な識別子を有するインデクス付きのフィールドに従って、リクエストされたレコード26を識別する場合にはクエリー14の範囲からこのレコード26を識別することは容易でありうるが、データストア18はクエリー14の評価に含まれる計算を実行することはできないのであるから、この比較的単純なフィルタリングは、データストア18によって実行されない。この非効率性は、例えば、リクエスト結果48が容量に制限がありうるネットワーク46を介して計算ノード42に送られる場合に、特に明らかになる可能性がある。ネットワーク46経由で多くのレコード26を送ることは、クエリー14の完了に対して、速度を制限するファクタを課すことになりうるために、小さなクエリー結果34を含む比較的単純なクエリー14に応えることにおいて著しい遅延を生じさせる可能性がある。これらのおよびそれ以外の短所は、データセット20を含むデータストア18と計算ノード42との責任に関するハードな分割から生じうる。0031本明細書に提示されるのは、クエリー14を評価するようにデータセット20を構成する技術である。これらの技術は、例えば、図2の例示的なシナリオ10と図2の例示的なシナリオ40とにおける長所および短所を考慮して、工夫することができる。これらの技術によると、データストア18は、データセット20の1つまたは複数のデータアイテム例えば、データセット20の様々なテーブル22、属性24、および/またはレコード26を保存し、そのデータアイテムとの関係でクエリー14の評価に参加するように構成することができる。図1の例示的なシナリオ10と比較すると、データストア18は、クエリー14を評価するようには構成されていない。例えば、データストア18は、クエリー処理エンジンを含まないことがあり、構造化照会言語SQLクエリーなどのクエリー言語で定式化されたクエリー14を受け入れるまたは評価することを拒否することがある。逆に、データストア18は、リクエスト44に応答してデータストア20の1つまたは複数の部分を提供するように制限されており、これによって、図2の例示的なシナリオ40に図解されているようなリジッドな分割から非効率性が生じる可能性がある。しかし、これらの技術によると、データストア18は、フィルタリングされたデータサブセットを画定する1つまたは複数のフィルタリング基準を含むリクエスト44を受け入れるように構成される。例えば、データストア18は、様々なレコード26を含む1つまたは複数のデータテーブル22を保存しうるが、レコード26に対する少数の属性24がインデックス化されうる。フィルタリングは、識別すること、リトリーブすること、および、インデックス付きの属性24のうちの1つに対して特定の値を有するレコード26を含むデータセット20のデータサブセットを提供することを含みうる。フィルタリング基準をデータセット20に適用することの結果としてフィルタリングされたデータサブセット58における送られるべきデータが著しく減少し、他方でクエリー14の評価に関わる計算資源のわずかな割合だけが消費されるので、データストア18は、リクエスト44に応答してこのフィルタリングを実行するように構成されうる。しかし、データストア18は、より複雑な計算プロセスの実行を行わないように構成されることもある。例えば、データストア18は、クエリー処理エンジンを完全に削除する、クエリー言語で特定されたクエリー14を受け入れることを拒否する、またはインデックス付けされていない属性26を特定するリクエスト44を拒絶する場合がある。このようにして、本明細書において提示されている技術は、図1の例示的なシナリオ10におけるよりも、より大きな効率とセキュリティとを達成しながら、図2の例示的なシナリオ40において提示されている短所を回避することができる。0032図3は、クエリー結果34を生成し提供するために、ユーザー12によって提出されたクエリー14を、様々なデータアイテム52を保存しているデータセット20に適用するという本明細書で提示される技術の適用を特色とする例示的なシナリオ50の図解を提示している。この例示的なシナリオ50では、データセット20へのアクセスは、データストア18を通じて達成することができる。なお、データストア18へのアクセスは、計算ノード42を通じてなされうる。しかし、ユーザー12または計算ノード42がクエリー14をデータストア18に提出する場合には、データストア18はがクエリー14の受け入れを拒絶する、または、クエリー14を評価する能力を有しないことがありうる。あるいは、例えばクエリー14が管理者によって提出されるなどの特定の状況においてのみ、データストア18がクエリー14を受け入れ評価することもありうる。代わりに、ユーザー12または、自動化されたプロセスがクエリー14を計算ノード42に提出し、計算ノード42が、クエリーを評価してクエリー結果34を提供するためにデータストア18との相互作用を試みることがある。特に、計算ノード42は、データストア18からの特定のデータアイテム52のリトリーバルを特定しうる1つまたは複数のフィルタ基準54を含むリクエスト44を識別する例えば、1つまたは複数のフィルタ基準54を満たすデータアイテム52に対するリクエスト44として表現されうるクエリー14の1つまたは複数の動作16を識別するために、クエリー14を検査しうる。データストア18は、データアイテム52を受け取り受け取られたデータアイテム52をストレージコンポーネント例えば、メモリ回路、ハードディスクドライブ、ソリッドステートストレージデバイス、または磁気もしくは光ディスクにデータセット20の一部として保存するように構成されている。更に、データストア18は、1つまたは複数のフィルタ基準54を含むリクエスト44を受け取るように構成されている。リクエスト44を受け取ると、データストア18は、フィルタ基準54を満たすデータアイテム52を識別するためにフィルタリング56を実行して、計算ノード42に戻されるフィルタリングされたデータサブセット58を生成しうる。計算ノード42は、このフィルタリングされたデータサブセット58を受け取り、クエリー14の残りを適用しうる例えば、リクエスト44に表現されていなかったクエリー14の動作16によって特定される複雑な計算を実行する。いくつかのこのようなシナリオにおいて、計算ノード42は、他のフィルタ基準54を特定するデータセット20に第2のまたは更なるリクエスト44を送り、その第2のまたは更なるフィルタリングされたデータサブセット58を計算において用いることがある。結果的に、計算ノード42はクエリー結果34を生成しうるが、このクエリー結果34は、クエリー14に応答してユーザー12または自動化されたプロセスに提示されうる。このようにして、データストア18とオプションであるが計算ノード42との構成により、図1の例示的なシナリオ10および/または図2の例示的なシナリオ40において提示されたよりも、効率的かつ安全にクエリー14に応えることが可能になる。0033図4は、これらの手法の第1の実施形態を提示しており、データセット20をターゲットとするリクエスト44に応える例示的な方法60として、図解されている。例示的な方法60は、例えば、データセット20の一部またはすべてを保存するまたはデータセット20の一部またはすべてへのアクセスを有するように構成されたデータストア18によって、実行されうる。更に、例示的な方法60は、例えば、データストア18のプロセッサーによって実行されると、プロセッサーに本明細書で提示されている手法を実行させる、データストア18のメモリコンポーネント例えば、システムメモリ回路、ハードディスクドライブのプラッタ、ソリッドステートストレージデバイス、または磁気もしくは光ディスクに保存されているソフトウェアの命令セットとして、実装される。例示的な方法60は62で始まり、プロセッサー上で命令を実行する64ことを含む。更に詳しくは、命令は、データアイテム52を受け取ると、データセット20にデータアイテム52を保存する66ように構成されている。命令は、また、少なくとも1つのフィルタ基準54を特定するリクエスト44を受け取ると、少なくとも1つのフィルタ基準を満たすデータセット20のデータアイテム52をリトリーブ70してフィルタリングされたデータサブセット58を生成し、リクエスト44に応答してフィルタリングされたデータサブセット58を送る72ように構成されている。このようにして、例示的な方法60は、データストア18をセキュリティ上のリスクにさらすこと、非効率、およびクエリー14の評価に関係する計算資源の消費することなく、データセット20にアクセスするリクエスト44に応えることを達成し、従って、74で終了する。0034図5は、これらの手法の第2の実施形態を提示しており、データストア18によって保存されているデータセット20にクエリー14を適用する例示的な方法80として、図解されている。例示的な方法80は、例えば、計算ノード42などプロセッサーを有するデバイス上で実行されうる。更に、例示的な方法80は、例えば、プロセッサーによって実行されるとプロセッサーに本明細書において提示されている手法を実行させる、計算ノード42やそれ以外のデバイスのメモリコンポーネントに保存されているソフトウェアの命令セットとして、実装される。例示的な方法80は82で始まり、プロセッサー上で命令を実行する84ことを含む。更に詳しくは、命令は、クエリー14から、少なくとも1つのフィルタ基準54を特定するリクエスト44を生成する86ように構成されている。命令は、また、リクエスト44をデータストア18に送り88、リクエスト44に応答してフィルタリングされたデータサブセット58をデータストア18から受け取ると、クエリー14をフィルタリングされたデータサブセット56に適用する90ように構成されている。このようにして、例示的な方法80は、データストア18をセキュリティ上のリスクにさらすこと、非効率、およびクエリー14の評価に関係する計算資源の消費なく、データセット20へのクエリー14に応えることを達成し、従って、92で終了する。0035更に別の実施形態は、本明細書で提示されている手法を適用するように構成されプロセッサー実行可能な命令を備えたコンピューター可読媒体に関係する。そのようなコンピューター可読媒体には、例えば、デバイスのプロセッサーによって実行されると本明細書に提示されている手法をデバイスに実装させるコンピューター可読な命令セットを符号化する、例えば、スタティックランダムアクセスメモリSRAM、ダイナミックランダムアクセスメモリDRAM、および/または同期式ダイナミックランダムアクセスメモリSDRAM技術などのメモリ半導体、ハードディスクドライブのプラッタ、フラッシュメモリデバイス、またはCD-R、DVD-R、もしくはフロッピーディスク登録商標などの磁気もしくは光ディスクなど、有体物であるデバイスを含むコンピューター可読な記憶媒体が含まれうる。これらのコンピューター可読媒体には、また、デバイスのプロセッサーによって実行されると本明細書に提示されている手法をデバイスに実装させるコンピューター可読な命令セットを符号化する、様々な物理現象例えば、電磁気信号、音波信号、または光信号を通じて、ならびに様々なワイヤードシナリオ例えば、イーサネット登録商標または光ファイバケーブル経由でおよび/またはワイヤレスシナリオ例えば、WiFiなどのワイヤレスローカルエリアネットワークWLAN、ブルートゥース登録商標、またはセルラもしくは無線ネットワークなどのパーソナルエリアネットワークPANにおいて伝播されうる信号など、様々なタイプの通信媒体がコンピューター可読記憶媒体とは区別される技術のクラスとして含まれうる。0036これらの方法で工夫することができる例示的なコンピューター可読媒体が、図6に図解されている。図6では、実装例100は、コンピューター可読データ104がその上で符号化されているコンピューター可読媒体102例えば、CD-R、DVD-R、またはハードディスクドライブのプラッタを含みうる。このコンピューター可読データ104は、また、ここで明らかにされている原理に従って動作するように構成されたコンピューター命令セット106を含む。あるそのような実施形態では、プロセッサー実行可能な命令106は、図4の例示的な方法60など、データセットのうちのデータセットをターゲットにするリクエストに応える方法を実行するように構成されうる。別のそのような実施形態では、プロセッサー実行可能な命令106は、図5の例示的な方法80など、データストアによって保存されているデータセット20にクエリーを適用する方法を実装するように構成されうる。このコンピューター可読媒体のいくつかの実施形態は、このように構成されたプロセッサー実行可能な命令を保存するように構成されている非一時的なコンピューター可読記憶媒体例えば、ハードディスクドライブ、光ディスク、またはフラッシュメモリデバイスを含みうる。本明細書に提示されている手法に従って動作するように構成されている多くのそのようなコンピューター可読媒体は、当業者であれば、工夫して作成することが可能である。0037ここで論じられる手法は、多くの態様におけるバリエーションを伴うように工夫することが可能であり、一部のバリエーションは、これらのおよびそれ以外の手法の他のバリエーションに関する追加的な長所および/または短所を与えうる。更に、いくつかのバリエーションは、組み合わせての実装されることがありうるのであって、いくつかの組み合わせは、シナジーとして協動することを通じて長所を追加しおよび/または短所を縮小するという特色を有しうる。これらのバリエーションは、それらの実施形態に個別的なおよび/またはシナジー的な効果を与えるという結果が得られるように、様々な実施形態に組み入れられることがある例えば、図4の例示的な方法60および図5の例示的な方法80。0038これらの手法の実施形態の間で変動しうる第1の態様は、それらの手法が用いられうるシナリオに関する。第1のバリエーションとして、多くのタイプのデータストア18および/または計算ノード42が、クエリー14とリクエスト44とをデータセット20に適用するのに用いられうる。そのような一例として、データストア18および/または計算ノード42は、特色のあるハードウェアデバイス例えば、異なるマシンまたはコンピューター、特定のハードウェアデバイスの内部で動作する特色のある回路例えば、フィールドプログラマブルゲートアレイFPGA、または、特定のハードウェアデバイスの1つまたは複数のプロセッサー上の1つまたは複数のコンピューティング環境の内部で動作するソフトウェアプロセス例えば、別個のスレッドを含みうる。データストア18および/または計算ノード42は、また、デバイスセットのうちの様々なデバイス上でインクリメンタルに実行されうる分散型プロセスなどの仮想的なプロセスを含みうる。更に、それぞれのデータストア18は、データセット20を含むデータアイテム52を内部的に含みうるし、または、データアイテム52を内部的に保存する他のデータストア18例えば、データ記憶レイヤまたはデバイスとインターフェースするデータアクセスレイヤまたはデバイスへのアクセスを有することもある。第2のバリエーションとして、データベース、ファイルシステム、メディアライブラリ、電子メールのメールボックス、オブジェクトシステムにおけるオブジェクトセット、またはこれらのデータセット20の組み合わせなど、多くのタイプのデータセット20は、本明細書に提示されている手法を用いてアクセスすることができる。同様に、多くのタイプのデータアイテム52は、データセット20に保存されうる。第3のバリエーションとして、本明細書に提示されている手法を用いて推定されるクエリー14および/またはリクエスト44は、多くの方法で特定されうる。例えば、クエリー14は、構造化照会言語SQLのバリアントに従って、言語統合型のクエリー例えば、LINQクエリー、または、データセット20の内部でデータアイテム52の様々な操作を実行するように構成されている解釈可能なスクリプトもしくは実行可能なオブジェクトとして、特定されうる。リクエスト44は、また、インデックス付きの属性24と、フィルタリングされたデータサブセット58に含まれるデータアイテム52のそのような属性24の1つまたは複数の値とを特定するなど、様々な方法で特定されうる。リクエスト44は、フィルタリングされたデータサブセット58に含まれるデータアイテム52を特定する1つまたは複数のフィルタ基準54に限定されるが、クエリー14とリクエスト44とがフォーマットされている言語、シンタクス、および/またはプロトコルは、本明細書に提示されている手法の適用または実装にそれほどには影響しない。0039これらの手法の実施形態の間で変動しうる第2の態様は、データストア18によってデータアイテム52をデータセット20に保存することに関係する。第1のバリエーションとして、データストア18は少なくとも1つのインデックスを含みうるが、この少なくとも1つのインデックスは1つまたは複数のフィルタ基準54例えば、その属性に対する1つまたは複数の値を含むレコード26がフィルタリングされたデータサブセット58に含まれうるような、特定の属性24と対応しうる。データストア18は、データアイテム52を受け取ると、フィルタ基準54に従って例えば、フィルタ基準54によってターゲットとなりうる1つまたは複数の属性24に対するデータアイテム52の値に従ってインデックスの中のデータアイテムにインデックスを付けるように構成されうる。データストア18は、次に、フィルタ基準54と対応するインデックスを用いることにより、リクエスト44のフィルタ基準54を満たすデータアイテム52を識別することによって、リクエスト44に応えることができる。リクエスト44のフィルタ基準54によってターゲットになる蓋然性が高いインデックスのためのデータアイテム52の属性24を選択して、データアイテム52のそれ以外の属性24にインデックスを付さないのが、効果的であろう例えば、データアイテム52が変化するにつれて、インデックスのメンテナンスが必要であり、フィルタ基準54として頻繁に含まれることの蓋然性が高くない属性24にインデックスを付けるために、そのようなメンテナンスに関する計算上の負荷を負うことは問題でありうる。例えば、様々なユーザーによって様々な時点で実行されるイベントをトラッキングするように構成されているデータベースでは、それぞれのデータアイテム52によって表されるイベントを特定するイベントインデックス、それぞれのデータアイテム52によって表されるイベントの時間を特定する時間インデックス、およびそれぞれのデータアイテム52によって表されるイベントと関連する少なくとも1つのユーザーを特定するユーザーインデックスを含むインデックスセットのためにインデックスを生成しメンテナンスをするようにデータストア18を構成することが望ましい場合がある。しかし、リクエストに含まれるデジタル資源のユニフォームリソースアイデンティファイヤURI、特定のイベントに関するテキストでのコメントが様々なユーザーや管理者によって入力されうるコメントフィールド、またはイベントに含まれる大きなデータセットに関するブロブフィールド例えば、イベントを示すシステムログまたはキャプチャされた画像など、このデータセット20の他の属性24のためのインデックスを生成しメンテナンスをすることが望まれない場合がある。0040この第2の態様の更なるバリエーションとして、インデックスは、様々な方法で、特定のフィルタ基準54に対して1つまたは複数の特定のフィルタ基準と関連するデータアイテム52を識別しうる。そのような一例として、インデックスは、そのインデックスに対応するフィルタ基準54のフィルタ基準値に対して、フィルタ基準54に対するフィルタ基準値を有するデータアイテムを識別するデータアイテムセットを特定しうる。例えば、インデックスは、フィルタ基準54のそれぞれのフィルタ基準値に対して、そのフィルタ基準値と関連するデータアイテム52への参照の集合を保存することができる。更に、インデックスに保存されているデータアイテムセットは、様々な方法でアクセスが可能である。例えば、インデックスは、データアイテムセットへのインクリメンタルな書き込みを許容する例えば、フィルタ基準に対するフィルタ基準値を有するデータアイテムのデータアイテムセットにデータアイテム52を追加することによって、新たなデータアイテム52にインデックスを付けるが、データアイテムセットのアトミックな読み出しのみを許容する例えば、特定のフィルタ基準54に対する特定のフィルタ基準値を特定しているリクエスト44に対しては、インデックスは、そのようなデータアイテム52への参照の集合すべてを含むデータアイテムセットの全体を読み出し提示することができる。更なるバリエーションとして、データストア18は、それぞれのデータアイテム52を受け取ると、そのデータアイテム52をデータアイテムバッファに保存しうる。その際に、データアイテムバッファがデータアイテムバッファのサイズ閾値例えば、データアイテムバッファの容量を超えると、データストア18はデータアイテムを対応するデータアイテムセットに追加して、データアイテムバッファを空にする。0041図7には、インデックス112に従ってインデックスが付けられた1つまたは複数のデータアイテムセット118におけるデータアイテム52のインデックス付けを特色とする例示的なシナリオ110の図解が示されている。この例示的なシナリオ110では、データストア18は、様々なデータアイテム52例えば、報告されたイベントの集合を受け取り、そのデータアイテム52をデータセット20に格納しうる。特に、データストア18はインデックス112を生成しうるが、インデックス112は、1つまたは複数のデータアイテムセット118の1つまたは複数のデータアイテム52への参照116を含むインデックスエントリ114の集合を含み、それぞれが、フィルタ基準54例えば、イベントが生じた日付の月および年に対する異なるフィルタ基準値に対応する。データアイテム52を受け取ると、データストア18は、そのデータアイテム52の1つまたは複数のフィルタ基準値を識別し、そのフィルタ基準値に対応するインデックス112のインデックスエントリ114に、保存されているデータアイテム52への参照を保存しうる。データストア18は、次に、データアイテム52をレコード26のリストに加えることによりデータアイテム52をデータセット20に保存しうる。ユーザー12が例えば、1つまたは複数のフィルタ基準54を特定するリクエスト44をクエリー14から生成するように構成されている計算ノード42にクエリー14を提出することによって、直接的または間接的にリクエスト44をデータストア18に提出すると、データストア18は、フィルタ基準値と関連するデータアイテムセット118をリトリーブすることによってリクエスト44に応えることができ、特に、フィルタ基準値と対応するデータアイテムセット118のデータアイテム52を識別するインデックス112のインデックスエントリ114を識別することにより、そうすることがありうる。データストア18は、次に、データアイテムセット118のデータアイテム52をリトリーブするためにインデックスエントリ114に保存されている参照116を用い、そのデータアイテム52をフィルタリングされたデータサブセット58として送りうる。このようにして、データアイテム52が共にどのような態様で保存されている場合でも、データストア18は、リクエスト44のフィルタ基準54に対応するインデックス112を用いることにより、リクエスト44に効率的に応えることができる。例えば、インデックス112のインデックスエントリ114は、フィルタ基準54の第1のフィルタ基準値に対して、第2のフィルタ基準54のそれぞれの第2のフィルタ基準値に対応するデータアイテム分割への参照を保存しうる。データアイテム52は、この2段階のインデックス付加技術を用いて保存および/またはリトリーブされうる。例えば、データアイテム52を保存することは、インデックス112を用いてデータアイテム52に対する第1のフィルタ基準54の第1のフィルタ基準値と関連するインデックスエントリ114を識別することと、インデックスエントリ114によって参照されるデータアイテム分割を調べてデータアイテム52に対する第2のフィルタ基準の第2のフィルタ基準値と関連するデータアイテム分割を識別することと、データアイテム52をデータアイテム分割に保存することとに関係しうる。逆に、第1のフィルタ基準54の特定の第1のフィルタ基準値と第2のフィルタ基準54の特定の第2のフィルタ基準値とを有するデータアイテム52をリトリーブすることは、インデックス112を用いて第1のフィルタ基準値と関連するインデックスエントリ114を識別することと、インデックスエントリ114において参照されるデータアイテム分割を調べて第2のフィルタ基準値と関連するデータアイテム分割を識別することと、リクエスト44に応答してデータアイテム分割をリトリーブして送ることとに関係しうる。0042第2の態様の更なるバリエーションとして、データストア18は、特定のフィルタ基準54を満たすデータアイテム52例えば、データアイテム52がアクセスされるメモリ参照もしくはURI、または、データテーブル22のキーフィールドのキー値などデータアイテム52の特有の識別子など、それへの参照をそれぞれが含む分割の集合として、インデックスを構成することがある。例えば、データストア18は、特定のフィルタ基準54の特定のフィルタ基準値を有するデータアイテム52を保存するように配分されているメモリの小さな部分として、様々な分割を生成しうる。データアイテム52を受け取ると、データストア18は、対応する分割にそのデータアイテム52を保存しうる。そして、特定のフィルタ基準54のフィルタ基準値を特定するリクエスト44を受け取ると、データストア18は、フィルタ基準に対するフィルタ基準値を有するデータアイテム52を保存しているデータアイテム分割をリトリーブし、データアイテム分割をフィルタリングされたデータサブセット58として送ることがある。更に別のバリエーションとして、2以上のインデックスが、2以上のフィルタ基準54に従ってデータアイテムをグループ分けするのに用いられることもある。0043図8には、データアイテム52をそれぞれのデータアイテム分割122へ分割することを特色とする例示的なシナリオ120の図解が示されている。この例示的なシナリオ120では、データストア18は、様々なデータアイテム52例えば、報告されたイベントの集合を受け取り、そのデータアイテム52をデータセット20に格納することができる。データストア18はインデックス112図示せずを再び生成しうるが、インデックス112は、1つまたは複数のデータアイテムセット118の1つまたは複数のデータアイテム52への参照116を含むインデックスエントリ114の集合を含み、それぞれが、フィルタ基準54例えば、イベントが生じた日付の月および年に対する異なるフィルタ基準値に対応する。しかし、図7の例示的なシナリオ110とは対照的に、この例示的なシナリオ120では、データアイテム52は、フィルタ基準値に従って分割されて保存される。データアイテム52を受け取ると、データストア18は、そのデータアイテム52の1つまたは複数のフィルタ基準値を識別し、そのフィルタ基準値と関連するデータアイテム分割122を識別することができる。データストア18は、次に、フィルタ基準値に対応するデータアイテム分割122に、データアイテム52を保存することができる。ユーザー12が例えば、1つまたは複数のフィルタ基準54を特定するリクエスト44をクエリー14から生成するように構成されている計算ノード42にクエリー14を提出することによって、直接的または間接的にリクエスト44をデータストア18に提出すると、データストア18は、フィルタ基準値と関連するデータアイテムセット118をリトリーブすることによってリクエスト44に応えることができ、特に、フィルタ基準値と関連するデータアイテム分割122を識別することにより、そうすることができる。データストア18は、次に、データアイテム分割122の全体をリトリーブし、データアイテム分割122の全体をユーザー12に送りうる。他のフィルタ基準54例えば、特定のフィルタ基準54に対する2以上のフィルタ基準値、または、2以上の異なるフィルタ基準54のそれぞれに対して異なるように特定されたフィルタ基準値に応答して、追加的なデータアイテム分割122がリトリーブされ、送られることがある。このようにして、データストア18は、リクエスト44において特定された1つまたは複数のフィルタ基準54に対応するデータアイテムインデックス122を用いることにより、フィルタ基準54を満足するデータアイテム52を、効率的に識別かつ提供することができる。当業者であれば、本明細書に提示されている手法に従ってデータセット20のデータアイテム52を保存する多くの方法を工夫することができるはずである。0044これらの手法の実施形態の間で変動しうる第3の態様は、リクエスト44のフィルタ基準54を満足するデータアイテム52をリトリーブするための、データストア18および/または計算ノード42の構成に関係しうる。第1のバリエーションとして、リクエスト44は、多くのタイプのフィルタ基準54を含みうる。特に、リクエスト44は、第2のフィルタリングされたデータサブセット58を含むデータアイテム52と関係しうる第1のフィルタリングされたデータサブセット58を特定し、データストア18は、第2のフィルタリングされたデータサブセット58を生成する間、第1のフィルタリングされたデータサブセット58を用いることがある。例えば、クエリー14は、別のフィルタリングされたデータサブセット58を特定するリクエスト44に関係しうる例えば、ユーザーIDが10,22,53,67の中にあるユーザーからユーザー名を選択するというクエリー14において、リクエスト44は、フィルタリングされたデータサブセット58として与えられている数字のユーザーIDの集合に従ってフィルタリングされる。更なるバリエーションとして、クエリー14が、第1のフィルタリングされたデータサブセット58を特定する第1のリクエスト44に関係し、これは、第2のフィルタリングされたデータサブセット58を特定する第2のリクエスト44において参照されうる。例えば、ユーザーIDがイベントタイプが12であるイベントからユーザーを選択するの中にあるユーザーからユーザー名を選択するというクエリー14では、第1のフィルタリングされたデータサブセット58は、例えば、SET_1=event.type=12という第1のリクエスト44を用いてイベントデータテーブルから生成され、第1のフィルタリングされたデータサブセット58は、例えば、user.idinSET_1である第2のリクエスト44によって参照され、結果的に第2のフィルタリングされたデータサブセット58を生じる。このようにして、リクエスト44は、同じクエリー14を評価する間に提供され処理されるそれよりも前のリクエスト44を含む、別のリクエスト44によって生成されたフィルタリングされたデータサブセット58を参照することがある。0045この第3の態様の第2のバリエーションとして、少なくとも1つのフィルタ基準54を含むリクエスト44を与えられるときに、データストア18は、例えば、図7の例示的なシナリオ110と図8の例示的なシナリオ120とにあるように、データセット118を識別するインデックス112、および/または、データアイテム分割122を用いることによりリクエスト44のそれぞれのフィルタ基準54を満たすコンテンツアイテム52をデータセット20からリトリーブするように構成されうる。あるいは、インデックスを用いるのではなく、データストア18が、データセット20のデータアイテム52のすべてをリトリーブして、少なくとも1つのフィルタ基準を満たすデータアイテム52だけを例えば、計算ノード42、または、リクエスト44をデータストア18に提出したユーザー12に送ることがありうる。前者の例では、データアイテム52のフィルタは、受け取るときのデータアイテム52のインデックス付けの間に達成される。しかし、後者の例では、データアイテム52のフィルタリングは、データアイテム52を送る間に達成される。例えば、リクエスト44を満たすために、データアイテム52のすべてをリアルタイムでフィルタリングするのは困難な可能性がある。しかし、何らかの手法を用いることにより、あるいは、インデックス112および/または分割122の利用と組み合わせることにより、データアイテム52の、リアルタイムでのフィルタリングを加速することは可能であろう。0046図9は、データアイテム52のリアルタイムでのフィルタリングを実装するためのある手法を特色とする例示的なシナリオ130の図解を与えている。この例示的なシナリオ130では、データストア18は、ユーザー12から、少なくとも1つのフィルタ基準54を特定するリクエスト44を受け取り、リクエスト44のフィルタ基準54を満たすデータアイテム52だけを含むフィルタリングされたデータサブセット58を提供することによって、リクエスト44を満たすことを試みるのである。しかし、この例示的なシナリオ130では、データストア18は、データセット20からデータアイテム52のすべてをリトリーブし、次に、フィルタ基準54を満たすデータアイテム52だけを識別して提供するために、データアイテムプロセッサーの集合132をデータアイテム52の集合全体に適用する。データアイテムプロセッサーの集合132は、例えば、それぞれがある状態136と少なくとも1つのフィルタリング条件例えば、フィルタ基準54が満たされているかどうかを識別するための任意の特定のデータアイテム52の論理的評価とを有するデータアイテムプロセッサーの集合を含みうる。データアイテムプロセッサー134は、データアイテム52を受け取ると、データアイテムプロセッサー134の状態136を更新するように個別に構成され、データアイテムプロセッサー134の状態136が少なくとも1つのフィルタリング条件を満たすと、データアイテムプロセッサー134は、例えば、フィルタリングされたデータサブセット58にデータアイテム52を含めることによって、または、更なる評価のためにデータアイテム52を異なるデータアイテムプロセッサー134に送ることによって送られるデータアイテム52を承認しうる。これらの複数のデータアイテムプロセッサー134は、従って、例えばステートマシンを用いてデータアイテム52を評価するリアルタイム処理システムとして、相互に接続されており、相互に協動しうる。従って、データストア18は、データアイテム52がデータセット20からリトリーブされると、データアイテムプロセッサーの集合132を呼び出すことができ、また、データアイテムプロセッサーの集合132によって送ることが承認されたデータアイテム52だけを送ることになりうる。このようにして、データストア18は、分割122のインデックス112を生成し、維持し、または用いることを必要とせずにリクエスト44のフィルタ基準54を満たすデータアイテム52を識別して搬送するために、データセット20のすべてのデータアイテム52のアドホックでリアルタイムの評価を達成することができる。0047この第3の態様の第3のバリエーションとして、データストア18は、リクエスト44に応答してフィルタリングされたデータサブセット58を提供する前にそして、オプションであるが、リクエスト44のフィルタ基準54に一致するデータアイテム18をリトリーブする前に、フィルタリングされたデータサブセット58のサイズを推定することができる。例えば、データストア18によって受け取られるリクエスト44は、リクエスト44に応答してリトリーブし送るために著しい量のコンピューティング資源を必要とする比較的大きなフィルタリングされたデータサブセット58に関係する可能性がある。従って、リクエスト元例えば、特定のユーザー12、または、自動化されたプロセスから受け取られたリクエスト44に対し、ある実施形態では、フィルタリングされたデータサブセット58のフィルタリングされたデータサブセットとしてのサイズ例えば、フィルタリングされたデータサブセット58に含まれうるレコード26またはデータアイテム52の推定される総数をまず推定して、このサイズのフィルタリングされたデータサブセット58のリトリーブがリクエスト元にとって受け入れ可能であることを確認しようと試みられることになる。従って、ある実施形態を、リクエスト44に応答してフィルタリングされたデータサブセット58を送る前に、フィルタリングされたデータサブセット58のフィルタリングされたデータサブセットのサイズを推定して、そのフィルタリングされたデータサブセットのサイズをリクエスト元に送るように構成され、リクエスト元からフィルタリングされたデータサブセットに関する承認を受け取ったときにのみ、フィルタリングされたデータサブセット58のリトリーブし送ることに進むことができる。逆に、計算ノード42は、少なくとも1つのフィルタ基準54を特定するリクエスト44を送ったあとであり、リクエスト44に応答してフィルタリングされたデータサブセット58を受け取る前に、フィルタリングされたデータサブセット58のフィルタリングされたデータサブセットのサイズの推定をデータストア18から受け取り、そのフィルタリングされたデータサブセットのサイズを、例えば、フィルタリングされたデータサブセットのサイズをユーザー12に提供することによって、または、フィルタリングされたデータサブセットのサイズを、データストア18および/またはネットワーク46のコンピューティング資源の受け入れ可能な使用を定義する受け入れ可能なフィルタリングされたデータサブセットのサイズ閾値と比較することによって確認するように、構成されうる。推定されたフィルタリングされたデータサブセットのサイズが受け入れ可能である場合には、計算ノード42は、フィルタリングされたデータサブセットの承認を生成してデータストア18に送り、後で、フィルタリングされたデータサブセット58を受け取ることができる。当業者であれば、データストア18および/または計算ノード42を、本明細書に提示されている手法に従ってデータセット20からのデータアイテム52をリトリーブするように構成する多くの方法を工夫することができるであろう。0048以上では主題について構造的な特徴および/または方法上の行為に特有な言語で説明してきたが、特許請求の範囲において定義される主題は上述した特定の特徴または行為に必ずしも限定されないことを理解すべきである。むしろ、上述した特定の特徴および行為は、特許請求の範囲を実装する例示的な形式として開示されている。0049この出願では、コンポーネント、モジュール、システム、インターフェースなどの用語は、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア、または実行中のソフトウェアであるコンピューターに関係するエンティティを意味することが一般的に意図されている。例えば、コンポーネントとは、これらに限定されることはないが、プロセッサー上で動作しているプロセス、プロセッサー、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピューターでありうる。実例としては、コントローラ上で動作しているアプリケーションとコントローラとは、共にコンポーネントでありうる。1つまたは複数のコンポーネントがプロセスおよび/または実行可能ファイルのスレッドの中に存在しうる。また、あるコンポーネントが、1つのコンピューター上にローカルに存在する、および/または、2以上のコンピューターの間で分散されていることがありうる。0050更に、特許請求されている主題は、開示されている主題を実装するようにコンピューターを制御するソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせを作る標準的なプログラミングおよび/もしくは工学的手法を用いて、方法、装置、または製品として実装することができる。ここで用いられている製品という用語は、任意のコンピューター可読デバイス、搬送波、または媒体からアクセス可能なコンピュータープログラムに及ぶことが意図されている。もちろん、当業者であれば、特許請求されている主題の範囲または精神から逸脱することなく、この構成に多くの修正を加えることができることを認識するであろう。0051図10と以下の議論とでは、ここで明らかにされ提供されている発明の1つまたは複数の実施形態を実装するのに適したコンピューティング環境に関する簡潔で一般的な説明を提供する。図10の動作環境は、適切な動作環境の単なる一例であり、動作環境の使用または機能の範囲に関していかなる限定を示唆することを意図しない。例示的なコンピューティングデバイスには、これらに限定されないが、パーソナルコンピューター、サーバコンピューター、ハンドヘルドまたはラップトップデバイス、携帯電話、パーソナルデジタルアシスタントPDA、メディアプレーヤーなどのモバイルデバイス、マルチプロセッサーシステム、家電製品、ミニコンピューター、メインフレームコンピューター、上述したシステムもしくはデバイスの任意のものを含む分散型コンピューティング環境などが含まれうる。0052要求されているのではないが、実施形態は、1つまたは複数のコンピューティングデバイスによって実行されているコンピューター可読命令という一般的な文脈で説明されている。コンピューター可読命令は、コンピューター可読媒体後述を介して分散されうる。コンピューター可読命令は、特定のタスクを実行するまたは特定の抽象的なデータタイプを実装する関数、オブジェクト、アプリケーションプログラミングインターフェースAPI、データ構造などのプログラムモジュールとして、実装可能である。典型的には、コンピューター可読命令の機能は、必要に応じて、様々な環境において組み合わせるまたは分散させることが可能である。0053図10には、本明細書において提供されている1つまたは複数の実施形態を実装するように構成されたコンピューティングデバイス142を備えたシステム140の例が、図解されている。ある構成では、コンピューティングデバイス142は、少なくとも1つの処理ユニット146とメモリ148とを含む。コンピューティングデバイスの正確な構成とタイプとに応じて、メモリ148は、揮発性例えばRAMなど、不揮発性例えばROM、フラッシュメモリなど、または両者の組み合わせでありうる。この構成は、図10では、破線144によって図解されている。0054他の実施形態では、デバイス142は、追加的な特徴および/または機能を含みうる。例えば、デバイス142は、これらに限定されないが、磁気ストレージや光ストレージなどを含む追加的なストレージを更に含みうる。このような追加的なストレージは、図10では、ストレージ150によって図解されている。ある実施形態では、本明細書に提供されている1つまたは複数の実施形態を実装するコンピューター可読命令は、ストレージ150に存在しうる。ストレージ150は、また、オペレーティングシステムやアプリケーションプログラムなどを実装するそれ以外のコンピューター可読命令を保存しうる。コンピューター可読命令は、例えば、処理ユニット146によって実行されるために、メモリ148にロードされうる。0055本明細書で用いられているコンピューター可読媒体という用語は、コンピューター記憶媒体を含む。コンピューター記憶媒体は、コンピューター可読命令またはそれ以外のデータなどの情報を保存するために任意の方法または技術において実装された、揮発性および不揮発性、取り外し可能および取り外し不可能な媒体を含む。メモリ148とストレージ150は、コンピューター記憶媒体の例である。コンピューター記憶媒体には、これらに限定されることはないが、RAM、ROM、EEPROM、フラッシュメモリもしくはそれ以外のメモリ技術、CD-ROM、デジタルバーサタイルディスクDVDもしくはそれ以外の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくはそれ以外の磁気記憶デバイス、または希望する情報を保存するのに用いることができデバイス142によってアクセス可能な任意のそれ以外の媒体が含まれる。このようなコンピューター記憶媒体の任意のものが、デバイス142の一部でありうる。0056デバイス142は、また、デバイス142が他のデバイスと通信することを可能にする通信接続156を含みうる。通信接続156は、これらの限定されることはないが、モデム、ネットワークインターフェースカードNIC、統合ネットワークインターフェース、無線周波数送信機/受信機、赤外線ポート、USB接続、またはコンピューティングデバイス142を他のコンピューティングデバイスに接続するためのそれ以外のインターフェースを含みうる。通信接続156は、ワイアード接続またはワイヤレス接続を含みうる。通信接続156は、通信媒体を送信および/または受信しうる。0057コンピューター可読媒体という用語は、通信媒体を含みうる。通信媒体は、典型的には、搬送波やそれ以外の輸送機構など変調されたデータ信号におけるコンピューター可読命令またはそれ以外のデータを具体化しており、任意の情報搬送媒体を含む。変調されたデータ信号という用語は、情報を信号において符号化するようにその特性の1つまたは複数が設定または変更された信号を含みうる。0058デバイス142は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、赤外線カメラ、ビデオ入力デバイス、および/または任意のそれ以外のデバイスなどの入力デバイスを含みうる。ディスプレイ、スピーカ、プリンタ、および/または任意のそれ以外の出力デバイスなどの出力デバイス152も、デバイス142に含まれうる。入力装置154と出力装置152とは、ワイアード接続、ワイヤレス接続、またはそれらの任意の組み合わせを介してデバイス142に接続されうる。ある実施形態では、他のコンピューティングデバイスからの入力装置または出力装置が、コンピューティングデバイス142のための1つもしくは複数の入力装置154または1つもしくは複数の出力装置152として用いられることもある。0059コンピューティングデバイス142のコンポーネントは、バスなどの様々な相互接続によって接続することができる。このような相互接続には、PCIエクスプレスなどのペリフェラルコンポーネントインターコネクトPCI、ユニバーサルシリアルバスUSB、ファイヤワイヤIEEE1394、光バス構造などが含まれうる。別の実施形態では、コンピューティングデバイス142のコンポーネントは、ネットワークで相互接続されうる。例えば、メモリ148は、ネットワークによって相互接続された異なる物理的位置に配置された複数の物理メモリ装置で構成される場合がある。0060当業者であれば、コンピューター可読命令を保存するのに用いられる記憶装置がネットワーク経由で分散されることがあることを理解するはずである。例えば、ネットワーク158を経由してアクセス可能なコンピューティングデバイス160は、本明細書に提供されている1つまたは複数の実施形態を実装するコンピューター可読命令を保存しうる。コンピューティングデバイス142は、コンピューティングデバイス160にアクセスし、実行するためにコンピューター可読命令の一部またはすべてをダウンロードしうる。あるいは、コンピューティングデバイス142は、必要に応じてコンピューター可読命令のいくつかの部分をダウンロードすることもあるし、または、いくつかの命令がコンピューティングデバイス142で実行され、またいくつかの命令がコンピューティングデバイス160で実行されることもありうる。0061本明細書では、実施形態に関する様々な動作が提供されている。ある実施形態では、説明されている動作の1つまたは複数が、1つまたは複数のコンピューター可読媒体上に保存されているコンピューター可読命令を構成しており、コンピューティングデバイスによって実行されると、コンピューティングデバイスに説明されている動作を実行させる。これらの動作のいくつかまたはすべてが説明されている順序は、これらの動作が必ずしも順序に依存することを意味するものと解釈されるべきではない。ここでの説明から利益を得た当業者であれば、別の順序を想到することができよう。更に、ここに提供されているそれぞれの実施形態にすべての動作が必ずしも存在するのではないことを、理解すべきである。0062更に、例示的exemplaryという用語は、ここでは、例、場合、または説明として機能することを意味するように用いられている。ここで例示的と説明されている態様または設計は、必ずしも、他の態様または設計よりも優れているものとして解釈されるべきではない。むしろ、例示的という用語の使用は、具体的な態様において概念を提示することを意図するためのものである。この出願において用いられているまたは、もしくはorという用語は、排他的なorではなく、非排他的なorを意味することを意図している。すなわち、特に断らない限り、または、文脈から明白でない限り、XはAまたはBを用いるとは、自然で非排他的な順列のうちの任意のものを意味することを意図している。つまり、XはAを用いる、XはBを用いる、またはXはAとBの両方を用いるならば、それらのどの場合でも、XはAまたはBを用いるが成立する。更に、この出願および特許請求の範囲において用いられているaおよびanという冠詞は、単数形を意味するものと特に断らない限りまたは文脈から明白でない限り、1つまたは複数を意味するものと一般的に解釈されうる。0063また、ここでの開示は1つまたは複数の実装例との関係で示され説明されてきたが、当業者であれば、この明細書と添付の図面とを読んで理解したことに基づいて、均等な変更と修正とを想到することができるはずである。この開示は、そのような修正と変更とをすべて含み、特許請求の範囲によってのみ限定される。特に、上述したコンポーネント例えば、要素、資源などによって実行される様々な機能に関しては、これらのコンポーネントを説明するのに用いられた用語は、たとえ開示のうちのここで説明されている例示的な実装例においてその機能を実行する開示されている構造と構造的に均等でない場合でも、特に断らない限り、説明されているコンポーネントの特定の機能を実行する任意のコンポーネント例えば、機能的に均等なものに対応することが意図されている。更に、開示の特定の特徴が複数の実装例のうちの1つに関してのみ開示されている場合がありうるが、そのような特徴は、希望に応じて、また、任意の与えられたまたは特定の応用例のために効果があるならば、他の実装例の1つまたは複数の他の特徴と組み合わせることが可能である。更に、含むincludes、有しているhaving、有するhas、備えているwithという用語、またはそれらのバリアントがこの詳細な説明または特許請求の範囲のいずれかにおいて用いられている限り、これらの用語は、含んでいるcomprisingという用語と類似するように、非排他的であることが意図されている。"