(57)【要約】  データ処理を容易にするシステムが、ＳＱＬ照会を受信する受信機構成要素を含む。区分化構成要素が、ＳＱＬ照会を複数のタスクに区分化し、タスクを処理のために複数のクラスターノードに提供する。システムは、検索エンジン、広告提供システム等と共に使用する等の解析処理のために超大量のデータ（例えば数テラバイト）を迅速に準備することを可能にする。
2009545060.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を容易にするシステムであって、
ＳＱＬ照会を受信する受信機構成要素（１０２）と、
前記ＳＱＬ照会を複数のタスクに区分化し、前記タスクを処理のために複数のクラスターノードに提供する区分化構成要素（１０４）と
を備えるシステム。
【請求項２】
前記クラスターから受信した処理済みデータを集約する集約構成要素を更に備える、請求項１に記載のシステム。
【請求項３】
前記システムへのデータのロードが失敗した場合に、既知の良好な状態へのデータのロールバックを開始するロールバック構成要素を更に備える、請求項１に記載のシステム。
【請求項４】
前記クラスターノードのサブセットが、ウェブサーバーからウェブログを読み取って特定のクラスターノードに前記ウェブログのサブセットを提供するリーダーノードとして働き、前記特定のクラスターノードが、ライターノードとして働いて前記データを照会のための適切な形式にフォーマットする、請求項１に記載のシステム。
【請求項５】
前記複数のクラスターノードを監視し、前記複数のタスクが実行されていることを保証する監視構成要素を更に備える、請求項１に記載のシステム。
【請求項６】
前記複数のクラスターノードが、ノードのサブクラスターの階層構成を含む、請求項１に記載のシステム。
【請求項７】
前記区分化構成要素と前記クラスターノードの間で不信頼通信が行われる、請求項１に記載のシステム。
【請求項８】
前記クラスターノードが、低信頼性メッセージングによって互いに通信する、請求項１に記載のシステム。
【請求項９】
クラスターノードが、受信したタスクを複数のサブタスクに区分化し、複数のサブクラスターに実行のためのサブタスクを提供する第２区分化構成要素を含む、請求項１に記載のシステム。
【請求項１０】
前記クラスターノードが、前記クラスターノードに関連するサブクラスターでのサブタスクの実行の結果として得られるデータを集約する集約構成要素を含む、請求項９に記載のシステム。
【請求項１１】
前記複数のクラスターが共有無しストレージアーキテクチャ内に常駐する、請求項１に記載のシステム。
【請求項１２】
ウェブサーバーから前記複数のクラスターノードにデータをロードするローディング構成要素を更に備え、前記ローディング構成要素が、１つ又は複数の分散ソートアルゴリズムを使用して、１つ又は複数のデータ区分を１つ又は複数の一定のクラスターに割り当てる、請求項１に記載のシステム。
【請求項１３】
前記ＳＱＬ照会の結果を使用して、ユーザーにコンテンツを選択的に提供する検索エンジンを更に備える、請求項１に記載のシステム。
【請求項１４】
前記ＳＱＬ照会の結果を使用して、ユーザーに広告を選択的に提供する広告サーバーを更に備える、請求項１に記載のシステム。
【請求項１５】
解析処理のために大量のデータを準備する方法であって、
照会を受信するステップと、
前記照会に基づいて複数のタスクを決定するステップと、
一方向メッセージングの使用により、前記複数のタスクを複数のクラスターノードに提供するステップと、
前記複数のクラスターノードから提供された結果を、前記複数のタスクに関して集約するステップと、
集約後の結果をＯＬＥ  ＤＢクライアントに提供するステップと、
を含む方法。
【請求項１６】
前記集約後の結果に関してデータマイニングを実施するステップと、
前記データマイニングに少なくとも部分的に基づいて、検索コンテンツと広告の少なくとも一方を提供するステップと、
を更に含む、請求項１５に記載の方法。
【請求項１７】
受信される照会がＳＱＬ照会である、請求項１５に記載の方法。
【請求項１８】
前記複数のクラスターノードのうちの１つ又は複数で、前記タスクを複数のサブタスクに区分化するステップと、
前記サブタスクを、前記サブタスクを提供している前記クラスターノードに従属する複数のクラスターノードに提供するステップと、
を更に含む、請求項１７に記載の方法。
【請求項１９】
ユーザーの識別情報を受信するステップと、
受信した識別情報に少なくとも部分的に基づいて、前記照会を生成するステップと、
を更に含む、請求項１５に記載の方法。
【請求項２０】
数テラバイトのデータに対して実行されるべきＳＱＬ照会を受信する手段（１０２）と、
受信したＳＱＬ照会に関連する複数のタスクを求め、前記複数のタスクを処理のために複数のクラスターノード提供する手段（１０４）と、
を備えるデータ処理システム。
【発明の詳細な説明】
【背景技術】
【０００１】
ネットワーキング技術及びコンピューティング技術の進歩は、基本的ワードプロセッシングを実施し、基本的数学計算を実行することのできる低性能／高コスト装置から、無数の異なる機能が可能な高性能／低コストマシンへのコンピューターの変換を可能にした。例えば、勘定を支払い、出費をたどり、Ｅメール又はインスタントメッセージングによって遠距離にわたってほぼ瞬時に友人又は家族と通信し、ネットワーク化されたデータリポジトリから情報を取得し、多数の他の機能／活動を行う際にユーザーを支援するために、消費者レベルコンピューティング装置を使用することができる。したがって、コンピューター及びそれに関連する周辺機器は、個人的活動とビジネス活動のどちらに対しても使用される、現代社会における必需品となっている。
【０００２】
更に、電子記憶機構は、個人及び／又は会社が大量のデータを蓄積することを可能にした。例えば、以前には記録用の多数の冊子を必要としたデータを、今では、紙に印刷する費用をかけることなく、紙の保管に必要な物理的空間のほんの一部分で電子的に記憶することができる。或る特定の例では、以前には紙の冊子に記録された権利証書及び抵当証書を、今では電子的に記憶することができる。更に、センサー及び他の電子機構の進歩は、今では大量のデータを収集及び記憶することを可能にする。例えば、ＧＰＳシステムは、衛星及びＧＰＳ受信機によって個人又は構成要素の位置を求めることができ、次いでそれらに接続された電子記憶装置を使用して、そのようなシステムに関連する位置を保持することができる。データの取得及び記憶のために、様々な他のセンサー及びデータ収集装置を使用することもできる。
【０００３】
或るビジネスモデルは、極めて大量のデータを処理する能力に大きく依拠する。例えば、検索エンジンは、年齢、人口統計情報等の、数百万人のユーザーに関する著しい量のデータを収集することができる。別の例では、株式市場の変化を追跡するデータベースを、特にそのような追跡が細分的に行われる場合に、極めて大量のデータと関連付けることができる。このデータの集合から特定のエントリ又は複数のエントリを取り出したい場合、特定のデータベース照会言語で照会を生成することができ、照会に従って、データがデータベースから編成及び抽出される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えばスプレッドシートアプリケーション内に少量のデータが存在するとき、このデータ処理にかなり迅速に着手することができる。しかし、データの量がかなり多くなったとき（例えば数テラバイト）、そのようなデータの処理は、計算コストが高く、極めて長い時間を必要とする。計算時間を削減するための従来の一方法は、データの標本集合を選択し、そのような標本集合に対して処理を実施することに関するものであり、標本集合のサイズは、そのような標本集合を処理するのに必要な時間量に依存する。これは処理時間を削減するが、特にデータ・マイニング・アプリケーションでは精度が損なわれる。別の利用可能な手法は、機能を削減し、それによって大量のデータを処理するのに必要なコンピューティング資源を低減することである。
【課題を解決するための手段】
【０００５】
以下に、特許請求される主題の幾つかの態様の基本的理解を与えるために、単純化した概要を提示する。この概要は包括的な概要ではなく、主要な要素／重要な要素を識別すること、又は特許請求される主題の範囲を示すことを意図していない。この概要の唯一の目的は、後で提示されるより詳細な説明の準備として、単純化した形の幾つかの概念を提示することである。
【０００６】
特許請求される主題は、一般には、データ・マイニング・アプリケーション等の解析処理のために超大量のデータ（例えばテラバイト程度）を準備することに関する。そのような処理を効率的に（且つ比較的安価に）可能とするために、商業目的コンピューティング装置が階層的に配置され、そのようなコンピューティング装置の間で処理タスクが分割される。より詳細には、クライアントは、マスターノードとして働くコンピューティングノード（コンピューター、コンピューターの一部でよい）にＳＱＬ照会を提供することができ、マスターノードはＳＱＬ照会を解析し、ＳＱＬ照会に関係する複数のタスクを求める（即ち、ＳＱＬ照会を「構成する」）。ＳＱＬ照会は、１人又は複数のユーザーに関連し、又は特定のＳＱＬ照会の使用が望ましい他の対象に関連する定義済みの照会でよい。
【０００７】
マスターノードがタスクを求めると、そのようなタスクをマスターノードに関連するキュー内に配置し、複数のクラスターノード（マスターノードに従属するノード）に提供することができる。例えば、特定のクラスターノードにタスクを割り当てることができ、及び／又はクラスターノードが一定のタスクを要求することができる。より詳細には、一定のタスクがそれに対して実行されるように設計されるデータ区分と、クラスターノードを関連付けることができる。一例として、ウェブサーバーからデータをロードするとき、１つ又は複数のソートアルゴリズムを使用して、特定のデータ区分を一定のクラスターノードに割り当てることができ、クラスターノードは、データ区分に関する特定のタスクを要求し、かつ／又はデータ区分に関する特定のタスクが、クラスターノードに割り当てられる。したがって、従来型システム／方法と比べて、クラスターノードによってタスクをずっと適切に実行することができる。
【０００８】
更に、クラスターノードは、他のクラスターノードに対してマスターノードとして働くことができる。例えば、クラスターノードは、マスターノードからタスクを受信することができ、そのようなクラスターノードは、受信したタスクに基づいて複数のサブタスクを求めることができる。次いで、こうしたサブタスクを、それに関連するデータ区分に従って、サブクラスターに提供することができる。サブクラスターは、「親」クラスターノードのキュー内に保持される一定のタスクを要求することができ、及び／又は「親」クラスターノードからのタスクをサブクラスターに割り当てることができる。前と同様に、低信頼性メッセージング又は一方向メッセージングを使用して、クラスターノード間、クラスターノードとサブクラスターノードの間、及び／又はサブクラスターノード間で通信を実施することができる。
【０００９】
上述の目的及び関連する目的を実現のために、以下の説明及び添付の図面と共に幾つかの例示的態様が本明細書で説明される。しかし、こうした態様は、特許請求される主題の原理を利用することのできる様々な方式のうちの幾つかを示すに過ぎず、そのような主題は、全てのそのような態様及びその均等物を含むものとする。図面と共に考慮するときに、以下の詳細な説明から、他の利点及び新規な特徴が明らかとなろう。
【図面の簡単な説明】
【００１０】
【図１】超大量のデータを処理するシステムの高レベルブロック図である。
【図２】解析処理のために大量のデータを準備するシステムのブロック図である。
【図３】超大量のデータの処理に関連して共有ストレージアーキテクチャを使用するシステムのブロック図である。
【図４】超大量のデータの処理に関連して共有無しアーキテクチャを使用するシステムのブロック図である。
【図５】超大規模データベースに関連するデータ処理システムのブロック図である。
【図６】処理のためのデータのロードを容易にするシステムのブロック図である。
【図７】検索エンジン及び／又は広告サーバーに関連してデータの解析処理を使用することを示す図である。
【図８】大量のデータに関する準備処理を実施して、その解析を可能にする方法を示す代表的流れ図である。
【図９】データをデータ処理システムにロードする方法を示す代表的流れ図である。
【図１０】カスタマイズ検索内容及び／又は広告をユーザーに提供する方法を示す代表的流れ図である。
【図１１】ウェブログをソートする方法を示す代表的流れ図である。
【図１２】適切な動作環境を示す概略ブロック図である。
【図１３】サンプルコンピューティング環境の概略ブロック図である。
【発明を実施するための形態】
【００１１】
ここで、図面を参照しながら、特許請求される主題を説明するが、図面では、全体を通して、同様の要素を指すのに同様の参照番号が使用される。以下の説明では、説明のために、多数の特定の詳細が、特許請求される主題の完全な理解を与えるために説明される。しかし、こうした特定の詳細なしに、こうした主題を実施できることは明らかである。他の場合には、特許請求される主題の説明を容易にするために、周知の構造及び装置がブロック図形式で示される。
【００１２】
本願では、「構成要素」及び「システム」という用語は、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、或いは実行中のソフトウェアである、コンピューター関連の実体を指すものとする。例えば、構成要素は、限定はしないが、プロセッサー上で実行中のプロセス、プロセッサー、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、及びコンピューターでよい。例示として、サーバー上で実行中のアプリケーションとサーバーはどちらも構成要素であり得る。１つ又は複数の構成要素は、プロセス及び／又は実行のスレッド内に常駐することができ、１つのコンピューター上に構成要素を局在化させることができ、及び／又は２つ以上のコンピューターの間に構成要素を分散させることができる。
【００１３】
更に、特許請求される主題を、標準プログラミング及び／又はエンジニアリング技法を使用して方法、機器、又は製品として実装し、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組合せを生成し、開示される発明を実装するように、コンピューターを制御することができる。本明細書では、「製品」という用語は、任意のコンピューター可読装置、搬送波又は媒体からアクセス可能なコンピュータープログラムを包含するものとする。例えば、コンピューター可読媒体は、限定はしないが、磁気記憶装置（例えばハードディスク、フロッピィディスク、磁気ストライプ等）、光ディスク（例えばコンパクトディスク（ＣＤ）、デジタル・バーサタイル・ディスク（ＤＶＤ）等）、スマートカード、及びフラッシュメモリー装置（例えばカード、スティック、キードライブ等）を含むことができる。更に、搬送波を使用して、電子メールを送信及び受信する際、或いはインターネット又はローカルエリアネットワーク（ＬＡＮ）等のネットワークにアクセスする際に使用されるようなコンピューター可読電子データを搬送することができることを理解されたい。もちろん、特許請求される主題の範囲又は精神から逸脱することなく、この構成に対して多数の修正を行えることを当業者は理解されよう。
【００１４】
ここで図面を参照すると、図１は、大量のデータ（例えば数テラバイトのデータ）の処理を容易にするシステム１００を示す。上述のように、従来は、データセットのサンプルが準備され、大量のデータに対するデータ・マイニング・タスクが実施される。しかし、処理されるデータが利用可能なデータ全体より少ないとき、精度が損なわれる。データセット全体を効率的に、比較的低コストのコンピューティング装置で処理することができる方式で、システム１００が構築される。
【００１５】
システム１００は、ＳＱＬ等のデータベース照会言語での照会を受信する受信機構成要素１０２を含む。従来、そのような照会は、データの集合全体及び／又はそのサンプルに対して実行される。システム１００は、受信機構成要素１０２で受信された照会を解析し、それを複数のタスクに区分化することのできる区分化構成要素１０４の使用により、極めて大量のデータに対する効率的な照会の実行を可能にする。複数のタスクは、データの集合に対して実行されるとき、照会が単独でデータの集合に対して実行された場合とほぼ同様の結果を提供することができる。以下でより詳細に説明するように、受信機構成要素１０２及び区分化構成要素１０４は、マスターノード内に常駐することができ、マスターノードは、タスクを割り当て、タスクの実行の結果として得られたデータを集約し、集約済みデータをクライアントに提供することができる。
【００１６】
区分化構成要素１０４が複数のタスクを定義した後、タスクのうちの１つ又は複数を、１つ又は複数のクラスターノード１０６〜１１０に割り当てることができる。クラスターノード１０６〜１１０は、例えば個々のコンピューター、共通のケーシング内の別々のコンピューティング実体、及び／又は別々の論理プロセス等でよい。別の例では、タスクがクラスターノード１０６〜１１０に割り当てられるのではなく、クラスターノード１０６〜１１０がタスクキュー（図示せず）からタスクを取り出すことができる。したがって、クラスターノードがタスクを完了したとき、そのようなノードは別のタスクを要求することができ、それにより、別のクラスターノードが遊休状態のままである間に単一のクラスターノードが複数のタスクで過負荷とならないことを保証することによって効率が向上する。
【００１７】
更に、クラスターノード１０６〜１１０のうちの１つ又は複数を、１つ又は複数のサブクラスターノードと関連付けることができ、それによってコンピューティングノードは、クラスターノードとマスターノードのどちらとしても働くことが可能となる。例えば、クラスターノード１０６は、処理データと共に複数のタスクを受信し又は取り出すことができる。クラスターノード１０６は、タスクのサブセットを実施し、クラスターノード１０６よりも下段のアーキテクチャ階層内に常駐するサブクラスターに他のタスクを割り当てることができ、又はそのサブクラスターから他のタスクを入手可能にすることができる。次いで、クラスターノード１０６は、サブクラスターノードから提供されたデータを、クラスターノード１０６自体によって実施されたタスクの実行の結果として得られたデータと集約することができる。次いで、そのような集約済みデータを、階層内のクラスターノード１０６の上のノードに提供することができる。
【００１８】
コンピューティングノードのこの階層構成は、低コストマシンの集合がかなりの量のデータを効率的に処理することを可能とする。処理の効率を更に高めるために、ノード間で低信頼性メッセージング（例えば、ハンドシェーキング無し、確認受信無し等）を使用することができる。その代わりに、ノードは、タスクの実行の結果として得られたデータが閾値期間以内に受信されることを保証する監視操作を実施することができる。低信頼性メッセージングの使用は、クラスターノード１０６〜１１０が、従来型システムと比べて、より大量の処理タスクを実施することを可能にする。
【００１９】
更に、システム１００を「共有無し」データ・ストレージ・アーキテクチャ又は「共有ストレージ」データ・ストレージ・アーキテクチャと関連付けることができる。「共有無し」アーキテクチャは、各クラスターノード１０６〜１１０（及び関連するサブクラスターノード）がデータストレージを含んで処理用のデータを保持するときに得られ、クラスターノード１０６〜１１０によって共有される中央データストアが存在しない。「共有ストレージ」アーキテクチャは、クラスターノード１０６〜１１０がサーバー上等の記憶空間を共有するときに関するものである。システム１００は、商業目的コンピューティング・システムを使用することができ、それによって低コストを維持する（それでも、システム１００のアーキテクチャにより、十分な性能を維持する）。
【００２０】
要約すると、様々なアプリケーションは膨大なコンピューティング資源を必要とする。例えば、検索エンジン・ログ・ファイルで追跡されたユーザー活動に基づいて、商品に関するユーザーの関心を点数付けすることは、著しい量の処理を必要とする。例えば、検索エンジン会社は、訪問したユニフォーム・リソース・ロケーター（ＵＲＬ）、実行した検索照会、ユーザーに提供された広告、及び／又はユーザーによって選択された広告等のユーザー活動に関する著しい数の個々のイベントを収集することができる。データマイニング技法及び予測モデリング技法を介して、ユーザーの１つ又は複数の関心を推測することができるが、解析処理のために大量のデータを準備することは、簡単な作業ではない。例えば、ログファイルデータを解析し、浄化し、ソートし、ロードし、他のタイプのデータとマージし、集約しなければならない。システム１００は、データベース照会を幾つかのタスクに区分化することにより、そのようなタスクのエンドツーエンドサポートを容易にし、そのようなタスクが並列に実行される。
【００２１】
次に図２を参照すると、解析処理のために超大量のデータを準備することを容易にするシステム２００が示されている。システム２００はクライアント２０２を含み、ＳＱＬ照会をそのような装置から受信することができる。一例として、クライアント２０２はＯＬＥ  ＤＢクライアントでよく、ＯＬＥ  ＤＢは、様々なタイプのデータの一様な方式でのアクセスを可能にする１組のインターフェースである。ＳＱＬ照会が、マスターノード２０４内に含まれる受信機構成要素１０２によって受信される。上述のように、マスターノード２０４は、単一のコンピューティング装置や、１つのコンピューティング装置として働く複数のコンピューティング装置等であってよい。
【００２２】
マスターノード２０４は、区分化構成要素１０４を更に含むことができ、区分化構成要素１０４は、受信したＳＱＬ照会を処理するのにどのデータが必要であるかを決定することができ、照会が処理されるように照会を複数のタスクに区分化することができる。次いで、区分化構成要素１０４は、タスクを１つ又は複数のクラスターノード１０６〜１１０に割り当てることができる。別の例では、クラスターノード１０６〜１１０が、マスターノード２０４にタスクを要求することができ、かつ／又はマスターノード２０４からタスクをプルすることができる。クラスターノード１０６〜１１０はタスクを完了し、そのようなタスクによる結果をマスターノード２０４に返すことができる。マスターノード２０４は、クラスターノード１０６〜１１０から返されたデータを集約し、そのような集約をクライアント２０２に提供することのできる集約構成要素２０６を含む。その後で、集約済みデータをデータ・マイニング・アプリケーション及び予測モデリングアプリケーションと共に使用することができる。
【００２３】
更に、クラスターノード１０６〜１１０のうちの１つ又は複数が、論理階層内のクラスターノード１０６〜１１０の下のサブクラスターノードに対してマスターノードとして働くことができることを理解されたい。一例によれば、クラスターノード１０８は、クライアント２０２によって提供されるＳＱＬ照会に関連する１つ又は複数のタスクを受信するように構成される受信機構成要素１０２を含むことができる。クラスターノード１０８はまた、タスクを複数のサブタスクに区分化する区分化構成要素１０４をも含むことができる。次いで、クラスターノード１０８は、サブタスクのうちの１つ又は複数を実行し、及び／又は論理階層内のクラスターノード１０８の下のクラスターノード（図示せず）にサブタスクを割り当てることができる。クラスターノード１０８は、サブタスクの実行の結果として得られたデータを受信し、そのようなデータを集約し、その後で、階層内のクラスターノード１０８上のコンピューティング実体（例えばマスターノード２０４）に集約済みデータを提供することができる。したがって、階層内の、そのようなコンピューティングノードよりも下層のノードに関連する任意のコンピューティングノードは、照会／タスクを区分化し、データを集約することにより、マスターノードとして働くことができる。
【００２４】
次に図３を参照すると、解析処理のために非常に大きなデータの集合（数テラバイト）を準備するシステム３００が示されている。システム３００は、特許請求される主題と関連して共有ストレージアーキテクチャを使用できることを示すために与えられる。システム３００はマスターノード２０４を含み、マスターノード２０４は、（例えばＯＬＥ  ＤＢクライアントから）照会を受信する受信機構成要素１０２を含む。区分化構成要素１０４は、受信機構成要素１０２に通信可能に結合され、受信した照会を複数のタスクに区分化する。例えば、一定の照会構成に従ってタスクを予め定義することができる。
【００２５】
マスターノード２０４はタスクキュー３０２を更に含むことができ、タスクキュー３０２は、クラスターノード１０６〜１１０のいずれにも割り当てられておらず、及び／又はクラスターノードのいずれによっても取り出されていないタスクを保持することができる。例えば、クラスターノード１０６〜１１０が能動的にタスクを取り出す場合、そのようなタスクを重要度の順に配置することができる。或いは、特定のタスクを実施するようにクラスターノード１０６〜１１０を構成することもでき、そのようなタスクに関してキューの内容を解析することができる。キュー３０２を監視する監視構成要素３０４とキュー３０２を関連付け、タスクが割り当てられていること、及び／又はクラスターがタスクを取り出していることを保証することもできる。更に、監視構成要素３０４は、一定のクラスターノード１０６〜１１０によって取られ、又は一定のクラスターノード１０６〜１１０に割り当てられた幾つかのタスクを監視して、効率的なデータ処理を保証することができる。更に、監視構成要素３０４は、クラスターノード１０６〜１１０を監視して、特定のタスクが閾値時間量以内に完了しているかどうかを確認することができる。例えば、システム３００は、低信頼性メッセージング（一方向メッセージング）を使用することができ、したがって、ノイズがクラスターノード１０６に不適切にタスク割当てを受信させる可能性がある。タスクが特定の時間量以内に完了しない場合、監視構成要素３０４は、マスターノード２０４にタスクを再送信させ、又はキュー３０２内にタスクを配置させることができる。
【００２６】
上述のように、クラスターノード１０６〜１１０は、照会に関連するタスクを受信し、そのようなタスクを処理することができる。更に、クラスターノード１０６〜１１０のうちの１つ又は複数は、複数のタスクを受信して、タスクのサブセットを１つ又は複数のサブクラスターノードに割り当てることができる。更に、又は別法として、クラスターノード１０６〜１１０は、タスクをサブタスクに更に区分化し、そのようなサブタスクをサブクラスターノード（図示せず）に割り当てることができる。システム３００はまた、クラスターノード１０６〜１１０間で共有されるデータストア３０６をも含む。したがって、例えば、クラスターノード１０６及びクラスターノード１０８は、２つの別々のタスクを受信することができるが、クラスターノード１０６〜１１０間で共有されるデータストア３０６内に配置されたデータに対して動作することができる。
【００２７】
次に図４を参照すると、解析処理のために大量のデータを準備するシステム４００が示されている。システム４００はマスターノード２０４を含み、マスターノード２０４は受信機構成要素１０２及び区分化構成要素１０４を含む。上記で詳述したように、受信機構成要素１０２はクライアントからＳＱＬ照会を受信し、区分化構成要素１０４は照会を解析して、照会を定義する複数のタスクを求める。例えば、クラスターノード１０６〜１１０のうちの１つと関連することが知られているデータの特定の部分に対して作用するように、タスクを設計することができる。したがって、一定のクラスターノードに関連するデータに従って、タスクを特定のクラスターノードに割り当てることができ、及び／又はタスクをクラスターノードで取り出すことができる。より詳細には、クラスターノード１０６〜１１０のそれぞれがデータストア４０２〜４０６と関連付けられ、それによって複数のクラスターノード１０６〜１１０間の共有ストレージが不要となる。
【００２８】
望ましくは、データストア４０２〜４０６内に常駐するデータを、特定の事柄でフォーマットすることができ、既知のタスクとの関係に基づいて一定のクラスターノード内に配置することができる。例えば、データストア４０２内に常駐するデータを第１組のタスクと関連付けることができると共に、データストア４０４内に常駐するデータを第２組のタスクと関連付けることができる。更に、データセットを区分化済みテーブル及びスノーフレーク次元として分類することができる。ノード障害の場合の冗長性のために、データストア４０２〜４０６内のデータセットの各区分を複数のクラスターノード上に格納することができる。例えば、圧縮又は非圧縮のコンマ区切り形式又はバイナリ形式で、データを格納することができる。フラットファイル又はＳＱＬサーバーデータベース内に次元データを保持することができ、マスターノード２０４及びクラスターノード１０６〜１１０のメモリー内にロードすることができ、そのようなデータが変化したときにリフレッシュすることができる。
【００２９】
上述のように、区分化構成要素１０４は、ＳＱＬ照会を複数のタスクに区分化することができ、個々のタスクが必要とするのは、特定のデータ区分の境界内のデータのみである（したがって、個々のタスクを個々のクラスターノードによって処理することができる）。例えば、特定のタスクをクラスターノード１０６に特定的に割り当てることができる。そのようなノード１０６は、タスクで必要とされるデータを含むノードだからである。クラスターノード１０６は、例えば効率的な散乱ディスク読み取りを使用して、必要なデータファイルをロードすることができ、データを内部キャッシュに配置することができる。その後で、クラスターノード１０６は、タスク内で識別されるデータの区分に対してタスクを実行することができる。例えば、区分キー上のＳＱＬ結合は、ディスクアクセスを最小限に抑えるようにを最適化されることができ、照会に関連する中間結果を保持する内部コンテナーはマルチＣＰＵシステムに対してロックフリーにされ且つ最適化されることができる。そのような処理の結果を、結果が利用可能となったときにマスターノード２０４に提供することができる。
【００３０】
システム４００は、データロード期間のデータ破壊の場合にデータを既知の良好な状態にロールバックすることを可能にするロールバック構成要素４０８を更に含むことができる。ロールバック構成要素４０８を使用して、システム４００内のデータのスナップショットを作成することができ、それによって、例えば１つ又は複数のウェブサーバーからのログのロードが失敗した場合のロールバックのためにファイル名がサイズと共に取り込まれる。しばしば、ロードの対象となるデータは、効率的な照会を可能とするように編成されない（例えば、そのようなデータはソートされず、区分化されず、可能性のある例外は、時間で区分化されることである）。データがロードされるとき、一定の区分化スキーマに従う１つ又は複数の分散ソートアルゴリズムを使用して、データを再編成することができる。結果として得られる各区分を、割り当てられたクラスターノードで操作することができる。その後で、データ冗長性のために、区分に対するデータの追加のコピーを１つ又は複数の他のノード上に配置することができる。ロード及び区分の後、データ破壊がある場合、ロールバック構成要素４０８は、システム４００内のデータを以前の状態に戻すことができる。
【００３１】
次に図５を参照すると、解析処理のために大量のデータを準備することを容易にするシステム５００が示されている。システム５００はＯＬＥ  ＤＢクライアント５０２を含み、ＯＬＥ  ＤＢクライアント５０２は、スプレッドシートアプリケーション及び／又はＳＱＬサーバー等を含む任意の適切なクライアントでよい。ＯＬＥ  ＤＢクライアント５０２をＯＬＥ  ＤＢプロバイダー５０４に通信可能に結合することができ、ＯＬＥ  ＤＢプロバイダー５０４は例えばドライバーでよい。ＳＱＬ照会は、例えばＯＬＥ  ＤＢクライアント５０２及び／又はＯＬＥ  ＤＢプロバイダー５０４によって、又はそれらを介して生成されることができる。マスターノード２０４はＳＱＬ照会を受信することができ、マスターノード２０４内の区分化構成要素１０４は、ＳＱＬ照会を効果的に実行するために、１つ又は複数のクラスターノードによって実行することのできる複数のタスクを求めることができる。区分化構成要素１０４がタスクを求めたとき、タスクをタスクキュー５０６内に配置することができ、タスクキュー５０６は、重要度又は任意の他の適切な順序でタスクを順序付けることができる。
【００３２】
タスクキュー５０６内のタスクをクラスターノード５０８に、より具体的にはクラスターノード５０８内のタスクキュー５１０に提供することができる。他のクラスターノード５１２を、クラスターノード５１０に関して説明するのと同様の構成要素と関連付けることができる。マスターノード２０４はクラスターノード５０８にタスクを割り当てることができ、及び／又は、クラスターノード５０８はマスターノード２０４からタスクを取り出すことができる。更に、図示しないが、サブクラスターノードとクラスターノード５０８を関連付けることができ、そのようなサブクラスターノードにタスクキュー５１０からのタスクを割り振ることができ、又は、そのようなサブクラスターノードは、タスクキュー５１０からタスクを取り出すことができる。共有無しアーキテクチャでは、特定のデータを保持することをクラスターノードに課すことができ、したがって一定のタスクを実施するようにクラスターノードに指定することができる。タスクキュー５１０からのタスクは、クラスターノード５０８内の１つ又は複数のワーカースレッド５１４によって実行されることができる。上述のように、ワーカースレッド５１４を一定のタスクと関連付けることができる。更に、クラスターノード５０８によってイベントデータ５１６及び／又はメタデータ５１８を解析し、どのタスクが取出しを行うかを決定することができる。マスターノード２０４及びクラスターノード５０８は、低信頼性メッセージングによって通信することができる。更に、クラスターノードは、低信頼性（一方向）メッセージングの使用により、それら自体の間で通信することができる。
【００３３】
クラスターノード５０８は、ワーカースレッド５１４の実行の結果として得られたデータを集約する集約構成要素５２０を更に含む。集約構成要素５２０は更に、タスクキュー５１０からのタスクが割り当てられた、又はタスクキュー５１０からタスクを取り出したサブクラスターと関連するデータを集約することができる。その後で、集約済みデータをクラスターノード５０８上の結果キュー５２２に提供することができる。マスターノード２０４は、結果キュー５２２にデータを要求することができ、及び／又はクラスターノード５０８は、結果キュー５２２からマスターノード２０４にデータを自動的に提供することができる。幾つかのクラスターノードの結果キューからの結果をマスターノード２０４内の集約構成要素５２４によって受信することができ、そのような集約の結果を結果キュー５２６に提供することができる。例えば、複数のクラスターノードからデータを集約することをマスターノード２０４に割り当てることができる。データを集約する方式は、マスターノード２０４によってアクセス可能であるメタデータ５１８に少なくとも部分的に基づくことができる。次いで、マスターノード２０４内の結果キューからのデータをＯＬＥ  ＤＢプロバイダー５０４に提供し、次いでＯＬＥ  ＤＢクライアント５０２に返すことができる。次いで、ＯＬＥ  ＤＢクライアント５０２に提供されたデータが、解析処理のために利用可能となる。
【００３４】
次に図６を参照すると、照会及び／又は解析処理のために大量のデータを準備することを容易にするシステム６００が示されている。システム６００は、ウェブサーバー６０４に通信可能に結合することができ、ウェブサーバー６０４内に常駐するログ６０６を受信することのできるローディング構成要素６０２を含む。例えば、ローディング構成要素６０２は、ウェブサーバー６０４にログ６０６を要求することができ、及び／又は、ウェブサーバー６０４はログ６０６をローディング構成要素６０２にプッシュすることができる。例えば、ウェブサーバー６０４上の残りのデータ記憶容量に従って、周期的等の方式で、ログ６０６の要求／プッシングを行うことができる。一例として、ログ６０６はＷ３Ｃログである得る。
【００３５】
典型的には、ウェブサーバー６０４から抽出されたログ６０６は、効率的な照会のために適切には順序付けられない。例えば、ログ６０６が、恐らくは時間によるものを除いて、区分化されない可能性がある。したがって、ローディング構成要素６０２はソーティング構成要素６０８を含むことができ、ソーティング構成要素６０８は、データを認識し、複数のクラスターノード１０６〜１１０によって共有されるデータ記憶装置、及び／又は複数のクラスターノード１０６〜１１０内のデータストアにデータを提供することができる。例えば、上で言及したように、特定のデータ及び／又は特定のタイプのデータに対して一定のタスクを実施するように、各クラスターノードを構成することができる。したがって、一定のデータ区分を特定のクラスターノードに提供することをソーティング構成要素６０８に課すことができる。例えば、ソーティング構成要素６０８は、定義済み区分化スキーマに従う分散ソートアルゴリズムを利用することができ、結果として得られる各区分を一定のクラスターノード１０６〜１１０に、又は共有データ記憶装置の部分に割り当てることができる。冗長性のために、区分の１つ又は複数の追加のコピーを、冗長性のための異なるノードに割り当てることができる。
【００３６】
より詳細には、ソーティング構成要素６０８から得られたデータセットを区分テーブル及びスノーフレーク次元として分類することができ、特定の区分テーブルは、イベントデータ５１６（図５）を格納するのに使用されるファクトテーブルであってよい。ファクトテーブルは、キーの１次区分化シーケンスを有することができ、１つ又は複数のイベントのタイムスタンプに基づいて、２次副区分化を引き受けることができる。クラスターノード１０６〜１１０上に、圧縮又は非圧縮のコンマ区切り形式でデータを保持することができる。例えば、フラットファイル内及び／又はＳＱＬサーバーデータベース上に次元データを格納することができ、マスターノード２０４及びクラスターノード１０６〜１１０のメモリーにロードすることができ、次元データが変化したときにリフレッシュすることができる。
【００３７】
ログ６０６がロードされて編成されると、マスターノード２０４は、ＳＱＬ照会を受信し、そのような照会を複数のタスクに区分化することができる。次いで、一定のクラスターノードに関連する区分に従って、タスクを一定のクラスターノードに割り当てることができ、又は一定のクラスターノードで取り出すことができる。上述のように、マスターノード２０４とクラスターノード１０６〜１１０の間、及び／又はクラスターノード（及びサブクラスターノード）間で一方向メッセージングを行うことができる。ユーザーの関心の判定、ユーザーに対して広告を選択的に提供する等の解析のために、マスターノード２０４に提供される照会を、クラスターノード１０６〜１１０に関連するデータの準備に関連して使用することができる。
【００３８】
別の例では、照会のためにログ６０６から生データを準備する（例えば、そのようなデータを、区分化されソートされたフォーマットとして配置する）ことに関連して、マスターノード２０４は、一定のクラスターノードを、生ログ６０６を読み取る任を担うものとして選択することができる。以下では、選択されたクラスターノードは「リーダー」（読み取り部、reader）と呼ばれる。リーダーの選択は、クラスターノードの計算能力、資源可用性又は他の任意の適切な基準に基づくことができる。マスターノード２０４はまた、クラスターノードを、区分化されソートされたデータをホストする任を担うものとして選択することができ、以下では、そのような選択されたノードは「ライター」（書き込み部、writer）と呼ばれる。マスターノード２０４は、データ読み取りが完了したとき、及び／又は書き込みが完了したとき等に関して互いの間で通信するようにリーダーノード及びライターノードを準備することができる。
【００３９】
リーダーノードは（マスターノード２０４によるコマンドの受信時に）、ウェブサーバー６０４からログ６０６を取り出し又は受信することができ、（例えば区分テーブルに従って）一定のログ及び／又はその部分を特定のライターノードに中継することができる。一定のクラスターノード（ライター）へのログの提供は、並列処理を可能にするために重要である。ライターノードは、メモリー内バッファーを使用することにより、各区分についてのデータを受信することができ、データ量が物理メモリー容量を超過した場合、データを一時ディスクストレージに書き込むこともできる。
【００４０】
リーダーノードがウェブサーバー６０４内の全ての関連ログを受信したとき、リーダーノードは、マスターノード２０４に通知を提供することができる。リーダーノードは、ウェブサーバー６０４から受信されたデータを含む全てのバッファーをフラッシュし、フラッシュしたデータが１つ又は複数の適切なライターノードによって受信されたという肯定応答の受信を待機することができる。次いで、リーダーノードは、ライターノードへのデータの提供が完了したことをマスターノード２０４に通知することができる。ライターノードがリーダーノードからの全ての関連データを有するとライターノードが判定した（又は通知を受信した）場合、ライターノードは、受信したログを、照会のために望ましいフォーマット（例えば、テーブル（フィールド１，フィールド２，フィールド３））として区分化することができる。その後で、ライターノードは、ログが最終フォーマットであることをマスターノード２０４に通知することができる。共有無しアーキテクチャが利用される場合、マスターノード２０４は、新しく書き込まれたデータを、区分化データの追加のコピーをホストすべき他のノードに複写するようにライターノードに命令することができる。
【００４１】
次に図７を参照すると、マスターノード２０４及びクラスターノード１０６〜１１０の実際の適用を示すシステム７００が示されている。システム７００はＯＬＥ  ＤＢクライアント等のクライアント７０２を含み、クライアント７０２はマスターノード２０４にＳＱＬ照会を提供することができる。上述のように、マスターノード２０４は、照会を幾つかのタスクに区分化することができ、そのようなタスクをクラスターノード１０６〜１１０によって実行することができる。タスクを実行した結果をクラスターノード１０６〜１１０及びマスターノード２０４で集約することができ、次いでクライアント７０２に提供することができる。クライアント７０２をデータストア７０４に通信可能に結合することができ、ＳＱＬ照会の結果をデータストア７０４内に保持することができる。
【００４２】
一例を挙げると、ユーザーによって着手された最近の検索、ユーザーが訪問したウェブページ、及び／又はユーザーが購入した商品等を突き止めること等、ＳＱＬ照会を特定のインターネットユーザーと関連付けることができる。次いで、検索エンジン７０６及び／又は広告サーバー７０８は、データマイニング操作を実施し、又は他のインテリジェントアルゴリズムを使用して、ユーザーにコンテンツを選択的に提供することができる。例えば、検索エンジン７０６はユーザー端末７１０からの照会を受信することができる（ユーザー端末７１０を特定のユーザーと関連付けることができ、又は一定のユーザーをユーザー端末７１０にログインさせることができる）。ユーザーに関係するデータストア７０４のコンテンツを解析することにより、検索エンジン７０６は検索結果をインテリジェントに順序付け、そのようなユーザーにコンテンツを提供することができる。同様に、広告サーバー７０８は、データストア７０４のコンテンツに基づいて、ユーザー端末７１０に広告を選択的に提供することができる。
【００４３】
詳細な例においては、クラスターノード１０６〜１１０は、Ｗ３Ｃログ等のウェブサーバーから受信した区分済みデータ、並びに任意の他の適切なデータを保持することができる。別の例では、データを保持するためにクラスターノード１０６〜１１０の間でストレージを共有することができる。ユーザーがサービスにログオンするとき、クライアント７０２（又は他の適切なコンピューティング実体）が、ユーザーの識別を判定することができる。ユーザー端末７１０でログインしたユーザーに関するデータを取り出すために、１つ又は複数のＳＱＬ照会を自動的に生成することができる。結果として得られるデータはデータストア７０４に提供され、ユーザーにカスタマイズ／機能強化コンテンツ及び／又は広告を提供することに関連して使用されることができる。
【００４４】
次に図８〜１１を参照すると、特許請求される主題による方法が、今度は一連の動作によって説明されている。幾つかの動作は異なる順序で行うことができ、及び／又は本明細書で図示及び説明される他の動作と同時に行うことができるので、特許請求される主題は動作の順序によって限定されないことを理解されたい。例えば、当業者は理解するように、別法として、状態図等の一連の相互に関連する状態又はイベントとして方法を表現できる。更に、特許請求される主題による方法を実装するのに、図示される全ての動作が必要であるわけではない。更に、以下で開示される方法、及び本明細書全体にわたって開示される方法を、そのような方法をコンピューターに移送及び転送するのを容易にするために製品上に格納できることを更に理解されたい。本明細書では、製品という用語は、任意のコンピューター可読装置、搬送波又は媒体からアクセス可能なコンピュータープログラムを包含するものとする。
【００４５】
図８のみを参照すると、解析処理のために膨大な量のデータ（例えば、数テラバイト）を迅速に準備する方法８００が示されている。方法は８０２で開始し、８０４でＳＱＬ照会が受信される。例えば、ユーザーがログイン情報を提供するとき、１人又は複数のユーザーがＩＰアドレスの解析を介して識別されるとき、又はユーザーを識別するのに適した任意の他の方式で、ＳＱＬ照会を自動的に生成することができる。ＯＬＥ  ＤＢクライアントでＳＱＬ照会を生成し、ＯＬＥ  ＤＢプロバイダーを通じて渡すことができる。ＯＬＥ  ＤＢプロバイダーはドライバーであってよい。
【００４６】
８０６で、ＳＱＬ照会に関連する複数のタスクが決定される。例えば、事前定義タスクをＳＱＬ照会に割り当てることができ、そのような事前定義タスクは、一定のクラスターノード上で実行されるべきである。例えば、「共有無し」アーキテクチャを使用することができ、それによって、データをクラスターノードにロードするときに、特定のデータ区分が、一定のクラスターノードに割り当てられる。クラスターノードに割り当てられるタスクは、特定のデータ区分を対象とすることができる。
【００４７】
８０８において、複数のタスクが複数のクラスターノードに提供され、望ましくは、各タスクを所定のクラスターノードによって実行することができる。更に、クラスターノードをサブクラスターノードと関連付けることができ、それによって、タスクを実施するのに多重レベル階層コンピューティング構造が使用される。例えば、タスクを特定のクラスターノードに提供することができ、その後で、タスクを複数のサブタスクに区分化し、幾つかのサブクラスターノードに提供することができる。更に、一定のサブタスクを実施するように各サブクラスターノードを構成することができ、サブクラスターノードは特定のサブタスクを要求し、及び／又はサブクラスターノードに一定のサブタスクが割り当てられる。
【００４８】
８１０で、タスク及び／又はサブタスクが実行されると、サブタスクの結果として得られるデータが集約され、上記階層内でタスク又はサブタスクを実行しているクラスターノード及び／又はクラスターノード（又はサブクラスターノード）の上位のマスターノードに提供されることができる。データが階層の上位のマスターノードに渡されるときにデータを集約することができ、マスターノードは、最終的集約を実施し、結果として得られるデータをＯＬＥ  ＤＢクライアントに中継することができる。マスターノードとクラスターノードの間、クラスターノード間、クラスターノードとサブクラスターノードの間、及び／又はサブクラスターノード間で通信が行われるとき、そのような通信は、低信頼性メッセージングによるものでよい。これにより、従来型超大規模データベース処理システム／方法と比べて、タスクの処理をより適切に完了することが可能となる。更に、ＳＱＬの使用により、共通インターフェースを使用することが可能となる。次いで方法８００は８１２で完了する。
【００４９】
次に図９を参照すると、データ処理システムに大量のデータをロードする方法９００が示されている。方法９００は９０２で開始し、９０４において、システム内に存在するデータのスナップショットがデータのロードの前に取られる。したがって、破壊データが存在する場合、又はデータが不正確にロードされる場合、システムを既知の良好な状態に「ロールバック」することができる。例えば、ロード操作失敗のロールバックのために、ファイル名及びサイズを取り込むことができる。
【００５０】
９０６で、望ましくロードされたデータが、定義済みの区分化スキーマに従って認識される。９０８において、一定の区分が特定のクラスターノードに提供される。次いで、タスクをクラスターノードに割り当てることができ、又はクラスターノードによってタスクを要求することができ、タスクは区分と関連付けられる。９１０において、冗長性のために、データ区分が他のクラスターノードに提供される。次いで、方法９００は９１２で完了する。
【００５１】
図１０を参照すると、ユーザーにカスタマイズ済みコンテンツ及び／又は広告を提供する方法１０００が示されている。方法１０００は１００２で開始し、１００４で、ユーザー識別が受信される。例えば、ユーザーは、インスタントメッセンジャーサービスにログオンし、Ｅメールサービスにログオンし、及び／又はコンピューティング装置に関するＩＰアドレスを提供することができる。したがって、ユーザー識別を受信／判定するための任意の方式が想定され、本明細書に添付の特許請求の範囲に含まれるものとする。１００６で、識別されたユーザーに関するＳＱＬ照会が確認される。例えば、ユーザーに関する解析処理のためのデータを準備するために、ユーザーに関するデータ（例えば、検索ログ等のユーザーについて収集された情報、人口統計情報等のユーザーに関する情報等）を突き止めて集約するように、照会が設計される。
【００５２】
１００８で、数テラバイトのデータを含むことのできる超大規模データベースから、ユーザーに関連するデータが突き止められる（収集され、集約される）。例えば、少なくとも１つのマスターノード及び少なくとも１つのクラスターノードを含む階層アーキテクチャを使用して、解析のために迅速且つ効率的にデータを準備することができる。１０１０において、突き止められたデータの解析時に、コンテンツ及び／又は広告がユーザーに提供される。したがって、検索結果を最適化することができ、推測されるユーザーの関心等に基づいて、広告を選択的に提供することができる。次いで、方法１０００は１０１２で完了する。
【００５３】
次に図１１を参照すると、照会及び／又は解析処理のために大量のデータを迅速に準備する方法１１００が示されている。例えば、ウェブサーバー内に含まれるウェブログは、（恐らくは時間によるものは除いて）典型的にはソートされない。しかし、コンピューティングノードの階層構成を利用するシステム内のウェブログの照会を可能にするために、ウェブログを特定の方式（例えば、テーブル（フィールド１，フィールド２等））でフォーマットし、ソートし、一定のノードと関連付ける必要がある。方法１１００は１１０２で開始し、１１０４において、クラスターノードが、マスターノードによってリーダーノード又はライターノードとして割り当てられ、リーダーノードには、ウェブサーバーからウェブログを受信し／取り出し、そのようなログを適切なライターノードに提供することが課され、ライターノードには、ウェブログを所望の方式でフォーマットすることが課される。
【００５４】
１１０６で、ウェブログがリーダーノードのウェブサーバーから受信される。例えば、全てのウェブログの各部分（時間順に配置される）を一定のリーダーノードに提供することができる。リーダーノードが全ての関連するウェブログを受信すると、リーダーノードは、読み取りが完了したことをマスターノードに対して示すことができる。１１０８において、ウェブログのサブセットが特定のライターノードに提供される。例えば、リーダーノードは、配布テーブルを使用して、一定のウェブログが特定のノードに提供されることを保証することができる。各ウェブログがライターノードに提供されると、リーダーノードは、受信の確認を待機することができ、次いで、リーダーノードのタスクが完了したことをマスターノードに通知することができる。
【００５５】
１１１０で、ライターノードは、その受信したウェブログをソートし、最終的なソート済みデータを生成する。そのようなデータは、効率的な照会が可能となるようにフォーマットされることができる。更に、上述と同様に、並列処理が可能となるように、書き込まれたデータを幾つかのノード内に保持することができる。最終的なソート済みデータの生成完了時に、ライターノードは、そのような書込みが完了したこと、及び照会のためにデータの準備ができたことをマスターノードに通知することができる。１１１２で、冗長性のために、最終的なソート済みデータ区分が複数の場所に格納され、方法１１００は１１１４で完了する。
【００５６】
特許請求される主題の様々な態様について追加の状況を与えるために、図１２及び以下の議論は、特許請求される主題の様々な態様を実装することのできる適切な動作環境１２１０の簡潔で一般的な説明を与えることを意図している。特許請求される主題が、１つ又は複数のコンピューター又は他の装置によって実行されるプログラムモジュール等のコンピューター実行可能命令の一般的状況で説明されるが、他のプログラムモジュールと組み合わせて、及び／又はハードウェアとソフトウェアの組合せとして本発明を実装することもできることを当業者は理解されよう。
【００５７】
しかし、一般には、プログラムモジュールは、特定のタスクを実行し又は特定のデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。動作環境１２１０は適切な動作環境の一例に過ぎず、本発明の使用法又は機能の範囲に関して何らかの制限を示唆するものではない。本発明と共に使用するのに適した他の周知のコンピューターシステム、環境及び／又は構成は、限定はしないが、パーソナルコンピューター、ハンドヘルド装置又はラップトップ装置、マルチプロセッサーシステム、マイクロプロセッサーベースのシステム、プログラマブル家庭用電気製品、ネットワークＰＣ、ミニコンピューター、メインフレームコンピューター、上記のシステム又は装置を含む分散コンピューティング環境等を含む。
【００５８】
図１２を参照すると、解析処理のために大量のデータを効率的に準備すること等の、特許請求される主題の様々な態様を実装する例示的環境１２１０はコンピューター１２１２を含む。コンピューター１２１２は、処理装置１２１４、システムメモリー１２１６及びシステムバス１２１８を含む。システムバス１２１８は、システムメモリー１２１６を含むシステム構成要素を処理装置１２１４に結合する。処理装置１２１４は、様々な入手可能なプロセッサーのいずれでもよい。デュアルマイクロプロセッサー及び他のマルチプロセッサーアーキテクチャも処理装置１２１４として利用することができる。
【００５９】
システムバス１２１８は、限定はしないが８ビットバス、産業標準アーキテクチャ（ＩＳＡ）マイクロチャネルアーキテクチャ（ＭＳＡ）、拡張ＩＳＡ（ＥＩＳＡ）、インテリジェントドライブエレクトロニクス（ＩＤＥ）、ＶＥＳＡローカルバス（ＶＬＢ）、周辺コンポーネント相互接続（ＰＣＩ）、ユニバーサルシリアルバス（ＵＳＢ）、改良グラフィックスポート（ＡＧＰ）、国際周辺コンピュータメモリカード協会バス（ＰＣＭＣＩＡ）及び小型コンピュータシステムインターフェース（ＳＣＳＩ）を含む任意の様々な利用可能なバスアーキテクチャを使用する、メモリーバス又はメモリーコントローラー、周辺バス又は外部バス、並びに／或いはローカルバスを含む幾つかのタイプのバス構造のいずれでもよい。システムメモリー１２１６は揮発性メモリー１２２０及び不揮発性メモリー１２２２を含む。起動期間等にコンピューター１２１２内の要素間で情報を転送するための基本ルーチンを含む基本入出力システム（ＢＩＯＳ）が、不揮発性メモリー１２２２内に格納される。例えば、限定はしないが、不揮発性メモリー１２２２は、読み取り専用メモリー（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、電気的プログラム可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）又はフラッシュメモリーを含むことができる。揮発性メモリー１２２０は、外部キャッシュメモリーとして働くランダムアクセスメモリー（ＲＡＭ）を含む。例えば、限定はしないが、ＲＡＭは、同期ＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、エンハンスドＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）及びダイレクトラムバスＲＡＭ（ＤＲＲＡＭ）等の多くの形態で入手可能である。
【００６０】
また、コンピューター１２１２は、取外し可能／取外し不能な揮発性／不揮発性コンピューター記憶媒体をも含む。図１２は例えばディスクストレージ１２２４を示す。ディスクストレージ１２２４は、限定はしないが、磁気ディスクドライブ、フロッピィディスクドライブ、テープドライブ、Ｊａｚドライブ、ジップドライブ、ＬＳ−１００ドライブ、フラッシュメモリーカード又はメモリースティック等の装置を含む。更に、ディスクストレージ１２２４は、限定はしないが、コンパクトディスクＲＯＭドライブ（ＣＤ−ＲＯＭ）、ＣＤ記録可能ドライブ（ＣＤ−Ｒドライブ）、ＣＤ再書き込み可能ドライブ（ＣＤ−ＲＷドライブ）又はデジタル・バーサタイル・ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）等の光ディスクドライブを含む記憶媒体を、別々に又は他の記憶媒体と組み合わせて含むことができる。システムバス１２１８に対するディスク記憶装置１２２４の接続を容易にするために、典型的にはインターフェース１２２６等の取外し可能又は取外し不能インターフェースが使用される。
【００６１】
図１２は、ユーザーと、適切な動作環境１２１０で記述された基本コンピューター資源との間の媒介として働くソフトウェアを記述することを理解されたい。そのようなソフトウェアはオペレーティングシステム１２２８を含む。オペレーティングシステム１２２８はディスクストレージ１２２４上に格納されることができ、コンピューターシステム１２１２の資源を制御し且つ割り振るように働く。システムアプリケーション１２３０は、システムメモリー１２１６又はディスクストレージ１２２４上に格納されたプログラムモジュール１２３２及びプログラムデータ１２３４を介して、オペレーティングシステム１２２８による資源の管理を利用する。特許請求される主題を、様々なオペレーティングシステム又はオペレーティングシステムの組合せと共に実装できることを理解されたい。
【００６２】
ユーザーは、入力装置１２３６を介してコマンド又は情報をコンピューター１２１２に入力する。入力装置１２３６は、限定はしないが、マウス、トラックボール、スタイラス、タッチパッド等のポインティングデバイス、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナー、ＴＶチューナーカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラ等を含む。上記及びその他の入力装置は、システムバス１２１８を通じて、インターフェースポート１２３８を介して処理装置１２１４に接続される。インターフェースポート１２３８は、例えばシリアルポート、パラレルポート、ゲームポート及びユニバーサルシリアルバス（ＵＳＢ）を含む。出力装置１２４０は、入力装置１２３６と同じタイプのポートの幾つかを使用する。したがって、例えば、ＵＳＢポートを使用して、入力をコンピューター１２１２に与え、コンピューター１２１２から出力装置１２４０に情報を出力することができる。出力アダプター１２４２が設けられているのは、出力装置１２４０の中には、特別なアダプターを必要とするモニター、スピーカー及びプリンター等の幾つかの出力装置１２４０が存在することを示すためである。出力アダプター１２４２は、例えば、限定はしないが、出力装置１２４０とシステムバス１２１８との間の接続手段を提供するビデオカード及びサウンドカードを含む。留意されるように、リモートコンピューター１２４４等の他の装置及び／又は装置のシステムは入力機能と出力機能とを提供する。
【００６３】
コンピューター１２１２は、リモートコンピューター１２４４等の１つ又は複数のリモートコンピューターに対する論理接続を使用して、ネットワーク環境で動作することができる。リモートコンピューター１２４４は、パーソナルコンピューター、サーバー、ルーター、ネットワークＰＣ、ワークステーション、マイクロプロセッサーベースの家庭用器具、ピア装置又は他の共通ネットワークノード等でよく、典型的には、コンピューター１２１２に関して記述される要素のうちの多く又は全てを含む。図を簡潔にするために、メモリー記憶装置１２４６のみがリモートコンピューター１２４４と共に示されている。リモートコンピューター１２４４は、ネットワークインターフェース１２４８を介してコンピューター１２１２と論理的に接続され、次いで通信接続１２５０を介して物理的に接続される。ネットワークインターフェース１２４８は、ローカルエリアネットワーク（ＬＡＮ）や広域ネットワーク（ＷＡＮ）等の通信ネットワークを包含する。ＬＡＮ技術は、ファイバ分配型データインターフェース（ＦＤＤＩ）、銅線分配型データインターフェース（ＣＤＤＩ）、イーサネット（登録商標）／ＩＥＥＥ８０２．３、トークンリング／ＩＥＥＥ８０２．５等を含む。ＷＡＮ技術は、限定はしないが、ポイントツーポイントリンク、統合サービスディジタル通信網（ＩＳＤＮ）及びそれに対する変形形態等の回線交換ネットワーク、パケット交換ネットワーク及びデジタル加入者線（ＤＳＬ）を含む。
【００６４】
通信接続１２５０は、ネットワークインターフェース１２４８をバス１２１８に接続するのに使用されるハードウェア／ソフトウェアを指す。図が見やすいように通信接続１２５０がコンピューター１２１２内部に示されているが、通信接続１２５０は、コンピューター１２１２の外部でもよい。例示のために過ぎないが、ネットワークインターフェース１２４８を接続するのに必要なハードウェア／ソフトウェアは、通常の電話等級モデム、ケーブルモデム及びＤＳＬモデムを含むモデム、ＩＳＤＮアダプター、イーサネット（登録商標）カード等の内部技術及び外部技術を含む。
【００６５】
図１３は、特許請求される主題が対話することのできるサンプルコンピューティング環境１３００の概略ブロック図である。システム１３００は、１つ又は複数のクライアント１３１０を含む。クライアント１３１０は、ハードウェア及び／又はソフトウェア（例えばスレッド、プロセス、コンピューティング装置）でよい。システム１３００はまた、１つ又は複数のサーバー１３３０をも含む。サーバー１３３０も、ハードウェア及び／又はソフトウェア（例えばスレッド、プロセス、コンピューティング装置）でよい。例えば、サーバー１３３０は、スレッドを収容して、本発明を利用することによって変換を実施することができる。クライアント１３１０とサーバー１３３０との間の１つの可能な通信は、２つ以上のコンピュータープロセス間で伝送されるように適合されたデータパケットの形態でよい。システム１３００は、クライアント１３１０とサーバー１３３０との間の通信を容易にするように使用することのできる通信フレームワーク１３５０を含む。クライアント１３１０は、クライアント１３１０にとってローカルな情報を格納するのに使用することのできる１つ又は複数のクライアントデータストア１３６０に動作可能に接続される。同様に、サーバー１３３０は、サーバー１３３０にとってローカルな情報を格納するのに使用することのできる１つ又は複数のサーバーデータストア１３４０に動作可能に接続される。
【００６６】
上記で説明した事柄は、特許請求される主題の例を含む。もちろん、特許請求される主題を説明するために構成要素又は方法の考え得るあらゆる組合せを説明することは不可能であるが、当業者は理解するように、多数の別の組合せ及び順列が可能である。したがって、特許請求される主題は、添付の特許請求の範囲の精神及び範囲内に包含される全ての変更形態、修正形態及び変形形態を含むものとする。更に、「含む」という用語が詳細な説明又は特許請求の範囲で使用される範囲では、そのような用語は、「備える」という用語と同様に、包括的なものとする。「備える」は、特許請求の範囲で使用されるときに移行語として解釈されるからである。
【図１】
2009545060.tif 000003
【図２】
2009545060.tif 000004
【図３】
2009545060.tif 000005
【図４】
2009545060.tif 000006
【図５】
2009545060.tif 000007
【図６】
2009545060.tif 000008
【図７】
2009545060.tif 000009
【図８】
2009545060.tif 000010
【図９】
2009545060.tif 000011
【図１０】
2009545060.tif 000012
【図１１】
2009545060.tif 000013
【図１２】
2009545060.tif 000014
【図１３】
2009545060.tif 000015
【国際調査報告】
2009545060.tif 000016
2009545060.tif 000017