(57)【特許請求の範囲】
【請求項１】
１つ以上のデータベースをクエリする方法であって、
コンピューティングデバイスにおいて、１つのデータベーステーブルを表し、かつ、１つ以上のデータベーステーブルに対応するモデルに含まれている開始ノードの選択を受信することと、
前記コンピューティングデバイスにおいて、各リーフが前記モデル内のノードに接続されているリーフを１つ以上含む、リーフの第１のセットであって、各リーフが、該リーフが接続されている前記ノードが表す前記１つのデータベーステーブル内の１つの列を表す、前記リーフの第１のセットの選択を受信することと、
前記開始ノードおよび前記リーフの第１のセットに基づいて、第１のデータベースクエリを生成することと、
前記１つ以上のデータベース上で実行される前記第１のデータベースクエリに基づいて、第１の結果出力を提供することと、
前記第１の結果出力における結果の選択を受信することと、
前記第１の結果出力における前記結果の選択に基づいて、前記結果に関連付けられた詳細設定に関連付けられている第２のデータベースクエリを生成することと、
前記１つ以上のデータベース上で実行される前記第２のデータベースクエリに基づいて、第２の結果出力を提供することと
を含み、
前記結果に関連付けられた前記詳細設定が、第２の開始ノードおよびリーフの第２のセットを特定し、前記第２の開始ノードは前記１つのデータベーステーブルを表し、前記リーフの第２のセットに含まれる各リーフは前記モデル内の前記ノードの一つに接続され、かつ、該リーフが接続されている前記ノードが表す一つのデータベーステーブル内の一つの列を表し、前記第２のデータベースクエリを生成することが、前記第２の開始ノードおよび前記リーフの第２のセットに基づいて前記第２のデータベースクエリを生成することを含み、前記第２のデータベースクエリが、前記選択された結果に対応する前記第１の結果出力における行に含まれる１つ以上の値によってフィルタリングされる、
１つ以上のデータベースをクエリする方法。
【請求項２】
前記１つ以上のデータベースがリレーショナルデータベースであり、前記第１および第２のデータベースクエリがＳＱＬ（構造化照会言語）クエリである、請求項１に記載の方法。
【請求項３】
前記リーフの第１のセットにおける各リーフが、第１のリーフ種類または第２のリーフ種類のいずれかに関連付けられている、請求項１または請求項２に記載の方法。
【請求項４】
前記第１の結果出力が、前記リーフの第１のセットにおける各リーフについての列と、前記リーフの第１のセットにおける前記第１のリーフ種類に関連付けられたリーフについての値の各固有のタプルについての別個の行とを含む、請求項３に記載の方法。
【請求項５】
前記第２のリーフ種類に関連付けられたリーフに対応する前記第１の結果出力における各列について、集計値が行のデータに基づいて列の各行に設けられる、請求項４に記載の方法。
【請求項６】
前記集計値が、前記行における１つ以上の値の合計、カウント、平均、最小または最大を計算することに基づいている、請求項５に記載の方法。
【請求項７】
前記モデルが複数の相互接続されたノードを含み、各ノードが１つ以上のリーフに接続されている、請求項１〜６のうちのいずれか一項に記載の方法。
【請求項８】
前記リーフの第１のセットにおける各リーフが、前記複数の相互接続されたノードにおける前記開始ノードまたは他のノードに接続されている、請求項７に記載の方法。
【請求項９】
前記第１のデータベースクエリを生成することが、
データベースクエリフラグメントを記憶するように５つのデータセットを生成することと、
前記リーフの第１のセットにおける各リーフについて、前記リーフの属性に基づいて前記５つのデータセットのうちの１つ以上に対して１つ以上の前記データベースクエリフラグメントを追加することと、
前記５つのデータセットから前記データベースクエリフラグメントをともに追加することによって前記第１のデータベースクエリを構築することと
を含む、請求項１〜８のうちのいずれか一項に記載の方法。
【請求項１０】
前記第１のデータベースクエリがＳＱＬ（構造化照会言語）クエリを含み、前記５つのデータセットが、ＳＥＬＥＣＴ、ＪＯＩＮ、ＷＨＥＲＥ、ＧＲＯＵＰ  ＢＹおよびＨＡＶＩＮＧについてのＳＱＬコマンドに対応する、請求項９に記載の方法。
【請求項１１】
前記１つ以上のデータベースが、リレーショナルデータベース、非リレーショナルデータベース、ファイルベースのデータベースおよび／または非ファイルベースのデータベースを含む、請求項１〜１０のうちのいずれか一項に記載の方法。
【請求項１２】
前記第１の結果出力が、前記リーフの第１のセットにおけるリーフのうちの１つにしたがってソートされる、請求項１〜１１のうちのいずれか一項に記載の方法。
【請求項１３】
前記リーフの第１のセットのうちの少なくとも２つのリーフが、前記モデルにおける異なるノードに接続される、請求項１〜１２のうちのいずれか一項に記載の方法。
【請求項１４】
１つ以上のデータベースをクエリする方法であって、
コンピューティングデバイスにおいて、１つ以上のデータベーステーブルに対応するモデルに含まれている開始ノードの選択を受信することと、
前記コンピューティングデバイスにおいて、各リーフが前記モデル内のノードに接続されている１つ以上のリーフの第１のセットの選択を受信することと、
前記開始ノードおよび前記リーフの第１のセットに基づいて、第１のデータベースクエリを生成することと、
前記１つ以上のデータベース上で実行される前記第１のデータベースクエリに基づいて、第１の結果出力を提供することと、
前記第１の結果出力における結果の選択を受信することと、
前記第１の結果出力における前記結果の選択に基づいて、前記結果に関連付けられた詳細設定に関連付けられている第２のデータベースクエリを生成することと、
１つ以上のデータベース上で実行される前記第２のデータベースクエリに基づいて、第２の結果出力を提供することと
を含み、
前記第１のデータベースクエリを生成することが、
データベースクエリフラグメントを記憶するように５つのデータセットを生成することと、
前記リーフの第１のセットにおける各リーフについて、前記リーフの属性に基づいて前記５つのデータセットのうちの１つ以上に対して１つ以上の前記データベースクエリフラグメントを追加することと、
前記５つのデータセットから前記データベースクエリフラグメントをともに追加することによって前記第１のデータベースクエリを構築することと
を含む、
１つ以上のデータベースをクエリする方法。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
多くの企業は、１つ以上のデータベースにデータ項目を記憶する。これらのデータベースは、大抵の場合、列および行を有するテーブルを含む。テーブルにおける各列は、特定のデータフィールドに関連付けられている。テーブルにおけるエントリは、その特定の行に対する列に記憶されているエントリに対応するデータによって行において構成されている。
【０００２】
データベースにおけるデータの記憶によって大抵の場合に遭遇する１つの問題は、データを効率的にクエリしているということである。いくつかの実施例において、特定のエンティティについてのデータは、複数のデータベーステーブルにわたって分散されることができる。データセットが大きく複数のデータベーステーブルにわたって分散される場合、有用な結果を返すようにデータをクエリすることは、複雑で困難な作業になる可能性がある。さらに、異なるデータベーステーブル間の関係は、クエリを生成する人によって容易に理解されないことがあるため、クエリを生成することは、エラーが発生しやすい可能性がある。
【発明の概要】
【０００３】
概要
１つの実施形態は、１つ以上のデータベースのクエリ方法を提供する。本方法は、コンピューティングデバイスにおいて、１つ以上のデータベーステーブルに対応するモデルに含まれる開始ノードの選択を受信することと、コンピューティングデバイスにおいて、各リーフがモデル内のノードに接続される１つ以上のリーフの第１のセットの選択を受信することと、開始ノードおよびリーフの第１のセットに基づいて第１のデータベースクエリを生成することと、１  つ以上のデータベースにおいて実行する第１のデータベースクエリに基づいて第１の結果出力を提供することと、第１の結果出力における結果の選択を受信することと、第１の結果出力における結果の選択に基づいて、結果に関連付けられた詳細セットに関連付けられた第２のデータベースクエリを生成することと、１つ以上のデータベースにおいて実行する第２のデータベースクエリに基づいて第２の結果出力を提供することとを含む。
【０００４】
他の実施形態は、データベースクエリの生成方法を提供する。本方法は、データベースクエリフラグメントを記憶するために５つのデータセットを生成することと、第１のセットにおける各リーフについて、リーフの属性に基づいて５つのデータセットのうちの１つ以上に対して１つ以上のデータベースクエリフラグメントを追加することと、５つのデータセットからデータベースクエリフラグメントをともに追加することによって第１のデータベースクエリを構築することとを備える。
【０００５】
さらに他の実施形態は、データベースクエリを生成するシステムを提供する。システムは、１つ以上のデータベースと、クライアント装置と、サーバとを含む。サーバは、データネットワークを介してクライアント装置から、１つ以上のデータベースに記憶された１つ以上のデータベーステーブルに対応するモデルに含まれるノードおよびリーフの第１のセットを含むモデル入力を受信し、データベースクエリフラグメントを記憶するように複数のデータセットを生成し、第１のセットにおける各リーフについて、リーフの属性に基づいて複数のデータセットのうちの１つ以上に対して１つ以上のデータベースクエリフラグメントを追加し、複数のデータセットからのデータベースクエリフラグメントとともに追加することによってデータベースクエリを構築し、１つ以上のデータベースに対してデータベースクエリを実行し、クライアント装置に対してデータベースクエリの結果を返すように構成されている。
【０００６】
さらに他の実施形態は、データネットワークを介してクライアント装置から、１つ以上のデータベースに記憶された１つ以上のデータベーステーブルに対応するモデルに含まれるノードおよびリーフの第１のセットを含むモデル入力を受信し、データベースクエリフラグメントを記憶するように複数のデータセットを生成し、第１のセットにおける各リーフについて、リーフの属性に基づいて複数のデータセットのうちの１つ以上に対して１つ以上のデータベースクエリフラグメントを追加し、複数のデータセットからのデータベースクエリフラグメントとともに追加することによってデータベースクエリを構築し、１つ以上のデータベースに対してデータベースクエリを実行し、クライアント装置に対してデータベースクエリの結果を返すように構成されたサーバを提供する。
【０００７】
さらに他の実施形態は、データベースのクエリ方法を提供する。本方法は、サーバ装置において、ネットワーク接続を介してクライアント装置からクエリ入力を受信することと、クエリ入力に基づいてデータベースクエリを生成することと、１つ以上のデータベースに対してデータベースクエリの実行を開始させることと、ネットワーク接続がクライアント装置とサーバ装置との間に存在するかどうかを判定することと、ネットワーク接続がクライアント装置とサーバ装置との間に存在しないとサーバが判定した場合にデータベースクエリをキャンセルさせることとを含む。
【０００８】
さらに他の実施形態は、データベースをクエリし、そのようなクエリをキャンセルするシステムおよび方法を提供する。例えば、サーバコンピューティングデバイスは、プロセッサとメモリとを含むことができる。メモリは、プロセッサによって実行されたときにサーバコンピューティングデバイスに、ネットワーク接続を介してクライアント装置からクエリ入力を受信させ、クライアントコンピューティングデバイスとサーバコンピューティングデバイスとの間の非ブロッキングソケットを確立させ、クエリ入力に基づいてデータベースクエリを生成させ、１つ以上のデータベースに対してデータベースクエリの実行を開始させ、非ブロッキングソケットについての読み取り要求を実行させ、非ブロッキングソケットについての読み取り要求に応じてコードを受信させ、受信したコードに基づいてネットワーク接続がクライアント装置とサーバ装置との間に存在するかどうかを判定させ、ネットワーク接続がクライアント装置とサーバ装置との間に存在しないとサーバが判定した場合にデータベースクエリをキャンセルさせる命令を記憶する。
【図面の簡単な説明】
【０００９】
【図１】図１は、例示的な実施形態にかかる、１つ以上のデータベースをクエリする例示的なシステムのブロック図である。
【図２】図２は、例示的な実施形態にかかる、１つ以上のデータベースをクエリするように構成されたコンピューティングデバイスの構成要素の構成のブロック図である。
【図３】図３は、１つの実施形態にかかるコンピューティングデバイスについての機能的構成要素の実施例のブロック図である。
【図４】図４は、例示的な実施形態にかかる、１つ以上のデータベーステーブルの概念図である。
【図５】図５は、例示的な実施形態にかかる、１つ以上のデータベーステーブルを表すノードおよびリーフを含むモデルを図示する概念図である。
【図６】図６は、例示的な実施形態にかかる、図５におけるモデルに関連付けられた１つ以上のデータベースをクエリするモデル入力を図示する概念図である。
【図７】図７は、例示的な実施形態にかかる、図６のモデルに関連付けられた１つ以上のデータベースをクエリする結果出力を図示する概念図である。
【図８】図８は、例示的な実施形態にかかる、結果出力から結果を選択することによって図５のモデルに関連付けられた１つ以上のデータベースをクエリするモデル入力を図示する概念図である。
【図９】図９は、例示的な実施形態にかかる、以前の結果出力から結果を選択した後に図６のモデル入力に関連付けられた１つ以上のデータベースをクエリする結果出力を図示する概念図である。
【図１０】図１０は、例示的な実施形態にかかる、結果出力から結果を選択することによって図５におけるモデルに関連付けられた１つ以上のデータベースをクエリするモデル入力を図示する概念図である。
【図１１】図１１は、例示的な実施形態にかかる、後続の結果出力から結果を選択した後に図１０のモデル入力に関連付けられた１つ以上のデータベースをクエリする結果出力を図示する概念図である。
【図１２】図１２は、例示的な実施形態にかかる、１つ以上のデータベーステーブルを表すノードおよびリーフを含むモデルを図示する概念図である。
【図１３】図１３は、例示的な実施形態にかかる、図１２におけるモデルに関連付けられた１つ以上のデータベースをクエリするモデル入力を選択するためのユーザインターフェースを図示する概念図である。
【図１４】図１４は、例示的な実施形態にかかる、以前の結果出力から結果を選択した後に図１３のモデル入力に関連付けられた１つ以上のデータベースをクエリする結果出力を表示するためのユーザインターフェースを図示する概念図である。
【図１５】図１５は、例示的な実施形態にかかる、図１２におけるモデルに関連付けられた１つ以上のデータベースをクエリするモデル入力を選択するためのさらに他のユーザインターフェースを図示する概念図である。
【図１６】図１６は、例示的な実施形態にかかる、以前の結果出力から結果を選択した後に図１５のモデル入力に関連付けられた１つ以上のデータベースをクエリする結果出力を表示するためのユーザインターフェースを図示する概念図である。
【図１７】図１７は、例示的な実施形態にかかる、データベースをクエリするフロー図である。
【図１８】図１８は、例示的な実施形態にかかる、モデル入力からデータベースクエリを生成する方法ステップのフロー図である。
【図１９】図１９は、例示的な実施形態にかかる、１つのノードおよび複数のリーフを含むモデルを図示する概念図である。
【図２０】図２０は、例示的な実施形態にかかる、クエリをキャンセルする技術を図示する概念図である。
【図２１】図２１は、例示的な実施形態にかかる、クエリをキャンセルする方法ステップのフロー図である。
【発明を実施するための形態】
【００１０】
詳細な説明
図１は、例示的な実施形態にかかる、１つ以上のデータベースをクエリする例示的なシステムのブロック図である。システムは、クライアント装置１０２と、データネットワーク１０４と、１つ以上のサーバ１０６と、データベース１０８および１１０とを含む。
【００１１】
クライアント装置１０２は、パーソナルコンピュータ、ラップトップコンピュータ、計算機能を有する携帯電話を含む任意の種類のコンピューティングデバイスまたは任意の他の種類の装置とすることができる。クライアント装置１０２は、とりわけ、デバイスハードウェア１２０、ソフトウェアアプリケーション１２２、他のアプリケーション（複数可）、通信クライアント、出力装置（例えば、ディスプレイ）および入力装置（例えば、キーボード、マウス、タッチスクリーン）などを含む。いくつかの実施形態において、クライアント装置１０２は、出力装置および入力装置の双方として機能することができる。
【００１２】
デバイスハードウェア１２０は、プロセッサやメモリなどの物理的なコンピュータ構成要素を含む。ソフトウェアアプリケーション１２２は、１つ以上のデータベース１０８、１１０をクエリするための入力を受信するように構成されている。様々な実施形態によれば、ソフトウェアアプリケーション１２２は、クライアント装置１０２のＯＳ（オペレーティングシステム）にまたはクライアント装置１０２におけるスタンドアロンアプリケーションとして実装されることができる。１つの実施形態において、ソフトウェアアプリケーション１２２は、ウェブブラウザアプリケーションである。
【００１３】
データネットワーク１０４は、とりわけ、インターネットネットワーク（例えば、ワイドエリアネットワーク（ＷＡＮ）もしくはローカルエリアネットワーク（ＬＡＮ））、有線もしくは無線ネットワークまたは携帯電話データネットワークを含む任意の種類の通信ネットワークとすることができる。
【００１４】
クライアント装置１０２は、データネットワーク１０４を介してサーバ１０６と通信するように構成されている。サーバ１０６は、クライアント装置１０２から受信した入力に基づいてデータベース１０８、１１０に対してクエリを生成するように構成されたプロセッサによって実行されるソフトウェアアプリケーションを含む。サーバ１０６は、データベース１０８および１１０と通信する。データベース１０８、１１０は、データを記憶するように構成されている。データベース１０８、１１０は、とりわけ、リレーショナルデータベース、非リレーショナルデータベース、ファイルベースのデータベースおよび／または非ファイルベースのデータベースを含む任意の種類のデータベースとすることができる。
【００１５】
本願明細書においてより詳細に説明されるように、本開示の１つ以上の実施形態は、１つ以上のデータベースをクエリするためのシステムおよび方法を提供する。記載されるように、データベースは、大抵の場合、一連のテーブルとして構成されている。様々な実施形態によれば、データベースクエリモデルは、一連の相互接続された「ノード」として構成されることができ、各ノードは、データベーステーブルに対応する。本開示の１つ以上の実施形態において、ノードは、データセットを定義するＳＱＬ式にマッピングまたは対応する。そのようなデータセットは、データベースにおける１つ以上の行からまたは代わりにＳＱＬ式中から生じることができる。したがって、いくつかの実施形態において、ノードは、データベースに記憶されていないが、ＳＱＬにおいて記憶されたデータベーステーブルとして扱われるテーブルに対応することができる。各ノードは、ゼロ以上の他のノードに接続されることができる。各ノードはまた、１つ以上の「リーフ」と関連付けられることができ、各リーフは、対応するデータベーステーブルにおける列の１つに対応する。各リーフは、さらに、本願明細書において非常に詳細に記載されるように、識別子「リーフ種類」およびゼロ以上の詳細パラメータに関連付けられることができる。
【００１６】
モデル入力は、クライアント装置１０２において開始ノード、１つ以上のリーフおよびゼロ以上のフィルタの選択に基づいて生成される。モデル入力は、データネットワーク１０４を介してサーバ１０６に送信される。サーバ１０６は、モデル入力を受信し、モデル入力に基づいてデータベースクエリを生成する。データベースクエリは、１つ以上のデータベースに対して実行されて結果を返す。
【００１７】
上述したように、モデル入力は、単一の開始ノード、１つ以上のリーフおよびゼロ以上のフィルタの選択を含む。１つ以上のリーフは、選択された開始ノードのリーフおよび／または開始ノードに接続されたノードのリーフとすることができる。本願明細書においてより詳細に説明されるように、各リーフは、とりわけ、リーフ識別子、リーフ種類および必要に応じて「詳細設定」を含む。
【００１８】
モデル入力からデータベースクエリを生成するために、サーバ１０６は、図１８に詳細に記載されたクエリ生成アルゴリズムを実行する。すなわち、選択されたリーフのそれぞれについて、サーバ１０６は、リーフが相互接続されたノードを介して選択されたノードから到達可能であるかどうかを判定する。そうでない場合、リーフは無視される。選択されたノードおよび到達可能なリーフのセットを使用して、コンピューティングデバイスは、データベース（複数可）からデータを取得するためのクエリを構築する。さらに、サーバ１０６は、生成されたデータベースクエリ内で直接またはデータベースクエリが結果を返した後にデータベース（複数可）から返されたデータのセットをフィルタリングする。そして、クエリは実行され、結果が返される。
【００１９】
返された結果を表示するために、コンピューティングデバイスは、モデル入力のリーフに対して結果の列をマッピングする。「詳細設定」がモデル入力に提供された特定のリーフに関連付けられている場合、コンピューティングデバイスはまた、結果において結果の行毎にリーフについての詳細パラメータを含む。
【００２０】
図２は、例示的な実施形態にかかる、１つ以上のデータベースをクエリするように構成されたコンピューティングデバイス２００の構成要素の構成のブロック図である。示されるように、コンピューティングデバイス２００は、他の構成要素（図示しない）のうち、プロセッサ２０２およびメモリ２０４を含む。１つの実施形態において、コンピューティングデバイス２００は、クライアント装置１０２を備える。他の実施形態において、コンピューティングデバイス２００は、サーバ１０６を備える。
【００２１】
メモリ２０４は、インストールされたアプリケーション２１０、オペレーティングシステム２０８およびソフトウェアアプリケーション２２２を含むプロセッサ２０２によって実行される様々なアプリケーションを含む。コンピューティングデバイス２００がクライアント装置１０２を含む実施形態において、ソフトウェアアプリケーション２２２は、ウェブブラウザアプリケーションを含む。コンピューティングデバイス２００がサーバ１０６を備える実施形態において、ソフトウェアアプリケーション２２２は、モデル入力を受信してデータベースクエリを生成するように構成されたソフトウェアアプリケーションを備える。
【００２２】
図３は、１つの実施形態にかかる、コンピューティングデバイス３０２についての機能的構成要素の実施例のブロック図である。コンピューティングデバイス３０２の１つの特定の実施例が図示されている。コンピューティングデバイス３０２の多くの他の実施形態が使用されてもよい。１つの実施形態において、コンピューティングデバイス３０２は、クライアント装置１０２を備える。他の実施形態において、コンピューティングデバイス３０２は、サーバ１０６を備える。
【００２３】
図３の図示された実施形態において、コンピューティングデバイス３０２は、１つ以上のプロセッサ（複数可）３１１と、メモリ３１２と、ネットワークインターフェース３１３と、１つ以上の記憶装置３１４と、電源３１５と、出力装置（複数可）３６０と、入力装置（複数可）３８０とを含む。コンピューティングデバイス３０２はまた、クライアントによって実行されるオペレーティングシステム３１８および通信クライアント３４０を含む。構成要素３１１、３１２、３１３、３１４、３１５、３６０、３８０、３１８および３４０のそれぞれは、任意の有効な方法での構成要素間の通信のために、物理的に、通信可能におよび／または動作可能に相互接続されている。
【００２４】
図示されるように、プロセッサ（複数可）３１１は、コンピューティングデバイス３０２内で実行するための機能を実装するおよび／または命令を処理するように構成されている。例えば、プロセッサ（複数可）３１１は、メモリ３１２に記憶されている命令または記憶装置３１４に記憶されている命令を実行する。持続性のコンピュータ読み取り可能な記憶媒体とすることができるメモリ３１２は、動作中にコンピューティングデバイス３０２内に情報を記憶するように構成されている。いくつかの実施形態において、メモリ３１２は、コンピューティング装置３０２がオフされたときに維持されないための情報用の一時的なメモリ領域を含む。そのような一時的なメモリの実施例は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）およびスタティック・ランダムアクセスメモリ（ＳＲＡＭ）などの揮発性メモリを含む。メモリ３１２は、プロセッサ（複数可）３１１による実行のためのプログラム命令を保持する。
【００２５】
記憶装置３１４はまた、１つ以上の持続性のコンピュータ読み取り可能な記憶媒体を含む。記憶装置３１４は、一般に、メモリ３１２よりも大量の情報を記憶するように構成されている。記憶装置３１４は、さらに、情報の長期保存のために構成されることができる。いくつかの実施例において、記憶装置３１４は、不揮発性記憶素子を含む。不揮発性記憶素子の非限定的実施例は、磁気ハードディスク、光ディスク、フロッピーディスク、フラッシュメモリまたは電気的書き込み可能メモリ（ＥＰＲＯＭ）もしくは電気的消去および書き込み可能（ＥＥＰＲＯＭ）メモリの形態を含む。
【００２６】
コンピューティングデバイス３０２は、図１に示されるサーバ１０６および／またはデータベース１０８など、１つ以上のネットワークを介して外部装置と通信するためにネットワークインターフェース３１３を使用する。ネットワークインターフェース３１３は、イーサネットカードなどのネットワークインターフェースカード、光トランシーバ、無線周波数トランシーバまたは情報を送受信することができる任意の他の種類の装置とすることができる。ネットワークインターフェースの他の非限定的実施例は、無線ネットワークインターフェース、Ｂｌｕｅｔｏｏｔｈ（登録商標）、携帯コンピューティングデバイスにおける３ＧおよびＷｉＦｉ（登録商標）無線ならびにＵＳＢ（ユニバーサルシリアルバス）を含む。いくつかの実施形態において、コンピューティングデバイス３０２は、外部装置、他の携帯電話または他のネットワーク化されたコンピューティングデバイスと無線通信するためにネットワークインターフェース３１３を使用する。
【００２７】
コンピューティングデバイス３０２は、１つ以上の入力装置３８０を含む。入力装置３８０は、触覚、音声、映像または他の検知フィードバックを介してユーザからの入力を受信するように構成されている。入力装置３８０の非限定的実施例は、存在検知スクリーン、マウス、キーボード、音声応答システム、カメラ３０２、映像レコーダ３０４、マイク３０６、ＧＰＳモジュール３０８またはユーザからのコマンドを検出するかもしくは環境を検知する任意の他の種類の装置を含む。いくつかの実施例において、存在検知スクリーンは、タッチ検知スクリーンを含む。
【００２８】
１つ以上の出力装置３６０もまた、コンピューティングデバイス３０２に含まれる。出力装置３６０は、触覚、音声および／または映像刺激を使用してユーザに出力を提供するように構成されている。出力装置３６０は、表示画面（存在検知スクリーンの一部）、サウンドカード、ビデオグラフィックアダプタカードまたは人間や機械が理解可能な適切な形態に信号を変換するための任意の他の種類の装置を含むことができる。出力装置３６０のさらなる実施例は、スピーカ、陰極線管（ＣＲＴ）モニタ、液晶ディスプレイ（ＬＣＤ）またはユーザに理解可能な出力を生成することができる任意の他の種類の装置を含む。いくつかの実施形態において、装置は、入力装置および出力装置の双方として機能してもよい。
【００２９】
コンピューティングデバイス３０２は、コンピューティングデバイス３０２に電力を供給するための１つ以上の電源３１５を含む。電源３１５の非限定的実施例は、使い捨て電源、再充電可能電源、および／または、ニッケル−カドミウム、リチウムイオンまたは他の適切な材料から開発された電源を含む。
【００３０】
コンピューティングデバイス３０２は、Ａｎｄｒｏｉｄ（登録商標）オペレーティングシステムなどのオペレーティングシステム３１８を含む。オペレーティングシステム３１８は、コンピューティングデバイス３０２の構成要素の動作を制御する。例えば、オペレーティングシステム３１８は、プロセッサ３１１、メモリ３１２、ネットワークインターフェース３１３、記憶装置（複数可）３１４、入力装置１８０、出力装置１６０および電源３１５と通信クライアント３４０との相互作用を容易とする。
【００３１】
図３にも同様に図示されるように、コンピューティングデバイス３０２は、通信クライアント３４０を含む。通信クライアント３４０は、通信モジュール３４５を含む。通信クライアント３４０および通信モジュール３４５のそれぞれは、通信装置３０２によって実行可能なプログラム命令および／またはデータを含む。例えば、１つの実施形態において、通信モジュール３４５は、通信クライアント３４０に本開示において記載される操作および動作のうちの１つ以上を実行するようにコンピューティングデバイス３０２上で実行させる命令を含む。いくつかの実施形態において、通信クライアント３４０および／または通信モジュール３４５は、コンピューティングデバイス３０２上で実行されるオペレーティングシステム３１８の一部を形成する。
【００３２】
図４は、例示的な実施形態にかかる、１つ以上のデータベーステーブル４０２、４０４、４０６の概念図である。示されるように、テーブル４０２、４０４、４０６の３つのデータベーステーブルが図示されている。テーブル４０２は、「ユーザ（ｕｓｅｒｓ）」を表しており、名前（ｎａｍｅ）と電子メール（ｅｍａｉｌ）についての列を含む。テーブル４０４は、「注文（ｏｒｄｅｒｓ）」を表しており、日付（ｄａｔｅ）とユーザＩＤ（ｕｓｅｒ＿ｉｄ）についての列を含む。テーブル４０６は、「注文項目（ｏｒｄｅｒ＿ｉｔｅｍｓ）」を表しており、注文ＩＤ（ｏｒｄｅｒ＿ｉｄ）、項目名（ｉｔｅｍ＿ｎａｍｅ）およびコスト（ｃｏｓｔ）についての列を含む。テーブル４０２、４０４、４０６は、１つ以上のデータベースに記憶されてもよい。記載されるように、様々な実施形態によれば、データベースは、特に、リレーショナルデータベース、非リレーショナルデータベース、ファイルベースのデータベースおよび／または非ファイルベースのデータベースとすることができる。図４に示されるテーブルは、単に本開示の実施形態を例示するために使用される実施例であり、決して本開示の範囲を限定するものではない。
【００３３】
図５は、例示的な実施形態にかかる、１つ以上のデータベーステーブルを表すノードおよびリーフを含むモデル５００を図示する概念図である。示されるように、モデル５００は、ノード５０２、５０４、５０６およびリーフ５０８、５１０、５１２、５１４、５１６を含む。１つの実施例において、ノード５０２は、図４におけるテーブル４０２に対応しており、ノード５０４は、図４におけるテーブル４０４に対応しており、ノード５０６は、図４におけるテーブル４０６に対応している。ノード５０２は、ノード５０４に接続されている。ノード５０４はまた、ノード５０６に接続されている。モデル５００は、モデルファイルによって表されている。ノード５０２、５０４、５０６は、別個のノードファイルとして表されている。モデルファイルおよびノードファイルの実施例は、付録Ａに図示されており、本願明細書においてより詳細に説明される。
【００３４】
ノード５０２は、リーフ５０８に関連付けられており、ノード５０４は、リーフ５１０、５１２に関連付けられており、ノード５０６は、リーフ５１４、５１６に関連付けられている。各リーフは、リーフ識別子およびリーフ種類を含む。必要に応じて、リーフはまた、詳細設定を含むことができる。リーフ識別子は、モデル５００におけるリーフを固有に識別する文字列である。リーフ種類は、リーフに関連付けられたデータのデータ種類に対応する。１つの実施形態によれば、リーフ種類は、第１の種類（以下、「種類Ｉ」とも称する）または第２の種類（以下、「種類ＩＩ」とも称する）のいずれかとすることができる。
【００３５】
本願明細書において使用される種類Ｉのリーフは、モデル入力に含まれるとき、リーフについて同値を有するエントリが結果において単一のエントリにグループ化されるようにその結果をグループ化するリーフ種類である。複数の種類Ｉのリーフがモデル入力に含まれているとき、結果テーブルの各行が種類Ｉのリーフの各タプルについて同値を有する集計結果に対応するように結果がグループ化される。本願明細書において使用される種類ＩＩのリーフは、モデル入力に含まれるとき、集計関数の結果がクエリに適用されて結果出力において別個の列として返されるリーフ種類である。種類Ｉおよび種類ＩＩのリーフを有するモデル入力の実施例が例示のために以下に提供される。
【００３６】
図６は、例示的な実施形態にかかる、図５におけるモデル５００に関連付けられた１つ以上のデータベースをクエリするためのモデル入力６００を図示する概念図である。示されるように、モデル入力６００は、図５におけるノード５０６に対応する開始ノード「Ｃ」と、図５におけるリーフ５０８および５１２にそれぞれ対応する２つのリーフ「Ｖ」および「Ｘ」との選択を含む。
【００３７】
図７は、例示的な実施形態にかかる、図６のモデル入力６００に関連付けられた１つ以上のデータベースをクエリする結果出力７００を図示する概念図である。示されるように、結果出力７００は、行１、行２の２つの行と２つの列７０２、７０４とを含む。
【００３８】
記載されるように、モデル入力６００は、図５におけるリーフ５０８に対応する種類Ｉのリーフ「Ｖ」を含む。リーフ５０８について同値を有する各結果が結果出力７００における単一行にグループ化されるようにクエリの結果が集計される。示された実施例において、名前「ＴＪ」を有するユーザは、３つの注文を満たした（図４におけるテーブル４０４を参照）。ＴＪによって満たされた３つの注文のそれぞれは、結果出力７００において単一行（すなわち、行２）にグループ化される。リーフ５０８について集計されたグループは、結果出力７００における列７０２に示されている。
【００３９】
さらに、モデル入力６００は、図５におけるリーフ５１２に対応する種類ＩＩのリーフ「Ｘ」を含む。リーフ５１２は、注文数に関連付けられる。結果出力７００において、数値カウントは、行毎に注文数に対応する列７０４に表示される。示されるように、行はユーザによって（すなわち、リーフ５０８の固有値によって）編成され、列７０４は、各ユーザについての注文数を表示する。
【００４０】
１つの実施例として、データベースがＳＱＬ（構造化照会言語）クエリによってクエリされることができるリレーショナルデータベースである場合、モデル入力６００に基づいて生成されたＳＱＬクエリは、以下とすることができる：
0006400073.tif 000002
【００４１】
サーバがモデル入力に基づいて上記ＳＱＬクエリを生成する方法のより詳細な説明は、以下においてより詳細に説明される。
【００４２】
いくつかの実施形態において、結果出力は、特定のリーフに基づいてソートされることができる。結果出力が「名前」列を含む場合、結果出力は、名前の列によってソートされることができる。１つの実施形態において、アルゴリズムは、デフォルトのソート順を決定するために使用される。例えば、結果出力がデータベースにおける日付または時間を表す列を含む場合、ソートは、降順でそのフィールドによって行われる。日付または時間が結果出力に含まれていないが、１つ以上の数値尺度が結果出力に含まれている場合、ソートは、降順で数値尺度のうちの１つ（例えば、最初の１つ）によって行われる。日付または時間または数値尺度が結果出力に含まれていない場合、ソートは、モデル入力のために選択された最初のフィールドによって行われる。
【００４３】
また、いくつかの実施形態において、特定の種類ＩＩのリーフは、特定の開始ノードからクエリされることができない。そうすることは、不適切な集計の方法によって不正なデータをもたらすことがある。リーフが特定の開始ノードからクエリされることができないという制限は、ＳＱＬフラグメントに使用される集計関数に基づいて推測されることができる。例えば、リーフがＳＵＭ集計関数を使用する場合、合計は、照会が、開始ノードによってそのノードに合流する異なるノードからのものではなく、リーフが接続されている開始ノードからのものである場合に利用可能とされるのみである。例えば、フライト情報についてのモデルの実施例を使用すると、「空港」ノードが空港の合計を計算した種類ＩＩのリーフを有していた場合、このリーフは、フライトノードが空港ノードに合流／接続されているとしても、モデル入力ノードがフライトノードなどの他のノードであるときではなく、モデル入力を開始するノードが空港ノードであるときにモデル入力について利用可能である。
【００４４】
本願明細書においてより詳細に説明されるように、データベースクエリシステムのユーザは、結果出力における特定の結果を選択することによって結果出力をさらに「掘り」下げることができる。結果を選択することは、他のデータベースクエリを生成する。例えば、ユーザは、ユーザＴＪによって配置された３つの注文を表す数値「３」に対応する結果７０６を選択することができる。
【００４５】
図８は、例示的な実施形態にかかる、結果出力７００から結果７０６を選択することによって図５におけるモデル５００に関連付けられた１つ以上のデータベースをクエリするためのモデル入力８００を図示する概念図である。モデル入力８００は、選択された結果７０６についての列において選択されたリーフ（すなわち、リーフ５１２）の「詳細設定」に基づいて生成される。ノードＣおよびリーフＶ、Ｗ、Ｙを識別する詳細設定に関連付けられた図５のリーフ５１２を参照のこと。
【００４６】
示されるように、モデル入力８００は、図５におけるノード５０６に対応する単一ノード「Ｃ」、図５におけるリーフ５０８、５１０および５１４にそれぞれ対応する３つのリーフ「Ｖ」、「Ｗ」および「Ｙ」ならびに「ＴＪ」の値を有するリーフ「Ｖ」（すなわち、リーフ５０８）についてのフィルタの選択を含む。ノード５０６は、選択されたリーフ（すなわち、リーフ５１２）の詳細設定に基づいてモデル入力８００についての開始ノードとして選択される。リーフ５０８、５１０および５１４は、リーフ５０８、５１０および５１４が選択されたリーフ（すなわち、リーフ５１２）の「詳細設定」に含まれることから、モデル入力８００のリーフとして選択される。また、モデル入力８００は、結果７０６の選択された行に対応する種類Ｉのリーフのそれぞれの値によってフィルタリングされる。この実施例において、結果７０６は、結果出力７００の行２に関連付けられる。結果出力７００の各行は、１つの種類Ｉのリーフ（すなわち、ｕｓｅｒｓ．ｎａｍｅに対応するリーフ５０８）に関連付けられる。結果７０６が「掘る」ために選択されたときに生成されるモデル入力８００は、この実施例では、「ＴＪ」の値を有するリーフ５０８（すなわち、結果出力の行２における）の値によってフィルタリングされる。
【００４７】
図９は、例示的な実施形態にかかる、以前の結果出力７００から結果７０６を選択した後に図８のモデル入力８００に関連付けられた１つ以上のデータベースをクエリする結果出力９００を図示する概念図である。示されるように、結果出力９００は、行１および行２の２つの行と、３つの列９０２、９０４、９０６とを含む。
【００４８】
モデル入力８００は、図５におけるリーフ５０８および５１０にそれぞれ対応する２つの種類ＩのリーフＶおよびＷを含む。双方のリーフ５０８および５１０について同値を有する各結果が結果出力９００における単一行にグループ化されるように結果が集計される。示される実施例において、名前「ＴＪ」を有するユーザは、３つの注文を満たした（図４におけるテーブル４０４を参照）。注文のうちの１つは、１／１２／１３に完了し、２つの注文は、２／３／１３に完了した。示されるように、ＴＪによって完了した３つの注文は、ｕｓｅｒｓ．ｎａｍｅ（すなわち、列９０２）およびｏｒｄｅｒｓ．ｄａｔｅ（すなわち、列９０４）の各固有の組み合わせによって編成される結果出力９００における２行にグループ化される。リーフ５０８について集計されたグループは、結果出力７００における列７０２に示されている。
【００４９】
さらに、モデル入力８００は、図５におけるリーフ５１４に対応する１つの種類ＩＩのリーフ「Ｙ」を含む。リーフ５１４は、「ｏｒｄｅｒ＿ｉｔｅｍｓ．ｉｄ」の数に関連付けられている。結果出力９００において、数値カウントは、行毎に注文項目の数に対応して表示される。示される実施例において、１つの注文は、列９０６に示されるように、１／１２／１３にＴＪによって完了し、２つの注文は、２／３／１３にＴＪによって完了した。
【００５０】
１つの実施例として、データベースがＳＱＬ（構造化照会言語）クエリによってクエリされることができるリレーショナルデータベースである場合、モデル入力８００に基づいて生成されたＳＱＬクエリは、以下とすることができる。
0006400073.tif 000003
【００５１】
記載されるように、データベースクエリシステムのユーザは、図７における結果出力７００を掘り下げるのと同様に、結果出力９００における結果を選択することによって結果データをさらに「掘り」下げることができる。結果を選択することは、他のデータベースクエリを生成する。例えば、ユーザは、２／３／１３にユーザＴＪによって配置された２つの注文を表す数値「２」に対応する結果９０８を選択することができる。
【００５２】
図１０は、例示的な実施形態にかかる、結果出力９００から結果９０８を選択することによって図５におけるモデル５００に関連付けられた１つ以上のデータベースをクエリするモデル入力１０００を図示する概念図である。モデル入力１０００は、選択された結果９０８についての列に対応する選択されたリーフ（すなわち、リーフ５１４）の「詳細設定」に基づいて生成される。ノードＣおよびリーフＺを識別する詳細設定に関連付けられた図５のリーフ５１５を参照のこと。
【００５３】
示されるように、モデル入力１０００は、図５におけるノード５０６に対応する単一ノード「Ｃ」、図５におけるリーフ５１６に対応する１つのリーフ「Ｚ」、「ＴＪ」の値を有するリーフ「Ｖ」（すなわち、リーフ５０８）についてのフィルタおよび「２／３／１３」の値を有するリーフ「Ｗ」（すなわち、リーフ５１０）についてのフィルタの選択を含む。ノード５０６は、選択されたリーフ（すなわち、リーフ５１４）の詳細設定に基づいてモデル入力１０００についての開始ノードとして選択される。リーフ５１０は、リーフ５１０が選択されたリーフ（すなわち、リーフ５１４）の「詳細設定」に含まれていることから、モデル入力１０００のリーフとして選択される。また、モデル入力１０００は、結果９０８の選択された行に対応する種類Ｉのリーフのそれぞれの値によってフィルタリングされる。この実施例において、結果９０８は、結果出力９００の行２に関連付けられている。結果出力９００の各行は、ｕｓｅｒｓ．ｎａｍｅおよびｏｒｄｅｒｓ．ｄａｔｅにそれぞれ対応する２つの種類Ｉのリーフ５０８および５１０に関連付けられている。結果９０８が「掘る」ために選択されたときに生成されるモデル入力１０００は、結果出力９０８の行２におけるリーフ５０８および５１０の値、すなわち、それぞれ「ＴＪ」および「２／３／１３」の値によってフィルタリングされる。
【００５４】
図１１は、例示的な実施形態にかかる、後続の結果出力９００から結果９０８を選択した後に図１０のモデル入力１０００に関連付けられた１つ以上のデータベースをクエリする結果出力１１００を図示する概念図である。示されるように、結果出力１１００は、行１および行２の２つの行と１つの列１１００とを含む。
【００５５】
モデル入力１０００は、図５におけるリーフ５１６に対応する１つの種類ＩのリーフＺを含む。リーフ５１６について同値を有する結果出力１１００における各結果が結果出力１１００における単一行にグループ化されるように結果が集計される。結果はまた、モデル入力１０００において２つのフィルタを適用することによってフィルタリングされる。示されるように、２／３／１３にＴＪによって完了した２つの注文は、各固有の項目名（すなわち、列１１０２）によって編成された結果出力１１００における２列にグループ化される。
【００５６】
図１２〜図１６は、他の例示的モデルおよびモデルをクエリして結果を返すための対応するユーザインターフェースの概念図を図示している。
【００５７】
図１２は、例示的な実施形態にかかる、１つ以上のデータベーステーブルを表すノード１２０２、１２０４、１２０６、１２０８およびリーフを含むモデル１２００を図示する概念図である。この実施例において、モデル１２００は、空港１２０２、フライト１２０４、航空機１２０６および事故１２０８についてのノードに対応する４つのデータベーステーブルによって編成されたフライトデータを表す。各ノードは、複数のリーフに関連付けられている。リーフのいくつかは、種類Ｉのリーフであり、リーフのいくつかは、種類ＩＩのリーフである。また、空港ノード１２０２は、事故ノード１２０８に接続された航空機ノード１２０６に接続されたフライトノード１２０４に接続されている。
【００５８】
図１３は、例示的な実施形態にかかる、図１２におけるモデル１２００に関連付けられた１つ以上のデータベースをクエリするモデル入力を選択するためのユーザインターフェースを図示する概念図である。示されるように、空港ノード１３０２は、モデル入力についての開始ノードとして選択される。開始ノードの選択は、利用可能な開始ノードのドロップダウンリストを含む、任意の技術的に実行可能な機構を介して行うことができる。空港ノード１３０２が選択された場合、モデル入力のために選択されることができる複数のリーフが表示される。
【００５９】
図１３において、空港＿州（ＡＩＲＰＯＲＴＳ＿ｓｔａｔｅ）および空港＿数（ＡＩＲＰＯＲＴＳ＿ｃｏｕｎｔ）についてのリーフが選択される。データベースに対するクエリは、クエリボタン１３０８を選択することによって生成されて実行されることができる。クエリの結果は、結果出力１３１０に示される。結果出力１３１０は、モデル入力の選択されたリーフ、すなわち、空港＿州（結果出力１３１０における列１３１２）および空港＿数（結果出力１３１０における列１３１４）についてのリーフのそれぞれについての列を含む。１つの実施例において、結果出力１３１０における結果が空港＿州の各固有値について別個の行に結果をグループ化することによって編成されるように、空港＿州は種類Ｉのリーフである。この実施例において、空港＿数は、各州における空港数を計算する種類ＩＩのリーフである。
【００６０】
本願明細書に記載されるように、ユーザは、結果を選択することによって結果出力１３１４をさらに「掘り」下げることができる。１つの実施例において、ユーザは、ＲＩ（ロードアイランド）州にある空港数の数値「２８」に対応する結果１３１６を選択することができる。
【００６１】
図１４は、例示的な実施形態にかかる、以前の結果出力１３１０から結果１３１４を選択した後に図１３のモデル入力に関連付けられた１つ以上のデータベースをクエリする結果出力１４００を表示するためのユーザインターフェースを図示する概念図である。以前の結果出力１３１０から選択されたリーフ（すなわち、空港＿数）は、特定の詳細設定に関連付けられている。選択されたノードが詳細設定に含まれるノードに対応し、モデル入力のリーフが詳細設定のリーフである場合、モデル入力が生成される。結果は、選択された結果の行における各種類Ｉのリーフの値によってフィルタリングされる（すなわち、空港＿州＝ＲＩによってフィルタリングされる）。
【００６２】
図１４に示されるように、後続の結果出力１４００は、選択された結果の行における各種類Ｉのリーフの値によってフィルタリングされた、以前に選択された結果の詳細設定のリーフに対応する列を含むように表示される。それゆえに、結果出力１４００は、ＲＩにおける２８個の空港のそれぞれについての詳細設定を表示する。
【００６３】
図１５は、例示的な実施形態にかかる、図１２におけるモデル１２００に関連付けられた１つ以上のデータベースをクエリするモデル入力を選択するためのさらに他のユーザインターフェースを図示する概念図である。図１５において、フライトノード１５０２は、開始ノードとして選択される。開始ノードの選択は、利用可能な開始ノードのドロップダウンリストを含む、任意の技術的に実行可能な機構を介して行うことができる。フライトノード１５０２が選択された場合、モデル入力のために選択されることができる複数のリーフが表示される。
【００６４】
出発地＿州（ＯＲＩＧＩＮ＿ｓｔａｔｅ）、目的地＿州（ＤＥＳＴＩＮＡＴＩＯＮ＿ｓｔａｔｅ）、目的地＿都市（ＤＥＳＴＩＮＡＴＩＯＮ＿ｃｉｔｙ）およびフライト＿数（ＦＬＩＧＨＴ＿ｃｏｕｎｔ）についてのリーフがモデル入力のために選択される。図１５において、フライト＿目的地＿日付（ＦＬＩＧＨＴ＿ｄｅｐａｒｔ＿ｄａｔｅ）＝０１／０１／２００１、出発地＿州＝ＣＡおよび目的地＿州＝ＣＡについてのフィルタがまた、明確化のために結果数を最小化するように追加される。
【００６５】
データベースに対するクエリは、クエリボタンを選択することによって生成されて実行されることができる。クエリの結果は、結果出力１５０４に示される。結果出力１５０４は、モデル入力の選択されたリーフ、すなわち、出発地＿州、目的地＿州、目的地＿都市およびフライト＿数についてのリーフのそれぞれについての列を含む。１つの実施例において、結果出力１５０４における結果が、出発地＿州、目的地＿州および目的地＿都市の固有値トリプレットについて別個の行に結果をグループ化することによって編成されるように、出発地＿州、目的地＿州および目的地＿都市のそれぞれは、種類Ｉのリーフである。この実施例において、空港＿数は、結果出力の各行における空港数を計算する種類ＩＩのリーフである。
【００６６】
本願明細書に記載されるように、ユーザは、結果を選択することによって結果出力１５０４をさらに「掘り」下げることができる。１つの実施例において、ユーザは、出発地州「ＣＡ」（カリフォルニア）、目的地州「ＣＡ」および目的地都市「サンフランシスコ（ＳＡＮ  ＦＲＡＮＣＩＳＣＯ）」を有するフライト数についての数値「８８」に対応する結果１５０６を選択することができる。
【００６７】
図１６は、例示的な実施形態にかかる、以前の結果出力１５０４から結果１５０６を選択した後に図１５のモデル入力に関連付けられた１つ以上のデータベースをクエリする結果出力１６００を表示するためのユーザインターフェースを図示する概念図である。以前の結果出力１５０４から選択されたリーフ（すなわち、フライト＿数）は、特定の詳細設定に関連付けられている。選択されたノードが詳細設定に含まれるノードに対応し、モデル入力のリーフが詳細設定のリーフである場合、モデル入力が生成される。結果は、選択された結果１５０６の行における各種類Ｉのリーフの値によってフィルタリングされる（すなわち、出発地州「ＣＡ」、目的地州「ＣＡ」および目的地都市「サンフランシスコ」によってフィルタリングされる）。
【００６８】
図１６に示されるように、後続の結果出力１６００は、選択された結果１５０６の行における各種類Ｉのリーフの値によってフィルタリングされた、以前に選択された結果１５０６の詳細設定のリーフに対応する列を含むように表示される。それゆえに、結果出力１６００は、出発地州「ＣＡ」および目的地州「ＣＡ」を有していた「サンフランシスコ」の目的地都市を有していた８８個のフライトのそれぞれについて詳細設定を表示する。
【００６９】
図１７は、例示的な実施形態にかかる、データベースをクエリするフロー図である。当業者は、方法１７００が図１〜図３のシステムに関連して記載されていても、方法段階を実行するように構成された任意のシステムは本開示の実施形態の範囲内であることを理解するであろう。
【００７０】
示されるように、方法１７００は、サーバが開始ノードの選択を受信するステップ１７０２において開始する。１つの実施形態において、サーバは、図１におけるサーバ１０６を備える。選択は、クライアント装置１０２などのクライアント装置に表示されるユーザインターフェースを介して行われることができ、データネットワーク１０４を介してサーバに対して通信することができる。ステップ１７０４において、サーバは、１つ以上のリーフの選択を受信する。開始ノードおよび１つ以上のリーフは、データベーステーブルに対応する１つ以上の相互接続されたノードについてモデルに関連付けられた「モデル入力」としてサーバによって受信されることができる。
【００７１】
ステップ１７０６において、サーバは、開始ノードおよび１つ以上のリーフに基づいてデータベースクエリを生成する。データベースクエリを生成することは、図１８においてより詳細に説明される。
【００７２】
ステップ１７０８において、データベースは、サーバに結果を返し、サーバは、クライアント装置に結果出力を返す。結果出力の各列は、１つ以上の選択されたリーフのうちの１つに対応する。また、種類Ｉのリーフである各リーフについて、種類Ｉのリーフの各タプルについての固有値によって結果が集計される。例えば、２つの種類Ｉのリーフがある場合、２つの種類Ｉのリーフについての固有値対に応じて結果が集計される。種類Ｉのリーフの各集計タプルは、結果出力の別個の行として返される。種類ＩＩのリーフである各リーフについて、集計計算が行われ、結果出力の各行について返される。
【００７３】
ステップ１７１０において、サーバは、結果出力からの結果の選択を受信し、また、本願明細書においては返される結果を「掘る」と称する。１つの実施形態において、選択は、種類ＩＩの結果からなる。
【００７４】
ステップ１７１２において、サーバは、選択された結果に関連付けられた詳細設定に基づいてデータベースクエリを生成する。記載されるように、各種類ＩＩのリーフは、開始ノードおよび１つ以上のリーフを含む詳細設定に関連付けられることができる。データベースクエリは、詳細設定の開始ノードおよび詳細設定の１つ以上のリーフを使用して生成される。データベースクエリはまた、選択された結果の行における各種類Ｉのリーフの値によってフィルタリングされる。
【００７５】
ステップ１７１４において、サーバは、後続の結果出力を返す。結果出力の各列は、詳細設定のリーフの１つに対応する。また、各種類Ｉのリーフについて、種類Ｉのリーフの各タプルについての固有値によって結果が集計される。種類Ｉのリーフの各集計タプルは、後続の結果出力の別個の行として返される。種類ＩＩのリーフである各リーフについて、集計計算が行われ、後続の結果出力の各行について返される。
【００７６】
このように、ユーザは、さらに洗練されたデータを受信するように返された結果を「掘り」下げることができる。
【００７７】
モデル作成およびモデルファイル
記載されるように、データベースクエリの生成は、対応するリーフを有する相互接続されたノードのモデルに基づいている。モデルは、モデル内のノード間の関係を識別するモデルファイルによって定義することができる。モデルファイルの実施例は、明細書の付録のページＡ１に示されている。
【００７８】
モデルは、１つ以上のノードを含むことができる。フライトデータを表すモデルの実施例において、モデルは、空港、航空機、事故およびフライトのノードを含むことができる。各ノードは、別個のノードファイルとして表される。空港、航空機、事故およびフライトについてのノードファイルの実施例は、付録（すなわち、事故ノードファイルについてはページＡ２〜Ａ５、航空機ノードファイルについてはページＡ６〜Ａ８、空港ノードファイルについてはページＡ９〜Ａ１０およびフライトノードファイルについてはページのＡ１１〜Ａ１６）に示されている。１つの実施例の実装において、モデルファイルおよびノードファイルは、ＹＡＭＬ（さらに他のマークアップ言語）構文を使用してファイルとして実装される。他の実施形態において、モデルは、データ記憶に適した任意のフォーマットで記憶されることができ、例えば、モデルは、データベースに記憶されることができる。
【００７９】
１つの実装例において、モデル内のノードは、用語「ｖｉｅｗ」および「ｂａｓｅ＿ｖｉｅｗ」を使用してモデル構文において参照される。各ｖｉｅｗ（すなわち、ノード）は、リーフ、結合および集合のセットを含む。１つの実装例において、モデル内のリーフは、用語「ｆｉｅｌｄ」を使用してモデル構文において参照される。リーフは、種類Ｉまたは種類ＩＩからなることができる。種類Ｉのリーフはまた、「ｄｉｍｅｓｉｏｎｓ」と称され、データベーステーブルの属性とすることができる（すなわち、データベーステーブル内にいくつかの直接の物理的存在を有する）またはデータベーステーブル内の値から計算されることができるグループ化可能なフィールドに対応している。種類ＩＩのリーフはまた、「ｍｅａｓｕｒｅｓ」と称され、例えば、ＣＯＵＮＴ（・・・）、ＳＵＭ（・・・）、ＡＶＧ（・・・）、ＭＩＮ（・・・）またはＭＡＸ（・・・）などの集計関数を使用して実装されたリーフに対応している。
【００８０】
結合は、１つのノードと他のノードとの間の接続を定義する。集合は、特定のノードについてのリーフのリストを定義する。実施例の集合は、以下を含む。
・ｉｇｎｏｒｅ−無視するフィールドのセット（任意の文脈において使用しない）、
・ｍｅａｓｕｒｅｓ−測定値として使用するフィールドのセット、
・ｂａｓｅ＿ｏｎｌｙ−ベースビューの文脈に含まれるフィールドのセット、および、
・ａｄｍｉｎ−ユーザが管理者権限を有するときに含むフィールド
【００８１】
本願明細書においてより詳細に説明されるように、ノードおよびモデルファイルは、モデル入力からデータベースクエリを生成するために使用されるクエリフラグメントを含むことができる。１つの実装例において、データベースクエリは、ＳＱＬ（構造化照会言語）クエリであり、クエリフラグメントは、ＳＱＬフラグメントである。
【００８２】
いくつかの実施形態において、リーフＡがモデルにおける他のリーフＢに到達可能な場合、リーフＡは、それ自体のＳＱＬフラグメントの一部としてリーフＢからのＳＱＬフラグメントを使用することができる。図１９は、例示的な実施形態にかかる、１つのノード１９０２および複数のリーフ１９０４、１９０６、１９０８、１９１０を含むモデルを図示する概念図である。この実施例において、構文「＄｛ｌｅａｆ  ｉｄｅｎｔｉｆｉｅｒ｝」は、他のリーフ、すなわちリーフＸのＳＱＬフラグメント１９１２における２つのリーフ（すなわち、ＷおよびＹ）を指すために使用される。１つの実施形態において、モデル入力にリーフＸを含むことは、生成される以下のＳＱＬクエリをもたらすであろう。
0006400073.tif 000004
【００８３】
同様に、モデル入力においてリーフＷおよびＸの双方を選択することは、生成される以下のＳＱＬクエリをもたらすであろう。
0006400073.tif 000005
【００８４】
これは、任意のレベルのフィールドの参照に拡張されることができる。例えば、フィールドＣはまた、フィールドＡからのＳＱＬフラグメントを含むフィールドＢからのＳＱＬフラグメントを含むことができる。このようなＳＱＬフラグメントの参照はまた、種類Ｉおよび種類ＩＩのリーフ間で、同様に種類ＩＩから種類ＩＩへと生じることがある。
【００８５】
さらに、いくつかの実施形態において、いくつかのリーフは、種類Ｉから種類ＩＩに自動的に昇格することができる。リーフが他のリーフからのフラグメントを参照することができることを把握することは、リーフを構築するのに使用される他のリーフに基づいてリーフの種類に関する何かを推測することができることを意味する。１つの実装例において、任意のリーフＡが種類ＩＩである場合、リーフＡを参照する任意のリーフＢは、同様に種類ＩＩのものであると推測することができる。記載されるように、種類ＩＩであるリーフは集計関数を使用し、したがって、結果出力における指定行についての値のグループの集計を含む。そのため、種類Ｉのリーフがデータストアにおける単一行からのデータをもたらすことから、種類Ｉのリーフにおいて種類ＩＩのリーフからのＳＱＬフラグメントを使用することはできない。これは、リーフＢが種類ＩＩのリーフＡを参照することから、そのリーフＢもまた、種類ＩＩのリーフであることを推測することができることを意味する。
【００８６】
モデルおよび関連するノードを使用する１つの固有な態様は、本願明細書において説明されるように、データがモデル入力のために異なるノードからリーフを選択することによってクエリされることができるということである。異なるノードは、以下の構文および実施例を使用して相互接続されることができる。
【００８７】
ノードは、「結合（join）」ステートメントによって他のノードに接続されることができる。付録ＡのページＡ１２の５３行目は１つの実施例である。結合ステートメントは、「結合」構文を使用することによって１つのノードから他のノードへの一方向接続を記載する。ここで、「結合」は、（ＤＥＳＴＩＮＡＴＩＯＮ  ｃｉｔｙ）などの前方に結合識別子を有するフィールド名を表示するために使用される結合のための識別子を記載し、「ｆｒｏｍ」は、ノード識別子であり、「ｓｑｌ＿ｏｎ」は、ノードに結合するために必要なｓｑｌフラグメントである。付録の実施例は、現在のノード、この場合には「空港」を意味するテンプレートビュー−「＄＄」に使用する他の戦略を使用するためにより複雑である。この構文は、他の複数回に１つのノードを結合するのを可能とするが、ｓｑｌ＿ｏｎフラグメントを記載する必要はない。必要に応じて、フィールドセットは、結合されたノードからアクセス可能でなければならないフィールドを判定するために使用することができる。
【００８８】
さらに、記載されるように、各ノードは、１つ以上のリーフに関連付けられることができる。リーフは、記載されるように、種類Ｉまたは種類ＩＩのものとすることができる。また、「詳細設定」は、後続のクエリが特定の種類ＩＩの結果を選択する（すなわち、「掘る」）ことによって生成されるように、種類ＩＩのリーフに関連付けられることができる。
【００８９】
１つの実施形態において、全てのリーフは、デフォルトでは種類Ｉであり、それらが種類ＩＩの副種類であるように指定されたとき（例えば、付録ＡのページＡ９の２６行目におけるｃｏｕｎｔ＿ｄｉｓｔｉｎｃｔ  ｔｙｐｅなど）、それらが「ｍｅａｓｕｒｅｓ」セットに配置されたとき（付録Ａには示されていない）、または、ＳＱＬフラグメントが他の種類ＩＩのリーフを参照したとき（例えば、ページＡ４の１２９行目）に種類ＩＩのリーフになるのみである。詳細設定は、リーフの詳細属性を使用して定義される。属性は、単にフィールドのアレイとすることができる（付録Ａには示されていない）。実施例は、「詳細：[フィールド１、フィールド２、フィールド３]」であり、または、ノードにおいて他の場所に定義された他のセットへの参照とすることができる（例えば、ページＡ９の２９行目は、その詳細設定としてページＡ９の８行目を参照している）。
【００９０】
モデル入力からのクエリ生成
図１７において上述したように、すなわち、ステップ１７０６および１７１２において、データベースクエリは、開始ノード、１つ以上のリーフおよび必要に応じて１つ以上のフィルタの選択に基づいて生成されることができる。実施例としてＳＱＬを使用すると、データベースクエリは、図１８に示される以下のステップを実行することによって生成されることができる。
【００９１】
１つの実装形態において、ノード接続は、ＳＱＬにおけるＪＯＩＮステートメントをもたらす。モデル入力において、モデルの開始ノード以外のノードに接続されたリーフを含むことは、追加の結合が生成されたＳＱＬステートメントにおいて形成されることを意味する。これは、特定のノードファイルにおける各ノード接続についてＳＱＬフラグメントを追加することによって達成される。実施例は、付録ＡのページＡ１２の５３行目に示されている。ここで、ｓｑｌ＿ｏｎ属性において記載されたｓｑｌフラグメントを使用してフライトノードに空港ノードを結合しており、＄＄は、現在のノードを意味している。
【００９２】
図１８は、例示的な実施形態にかかる、モデル入力からデータベースクエリを生成する方法ステップのフロー図である。この例示的な実施形態において、生成されたクエリは、ＳＱＬクエリである。当業者は、方法１８００が図１〜図３のシステムに関連して記載されていても、方法段階を実行するように構成された任意のシステムは本開示の実施形態の範囲内であることを理解するであろう。
【００９３】
示されるように、方法１８００は、サーバがモデル入力を受信するステップ１８０２において開始する。１つの実施形態において、サーバは、図１におけるサーバ１０６を備える。モデル入力は、開始ノード、１つ以上のリーフおよび必要に応じて１つ以上のフィルタを含む。開始ノード、１つ以上のリーフおよび必要に応じて１つ以上のフィルタの選択は、クライアント装置１０２などのクライアント装置に表示されるユーザインターフェースを介して行われることができ、データネットワーク１０４を介してサーバに対して通信することができる。
【００９４】
ステップ１８０４において、サーバは、ＳＱＬフラグメントを記憶するために５つのデータセットを生成する。データセットは、以下の５つのＳＱＬコマンドを対応させることができる：ＳＥＬＥＣＴ、ＪＯＩＮ、ＷＨＥＲＥ、ＧＲＯＵＰ  ＢＹおよびＨＡＶＩＮＧ。
【００９５】
ステップ１８０６において、サーバは、モデル入力１８０６からリーフを選択する。ステップ１８０８において、サーバは、リーフデータに基づいて１つ以上のデータセットにＳＱＬフラグメントを追加する。上述したように、リーフデータは、リーフ識別子、リーフが種類Ｉまたは種類ＩＩのリーフであるかどうかの指示、リーフについての詳細設定、および／または、リーフがアクセス可能であるノードの指示などのリーフに関する様々な情報を含むことができる。
【００９６】
１つの例示的な実装例において、リーフがモデル入力の開始ノードから到達可能でない場合、リーフは無視され、方法１８００はステップ１８１０に進む。リーフが開始ノードから到達可能である場合、サーバは、ＳＱＬフラグメント「｛ｌｅａｆ  ＳＱＬ  ｆｒａｇｍｅｎｔ｝  ＡＳ  ｛ｌｅａｆ  ｉｄｅｎｔｉｆｉｅｒ｝」をＳＥＬＥＣＴデータセットに追加する。リーフが種類Ｉのリーフである場合、サーバはまた、「｛ｌｅａｆ  ｉｄｅｎｔｉｆｉｅｒ｝」をＧＲＯＵＰ  ＢＹデータセットに追加する。リーフが開始ノードに接続されていないが、代わりに他のノードに接続されている場合、サーバは、以下の構文によって問題のノード接続に関連付けられたＳＱＬフラグメントをＪＯＩＮデータセットに追加する：ＪＯＩＮデータセットに対して「ＬＥＦＴ  ＪＯＩＮ  ｛ｎｏｄｅ  ｉｄｅｎｔｉｆｉｅｒ｝  ＯＮ  ｛ｎｏｄｅ  ｃｏｎｎｅｃｔｉｏｎ  ＳＱＬ  ｆｒａｇｍｅｎｔ｝」。リーフがｒｅｑｕｉｒｅｄ＿ｎｏｄｅｓ属性を有する場合、各ｒｅｑｕｉｒｅｄ＿ｎｏｄｅノードについて、サーバは、以下の構文によってノードに関連付けられたＳＱＬフラグメントを追加する：ＪＯＩＮデータセットに対して「ＬＥＦＴ  ＪＯＩＮ  ｛ｎｏｄｅ  ｉｄｅｎｔｉｆｉｅｒ｝  ＯＮ  ｛ｎｏｄｅ  ｃｏｎｎｅｃｔｉｏｎ  ＳＱＬ  ｆｒａｇｍｅｎｔ｝」。いくつかの実施形態において、ノードの依存性は、リーフが「ｒｅｑｕｉｒｅｄ＿ｎｏｄｅｓ」と称される新たな属性（すなわち、ノードのセット）を含むことができることを意味する。リーフ属性として含まれる場合、この属性は、正しく機能するためにＳＱＬフラグメントが必要なノードの結合を生成されたＳＱＬが含むべきであることを指定する。
【００９７】
ステップ１８１０において、サーバは、任意のフィルタがモデル入力に含まれているかどうかを判定する。フィルタが適用されない場合、方法１８００はステップ１８１８に進む。フィルタが適用される場合、方法１８００はステップ１８１２に進む。
【００９８】
ステップ１８１２において、サーバは、リーフが種類Ｉまたは種類ＩＩであるかどうかを判定する。リーフが種類Ｉである場合、方法１８００はステップ１８１４に進む。リーフが種類ＩＩである場合、方法１８００はステップ１８１６に進む。
【００９９】
ステップ１８１４において、種類Ｉのリーフについて、サーバは、ＳＱＬフラグメント「｛ｌｅａｆ  ｉｄｅｎｔｉｆｉｅｒ｝＝｛ｆｉｌｔｅｒ  ｖａｌｕｅ｝」をＷＨＥＲＥデータセットに追加することにより、リーフ識別子をＷＨＥＲＥデータセットに追加する。ステップ１８１６において、種類ＩＩのリーフについて、サーバは、ＳＱＬフラグメント「｛ｌｅａｆ  ｉｄｅｎｔｉｆｉｅｒ｝＝｛ｆｉｌｔｅｒ  ｖａｌｕｅ｝」をＨＡＶＩＮＧデータセットに追加することにより、リーフ識別子をＨＡＶＩＮＧデータセットに追加する。
【０１００】
ステップ１８１８において、サーバは、モデル入力において処理するためのこれ以上のリーフがあるかどうかを判定する。そうでない場合、方法１８００はステップ１８２０に進む。処理するためのこれ以上のリーフがある場合、上述したように、方法１８００はステップ１８０６に戻る。
【０１０１】
ステップ１８２０において、サーバは、５つのデータセットからのフラグメントを使用してＳＱＬクエリを構築する。１つの実施形態において、サーバは、ブランクステートメントから始めて以下のステップを実行することによってＳＱＬクエリを構築する：
・カンマ区切りで、「ＳＥＬＥＣＴ」＋ＳＥＬＥＣＴデータセットにおける各値を追加し、
・「ＦＲＯＭ」＋｛ｎｏｄｅ  ｉｄｅｎｔｉｆｉｅｒ｝を追加し、
・ＪＯＩＮデータセットにおける各値を追加し、
・カンマ区切りで、「ＷＨＥＲＥ」＋ＷＨＥＲＥデータセットにおける各値を追加し、
・カンマ区切りで、「ＧＲＯＵＰ  ＢＹ」＋ＧＲＯＵＰ  ＢＹデータセットにおける各値を追加し、
・カンマ区切りで、「ＨＡＶＩＮＧ」＋ＨＡＶＩＮＧデータセットにおける各値を追加し、
・セミコロンを追加する。
【０１０２】
そして、サーバは、１つ以上のデータベースに対して生成されたＳＱＬクエリを実行する。上述したように、結果は結果出力として返される。
【０１０３】
クエリキリング
データベースクエリによって大抵の場合に遭遇する１つの問題は、複雑なクエリが結果を返すために非常に長時間かかる可能性があるということである。ユーザは、時々長い待ち時間に不満を抱くことがあり、クライアント装置におけるクエリ入力ウィンドウを閉じることがある。そして、新たなクエリの入力がユーザによって入力され、第２のデータベースクエリがデータベースに送信されることがある。
【０１０４】
しかしながら、いくつかの場合において、ユーザに知られずに、最初のクエリは、データベースに対してなおも実行することができる。これは、２番目のクエリが単純であっても、２番目のクエリが結果を返すために時間がかかるのを生じさせることがある。１つ以上の追加のクエリは、１人以上のユーザから送信されることができ、さらにデータベースを詰まらせる。
【０１０５】
本開示の実施形態は、特定のクエリを自動的にキャンセルする技術または「クエリキリング」を提供する。図２０は、例示的な実施形態にかかる、クエリをキャンセルする技術を図示する概念図である。示されるように、システム２０００は、クライアント２００２と、サーバ２００４と、データベース２００６とを含む。クライアント２００２は、サーバ２００４から情報を取得して表示するためのソフトウェアアプリケーションである。サーバは、データベースクエリを構築するように構成されたソフトウェアアプリケーションも実行する。データベース２００６は、クエリが実行される場所である。
【０１０６】
１つの実施形態において、モデルクエリを実行するための要求は、クライアント２００２によってネットワーク接続を介してサーバ２００４に対して送信される。いくつかの実装例において、ユーザは、ブラウザアプリケーションにおいて、モデル入力としてノードおよび１つ以上のリーフを選択し、実行対象のクエリを選択し、結果出力のためにブラウザアプリケーションのウェブページがデータベース２００６から返されるのを待機する。記載されるように、いくつかのデータベースクエリは、データの性質またはクエリの構成のために、実行するために過剰な処理能力および／またはメモリを必要とする。大抵の場合、これらの同じクエリは、他の同時クエリの性能低下をもたらす。
【０１０７】
１つの実装例において、クエリをキャンセルする方法は、図２０に示されるステップを含む。ステップＳ１において、サーバ２００４は、ネットワークを介してモデルクエリについてのクライアント要求を受信する。この接続は、クライアント２００２が結果を待機するのにともない開いた状態に保持される。サーバ２００４は、データベースクエリを生成し、データベース２００６上でクエリを実行し（ステップＳ２ａ）、それに応答してクエリに対応するクエリ識別子を取得する（ステップＳ２ｂ）。
【０１０８】
クエリがデータベース２００６上で実行されている間、サーバ２００４は、ある間隔で、クライアント２００２に対するネットワーク接続の存在を確認する（ステップＳ３）。１つの実装例において、非ブロッキングソケットを使用することができる。例えば、サーバ２００４は、クライアント−サーバ接続の非ブロッキング読み取りを行う。非ブロッキング読み取りが失敗した場合、これは、クライアント２００２がもはやデータベース２００６からの応答を聞いていないことを示す。クライアント接続の確認が失敗した場合、これは、クライアント２００２がもはやモデルクエリの応答を待機していないことを示している（ステップＳ４）。１つの実施例において、ユーザは、ブラウザアプリケーションにおけるブラウザページを閉じることができる。サーバ２００４は、データベース２００６に対して新たなコマンドを送信し、サーバ２００６にステップＳ２において返されるクエリ識別子を使用してクエリを停止させる。あるいは、クエリが完了してクライアント接続がなおも利用可能である場合、サーバ２００４は、通常の過程でクライアント２００２に結果を返す。
【０１０９】
したがって、本開示の実施形態は、ネットワーク接続とクエリ実行との間において１対１のマッピングを作成する。いくつかの実施形態は、クエリがキャンセルされるべきかどうかを判定するためにこの接続性をあてにしている。閉じたソケットは、クエリが実行を継続すべきでないことを意味し、クエリのキャンセルをもたらす。
【０１１０】
様々な実施形態によれば、ソケットは、（クライアント２００２など）の１つのコンピューティングデバイスが（サーバ２００４などの）他のコンピューティングデバイスと通信するのを可能とするアプリケーションプログラミングインターフェース（ＡＰＩ）を有する計算ライブラリを含む。
【０１１１】
様々な実施形態によれば、通常のソケットは、ソケット接続が開いており且つ第２のコンピューティングデバイス上で第１のコンピューティングデバイスによって実行されているソケットから読み取ろうとする場合、第１のコンピューティングデバイスのオペレーティングシステムがいくつかのデータが第２のコンピューティングデバイスから返されるまで待機することを意味する「ブロッキング」ソケットと考えられる。ソケットの読み取りを実行した後に実行されるべきである命令がある場合、いくつかのデータがソケットの読み取りの結果として受信されない限り、すなわち、第１のコンピューティングデバイスのオペレーティングシステムが第２のコンピューティングデバイスからのデータを待機している「スタック」である限り、それらの命令は到達しないことから、これは「ブロッキング」と称される。
【０１１２】
一方で、非ブロッキングソケットは、第１のコンピューティングデバイスのオペレーティングシステムが単に無期限に待機する代わりにエラーを発生させるのを可能とする。非ブロッキングソケットのいくつかの実装例において、特定のエラータイプは、ソケットがそれに利用可能なデータを有しないことを意味する。いくつかの実施形態において、非ブロッキングソケットを設定することは、ファイル記述子を設定するためにファイルまたはＩＯ（入力／出力）動作を使用することを含む。例えば、ファイル記述子について様々な動作を実行するために使用可能な関数ｆｎｃｔｌ（）は、ファイル記述子を「Ｏ＿ＮＯＮＢＬＯＣＫ」に設定することができる。
【０１１３】
ソケットが２つのコンピューティングデバイス間で接続され、ソケットが非ブロッキングとされた後、本開示の実施形態は、コマンドｒｅａｄ（１）を使用してソケットから１バイト読み取ることを試みる。ｒｅａｄ（）関数は、ＩＥＥＥ標準１００３．１に記載されている。
【０１１４】
１つの実施形態において、接続されたソケットから読み取られるべきデータがない場合、特定のエラーコードを使用することができる。例えば、発生可能なエラーメッセージは、「ＥＡＧＡＩＮ」または「ＥＷＯＵＬＤＢＬＯＣＫ」を含む。いくつかの実施形態において、ウェブ要求について、ブラウザが最初の要求を完了した後に、サーバ側においてソケットから読み取られるべきこれ以上のデータがない、すなわち、ウェブブラウザは、全体の要求を送信し、これ以上のデータを送信しないが、代わりに、サーバからの応答を取得するために待機する。
【０１１５】
図２１は、１つの実施形態にかかる、クエリをキャンセルする方法ステップのフロー図である。示されるように、方法２１００は、ウェブサーバ２００４などのサーバコンピューティングデバイスが、要求が他のコンピューティングデバイス上でウェブブラウザから受信されたソケットを受け入れるステップ２１０２において開始する。要求は、サーバコンピューティングデバイスにとってデータベースに対してクエリを実行するためのものとすることができる。１つの実施形態において、ソケットを受け入れることは、ソケットへの接続を受け入れるようにソケットへの参照を取得して「ａｃｃｅｐｔ（）」などの関数を呼び出すことを含む。ステップ２１０４において、サーバコンピューティングデバイスは、ウェブブラウザによって送信された要求に含まれる全てのデータを読み取る。
【０１１６】
ステップ２１０６において、コンピューティングデバイスは、要求がデータベースに対して実行されるべきクエリ（ＳＱＬクエリまたは他の種類のクエリなど）を必要とすることを判定し、データベースに対してクエリを実行し、ソケットに対してクエリのクエリ識別子をマッピングする。ステップ２１０８において、サーバコンピューティングデバイスは、ＳＱＬ要求ソケットのリストにソケットを追加する。リストは、サーバコンピューティングデバイスのメモリに記憶され、サーバコンピューティングデバイスによって維持される。
【０１１７】
ステップ２１０９において、サーバコンピューティングデバイスは、データベースに対するクエリが完了したかどうかを判定する。サーバコンピューティングデバイスがクエリが完了したと判定した場合、方法２１００は、以下に説明されるようにステップ２１１８に進む。サーバコンピューティングデバイスが、クエリがまだ完了していないと判定した場合、本方法はステップ２１１０に進む。
【０１１８】
ステップ２１１０において、サーバコンピューティングデバイスは、ソケット上で（ｒｅａｄ（１）など）の読み取り要求を呼び出す。いくつかの実施形態において、サーバコンピューティングデバイスは、ＳＱＬ要求ソケットのリストに含まれる各ソケットの読み取り要求を呼び出すように構成されている。ステップ２１１２において、サーバコンピューティングデバイスは、読み取り要求からの応答がソケットの他方側に他のコンピューティングデバイスが接続されていることを示すエラーコードを含むかどうかまたは読み取り要求からの応答が任意の他のエラーコードであるかどうかを判定する。ソケットの他方側に他のコンピューティングデバイスが接続されていることを示すエラーコードの実施例は、「ＥＡＧＡＩＮ」または「ＥＷＯＵＬＤＢＬＯＣＫ」である。
【０１１９】
エラーコードがソケットの他方側に他のコンピューティングデバイスが接続されていることを示す場合、本方法は、ステップ２１１４に進み、サーバコンピューティングデバイスは、所定時間待機する。例えば、サーバコンピューティングデバイスは、再度ソケットの接続を確認しようとする前に、５秒間待機することができる。そして、方法２１００は、上述したように、ステップ２１０９に戻る。そのため、読み取り要求は、定期的な間隔で、ソケット上で実行される。間隔は、可変および／または設定可能とすることができる。
【０１２０】
ステップ２１１２において、読み取り要求からの応答が任意の他のエラーコードであった場合（ソケットの他方端にコンピューティングデバイスが接続されていないことを意味する）、方法２１００は、ステップ２１１６に進み、サーバコンピューティングデバイスは、ソケットの反対側においてコンピューティングデバイスが切断されたと判定し、クエリが開始されたときに生成されたクエリ識別子を使用してクエリを停止させるためにデータベースに対してデータベース命令を実行する。ここで、データベースは、そのような停止クエリ命令に対するクエリ応答を停止するように構成されている。いくつかの実施形態において、データ命令は、データベースに対する第２のデータベースのクエリを含む。
【０１２１】
ステップ２１１８において、サーバコンピューティングデバイスは、ＳＱＬ要求ソケットのリストからソケットを削除する。そして、方法２１００は終了する。
【０１２２】
用語「ａ」および「ａｎ」および「ｔｈｅ」および「少なくとも１つ（ａｔ  ｌｅａｓｔ  ｏｎｅ）」ならびに開示された主題を説明する文脈における（特に、以下の特許請求の範囲の文脈における）同様の参照の使用は、本願明細書において他に示されるかまたは文脈において明らかに矛盾しない限り、単数および複数の双方を包含すると解釈されるべきである。１つ以上の項目（例えば、「ＡおよびＢのうちの少なくとも１つ」）のリストが続く用語「少なくとも１つ（ａｔ  ｌｅａｓｔ  ｏｎｅ）」の使用は、本願明細書において他に示されるかまたは文脈において明らかに矛盾しない限り、列挙された項目から選択される１つの項目（ＡまたはＢ）または列挙された項目のうちの２つ以上の任意の組み合わせ（ＡおよびＢ）を意味すると解釈されるべきである。用語「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」および「含有する（ｃｏｎｔａｉｎｉｎｇ）」は、特に断りのない限り、制約がない用語として解釈されるべきである（すなわち、「含むがこれらに限定されないこと」を意味する）。本願明細書における値の範囲の列挙は、本願明細書において他に示されない限り、単に範囲内に含まれるそれぞれ別個の値に個々に言及する省略方法として役立つように意図され、それぞれ別個の値は、本願明細書において個々に列挙されているかのように明細書に組み込まれる。本願明細書に記載された全ての方法は、本願明細書において他に示されるかまたは文脈によって明らかに矛盾しない限り、任意の適切な順序で行うことができる。本願明細書において提供される任意のおよび全ての実施例または例示的な文言（例えば、「など（ｓｕｃｈ  ａｓ）」）の使用は、単に開示された主題をより良好に説明するように意図されるにすぎず、特に断らない限り、本発明の範囲を限定するものではない。明細書における文言は、本発明の実施に不可欠な任意の特許請求していない要素を示すものと解釈されるべきではない。
【０１２３】
本願明細書に開示された実施形態の変形例は、上述した詳細な説明を読んだ当業者にとっては明らかとなるであろう。本発明者らは、当業者が適宜そのような変形例を使用することを予測しており、本発明者らは、本発明が本願明細書において具体的に記載された以外の方法で実施されることを意図している。したがって、本発明は、適用法によって許容されるように、添付の特許請求の範囲に記載された主題の全ての変更および均等物を含む。さらに、その全ての可能な変形例における上述した要素の任意の組み合わせは、本願明細書において他に示されるかまたは文脈によって明らかに矛盾しない限り、本発明によって包含される。
【０１２４】
上述した本発明の主題の実施形態を含む態様は、単独でまたは１つ以上の他の態様もしくは実施形態と組み合わせて有益であり得る。上述した詳細な説明を限定することなく、１〜５５の番号が付された本開示の特定の非限定的態様が以下に提供される。本開示を読んだ当業者にとっては明らかであろうように、個別に番号が付された態様のそれぞれは、使用されることができるかまたは前後の個別に番号が付された態様のいずれかと組み合わせることができる。これは、態様の全てのそのような組み合わせについての裏付けを提供することを意図しており、明示的に以下に提供される態様の組み合わせに限定されるものではない。
１．１つ以上のデータベースをクエリする方法において、
コンピューティングデバイスにおいて、１つ以上のデータベーステーブルに対応するモデルに含まれている開始ノードの選択を受信することと、
前記コンピューティングデバイスにおいて、各リーフが前記モデル内のノードに接続されている１つ以上のリーフの第１のセットの選択を受信することと、
前記開始ノードおよび前記リーフの第１のセットに基づいて、第１のデータベースクエリを生成することと、
前記１つ以上のデータベース上で実行される前記第１のデータベースクエリに基づいて、第１の結果出力を提供することと、
前記第１の結果出力における結果の選択を受信することと、
前記第１の結果出力における結果の選択に基づいて、前記結果に関連付けられた詳細設定に関連付けられている第２のデータベースクエリを生成することと、
前記１つ以上のデータベース上で実行される前記第２のデータベースクエリに基づいて、第２の結果出力を提供することとを備える、方法。
２．前記１つ以上のデータベースがリレーショナルデータベースであり、前記第１および第２のデータベースクエリがＳＱＬ（構造化照会言語）クエリである、１に記載の方法。
３．前記リーフの第１のセットにおける各リーフが、第１のリーフ種類または第２のリーフ種類のいずれかに関連付けられている、１または２に記載の方法。
４．前記第１の結果出力が、前記第１のセットにおける各リーフについての列と、前記第１のセットにおける前記第１のリーフ種類に関連付けられたリーフについての値の各固有のタプルについての別個の行とを含む、３に記載の方法。
５．前記第２のリーフ種類に関連付けられたリーフに対応する前記第１の結果出力における各列について、集計値が行のデータに基づいて列の各行に設けられる、４に記載の方法。
６．前記集計値が、前記行における１つ以上の値の合計、カウント、平均、最小または最大を計算することに基づいている、５に記載の方法。
７．前記モデルが複数の相互接続されたノードを含み、各ノードが１つ以上のリーフに関連付けられている、１〜６のうちのいずれか一項に記載の方法。
８．前記第１のセットにおける各リーフが、前記開始ノードまたは前記複数の相互接続されたノードにおける他のノードに関連付けられている、７に記載の方法。
９．前記第１のデータベースクエリを生成することが、
データベースクエリフラグメントを記憶するように５つのデータセットを生成することと、
前記第１のセットにおける各リーフについて、前記リーフの属性に基づいて前記５つのデータセットのうちの１つ以上に対して１つ以上のデータベースクエリフラグメントを追加することと、
前記５つのデータセットから前記データベースクエリフラグメントをともに追加することによって前記第１のデータベースクエリを構築することとを備える、１〜８のうちのいずれか一項に記載の方法。
１０．前記第１のデータベースクエリがＳＱＬ（構造化照会言語）クエリを含み、前記５つのデータセットが、ＳＥＬＥＣＴ、ＪＯＩＮ、ＷＨＥＲＥ、ＧＲＯＵＰ  ＢＹおよびＨＡＶＩＮＧについてのＳＱＬコマンドに対応する、１〜９のうちのいずれか一項に記載の方法。
１１．前記結果に関連付けられた前記詳細設定が、第２の開始ノードおよびリーフの第２のセットに関連付けられており、前記第２のデータベースクエリを生成することが、前記第２の開始ノードおよび前記リーフの第２のセットに基づいて前記第２のデータベースクエリを生成することを備え、前記第２のデータベースクエリが、前記選択された結果に対応する前記第１の結果出力における行に含まれる１つ以上の値によってフィルタリングされる、１〜１０のうちのいずれか一項に記載の方法。
１２．前記１つ以上のデータベースが、リレーショナルデータベース、非リレーショナルデータベース、ファイルベースのデータベースおよび／または非ファイルベースのデータベースを含む、１〜１１のうちのいずれか一項に記載の方法。
１３．前記第１の結果出力が、前記第１のセットにおけるリーフのうちの１つにしたがってソートされる、１〜１２のうちのいずれか一項に記載の方法。
１４．データベースクエリを生成するシステムにおいて、
１つ以上のデータベースと、
クライアント装置と、
サーバとを備え、前記サーバが、
データネットワークを介して前記クライアント装置からモデル入力を受信し、前記モデル入力が前記１つ以上のデータベースに記憶された１つ以上のデータベーステーブルに対応するモデルに含まれるノードおよびリーフの第１のセットを含み、
データベースクエリフラグメントを記憶するように複数のデータセットを生成し、
前記第１のセットにおける各リーフについて、前記リーフの属性に基づいて前記複数のデータセットのうちの１つ以上に対して１つ以上のデータベースクエリフラグメントを追加し、
前記複数のデータセットから前記データベースクエリフラグメントをともに追加することによってデータベースクエリを構築し、
前記１つ以上のデータベースに対して前記データベースクエリを実行し、
前記クライアント装置に対して前記データベースクエリの結果を返すように構成されている、システム。
１５．前記データベースクエリがＳＱＬ（構造化照会言語）クエリを含み、前記複数のデータセットが、ＳＥＬＥＣＴ、ＪＯＩＮ、ＷＨＥＲＥ、ＧＲＯＵＰ  ＢＹおよびＨＡＶＩＮＧについてのＳＱＬコマンドに対応する、１４に記載のシステム。
１６．前記リーフがリーフＳＱＬフラグメントおよびリーフ識別子に関連付けられており、前記サーバが、前記リーフが前記ノードから到達可能である場合、構文「｛ｌｅａｆ  ＳＱＬ  ｆｒａｇｍｅｎｔ｝  ＡＳ  ｛ｌｅａｆ  ｉｄｅｎｔｉｆｉｅｒ｝」を使用して前記ＳＥＬＥＣＴデータセットに対してＳＱＬフラグメントを追加するように構成されている、１５に記載のシステム。
１７．前記リーフがリーフ識別子に関連付けられており、前記サーバが、前記リーフが第１のリーフ種類に関連付けられている場合、構文「｛ｌｅａｆ  ｉｄｅｎｔｉｆｉｅｒ｝」を使用して前記ＧＲＯＵＰ  ＢＹデータセットに対してＳＱＬフラグメントを追加するように構成されている、１５に記載のシステム。
１８．前記リーフがリーフ識別子およびノード接続ＳＱＬフラグメントに関連付けられており、前記サーバが、前記リーフが前記ノードに接続されていないが、代わりに前記モデルにおける他のノードに接続されている場合、構文「ＬＥＦＴ  ＪＯＩＮ  ｛ｎｏｄｅ  ｉｄｅｎｔｉｆｉｅｒ｝  ＯＮ  ｛ｎｏｄｅ  ｃｏｎｎｅｃｔｉｏｎ  ＳＱＬ  ｆｒａｇｍｅｎｔ｝」を使用して前記ＪＯＩＮデータセットに対してＳＱＬフラグメントを追加するように構成されており、前記ノード接続ＳＱＬフラグメントが、前記モデルにおける２つのノードの結合に関連付けられている、１５に記載のシステム。
１９．データベースをクエリする方法において、
サーバ装置において、ネットワーク接続を介してクライアント装置からクエリ入力を受信することと、
前記クエリ入力に基づいてデータベースクエリを生成することと、
前記データベースクエリに１つ以上のデータベースに対する実行を開始させることと、
ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定することと、
前記サーバが、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを判定した場合、前記データベースクエリにキャンセルさせることとを備える、方法。
２０．前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定することが、前記ネットワーク接続において非ブロッキング読み取りを実行することを備える、１９に記載の方法。
２１．データベースをクエリする方法において、
サーバコンピューティングデバイスにより、ネットワーク接続を介してクライアント装置からクエリ入力を受信することと、
前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間において非ブロッキングソケットを確立することと、
前記クエリ入力に基づいてデータベースクエリを生成することと、
前記データベースクエリに１つ以上のデータベースに対する実行を開始させることと、
前記サーバコンピューティングデバイスにより、非ブロッキングソケットの読み取り要求を実行することと、
前記非ブロッキングソケットの読み取り要求に応答してコードを受信することと、
前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定することと、
前記サーバが、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを判定した場合、前記データベースクエリにキャンセルさせることとを備える、方法。
２２．１つ以上のデータベースがリレーショナルデータベースであり、前記クエリがＳＱＬ（構造化照会言語）クエリである、２１に記載の方法。
２３．前記データベースクエリにキャンセルさせることが、第２のデータベースクエリに前記１つ以上のデータベースに対する実行を開始させることを備える、２１または２２に記載の方法。
２４．１対１のマッピングが、各非ブロッキングソケットと対応するクエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、２１〜２３のうちのいずれか一項に記載の方法。
２５．さらに、前記リストに含まれる各非ブロッキングソケットの前記読み取り要求を定期的に実行することを備える、２４に記載の方法。
２６．前記コードが、前記サーバコンピューティングデバイスからの前記非ブロッキングソケットの他方側において前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、２１〜２５のうちのいずれか一項に記載の方法。
２７．前記コードが「ＥＡＧＡＩＮ」または「ＥＷＯＵＬＤＢＬＯＣＫ」メッセージのうちの１つ以上を含む、２６に記載の方法。
２８．データベースをクエリするサーバコンピューティングデバイスにおいて、
プロセッサと、
前記プロセッサによって実行されたときに前記サーバコンピューティングデバイスに、
ネットワーク接続を介してクライアント装置からクエリ入力を受信させ、
前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間において非ブロッキングソケットを確立させ、
前記クエリ入力に基づいてデータベースクエリを生成させ、
前記データベースクエリに１つ以上のデータベースに対する実行を開始させ、
非ブロッキングソケットの読み取り要求を実行させ、
前記非ブロッキングソケットの読み取り要求に応答してコードを受信させ、
前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定させ、
前記サーバが、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを判定した場合、前記データベースクエリにキャンセルさせる命令を記憶するメモリとを備える、サーバコンピューティングデバイス。
２９．１つ以上のデータベースがリレーショナルデータベースであり、前記クエリがＳＱＬ（構造化照会言語）クエリである、２８に記載のサーバコンピューティングデバイス。
３０．前記データベースクエリにキャンセルさせることが、第２のデータベースクエリに前記１つ以上のデータベースに対する実行を開始させることを備える、２８または２９に記載のサーバコンピューティングデバイス。
３１．１対１のマッピングが、各非ブロッキングソケットと対応するクエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、２８〜３０のうちのいずれか一項に記載のサーバコンピューティングデバイス。
３２．さらに、前記リストに含まれる各非ブロッキングソケットの前記読み取り要求を定期的に実行することを備える、３１に記載のサーバコンピューティングデバイス。
３３．前記コードが、前記サーバコンピューティングデバイスからの前記非ブロッキングソケットの他方側において前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、２８〜３２のうちのいずれか一項に記載のサーバコンピューティングデバイス。
３４．前記コードが「ＥＡＧＡＩＮ」または「ＥＷＯＵＬＤＢＬＯＣＫ」メッセージのうちの１つ以上を含む、３３に記載のサーバコンピューティングデバイス。
３５．データベースをクエリするクライアントコンピューティングデバイスにおいて、
プロセッサと、
前記プロセッサによって実行されたときに前記クライアントコンピューティングデバイスに、
ネットワーク接続を介してサーバコンピューティングデバイスに対してクエリ入力を送信させ、非ブロッキングソケットが前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間に確立され、前記クエリ入力に基づいてデータベースクエリが生成されて１つ以上のデータベースに対して実行され、
前記サーバコンピューティングデバイスから非ブロッキングソケットの読み取り要求を受信させ、
前記非ブロッキングソケットの読み取り要求に応答して前記サーバコンピューティングデバイスに対してコードを送信させ、コードが、前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に依然として存在するかどうかを前記サーバコンピューティングデバイスが判定するのを可能とし、前記サーバコンピューティングデバイスが、前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に存在しないことを判定した場合、前記サーバコンピューティングデバイスが、前記データベースクエリにキャンセルさせることができる命令を記憶するメモリとを備える、クライアントコンピューティングデバイス。
３６．１つ以上のデータベースがリレーショナルデータベースであり、前記クエリがＳＱＬ（構造化照会言語）クエリである、３５に記載のクライアントコンピューティングデバイス。
３７．１対１のマッピングが、前記非ブロッキングソケットと前記クエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、３５または３６に記載のクライアントコンピューティングデバイス。
３８．前記読み取り要求が前記サーバコンピューティングデバイスから定期的に受信される、３５〜３７のうちのいずれか一項に記載のクライアントコンピューティングデバイス。
３９．前記コードが、前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、３５〜３８のうちのいずれか一項に記載のクライアントコンピューティングデバイス。
４０．前記コードが「ＥＡＧＡＩＮ」または「ＥＷＯＵＬＤＢＬＯＣＫ」メッセージのうちの１つ以上を含む、３５〜３９のうちのいずれか一項に記載のクライアントコンピューティングデバイス。
４１．サーバコンピューティングデバイスのプロセッサによって実行されたときに前記サーバコンピューティングデバイスに、
ネットワーク接続を介してクライアント装置からクエリ入力を受信させ、
前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間において非ブロッキングソケットを確立させ、
前記クエリ入力に基づいてデータベースクエリを生成させ、
前記データベースクエリに１つ以上のデータベースに対する実行を開始させ、
非ブロッキングソケットの読み取り要求を実行させ、
前記非ブロッキングソケットの読み取り要求に応答してコードを受信させ、
前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定させ、
前記サーバが、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを判定した場合、前記データベースクエリにキャンセルさせる命令を備える、持続性記録媒体。
４２．１つ以上のデータベースがリレーショナルデータベースであり、前記クエリがＳＱＬ（構造化照会言語）クエリである、４１に記載の持続性記録媒体。
４３．前記データベースクエリにキャンセルさせることが、第２のデータベースクエリに前記１つ以上のデータベースに対する実行を開始させることを備える、４１または４２に記載の持続性記録媒体。
４４．１対１のマッピングが、各非ブロッキングソケットと対応するクエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、４１〜４３のうちのいずれか一項に記載の持続性記録媒体。
４５．さらに、前記サーバコンピューティングデバイスの前記プロセッサによって実行されたときに前記サーバコンピューティングデバイスに前記リストに含まれる各非ブロッキングソケットの前記読み取り要求を定期的に実行させる命令を備える、４４に記載の持続性記録媒体。
４６．前記コードが、前記サーバコンピューティングデバイスからの前記非ブロッキングソケットの他方側において前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、４１〜４５のうちのいずれか一項に記載の持続性記録媒体。
４７．前記コードが「ＥＡＧＡＩＮ」または「ＥＷＯＵＬＤＢＬＯＣＫ」メッセージのうちの１つ以上を含む、４６に記載の持続性記録媒体。
４８．クライアントコンピューティングデバイスのプロセッサによって実行されたときに前記クライアントコンピューティングデバイスに、
ネットワーク接続を介してサーバコンピューティングデバイスに対してクエリ入力を送信させ、非ブロッキングソケットが前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間に確立され、前記クエリ入力に基づいてデータベースクエリが生成されて１つ以上のデータベースに対して実行され、
前記サーバコンピューティングデバイスから非ブロッキングソケットの読み取り要求を受信させ、
前記非ブロッキングソケットの読み取り要求に応答して前記サーバコンピューティングデバイスに対してコードを送信させ、コードが、前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に存在するかどうかを前記サーバコンピューティングデバイスが判定するのを可能とし、前記サーバコンピューティングデバイスが、前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に存在しないことを判定した場合、前記サーバコンピューティングデバイスが、前記データベースクエリにキャンセルさせることができる命令を備える、持続性記録媒体。
４９．１つ以上のデータベースがリレーショナルデータベースであり、前記クエリがＳＱＬ（構造化照会言語）クエリである、４８に記載の持続性記録媒体。
５０．１対１のマッピングが、前記非ブロッキングソケットと前記クエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、４８または４９に記載の持続性記録媒体。
５１．前記読み取り要求が前記サーバコンピューティングデバイスから定期的に受信される、４８〜５０のうちのいずれか一項に記載の持続性記録媒体。
５２．前記コードが、前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、４８〜５１のうちのいずれか一項に記載の持続性記録媒体。
５３．前記コードが「ＥＡＧＡＩＮ」または「ＥＷＯＵＬＤＢＬＯＣＫ」メッセージのうちの１つ以上を含む、４８〜５２のうちのいずれか一項に記載の持続性記録媒体。
５４．前記１つ以上のリーフの第１のセットのうちの少なくとも２つのリーフが、前記モデルにおける異なるノードに接続される、１に記載の方法。
５５．前記１つ以上のリーフの第１のセットのうちの少なくとも２つのリーフが、前記モデルにおける異なるノードに接続される、１４に記載のシステム。
0006400073.tif 000006
0006400073.tif 000007
0006400073.tif 000008
0006400073.tif 000009
0006400073.tif 000010
0006400073.tif 000011
0006400073.tif 000012
0006400073.tif 000013
0006400073.tif 000014
0006400073.tif 000015
0006400073.tif 000016
0006400073.tif 000017
0006400073.tif 000018
0006400073.tif 000019
0006400073.tif 000020
0006400073.tif 000021
【図１】
0006400073.tif 000022
【図２】
0006400073.tif 000023
【図３】
0006400073.tif 000024
【図４】
0006400073.tif 000025
【図５】
0006400073.tif 000026
【図６】
0006400073.tif 000027
【図７】
0006400073.tif 000028
【図８】
0006400073.tif 000029
【図９】
0006400073.tif 000030
【図１０】
0006400073.tif 000031
【図１１】
0006400073.tif 000032
【図１２】
0006400073.tif 000033
【図１３】
0006400073.tif 000034
【図１４】
0006400073.tif 000035
【図１５】
0006400073.tif 000036
【図１６】
0006400073.tif 000037
【図１７】
0006400073.tif 000038
【図１８】
0006400073.tif 000039
【図１９】
0006400073.tif 000040
【図２０】
0006400073.tif 000041
【図２１】
0006400073.tif 000042