(57)【要約】  データ検索システムへの問合せへの少ない待ち時間の応答を提供するための方法は、第１デジタルデータを第１デジタルデータリポジトリに第１列指向記憶形式を使用して記憶するステップと、第２デジタルデータを第２デジタルデータリポジトリに前記第１列指向記憶形式と異なる第２列指向記憶形式を使用して記憶するステップと、複数の予め計算されたビューをエクスポージャーデータ及びリスク項目データ両方に基づいて生成するステップと、前記複数の予め計算されたビューを前記第２デジタルデータリポジトリに前記第２列指向記憶形式を使用して記憶するステップと、検索問合せを受信したことに応答して、前記問合せに答える結果セットを前記複数の予め計算されたビューのうち１つ以上の特定の予め計算されたビューに基づいて決定し、前記結果セットを別のコンピュータ又は表示装置に出力として提供するステップとを含む。
2021522570.tif 000002
【特許請求の範囲】
【請求項１】
データ検索システムへの問合せへの少ない待ち時間の応答を提供するためのコンピュータ実行方法であって、
第１デジタルデータを第１デジタルデータリポジトリに第１列指向記憶形式を使用して記憶するステップと、
第２デジタルデータを第２デジタルデータリポジトリに前記第１列指向記憶形式と異なる第２列指向記憶形式を使用して記憶するステップと、
複数の予め計算されたビューを前記第１デジタルデータ及び前記第２デジタルデータ両方に基づいて生成するステップと、
前記複数の予め計算されたビューを前記第２デジタルデータリポジトリに前記第２列指向記憶形式を使用して記憶するステップと、
検索問合せを受信したことに応答して、前記問合せに答える結果セットを前記複数の予め計算されたビューのうち１つ以上の特定の予め計算されたビューに基づいて決定し、前記結果セットを別のコンピュータ又は表示装置に出力として提供するステップと
を含み、１つ以上の計算装置を使用して実行されるコンピュータ実行方法。
【請求項２】
前記第１列指向記憶形式はＫｕｄｕデータ形式である、請求項１記載の方法。
【請求項３】
前記第２列指向記憶形式はＰａｒｑｕｅｔデータ形式である、請求項１記載の方法。
【請求項４】
前記第１デジタルデータリポジトリ及び前記第２デジタルデータリポジトリは分散ファイルシステムに格納される、請求項１記載の方法。
【請求項５】
前記１つ以上の計算装置は、ジョブサーバーによって管理されるクラスター化された１つ以上の計算インスタンスから成る、請求項１記載の方法。
【請求項６】
前記ジョブサーバーのメモリに前記クラスター化された１つ以上の計算インスタンスのために永続性接続コンテキストデータを記憶するステップを更に含む請求項５記載の方法。
【請求項７】
前記第１デジタルデータは複数のリスクエクスポージャーに関連するエクスポージャーデータから成り、各リスクエクスポージャーは一組のリスク項目を指定し、
前記第２デジタルデータは複数のリスク項目に関連するリスク項目データから成り、前記複数のリスク項目は少なくとも前記指定された複数組のリスク項目を含む、請求項１記載の方法。
【請求項８】
前記リスク項目データは複数のリスク項目種類を含み、
該方法は、
前記複数のリスク項目種類のうちの各リスク項目種類について、前記リスク項目種類に関連するスキーマを記憶するステップを更に含み、
追加のリスク項目種類を加えることは前記追加のリスク項目種類に関連するスキーマを記憶することを含む、請求項７記載の方法。
【請求項９】
前記問合せは第１リスク項目種類及び第２リスク項目種類を指定し、
該方法は、
前記第１リスク項目種類に関連する第１スキーマを前記第２リスク項目種類に関連する第２スキーマと結合して結合されたスキーマを生成するステップと、
前記第１リスク項目種類及び前記第２リスク項目種類を含む結合されたリスク項目ビューを前記結合されたスキーマを使用して生成するステップと、
前記問合せを前記結合されたリスク項目ビューに基づいて処理するステップと
を更に含む請求項８記載の方法。
【請求項１０】
予め計算されたビューを生成するステップは、前記第１列指向記憶形式を使用して記憶された第１組のデータを前記第２列指向記憶形式を使用して記憶された第２組のデータと連結することを含む、請求項１記載の方法。
【請求項１１】
少ない待ち時間の検索問合せ応答を提供するためにプログラムされたサーバーコンピュータシステムであって、
Ｋｕｄｕデータリポジトリと、
Ｐａｒｑｕｅｔデータリポジトリと、
Ｓｐａｒｋクラスターマネージャーによって管理されるＳｐａｒｋクラスター化された複数の計算インスタンスであって、
エクスポージャーデータを前記Ｋｕｄｕデータリポジトリに記憶するステップと、
リスク項目データを前記Ｐａｒｑｕｅｔデータリポジトリに記憶するステップと、
複数の予め計算されたビューを前記エクスポージャーデータ及び前記リスク項目データに基づいて生成するステップと、
前記複数の予め計算されたビューを前記Ｐａｒｑｕｅｔデータリポジトリに記憶するステップと、
問合せを受信したことに応答して、前記問合せを前記複数の予め計算されたビューのうち１つ以上の特定の予め計算されたビューに基づいて処理するステップと
を実行するように構成された、Ｓｐａｒｋクラスター化された複数の計算インスタンスと
を備えるサーバーコンピュータシステム。
【請求項１２】
少ない待ち時間の検索問合せ応答を提供するためにプログラムされたサーバーコンピュータシステムであって、
第１列指向記憶形式を利用する第１デジタルデータリポジトリと、
前記第１列指向記憶形式と異なる第２列指向記憶形式を利用する第２デジタルデータリポジトリと、
クラスター化された複数の計算インスタンスであって、
第１デジタルデータを前記第１デジタルデータリポジトリに前記第１列指向記憶形式を使用して記憶するステップと、
第２デジタルデータを前記第２デジタルデータリポジトリに前記第２列指向記憶形式を使用して記憶するステップと、
複数の予め計算されたビューを前記第１デジタルデータ及び前記第２デジタルデータ両方に基づいて生成するステップと、
前記複数の予め計算されたビューを前記第２デジタルデータリポジトリに前記第２列指向記憶形式を使用して記憶するステップと、
検索問合せを受信したことに応答して、前記検索問合せに答える結果セットを前記複数の予め計算されたビューのうち１つ以上の特定の予め計算されたビューに基づいて決定し、前記結果セットを別のコンピュータ又は表示装置に出力として提供するステップと
を実行するように構成された、クラスター化された複数の計算インスタンスと
を備えるサーバーコンピュータシステム。
【請求項１３】
前記第１列指向記憶形式はＫｕｄｕデータ形式である、請求項１２記載のサーバーコンピュータシステム。
【請求項１４】
前記第２列指向記憶形式はＰａｒｑｕｅｔデータ形式である、請求項１２記載のサーバーコンピュータシステム。
【請求項１５】
前記第１デジタルデータリポジトリ及び前記第２デジタルデータリポジトリは分散ファイルシステムに格納される、請求項１２記載のサーバーコンピュータシステム。
【請求項１６】
前記クラスター化された複数の計算インスタンスのうち全ての計算インスタンスはジョブサーバーによって管理される、請求項１２記載のサーバーコンピュータシステム。
【請求項１７】
前記ジョブサーバーは前記クラスター化された複数の計算インスタンスのために永続性接続コンテキストデータを記憶する、請求項１６記載のサーバーコンピュータシステム。
【請求項１８】
前記第１デジタルデータは複数のリスクエクスポージャーに関連するエクスポージャーデータから成り、各リスクエクスポージャーは一組のリスク項目を指定し、
前記第２デジタルデータは複数のリスク項目に関連するリスク項目データから成り、前記複数のリスク項目は少なくとも前記指定された複数組のリスク項目を含む、請求項１２記載のサーバーコンピュータシステム。
【請求項１９】
前記リスク項目データは複数のリスク項目種類を含み、
前記クラスター化された複数の計算インスタンスは、
前記複数のリスク項目種類のうちの各リスク項目種類について、前記リスク項目種類に関連するスキーマを記憶するように更に構成され、
追加のリスク項目種類を加えることは前記追加のリスク項目種類に関連するスキーマを記憶することを含む、請求項１８記載のサーバーコンピュータシステム。
【請求項２０】
前記問合せは第１リスク項目種類及び第２リスク項目種類を指定し、
前記クラスター化された複数の計算インスタンスは、
前記第１リスク項目種類に関連する第１スキーマを前記第２リスク項目種類に関連する第２スキーマと結合して結合されたスキーマを生成し、
前記第１リスク項目種類及び前記第２リスク項目種類を含む結合されたリスク項目ビューを前記結合されたスキーマを使用して生成し、
前記問合せを前記結合されたリスク項目ビューに基づいて処理するように更に構成されている、請求項１９記載のサーバーコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は電子デジタルデータ記憶システムの技術分野に入る。本開示はまた、問合せ処理及びデータ記憶用にプログラムされたコンピュータシステム、特に少ない待ち時間の応答を検索問合せに提供するためのデータ記憶システムの技術分野に入る。
【背景技術】
【０００２】
この項で記載される手法は追求されうる手法であるが、以前想到された又は追求された手法では必ずしもない。従って、特に断らない限り、この項で記載される手法のいずれもこの項に含まれているだけで従来技術と認定されると考えるべきではない。
【０００３】
「ビッグデータ」は、従来のデータベース管理ツール又は従来のデータ処理アプリケーションを使って処理することが困難なほど大きく複雑なデータセットの集合を表す。今日、企業及びデータセンターアプリケーションは益々大きなデータセットが最小の待ち時間で処理されることを要求する。
【０００４】
データ処理アプリケーション配備について１つの考慮事項は、データベースシステムを最適な問合せ性能のために構成することである。大きなデータセットは数十億の行を横切る数百の列から成ってもよく、そのデータセットを対象とする問合せは、数百の列のうち任意の列上の述語を含んでもよい。例えば、保険データは数百の保険ポートフォリオを含んでもよく、各ポートフォリオは多数の保険契約書を含み、全部で数十万の物件情報を包含する。各物件情報は数百の属性、例えば所番地、地域情報、土壌種類、構造種類などを含んでもよい。
【０００５】
一例の問合せは海岸線から５マイル（約８ｋｍ）に位置し木造建造物を有し砂地上にある全ての物件を検索する要求であってもよい。代表的なデータベースシステムはこの量のデータを記憶するように拡張可能でないことがある。また、このような要求は計算し結果を提供するのにかなりの量の時間を要するであろう。Ｃａｓｓａｎｄｒａ又はＨＢａｓｅなどのキー・値データ蓄積はより良好な問合せ処理時間を有するかも知れないが、任意のデータ列上の述語を有しうる問合せを処理できない。
【０００６】
従って、大きなデータセットの任意の列に対する問合せを受け付け、大きな遅延なく検索結果を提供するデータ処理システムが望まれる。
【発明の概要】
【０００７】
検索問合せに少ない待ち時間の応答を提供するデータ検索システムのための手法が提供される。少ない待ち時間の応答は検索問合せに対するリアルタイム又はリアルタイムに近い応答であってよい。
【０００８】
１つの実施形態では、第１デジタルデータが第１デジタルデータリポジトリに第１列指向記憶形式を使って記憶される。第２デジタルデータが第２デジタルデータリポジトリに第１列指向記憶形式と異なる第２列指向記憶形式を使って記憶される。複数の予め計算されたビューがエクスポージャーデータ及びリスク項目データ両方に基づいて生成される。複数の予め計算されたビューは第２デジタルデータリポジトリに第２列指向記憶形式を使って記憶される。検索問合せを受信したことに応答して、その問合せに答える結果セットが複数の予め計算されたビューのうち１つ以上の特定の予め計算されたビューに基づいて決定される。結果セットは別のコンピュータ又は表示装置に出力として提供される。
【０００９】
１つの実施形態では、少ない待ち時間の問合せ応答を提供するためのサーバーシステムはＫｕｄｕデータリポジトリ、Ｐａｒｑｕｅｔデータリポジトリ、及びＳｐａｒｋクラスターマネージャーにより管理されるＳｐａｒｋクラスター化された複数の計算インスタンスを備える。
【図面の簡単な説明】
【００１０】
添付図面において、
【図１】１つの実施形態に係る、記載の手法が実行されてよい一例のコンピュータシステムを示す。
【図２】１つの実施形態に係る、永続性クライアント接続を管理する一例のジョブサーバーを示す。
【図３】１つの実施形態に係る、検索問合せへの応答を提供するためのフローチャートを例示する。
【図４】実施形態が実施されてよいコンピュータシステムを例示する。
【発明を実施するための形態】
【００１１】
以下の記載において、説明目的のために、本発明の完全な理解を提供するために多数の具体的詳細が明らかにされる。しかし、これらの具体的詳細を欠いて本発明を実施してもよいことは明白であろう。他には、本発明を不必要に不明瞭にしないため、周知の構造及び装置はブロック図形態で示されている。
【００１２】
本開示の文章は図面と組み合わせて、コンピュータをプログラムし請求項に係る発明を実施するのに必要なアルゴリズムを、プログラムされる機能、入力、変換、出力、及びプログラミングの他の面に関して互いに伝達するために本開示が関係する分野の当業者により使用されるのと同じレベルの詳細さで散文的に記述するように意図されている。即ち、本開示に明記される詳細さのレベルは、当業者が互いに伝達してプログラムされるアルゴリズム又は本書に記載された発明を実現するプログラムの構造及び機能を表現するために通常使用するのと同じレベルの詳細さである。
【００１３】
１．０  総論
検索問合せへの少ない待ち時間の応答を提供するデータ検索システムのための手法が提供される。少ない待ち時間の応答は検索問合せに対するリアルタイム又はリアルタイムに近い応答であってよい。
【００１４】
１つの実施形態では、第１デジタルデータが第１デジタルデータリポジトリに第１列指向記憶形式を使って記憶される。第２デジタルデータが第２デジタルデータリポジトリに第１列指向記憶形式と異なる第２列指向記憶形式を使って記憶される。複数の予め計算されたビューがエクスポージャーデータ及びリスク項目データ両方に基づいて生成される。複数の予め計算されたビューは第２デジタルデータリポジトリに第２列指向記憶形式を使って記憶される。検索問合せを受信したことに応答して、その問合せに答える結果セットが複数の予め計算されたビューのうち１つ以上の特定の予め計算されたビューに基づいて決定される。結果セットは別のコンピュータ又は表示装置に出力として提供される。
【００１５】
１つの実施形態では、少ない待ち時間の問合せ応答を提供するためのサーバーシステムはＫｕｄｕデータリポジトリ、Ｐａｒｑｕｅｔデータリポジトリ、及びＳｐａｒｋクラスターマネージャーにより管理されるＳｐａｒｋクラスター化された複数の計算インスタンスを備える。
【００１６】
他の実施形態、態様、及び特徴は、開示全体から明らかとなろう。
【００１７】
２．０  データ検索システム
図１は１つの実施形態に係る、記載の手法が実行されてよい一例のコンピュータシステムを示す。
【００１８】
コンピュータシステム１００は、計算クラスター１２０、データ記憶システム１３０、及びクライアント計算装置１４０を含む。計算クラスター１２０、データ記憶システム１３０、及び計算装置１４０は任意の適切なデータ通信機構、例えば１つ以上のデータネットワークを使用して互いに相互接続される。それら１つ以上のデータネットワークは１つ以上のローカルエリアネットワーク（ＬＡＮ）、１つ以上の広域ネットワーク（ＷＡＮ）、公衆インターネットなどの１つ以上の相互接続ネットワーク、又は企業内ネットワークを含んでよい。
【００１９】
２．１  計算クラスター
計算クラスター１２０はクラスター化された複数の計算インスタンス１２５を含む。クラスター化された計算インスタンス１２５は、１つ以上のＬＡＮ、１つ以上のＷＡＮ、１つ以上の相互接続ネットワーク、及びインターネットを含む任意の適切なデータネットワーク又は通信機構を介して相互接続されてもよい。  
【００２０】
１つの実施形態では、クラスター化された１つの計算インスタンス１２５は、商品又は容易に入手可能なハードウェア部品から成りサーバーオペレーティングシステム、例えばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ベース、Ｕｎｉｘベース、又はＬｉｎｕｘ（登録商標）ベースオペレーティングシステムを動作させるサーバーコンピュータシステムである。クラスター化された１つの計算インスタンス１２５はまた、計算装置の仮想マシンシステム又は他のソフトウェアベース実施形態であってもよい。１つの実施形態では、クラスター化された計算インスタンス１２５はクラウド計算インスタンス、例えばＥＣ２インスタンス、計算エンジンインスタンス、又はＡｚｕｒｅインスタンスである。
【００２１】
１つの実施形態では、クラスター化された各計算インスタンス１２５は、大量のデータを管理、処理、及び／又は分析するための１つ以上のビッグデータ処理フレームワークのホストとして動作するか又はこれらを実行する。ビッグデータ処理フレームワークの例はＳｐａｒｋ、Ｈａｄｏｏｐ、Ｈｉｖｅ、Ｐｒｅｓｔｏ、及びＩｍｐａｌａを含む。
【００２２】
１つの実施形態では、計算クラスター１２０はクラスターマネージャーを含む。１つの実施形態では、クラスターマネージャーはクラスター化された複数の計算インスタンス１２５を管理するようにプログラム又は構成される。加えて又は或いは、クラスターマネージャーはクラスター化された複数の計算インスタンス１２５上で動作するアプリケーション又はサービスを管理するようにプログラム又は構成されてもよい。クラスターマネージャーは複数の計算インスタンス１２５により実行されるタスクをスケジュールしてもよい。また、クラスターマネージャーはクラスター化された複数の計算インスタンス１２５間で資源を分配しもよい。
【００２３】
クラスターマネージャーはクラスター化された１つ以上の計算インスタンス１２５上で実行されてもよい。加えて又は或いは、クラスターマネージャーは計算装置又はクラスター化された複数の計算インスタンス１２５とは別の計算インスタンス上で実行されてもよい。クラスターマネージャーは、例えばＳｐａｒｋ単独マネージャー、Ｍｅｓｏｓ、Ｋｕｂｅｒｎｅｔｅｓ、ＹＡＲＮ、又はクラスター化された複数の計算インスタンス１２５を管理するのに適した任意の他のクラスターマネージャーであってもよい。
【００２４】
２．２  クライアント計算装置
クライアント計算装置１４０は、これらに限定されないがサーバー、ラック、ワークステーション、パーソナルコンピュータ、汎用コンピュータ、ラップトップ、インターネット家電、無線機器、有線機器、マルチプロセッサシステム、ミニコンピュータなどを含む任意の計算装置であってよい。
【００２５】
クライアント計算装置１４０は計算クラスター１２０と対話するコマンドライン・インターフェース、グラフィック・ユーザーインターフェース、又はＲＥＳＴエンドポイントを実行してもよい。インターフェース及び／又はエンドポイントは検索問合せを計算クラスター１２０に提供し計算クラスター１２０により生成された一組の検索結果を受信するように構成又はプログラムされてよい。１つの実施形態では、その一組の検索結果はクライアント計算装置１４０に提供されたデータファイル又はクライアント計算装置１４０によりアクセス可能なデータファイルに記憶されてもよい。データファイルの例はＪＳＯＮ、コンマで分離された値、ＳＱＬダンプ、及び他のファイルタイプを含む。加えて又は或いは、その一組の検索結果はクライアント計算装置１４０で、例えばコマンドライン・インターフェース又はグラフィカル・ユーザーインターフェースを使って表示されてよい。
【００２６】
２．３  ジョブサーバー
図１に示された実施形態では、クライアント計算装置は計算クラスター１２０とジョブサーバー１１０を介して通信する。ジョブサーバー１１０はジョブを計算クラスター１２０に提出し及び／又は計算クラスター１２０上のジョブ実行を管理するためのインターフェースを提供する。そのインターフェースはコマンドライン・インターフェース、グラフィカル・ユーザーインターフェース、又はＲＥＳＴｆｕｌインターフェースであってよい。１つの実施形態では、ジョブサーバー１１０は複数の計算クラスターに対してジョブ実行を管理してよい。加えて又は或いは、複数のジョブサーバーは同じ計算クラスター、例えば計算クラスター１２０に対してジョブ実行を管理してもよい。ジョブサーバー１１０はコンピュータ、又は本システムの他の要素を実現するために使用される同じ物理的ハードウェア又は仮想計算インスタンス上で実行されるソフトウェアプロセスから成ってもよい。
【００２７】
１つの実施形態では、ジョブサーバー１１０はクラスター化された１つ以上の計算インスタンス１２５上で実行される。例えば、ジョブサーバー１１０はクラスターマネージャーと同じクラスター化された計算インスタンス上で動作していてもよい。或いは、ジョブサーバー１１０は計算クラスター１２０とは別の計算装置又は計算インスタンス上で実行されてもよい。
【００２８】
１つの実施形態では、ジョブサーバー１１０は計算クラスター１２０へのクライアント接続を管理する。クライアント接続は、検索問合せなどのジョブを計算クラスター１２０に提出するために使用されてよい。例えば、ジョブサーバー１１０は、１つ以上のＳｐａｒｋコンテキストを管理するＳｐａｒｋジョブサーバーであってもよい。１つの実施形態では、ジョブサーバー１１０は複数のタイプのクラスター化された計算インスタンス、例えば１つ以上のＳｐａｒｋ、Ｍｅｓｏｓ、Ｋｕｂｅｒｎｅｔｅｓ、及び／又はＹＡＲＮインスタンスに対してジョブを管理してもよい。  
【００２９】
１つの実施形態では、ジョブサーバー１１０は、１つ以上の永続性クライアント接続を管理するようにプログラム又は構成されてもよい。永続性クライアント接続情報はジョブサーバー１１０を実行する１つ以上の計算装置のメモリに記憶されてもよい。永続性クライアント接続は、計算クラスター１２０に提出されたジョブが完了した時に切断されない。それどころか、永続性クライアント接続は機能し続け、計算クラスター１２０への次の呼び出しは永続性クライアント接続のうち１つ以上を再使用してもよい。これは、クライアント計算装置１４０などのクライアントが計算クラスター１２０に接続する毎に新しいクライアント接続を始めるオーバーヘッドを回避する。
【００３０】
１つの実施形態では、１つ以上の永続性クライアント接続が検索問合せを処理するために使用される。通常、Ｓｐａｒｋなどのビッグデータフレームワークは、検索問合せへのリアルタイム応答を提供するためではなく、一括処理のために使用される。永続性クライアント接続は、検索問合せが提出された時にクライアント接続を生成するオーバーヘッドを低減するので、検索問合せに結果を提供するのに必要な時間量が低減される。これは少ない待ち時間の検索が実行されるのを可能する。
【００３１】
１つの実施形態では、各永続性クライアント接続は特定のタイプのジョブ及び／又は特定のタイプのデータアクセスと関連する。加えて、その特定のタイプのジョブを取り扱うために、各永続性クライアント接続はクラスター化された複数の計算インスタンス１２５のうちクラスター化された１つ以上の特定の計算インスタンスと関連してもよい。
【００３２】
例として、１つ以上の永続性クライアント接続の第１組は一括ジョブのためであってもよい。１つ以上の永続性クライアント接続の別の組はデータベース管理システムに、例えばＯＤＢＣ又はＪＤＢＣアプリケーション・プログラミング・インターフェースを使用してアクセスするためであってもよい。１つ以上の永続性クライアント接続の第３組はデフォルト一般用途のためであってもよい。ジョブサーバー１１０は受信したジョブに基づいてどの永続性クライアント接続をそのジョブは使用するべきかを判断してよい。例えば、一括処理ジョブは第１永続性クライアント接続と関連する第１組のクラスター化された計算インスタンスを使用してもよく、一方、検索問合せは第２永続性クライアント接続と関連する異なる組のクラスター化された計算インスタンスを使用してもよい。これは検索問合せが、一括処理ジョブが完了するのを待ち続けなければならないか又は計算資源を一括処理ジョブと共用しなければならないのを防ぐ。
【００３３】
図２は複数の永続性クライアント接続を管理するジョブサーバー１１０を例示するブロック図を示す。
【００３４】
１つの実施形態では、ジョブサーバー１１０は永続性クライアント接続２１０、永続性クライアント接続２１２、及び永続性クライアント接続２１４に接続される。各永続性クライアント接続はクラスター１２０内の一組のクラスター化された計算インスタンスに接続される。図２に示した例では、永続性クライアント接続２１０は第１組のクラスター化された計算インスタンス２２０に接続され、永続性クライアント接続２１２は第２組のクラスター化された計算インスタンス２２２に接続され、永続性クライアント接続２１４は第３組のクラスター化された計算インスタンス２２４に接続されている。各永続性クライアント接続は特定のタイプのジョブのために使用されてよい。各永続性クライアント接続を通して提出されたジョブは対応する一組のクラスター化された計算インスタンス上で実行される。
【００３５】
２．４  データ記憶システム
１つの実施形態では、データ記憶システム１３０はプログラムと任意の適切な記憶装置、例えば１つ以上のハードディスクドライブ、メモリ、又はビッグデータを記憶するように構成された任意の他の電子デジタルデータ記録装置に記憶されたデータとを含む。データ記憶システム１３０は図１で単一の装置として描かれているが、データ記憶システム１３０は１つ以上の物理的位置に位置する複数の装置に跨っていてもよい。１つの実施形態では、データ記憶システム１３０は分散されたファイルシステム、又は複数のデータノードを含む分散されたデータ蓄積である。例えば、データ記憶システム１３０はＨａｄｏｏｐ分散ファイルシステム（ＨＤＦＳ）、ＭａｐＲファイルシステム（ＭａｐＲ  ＦＳ）、ＨＢａｓｅ、又は他の適切な分散データ蓄積であってもよい。
【００３６】
データ記憶システム１３０は複数のデータリポジトリを格納してもよい。各データリポジトリは異なるタイプのデータを記憶してもよい。加えて、各データリポジトリに記憶されたデータは異なる形式であってもよい。
【００３７】
図１に示した例では、データ記憶システム１３０は第１データリポジトリ１３２及び第２データリポジトリ１３４を備える。例として、第１データリポジトリ１３２はレストラン情報を記憶し、第２データリポジトリ１３４は複数のユーザーレストラン批評を記憶すると仮定する。レストラン情報は第１データ記憶形式を使って記憶されてよく、ユーザーレストラン批評は第１データ記憶形式と異なる第２データ記憶形式を使って記憶されてもよい。
【００３８】
１つの実施形態では、これら異なるデータ記憶形式のそれぞれは列指向記憶形式である。列指向データ記憶形式の例はＰａｒｑｕｅｔ、Ｋｕｄｕ、及びオブジェクト関係カラムナ（ＯＲＣ）を含む。各データリポジトリにデータを記憶するのに使用される特定のデータ記憶形式はそのデータリポジトリに記憶されるデータのタイプの特性、例えばアクセスパターン及び更新パターンに依存してもよい。例えば、データ項目が頻繁に追加又は変更される場合、項目が容易に更新又は追加されるのを許すデータ記憶形式が望ましい。
【００３９】
１つの実施形態では、第１データリポジトリ１３２はデータをＫｕｄｕデータ形式で記憶する。Ｋｕｄｕは容易に更新可能な関係カラムナ（ｃｏｌｕｍｎａｒ）記憶形式であり、データ項目が容易に挿入、更新、及び／又は消去されるのを許す。列内の各行は個々に更新されてもよい。Ｋｕｄｕデータ形式は頻繁な追加、消去、及び／又は更新を必要とするデータを記憶するのに使用されてよい。
【００４０】
１つの実施形態では、第２データリポジトリ１３４はデータをＰａｒｑｕｅｔデータ形式で記憶する。Ｐａｒｑｕｅｔはデータを複数のデータファイルとして記憶する非関係カラムナ記憶形式であり、各データファイルはそのデータファイルに記憶されたデータのスキーマ（論理構造）を定義するスキーマファイルと一緒に記憶される。各ファイルは特定のデータ表と関連してもよい。追加の表は新しいデータファイル及びスキーマファイルを追加することで追加されてもよい。
【００４１】
また、Ｐａｒｑｕｅｔデータ形式で記憶された複数の表は複数の関連するスキーマファイルを結合することで結合されてよい。従って、別々の表に亘る問合せは別々の表に関連するスキーマファイルを結合して結合されたスキーマに問い合せすることで処理されてもよい。しかし、データ項目をＰａｒｑｕｅｔで記憶されるデータに変えるために、そのファイル全体が更新される。Ｐａｒｑｕｅｔデータ形式は多くの更新を必要としないか又は概ね一括の更新を必要とするデータを記憶するために使用されてよい。加えて又は或いは、Ｐａｒｑｕｅｔデータ形式は頻繁なスキーマ更新を必要とするデータを記憶するために使用されてもよい。
【００４２】
３．０  予め計算されたビュー
１つの実施形態では、コンピュータシステム１００は複数の予め計算されたビューを生成し、予め計算されたビューをデータ記憶システム１３０に記憶する。予め計算されたビューは存在するデータリポジトリ、例えばデータリポジトリ１３２及びデータリポジトリ１３４に記憶されても、又は別のデータリポジトリに記憶されてもよい。予め計算されたビューはそれが記憶されたデータリポジトリと同じデータ記憶形式で記憶されてもよい。例えば、データリポジトリ１３４がデータをＰａｒｑｕｅｔデータ形式で記憶し、予め計算されたビューがデータリポジトリ１３４に記憶されるならば、その予め計算されたビューもＰａｒｑｕｅｔデータ形式で記憶される。加えて又は或いは、予め計算されたビューが記憶されるデータ記憶形式は、その予め計算されたビューがそれから生成されたデータのデータ記憶形式に基づいている。
【００４３】
１つの実施形態では、予め計算されたビューは１つ以上の存在するデータ表を予め連結した結果である。例えば、予め計算されたビューは複数のデータリポジトリのうち２つ以上からのデータを結合してもよい。予め計算されたビューはデータリポジトリ１３２からの第１組のデータとデータリポジトリ１３４からの第２組のデータとを含んでもよい。
【００４４】
また、第１及び第２データ組は異なるデータ記憶形式で記憶されてもよい。例えば、第１組のデータは第１データ記憶形式で記憶され、第２組のデータは第１と異なる第２データ記憶形式で記憶されてもよい。結果としての予め計算されたビューは第１データ記憶形式か又は第２データ記憶形式で記憶されてよい。クラスター化された計算インスタンス１２５は、異なる記憶形式で記憶されたデータを連結できるデータフレームワークを実行してもよい。
【００４５】
１つの実施形態では、予め計算されたビューに含まれる各データリポジトリからのデータ部分は１つ以上の検索問合せ要求に基づいている。例えば、予め計算されたビューはコンピュータシステム１００により受信されると予想される特定のタイプの問合せに対処するように生成されてもよい。システムがレストラン及び批評データを記憶する上記例を参照すると、予め計算されたビューはレストランをそれらの批評データと組み合わせてもよい。複数の予め計算されたビューを生成することは、例えば一例の問合せ、特定の予め計算されたビューを示すユーザー入力、構成ファイル、又はどんなデータが特定の予め計算されたビューに含まれるべきかを示すための他の方法に基づいてもよい。
【００４６】
１つの実施形態では、予め計算されたビューは、集計されたデータ及び／又は集約されたデータから成る集計又は集約ビューを提供してもよい。上記例を参照すると、予め計算された集約ビューは各レストランのユーザー評点を平均してもよい。集約ビューは、例えば３／５以上の平均評点のレストランを指定する検索問合せを処理するために使用されてもよい。
【００４７】
１つの実施形態では、データが最初にシステムにロード又は記憶された時に、１つ以上の予め計算されたビューが生成される。また、記憶されたデータが変化した時に、予め計算されたビューが生成されてもよい。これらの予め計算されたビューは不変であり、命名規則に従ってデータ記憶システム１３０に記憶されてもよい。
【００４８】
１つの実施形態では、予め計算されたビューに対応するビューメタデータがＳｐａｒｋデータフレームにより永続性コンテキスト内で持続する。もしビューメタデータが利用可能でなければ、メタデータをロードする要求が実行される。メタデータは、スキーマ情報に加えて対応する予め計算されたビューについてのデータ記憶システム１３０内の位置及びノード情報を含む。このメタデータはビューが非分散システム内の従来のデータベース表として働くのを許し、少ないメモリオーバーヘッドを伴う少ない待ち時間のアクセスを可能にする。例えば、数十万のビューメタデータはメモリに容易にはまり、メモリにはまるのが困難又はコストがかかったであろう大きなデータセットを包含しうる。
【００４９】
４．０  プロセス概要
図３はコンピュータシステム１００を使って検索結果を提供するためのステップ例を示す。
【００５０】
ステップ３００では、第１デジタルデータが第１デジタルデータリポジトリ１３２に第１列指向記憶形式を使って記憶される。明確な例を示す目的のために、第１デジタルデータは保険エクスポージャーデータから成ると仮定する。エクスポージャーデータは保険契約書に関係する情報について、各保険契約書がそれに対して保証するリスクと、リスク事象が起こると生じうる損失とを格納する。エクスポージャーデータは頻繁な追加及び部分変更を必要とすることがあるが、保険契約書の構造は比較的変わらないので、頻繁なスキーマ追加も部分変更も必要としないかも知れない。従って、エクスポージャーデータはデジタルデータリポジトリ１３２にＫｕｄｕを使用して記憶されてもよい。
【００５１】
ステップ３０２では、第２デジタルデータが第２デジタルデータリポジトリ１３４に第２列指向記憶形式を使用して記憶される。第２デジタルデータはリスク項目データから成ると仮定する。エクスポージャーデータに記述された各リスクは複数のリスク項目を含む。リスク項目は、例えば物件、建築物、車、オートバイ、及び他の保証される項目であってもよい。リスク項目データはリスク項目に関係する情報を格納する。例えば、物件情報の場合、リスク項目データは物件位置情報、建築物情報、土壌情報などを含んでもよい。別の例として、車両情報は車両メーカー及び車種、及び車両仕様情報を含んでもよい。記憶されると、リスク項目情報は頻繁には変化しないが、異なる種類のリスク項目は異なるデータ記憶スキーマを必要とする。例えば、ボートは車と異なるスキーマを有するであろう。従って、そのリスク項目データはデジタルデータリポジトリ１３４にＰａｒｑｕｅｔを使用して記憶されてもよい。
【００５２】
ステップ３０４では、複数の予め計算されたビューが第１デジタルデータ及び第２デジタルデータに基づいて生成される。１つの実施形態では、予め計算されたビューは異なる記憶形式で記憶されたデジタルデータを組み合わせる。この例では、予め計算されたビューはＫｕｄｕで記憶されたエクスポージャーデータをＰａｒｑｕｅｔで記憶されたリスク項目データと組み合わせてもよい。予め計算されたビューはエクスポージャーデータ及びリスク項目データに実行されると予想される検索に基づいて生成されてもよい。例えば、保険ポートフォリオは複数のリスクに対して補償する複数の契約を含んでもよい。各リスクは複数のリスク項目を含んでもよい。従って、複数の契約をそれら複数の契約に含まれた複数のリスク項目と連結するポートフォリオビューが生成されてもよい。別の例として、予め計算されたビューは各保険契約のその保険契約に関連するリスク項目に基づく全保険価額を示す集約ビューであってもよい。
【００５３】
ステップ３０６では、複数の予め計算されたビューはデータ記憶システム１３０内に記憶される。１つの実施形態では、予め計算されたビューは第２データリポジトリ１３４に第２列指向記憶形式を使用して記憶される。この例では、複数の予め計算されたビューはデータリポジトリ１３４にＰａｒｑｕｅｔを使用して記憶される。
【００５４】
ステップ３０８では、複数の予め計算されたビュー用のビューメタデータが検索システムにロードされる。１つの実施形態では、ロードはＳｐａｒｋデータフレームを使って実行される。ビューメタデータは、複数の予め計算されたビューの各予め計算されたビューについてスキーマ及びノード位置情報を含む。
【００５５】
ステップ３１０では、検索問合せが検索システムにより受信される。例えば、ジョブサーバー１１０はクライアント計算装置１４０から検索問合せを受信してもよい。ジョブサーバーは検索問合せを処理するための１つ以上の永続性クライアント接続のうち特定の永続性クライアント接続を選択してもよい。
【００５６】
ステップ３１２では、検索問合せを受信したことに応答して、結果セットが複数の予め計算されたビューの１つ以上の特定の予め計算されたビューに基づいて決定される。明確な例を示す目的のために、計算クラスター１２０は複数のＳｐａｒｋインスタンスから成り、ジョブサーバー１１０は複数の永続性Ｓｐａｒｋコンテキストを維持するＳｐａｒｋジョブサーバーであると仮定する。ジョブサーバー１１０はクライアント計算装置１４０から検索問合せを受信してもよい。検索問合せは、例えばＳＱＬなどのデータベース言語の形態であってもよい。ジョブサーバー１１０はＳｐａｒｋコンテキストの１つ以上を使用して複数のＳｐａｒｋインスタンスの１つ以上のＳｐａｒｋインスタンスに問合せを実行する。
【００５７】
実行エンジンを使用して、関連する列を選択するために、予めロードされたビューメタデータをデータ記憶システム１３０上のファイル及びノード位置を見つけるのに使用する。実行エンジンは、実施形態に依って例えばＳｐａｒｋ、Ｐｒｅｓｔｏ、Ｉｍｐａｌａなどであってよい。基本的データはカラムナ形式で記憶されるので、その問合せを満たすのに必要なデータ列だけをデータ記憶システムから取り出す。これは、問合せエンジン自身のメモリオーバーヘッドだけでなく問合せ待ち時間及びネットワークトラフィックも低減する。複雑な操作、例えば集計、各種グループ分け、及びユーザー定義機能は問合せエンジンにより処理される。任意選択で、他のデータ源、例えば保険モデル化損失への結合がこの時に起こりうる。なぜならそのデータが元の予め計算されたビューから生成されたからである。実行エンジンは、Ｋｕｄｕ、Ｐａｒｑｕｅｔ、又はＰｏｓｔｇｒｅｓで存在しうる本質的に異なるデータセットを結合するのを可能にする。
【００５８】
１つ以上の特定の予め計算されたビューは検索問合せの内容に基づいて決定されてもよい。例えば、検索問合せが「海岸線から５マイル（約８ｋｍ）以内にある物件についての全ての損失」を指定するならば、リスク項目データ及び／又は補償される物件の位置を示すエクスポージャーデータを検索するのに加えて、予め計算された損失累積を格納する予め計算されたビューが検索されてもよい。
【００５９】
ステップ３１４では、結果セットは別のコンピュータ又は表示装置に提供される。例えば、結果セットはクライアント計算装置１４０に提供されても、又は出力としてグラフィカル・ユーザーインターフェースを介して表示装置に提供されてもよい。加えて又は或いは、結果セットはデータ記憶システム１３０などの記憶装置に記憶されてもよい。
【００６０】
１つの実施形態では、第１デジタルデータ及び第２デジタルデータを記憶すること及び複数の予め計算されたビューを生成することは、一括処理として実行されてもよい。加えて、それらのステップは、システムがオフラインでどんなクライアント計算装置やネットワークにも接続されていない間に実行されてもよい。ビューメタデータをロードすること、検索問合せを受信すること、結果セットを決定すること、及び検索結果を提供することは同期呼び出しであってもよい。また、それらのステップは、システムがオンラインでクライアント計算装置及び／又はネットワークに接続されている間に実行されてもよい。
【００６１】
これらの手法を使用して、時間のかかる一括処理ジョブ用に通常構成されたビッグデータフレームワーク及び記憶形式は、検索問合せへのリアルタイム応答を提供できる。これは少ない待ち時間の検索が本書に記載したシステムを使用して実行されるのを可能にする。本システムは、Ｓｐａｒｋなどの技術の重要な問合せプラン最適化を利用しそれをＰａｒｑｕｅｔ、Ｋｕｄｕなどのカラムナ記憶形式と、２つの複雑な技術、例えばＥｌａｓｔｉｃＳｅａｒｃｈ及びＭｏｎｇｏＤＢ又はＣａｓｓａｎｄｒａの間のデータミラリングを必要としたであろうやり方で組み合わせることで非常に柔軟である。従来の関係型データベースにはまるのに大き過ぎる広い列セットの場合、このアーキテクチャは、ディスク及びネットワークＩ／Ｏにおける最小のオーバーヘッドを提供しながら大きなデータセットを読み出す速くかつ分散されたやり方を提供する。ＮｏＳＱＬデータベースを含む大多数のデータ記憶技術は索引及び他のデータ二次構造が実行時前に決定されるのを必要とする。しかし、本書に記載した手法及び保険用の場合では、数百の列に亘る場当たり的問合せ及びデータ探査が通常である。これは、全ての情報列に索引を付けることを費用がかかり実用的でなくする。高度な分散問合せエンジンを伴うカラムナ記憶技術の恩恵は、従来の方法に比べてリスク探査及び分析に対する大きな利点を提供する。
【００６２】
５．０  実施例、ハードウェア概要
１つの実施形態によれば、本書に記載した手法は少なくとも１つの計算装置により実行される。本手法は少なくとも１つのサーバーコンピュータ及び／又はパケットデータネットワークなどのネットワークを使用して結合された他の複数の計算装置の組み合わせを使用して全体が又は一部が実行されてよい。計算装置はそれらの手法を実行するように配線されていても、又はデジタル電子装置、例えば少なくとも１つの特定用途向け集積回路（ＡＳＩＣ）又はそれらの手法を実行するように永続的にプログラムされたフィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）を備えていても、又はファームウェア、メモリ、他の記憶装置、又は組み合わせ内のプログラマ命令群に従ってそれらの手法を実行するようにプログラマされた少なくとも１つの汎用ハードウェアプロセッサを備えていてもよい。このような計算装置はまた、カスタム配線論理、ＡＳＩＣ、又はＦＰＧＡをカスタムプログラムと組み合わせて記載した手法を実現してもよい。これらの計算装置はサーバーコンピュータ、ワークステーション、パーソナルコンピュータ、携帯コンピュータシステム、ハンドヘルド装置、可搬コンピュータ装置、装着型コンピュータ、体に取り付けた又は埋め込み可能な装置、スマートフォン、スマート器具、ＬＡＮ間接続装置、自律又は半自律装置、例えばロボット又は無人地上又は空中車、及び配線接続された及び／又はプログラム論理を内蔵し記載された手法を実行する任意の他の電子装置、データセンター内の１つ以上の仮想コンピュータマシン又はインスタンス、及び／又はサーバーコンピュータ及び／又はパーソナルコンピュータのネットワークであってもよい。
【００６３】
図４は１つの実施形態が実施されてよい一例のコンピュータシステムを示すブロック図である。図４の例では、コンピュータシステム４００及び開示された技術をハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組み合わせで実現するための命令群が概略的に例えば、箱又は円として、本開示に関係する技術の当業者により通常使用されるのと同じ詳細さのレベルでコンピュータアーキテクチャ及びコンピュータシステム実施形態について伝えるために表されている。
【００６４】
コンピュータシステム４００は、バス及び／又はコンピュータシステム４００の構成要素間で情報及び／又は命令群を、電子信号路を通じて通信するための他の通信機構を含んでよい入力／出力（Ｉ／Ｏ）サブシステム４０２を含む。Ｉ／Ｏサブシステム４０２はＩ／Ｏコントローラ、メモリコントローラ、及び少なくとも１つのＩ／Ｏポートを含んでもよい。電子信号路は図面において概略的に例えば、線、一方向矢印、又は双方向矢印として表されている。
【００６５】
少なくとも１つのハードウェアプロセッサ４０４がＩ／Ｏサブシステム４０２に情報及び命令群を処理するために結合される。ハードウェアプロセッサ４０４は、例えば汎用マイクロプロセッサ又はマイクロコントローラ、及び／又は埋め込みシステム又はグラフィック処理ユニット（ＧＰＵ）又はデジタル信号プロセッサ又はＡＲＭプロセッサなどの特殊用途マイクロプロセッサを含んでもよい。プロセッサ４０４は一体化された論理演算ユニット（ＡＬＵ）を備えても、又は別個のＡＬＵに結合されてもよい。
【００６６】
コンピュータシステム４００は、Ｉ／Ｏサブシステム４０２に結合されデータ及びプロセッサ４０４が実行する命令群を電子的にデジタルで記憶するための主メモリなどの１つ以上のメモリユニット４０６を含む。メモリ４０６は揮発性メモリ、例えば様々な形態のランダムアクセスメモリ（ＲＡＭ）又は他の動的記憶装置を含んでもよい。メモリ４０６も、プロセッサ４０４により命令群が実行される間一時的変数又は他の中間情報を記憶するために使用されてもよい。このような命令群は、プロセッサ４０４にとってアクセス可能な持続性コンピュータ読取可能記憶媒体に記憶されている場合、コンピュータシステム４００を命令群に指定された動作を実行するようにカスタマイズされた特殊用途マシンに変えうる。
【００６７】
コンピュータシステム４００は不揮発性メモリ、例えば読出し専用メモリ（ＲＯＭ）４０８又はＩ／Ｏサブシステム４０２に結合され情報及びプロセッサ４０４用の命令群を記憶するための他の静的記憶装置を更に含む。ＲＯＭ４０８は様々な形態のプログラマブルＲＯＭ（ＰＲＯＭ）、例えば消去可能ＰＲＯＭ（ＥＰＲＯＭ）又は電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）を含んでもよい。永続記憶ユニット４１０は様々な形態の不揮発性ＲＡＭ（ＮＶＲＡＭ）、例えばＦＬＡＳＨ（登録商標）メモリ、又は固体記憶装置、磁気ディスク又はＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭなどの光ディスクを含んでもよく、情報及び命令群を記憶するためにＩ／Ｏサブシステム４０２に結合されてもよい。記憶装置４１０は、命令群及びデータを記憶するために使用されてよい持続性コンピュータ読取可能媒体の例であり、それらの命令群はプロセッサ４０４により実行される時、コンピュータ実行方法を実行させ、本書の手法を実行する。
【００６８】
メモリ４０６、ＲＯＭ４０８、又は記憶装置４１０内の命令群は、モジュール、方法、オブジェクト、機能、ルーチン、又は呼び出しとして構成される１つ以上の組の命令を含んでよい。命令群は１つ以上のコンピュータプログラム、オペレーティングシステムサービス、又は携帯アプリを含むアプリケーションプログラムとして構成されてもよい。命令群はオペレーティングシステム及び／又はシステムソフトウェア；マルチメディア、プログラミング、又は他の機能を支える１つ以上のライブラリ；ＴＣＰ／ＩＰ、ＨＴＴＰ、又は他の通信プロトコルを実行するデータプロトコル命令群又はスタック；ＨＴＭＬ、ＸＭＬ、ＪＰＥＧ、ＭＰＥＧ、又はＰＮＧを使ってコード化されたファイルを解析又は解釈するファイルフォーマット処理命令群；グラフィカル・ユーザーインターフェース（ＧＵＩ）、コマンドライン・インターフェース、又はテキストユーザーインターフェース用のコマンドを翻訳又は解釈するユーザーインターフェース命令群；アプリケーションソフトウェア、例えばオフィススイート、インターネットアクセスアプリケーション、設計及び製造アプリケーション、グラフィックアプリケーション、音声アプリケーション、ソフトウェア工学アプリケーション、教育アプリケーション、ゲーム、又は種々雑多なアプリケーションを含んでよい。命令群はウェブサーバー、ウェブアプリケーションサーバー、又はウェブクライアントを実現してもよい。命令群はプレゼンテーション層、アプリケーション層、及びデータ記憶層、例えば構造化照会言語（ＳＱＬ）を使用する又はＳＱＬ不使用の関係型データベースシステム、オブジェクトストア、グラフデータベース、フラットファイルシステム、又は他のデータ記憶として構成されてよい。
【００６９】
コンピュータシステム４００はＩ／Ｏサブシステム４０２を介して少なくとも１つの出力装置４１２に結合されてもよい。１つの実施形態では、出力装置４１２はデジタルコンピュータ表示器である。様々な実施形態で使用されてよい表示器の例は、タッチスクリーン表示器又は発光ダイオード（ＬＥＤ）表示器又は液晶表示器（ＬＣＤ）又は電子ペーパー表示器を含む。コンピュータシステム４００は表示装置に代えて又は加えて他の種類の出力装置４１２を含んでよい。他の出力装置４１２の例はプリンター、切符プリンター、プロッター、プロジェクター、音声カード又は映像カード、スピーカー、ブザー又は圧電素子又は他の可聴装置、ランプ又はＬＥＤ又はＬＣＤ指示器、触覚装置、作動装置又はサーボを含む。
【００７０】
少なくとも一つの入力装置４１４が、信号、データ、コマンド選択、又はジェスチャーをプロセッサ４０４ に伝えるためにＩ／Ｏサブシステム４０２に結合される。入力装置４１４の例は、タッチスクリーン、マイクロフォン、静止及びビデオデジタルカメラ、英数字及び他のキー、キーパッド、キーボード、グラフィックスタブレット、イメージスキャナー、ジョイスティック、クロック、スイッチ、ボタン、ダイヤル、スライド、及び／又は様々な種類のセンサー、例えば力センサー、動きセンサー、熱センサー、加速度計、ジャイロスコープ、及び慣性測定ユニット（ＩＭＵ）センサー、及び／又は様々な種類の送受信機、例えば携帯電話又はＷｉ−Ｆｉなどの無線装置、無線周波数（ＲＦ）又は赤外線（ＩＲ）送受信機、及び全地球測位システム（ＧＰＳ）送受信機を含む。
【００７１】
別の種類の入力装置は、入力機能に代えて又は加えて、表示画面上でのグラフィカルインターフェースにおけるナビゲーションなどのカーソル制御または他の自動化された制御機能を実行してよい制御装置４１６である。制御装置４１６は、方向情報及びコマンド選択をプロセッサ４０４に通信し、表示器４１２上のカーソル移動を制御するためのタッチパッド、マウス、トラックボール、又はカーソル方向キーであってもよい。入力装置は、第１軸（例えば、ｘ）と第２軸（例えば、ｙ）の２軸の少なくとも２自由度を有してもよく、これはその装置が平面内で位置を指定するのを許す。別の種類の入力装置は、ジョイスティック、ワンド、コンソール、操舵ホイール、ペダル、ギアシフト機構、又は他の種類の制御装置などの有線、無線、又は光学制御装置である。入力装置４１４は、ビデオカメラ及び奥行きセンサーなどの複数の異なる入力装置の組み合わせを含んでもよい。
【００７２】
別の実施形態では、コンピュータシステム４００は、出力装置４１２、入力装置４１４、及び制御装置４１６のうちの１つ以上が省略された物のインターネット（ＩｏＴ）装置を含んでもよい。或いは、そのような実施形態では、入力装置４１４は、１つ以上のカメラ、動き検出器、温度計、マイクロフォン、振動検出器、他のセンサー又は検出器、測定装置又はエンコーダーを含んでもよく、出力装置４１２は、単一ラインＬＥＤ又はＬＣＤ表示器などの特殊用途表示器、１つ以上の指示器、表示パネル、計器、バルブ、ソレノイド、作動装置又はサーボを含んでもよい。
【００７３】
コンピュータシステム４００が携帯コンピュータ装置である時、入力装置４１４は、複数のＧＰＳ衛星に対して三角測量し、コンピュータシステム４００の地球物理的位置の緯度‐経度値などの地理位置データを測定し生成できるＧＰＳモジュールに結合された全地球測位システム（ＧＰＳ）受信機を含んでもよい。出力装置４１２は、位置報告パケット、通知、パルス又はハートビート信号、又は単独で又は他の特定用途向けデータと組み合わせてコンピュータシステム４００の位置を指定する他の繰り返しデータ送信であってホスト４２４又はサーバー４３０に向けられたデータ送信を生成するためのハードウェア、ソフトウェア、ファームウェア、及びインターフェースを含んでもよい。
【００７４】
コンピュータシステム４００は、カスタム配線論理、少なくとも１つのＡＳＩＣ又はＦＰＧＡ、ファームウェア、及び／又はロードされコンピュータシステムと共に使用又は実行される時、コンピュータシステムを特殊用途マシンとして動作させる又は動作するようにプログラムするファームウェア及び／又はプログラム命令群又は論理を使用して本書に記載された手法を実行してもよい。１つの実施形態によれば、本書の手法は、プロセッサ４０４が主メモリ４０６に収容された少なくとも１つの命令の少なくとも１つのシーケンスを実行するのに応答して、コンピュータシステム４００により実行される。このような命令群は主メモリ４０６に別の記憶媒体、例えば記憶装置４１０から読み込まれてもよい。主メモリ４０６に収容された命令シーケンスの実行はプロセッサ４０４に本書に記載されたプロセスステップを実行させる。別の実施形態では、配線回路がソフトウェア命令群の代わりに又はと組み合わせて使用されてもよい。
【００７５】
本書で使用する用語「記憶媒体」はデータ及び／又はマシンを特定のやり方で動作させる命令群を記憶する任意の持続性媒体を指す。このような記憶媒体は不揮発性媒体及び／又は揮発性媒体であってもよい。不揮発性媒体は、例えば記憶装置４１０などの光学又は磁気ディスクを含む。揮発性媒体は動的メモリ、例えばメモリ４０６を含む。一般的な形態の記憶媒体は、例えばハードディスク、半導体ドライブ、フラッシュドライブ、磁気データ記憶媒体、任意の光学又は物理的データ記憶媒体、メモリチップなどを含む。
【００７６】
記憶媒体は伝送媒体と異なるが、一緒に使用されてもよい。伝送媒体は記憶媒体間の情報の移送に関わる。例えば、伝送媒体は同軸ケーブル、銅線、及び光ファイバーを含み、Ｉ／Ｏサブシステム４０２のバスを成す配線も含む。伝送媒体はまた、電波及び赤外線データ通信時に発生させるような音波又は光波の形態を取りうる。
【００７７】
様々な形態の媒体が少なくとも１つの命令の少なくとも１つのシーケンスを実行のためにプロセッサ４０４に運ぶのに関わってもよい。例えば、命令群は最初遠隔のコンピュータの磁気ディスク又は半導体ドライブ上に搭載されてもよい。遠隔のコンピュータはその命令群をその動的メモリにロードして命令群を光ファイバー又は同軸ケーブル、又はモデムを使う電話回線などの通信回線を通じて送信できる。コンピュータシステム４００のモデム又はルーターは通信回線上のそのデータを受信してコンピュータシステム４００が読める形式に変換できる。例えば、無線周波数アンテナ又は赤外線検出器などの受信機は無線又は光信号で運ばれるデータを受信でき、適切な回路が、バス上にデータを載せるようにそのデータをＩ／Ｏサブシステム４０２に提供できる。Ｉ／Ｏサブシステム４０２はそのデータをメモリ４０６に運び、プロセッサ４０４はメモリからその命令群を読み出し実行する。メモリ４０６が受け取った命令群は、プロセッサ４０４による実行前か後かに任意選択で記憶装置４１０上に記憶されてもよい。
【００７８】
コンピュータシステム４００はまた、バス４０２に結合された通信インターフェース４１８を含む。通信インターフェース４１８は少なくとも１つの通信ネットワーク、例えばネットワーク４２２又はインターネット上の公開又は社内クラウドに直接又は間接的に接続されたネットワークリンク４２０への双方向データ通信結合を提供する。例えば、通信インターフェース４１８はＥｔｈｅｒｎｅｔ（登録商標）ネットワークインターフェース、総合デジタル通信網（ＩＳＤＮ）カード、ケーブルモデム、衛星モデム、又は対応する種類の通信回線、例えばＥｔｈｅｒｎｅｔケーブル又は任意の種類の金属ケーブル又は光ファイバー回線又は電話回線へのデータ通信接続を提供するモデムであってもよい。ネットワーク４２２は、広くはローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、キャンパスネットワーク、相互接続ネットワーク、又はそれらの任意の組み合わせを表わす。通信インターフェース４１８は、互換のＬＡＮへのデータ通信接続を提供するためのＬＡＮカード、又はセルラー無線電話ワイヤレスネットワーク規格に従ってセルラーデータを送信又は受信するように配線されたセルラー無線電話インターフェース、又は衛星ワイヤレスネットワーク規格に従ってデジタルデータを送信又は受信するように配線された衛星無線インターフェースを含んでよい。どんなそのような実施形態でも、通信インターフェース４１８は、様々な種類の情報を表わすデジタルデータストリームを運ぶ信号経路を通じて、電気信号、電磁信号、又は光信号を送信し受信する。
【００７９】
ネットワークリンク４２０は通常、例えば衛星、セルラー、Ｗｉ-Ｆｉ又はＢＬＵＥＴＯＯＴＨ（登録商標）技術を使った、直接又は少なくとも１つのネットワークを介した他のデータ装置への電気、電磁、又は光学データ通信を提供する。例えば、ネットワークリンク４２０は、ネットワーク４２２を通じたホストコンピュータ４２４への接続を提供してもよい。
【００８０】
また、ネットワークリンク４２０は、ネットワーク４２２を通じた、又はＬＡＮ間接続装置を介して他の計算装置及び／又はインターネットサービスプロバイダー（ＩＳＰ）４２６によって運営されるコンピュータへの接続を提供してもよい。ＩＳＰ４２６は、インターネット４２８として表される世界規模のパケットデータ通信網を通じたデータ通信サービスを提供する。サーバーコンピュータ４３０はインターネット４２８に結合されてもよい。サーバー４３０は、広くは任意のコンピュータ、データセンター、ハイパーバイザーを有するか又は有さない仮想マシン又は仮想計算インスタンス、又はＤＯＣＫＥＲ又はＫＵＢＥＲＮＥＴＥＳなどのコンテナ化されたプログラムシステムを実行するコンピュータを表わす。サーバー４３０は、２つ以上のコンピュータ又はインスタンスを使って実行され、ウェブサービス要求、ＨＴＴＰペイロード内にパラメータを持つユニフォームリソースロケータ（ＵＲＬ）文字列、ＡＰＩ呼び出し、アプリサービス呼び出し、又は他のサービス呼び出しを送信することでアクセスされ、使用される電子デジタルサービスを表わしてもよい。コンピュータシステム４００及びサーバー４３０は、他のコンピュータ、処理クラスター、サーバーファーム、又はタスクを実行するか又はアプリケーション又はサービスを実行するために協働するコンピュータの他の組織を含む分散コンピュータシステムの要素を成してもよい。サーバー４３０は、モジュール、メソッド、オブジェクト、関数、ルーチン、又は呼び出しとして構成された命令の１つ以上の組を備えてもよい。命令群は、１つ以上のコンピュータプログラム、オペレーティングシステムサービス、又はモバイルアプリを含むアプリケーションプログラムとして構成されてもよい。命令群は、オペレーティングシステム及び／又はシステムソフトウェア；マルチメディア、プログラミング、又は他の機能をサポートする１つ以上のライブラリ；ＴＣＰ／ＩＰ、ＨＴＴＰ、又は他の通信プロトコルを実行するデータプロトコル命令群又はスタック；ＨＴＭＬ、ＸＭＬ、ＪＰＥＧ、ＭＰＥＧ、又はＰＮＧを使ってコード化されたファイルを解析又は解釈するファイルフォーマット処理命令群；グラフィカル・ユーザーインターフェース（ＧＵＩ）、コマンドライン・インターフェース、又はテキストユーザーインターフェース用のコマンドを翻訳又は解釈するユーザーインターフェース命令群；アプリケーションソフトウェア、例えばオフィススイート、インターネットアクセスアプリケーション、設計及び製造アプリケーション、グラフィックアプリケーション、音声アプリケーション、ソフトウェア工学アプリケーション、教育アプリケーション、ゲーム、又は種々雑多なアプリケーションを含んでよい。サーバー４３０は、プレゼンテーション層、アプリケーション層、及びデータ記憶層、例えば構造化照会言語（ＳＱＬ）を使用する又はＳＱＬを使用しない関係型データベースシステム、オブジェクトストア、グラフデータベース、フラットファイルシステム、又は他のデータ記憶を管轄するウェブアプリケーションサーバーを含んでもよい。
【００８１】
コンピュータシステム４００は、ネットワーク、ネットワークリンク４２０及び通信インターフェース４１８を通じて、メッセージを送り、プログラムコードを含むデータ及び命令群を受信できる。インターネットの例では、サーバー４３０は、インターネット４２８、ＩＳＰ４２６、ローカルネットワーク４２２、及び通信インターフェース４１８を通じて、アプリケーションプログラムの要求されたコードを送信してもよい。受信されたコードは、受信されながらプロセッサ４０４によって実行されても、及び／又は、後で実行するために記憶４１０又は他の不揮発性記憶装置に記憶されてもよい。
【００８２】
この項に説明された命令群の実行は、プログラムコード及びその現在の働きから成り実行されているコンピュータプログラムのインスタンスの形態でプロセスを実行してもよい。オペレーティングシステム（ＯＳ） に依って、プロセスは、命令群を同時に実行する複数の実行スレッドから構成されてもよい。この状況において、コンピュータプログラムは命令の受動的な集合である一方、プロセスはそれらの命令の実際の実行であってもよい。幾つかのプロセスは同じプログラムに関連してもよく、例えば、同じプログラムの幾つかのインスタンスを開始することは、２つ以上のプロセスが実行されていることをしばしば意味する。マルチタスク処理が、複数のプロセスがプロセッサ４０４を共用することを許すために実行されてもよい。各プロセッサ４０４又はそのプロセッサの各コアは一度に１つだけのタスクを実行するが、コンピュータシステム４００は、各プロセッサが、各タスクが終了するのを待つ必要なく、実行されているタスクを切り換えるのを許すようにマルチタスク処理を実行するようにプログラムされてもよい。１つの実施形態では、タスクが入出力動作を実行する時、タスクが切り換えられうることを示す時、又はハードウェア割り込み後に、切り換えが実行されてもよい。複数のプロセスが同時実行されていると見えるようにするためにコンテキスト切り替えを迅速に実行することで、対話型ユーザーアプリケーションの速い応答を可能にするように、時分割が実行されてもよい。１つの実施形態では、機密保護及び信頼性のために、オペレーティングシステムは、独立したプロセス間の直接通信を防止し、厳密に仲介され制御されたプロセス間通信機能を提供してもよい。
【符号の説明】
【００８３】
１００  コンピュータシステム
１１０  ジョブサーバー
１２０  計算クラスター
１２５  クラスター化された計算インスタンス
１３０  データ記憶システム
１３２  デジタルデータリポジトリ
１４０  クライアント計算装置
２１０、２１２、２１４  永続性クライアント接続
２２０、２２２、２２４  一組のクラスター化された計算インスタンス
４０２  Ｉ／Ｏサブシステム
４０４  プロセッサ
４０６  メモリ
４１０  記憶装置
４１２  出力装置
４１４  入力装置
４１６  制御装置
４１８  通信インターフェース
４２０  ネットワークリンク
４２２  ネットワーク
４２４  ホスト
４２８  インターネット
４３０  サーバー
【図１】
2021522570.tif 000003
【図２】
2021522570.tif 000004
【図３】
2021522570.tif 000005
【図４】
2021522570.tif 000006
【国際調査報告】
2021522570.tif 000007