JP5990192B2 - データストアにおけるクエリーデータのフィルタリング - Google Patents

データストアにおけるクエリーデータのフィルタリング Download PDF

Info

Publication number
JP5990192B2
JP5990192B2 JP2013547600A JP2013547600A JP5990192B2 JP 5990192 B2 JP5990192 B2 JP 5990192B2 JP 2013547600 A JP2013547600 A JP 2013547600A JP 2013547600 A JP2013547600 A JP 2013547600A JP 5990192 B2 JP5990192 B2 JP 5990192B2
Authority
JP
Japan
Prior art keywords
data
filtered
subset
request
filter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013547600A
Other languages
English (en)
Other versions
JP2014502762A (ja
JP2014502762A5 (ja
Inventor
ナイス,ニール
シットン,ダニエル
クレーマー,ドロール
フェルドマン,マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014502762A publication Critical patent/JP2014502762A/ja
Publication of JP2014502762A5 publication Critical patent/JP2014502762A5/ja
Application granted granted Critical
Publication of JP5990192B2 publication Critical patent/JP5990192B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データストアにおけるクエリーデータのフィルタリングに関する。
[0001]コンピューティングの分野では、多くのシナリオが、1つまたは複数のデータストアに保存されているデータセットに適用されるクエリーに関係する。例えば、ユーザーまたはデータ駆動プロセスは、構造化照会言語(SQL)などのクエリー言語で特定されたクエリーをデータストアにリクエストすることによって、データの特定のサブセットをリクエストすることがある。データストアは、クエリーを受け取り、それをクエリー処理エンジン(例えば、クエリーの中の名前をデータベースの名付けられたオブジェクトと関連付け、様々なオペレーターによって特定される動作を識別するなど、様々なパージング動作をクエリーに対して実行するコンポーネントを含むソフトウェアパイプラインなど)を用いて処理し、パージングされたクエリーによって特定された動作を保存されているデータに適用し、そして、クエリーによって特定されたクエリー結果を戻しうる。クエリー結果は、クエリーによって特定されたレコードの集合、そのようなレコードの属性の集合、またはデータから計算された結果(例えば、あるクエリー基準と一致するレコードのカウント)を含みうる。この結果は、また、テーブルの作成もしくは修正、または、テーブルにおけるレコードの挿入、更新、もしくは削除など、保存されているデータとの関係で行われる作用の報告を含みうる。
[0002]こうした多くのシナリオにおいて、データベースは、複数であり潜在的に多数のデータストアにわたって分散されていることがある。例えば、分散型データベースでは、保存されているデータの異なる複数の部分が、サーバファームにおける1つまたは複数のデータストアに保存されている場合がある。データセットに適用されるクエリーが受け取られると、クエリーを受け取るマシンは、どのデータストアが、クエリーのターゲットになっているデータを含む蓋然性が高いのかを識別し、そのクエリーをそれらのデータストアのうちの1つまたは複数に送りうる。そのようなデータストアは、それぞれが、クエリーを、保存されているデータに適用し、クエリー結果を送り返すことができる。クエリーが2つ以上のデータストアによって適用される場合には、集約されたクエリー結果を生成するために、クエリー結果が組み合わされることがある。いくつかのシナリオでは、1つのマシンが、関係のあるデータストアにクエリーを分散させてクエリー結果をまとめるプロセスを調整することがある。そのような分散と集約とを効率的に達成するために、MapReduceフレームワークなどの手法が工夫されてきた。
[0003]そのようなデータストアによって用いられるデータエンジンは、相当に高度で、データベーストランザクション、ジャーナリング、保存されている手順の実行、およびエージェントの受け入れと実行など、多くの複雑な計算プロセスをそれらのデータストアに適用することができる場合がある。クエリー言語自体が、ネスティング、ストリングおよび他のデータタイプの計算集約的な類似性の比較、ならびにデータベースの構造への修正を含めて、データストアによって扱われるクエリーの複雑性を高めることもありうる。更に、データストアのクエリー処理エンジンによって適用される論理プロセスが、複雑なクエリーに効率的に応えることができ、クエリー最適化などの手法を用いることによりクエリーを改善することさえありうる。これらのおよびそれ以外のプロセスの結果として、データストアによるクエリーの評価は、大量の計算資源を消費する場合がある。
[0004]この概要は、以下の詳細な説明において詳述される概念の選択された一部を簡略化された形式で紹介するために、提供されている。この概要は、特許請求される主題のキーとなるファクタまたは本質的な特徴を識別することは意図されていないし、特許請求される主題の範囲を限定するために用いられることも意図されていない。
[0005]高度なトランザクションを処理する能力を有する高度なクエリー処理エンジンをデータストアに設けることは効果的ではありうるが、いくつかの問題点も生じうる。特に、ローカルに保存されているデータに対して複雑なクエリーを実行するようにデータストアを構成するのは、問題があるまたは非効率的である。例えば、データストアが特に大きな需要を有するデータを偶然に保存しているが、クエリー処理エンジンは、他のクエリー(その中のいくつかは非常に単純なものでありうる)が未処理のままである間に、保存されているデータに適用された複雑なクエリーの適用により負荷を負う場合がありうる。複雑なクエリーは、このように、能力とクエリー評価のスループットとを低下させるボトルネックを生じさせる可能性がある。
[0006]第2の例として、データストアも高度なクエリーを実行するような分散型データベースアーキテクチャは、何らかのセキュリティ原則を含むことがある。その理由は、データを保存しているマシンは、そのデータに対して潜在的に危険なまたは悪意のある動作を実行することが許されるからである。更に、クエリー処理エンジンは、保存されているデータに対する任意のコードの実行(例えば、実行可能なモジュールが第三者から受け取られ、保存されているデータに対して実行されるようなエージェントシナリオ)が許可されていることさえもある。保存されているデータと妥協したマシンとの間でデータアイテムを分割するなど、(マシンの第1の集合での)データの保存と(マシンの第2の集合に配分された)データに対する任意のコードを含む複雑な計算の実行とを分離するセキュリティ原則が、いくつかのセキュリティ上の効果を奏する可能性がある。
[0007]これらのおよび他の効果は、データストア(例えば、分散型データベースのデータを保存するように構成されているサーバファームのマシン)からデータの複雑な処理を取り除くことから生じうる。しかし、例えば、純粋にデータ記憶装置としてのみ機能するデータストアであって、リクエストされたデータオブジェクト(例えば、あるテーブルの全体)を提供するだけの能力を有するまたは特定された変更を行うような、処理能力のないデータストアを構成することには、問題点もありうる。例えば、他のマシンが、特定のフィルタ基準を満たすテーブルからのレコードのサブセットなど、データのサブセットのみをデータストアにリクエストすることがありうる。しかし、そのリクエストが多くのレコードを含むテーブルの中の少数のレコードだけを特定する場合に、テーブル全体を送ることは、特にネットワーク接続された環境においてマシンとデータストアとの間に帯域幅の制限があることを仮定すると、著しく非効率である。
[0008]本明細書に提示されるのは、そこに保存されているデータを求めるリクエストに応えるように、データストアを構成する手法である。これらの手法によると、データストアは、著しい計算上の費用を必要とし、リクエストに応える際の性能を低下させ、および/または保存されているデータに対する任意のコードに実行を許容するクエリー処理エンジンを用いない。しかし、データストアは、更に、そこに保存されているデータのサブセットだけを提供することができる。データストアは、1つまたは複数のフィルタ基準を特定するリクエストを受け入れることによってこの結果を達成する。なお、ここで、それぞれのリクエストによって、要求されるデータの量を特定の態様で減量している。例えば、リクエストに、特定のフィルタ基準値を特定するフィルタ基準を含むようにすることができ、ある特定のフィルタ基準に対するフィルタ基準値を有しているレコードだけを要求しうる(例えば、イベントを表すデータを保存するように構成されているデータストアでは、フィルタ基準は、イベントのタイプまたはイベントが生じたときを識別しうる)。従って、このリクエストは様々なフィルタ基準だけを特定し、データストアは、そのフィルタ基準を満たすデータを提供することができるが、複雑な動作を特定する可能性があるクエリーを処理するようには構成されない。従って、この構成により、分散型データベースの分割を、データを保存して提供するように構成されているデータノードの集合と、(任意のコードを含む)複雑なクエリーを適用することができる計算ノードの集合の中に設定することを可能にする。
[0009]以上のおよび関連する目的を達成するために、以下の説明と添付の図面とにより、いくつかの説明的な態様と実装例とを明らかにしている。これらは、1つまたは複数の態様を用いることができる様々な方法のうちのいくつかを示している。本開示のそれ以外の態様、効果、および新規な特徴は、以下の詳細な説明を添付の図面と共に考察することによって、明らかになるはずである。
[0010]複数のデータストアにわたり分散されているデータセットにクエリーを適用することを特色とする例示的なシナリオの図である。 [0011]データストアによって保存されているデータセットからのデータを求めるリクエストの適用を特色とする例示的なシナリオの図である。 [0012]本明細書に提示されている手法によるデータストアによって保存されているデータセットからのデータに対する少なくとも1つのフィルタ基準を特色とするリクエストの適用を特色とする例示的なシナリオの図である。 [0013]データセットのうちのデータセットをターゲットとするリクエストに応える例示的な方法を図解する流れ図である。 [0014]データセットのうちのデータセットをターゲットとするリクエストに応える例示的な方法を図解する流れ図である。 [0015]本明細書に提示されている発明(provision)の1つまたは複数を具体化するように構成されているプロセッサー実行可能な命令を含む例示的なコンピューター可読媒体の図である。 [0016]データセットによって保存されているデータアイテムのインデックス付けを特色とする例示的なシナリオの図である。 [0017]データセットによって保存されているデータアイテムの分割を特色とする例示的なシナリオの図である。 [0018]少なくとも1つのフィルタ基準を特色とするリクエストに応答してデータアイテムをフィルタリングするように構成されているデータアイテムプロセッサーを含むデータアイテムプロセッサーセットを特色とする例示的なシナリオの図である。 [0019]本明細書に提示されている発明の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.id in SET_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)」という用語と類似するように、非排他的であることが意図されている。

Claims (20)

  1. プロセッサーを有するコンピューターにアクセス可能なデータストアに格納されるデータセットをターゲットとするクエリーを実行する方法であって、
    前記プロセッサー上で命令を実行するステップを含み、前記命令は、データセットをターゲットとするクエリーを受け取ると、
    前記クエリーを、前記データセットをフィルタリングされたデータサブセットへとフィルタリングするために少なくとも1つのフィルタ基準を特定するフィルター部分と、前記フィルタリングされたデータサブセットに対して実行されるべき少なくとも1つの非フィルタリング動作を特定する処理部分とに分割し、
    前記クエリーの前記フィルター部分から、前記少なくとも1つのフィルタ基準を満たす前記データセットの第1の部分を含み前記少なくとも1つのフィルタ基準を満たさない前記データセットの第2の部分を除くフィルタリングされたデータサブセットを取り出すためのリクエストを生成し、前記リクエストは前記データセットの前記第1の部分を前記データセットの前記第2の部分と区別する少なくとも1つのフィルタ基準を特定し、
    前記リクエストにより前記データストアを呼び出し、
    前記リクエストに応答して前記データストアから前記フィルタリングされたデータサブセットを受け取ると、前記クエリーの前記処理部分を前記フィルタリングされたデータサブセットに適用する
    ように構成されている、方法。
  2. 前記データストアが、少なくとも1つのフィルタ基準のための少なくとも1つのインデックスを含み、
    前記命令が、前記データセットとともに格納されるべきデータアイテムを受け取ると、少なくとも1つのフィルタ基準に従い少なくとも1つのインデックスで前記データアイテムをインデックス付けをするように構成されており、
    前記リクエストにより前記データストアを呼び出すことが、それぞれのフィルタ基準に対し、フィルタ基準を満たすデータアイテムを識別するために、前記フィルタ基準に対応するインデックスを用いて前記フィルタリングされたデータサブセットを取り出すことを含む、請求項1に記載の方法。
  3. インデックスセットから選択される少なくとも1つのインデックスは、
    それぞれのデータアイテムによって表されるイベントを特定するイベントインデックスと、
    それぞれのデータアイテムによって表されるイベントの時間を特定する時間インデックスと、
    それぞれのデータアイテムによって表されるイベントに関連付けられる少なくとも1つのユーザーを特定するユーザーインデックスと
    を含む、請求項2に記載の方法。
  4. 前記インデックスが、前記インデックスに対応するフィルタ基準のフィルタ基準値に対し、前記フィルタ基準に対する前記フィルタ基準値を有するデータアイテムを識別するデータアイテムセットを特定する、請求項2に記載の方法。
  5. 前記少なくとも1つのインデックスでデータアイテムのインデックス付けをすることは、それぞれのフィルタ基準に対し、前記フィルタ基準に対する前記フィルタ基準値を有するデータアイテムのデータアイテムセットに、前記データアイテムを追加することを含み、
    前記リクエストにより前記データストアを呼び出すことは、前記フィルタ基準に対して前記フィルタ基準値を有するデータアイテムの前記データアイテムセットを取り出すために前記リクエストにより前記データストアを呼び出すことを含む、請求項4に記載の方法。
  6. 前記データストアは、受け取られたデータアイテムを格納するように構成されたデータアイテムバッファを有し、
    前記データアイテムを格納することは、前記データアイテムバッファに格納されている前記データアイテムがデータアイテムバッファのサイズ閾値を超えるときに、
    前記データアイテムバッファのそれぞれのデータアイテムを、前記データアイテムセットに追加すること、及び
    前記データアイテムバッファを空にすることを含む、請求項5に記載の方法。
  7. 前記データストアは、フィルタ基準に対するフィルタ基準値を有するデータアイテムを格納するように構成される少なくとも1つのデータアイテム分割を含み、
    前記リクエストにより前記データストアを呼び出すことは、それぞれのフィルタ基準に対する少なくとも1つのフィルタ基準値に対し、前記フィルタ基準に対する前記フィルタ基準値を有するデータアイテムを格納する前記データアイテム分割を有する前記データストアを呼び出すことを含む、請求項4に記載の方法。
  8. 前記命令が、データアイテムを受け取ると、
    前記インデックスに対応する少なくとも1つのフィルタ基準に対する少なくとも1つのフィルタ基準値を識別し、
    前記フィルタ基準に対する前記フィルタ基準値を有するデータアイテムを格納しているデータアイテム分割を識別し、
    前記データアイテムを前記データアイテム分割に格納する、
    ように構成されている、請求項7に記載の方法。
  9. 前記データストアが、
    第1のフィルタ基準に対する第1のフィルタ基準値と第2のフィルタ基準に対する第2のフィルタ基準値とを有するデータアイテムを格納するように構成された少なくとも1つのデータアイテム分割と、
    前記第1のフィルタ基準に対する第1のフィルタ基準値を有するデータアイテムに対して、前記第2のフィルタ基準に対するそれぞれの第2のフィルタ基準値も有するデータアイテムを格納する前記それぞれのデータアイテム分割を識別するように構成された少なくとも1つのインデックスと、
    を含む、請求項7に記載の方法。
  10. データアイテムを格納することは、
    前記第1のフィルタ基準に対して前記データアイテムの第1のフィルタ基準値を識別することと、
    前記インデックスを用いて、前記第1のフィルタ基準に対する前記第1のフィルタ基準値を有するデータアイテムを格納するデータアイテム分割を識別することと、
    前記第2のフィルタ基準に対して前記データアイテムの第2のフィルタ基準値を識別することと、
    前記データアイテム分割の中から、前記第2のフィルタ基準に対する前記第2のフィルタ基準値を有するデータアイテムを格納するデータアイテム分割を識別することと、
    前記データアイテムを前記データアイテム分割に格納することと
    を含む請求項9に記載の方法。
  11. 前記リクエストにより前記データストアを呼び出すことは、
    前記リクエスト、第1のフィルタ基準に対する第1のフィルタ基準値及び第2のフィルタ基準に対する第2のフィルタ基準値により前記データストアを呼び出すことであって、
    前記インデックスを用いて、前記第1のフィルタ基準に対する前記第1のフィルタ基準値を有するデータアイテムを格納するデータアイテム分割を識別すること、
    前記データアイテム分割の中から、前記第2のフィルタ基準に対する前記第2のフィルタ基準値を有するデータアイテムを格納するデータアイテム分割を識別すること、及び
    前記少なくとも1つのデータアイテムを取り出すために前記リクエストにより前記データアイテム分割を呼び出すこと
    を含む、前記データストアを呼び出すことをさらに含む、請求項9に記載の方法。
  12. 前記リクエストが、前記フィルタリングされたデータサブセットを生成するのに用いられる第1のフィルタリングされたデータサブセットを特定し、
    前記リクエストにより前記データストアを呼び出すことが、前記リクエスト及び前記第1のフィルタリングされたデータサブセットにより前記データストアを呼び出して、前記少なくとも1つのフィルタ基準を満たす前記データセットの前記データアイテムを取り出すことと、前記第1のフィルタリングされたデータサブセットを用いてフィルタリングされたデータサブセットを生成することとを含む、請求項1に記載の方法。
  13. 前記第1のフィルタリングされたデータサブセットは、少なくとも1つの第1のフィルタ基準を特定する、前のリクエストに応答して、前記データストアによって生成される、請求項12に記載の方法。
  14. 前記命令は、前記フィルタリングされたデータサブセットを取り出すために前記リクエストを呼び出す前に、
    前記フィルタリングされたデータサブセットのフィルタリングされたデータサブセットのサイズを推定し、
    前記フィルタリングされたサブセットデータのサイズを前記リクエスト元に送り、
    前記リクエスト元からフィルタリングされたデータサブセットの承認を受け取ると、前記リクエストに応答して、前記フィルタリングされたデータサブセットを送る
    ように構成されている、請求項1に記載の方法。
  15. プロセッサーを有するデバイスによって実行される、リモートデータストアによって格納されたデータセットにクエリーを適用する方法であって、
    前記プロセッサー上で命令を実行するステップを含み、前記命令は、
    前記クエリーを、前記データセットをフィルタリングされたデータサブセットへとフィルタリングするために少なくとも1つのフィルタ基準を特定するフィルター部分と、前記フィルタリングされたデータサブセットに対して実行されるべき少なくとも1つの非フィルタリング動作を特定する処理部分とに分割し、
    前記少なくとも1つのフィルタ基準を満たす前記データセットの第1の部分を含み前記少なくとも1つのフィルタ基準を満たさない前記データセットの第2の部分を除くフィルタリングされたデータサブセットをローカルストレージデバイスから取り出し、リクエストは、前記データセットの前記第1の部分を前記データセットの前記第2の部分と区別する少なくとも1つのフィルタ基準を特定し、
    前記フィルタリングされたデータサブセットを前記ローカルストレージデバイスから受け取ると、前記クエリーの前記処理部分を前記フィルタリングされたデータサブセットに適用する、
    ように構成されている、方法。
  16. 前記クエリーが、
    第1のフィルタリングされたデータサブセットを生成する第1のフィルタ基準と、
    前記第1のフィルタリングされたデータサブセットを用いて、第2のフィルタリングされたデータサブセットを生成する第2のフィルタ基準と、
    を含んでおり、
    前記リクエストを生成することが、前記第1のフィルタ基準に従ってフィルタリングされた前記第1のデータサブセットを特定する第1のリクエストを生成することを含み、
    前記リクエストを前記リモートデータストアに送ることが、前記第1のリクエストを前記リモートデータストアに送ることを含み、
    前記クエリーを適用することが、
    前記第1のリクエストに応答して、前記第1のフィルタリングされたデータサブセットを前記リモートデータストアから受け取ると、
    前記第2のフィルタ基準に従い前記第1のフィルタリングされたデータサブセットを用いてフィルタリングされた、第2のデータサブセットを特定する第2のリクエストを生成することと、
    前記第2のリクエストを前記リモートデータストアに送ることと、
    前記第2のリクエストに応答して、前記第2のフィルタリングされたデータサブセットを前記リモートデータストアから受け取ると、前記第2のフィルタリングされたデータサブセットに前記クエリーの前記処理部分を適用することと、
    を含む、請求項15に記載の方法。
  17. 前記命令が、前記フィルタリングされたデータサブセットを前記リモートデータストアから受け取る前に、
    前記フィルタリングされたデータサブセットのフィルタリングされたデータサブセットのサイズを前記リモートデータストアから受け取り、
    フィルタリングされたデータサブセットの承認を生成するために、前記フィルタリングされたデータサブセットのサイズを確認し、
    フィルタリングされたデータサブセットの承認を生成すると、前記フィルタリングされたデータサブセットの承認を前記リモートデータストアに送る、
    ように構成されている、請求項15に記載の方法。
  18. データストアへのアクセスを有するコンピューターのプロセッサー上で実行されると、
    データセットをターゲットとするクエリーを受け取ると、
    前記クエリーを、前記データセットをフィルタリングされたデータサブセットへとフィルタリングするために少なくとも1つのフィルタ基準を特定するフィルター部分と、前記フィルタリングされたデータサブセットに対して実行されるべき少なくとも1つの非フィルタリング動作を特定する処理部分とに分割することと、
    前記クエリーの前記フィルター部分から、前記少なくとも1つのフィルタ基準を満たす前記データセットの第1の部分を含み前記少なくとも1つのフィルタ基準を満たさない前記データセットの第2の部分を除くフィルタリングされたデータサブセットを取り出すためのリクエストを生成することであって、前記リクエストは前記データセットの前記第1の部分を前記データセットの前記第2の部分と区別する少なくとも1つのフィルタ基準を特定する、リクエストを生成することと、
    前記リクエストにより前記データストアを呼び出すことと、
    前記データストアから前記フィルタリングされたデータサブセットを受け取ると、前記クエリーの前記処理部分を前記フィルタリングされたデータサブセットに適用することと
    によって、前記データストアによって格納されるデータセットにクエリーを適用する命令を格納するメモリーデバイス。
  19. 前記クエリーが、
    第1のフィルタリングされたデータサブセットを生成する第1のフィルタ基準と、
    前記第1のフィルタリングされたデータサブセットを用いて、第2のフィルタリングされたデータサブセットを生成する第2のフィルタ基準と、
    を含んでおり、
    前記リクエストを生成することが、前記第1のフィルタ基準に従ってフィルタリングされた前記第1のデータサブセットを特定する第1のリクエストを生成することを含み、
    前記リクエストを前記データストアに送ることが、前記第1のリクエストを前記データストアに送ることを含み、
    前記クエリーを適用することが、
    前記第1のリクエストに応答して、前記第1のフィルタリングされたデータサブセットを前記データストアから受け取ると、
    前記第2のフィルタ基準に従い前記第1のフィルタリングされたデータサブセットを用いてフィルタリングされた、第2のデータサブセットを特定する第2のリクエストを生成することと、
    前記第2のリクエストを前記データストアに送ることと、
    前記第2のリクエストに応答して、前記第2のフィルタリングされたデータサブセットを前記データストアから受け取ると、前記第2のフィルタリングされたデータサブセットに前記クエリーの前記処理部分を適用することと、
    を含む、請求項18に記載のメモリーデバイス。
  20. 前記命令が、前記フィルタリングされたデータサブセットを前記データストアから受け取る前に、
    前記フィルタリングされたデータサブセットのフィルタリングされたデータサブセットのサイズを前記データストアから受け取り、
    フィルタリングされたデータサブセットの承認を生成するために、前記フィルタリングされたデータサブセットのサイズを確認し、
    フィルタリングされたデータサブセットの承認を生成すると、前記フィルタリングされたデータサブセットの承認を前記データストアに送る、
    ようにさらに構成されている、請求項18に記載のメモリーデバイス。
JP2013547600A 2010-12-28 2011-12-24 データストアにおけるクエリーデータのフィルタリング Active JP5990192B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/979,467 2010-12-28
US12/979,467 US10311105B2 (en) 2010-12-28 2010-12-28 Filtering queried data on data stores
PCT/US2011/067307 WO2012092224A2 (en) 2010-12-28 2011-12-24 Filtering queried data on data stores

Publications (3)

Publication Number Publication Date
JP2014502762A JP2014502762A (ja) 2014-02-03
JP2014502762A5 JP2014502762A5 (ja) 2015-01-08
JP5990192B2 true JP5990192B2 (ja) 2016-09-07

Family

ID=46318296

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013547600A Active JP5990192B2 (ja) 2010-12-28 2011-12-24 データストアにおけるクエリーデータのフィルタリング

Country Status (7)

Country Link
US (2) US10311105B2 (ja)
EP (1) EP2659403A4 (ja)
JP (1) JP5990192B2 (ja)
CN (1) CN102682052B (ja)
CA (1) CA2822900C (ja)
HK (1) HK1174111A1 (ja)
WO (1) WO2012092224A2 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8918388B1 (en) * 2010-02-26 2014-12-23 Turn Inc. Custom data warehouse on top of mapreduce
US20130091266A1 (en) 2011-10-05 2013-04-11 Ajit Bhave System for organizing and fast searching of massive amounts of data
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US9563658B2 (en) 2012-08-20 2017-02-07 Oracle International Corporation Hardware implementation of the aggregation/group by operation: hash-table method
US9600522B2 (en) * 2012-08-20 2017-03-21 Oracle International Corporation Hardware implementation of the aggregation/group by operation: filter method
US9727606B2 (en) 2012-08-20 2017-08-08 Oracle International Corporation Hardware implementation of the filter/project operations
CN103034678A (zh) * 2012-11-01 2013-04-10 沈阳建筑大学 一种基于Voronoi图的反k最近邻查询方法
US9152671B2 (en) * 2012-12-17 2015-10-06 General Electric Company System for storage, querying, and analysis of time series data
CN103257987A (zh) * 2012-12-30 2013-08-21 北京讯鸟软件有限公司 基于规则的分布式日志服务实现方法
US8694503B1 (en) * 2013-07-31 2014-04-08 Linkedin Corporation Real-time indexing of data for analytics
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9378232B2 (en) 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
WO2015070379A1 (en) * 2013-11-12 2015-05-21 Pivotal Software, Inc. Dynamic stream computing topology
KR102103543B1 (ko) 2013-11-28 2020-05-29 삼성전자 주식회사 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템
US9886310B2 (en) * 2014-02-10 2018-02-06 International Business Machines Corporation Dynamic resource allocation in MapReduce
US10007692B2 (en) * 2014-03-27 2018-06-26 Microsoft Technology Licensing, Llc Partition filtering using smart index in memory
US10409835B2 (en) * 2014-11-28 2019-09-10 Microsoft Technology Licensing, Llc Efficient data manipulation support
US9892164B2 (en) 2015-01-30 2018-02-13 International Business Machines Corporation Reducing a large amount of data to a size available for interactive analysis
US10073885B2 (en) 2015-05-29 2018-09-11 Oracle International Corporation Optimizer statistics and cost model for in-memory tables
US10067954B2 (en) 2015-07-22 2018-09-04 Oracle International Corporation Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations
US10666574B2 (en) 2015-09-28 2020-05-26 Amazon Technologies, Inc. Distributed stream-based database triggers
US10565209B2 (en) * 2015-12-01 2020-02-18 International Business Machines Corporation Injecting outlier values
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US11188542B2 (en) * 2016-05-03 2021-11-30 Salesforce.Com, Inc. Conditional processing based on data-driven filtering of records
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US11157690B2 (en) 2017-02-22 2021-10-26 Microsoft Technology Licensing, Llc Techniques for asynchronous execution of computationally expensive local spreadsheet tasks
US10725799B2 (en) * 2017-02-22 2020-07-28 Microsoft Technology Licensing, Llc Big data pipeline management within spreadsheet applications
CN107451204B (zh) * 2017-07-10 2021-01-05 创新先进技术有限公司 一种数据查询方法、装置及设备
CN108920602B (zh) * 2018-06-28 2021-12-14 北京京东尚科信息技术有限公司 用于输出信息的方法和装置
US10997177B1 (en) * 2018-07-27 2021-05-04 Workday, Inc. Distributed real-time partitioned MapReduce for a data fabric
CN111163056B (zh) * 2019-12-06 2021-08-31 西安电子科技大学 一种针对MapReduce计算的数据保密方法及系统

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5421008A (en) * 1991-11-08 1995-05-30 International Business Machines Corporation System for interactive graphical construction of a data base query and storing of the query object links as an object
US5560007A (en) * 1993-06-30 1996-09-24 Borland International, Inc. B-tree key-range bit map index optimization of database queries
US5584024A (en) * 1994-03-24 1996-12-10 Software Ag Interactive database query system and method for prohibiting the selection of semantically incorrect query parameters
US5787411A (en) * 1996-03-20 1998-07-28 Microsoft Corporation Method and apparatus for database filter generation by display selection
US6243703B1 (en) * 1997-10-14 2001-06-05 International Business Machines Corporation Method of accessing and displaying subsystem parameters including graphical plan table data
US6493700B2 (en) 1997-10-14 2002-12-10 International Business Machines Corporation System and method for specifying custom qualifiers for explain tables
JP2004509382A (ja) * 2000-05-26 2004-03-25 コンピュータ アソシエイツ シンク,インコーポレイテッド データベースクエリーを自動的に発生するシステム及び方法
US6925608B1 (en) * 2000-07-05 2005-08-02 Kendyl A. Roman Graphical user interface for building Boolean queries and viewing search results
US6785668B1 (en) * 2000-11-28 2004-08-31 Sas Institute Inc. System and method for data flow analysis of complex data filters
US20020161846A1 (en) 2001-01-29 2002-10-31 Ulrich Thomas R. Data path controller architecture
US6931390B1 (en) * 2001-02-27 2005-08-16 Oracle International Corporation Method and mechanism for database partitioning
US6778977B1 (en) * 2001-04-19 2004-08-17 Microsoft Corporation Method and system for creating a database table index using multiple processors
US6789071B1 (en) * 2001-04-20 2004-09-07 Microsoft Corporation Method for efficient query execution using dynamic queries in database environments
US20020194166A1 (en) * 2001-05-01 2002-12-19 Fowler Abraham Michael Mechanism to sift through search results using keywords from the results
US7315894B2 (en) 2001-07-17 2008-01-01 Mcafee, Inc. Network data retrieval and filter systems and methods
US20050003878A1 (en) 2001-08-01 2005-01-06 Kim Updike Methods and apparatus for fairly placing players in bet positions
US7024414B2 (en) * 2001-08-06 2006-04-04 Sensage, Inc. Storage of row-column data
US8868544B2 (en) * 2002-04-26 2014-10-21 Oracle International Corporation Using relational structures to create and support a cube within a relational database system
US7136850B2 (en) * 2002-12-20 2006-11-14 International Business Machines Corporation Self tuning database retrieval optimization using regression functions
US7584264B2 (en) 2003-08-19 2009-09-01 Google Inc. Data storage and retrieval systems and related methods of storing and retrieving data
US20070078826A1 (en) * 2005-10-03 2007-04-05 Tolga Bozkaya Analytic enhancements to model clause in structured query language (SQL)
US20050131893A1 (en) * 2003-12-15 2005-06-16 Sap Aktiengesellschaft Database early parallelism method and system
US20050192942A1 (en) * 2004-02-27 2005-09-01 Stefan Biedenstein Accelerated query refinement by instant estimation of results
US7299220B2 (en) * 2004-03-31 2007-11-20 Microsoft Corporation Constructing database object workload summaries
US7650331B1 (en) 2004-06-18 2010-01-19 Google Inc. System and method for efficient large-scale data processing
US7756881B2 (en) * 2006-03-09 2010-07-13 Microsoft Corporation Partitioning of data mining training set
JP4696011B2 (ja) * 2006-03-24 2011-06-08 パナソニック株式会社 グラビア塗工装置
US7461050B2 (en) * 2006-03-30 2008-12-02 International Business Machines Corporation Methods of cost estimation using partially applied predicates
US20070250470A1 (en) * 2006-04-24 2007-10-25 Microsoft Corporation Parallelization of language-integrated collection operations
US8555288B2 (en) * 2006-05-17 2013-10-08 Teradata Us, Inc. Managing database utilities to improve throughput and concurrency
US7624118B2 (en) * 2006-07-26 2009-11-24 Microsoft Corporation Data processing over very large databases
US7962442B2 (en) * 2006-08-31 2011-06-14 International Business Machines Corporation Managing execution of a query against selected data partitions of a partitioned database
US8700579B2 (en) * 2006-09-18 2014-04-15 Infobright Inc. Method and system for data compression in a relational database
GB0625641D0 (en) 2006-12-21 2007-01-31 Symbian Software Ltd Dynamic filtering for partially trusted servers
JP2008181243A (ja) * 2007-01-23 2008-08-07 Hitachi Ltd ストレージシステムのキャッシュパーティション領域の設定を制御するデータベース管理システム
US8156107B2 (en) * 2007-02-02 2012-04-10 Teradata Us, Inc. System and method for join-partitioning for local computability of query over shared-nothing clusters
US20080201303A1 (en) 2007-02-20 2008-08-21 International Business Machines Corporation Method and system for a wizard based complex filter with realtime feedback
US8108399B2 (en) 2007-05-18 2012-01-31 Microsoft Corporation Filtering of multi attribute data via on-demand indexing
US20090006347A1 (en) * 2007-06-29 2009-01-01 Lucent Technologies Inc. Method and apparatus for conditional search operators
US7895151B2 (en) * 2008-06-23 2011-02-22 Teradata Us, Inc. Fast bulk loading and incremental loading of data into a database
US8250088B2 (en) * 2007-10-05 2012-08-21 Imation Corp. Methods for controlling remote archiving systems
US7856434B2 (en) 2007-11-12 2010-12-21 Endeca Technologies, Inc. System and method for filtering rules for manipulating search results in a hierarchical search and navigation system
US8386508B2 (en) * 2008-04-28 2013-02-26 Infosys Technologies Limited System and method for parallel query evaluation
JP4207096B2 (ja) 2008-06-12 2009-01-14 株式会社日立製作所 データベース管理方法
US8364751B2 (en) * 2008-06-25 2013-01-29 Microsoft Corporation Automated client/server operation partitioning
US8041714B2 (en) 2008-09-15 2011-10-18 Palantir Technologies, Inc. Filter chains with associated views for exploring large data sets
US8145806B2 (en) * 2008-09-19 2012-03-27 Oracle International Corporation Storage-side storage request management
EP2169563A1 (en) * 2008-09-26 2010-03-31 Siemens Aktiengesellschaft Method for performing a database query in a relational database
US8478775B2 (en) 2008-10-05 2013-07-02 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US7917463B2 (en) * 2008-10-10 2011-03-29 Business.Com, Inc. System and method for data warehousing and analytics on a distributed file system
US20100121869A1 (en) * 2008-11-07 2010-05-13 Yann Le Biannic Normalizing a filter condition of a database query
US10831724B2 (en) * 2008-12-19 2020-11-10 Bmc Software, Inc. Method of reconciling resources in the metadata hierarchy
US8533181B2 (en) * 2009-04-29 2013-09-10 Oracle International Corporation Partition pruning via query rewrite
US8103638B2 (en) * 2009-05-07 2012-01-24 Microsoft Corporation Partitioning of contended synchronization objects
CN101963965B (zh) * 2009-07-23 2013-03-20 阿里巴巴集团控股有限公司 基于搜索引擎的文档索引方法、数据查询方法及服务器
US9135299B2 (en) * 2009-09-01 2015-09-15 Teradata Us, Inc. System, method, and computer-readable medium for automatic index creation to improve the performance of frequently executed queries in a database system
US8874600B2 (en) * 2010-01-30 2014-10-28 International Business Machines Corporation System and method for building a cloud aware massive data analytics solution background
JP5593792B2 (ja) * 2010-03-31 2014-09-24 富士通株式会社 Raid装置、記憶制御方法、および、記憶制御プログラム
US8606756B2 (en) * 2010-04-09 2013-12-10 Ca, Inc. Distributed system having a shared central database
US8386471B2 (en) * 2010-05-27 2013-02-26 Salesforce.Com, Inc. Optimizing queries in a multi-tenant database system environment
US20120011144A1 (en) * 2010-07-12 2012-01-12 Frederik Transier Aggregation in parallel computation environments with shared memory
US8392399B2 (en) * 2010-09-16 2013-03-05 Microsoft Corporation Query processing algorithm for vertically partitioned federated database systems
US8413145B2 (en) * 2010-09-30 2013-04-02 Avaya Inc. Method and apparatus for efficient memory replication for high availability (HA) protection of a virtual machine (VM)
US8818989B2 (en) * 2010-11-30 2014-08-26 International Business Machines Corporation Memory usage query governor

Also Published As

Publication number Publication date
US20120166447A1 (en) 2012-06-28
CN102682052A (zh) 2012-09-19
JP2014502762A (ja) 2014-02-03
WO2012092224A3 (en) 2012-10-11
CN102682052B (zh) 2015-08-19
CA2822900A1 (en) 2012-07-05
EP2659403A2 (en) 2013-11-06
US20190266195A1 (en) 2019-08-29
US10311105B2 (en) 2019-06-04
CA2822900C (en) 2020-01-07
WO2012092224A2 (en) 2012-07-05
EP2659403A4 (en) 2017-06-07
HK1174111A1 (en) 2013-05-31

Similar Documents

Publication Publication Date Title
JP5990192B2 (ja) データストアにおけるクエリーデータのフィルタリング
CN109997126B (zh) 事件驱动提取、变换、加载(etl)处理
JP7273045B2 (ja) Sqlクエリプランを最適化するための次元コンテキスト伝搬技術
US11487771B2 (en) Per-node custom code engine for distributed query processing
US8510284B2 (en) Large-scale event evaluation using realtime processors
CN113711197B (zh) 查询计划中自适应聚合操作符和属性的放置
US10318882B2 (en) Optimized training of linear machine learning models
Khalifa et al. The six pillars for building big data analytics ecosystems
US9508048B2 (en) System and method for integrated real time reporting and analytics across networked applications
US9659108B2 (en) Pluggable architecture for embedding analytics in clustered in-memory databases
US8260761B2 (en) Detecting performance degrading design and algorithm issues in database applications
US20210373914A1 (en) Batch to stream processing in a feature management platform
CN109753573B (zh) 一种基于图数据库构建预设模型的处理方法及装置
US9424083B2 (en) Managing metadata for a distributed processing system with manager agents and worker agents
Hu et al. Towards big linked data: a large-scale, distributed semantic data storage
Mondal et al. Casqd: continuous detection of activity-based subgraph pattern queries on dynamic graphs
US11636124B1 (en) Integrating query optimization with machine learning model prediction
US11360821B1 (en) Systems and methods for resource utilization control
US20220044144A1 (en) Real time model cascades and derived feature hierarchy
US11657069B1 (en) Dynamic compilation of machine learning models based on hardware configurations
US11775864B2 (en) Feature management platform
US20140172955A1 (en) Distributed mobile enterprise application platform
US11663216B2 (en) Delta database data provisioning
US20230030208A1 (en) Bulk data extract hybrid job processing
US20240111831A1 (en) Multi-tenant solver execution service

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141110

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141110

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150521

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160715

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160812

R150 Certificate of patent or registration of utility model

Ref document number: 5990192

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250