(57)【要約】      （修正有）【課題】Ｈａｄｏｏｐにおける強化されたＳＱＬライクなクエリのためのバックグラウンドフォーマットの最適化を提供する。【解決手段】環境１００は、Ｈａｄｏｏｐクラスタを含む複数のデータノード１２０ａ〜１２０ｃを含む。またＨａｄｏｏｐクラスタに接続及び／又はアクセスするためのＡＰＩ及びその他のツールを提供するクライアント１０４を含む。ＳＱＬアプリケーション１０２は、クエリ又はジョブの実行、ＨＤＦＳの閲覧、及びワークフローの作成などのためのＨａｄｏｏｐ用のユーザインターフェイスを提供する。環境１００は、クエリを発行するためのコマンドラインインターフェイス１１６も含む。低レイテンシクエリエンジンデーモン１１４ａ〜１１４ｃは、各データノード上で動作する。各低レイテンシクエリエンジンデーモン１１４ａ〜１１４ｃは、クライアント１０２／１０４を介して受け取られるクエリを受け取り設計し協調させることができる。【選択図】図１
2015072688.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータノードからなる分散コンピューティングクラスタに記憶されたデータに対してクエリを実行するためのシステムであって、
各データノードのためのクエリエンジンを備え、該クエリエンジンは、
クライアントからのクエリを解析し、前記データノードにデータを記憶する際の１又はそれ以上のフォーマットを特定するスキーマに基づいて、対象フォーマットのデータが記憶されている場合には該対象フォーマットに合わせて生成され、前記対象フォーマットのデータが記憶されていない場合には別のフォーマットに合わせて生成されるクエリフラグメントを生成するためのクエリプランナと、
前記クエリフラグメントを前記複数のデータノード間で分散させるためのクエリコーディネータと、
クエリ実行エンジンと、
を有し、前記クエリ実行エンジンは、
前記スキーマに基づいて、前記データを、前記クエリフラグメントが生成されるフォーマットに転換する転換モジュールと、
前記転換されたデータに前記クエリフラグメントを実行し、集約されて前記クライアントに戻された中間結果を取得する実行モジュールと、
を備える、
ことを特徴とするシステム。
【請求項２】
前記分散コンピューティングクラスタは、Ｈａｄｏｏｐクラスタである、
ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記対象フォーマットは、カラム型フォーマットである、
ことを特徴とする請求項１に記載のシステム。
【請求項４】
前記対象フォーマットは、リレーショナルデータベースの処理に対して最適化される、
ことを特徴とする請求項１に記載のシステム。
【請求項５】
クエリを実行するためのデータ処理方法であって、
初期データをオリジナルフォーマットで記憶するステップと、
所定のスケジュールに従って、前記初期データを、リレーショナルデータベースの処理に対して最適化された対象フォーマットに変換するステップと、
前記変換されたデータを前記初期データと共に記憶するステップと、
を含むことを特徴とする方法。
【請求項６】
前記変換されたデータが記憶された後に１又はそれ以上のクエリフラグメントの組を受け取るステップと、
前記受け取りに応答して、前記変換されたデータを転換するステップと、
前記転換されたデータに前記１又はそれ以上のクエリフラグメントの組を実行するステップと、
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記所定のスケジュールは、定期的なものである、
ことを特徴とする請求項５に記載の方法。
【請求項８】
前記所定のスケジュールは、受け取ったクエリフラグメントの組の数に基づく、
ことを特徴とする請求項６に記載の方法。
【請求項９】
新たなデータを前記オリジナルフォーマットで記憶して前記初期データと置き換えるステップをさらに含み、
前記所定のスケジュールは、前記オリジナルフォーマットで記憶されたデータが置き換えられた回数に基づく、
ことを特徴とする請求項５に記載の方法。
【請求項１０】
前記対象フォーマットは、カラム型フォーマットである、
ことを特徴とする請求項５に記載の方法。
【請求項１１】
スケジュールに従って、前記変換されたデータを削除するステップをさらに含む、
ことを特徴とする請求項５に記載の方法。
【請求項１２】
前記初期データ及び前記変換されたデータは、分散コンピューティングクラスタ内のデータノードに記憶され、
前記１又はそれ以上のクエリフラグメントの組は、前記データノード上で実行される、
ことを特徴とする請求項６に記載の方法。
【請求項１３】
クエリを実行するためのデータ処理システムであって、
初期データをオリジナルフォーマットで記憶する第１の記憶ユニットと、
所定のスケジュールに従って、前記初期データを、リレーショナルデータベース処理に対して最適化された対象フォーマットに変換する変換ユニットと、
前記変換されたデータを記憶する第２の記憶ユニットと、
を備えることを特徴とするシステム。
【請求項１４】
前記変換されたデータが記憶された後に、１又はそれ以上のクエリフラグメントセットを受け取る受信ユニットと、
前記受け取りに応答して、前記変換されたデータを転換する転換ユニットと、
前記転換されたデータに前記１又はそれ以上のクエリフラグメントの組を実行する実行ユニットと、
をさらに備えることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記対象フォーマットは、カラム型フォーマットである、
ことを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記システムは、分散コンピューティングクラスタ内のノードである、
ことを特徴とする請求項１３に記載のシステム。
【請求項１７】
命令を記憶する機械可読記憶媒体であって、前記命令は、１又はそれ以上のプロセッサによる実行時に、
初期データをオリジナルフォーマットで記憶するステップと、
所定のスケジュールに従って、前記初期データを、リレーショナルデータベース処理に対して最適化された対象フォーマットに変換するステップと、
前記変換されたデータを記憶するステップと、
を含む方法を実行する、
ことを特徴とする機械可読記憶媒体。
【請求項１８】
前記方法は、
前記変換されたデータが記憶された後に、１又はそれ以上のクエリフラグメントの組を受け取るステップと、
前記受け取りに応答して、前記変換されたデータを転換するステップと、
前記転換されたデータに前記１又はそれ以上のクエリフラグメントの組を実行するステップと、
をさらに含むことを特徴とする請求項１７に記載の機械可読記憶媒体。
【請求項１９】
前記対象フォーマットは、カラム型フォーマットである、
ことを特徴とする請求項１７に記載の機械可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
Ａｐａｃｈｅ  Ｈａｄｏｏｐプロジェクト（以下、「Ｈａｄｏｏｐ」）は、コモディティマシンのクラスタにわたる大規模データセットを確実かつスケーラブルに分散処理するソフトウェアを開発するためのオープンソースソフトウェアフレームワークである。Ｈａｄｏｏｐは、Ｈａｄｏｏｐ分散ファイルシステム（ＨＤＦＳ）として知られている分散ファイルシステムを含む。ＨＤＦＳは、ローカルノード上のファイルシステムを相互にリンクして、Ｈａｄｏｏｐクラスタ全体にわたる統一ファイルシステムを形成する。Ｈａｄｏｏｐは、ＭａｐＲｅｄｕｃｅとして知られているプログラミングフレームワークが利用するジョブスケジューリング及びクラスタリソース管理のためのフレームワークを提供するＨａｄｏｏｐ  ＹＡＲＮも含む。Ｈａｄｏｏｐは、Ａｐａｃｈｅ  Ｈｉｖｅ（以下、「Ｈｉｖｅ」）、及びＡｐａｃｈｅ  ＨＢａｓｅ（以下、「ＨＢａｓｅ」）を含むその他のＡｐａｃｈｅプロジェクトによっても補完される。Ｈｉｖｅは、データ要約及びアドホッククエリを提供するデータウェアハウス基盤である。ＨＢａｓｅは、大規模テーブルのための構造化データストレージをサポートするスケーラブルな分散ＮｏＳＱＬ（非構造化クエリ言語）データベース又はデータストアである。
【０００２】
現在、Ｈａｄｏｏｐは、リレーショナルデータベース管理システム（ＲＤＢＭＳ）に対応していない。リレーショナルデータベースでは、スキーマ、すなわち特定のカラムと、各テーブルの各カラム間の整合性を保証する一連の整合性制約とを有するテーブル内へのデータの構造化を規定することができる。典型的なＲＤＢＭＳは、データベース内にデータが書き込まれた時にデータにスキーマが実行されるスキーマ・オン・ライトモデルを実装する。具体的には、データベースにデータが記憶される前に、整合性制約を用いてデータの再構成及びフィルタ処理を行う。スキーマ・オン・ライトモデルは、既知の問いかけに応答することに関してはうまく機能する。それまで知られていなかった問いかけに応答する必要がある場合には、新たなデータを取り込む必要が生じ得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、ＲＤＢＭＳは、スキーマに適合しない新たなデータを受け入れることができない。新たなデータに対応するには、通常はデータベースから古いデータを削除し、スキーマを変更し、新たなデータを解析してデータベースに書き込む必要がある。また、通常、データ設計者は、ＲＤＢＭＳに接続された全てのシステムが、更新されたスキーマと共に動作することを保証する必要がある。この新たなデータに対応する処理には長い時間が掛かることもある。その時点まで、新たなデータを取り込んで、それまで知られていなかった問いかけに応答することはできない。
【課題を解決するための手段】
【０００４】
一方、Ｈａｄｏｏｐは、現在、データベースからデータが読み取られるまでスキーマがデータに実行されないスキーマ・オン・リードモデルを採用している。この場合、一般的には、スキーマがファイルフォーマットに関してデータの構造化を指定する。この結果、データの処理とデータの記憶を切り離すことができる。具体的には、Ｈａｄｏｏｐの基本的なストレージシステムは、ファイルをそのオリジナルフォーマット（タブ区切りテキストファイル、ＣＳＶ、ＸＭＬ、ＪＳＯＮ、画像など）で解釈しながら、関連するスキーマを後で設計して別個に記憶できるようにする。その後、クエリに応答して、別個に記憶されたスキーマに従って、記憶されたデータをメモリ内で転換する。このスキーマ・オン・リードモデルにより、入力データをデータベース内で素早く更新し、ユーザに異なるスキーマを試みるように促すことができる。
【０００５】
スキーマ・オン・リードモデル及びスキーマ・オン・ライトモデルにはそれぞれの利点がある。Ｈａｄｏｏｐが、特定の必要性及び要件に応じてこれらのモデルの一方又はその組み合わせを使用するという柔軟性をユーザに提供することが有用と思われる。
【図面の簡単な説明】
【０００６】
【図１】低レイテンシクエリエンジン及びフォーマット変換エンジンを展開できる環境例を示す図である。
【図２】バッチ指向のリアルタイムアドホッククエリをサポートする統合プラットフォームのコンポーネント例を示すブロック図である。
【図３】インストールマネージャのコンポーネント例を示すブロック図である。
【図４】Ｈａｄｏｏｐクラスタ内の各データノードにインストールされる低レイテンシ（ＬＬ）クエリエンジンデーモンのコンポーネント例を示すブロック図である。
【図５】Ｈａｄｏｏｐクラスタ内の各データノードにインストールされるフォーマット変換エンジンデーモンのコンポーネント例を示すブロック図である。
【図６】クエリ実行エンジンが一群のクエリフラグメントを実行する前のクエリ実行エンジンの動作例を示すフロー図である。
【図７】本明細書で説明する方法のいずれか１つ又はそれ以上を機械に実行させる命令セットを実行できる例示的なコンピュータシステムの形の機械の図形表現である。
【発明を実施するための形態】
【０００７】
以下の説明及び図面は例示的なものであり、限定的なものと解釈すべきではない。本開示を完全に理解できるように数多くの具体的な詳細について説明する。しかしながら、いくつかの例では、説明を曖昧にしないために周知の又は従来の詳細については説明していない。本開示における１つの実施形態又はある実施形態に対する言及は、必ずしもそうではないが同じ実施形態に対する言及とすることができ、このような言及は実施形態の少なくとも１つを意味する。
【０００８】
本明細書における「１つの実施形態」又は「ある実施形態」に対する言及は、実施形態に関連して説明する特定の特徴、構造又は特性が本開示の少なくとも１つの実施形態に含まれることを意味する。本明細書の様々な箇所に出現する「１つの実施形態では」という表現は、必ずしも全てが同じ実施形態について言及するものではなく、他の実施形態を互いに排除する別個の又は代替の実施形態について言及するものでもない。さらに、実施形態によって示すことも示さないこともある様々な特徴についても説明する。同様に、実施形態によって要件になることもならないこともある様々な要件についても説明する。
【０００９】
一般に、本明細書で使用する用語は、本開示の文脈及び個々の用語を使用する特定の文脈での当技術における通常の意味を有する。0
【００１０】
従って、本明細書で１つの用語について詳述又は説明しているかどうかに関わらず、本明細書で説明する用語のいずれか１つ又はそれ以上には別の言語及び同義語を使用することができ、またいずれかの特別な意味が置かれることもない。いくつかの用語については同義語を使用している。１又はそれ以上の同義語の記述は、他の同義語の使用を排除するものではない。本明細書で説明するいずれかの用語の例を含め、本明細書のいずれかの箇所で用例を使用していたとしても、これらは例示的なものにすぎず、本開示又はいずれかの例示する用語の範囲及び意味をさらに限定することを意図するものではない。同様に、本開示は、本明細書で示す様々な実施形態に限定されるものではない。
【００１１】
以下、本開示の範囲をさらに限定することを意図せずに、本開示の実施形態による機器、装置、方法及びこれらの関連する結果の例を示す。なお、これらの例では、読者の便宜を図って表題又は副題を使用することがあるが、これらは決して本開示の範囲を限定すべきものではない。特に定義していない限り、本明細書で使用する全ての技術用語及び科学用語は、本開示が属する技術の当業者によって一般的に理解されるものと同じ意味を有する。不一致が生じた場合、定義を含めて本明細書が優先する。
【００１２】
本開示の実施形態は、Ｈａｄｏｏｐのためのフォーマット変換エンジンを含む。本開示の実施形態は、Ｈａｄｏｏｐに記憶されたデータに対してリアルタイム又はほぼリアルタイムでフォーマット変換を実行するためのシステム及び方法も含む。
【００１３】
１つの実施形態では、フォーマット変換エンジンが、容易にクエリ可能なフォーマットでデータを準備することによって高速検索を可能にする機構を提供する。別の実施形態では、フォーマット変換エンジンが、データを素早く更新して、安定したデータを用いて効果的に作業できる柔軟性をユーザに提供する。
【００１４】
図１は、低レイテンシ（ＬＬ）クエリエンジン及びフォーマット変換エンジンを展開できる環境例１００を示す図面である。環境１００は、Ｈａｄｏｏｐクラスタを含む複数のデータノード１２０ａ〜１２０ｃを含む。データノード１２０ａ〜１２０ｃの中には、ＨＤＦＳのみを実行できるものもあれば、ＨＢａｓｅ領域サーバ１２２ａ〜１２２ｃを実行できるものもある。
【００１５】
環境１００は、Ｊａｖａ（登録商標）データベースコネクティビティ（ＪＤＢＣ）クライアント、及びオープンデータベースコネクティビティ（ＯＤＢＣ）クライアントなどの、Ｈａｄｏｏｐクラスタに接続及び／又はアクセスするためのＡＰＩ及びその他のツールを提供するクライアント１０４を含む。ＨｕｅなどのＳＱＬアプリケーション１０２は、クエリ又はジョブの実行、ＨＤＦＳの閲覧、及びワークフローの作成などのためのＨａｄｏｏｐ用のユーザインターフェイスを提供する。環境１００は、クエリを発行するためのコマンドラインインターフェイス１１６も含む。１つの実施形態では、一般にクライアント１０４、ＳＱＬアプリケーション１０２及びコマンドラインインターフェイス１１６を個別に又はまとめてクライアントと呼ぶことができる。
【００１６】
低レイテンシ（ＬＬ）クエリエンジンデーモン１１４ａ〜１１４ｃは、各データノード上で動作する。低レイテンシ（ＬＬ）クエリエンジンデーモンは、クエリを協調して実行する長時間処理である。各低レイテンシ（ＬＬ）クエリエンジンデーモン１１４ａ〜１１４ｃは、クライアント１０２／１０４を介して受け取られるクエリを受け取り、設計し、協調させることができる。例えば、低レイテンシ（ＬＬ）クエリエンジンデーモンは、クエリをフラグメントに分割し、さらなる低レイテンシ（ＬＬ）クエリエンジンデーモンを実行する遠隔ノード間で同時に実行されるように分散することができる。これらのクエリは、ＨＤＦＳ（例えば、１２０ａ〜１２０ｃ）及び／又はＨＢａｓｅ（例えば、１２２ａ〜１２２ｃ）上で直接実行される。
【００１７】
各データノード上では、フォーマット変換エンジンデーモン１１８ａ〜１１８ｃも実行される。フォーマット変換エンジンデーモン１１８ａ〜１１８ｃは、データをそのオリジナルフォーマットからカラム型フォーマットのＰａｒｑｕｅｔなどのリレーショナルデータベース処理につながる圧縮フォーマットに変換するための長時間処理である。この変換は、１又はそれ以上の時点で実行することができる。変換データは、元々の未変換のデータと共にデータノードに保存され、低レイテンシ（ＬＬ）クエリエンジンはこれらの両方を利用することができる。
【００１８】
環境１００は、Ｈｉｖｅメタストア１０６、ＨＤＦＳネームノード１１０及び／又は状態ストア１１２などの統合メタデータコンポーネントをさらに含む。Ｈｉｖｅメタストア１０６は、環境１００内の様々なエンジンが利用できるデータに関する情報を含む。具体的には、Ｈｉｖｅメタストア１０６は、データノード１２０ａ〜１２０ｃに記憶されているデータのためのスキーマを含む。ＨＤＦＳネームノード（ＮＮ）１１０は、ローカルな読み取りを最適化するために、データノード１２０ａ〜１２０ｃにわたるファイル分散の詳細を含む。１つの実装では、ネームノード１１０が、個々のノード上のファイルが存在するディスクボリュームに関する情報を含むことができる。
【００１９】
状態ストア１１２は、クラスタ内の単一ノード上で動作するグローバルシステムリポジトリである。１つの実装では、データストア１１２をネームサービスとして使用することができる。全ての低レイテンシ（ＬＬ）クエリエンジンデーモンは、起動時に状態ストアに登録してメンバーになり、クラスタ上で実行されている全ての低レイテンシ（ＬＬ）クエリエンジンデーモンを特定する既存のメンバーシップ情報を取得することができる。さらなる実装では、状態ストア１１２を使用して、クエリを実行するためのメタデータを提供することができる。状態ストア１１２は、メタデータをキャッシュし、このメタデータを起動時又は別の時点で低レイテンシ（ＬＬ）クエリエンジンデーモンに分散させることができる。状態ストアが故障した場合、システムの残り部分は、状態ストアから受け取った最後の情報に基づいて動作を継続することができる。さらなる実装では、状態ストアが、負荷情報、診断情報、及びＨａｄｏｏｐクラスタの機能及び／又は性能を高めるために使用できる同様のものなどの他のシステム情報を記憶して分散させることができる。
【００２０】
図２は、バッチ指向のリアルタイムアドホッククエリをサポートする統合Ｈａｄｏｏｐプラットフォーム２１２のコンポーネント例を示すブロック図である。統合Ｈａｄｏｏｐプラットフォーム２１２は、分散処理及び分散ストレージをサポートする。統合Ｈａｄｏｏｐプラットフォーム２１２は、ユーザインターフェイス２１４、ストレージ２２０及びメタデータ２２２コンポーネントを含む。ユーザインターフェイス２１４は、ＯＤＢＣドライバ、ＪＤＢＣドライバ及びＨｕｅ  ＢｅｅｓｗａｘなどのＨｉｖｅインターフェイスを含む。ユーザインターフェイス２１４はＳＱＬサポートも含む。ユーザインターフェイス２１４を介して、クエリを発行すること、ストレージ２２０との間でデータの読み書きを行うことなどができる。ストレージ２２０は、ＨＤＦＳ及び／又はＨＢａｓｅストレージを含む。ＨＤＦＳは、以下に限定されるわけではないが、テキストファイル、シーケンスファイル、ＲＣファイル、Ａｖｒｏなどを含む様々なファイルフォーマットをサポートすることができる。ｓｎａｐｐｙ、ｇｚｉｐ、ｄｅｆｌａｔｅ、ｂｚｉｐなどを含む様々な圧縮コーデックをサポートすることもできる。メタデータ２２２は、例えば、テーブル、そのパーティション、カラム、タイプ、テーブル／ブロック位置などの情報を含むことができる。メタデータ２２２は、ＨＢａｓｅテーブルのマッピング、開始／中止行内にマッピングされる行キーカラム上の述語、単一カラム値フィルタにマッピングされる他のカラム上の述語などを含む既存のＨｉｖｅメタストアを利用することができる。
【００２１】
既存のＨａｄｏｏｐプラットフォームは、Ｈａｄｏｏｐデータのバッチ処理２１６にバッチ指向のクエリエンジン（すなわち、ＭａｐＲｅｄｕｃｅ）を使用する。ＭａｐＲｅｄｕｃｅのバッチ処理能力は、統合Ｈａｄｏｏｐプラットフォーム２１２内のリアルタイムアクセスコンポーネント２１８によって補完される。リアルタイムアクセスコンポーネント２１８は、低レイテンシに最適化された分散低レイテンシ（ＬＬ）クエリエンジンを介して、統合ストレージ２２０に対してリアルタイムアドホックＳＱＬクエリを直接実行できるようにする。従って、リアルタイムアクセスコンポーネント２１８は、ビッグデータに対するクエリ及び分析の両方をサポートすることができる。
【００２２】
図３は、統合ストレージ層に対して対話型のリアルタイムＳＱＬクエリを直接提供するように様々なエンジンのコンポーネントをＨａｄｏｏｐクラスタにインストールするためのインストールマネージャ３０２のコンポーネント例を示すブロック図である。インストールマネージャ３０２は、様々なエンジンを自動的にインストールし、構成し、管理し、モニタすることができる。或いは、これらのエンジンを手動でインストールすることもできる。インストールマネージャ３０２は、低レイテンシ（ＬＬ）クエリエンジンデーモン３０４、状態ストアデーモン３０６、低レイテンシ（ＬＬ）クエリエンジンシェル３０８及びフォーマット変換エンジンデーモン３１０を含む４つのバイナリをインストールする。上述したように、低レイテンシ（ＬＬ）クエリエンジンデーモン３０４は、ＨＤＦＳ及び／又はＨＢａｓｅデータに対するクエリを計画して実行するサービス又は処理である。低レイテンシ（ＬＬ）クエリエンジンデーモン３０４は、クラスタ内の各データノードにインストールされる。フォーマット変換エンジンデーモンは、データをそのオリジナルフォーマットから圧縮フォーマットに変換するサービス又は処理である。フォーマット変換エンジンデーモンも、クラスタ内の各データノードにインストールされる。状態ストアデーモン３０６は、クラスタ内の全ての低レイテンシ（ＬＬ）クエリエンジンデーモンの位置及び状態を追跡するネームサービスである。いくつかの実装では、状態ストアデーモン３０６を、メタデータ及び／又は別の診断情報を提供するためのメタデータストアとすることもできる。低レイテンシ（ＬＬ）クエリエンジンシェル３０８は、低レイテンシ（ＬＬ）クエリエンジンデーモンにクエリを発行するためのコマンドラインインターフェイスであり、クライアントにインストールされる。
【００２３】
図４は、Ｈａｄｏｏｐクラスタ内の各データノードにインストールされた低レイテンシ（ＬＬ）クエリエンジンデーモンのコンポーネント例を示すブロック図である。１つの実施形態では、低レイテンシ（ＬＬ）クエリエンジンデーモンが、クエリプランナ３１６、クエリコーディネータ３１８及びクエリ実行エンジン３２０を含む。
【００２４】
クエリプランナ３１６は、記憶されているスキーマに基づいて、クライアントからのクエリ要求を一群のプランフラグメントに変化させ、これらのプランフラグメントをクエリコーディネータ３１８に提供する。クエリプランナ３１６は、Ｈｉｖｅメタストア、状態ストア及びＡＰＩなどのＨａｄｏｏｐ環境の残り部分とのやりとりが容易になるようにＪａｖａ（登録商標）又は別の好適な言語で書かれた低レイテンシ（ＬＬ）クエリエンジンデーモンのフロントエンドを構築することができる。クエリプランナ３１６は、Ｓｃａｎ、ＨａｓｈＪｏｉｎ、ＨａｓｈＡｇｇｒｅｇａｔｉｏｎ、Ｕｎｉｏｎ、ＴｏｐＮ及びＥｘｃｈａｎｇｅなどの様々な演算子を使用してクエリプランを構築することができる。各演算子は、何らかの方法でデータを実体化又は生成し、或いはデータを組み合わせることができる。１つの実装では、例えば、クエリプランナが、１又はそれ以上の演算子のレフティプラン又はツリーを（例えば、手動で又はオプティマイザを使用して）作成することができる。ｓｃａｎ演算子は、走査行又は境界に沿ってプランを分割することができる。異なるストレージマネージャには、専用のスキャンノードが存在することができる。例えば、ＨＤＦＳ走査ノード及びＨＢａｓｅ走査ノードが存在することができ、これらは各々、内部的に、異なるファイルフォーマットに異なる処理を使用することができる。プランによっては、ハッシュテーブルを満たした後に集約結果を出力できるハッシュアグリゲーションのためにデータを組み合わせるものもある。ｕｎｉｏｎ演算子は、異なるプランフラグメントからの出力を結合することができる。ＴｏｐＮ演算子は、制限付きｏｒｄｅｒ  ｂｙ句に相当することができる。交換演算子は、異なる２つのノード上で実行される２つのプランフラグメント間におけるデータ交換に対処することができる。
【００２５】
クエリコーディネータ３１８は、クエリに関与する全ての低レイテンシ（ＬＬ）クエリエンジンデーモンにわたってプランフラグメントの実行を開始する。クエリコーディネータ３１８は、状態ストアからのメンバーシップ情報及び／又はＨＤＦＳネームノードからのデータブロックの位置情報を使用して、プランフラグメントを実行するための低レイテンシ（ＬＬ）クエリエンジンデーモンを決定又は識別する。１つの実装では、クエリコーディネータ３１８が、クエリからの何らかの述語を適用して、プランフラグメントを実行すべきファイルセット及びブロックセットに範囲を絞り込むこともできる。クエリコーディネータ３１８は、遠隔データノードにおける低レイテンシ（ＬＬ）クエリエンジンデーモンからのデータの最終的な集約又は結合を行うこともできる。１つの実装では、低レイテンシ（ＬＬ）クエリエンジンデーモンが、データの一部を事前に集約することにより、データノード全体に集約を分散させてクエリ処理を高速化する。
【００２６】
クエリ実行エンジン３２０は、ＨＤＦＳ及びＨＢａｓｅに対し、計画したクエリフラグメントをローカルに実行する。例えば、クエリ実行エンジン３２０は、ｓｃａｎ演算子及び／又は他のいずれかのクエリ演算子を実行する。クエリ実行エンジン３２０はＣ＋＋で書かれているが、Ｊａｖａ（登録商標）などの他のいずれかの好適な言語で書くこともできる。クエリ実行エンジン３２０は、ＭａｐＲｅｄｕｃｅとは別の実行エンジンである。クエリ実行エンジン３２０は、データを提供する基盤（例えば、ＨＤＦＳ及びＨＢａｓｅ）にアクセスするが、ジョブトラッカ及びタスクトラッカなどの、マップリダクションをサポートする基盤は利用しない。
【００２７】
１つの実施形態では、最初にデータが到来し、そのオリジナルフォーマットでＨＤＦＳデータノードに記憶される。ユーザ又は管理者が作成することができる、データを記憶する際のファイルフォーマット情報を含む１又はそれ以上の関連スキーマは、データが記憶されると同時に、又はその後にＨｉｖｅメタストア１０６に別々に保存される。１つの実施形態では、クエリが提出された後に、まずいくつかの計画されたクエリフラグメントをローカルで実行するデータノード上のクエリ実行エンジン３２０が、スキーマに従ってそのデータノード上のファイルを転換する。具体的には、クエリ実行エンジン３２０は、例えば、Ｈｉｖｅメタストアからのファイルの行及び列の終端に関する情報を含むスキーマを読み取る。次に、クエリ実行エンジン３２０は、データノードからファイルを読み取り、スキーマ内で指定されたファイルフォーマットに従ってこのファイルを解析し、この解析したデータを、スキーマ内のさらなる情報に従って一連のメモリ内タプルに転換する。この時、クエリ実行エンジン３２０は、計画されたクエリフラグメントをこの転換結果に対してローカルで実行できる状態になっている。
【００２８】
１つの実施形態では、クエリ実行エンジン３２０が、中央処理装置（ＣＰＵ）が効率的に実行できるフォーマットに解釈コードを転換するために、低水準仮想機械（ＬＬＶＭ）３２２、オプティマイザ、又はランタイムコードを生成するためのその他のコンパイラ基盤を含むことができる。例えば、典型的なＲＤＢＭＳは、インデックスなどからデータを抽出するために、式を評価するための解釈コードを有する。クエリ実行エンジン３２０は、低水準仮想機械（ＬＬＶＭ）を使用してコードをハードウェアに密接に結合することによってこの問題に対処する。例えば、クエリ内のＡ＝Ｂ／（Ａ＋Ｂ）＝Ｃという式は、３つの関数呼び出しを行うことによって評価することができる。ＬＬＶＭは、この式を評価して速度を高めるために、３つの関数呼び出しを行う代わりにＣＰＵが提供する演算を使用する。
【００２９】
さらなる実施形態では、低レイテンシ（ＬＬ）クエリエンジンデーモンが、例えばテキスト処理及び／又はその他のリソース集約的な処理を行うために特定のＣＰＵ命令を使用することもできる。別の例として、速度を高めるために、特別な巡回冗長検査（ＣＲＣ３２）命令を使用してハッシュ値計算を実行することもできる。
【００３０】
１つの実施形態では、低レイテンシ（ＬＬ）クエリエンジンが、ユーザが大量のデータにクエリを行い、Ｈｉｖｅ及びＭａｐＲｅｄｕｃｅの既存のバッチ処理フレームワークを用いて実現可能な速度よりもはるかに早い速度で応答を得られるようにするという低レイテンシの利点をもたらす。さらなる実施形態では、リアルタイムクエリエンジンが、大量のデータに埋もれた洞察を検索するために使用するスキーマを適用する上で柔軟性をもたらす。
【００３１】
クエリ実行エンジンが異なるファイルフォーマットのデータを解析して転換するのに掛かる時間は様々である。一般に、この時間は、ＳＱＬライクなクエリに応答するリレーショナルデータベースの処理に対するファイルフォーマットの貢献度が高い場合には減少する。従って、フォーマット変換エンジンは、データをこのようなファイルフォーマットにバックグラウンドで変換してランタイムクエリ処理の効率を高める。図５は、Ｈａｄｏｏｐクラスタ内の各データノードにインストールされたフォーマット変換エンジンデーモンのコンポーネント例を示すブロック図である。１つの実施形態では、フォーマット変換エンジンデーモンが、スケジューラ４１２及びコンバータ４１４を含む。スケジューラ４１２は、管理者又はユーザによる入力に基づいてフォーマット変換をいつ行うべきかを決定し、この時間が来た時にコンバータに通知する。１つの例では、スケジューラ４１２が、周期的に又は将来の特定の時点でフォーマット変換を行えるようにタイマを使用する。この将来の特定の時点は、データの作成、その最初の更新又は最後の更新などのイベントの発生から測定することができる。他の例では、データが更新された時、検索された時、及び同じクエリを用いて検索された時などに、変換が何回か行われる。従って、スケジューラ４１２は、総更新回数、全てのクエリの総数、特定のクエリの総数、異なるクエリの総数などのカウンタを保持し、これらの回数に関する基準が満たされた時にフォーマット変換を行うことができる。さらなる例では、フォーマット変換をスケジュールする際に、データノード上のリソースの利用状態を考慮する。
【００３２】
１つの実施形態では、スケジューラ４１２が、データノード上のデータ毎、オリジナルフォーマット毎、対象フォーマット毎、オリジナルフォーマットと対象フォーマットのペア毎などに１つのスケジュールを維持する。別の実施形態では、スケジューラ４１２が、フォーマット変換をいつ行うべきかについての決定と同様に、変換結果をいつデータノードから削除すべきかを決定し、この時間が来た時にコンバータ４１４に通知する。フォーマット変換エンジンデーモンのスケジューラ４１２は、単独で動作できる一方で、別のフォーマット変換エンジンデーモンのスケジューラと連動して、複数のデータノード、さらにはクラスタ全体にわたって系統的にフォーマット変換を行うこともできる。
【００３３】
コンバータ４１４は、スケジューラ４１２から通知を受け取った時にフォーマット変換を行う。１つの実施形態では、コンバータ４１４が、１又はそれ以上の対象フォーマットのリストを保持する。コンバータ４１４は、管理者又はユーザによる入力に基づいて、データノード上のデータを対象フォーマットの１つに変換し、この変換したデータをオリジナルデータと共にデータノードに保存する。例えば、コンバータ４１４は、ＣＳＶフォーマットのファイルをデータノードからメモリに読み取り、このファイルをＣＳＶフォーマットに従って解析し、これを選択したＰａｒｑｕｅｔフォーマットに変換して、このＰａｒｑｕｅｔフォーマットのファイルをＣＳＶフォーマットのファイルと共にデータノードに保存することができる。１つの実施形態では、いくつかのオリジナルフォーマットと対象フォーマットの間の変換を、場合によってはＨｉｖｅメタストアに記憶されている特定のスキーマに基づいて完全に自動化することができる。例えば、ＣＳＶファイル内の全てのフィールドをＰａｒｑｕｅｔファイル内の列に自動的に変換することができる。この変換を管理者又はユーザがカスタマイズし、入力ファイルを、例えば特定の順番で配列された入力ファイル内の選択フィールドを各々が有する同じ又は異なる対象フォーマットの複数の出力ファイルに変換すると決定することもできる。別の実施形態では、コンバータ４１４が、スケジューラ４１２から通知を受け取った時にいくつかの変換結果の削除も行う。
【００３４】
通常、対象フォーマットは、リレーショナルデータベースの処理に寄与する圧縮フォーマットであるため、データを対象フォーマットで準備することによってＳＱＬライクなクエリの処理速度が増す。フォーマット変換は、厳選された時点にバックグラウンドで行われるので、リソースの使用、及びデータノードにおける他の動作との干渉を最小限に抑える傾向にある。
【００３５】
１つの実施形態では、フォーマット変換エンジンデーモンと共に、クエリプランナが、クエリの提出後にプランフラグメントをセットアップして、変換したデータが利用可能であることを示す。この結果、データノード上のクエリ実行エンジンは、もはやデータノード上のデータの複雑な転換を行う必要がなくなる。クエリ実行エンジンは、基本的にタプル形式の変換データをデータノードから単純に読み取ればよい。従って、フォーマット変換エンジンデーモンは、データのアップロード時及び更新時に長い処理時間を必要とするモデルの何らかのコストを被ることなく、クエリ処理でデータを使用する際の処理時間を短縮することにより、スキーマ・オン・ライトモデルのいくつかの利点をもたらす。
【００３６】
図６は、フォーマット変換エンジンの存在下におけるクエリの設計及び実行の動作例を示すフローチャートである。ステップ６０２において、クエリプランナがクエリを受け取る。ステップ６０３において、クエリプランナは、関連するスキーマ情報を見直して、データを記憶する際の利用可能なファイルフォーマットを識別する。オリジナルフォーマットのデータのみが利用可能である場合、クエリプランナは、ステップ６０４において、このオリジナルフォーマットのためのプランフラグメントを定める。一方、変換された対象フォーマットのデータも利用可能である場合、クエリプランナは、ステップ６０６において、この対象フォーマットのためのプランフラグメントを定める。
【００３７】
データノード上のクエリ実行エンジンは、ステップ６０８において、一群の計画されたクエリフラグメントを受け取ると、データノードから適当なファイルフォーマットのデータを読み取る。ステップ６１０において、クエリ実行エンジンは、スキーマ情報に従ってデータを一連のメモリ内タプルに転換する。ステップ６１２において、クエリ実行エンジンは、メモリ内タプルを用いて一群の計画されたクエリフラグメントを実行する。これらの特徴により、データのアップロード及び更新時に大きなオーバーヘッドを招かずに異なる構造のデータセットを試行できると同時に、データセットから特定の洞察を効率的に抽出できるという柔軟性がユーザに与えられる。
【００３８】
図７は、本明細書で説明する方法のいずれか１つ又はそれ以上を機械に実行させる命令セットを実行できる例示的なコンピュータシステムの形の機械の図形表現である。
【００３９】
図７の例では、コンピュータシステム７００が、プロセッサ、メモリ、不揮発性メモリ及びインターフェイス装置を含む。説明を簡単にするために、様々な一般的なコンポーネント（キャッシュメモリなど）は省略している。コンピュータシステム７００は、図１の例に示すコンポーネントのいずれか（及び本明細書で説明した他のいずれかのコンポーネント）を実装できるハードウェア装置を示すことを意図したものである。コンピュータシステム７００は、あらゆる適用可能な既知の又は好都合なタイプとすることができる。コンピュータシステム７００のコンポーネントは、バスを介して、又は他の何らかの既知の又は好都合な装置を介して共に結合することができる。
【００４０】
プロセッサは、例えば、Ｉｎｔｅｌ  Ｐｅｎｔｉｕｍ（登録商標）マイクロプロセッサ又はＭｏｔｏｒｏｌａパワーＰＣマイクロプロセッサなどの従来のマイクロプロセッサとすることができる。当業者であれば、「機械可読（記憶）媒体」又は「コンピュータ可読（記憶）媒体」という用語は、プロセッサがアクセス可能なあらゆる種類の装置を含むと認識するであろう。
【００４１】
メモリは、例えばバスによってプロセッサに結合される。メモリは、限定ではなく一例として、ダイナミックＲＡＭ（ＤＲＡＭ）及びスタティックＲＡＭ（ＳＲＡＭ）などのランダムアクセスメモリ（ＲＡＭ）を含むことができる。メモリは、ローカルメモリ、遠隔メモリ、又は分散メモリとすることができる。
【００４２】
バスは、プロセッサを不揮発性メモリ及びドライブユニットにも接続する。多くの場合、不揮発性メモリは、磁気フロッピー（登録商標）又はハードディスク、磁気光学ディスク、光学ディスク、ＣＤ−ＲＯＭ、ＥＰＲＯＭ、又はＥＥＰＲＯＭなどのリードオンリメモリ（ＲＯＭ）、磁気又は光学カード、或いは大量データのための別の形の記憶装置である。多くの場合、このデータの一部は、コンピュータ７００内のソフトウェアの実行中に、直接メモリアクセス処理によってメモリに書き込まれる。不揮発性ストレージは、ローカルストレージ、遠隔ストレージ、又は分散ストレージとすることができる。全ての適用可能なデータをメモリ内で利用できる状態でシステムを構築できるので、不揮発性メモリは任意である。通常、典型的なコンピュータシステムは、少なくともプロセッサ、メモリ、及びメモリをプロセッサに結合する装置（バスなど）を含む。
【００４３】
通常、ソフトウェアは、不揮発性メモリ及び／又はドライブユニットに記憶される。実際には、大きなプログラムの場合、プログラム全体をメモリに記憶することさえ不可能なこともある。それにもかかわらず、ソフトウェアは、必要時には実行のために処理に適したコンピュータ可読の場所に移動され、本明細書ではこの場所のことを例示的にメモリと呼ぶ。ソフトウェアを実行のためにメモリに移した場合でも、通常、プロセッサはソフトウェアに関連する値を記憶するためにハードウェアレジスタを利用し、理想的には実行速度を上げるように機能するローカルキャッシュを利用する。ソフトウェアプログラムが「コンピュータ可読媒体に実装される」と言う場合、本明細書で使用するソフトウェアプログラムは、（不揮発性記憶装置からハードウェアレジスタまでの）いずれかの既知の又は好都合な場所に記憶されることが想定される。プログラムに関連する少なくとも１つの値がプロセッサ可読レジスタに記憶されている場合、プロセッサは、「そのプログラムを実行するように構成されている」と見なされる。
【００４４】
バスは、プロセッサをネットワークインターフェイス装置にも結合する。インターフェイスは、モデム又はネットワークインターフェイスの一方は両方を含むことができる。モデム又はネットワークインターフェイスは、コンピュータシステムの一部であると見なすこともできる。インターフェイスは、アナログモデム、ｉｓｄｎモデム、ケーブルモデム、トークンリングインターフェイス、衛星送信インターフェイス（「ダイレクトＰＣ」など）、又はコンピュータシステムを他のコンピュータシステムに結合するためのその他のインターフェイスを含むこともできる。インターフェイスは、１又はそれ以上の入力及び／又は出力装置を含むこともできる。Ｉ／Ｏ装置は、限定ではなく一例として、キーボード、マウス又はその他のポインティングデバイス、ディスクドライブ、プリンタ、スキャナ、及びディスプレイ装置を含むその他の入力及び／又は出力装置を含むことができる。ディスプレイ装置は、限定ではなく一例として、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、又は他の何らかの適用可能な既知の又は好都合なディスプレイ装置を含むことができる。説明を簡単にするために、インターフェイス内には、図７の例には示していないいずれかの装置のコントローラが存在すると想定される。
【００４５】
動作時には、コンピュータシステム７００を、ディスクオペレーティングシステムなどのファイル管理システムを含むオペレーティングシステムソフトウェアによって制御することができる。関連するファイル管理システムソフトウェアを含むオペレーティングシステムソフトウェアの一例として、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ社製のＷｉｎｄｏｗｓ（登録商標）として知られているオペレーティングシステムのファミリ、及びこれらの関連するファイル管理システムがある。関連するファイル管理システムソフトウェアを含むオペレーティングシステムソフトウェアの別の例には、Ｌｉｎｕｘ（登録商標）オペレーティングシステム及びこの関連するファイル管理システムがある。通常、ファイル管理システムは、不揮発性メモリ及び／又はドライブユニットに記憶され、オペレーティングシステムが必要とする様々な行為をプロセッサに実行させてデータを入出力するとともに、ファイルを不揮発性メモリ及び／又はドライブユニットに記憶することを含めてデータをメモリに記憶する。
【００４６】
詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号表現の観点から示すことができる。これらのアルゴリズムによる記述及び表現は、データ処理技術における当業者が自らの研究内容を他の当業者に最も効果的に伝えるために使用する手段である。ここでは、及び一般的に、アルゴリズムとは、望ましい結果をもたらす首尾一貫した一連の演算であると考えられる。これらの演算は、物理量の物理的操作を必要とするものである。必ずしもそうではないが、通常、これらの量は、記憶し、転送し、合成し、比較し、別様に操作することができる電気又は磁気信号の形をとる。主に共通使用という理由で、時にはこれらの信号を、ビット、値、要素、記号、文字、用語、番号などと呼ぶことが便利であることが分かっている。
【００４７】
しかしながら、これらの及び同様の用語は、全て適当な物理量に関連付けられるべきものであり、またこれらの量に与えられた便利な表記にすぎないことに留意されたい。以下の説明から明らかなように、特に別途述べていない限り、説明全体を通じて「ｐｒｏｃｅｓｓｉｎｇ（処理する）」又は「ｃｏｍｐｕｔｉｎｇ（算出する）」又は「ｃａｌｃｕｌａｔｉｎｇ（計算する）」又は「ｄｅｔｅｒｍｉｎｉｎｇ（決定する）」又は「ｄｉｓｐｌａｙｉｎｇ（表示する）」などの用語を利用した説明は、コンピュータシステムのレジスタ及びメモリ内の物理（電子）量として表されるデータを操作し、コンピュータシステムのメモリ、レジスタ、又はその他のこのような情報記憶装置、送信又は表示装置内の物理量として同様に表される他のデータに転換するコンピュータシステム又は同様の電子コンピュータ装置の動作及び処理を意味するものである。
【００４８】
本明細書で示すアルゴリズム及び表示は、本質的にいずれかの特定のコンピュータ又はその他の装置に関連するものではない。本明細書の教示に従うプログラムと共に様々な汎用システムを使用することができ、或いはいくつかの実施形態の方法を実行するために、より特殊化した装置を構成することが便利であると証明することができる。以下の説明から様々なこれらのシステムに必要な構造が明らかになるであろう。また、いずれかの特定のプログラミング言語に関連して技術を説明しているわけではなく、従って様々なプログラミング言語を使用して様々な実施形態を実施することができる。
【００４９】
別の実施形態では、機械が独立装置として動作することも、又は他の機械に接続する（例えば、ネットワーク化する）こともできる。ネットワーク化した展開では、この機械は、クライアント−サーバのネットワーク環境ではサーバ又はクライアントマシンとして、又はピアツーピア（又は分散型）ネットワーク環境ではピアマシンとして動作することができる。
【００５０】
この機械は、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、ラップトップコンピュータ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、携帯電話、ｉＰｈｏｎｅ、Ｂｌａｃｋｂｅｒｒｙ、プロセッサ、電話機、ウェブ機器、ネットワークルータ、スイッチ又はブリッジ、又はこの機械がとるべき行動を指定する（順次的な又はそれ以外の）命令セットを実行できるいずれの機械であってもよい。
【００５１】
例示的な実施形態では、機械可読媒体又は機械可読記憶媒体を単一の媒体として示しているが、「機械可読媒体」及び「機械可読記憶媒体」という用語は、１又はそれ以上の命令セットを記憶する単一の媒体又は複数の媒体（集中型又は分散型データベース及び／又は関連するキャッシュ及びサーバなど）を含むと理解されたい。また、この「機械可読媒体」及び「機械可読記憶媒体」という用語は、機械が実行するための命令セットを記憶し、コード化し、又は伝達することができ、本明細書で開示した技術及び技術革新の方法のいずれか１つ又はそれ以上を機械に実行させるいずれかの媒体を含むとも理解されたい。
【００５２】
一般に、本開示の実施形態を実装するために実行されるルーチンは、オペレーティングシステム又は特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール、又は「コンピュータプログラム」と呼ばれる命令シーケンスの一部として実現することができる。通常、コンピュータプログラムは、コンピュータ内の様々なメモリ及び記憶装置に様々な時点で設定され、コンピュータ内の１又はそれ以上の処理装置又はプロセッサに読み込まれて実行された場合に本開示の様々な態様に関する要素を実行するようにコンピュータを動作させる１又はそれ以上の命令を含む。
【００５３】
さらに、完全に機能するコンピュータ及びコンピュータシステムを背景として実施形態を説明したが、当業者であれば、様々な実施形態を様々な形のプログラム製品として分散させることができ、また実際に分散を行うために、特定の種類の機械又はコンピュータ可読媒体に関係なく本開示が等しく適用されると認識するであろう。
【００５４】
機械可読記憶媒体、機械可読媒体、又はコンピュータ可読（記憶）媒体のさらなる例としては、以下に限定されるわけではないが、とりわけ揮発性及び不揮発性記憶装置、フロッピー（登録商標）及びその他のリムーバブルディスク、ハードディスクドライブ、（コンパクトディスク型リードオンリメモリ（ＣＤ―ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）などの）光ディスクなどの記録可能型媒体、及びデジタル及びアナログ通信リンクなどの送信型媒体が挙げられる。
【００５５】
文脈上明確に別の意味に解す場合を除き、明細書及び特許請求の範囲を通じて、「備える（ｃｏｍｐｒｉｓｅ、ｃｏｍｐｒｉｓｉｎｇ）」という単語、及び同様の単語は、排他的又は網羅的な意味ではなく包括的な意味で、すなわち「含むけれども限定はされない」という意味で解釈すべきである。本明細書で使用する「接続された（ｃｏｎｎｅｃｔｅｄ）」、「結合された（ｃｏｕｐｌｅｄ）」という用語、又はこれらのあらゆる変形は、２又はそれ以上の要素間の直接的又は間接的な接続又は結合を意味し、要素間の接続の結合は、物理的なもの、論理的なもの、又はこれらの組み合わせとすることができる。また、「本明細書において（ｈｅｒｅｉｎ）」、「上記で（ａｂｏｖｅ）」、「以下で（ｂｅｌｏｗ）」という単語、及び同様の趣旨の単語は、本出願において使用する場合、総じて本出願のことを意味し、本出願のいずれかの特定の部分を意味するものではない。状況によっては、上記の詳細な説明において単数形又は複数形を使用した単語が、それぞれ複数又は単数を含むこともある。２又はそれ以上の項目のリストに関する「又は（ｏｒ）」という単語は、リスト内の項目のいずれか、リスト内の項目全て、及びリスト内の項目のいずれかの組み合わせという単語の解釈を全て含む。
【００５６】
上記の本開示の実施形態についての詳細な説明は網羅的なものではなく、又は本教示を上記で開示した形に限定するものでもない。上記では、例示を目的として本開示の特定の実施形態及び例について説明しているが、当業者であれば認識するように、本開示の範囲内で様々な同等の修正が可能である。例えば、処理又はブロックを所与の順序で示しているが、別の実施形態では、ステップを有するルーチンを異なる順序で実施し、又は異なる順序のブロックを有するシステムを使用することができ、いくつかの処理又はブロックを削除、移動、追加、細分化、結合、及び／又は修正して代替例又は副結合を提供することができる。これらの処理又はブロックの各々は、様々な異なる方法で実装することができる。また、場合によって処理又はブロックが連続して実行されるように示しているが、代わりにこれらの処理又はブロックを並行に、又は異なる時点で実行することもできる。さらに、本明細書に示すあらゆる特定の数字は一例にすぎず、別の実施構成では異なる値又は範囲を使用することができる。
【００５７】
本明細書で示した本開示の教示は、上述のシステムに限らず他のシステムにも適用することができる。上述した様々な実施形態の要素及び行為を組み合わせてさらなる実施形態を実現することもできる。
【００５８】
上述したあらゆる特許及び出願及びその他の引用文献は、添付の出願書類にリストできるあらゆるものを含め、引用により本明細書に組み入れられる。必要であれば、本開示の態様を、上述した様々な引用文献のシステム、機能及び概念を採用してさらに別の本開示の実施形態を提供するように修正することもできる。
【００５９】
上記の詳細な説明に照らして、これらの及びその他の変更を本開示に行うこともできる。上記の説明では本開示のいくつかの実施形態について説明し、また考えられる最良の形態について説明しているが、これらが本文中でいかに詳述されているように見えても、様々な方法で教示を実践することができる。システムの詳細は、その実装の詳細を大幅に変更することができるが、それでもなお本明細書で開示する主題に含まれる。上述したように、本開示のいくつかの特徴又は態様を説明する際に使用した特定の用語を、この用語が関連する本開示のいずれかの特定の特性、特徴又は態様に制約されるように本明細書で再定義されていることを意味すると理解すべきではない。一般に、以下の特許請求の範囲で使用する用語は、上記の詳細な説明で明確に定義していない限り、本開示を本明細書で開示する特定の実施形態に限定するものであると解釈すべきではない。従って、本開示の実際の範囲は、開示した実施形態のみならず、特許請求の範囲による開示を実践又は実施する全ての同等の方法も含むものである。
【００６０】
以下では、本開示のいくつかの態様をいくつかの請求項の形で示すが、本発明者らは、本開示の様々な態様をあらゆる数の請求項の形で企図する。例えば、米国特許法第１１２条第１３段に基づき、本開示の１つの態様のみをミーンズ・プラス・ファンクションの請求項として記載しているが、他の態様も同様にミーンズ・プラス・ファンクションの請求項として、又はコンピュータ可読媒体内で具体化されるような他の形で具体化することができる。（米国特許法第１１２条第１３段に基づいて取り扱われることを想定した請求項は、いずれも「〜のための手段（ｍｅａｎｓ  ｆｏｒ)」という単語で始まる。）従って、本出願人は、本願出願後に追加の請求項を加えて、このような本開示の他の態様のための追加の請求項形式を続行する権利を有するものである。
【図３】
2015072688.tif 000003
【図４】
2015072688.tif 000004
【図５】
2015072688.tif 000005
【図１】
2015072688.tif 000006
【図２】
2015072688.tif 000007
【図６】
2015072688.tif 000008
【図７】
2015072688.tif 000009
【外国語明細書】
2015072688000001.pdf