1つ以上のデータベースをクエリする方法

著者らは特許

G06F17/30 - 情報検索;そのためのデータベース構造

の所有者の特許 JP2016517600:

ルッカー データ サイエンシズ インコーポレイテッド

 

データベーステーブルがモデル内のノードとして表現される、データベースをクエリするシステムおよび方法を開示する。各ノードは、少なくとも1つのリーフに関連付けられている。ノードは、互いに相互接続されることができる。開始ノード、1つ以上のリーフおよび必要に応じて1つ以上のフィルタを含むモデル入力は、クライアント装置からサーバによって受信される。

 

 

背景
多くの企業は、1つ以上のデータベースにデータ項目を記憶する。これらのデータベースは、大抵の場合、列および行を有するテーブルを含む。テーブルにおける各列は、特定のデータフィールドに関連付けられている。テーブルにおけるエントリは、その特定の行に対する列に記憶されているエントリに対応するデータによって行において構成されている。
データベースにおけるデータの記憶によって大抵の場合に遭遇する1つの問題は、データを効率的にクエリしているということである。いくつかの実施例において、特定のエンティティについてのデータは、複数のデータベーステーブルにわたって分散されることができる。データセットが大きく複数のデータベーステーブルにわたって分散される場合、有用な結果を返すようにデータをクエリすることは、複雑で困難な作業になる可能性がある。さらに、異なるデータベーステーブル間の関係は、クエリを生成する人によって容易に理解されないことがあるため、クエリを生成することは、エラーが発生しやすい可能性がある。
概要
1つの実施形態は、1つ以上のデータベースのクエリ方法を提供する。本方法は、コンピューティングデバイスにおいて、1つ以上のデータベーステーブルに対応するモデルに含まれる開始ノードの選択を受信することと、コンピューティングデバイスにおいて、各リーフがモデル内のノードに接続される1つ以上のリーフの第1のセットの選択を受信することと、開始ノードおよびリーフの第1のセットに基づいて第1のデータベースクエリを生成することと、1 つ以上のデータベースにおいて実行する第1のデータベースクエリに基づいて第1の結果出力を提供することと、第1の結果出力における結果の選択を受信することと、第1の結果出力における結果の選択に基づいて、結果に関連付けられた詳細セットに関連付けられた第2のデータベースクエリを生成することと、1つ以上のデータベースにおいて実行する第2のデータベースクエリに基づいて第2の結果出力を提供することとを含む。
他の実施形態は、データベースクエリの生成方法を提供する。本方法は、データベースクエリフラグメントを記憶するために5つのデータセットを生成することと、第1のセットにおける各リーフについて、リーフの属性に基づいて5つのデータセットのうちの1つ以上に対して1つ以上のデータベースクエリフラグメントを追加することと、5つのデータセットからデータベースクエリフラグメントをともに追加することによって第1のデータベースクエリを構築することとを備える。
さらに他の実施形態は、データベースクエリを生成するシステムを提供する。システムは、1つ以上のデータベースと、クライアント装置と、サーバとを含む。サーバは、データネットワークを介してクライアント装置から、1つ以上のデータベースに記憶された1つ以上のデータベーステーブルに対応するモデルに含まれるノードおよびリーフの第1のセットを含むモデル入力を受信し、データベースクエリフラグメントを記憶するように複数のデータセットを生成し、第1のセットにおける各リーフについて、リーフの属性に基づいて複数のデータセットのうちの1つ以上に対して1つ以上のデータベースクエリフラグメントを追加し、複数のデータセットからのデータベースクエリフラグメントとともに追加することによってデータベースクエリを構築し、1つ以上のデータベースに対してデータベースクエリを実行し、クライアント装置に対してデータベースクエリの結果を返すように構成されている。
さらに他の実施形態は、データネットワークを介してクライアント装置から、1つ以上のデータベースに記憶された1つ以上のデータベーステーブルに対応するモデルに含まれるノードおよびリーフの第1のセットを含むモデル入力を受信し、データベースクエリフラグメントを記憶するように複数のデータセットを生成し、第1のセットにおける各リーフについて、リーフの属性に基づいて複数のデータセットのうちの1つ以上に対して1つ以上のデータベースクエリフラグメントを追加し、複数のデータセットからのデータベースクエリフラグメントとともに追加することによってデータベースクエリを構築し、1つ以上のデータベースに対してデータベースクエリを実行し、クライアント装置に対してデータベースクエリの結果を返すように構成されたサーバを提供する。
さらに他の実施形態は、データベースのクエリ方法を提供する。本方法は、サーバ装置において、ネットワーク接続を介してクライアント装置からクエリ入力を受信することと、クエリ入力に基づいてデータベースクエリを生成することと、1つ以上のデータベースに対してデータベースクエリの実行を開始させることと、ネットワーク接続がクライアント装置とサーバ装置との間に存在するかどうかを判定することと、ネットワーク接続がクライアント装置とサーバ装置との間に存在しないとサーバが判定した場合にデータベースクエリをキャンセルさせることとを含む。
さらに他の実施形態は、データベースをクエリし、そのようなクエリをキャンセルするシステムおよび方法を提供する。例えば、サーバコンピューティングデバイスは、プロセッサとメモリとを含むことができる。メモリは、プロセッサによって実行されたときにサーバコンピューティングデバイスに、ネットワーク接続を介してクライアント装置からクエリ入力を受信させ、クライアントコンピューティングデバイスとサーバコンピューティングデバイスとの間の非ブロッキングソケットを確立させ、クエリ入力に基づいてデータベースクエリを生成させ、1つ以上のデータベースに対してデータベースクエリの実行を開始させ、非ブロッキングソケットについての読み取り要求を実行させ、非ブロッキングソケットについての読み取り要求に応じてコードを受信させ、受信したコードに基づいてネットワーク接続がクライアント装置とサーバ装置との間に存在するかどうかを判定させ、ネットワーク接続がクライアント装置とサーバ装置との間に存在しないとサーバが判定した場合にデータベースクエリをキャンセルさせる命令を記憶する。
図1は、例示的な実施形態にかかる、1つ以上のデータベースをクエリする例示的なシステムのブロック図である。 図2は、例示的な実施形態にかかる、1つ以上のデータベースをクエリするように構成されたコンピューティングデバイスの構成要素の構成のブロック図である。 図3は、1つの実施形態にかかるコンピューティングデバイスについての機能的構成要素の実施例のブロック図である。 図4は、例示的な実施形態にかかる、1つ以上のデータベーステーブルの概念図である。 図5は、例示的な実施形態にかかる、1つ以上のデータベーステーブルを表すノードおよびリーフを含むモデルを図示する概念図である。 図6は、例示的な実施形態にかかる、図5におけるモデルに関連付けられた1つ以上のデータベースをクエリするモデル入力を図示する概念図である。 図7は、例示的な実施形態にかかる、図6のモデルに関連付けられた1つ以上のデータベースをクエリする結果出力を図示する概念図である。 図8は、例示的な実施形態にかかる、結果出力から結果を選択することによって図5のモデルに関連付けられた1つ以上のデータベースをクエリするモデル入力を図示する概念図である。 図9は、例示的な実施形態にかかる、以前の結果出力から結果を選択した後に図6のモデル入力に関連付けられた1つ以上のデータベースをクエリする結果出力を図示する概念図である。 図10は、例示的な実施形態にかかる、結果出力から結果を選択することによって図5におけるモデルに関連付けられた1つ以上のデータベースをクエリするモデル入力を図示する概念図である。 図11は、例示的な実施形態にかかる、後続の結果出力から結果を選択した後に図10のモデル入力に関連付けられた1つ以上のデータベースをクエリする結果出力を図示する概念図である。 図12は、例示的な実施形態にかかる、1つ以上のデータベーステーブルを表すノードおよびリーフを含むモデルを図示する概念図である。 図13は、例示的な実施形態にかかる、図12におけるモデルに関連付けられた1つ以上のデータベースをクエリするモデル入力を選択するためのユーザインターフェースを図示する概念図である。 図14は、例示的な実施形態にかかる、以前の結果出力から結果を選択した後に図13のモデル入力に関連付けられた1つ以上のデータベースをクエリする結果出力を表示するためのユーザインターフェースを図示する概念図である。 図15は、例示的な実施形態にかかる、図12におけるモデルに関連付けられた1つ以上のデータベースをクエリするモデル入力を選択するためのさらに他のユーザインターフェースを図示する概念図である。 図16は、例示的な実施形態にかかる、以前の結果出力から結果を選択した後に図15のモデル入力に関連付けられた1つ以上のデータベースをクエリする結果出力を表示するためのユーザインターフェースを図示する概念図である。 図17は、例示的な実施形態にかかる、データベースをクエリするフロー図である。 図18は、例示的な実施形態にかかる、モデル入力からデータベースクエリを生成する方法ステップのフロー図である。 図19は、例示的な実施形態にかかる、1つのノードおよび複数のリーフを含むモデルを図示する概念図である。 図20は、例示的な実施形態にかかる、クエリをキャンセルする技術を図示する概念図である。 図21は、例示的な実施形態にかかる、クエリをキャンセルする方法ステップのフロー図である。
詳細な説明
図1は、例示的な実施形態にかかる、1つ以上のデータベースをクエリする例示的なシステムのブロック図である。システムは、クライアント装置102と、データネットワーク104と、1つ以上のサーバ106と、データベース108および110とを含む。
クライアント装置102は、パーソナルコンピュータ、ラップトップコンピュータ、計算機能を有する携帯電話を含む任意の種類のコンピューティングデバイスまたは任意の他の種類の装置とすることができる。クライアント装置102は、とりわけ、デバイスハードウェア120、ソフトウェアアプリケーション122、他のアプリケーション(複数可)、通信クライアント、出力装置(例えば、ディスプレイ)および入力装置(例えば、キーボード、マウス、タッチスクリーン)などを含む。いくつかの実施形態において、クライアント装置102は、出力装置および入力装置の双方として機能することができる。
デバイスハードウェア120は、プロセッサやメモリなどの物理的なコンピュータ構成要素を含む。ソフトウェアアプリケーション122は、1つ以上のデータベース108、110をクエリするための入力を受信するように構成されている。様々な実施形態によれば、ソフトウェアアプリケーション122は、クライアント装置102のOS(オペレーティングシステム)にまたはクライアント装置102におけるスタンドアロンアプリケーションとして実装されることができる。1つの実施形態において、ソフトウェアアプリケーション122は、ウェブブラウザアプリケーションである。
データネットワーク104は、とりわけ、インターネットネットワーク(例えば、ワイドエリアネットワーク(WAN)もしくはローカルエリアネットワーク(LAN))、有線もしくは無線ネットワークまたは携帯電話データネットワークを含む任意の種類の通信ネットワークとすることができる。
クライアント装置102は、データネットワーク104を介してサーバ106と通信するように構成されている。サーバ106は、クライアント装置102から受信した入力に基づいてデータベース108、110に対してクエリを生成するように構成されたプロセッサによって実行されるソフトウェアアプリケーションを含む。サーバ106は、データベース108および110と通信する。データベース108、110は、データを記憶するように構成されている。データベース108、110は、とりわけ、リレーショナルデータベース、非リレーショナルデータベース、ファイルベースのデータベースおよび/または非ファイルベースのデータベースを含む任意の種類のデータベースとすることができる。
本願明細書においてより詳細に説明されるように、本開示の1つ以上の実施形態は、1つ以上のデータベースをクエリするためのシステムおよび方法を提供する。記載されるように、データベースは、大抵の場合、一連のテーブルとして構成されている。様々な実施形態によれば、データベースクエリモデルは、一連の相互接続された「ノード」として構成されることができ、各ノードは、データベーステーブルに対応する。本開示の1つ以上の実施形態において、ノードは、データセットを定義するSQL式にマッピングまたは対応する。そのようなデータセットは、データベースにおける1つ以上の行からまたは代わりにSQL式中から生じることができる。したがって、いくつかの実施形態において、ノードは、データベースに記憶されていないが、SQLにおいて記憶されたデータベーステーブルとして扱われるテーブルに対応することができる。各ノードは、ゼロ以上の他のノードに接続されることができる。各ノードはまた、1つ以上の「リーフ」と関連付けられることができ、各リーフは、対応するデータベーステーブルにおける列の1つに対応する。各リーフは、さらに、本願明細書において非常に詳細に記載されるように、識別子「リーフ種類」およびゼロ以上の詳細パラメータに関連付けられることができる。
モデル入力は、クライアント装置102において開始ノード、1つ以上のリーフおよびゼロ以上のフィルタの選択に基づいて生成される。モデル入力は、データネットワーク104を介してサーバ106に送信される。サーバ106は、モデル入力を受信し、モデル入力に基づいてデータベースクエリを生成する。データベースクエリは、1つ以上のデータベースに対して実行されて結果を返す。
上述したように、モデル入力は、単一の開始ノード、1つ以上のリーフおよびゼロ以上のフィルタの選択を含む。1つ以上のリーフは、選択された開始ノードのリーフおよび/または開始ノードに接続されたノードのリーフとすることができる。本願明細書においてより詳細に説明されるように、各リーフは、とりわけ、リーフ識別子、リーフ種類および必要に応じて「詳細設定」を含む。
モデル入力からデータベースクエリを生成するために、サーバ106は、図18に詳細に記載されたクエリ生成アルゴリズムを実行する。すなわち、選択されたリーフのそれぞれについて、サーバ106は、リーフが相互接続されたノードを介して選択されたノードから到達可能であるかどうかを判定する。そうでない場合、リーフは無視される。選択されたノードおよび到達可能なリーフのセットを使用して、コンピューティングデバイスは、データベース(複数可)からデータを取得するためのクエリを構築する。さらに、サーバ106は、生成されたデータベースクエリ内で直接またはデータベースクエリが結果を返した後にデータベース(複数可)から返されたデータのセットをフィルタリングする。そして、クエリは実行され、結果が返される。
返された結果を表示するために、コンピューティングデバイスは、モデル入力のリーフに対して結果の列をマッピングする。「詳細設定」がモデル入力に提供された特定のリーフに関連付けられている場合、コンピューティングデバイスはまた、結果において結果の行毎にリーフについての詳細パラメータを含む。
図2は、例示的な実施形態にかかる、1つ以上のデータベースをクエリするように構成されたコンピューティングデバイス200の構成要素の構成のブロック図である。示されるように、コンピューティングデバイス200は、他の構成要素(図示しない)のうち、プロセッサ202およびメモリ204を含む。1つの実施形態において、コンピューティングデバイス200は、クライアント装置102を備える。他の実施形態において、コンピューティングデバイス200は、サーバ106を備える。
メモリ204は、インストールされたアプリケーション210、オペレーティングシステム208およびソフトウェアアプリケーション222を含むプロセッサ202によって実行される様々なアプリケーションを含む。コンピューティングデバイス200がクライアント装置102を含む実施形態において、ソフトウェアアプリケーション222は、ウェブブラウザアプリケーションを含む。コンピューティングデバイス200がサーバ106を備える実施形態において、ソフトウェアアプリケーション222は、モデル入力を受信してデータベースクエリを生成するように構成されたソフトウェアアプリケーションを備える。
図3は、1つの実施形態にかかる、コンピューティングデバイス302についての機能的構成要素の実施例のブロック図である。コンピューティングデバイス302の1つの特定の実施例が図示されている。コンピューティングデバイス302の多くの他の実施形態が使用されてもよい。1つの実施形態において、コンピューティングデバイス302は、クライアント装置102を備える。他の実施形態において、コンピューティングデバイス302は、サーバ106を備える。
図3の図示された実施形態において、コンピューティングデバイス302は、1つ以上のプロセッサ(複数可)311と、メモリ312と、ネットワークインターフェース313と、1つ以上の記憶装置314と、電源315と、出力装置(複数可)360と、入力装置(複数可)380とを含む。コンピューティングデバイス302はまた、クライアントによって実行されるオペレーティングシステム318および通信クライアント340を含む。構成要素311、312、313、314、315、360、380、318および340のそれぞれは、任意の有効な方法での構成要素間の通信のために、物理的に、通信可能におよび/または動作可能に相互接続されている。
図示されるように、プロセッサ(複数可)311は、コンピューティングデバイス302内で実行するための機能を実装するおよび/または命令を処理するように構成されている。例えば、プロセッサ(複数可)311は、メモリ312に記憶されている命令または記憶装置314に記憶されている命令を実行する。持続性のコンピュータ読み取り可能な記憶媒体とすることができるメモリ312は、動作中にコンピューティングデバイス302内に情報を記憶するように構成されている。いくつかの実施形態において、メモリ312は、コンピューティング装置302がオフされたときに維持されないための情報用の一時的なメモリ領域を含む。そのような一時的なメモリの実施例は、ランダムアクセスメモリ(RAM)、ダイナミック・ランダムアクセスメモリ(DRAM)およびスタティック・ランダムアクセスメモリ(SRAM)などの揮発性メモリを含む。メモリ312は、プロセッサ(複数可)311による実行のためのプログラム命令を保持する。
記憶装置314はまた、1つ以上の持続性のコンピュータ読み取り可能な記憶媒体を含む。記憶装置314は、一般に、メモリ312よりも大量の情報を記憶するように構成されている。記憶装置314は、さらに、情報の長期保存のために構成されることができる。いくつかの実施例において、記憶装置314は、不揮発性記憶素子を含む。不揮発性記憶素子の非限定的実施例は、磁気ハードディスク、光ディスク、フロッピーディスク、フラッシュメモリまたは電気的書き込み可能メモリ(EPROM)もしくは電気的消去および書き込み可能(EEPROM)メモリの形態を含む。
コンピューティングデバイス302は、図1に示されるサーバ106および/またはデータベース108など、1つ以上のネットワークを介して外部装置と通信するためにネットワークインターフェース313を使用する。ネットワークインターフェース313は、イーサネットカードなどのネットワークインターフェースカード、光トランシーバ、無線周波数トランシーバまたは情報を送受信することができる任意の他の種類の装置とすることができる。ネットワークインターフェースの他の非限定的実施例は、無線ネットワークインターフェース、Bluetooth(登録商標)、携帯コンピューティングデバイスにおける3GおよびWiFi(登録商標)無線ならびにUSB(ユニバーサルシリアルバス)を含む。いくつかの実施形態において、コンピューティングデバイス302は、外部装置、他の携帯電話または他のネットワーク化されたコンピューティングデバイスと無線通信するためにネットワークインターフェース313を使用する。
コンピューティングデバイス302は、1つ以上の入力装置380を含む。入力装置380は、触覚、音声、映像または他の検知フィードバックを介してユーザからの入力を受信するように構成されている。入力装置380の非限定的実施例は、存在検知スクリーン、マウス、キーボード、音声応答システム、カメラ302、映像レコーダ304、マイク306、GPSモジュール308またはユーザからのコマンドを検出するかもしくは環境を検知する任意の他の種類の装置を含む。いくつかの実施例において、存在検知スクリーンは、タッチ検知スクリーンを含む。
1つ以上の出力装置360もまた、コンピューティングデバイス302に含まれる。出力装置360は、触覚、音声および/または映像刺激を使用してユーザに出力を提供するように構成されている。出力装置360は、表示画面(存在検知スクリーンの一部)、サウンドカード、ビデオグラフィックアダプタカードまたは人間や機械が理解可能な適切な形態に信号を変換するための任意の他の種類の装置を含むことができる。出力装置360のさらなる実施例は、スピーカ、陰極線管(CRT)モニタ、液晶ディスプレイ(LCD)またはユーザに理解可能な出力を生成することができる任意の他の種類の装置を含む。いくつかの実施形態において、装置は、入力装置および出力装置の双方として機能してもよい。
コンピューティングデバイス302は、コンピューティングデバイス302に電力を供給するための1つ以上の電源315を含む。電源315の非限定的実施例は、使い捨て電源、再充電可能電源、および/または、ニッケル−カドミウム、リチウムイオンまたは他の適切な材料から開発された電源を含む。
コンピューティングデバイス302は、Android(登録商標)オペレーティングシステムなどのオペレーティングシステム318を含む。オペレーティングシステム318は、コンピューティングデバイス302の構成要素の動作を制御する。例えば、オペレーティングシステム318は、プロセッサ311、メモリ312、ネットワークインターフェース313、記憶装置(複数可)314、入力装置180、出力装置160および電源315と通信クライアント340との相互作用を容易とする。
図3にも同様に図示されるように、コンピューティングデバイス302は、通信クライアント340を含む。通信クライアント340は、通信モジュール345を含む。通信クライアント340および通信モジュール345のそれぞれは、通信装置302によって実行可能なプログラム命令および/またはデータを含む。例えば、1つの実施形態において、通信モジュール345は、通信クライアント340に本開示において記載される操作および動作のうちの1つ以上を実行するようにコンピューティングデバイス302上で実行させる命令を含む。いくつかの実施形態において、通信クライアント340および/または通信モジュール345は、コンピューティングデバイス302上で実行されるオペレーティングシステム318の一部を形成する。
図4は、例示的な実施形態にかかる、1つ以上のデータベーステーブル402、404、406の概念図である。示されるように、テーブル402、404、406の3つのデータベーステーブルが図示されている。テーブル402は、「ユーザ(users)」を表しており、名前(name)と電子メール(email)についての列を含む。テーブル404は、「注文(orders)」を表しており、日付(date)とユーザID(user_id)についての列を含む。テーブル406は、「注文項目(order_items)」を表しており、注文ID(order_id)、項目名(item_name)およびコスト(cost)についての列を含む。テーブル402、404、406は、1つ以上のデータベースに記憶されてもよい。記載されるように、様々な実施形態によれば、データベースは、特に、リレーショナルデータベース、非リレーショナルデータベース、ファイルベースのデータベースおよび/または非ファイルベースのデータベースとすることができる。図4に示されるテーブルは、単に本開示の実施形態を例示するために使用される実施例であり、決して本開示の範囲を限定するものではない。
図5は、例示的な実施形態にかかる、1つ以上のデータベーステーブルを表すノードおよびリーフを含むモデル500を図示する概念図である。示されるように、モデル500は、ノード502、504、506およびリーフ508、510、512、514、516を含む。1つの実施例において、ノード502は、図4におけるテーブル402に対応しており、ノード504は、図4におけるテーブル404に対応しており、ノード506は、図4におけるテーブル406に対応している。ノード502は、ノード504に接続されている。ノード504はまた、ノード506に接続されている。モデル500は、モデルファイルによって表されている。ノード502、504、506は、別個のノードファイルとして表されている。モデルファイルおよびノードファイルの実施例は、付録Aに図示されており、本願明細書においてより詳細に説明される。
ノード502は、リーフ508に関連付けられており、ノード504は、リーフ510、512に関連付けられており、ノード506は、リーフ514、516に関連付けられている。各リーフは、リーフ識別子およびリーフ種類を含む。必要に応じて、リーフはまた、詳細設定を含むことができる。リーフ識別子は、モデル500におけるリーフを固有に識別する文字列である。リーフ種類は、リーフに関連付けられたデータのデータ種類に対応する。1つの実施形態によれば、リーフ種類は、第1の種類(以下、「種類I」とも称する)または第2の種類(以下、「種類II」とも称する)のいずれかとすることができる。
本願明細書において使用される種類Iのリーフは、モデル入力に含まれるとき、リーフについて同値を有するエントリが結果において単一のエントリにグループ化されるようにその結果をグループ化するリーフ種類である。複数の種類Iのリーフがモデル入力に含まれているとき、結果テーブルの各行が種類Iのリーフの各タプルについて同値を有する集計結果に対応するように結果がグループ化される。本願明細書において使用される種類IIのリーフは、モデル入力に含まれるとき、集計関数の結果がクエリに適用されて結果出力において別個の列として返されるリーフ種類である。種類Iおよび種類IIのリーフを有するモデル入力の実施例が例示のために以下に提供される。
図6は、例示的な実施形態にかかる、図5におけるモデル500に関連付けられた1つ以上のデータベースをクエリするためのモデル入力600を図示する概念図である。示されるように、モデル入力600は、図5におけるノード506に対応する開始ノード「C」と、図5におけるリーフ508および512にそれぞれ対応する2つのリーフ「V」および「X」との選択を含む。
図7は、例示的な実施形態にかかる、図6のモデル入力600に関連付けられた1つ以上のデータベースをクエリする結果出力700を図示する概念図である。示されるように、結果出力700は、行1、行2の2つの行と2つの列702、704とを含む。
記載されるように、モデル入力600は、図5におけるリーフ508に対応する種類Iのリーフ「V」を含む。リーフ508について同値を有する各結果が結果出力700における単一行にグループ化されるようにクエリの結果が集計される。示された実施例において、名前「TJ」を有するユーザは、3つの注文を満たした(図4におけるテーブル404を参照)。TJによって満たされた3つの注文のそれぞれは、結果出力700において単一行(すなわち、行2)にグループ化される。リーフ508について集計されたグループは、結果出力700における列702に示されている。
さらに、モデル入力600は、図5におけるリーフ512に対応する種類IIのリーフ「X」を含む。リーフ512は、注文数に関連付けられる。結果出力700において、数値カウントは、行毎に注文数に対応する列704に表示される。示されるように、行はユーザによって(すなわち、リーフ508の固有値によって)編成され、列704は、各ユーザについての注文数を表示する。
1つの実施例として、データベースがSQL(構造化照会言語)クエリによってクエリされることができるリレーショナルデータベースである場合、モデル入力600に基づいて生成されたSQLクエリは、以下とすることができる:

サーバがモデル入力に基づいて上記SQLクエリを生成する方法のより詳細な説明は、以下においてより詳細に説明される。
いくつかの実施形態において、結果出力は、特定のリーフに基づいてソートされることができる。結果出力が「名前」列を含む場合、結果出力は、名前の列によってソートされることができる。1つの実施形態において、アルゴリズムは、デフォルトのソート順を決定するために使用される。例えば、結果出力がデータベースにおける日付または時間を表す列を含む場合、ソートは、降順でそのフィールドによって行われる。日付または時間が結果出力に含まれていないが、1つ以上の数値尺度が結果出力に含まれている場合、ソートは、降順で数値尺度のうちの1つ(例えば、最初の1つ)によって行われる。日付または時間または数値尺度が結果出力に含まれていない場合、ソートは、モデル入力のために選択された最初のフィールドによって行われる。
また、いくつかの実施形態において、特定の種類IIのリーフは、特定の開始ノードからクエリされることができない。そうすることは、不適切な集計の方法によって不正なデータをもたらすことがある。リーフが特定の開始ノードからクエリされることができないという制限は、SQLフラグメントに使用される集計関数に基づいて推測されることができる。例えば、リーフがSUM集計関数を使用する場合、合計は、照会が、開始ノードによってそのノードに合流する異なるノードからのものではなく、リーフが接続されている開始ノードからのものである場合に利用可能とされるのみである。例えば、フライト情報についてのモデルの実施例を使用すると、「空港」ノードが空港の合計を計算した種類IIのリーフを有していた場合、このリーフは、フライトノードが空港ノードに合流/接続されているとしても、モデル入力ノードがフライトノードなどの他のノードであるときではなく、モデル入力を開始するノードが空港ノードであるときにモデル入力について利用可能である。
本願明細書においてより詳細に説明されるように、データベースクエリシステムのユーザは、結果出力における特定の結果を選択することによって結果出力をさらに「掘り」下げることができる。結果を選択することは、他のデータベースクエリを生成する。例えば、ユーザは、ユーザTJによって配置された3つの注文を表す数値「3」に対応する結果706を選択することができる。
図8は、例示的な実施形態にかかる、結果出力700から結果706を選択することによって図5におけるモデル500に関連付けられた1つ以上のデータベースをクエリするためのモデル入力800を図示する概念図である。モデル入力800は、選択された結果706についての列において選択されたリーフ(すなわち、リーフ512)の「詳細設定」に基づいて生成される。ノードCおよびリーフV、W、Yを識別する詳細設定に関連付けられた図5のリーフ512を参照のこと。
示されるように、モデル入力800は、図5におけるノード506に対応する単一ノード「C」、図5におけるリーフ508、510および514にそれぞれ対応する3つのリーフ「V」、「W」および「Y」ならびに「TJ」の値を有するリーフ「V」(すなわち、リーフ508)についてのフィルタの選択を含む。ノード506は、選択されたリーフ(すなわち、リーフ512)の詳細設定に基づいてモデル入力800についての開始ノードとして選択される。リーフ508、510および514は、リーフ508、510および514が選択されたリーフ(すなわち、リーフ512)の「詳細設定」に含まれることから、モデル入力800のリーフとして選択される。また、モデル入力800は、結果706の選択された行に対応する種類Iのリーフのそれぞれの値によってフィルタリングされる。この実施例において、結果706は、結果出力700の行2に関連付けられる。結果出力700の各行は、1つの種類Iのリーフ(すなわち、users.nameに対応するリーフ508)に関連付けられる。結果706が「掘る」ために選択されたときに生成されるモデル入力800は、この実施例では、「TJ」の値を有するリーフ508(すなわち、結果出力の行2における)の値によってフィルタリングされる。
図9は、例示的な実施形態にかかる、以前の結果出力700から結果706を選択した後に図8のモデル入力800に関連付けられた1つ以上のデータベースをクエリする結果出力900を図示する概念図である。示されるように、結果出力900は、行1および行2の2つの行と、3つの列902、904、906とを含む。
モデル入力800は、図5におけるリーフ508および510にそれぞれ対応する2つの種類IのリーフVおよびWを含む。双方のリーフ508および510について同値を有する各結果が結果出力900における単一行にグループ化されるように結果が集計される。示される実施例において、名前「TJ」を有するユーザは、3つの注文を満たした(図4におけるテーブル404を参照)。注文のうちの1つは、1/12/13に完了し、2つの注文は、2/3/13に完了した。示されるように、TJによって完了した3つの注文は、users.name(すなわち、列902)およびorders.date(すなわち、列904)の各固有の組み合わせによって編成される結果出力900における2行にグループ化される。リーフ508について集計されたグループは、結果出力700における列702に示されている。
さらに、モデル入力800は、図5におけるリーフ514に対応する1つの種類IIのリーフ「Y」を含む。リーフ514は、「order_items.id」の数に関連付けられている。結果出力900において、数値カウントは、行毎に注文項目の数に対応して表示される。示される実施例において、1つの注文は、列906に示されるように、1/12/13にTJによって完了し、2つの注文は、2/3/13にTJによって完了した。
1つの実施例として、データベースがSQL(構造化照会言語)クエリによってクエリされることができるリレーショナルデータベースである場合、モデル入力800に基づいて生成されたSQLクエリは、以下とすることができる。

記載されるように、データベースクエリシステムのユーザは、図7における結果出力700を掘り下げるのと同様に、結果出力900における結果を選択することによって結果データをさらに「掘り」下げることができる。結果を選択することは、他のデータベースクエリを生成する。例えば、ユーザは、2/3/13にユーザTJによって配置された2つの注文を表す数値「2」に対応する結果908を選択することができる。
図10は、例示的な実施形態にかかる、結果出力900から結果908を選択することによって図5におけるモデル500に関連付けられた1つ以上のデータベースをクエリするモデル入力1000を図示する概念図である。モデル入力1000は、選択された結果908についての列に対応する選択されたリーフ(すなわち、リーフ514)の「詳細設定」に基づいて生成される。ノードCおよびリーフZを識別する詳細設定に関連付けられた図5のリーフ515を参照のこと。
示されるように、モデル入力1000は、図5におけるノード506に対応する単一ノード「C」、図5におけるリーフ516に対応する1つのリーフ「Z」、「TJ」の値を有するリーフ「V」(すなわち、リーフ508)についてのフィルタおよび「2/3/13」の値を有するリーフ「W」(すなわち、リーフ510)についてのフィルタの選択を含む。ノード506は、選択されたリーフ(すなわち、リーフ514)の詳細設定に基づいてモデル入力1000についての開始ノードとして選択される。リーフ510は、リーフ510が選択されたリーフ(すなわち、リーフ514)の「詳細設定」に含まれていることから、モデル入力1000のリーフとして選択される。また、モデル入力1000は、結果908の選択された行に対応する種類Iのリーフのそれぞれの値によってフィルタリングされる。この実施例において、結果908は、結果出力900の行2に関連付けられている。結果出力900の各行は、users.nameおよびorders.dateにそれぞれ対応する2つの種類Iのリーフ508および510に関連付けられている。結果908が「掘る」ために選択されたときに生成されるモデル入力1000は、結果出力908の行2におけるリーフ508および510の値、すなわち、それぞれ「TJ」および「2/3/13」の値によってフィルタリングされる。
図11は、例示的な実施形態にかかる、後続の結果出力900から結果908を選択した後に図10のモデル入力1000に関連付けられた1つ以上のデータベースをクエリする結果出力1100を図示する概念図である。示されるように、結果出力1100は、行1および行2の2つの行と1つの列1100とを含む。
モデル入力1000は、図5におけるリーフ516に対応する1つの種類IのリーフZを含む。リーフ516について同値を有する結果出力1100における各結果が結果出力1100における単一行にグループ化されるように結果が集計される。結果はまた、モデル入力1000において2つのフィルタを適用することによってフィルタリングされる。示されるように、2/3/13にTJによって完了した2つの注文は、各固有の項目名(すなわち、列1102)によって編成された結果出力1100における2列にグループ化される。
図12〜図16は、他の例示的モデルおよびモデルをクエリして結果を返すための対応するユーザインターフェースの概念図を図示している。
図12は、例示的な実施形態にかかる、1つ以上のデータベーステーブルを表すノード1202、1204、1206、1208およびリーフを含むモデル1200を図示する概念図である。この実施例において、モデル1200は、空港1202、フライト1204、航空機1206および事故1208についてのノードに対応する4つのデータベーステーブルによって編成されたフライトデータを表す。各ノードは、複数のリーフに関連付けられている。リーフのいくつかは、種類Iのリーフであり、リーフのいくつかは、種類IIのリーフである。また、空港ノード1202は、事故ノード1208に接続された航空機ノード1206に接続されたフライトノード1204に接続されている。
図13は、例示的な実施形態にかかる、図12におけるモデル1200に関連付けられた1つ以上のデータベースをクエリするモデル入力を選択するためのユーザインターフェースを図示する概念図である。示されるように、空港ノード1302は、モデル入力についての開始ノードとして選択される。開始ノードの選択は、利用可能な開始ノードのドロップダウンリストを含む、任意の技術的に実行可能な機構を介して行うことができる。空港ノード1302が選択された場合、モデル入力のために選択されることができる複数のリーフが表示される。
図13において、空港_州(AIRPORTS_state)および空港_数(AIRPORTS_count)についてのリーフが選択される。データベースに対するクエリは、クエリボタン1308を選択することによって生成されて実行されることができる。クエリの結果は、結果出力1310に示される。結果出力1310は、モデル入力の選択されたリーフ、すなわち、空港_州(結果出力1310における列1312)および空港_数(結果出力1310における列1314)についてのリーフのそれぞれについての列を含む。1つの実施例において、結果出力1310における結果が空港_州の各固有値について別個の行に結果をグループ化することによって編成されるように、空港_州は種類Iのリーフである。この実施例において、空港_数は、各州における空港数を計算する種類IIのリーフである。
本願明細書に記載されるように、ユーザは、結果を選択することによって結果出力1314をさらに「掘り」下げることができる。1つの実施例において、ユーザは、RI(ロードアイランド)州にある空港数の数値「28」に対応する結果1316を選択することができる。
図14は、例示的な実施形態にかかる、以前の結果出力1310から結果1314を選択した後に図13のモデル入力に関連付けられた1つ以上のデータベースをクエリする結果出力1400を表示するためのユーザインターフェースを図示する概念図である。以前の結果出力1310から選択されたリーフ(すなわち、空港_数)は、特定の詳細設定に関連付けられている。選択されたノードが詳細設定に含まれるノードに対応し、モデル入力のリーフが詳細設定のリーフである場合、モデル入力が生成される。結果は、選択された結果の行における各種類Iのリーフの値によってフィルタリングされる(すなわち、空港_州=RIによってフィルタリングされる)。
図14に示されるように、後続の結果出力1400は、選択された結果の行における各種類Iのリーフの値によってフィルタリングされた、以前に選択された結果の詳細設定のリーフに対応する列を含むように表示される。それゆえに、結果出力1400は、RIにおける28個の空港のそれぞれについての詳細設定を表示する。
図15は、例示的な実施形態にかかる、図12におけるモデル1200に関連付けられた1つ以上のデータベースをクエリするモデル入力を選択するためのさらに他のユーザインターフェースを図示する概念図である。図15において、フライトノード1502は、開始ノードとして選択される。開始ノードの選択は、利用可能な開始ノードのドロップダウンリストを含む、任意の技術的に実行可能な機構を介して行うことができる。フライトノード1502が選択された場合、モデル入力のために選択されることができる複数のリーフが表示される。
出発地_州(ORIGIN_state)、目的地_州(DESTINATION_state)、目的地_都市(DESTINATION_city)およびフライト_数(FLIGHT_count)についてのリーフがモデル入力のために選択される。図15において、フライト_目的地_日付(FLIGHT_depart_date)=01/01/2001、出発地_州=CAおよび目的地_州=CAについてのフィルタがまた、明確化のために結果数を最小化するように追加される。
データベースに対するクエリは、クエリボタンを選択することによって生成されて実行されることができる。クエリの結果は、結果出力1504に示される。結果出力1504は、モデル入力の選択されたリーフ、すなわち、出発地_州、目的地_州、目的地_都市およびフライト_数についてのリーフのそれぞれについての列を含む。1つの実施例において、結果出力1504における結果が、出発地_州、目的地_州および目的地_都市の固有値トリプレットについて別個の行に結果をグループ化することによって編成されるように、出発地_州、目的地_州および目的地_都市のそれぞれは、種類Iのリーフである。この実施例において、空港_数は、結果出力の各行における空港数を計算する種類IIのリーフである。
本願明細書に記載されるように、ユーザは、結果を選択することによって結果出力1504をさらに「掘り」下げることができる。1つの実施例において、ユーザは、出発地州「CA」(カリフォルニア)、目的地州「CA」および目的地都市「サンフランシスコ(SAN FRANCISCO)」を有するフライト数についての数値「88」に対応する結果1506を選択することができる。
図16は、例示的な実施形態にかかる、以前の結果出力1504から結果1506を選択した後に図15のモデル入力に関連付けられた1つ以上のデータベースをクエリする結果出力1600を表示するためのユーザインターフェースを図示する概念図である。以前の結果出力1504から選択されたリーフ(すなわち、フライト_数)は、特定の詳細設定に関連付けられている。選択されたノードが詳細設定に含まれるノードに対応し、モデル入力のリーフが詳細設定のリーフである場合、モデル入力が生成される。結果は、選択された結果1506の行における各種類Iのリーフの値によってフィルタリングされる(すなわち、出発地州「CA」、目的地州「CA」および目的地都市「サンフランシスコ」によってフィルタリングされる)。
図16に示されるように、後続の結果出力1600は、選択された結果1506の行における各種類Iのリーフの値によってフィルタリングされた、以前に選択された結果1506の詳細設定のリーフに対応する列を含むように表示される。それゆえに、結果出力1600は、出発地州「CA」および目的地州「CA」を有していた「サンフランシスコ」の目的地都市を有していた88個のフライトのそれぞれについて詳細設定を表示する。
図17は、例示的な実施形態にかかる、データベースをクエリするフロー図である。当業者は、方法1700が図1〜図3のシステムに関連して記載されていても、方法段階を実行するように構成された任意のシステムは本開示の実施形態の範囲内であることを理解するであろう。
示されるように、方法1700は、サーバが開始ノードの選択を受信するステップ1702において開始する。1つの実施形態において、サーバは、図1におけるサーバ106を備える。選択は、クライアント装置102などのクライアント装置に表示されるユーザインターフェースを介して行われることができ、データネットワーク104を介してサーバに対して通信することができる。ステップ1704において、サーバは、1つ以上のリーフの選択を受信する。開始ノードおよび1つ以上のリーフは、データベーステーブルに対応する1つ以上の相互接続されたノードについてモデルに関連付けられた「モデル入力」としてサーバによって受信されることができる。
ステップ1706において、サーバは、開始ノードおよび1つ以上のリーフに基づいてデータベースクエリを生成する。データベースクエリを生成することは、図18においてより詳細に説明される。
ステップ1708において、データベースは、サーバに結果を返し、サーバは、クライアント装置に結果出力を返す。結果出力の各列は、1つ以上の選択されたリーフのうちの1つに対応する。また、種類Iのリーフである各リーフについて、種類Iのリーフの各タプルについての固有値によって結果が集計される。例えば、2つの種類Iのリーフがある場合、2つの種類Iのリーフについての固有値対に応じて結果が集計される。種類Iのリーフの各集計タプルは、結果出力の別個の行として返される。種類IIのリーフである各リーフについて、集計計算が行われ、結果出力の各行について返される。
ステップ1710において、サーバは、結果出力からの結果の選択を受信し、また、本願明細書においては返される結果を「掘る」と称する。1つの実施形態において、選択は、種類IIの結果からなる。
ステップ1712において、サーバは、選択された結果に関連付けられた詳細設定に基づいてデータベースクエリを生成する。記載されるように、各種類IIのリーフは、開始ノードおよび1つ以上のリーフを含む詳細設定に関連付けられることができる。データベースクエリは、詳細設定の開始ノードおよび詳細設定の1つ以上のリーフを使用して生成される。データベースクエリはまた、選択された結果の行における各種類Iのリーフの値によってフィルタリングされる。
ステップ1714において、サーバは、後続の結果出力を返す。結果出力の各列は、詳細設定のリーフの1つに対応する。また、各種類Iのリーフについて、種類Iのリーフの各タプルについての固有値によって結果が集計される。種類Iのリーフの各集計タプルは、後続の結果出力の別個の行として返される。種類IIのリーフである各リーフについて、集計計算が行われ、後続の結果出力の各行について返される。
このように、ユーザは、さらに洗練されたデータを受信するように返された結果を「掘り」下げることができる。
モデル作成およびモデルファイル
記載されるように、データベースクエリの生成は、対応するリーフを有する相互接続されたノードのモデルに基づいている。モデルは、モデル内のノード間の関係を識別するモデルファイルによって定義することができる。モデルファイルの実施例は、明細書の付録のページA1に示されている。
モデルは、1つ以上のノードを含むことができる。フライトデータを表すモデルの実施例において、モデルは、空港、航空機、事故およびフライトのノードを含むことができる。各ノードは、別個のノードファイルとして表される。空港、航空機、事故およびフライトについてのノードファイルの実施例は、付録(すなわち、事故ノードファイルについてはページA2〜A5、航空機ノードファイルについてはページA6〜A8、空港ノードファイルについてはページA9〜A10およびフライトノードファイルについてはページのA11〜A16)に示されている。1つの実施例の実装において、モデルファイルおよびノードファイルは、YAML(さらに他のマークアップ言語)構文を使用してファイルとして実装される。他の実施形態において、モデルは、データ記憶に適した任意のフォーマットで記憶されることができ、例えば、モデルは、データベースに記憶されることができる。
1つの実装例において、モデル内のノードは、用語「view」および「base_view」を使用してモデル構文において参照される。各view(すなわち、ノード)は、リーフ、結合および集合のセットを含む。1つの実装例において、モデル内のリーフは、用語「field」を使用してモデル構文において参照される。リーフは、種類Iまたは種類IIからなることができる。種類Iのリーフはまた、「dimesions」と称され、データベーステーブルの属性とすることができる(すなわち、データベーステーブル内にいくつかの直接の物理的存在を有する)またはデータベーステーブル内の値から計算されることができるグループ化可能なフィールドに対応している。種類IIのリーフはまた、「measures」と称され、例えば、COUNT(・・・)、SUM(・・・)、AVG(・・・)、MIN(・・・)またはMAX(・・・)などの集計関数を使用して実装されたリーフに対応している。
結合は、1つのノードと他のノードとの間の接続を定義する。集合は、特定のノードについてのリーフのリストを定義する。実施例の集合は、以下を含む。
・ignore−無視するフィールドのセット(任意の文脈において使用しない)、
・measures−測定値として使用するフィールドのセット、
・base_only−ベースビューの文脈に含まれるフィールドのセット、および、
・admin−ユーザが管理者権限を有するときに含むフィールド
本願明細書においてより詳細に説明されるように、ノードおよびモデルファイルは、モデル入力からデータベースクエリを生成するために使用されるクエリフラグメントを含むことができる。1つの実装例において、データベースクエリは、SQL(構造化照会言語)クエリであり、クエリフラグメントは、SQLフラグメントである。
いくつかの実施形態において、リーフAがモデルにおける他のリーフBに到達可能な場合、リーフAは、それ自体のSQLフラグメントの一部としてリーフBからのSQLフラグメントを使用することができる。図19は、例示的な実施形態にかかる、1つのノード1902および複数のリーフ1904、1906、1908、1910を含むモデルを図示する概念図である。この実施例において、構文「${leaf identifier}」は、他のリーフ、すなわちリーフXのSQLフラグメント1912における2つのリーフ(すなわち、WおよびY)を指すために使用される。1つの実施形態において、モデル入力にリーフXを含むことは、生成される以下のSQLクエリをもたらすであろう。

同様に、モデル入力においてリーフWおよびXの双方を選択することは、生成される以下のSQLクエリをもたらすであろう。

これは、任意のレベルのフィールドの参照に拡張されることができる。例えば、フィールドCはまた、フィールドAからのSQLフラグメントを含むフィールドBからのSQLフラグメントを含むことができる。このようなSQLフラグメントの参照はまた、種類Iおよび種類IIのリーフ間で、同様に種類IIから種類IIへと生じることがある。
さらに、いくつかの実施形態において、いくつかのリーフは、種類Iから種類IIに自動的に昇格することができる。リーフが他のリーフからのフラグメントを参照することができることを把握することは、リーフを構築するのに使用される他のリーフに基づいてリーフの種類に関する何かを推測することができることを意味する。1つの実装例において、任意のリーフAが種類IIである場合、リーフAを参照する任意のリーフBは、同様に種類IIのものであると推測することができる。記載されるように、種類IIであるリーフは集計関数を使用し、したがって、結果出力における指定行についての値のグループの集計を含む。そのため、種類Iのリーフがデータストアにおける単一行からのデータをもたらすことから、種類Iのリーフにおいて種類IIのリーフからのSQLフラグメントを使用することはできない。これは、リーフBが種類IIのリーフAを参照することから、そのリーフBもまた、種類IIのリーフであることを推測することができることを意味する。
モデルおよび関連するノードを使用する1つの固有な態様は、本願明細書において説明されるように、データがモデル入力のために異なるノードからリーフを選択することによってクエリされることができるということである。異なるノードは、以下の構文および実施例を使用して相互接続されることができる。
ノードは、「結合(join)」ステートメントによって他のノードに接続されることができる。付録AのページA12の53行目は1つの実施例である。結合ステートメントは、「結合」構文を使用することによって1つのノードから他のノードへの一方向接続を記載する。ここで、「結合」は、(DESTINATION city)などの前方に結合識別子を有するフィールド名を表示するために使用される結合のための識別子を記載し、「from」は、ノード識別子であり、「sql_on」は、ノードに結合するために必要なsqlフラグメントである。付録の実施例は、現在のノード、この場合には「空港」を意味するテンプレートビュー−「$$」に使用する他の戦略を使用するためにより複雑である。この構文は、他の複数回に1つのノードを結合するのを可能とするが、sql_onフラグメントを記載する必要はない。必要に応じて、フィールドセットは、結合されたノードからアクセス可能でなければならないフィールドを判定するために使用することができる。
さらに、記載されるように、各ノードは、1つ以上のリーフに関連付けられることができる。リーフは、記載されるように、種類Iまたは種類IIのものとすることができる。また、「詳細設定」は、後続のクエリが特定の種類IIの結果を選択する(すなわち、「掘る」)ことによって生成されるように、種類IIのリーフに関連付けられることができる。
1つの実施形態において、全てのリーフは、デフォルトでは種類Iであり、それらが種類IIの副種類であるように指定されたとき(例えば、付録AのページA9の26行目におけるcount_distinct typeなど)、それらが「measures」セットに配置されたとき(付録Aには示されていない)、または、SQLフラグメントが他の種類IIのリーフを参照したとき(例えば、ページA4の129行目)に種類IIのリーフになるのみである。詳細設定は、リーフの詳細属性を使用して定義される。属性は、単にフィールドのアレイとすることができる(付録Aには示されていない)。実施例は、「詳細:[フィールド1、フィールド2、フィールド3]」であり、または、ノードにおいて他の場所に定義された他のセットへの参照とすることができる(例えば、ページA9の29行目は、その詳細設定としてページA9の8行目を参照している)。
モデル入力からのクエリ生成
図17において上述したように、すなわち、ステップ1706および1712において、データベースクエリは、開始ノード、1つ以上のリーフおよび必要に応じて1つ以上のフィルタの選択に基づいて生成されることができる。実施例としてSQLを使用すると、データベースクエリは、図18に示される以下のステップを実行することによって生成されることができる。
1つの実装形態において、ノード接続は、SQLにおけるJOINステートメントをもたらす。モデル入力において、モデルの開始ノード以外のノードに接続されたリーフを含むことは、追加の結合が生成されたSQLステートメントにおいて形成されることを意味する。これは、特定のノードファイルにおける各ノード接続についてSQLフラグメントを追加することによって達成される。実施例は、付録AのページA12の53行目に示されている。ここで、sql_on属性において記載されたsqlフラグメントを使用してフライトノードに空港ノードを結合しており、$$は、現在のノードを意味している。
図18は、例示的な実施形態にかかる、モデル入力からデータベースクエリを生成する方法ステップのフロー図である。この例示的な実施形態において、生成されたクエリは、SQLクエリである。当業者は、方法1800が図1〜図3のシステムに関連して記載されていても、方法段階を実行するように構成された任意のシステムは本開示の実施形態の範囲内であることを理解するであろう。
示されるように、方法1800は、サーバがモデル入力を受信するステップ1802において開始する。1つの実施形態において、サーバは、図1におけるサーバ106を備える。モデル入力は、開始ノード、1つ以上のリーフおよび必要に応じて1つ以上のフィルタを含む。開始ノード、1つ以上のリーフおよび必要に応じて1つ以上のフィルタの選択は、クライアント装置102などのクライアント装置に表示されるユーザインターフェースを介して行われることができ、データネットワーク104を介してサーバに対して通信することができる。
ステップ1804において、サーバは、SQLフラグメントを記憶するために5つのデータセットを生成する。データセットは、以下の5つのSQLコマンドを対応させることができる:SELECT、JOIN、WHERE、GROUP BYおよびHAVING。
ステップ1806において、サーバは、モデル入力1806からリーフを選択する。ステップ1808において、サーバは、リーフデータに基づいて1つ以上のデータセットにSQLフラグメントを追加する。上述したように、リーフデータは、リーフ識別子、リーフが種類Iまたは種類IIのリーフであるかどうかの指示、リーフについての詳細設定、および/または、リーフがアクセス可能であるノードの指示などのリーフに関する様々な情報を含むことができる。
1つの例示的な実装例において、リーフがモデル入力の開始ノードから到達可能でない場合、リーフは無視され、方法1800はステップ1810に進む。リーフが開始ノードから到達可能である場合、サーバは、SQLフラグメント「{leaf SQL fragment} AS {leaf identifier}」をSELECTデータセットに追加する。リーフが種類Iのリーフである場合、サーバはまた、「{leaf identifier}」をGROUP BYデータセットに追加する。リーフが開始ノードに接続されていないが、代わりに他のノードに接続されている場合、サーバは、以下の構文によって問題のノード接続に関連付けられたSQLフラグメントをJOINデータセットに追加する:JOINデータセットに対して「LEFT JOIN {node identifier} ON {node connection SQL fragment}」。リーフがrequired_nodes属性を有する場合、各required_nodeノードについて、サーバは、以下の構文によってノードに関連付けられたSQLフラグメントを追加する:JOINデータセットに対して「LEFT JOIN {node identifier} ON {node connection SQL fragment}」。いくつかの実施形態において、ノードの依存性は、リーフが「required_nodes」と称される新たな属性(すなわち、ノードのセット)を含むことができることを意味する。リーフ属性として含まれる場合、この属性は、正しく機能するためにSQLフラグメントが必要なノードの結合を生成されたSQLが含むべきであることを指定する。
ステップ1810において、サーバは、任意のフィルタがモデル入力に含まれているかどうかを判定する。フィルタが適用されない場合、方法1800はステップ1818に進む。フィルタが適用される場合、方法1800はステップ1812に進む。
ステップ1812において、サーバは、リーフが種類Iまたは種類IIであるかどうかを判定する。リーフが種類Iである場合、方法1800はステップ1814に進む。リーフが種類IIである場合、方法1800はステップ1816に進む。
ステップ1814において、種類Iのリーフについて、サーバは、SQLフラグメント「{leaf identifier}={filter value}」をWHEREデータセットに追加することにより、リーフ識別子をWHEREデータセットに追加する。ステップ1816において、種類IIのリーフについて、サーバは、SQLフラグメント「{leaf identifier}={filter value}」をHAVINGデータセットに追加することにより、リーフ識別子をHAVINGデータセットに追加する。
ステップ1818において、サーバは、モデル入力において処理するためのこれ以上のリーフがあるかどうかを判定する。そうでない場合、方法1800はステップ1820に進む。処理するためのこれ以上のリーフがある場合、上述したように、方法1800はステップ1806に戻る。
ステップ1820において、サーバは、5つのデータセットからのフラグメントを使用してSQLクエリを構築する。1つの実施形態において、サーバは、ブランクステートメントから始めて以下のステップを実行することによってSQLクエリを構築する:
・カンマ区切りで、「SELECT」+SELECTデータセットにおける各値を追加し、
・「FROM」+{node identifier}を追加し、
・JOINデータセットにおける各値を追加し、
・カンマ区切りで、「WHERE」+WHEREデータセットにおける各値を追加し、
・カンマ区切りで、「GROUP BY」+GROUP BYデータセットにおける各値を追加し、
・カンマ区切りで、「HAVING」+HAVINGデータセットにおける各値を追加し、
・セミコロンを追加する。
そして、サーバは、1つ以上のデータベースに対して生成されたSQLクエリを実行する。上述したように、結果は結果出力として返される。
クエリキリング
データベースクエリによって大抵の場合に遭遇する1つの問題は、複雑なクエリが結果を返すために非常に長時間かかる可能性があるということである。ユーザは、時々長い待ち時間に不満を抱くことがあり、クライアント装置におけるクエリ入力ウィンドウを閉じることがある。そして、新たなクエリの入力がユーザによって入力され、第2のデータベースクエリがデータベースに送信されることがある。
しかしながら、いくつかの場合において、ユーザに知られずに、最初のクエリは、データベースに対してなおも実行することができる。これは、2番目のクエリが単純であっても、2番目のクエリが結果を返すために時間がかかるのを生じさせることがある。1つ以上の追加のクエリは、1人以上のユーザから送信されることができ、さらにデータベースを詰まらせる。
本開示の実施形態は、特定のクエリを自動的にキャンセルする技術または「クエリキリング」を提供する。図20は、例示的な実施形態にかかる、クエリをキャンセルする技術を図示する概念図である。示されるように、システム2000は、クライアント2002と、サーバ2004と、データベース2006とを含む。クライアント2002は、サーバ2004から情報を取得して表示するためのソフトウェアアプリケーションである。サーバは、データベースクエリを構築するように構成されたソフトウェアアプリケーションも実行する。データベース2006は、クエリが実行される場所である。
1つの実施形態において、モデルクエリを実行するための要求は、クライアント2002によってネットワーク接続を介してサーバ2004に対して送信される。いくつかの実装例において、ユーザは、ブラウザアプリケーションにおいて、モデル入力としてノードおよび1つ以上のリーフを選択し、実行対象のクエリを選択し、結果出力のためにブラウザアプリケーションのウェブページがデータベース2006から返されるのを待機する。記載されるように、いくつかのデータベースクエリは、データの性質またはクエリの構成のために、実行するために過剰な処理能力および/またはメモリを必要とする。大抵の場合、これらの同じクエリは、他の同時クエリの性能低下をもたらす。
1つの実装例において、クエリをキャンセルする方法は、図20に示されるステップを含む。ステップS1において、サーバ2004は、ネットワークを介してモデルクエリについてのクライアント要求を受信する。この接続は、クライアント2002が結果を待機するのにともない開いた状態に保持される。サーバ2004は、データベースクエリを生成し、データベース2006上でクエリを実行し(ステップS2a)、それに応答してクエリに対応するクエリ識別子を取得する(ステップS2b)。
クエリがデータベース2006上で実行されている間、サーバ2004は、ある間隔で、クライアント2002に対するネットワーク接続の存在を確認する(ステップS3)。1つの実装例において、非ブロッキングソケットを使用することができる。例えば、サーバ2004は、クライアント−サーバ接続の非ブロッキング読み取りを行う。非ブロッキング読み取りが失敗した場合、これは、クライアント2002がもはやデータベース2006からの応答を聞いていないことを示す。クライアント接続の確認が失敗した場合、これは、クライアント2002がもはやモデルクエリの応答を待機していないことを示している(ステップS4)。1つの実施例において、ユーザは、ブラウザアプリケーションにおけるブラウザページを閉じることができる。サーバ2004は、データベース2006に対して新たなコマンドを送信し、サーバ2006にステップS2において返されるクエリ識別子を使用してクエリを停止させる。あるいは、クエリが完了してクライアント接続がなおも利用可能である場合、サーバ2004は、通常の過程でクライアント2002に結果を返す。
したがって、本開示の実施形態は、ネットワーク接続とクエリ実行との間において1対1のマッピングを作成する。いくつかの実施形態は、クエリがキャンセルされるべきかどうかを判定するためにこの接続性をあてにしている。閉じたソケットは、クエリが実行を継続すべきでないことを意味し、クエリのキャンセルをもたらす。
様々な実施形態によれば、ソケットは、(クライアント2002など)の1つのコンピューティングデバイスが(サーバ2004などの)他のコンピューティングデバイスと通信するのを可能とするアプリケーションプログラミングインターフェース(API)を有する計算ライブラリを含む。
様々な実施形態によれば、通常のソケットは、ソケット接続が開いており且つ第2のコンピューティングデバイス上で第1のコンピューティングデバイスによって実行されているソケットから読み取ろうとする場合、第1のコンピューティングデバイスのオペレーティングシステムがいくつかのデータが第2のコンピューティングデバイスから返されるまで待機することを意味する「ブロッキング」ソケットと考えられる。ソケットの読み取りを実行した後に実行されるべきである命令がある場合、いくつかのデータがソケットの読み取りの結果として受信されない限り、すなわち、第1のコンピューティングデバイスのオペレーティングシステムが第2のコンピューティングデバイスからのデータを待機している「スタック」である限り、それらの命令は到達しないことから、これは「ブロッキング」と称される。
一方で、非ブロッキングソケットは、第1のコンピューティングデバイスのオペレーティングシステムが単に無期限に待機する代わりにエラーを発生させるのを可能とする。非ブロッキングソケットのいくつかの実装例において、特定のエラータイプは、ソケットがそれに利用可能なデータを有しないことを意味する。いくつかの実施形態において、非ブロッキングソケットを設定することは、ファイル記述子を設定するためにファイルまたはIO(入力/出力)動作を使用することを含む。例えば、ファイル記述子について様々な動作を実行するために使用可能な関数fnctl()は、ファイル記述子を「O_NONBLOCK」に設定することができる。
ソケットが2つのコンピューティングデバイス間で接続され、ソケットが非ブロッキングとされた後、本開示の実施形態は、コマンドread(1)を使用してソケットから1バイト読み取ることを試みる。read()関数は、IEEE標準1003.1に記載されている。
1つの実施形態において、接続されたソケットから読み取られるべきデータがない場合、特定のエラーコードを使用することができる。例えば、発生可能なエラーメッセージは、「EAGAIN」または「EWOULDBLOCK」を含む。いくつかの実施形態において、ウェブ要求について、ブラウザが最初の要求を完了した後に、サーバ側においてソケットから読み取られるべきこれ以上のデータがない、すなわち、ウェブブラウザは、全体の要求を送信し、これ以上のデータを送信しないが、代わりに、サーバからの応答を取得するために待機する。
図21は、1つの実施形態にかかる、クエリをキャンセルする方法ステップのフロー図である。示されるように、方法2100は、ウェブサーバ2004などのサーバコンピューティングデバイスが、要求が他のコンピューティングデバイス上でウェブブラウザから受信されたソケットを受け入れるステップ2102において開始する。要求は、サーバコンピューティングデバイスにとってデータベースに対してクエリを実行するためのものとすることができる。1つの実施形態において、ソケットを受け入れることは、ソケットへの接続を受け入れるようにソケットへの参照を取得して「accept()」などの関数を呼び出すことを含む。ステップ2104において、サーバコンピューティングデバイスは、ウェブブラウザによって送信された要求に含まれる全てのデータを読み取る。
ステップ2106において、コンピューティングデバイスは、要求がデータベースに対して実行されるべきクエリ(SQLクエリまたは他の種類のクエリなど)を必要とすることを判定し、データベースに対してクエリを実行し、ソケットに対してクエリのクエリ識別子をマッピングする。ステップ2108において、サーバコンピューティングデバイスは、SQL要求ソケットのリストにソケットを追加する。リストは、サーバコンピューティングデバイスのメモリに記憶され、サーバコンピューティングデバイスによって維持される。
ステップ2109において、サーバコンピューティングデバイスは、データベースに対するクエリが完了したかどうかを判定する。サーバコンピューティングデバイスがクエリが完了したと判定した場合、方法2100は、以下に説明されるようにステップ2118に進む。サーバコンピューティングデバイスが、クエリがまだ完了していないと判定した場合、本方法はステップ2110に進む。
ステップ2110において、サーバコンピューティングデバイスは、ソケット上で(read(1)など)の読み取り要求を呼び出す。いくつかの実施形態において、サーバコンピューティングデバイスは、SQL要求ソケットのリストに含まれる各ソケットの読み取り要求を呼び出すように構成されている。ステップ2112において、サーバコンピューティングデバイスは、読み取り要求からの応答がソケットの他方側に他のコンピューティングデバイスが接続されていることを示すエラーコードを含むかどうかまたは読み取り要求からの応答が任意の他のエラーコードであるかどうかを判定する。ソケットの他方側に他のコンピューティングデバイスが接続されていることを示すエラーコードの実施例は、「EAGAIN」または「EWOULDBLOCK」である。
エラーコードがソケットの他方側に他のコンピューティングデバイスが接続されていることを示す場合、本方法は、ステップ2114に進み、サーバコンピューティングデバイスは、所定時間待機する。例えば、サーバコンピューティングデバイスは、再度ソケットの接続を確認しようとする前に、5秒間待機することができる。そして、方法2100は、上述したように、ステップ2109に戻る。そのため、読み取り要求は、定期的な間隔で、ソケット上で実行される。間隔は、可変および/または設定可能とすることができる。
ステップ2112において、読み取り要求からの応答が任意の他のエラーコードであった場合(ソケットの他方端にコンピューティングデバイスが接続されていないことを意味する)、方法2100は、ステップ2116に進み、サーバコンピューティングデバイスは、ソケットの反対側においてコンピューティングデバイスが切断されたと判定し、クエリが開始されたときに生成されたクエリ識別子を使用してクエリを停止させるためにデータベースに対してデータベース命令を実行する。ここで、データベースは、そのような停止クエリ命令に対するクエリ応答を停止するように構成されている。いくつかの実施形態において、データ命令は、データベースに対する第2のデータベースのクエリを含む。
ステップ2118において、サーバコンピューティングデバイスは、SQL要求ソケットのリストからソケットを削除する。そして、方法2100は終了する。
用語「a」および「an」および「the」および「少なくとも1つ(at least one)」ならびに開示された主題を説明する文脈における(特に、以下の特許請求の範囲の文脈における)同様の参照の使用は、本願明細書において他に示されるかまたは文脈において明らかに矛盾しない限り、単数および複数の双方を包含すると解釈されるべきである。1つ以上の項目(例えば、「AおよびBのうちの少なくとも1つ」)のリストが続く用語「少なくとも1つ(at least one)」の使用は、本願明細書において他に示されるかまたは文脈において明らかに矛盾しない限り、列挙された項目から選択される1つの項目(AまたはB)または列挙された項目のうちの2つ以上の任意の組み合わせ(AおよびB)を意味すると解釈されるべきである。用語「備える(comprising)」、「有する(having)」、「含む(including)」および「含有する(containing)」は、特に断りのない限り、制約がない用語として解釈されるべきである(すなわち、「含むがこれらに限定されないこと」を意味する)。本願明細書における値の範囲の列挙は、本願明細書において他に示されない限り、単に範囲内に含まれるそれぞれ別個の値に個々に言及する省略方法として役立つように意図され、それぞれ別個の値は、本願明細書において個々に列挙されているかのように明細書に組み込まれる。本願明細書に記載された全ての方法は、本願明細書において他に示されるかまたは文脈によって明らかに矛盾しない限り、任意の適切な順序で行うことができる。本願明細書において提供される任意のおよび全ての実施例または例示的な文言(例えば、「など(such as)」)の使用は、単に開示された主題をより良好に説明するように意図されるにすぎず、特に断らない限り、本発明の範囲を限定するものではない。明細書における文言は、本発明の実施に不可欠な任意の特許請求していない要素を示すものと解釈されるべきではない。
本願明細書に開示された実施形態の変形例は、上述した詳細な説明を読んだ当業者にとっては明らかとなるであろう。本発明者らは、当業者が適宜そのような変形例を使用することを予測しており、本発明者らは、本発明が本願明細書において具体的に記載された以外の方法で実施されることを意図している。したがって、本発明は、適用法によって許容されるように、添付の特許請求の範囲に記載された主題の全ての変更および均等物を含む。さらに、その全ての可能な変形例における上述した要素の任意の組み合わせは、本願明細書において他に示されるかまたは文脈によって明らかに矛盾しない限り、本発明によって包含される。
上述した本発明の主題の実施形態を含む態様は、単独でまたは1つ以上の他の態様もしくは実施形態と組み合わせて有益であり得る。上述した詳細な説明を限定することなく、1〜55の番号が付された本開示の特定の非限定的態様が以下に提供される。本開示を読んだ当業者にとっては明らかであろうように、個別に番号が付された態様のそれぞれは、使用されることができるかまたは前後の個別に番号が付された態様のいずれかと組み合わせることができる。これは、態様の全てのそのような組み合わせについての裏付けを提供することを意図しており、明示的に以下に提供される態様の組み合わせに限定されるものではない。
1.1つ以上のデータベースをクエリする方法において、
コンピューティングデバイスにおいて、1つ以上のデータベーステーブルに対応するモデルに含まれている開始ノードの選択を受信することと、
前記コンピューティングデバイスにおいて、各リーフが前記モデル内のノードに接続されている1つ以上のリーフの第1のセットの選択を受信することと、
前記開始ノードおよび前記リーフの第1のセットに基づいて、第1のデータベースクエリを生成することと、
前記1つ以上のデータベース上で実行される前記第1のデータベースクエリに基づいて、第1の結果出力を提供することと、
前記第1の結果出力における結果の選択を受信することと、
前記第1の結果出力における結果の選択に基づいて、前記結果に関連付けられた詳細設定に関連付けられている第2のデータベースクエリを生成することと、
前記1つ以上のデータベース上で実行される前記第2のデータベースクエリに基づいて、第2の結果出力を提供することとを備える、方法。
2.前記1つ以上のデータベースがリレーショナルデータベースであり、前記第1および第2のデータベースクエリがSQL(構造化照会言語)クエリである、1に記載の方法。
3.前記リーフの第1のセットにおける各リーフが、第1のリーフ種類または第2のリーフ種類のいずれかに関連付けられている、1または2に記載の方法。
4.前記第1の結果出力が、前記第1のセットにおける各リーフについての列と、前記第1のセットにおける前記第1のリーフ種類に関連付けられたリーフについての値の各固有のタプルについての別個の行とを含む、3に記載の方法。
5.前記第2のリーフ種類に関連付けられたリーフに対応する前記第1の結果出力における各列について、集計値が行のデータに基づいて列の各行に設けられる、4に記載の方法。
6.前記集計値が、前記行における1つ以上の値の合計、カウント、平均、最小または最大を計算することに基づいている、5に記載の方法。
7.前記モデルが複数の相互接続されたノードを含み、各ノードが1つ以上のリーフに関連付けられている、1〜6のうちのいずれか一項に記載の方法。
8.前記第1のセットにおける各リーフが、前記開始ノードまたは前記複数の相互接続されたノードにおける他のノードに関連付けられている、7に記載の方法。
9.前記第1のデータベースクエリを生成することが、
データベースクエリフラグメントを記憶するように5つのデータセットを生成することと、
前記第1のセットにおける各リーフについて、前記リーフの属性に基づいて前記5つのデータセットのうちの1つ以上に対して1つ以上のデータベースクエリフラグメントを追加することと、
前記5つのデータセットから前記データベースクエリフラグメントをともに追加することによって前記第1のデータベースクエリを構築することとを備える、1〜8のうちのいずれか一項に記載の方法。
10.前記第1のデータベースクエリがSQL(構造化照会言語)クエリを含み、前記5つのデータセットが、SELECT、JOIN、WHERE、GROUP BYおよびHAVINGについてのSQLコマンドに対応する、1〜9のうちのいずれか一項に記載の方法。
11.前記結果に関連付けられた前記詳細設定が、第2の開始ノードおよびリーフの第2のセットに関連付けられており、前記第2のデータベースクエリを生成することが、前記第2の開始ノードおよび前記リーフの第2のセットに基づいて前記第2のデータベースクエリを生成することを備え、前記第2のデータベースクエリが、前記選択された結果に対応する前記第1の結果出力における行に含まれる1つ以上の値によってフィルタリングされる、1〜10のうちのいずれか一項に記載の方法。
12.前記1つ以上のデータベースが、リレーショナルデータベース、非リレーショナルデータベース、ファイルベースのデータベースおよび/または非ファイルベースのデータベースを含む、1〜11のうちのいずれか一項に記載の方法。
13.前記第1の結果出力が、前記第1のセットにおけるリーフのうちの1つにしたがってソートされる、1〜12のうちのいずれか一項に記載の方法。
14.データベースクエリを生成するシステムにおいて、
1つ以上のデータベースと、
クライアント装置と、
サーバとを備え、前記サーバが、
データネットワークを介して前記クライアント装置からモデル入力を受信し、前記モデル入力が前記1つ以上のデータベースに記憶された1つ以上のデータベーステーブルに対応するモデルに含まれるノードおよびリーフの第1のセットを含み、
データベースクエリフラグメントを記憶するように複数のデータセットを生成し、
前記第1のセットにおける各リーフについて、前記リーフの属性に基づいて前記複数のデータセットのうちの1つ以上に対して1つ以上のデータベースクエリフラグメントを追加し、
前記複数のデータセットから前記データベースクエリフラグメントをともに追加することによってデータベースクエリを構築し、
前記1つ以上のデータベースに対して前記データベースクエリを実行し、
前記クライアント装置に対して前記データベースクエリの結果を返すように構成されている、システム。
15.前記データベースクエリがSQL(構造化照会言語)クエリを含み、前記複数のデータセットが、SELECT、JOIN、WHERE、GROUP BYおよびHAVINGについてのSQLコマンドに対応する、14に記載のシステム。
16.前記リーフがリーフSQLフラグメントおよびリーフ識別子に関連付けられており、前記サーバが、前記リーフが前記ノードから到達可能である場合、構文「{leaf SQL fragment} AS {leaf identifier}」を使用して前記SELECTデータセットに対してSQLフラグメントを追加するように構成されている、15に記載のシステム。
17.前記リーフがリーフ識別子に関連付けられており、前記サーバが、前記リーフが第1のリーフ種類に関連付けられている場合、構文「{leaf identifier}」を使用して前記GROUP BYデータセットに対してSQLフラグメントを追加するように構成されている、15に記載のシステム。
18.前記リーフがリーフ識別子およびノード接続SQLフラグメントに関連付けられており、前記サーバが、前記リーフが前記ノードに接続されていないが、代わりに前記モデルにおける他のノードに接続されている場合、構文「LEFT JOIN {node identifier} ON {node connection SQL fragment}」を使用して前記JOINデータセットに対してSQLフラグメントを追加するように構成されており、前記ノード接続SQLフラグメントが、前記モデルにおける2つのノードの結合に関連付けられている、15に記載のシステム。
19.データベースをクエリする方法において、
サーバ装置において、ネットワーク接続を介してクライアント装置からクエリ入力を受信することと、
前記クエリ入力に基づいてデータベースクエリを生成することと、
前記データベースクエリに1つ以上のデータベースに対する実行を開始させることと、
ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定することと、
前記サーバが、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを判定した場合、前記データベースクエリにキャンセルさせることとを備える、方法。
20.前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定することが、前記ネットワーク接続において非ブロッキング読み取りを実行することを備える、19に記載の方法。
21.データベースをクエリする方法において、
サーバコンピューティングデバイスにより、ネットワーク接続を介してクライアント装置からクエリ入力を受信することと、
前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間において非ブロッキングソケットを確立することと、
前記クエリ入力に基づいてデータベースクエリを生成することと、
前記データベースクエリに1つ以上のデータベースに対する実行を開始させることと、
前記サーバコンピューティングデバイスにより、非ブロッキングソケットの読み取り要求を実行することと、
前記非ブロッキングソケットの読み取り要求に応答してコードを受信することと、
前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定することと、
前記サーバが、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを判定した場合、前記データベースクエリにキャンセルさせることとを備える、方法。
22.1つ以上のデータベースがリレーショナルデータベースであり、前記クエリがSQL(構造化照会言語)クエリである、21に記載の方法。
23.前記データベースクエリにキャンセルさせることが、第2のデータベースクエリに前記1つ以上のデータベースに対する実行を開始させることを備える、21または22に記載の方法。
24.1対1のマッピングが、各非ブロッキングソケットと対応するクエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、21〜23のうちのいずれか一項に記載の方法。
25.さらに、前記リストに含まれる各非ブロッキングソケットの前記読み取り要求を定期的に実行することを備える、24に記載の方法。
26.前記コードが、前記サーバコンピューティングデバイスからの前記非ブロッキングソケットの他方側において前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、21〜25のうちのいずれか一項に記載の方法。
27.前記コードが「EAGAIN」または「EWOULDBLOCK」メッセージのうちの1つ以上を含む、26に記載の方法。
28.データベースをクエリするサーバコンピューティングデバイスにおいて、
プロセッサと、
前記プロセッサによって実行されたときに前記サーバコンピューティングデバイスに、
ネットワーク接続を介してクライアント装置からクエリ入力を受信させ、
前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間において非ブロッキングソケットを確立させ、
前記クエリ入力に基づいてデータベースクエリを生成させ、
前記データベースクエリに1つ以上のデータベースに対する実行を開始させ、
非ブロッキングソケットの読み取り要求を実行させ、
前記非ブロッキングソケットの読み取り要求に応答してコードを受信させ、
前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定させ、
前記サーバが、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを判定した場合、前記データベースクエリにキャンセルさせる命令を記憶するメモリとを備える、サーバコンピューティングデバイス。
29.1つ以上のデータベースがリレーショナルデータベースであり、前記クエリがSQL(構造化照会言語)クエリである、28に記載のサーバコンピューティングデバイス。
30.前記データベースクエリにキャンセルさせることが、第2のデータベースクエリに前記1つ以上のデータベースに対する実行を開始させることを備える、28または29に記載のサーバコンピューティングデバイス。
31.1対1のマッピングが、各非ブロッキングソケットと対応するクエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、28〜30のうちのいずれか一項に記載のサーバコンピューティングデバイス。
32.さらに、前記リストに含まれる各非ブロッキングソケットの前記読み取り要求を定期的に実行することを備える、31に記載のサーバコンピューティングデバイス。
33.前記コードが、前記サーバコンピューティングデバイスからの前記非ブロッキングソケットの他方側において前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、28〜32のうちのいずれか一項に記載のサーバコンピューティングデバイス。
34.前記コードが「EAGAIN」または「EWOULDBLOCK」メッセージのうちの1つ以上を含む、33に記載のサーバコンピューティングデバイス。
35.データベースをクエリするクライアントコンピューティングデバイスにおいて、
プロセッサと、
前記プロセッサによって実行されたときに前記クライアントコンピューティングデバイスに、
ネットワーク接続を介してサーバコンピューティングデバイスに対してクエリ入力を送信させ、非ブロッキングソケットが前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間に確立され、前記クエリ入力に基づいてデータベースクエリが生成されて1つ以上のデータベースに対して実行され、
前記サーバコンピューティングデバイスから非ブロッキングソケットの読み取り要求を受信させ、
前記非ブロッキングソケットの読み取り要求に応答して前記サーバコンピューティングデバイスに対してコードを送信させ、コードが、前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に依然として存在するかどうかを前記サーバコンピューティングデバイスが判定するのを可能とし、前記サーバコンピューティングデバイスが、前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に存在しないことを判定した場合、前記サーバコンピューティングデバイスが、前記データベースクエリにキャンセルさせることができる命令を記憶するメモリとを備える、クライアントコンピューティングデバイス。
36.1つ以上のデータベースがリレーショナルデータベースであり、前記クエリがSQL(構造化照会言語)クエリである、35に記載のクライアントコンピューティングデバイス。
37.1対1のマッピングが、前記非ブロッキングソケットと前記クエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、35または36に記載のクライアントコンピューティングデバイス。
38.前記読み取り要求が前記サーバコンピューティングデバイスから定期的に受信される、35〜37のうちのいずれか一項に記載のクライアントコンピューティングデバイス。
39.前記コードが、前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、35〜38のうちのいずれか一項に記載のクライアントコンピューティングデバイス。
40.前記コードが「EAGAIN」または「EWOULDBLOCK」メッセージのうちの1つ以上を含む、35〜39のうちのいずれか一項に記載のクライアントコンピューティングデバイス。
41.サーバコンピューティングデバイスのプロセッサによって実行されたときに前記サーバコンピューティングデバイスに、
ネットワーク接続を介してクライアント装置からクエリ入力を受信させ、
前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間において非ブロッキングソケットを確立させ、
前記クエリ入力に基づいてデータベースクエリを生成させ、
前記データベースクエリに1つ以上のデータベースに対する実行を開始させ、
非ブロッキングソケットの読み取り要求を実行させ、
前記非ブロッキングソケットの読み取り要求に応答してコードを受信させ、
前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定させ、
前記サーバが、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを判定した場合、前記データベースクエリにキャンセルさせる命令を備える、持続性記録媒体。
42.1つ以上のデータベースがリレーショナルデータベースであり、前記クエリがSQL(構造化照会言語)クエリである、41に記載の持続性記録媒体。
43.前記データベースクエリにキャンセルさせることが、第2のデータベースクエリに前記1つ以上のデータベースに対する実行を開始させることを備える、41または42に記載の持続性記録媒体。
44.1対1のマッピングが、各非ブロッキングソケットと対応するクエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、41〜43のうちのいずれか一項に記載の持続性記録媒体。
45.さらに、前記サーバコンピューティングデバイスの前記プロセッサによって実行されたときに前記サーバコンピューティングデバイスに前記リストに含まれる各非ブロッキングソケットの前記読み取り要求を定期的に実行させる命令を備える、44に記載の持続性記録媒体。
46.前記コードが、前記サーバコンピューティングデバイスからの前記非ブロッキングソケットの他方側において前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、41〜45のうちのいずれか一項に記載の持続性記録媒体。
47.前記コードが「EAGAIN」または「EWOULDBLOCK」メッセージのうちの1つ以上を含む、46に記載の持続性記録媒体。
48.クライアントコンピューティングデバイスのプロセッサによって実行されたときに前記クライアントコンピューティングデバイスに、
ネットワーク接続を介してサーバコンピューティングデバイスに対してクエリ入力を送信させ、非ブロッキングソケットが前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間に確立され、前記クエリ入力に基づいてデータベースクエリが生成されて1つ以上のデータベースに対して実行され、
前記サーバコンピューティングデバイスから非ブロッキングソケットの読み取り要求を受信させ、
前記非ブロッキングソケットの読み取り要求に応答して前記サーバコンピューティングデバイスに対してコードを送信させ、コードが、前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に存在するかどうかを前記サーバコンピューティングデバイスが判定するのを可能とし、前記サーバコンピューティングデバイスが、前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に存在しないことを判定した場合、前記サーバコンピューティングデバイスが、前記データベースクエリにキャンセルさせることができる命令を備える、持続性記録媒体。
49.1つ以上のデータベースがリレーショナルデータベースであり、前記クエリがSQL(構造化照会言語)クエリである、48に記載の持続性記録媒体。
50.1対1のマッピングが、前記非ブロッキングソケットと前記クエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、48または49に記載の持続性記録媒体。
51.前記読み取り要求が前記サーバコンピューティングデバイスから定期的に受信される、48〜50のうちのいずれか一項に記載の持続性記録媒体。
52.前記コードが、前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、48〜51のうちのいずれか一項に記載の持続性記録媒体。
53.前記コードが「EAGAIN」または「EWOULDBLOCK」メッセージのうちの1つ以上を含む、48〜52のうちのいずれか一項に記載の持続性記録媒体。
54.前記1つ以上のリーフの第1のセットのうちの少なくとも2つのリーフが、前記モデルにおける異なるノードに接続される、1に記載の方法。
55.前記1つ以上のリーフの第1のセットのうちの少なくとも2つのリーフが、前記モデルにおける異なるノードに接続される、14に記載のシステム。




  1. コンピューティングデバイスにおいて、1つ以上のデータベーステーブルに対応するモデルに含まれている開始ノードの選択を受信することと、
    前記コンピューティングデバイスにおいて、各リーフが前記モデル内のノードに接続されている1つ以上のリーフの第1のセットの選択を受信することと、
    前記開始ノードおよび前記リーフの第1のセットに基づいて、第1のデータベースクエリを生成することと、
    前記1つ以上のデータベース上で実行される前記第1のデータベースクエリに基づいて、第1の結果出力を提供することと、
    前記第1の結果出力における結果の選択を受信することと、
    前記第1の結果出力における結果の選択に基づいて、前記結果に関連付けられた詳細設定に関連付けられている第2のデータベースクエリを生成することと、
    前記1つ以上のデータベース上で実行される前記第2のデータベースクエリに基づいて、第2の結果出力を提供することと
    を含む、1つ以上のデータベースをクエリする方法。

  2. 前記1つ以上のデータベースがリレーショナルデータベースであり、前記第1および第2のデータベースクエリがSQL(構造化照会言語)クエリである、請求項1に記載の方法。

  3. 前記リーフの第1のセットにおける各リーフが、第1のリーフ種類または第2のリーフ種類のいずれかに関連付けられている、請求項1または請求項2に記載の方法。

  4. 前記第1の結果出力が、前記第1のセットにおける各リーフについての列と、前記第1のセットにおける前記第1のリーフ種類に関連付けられたリーフについての値の各固有のタプルについての別個の行とを含む、請求項3に記載の方法。

  5. 前記第2のリーフ種類に関連付けられたリーフに対応する前記第1の結果出力における各列について、集計値が行のデータに基づいて列の各行に設けられる、請求項4に記載の方法。

  6. 前記集計値が、前記行における1つ以上の値の合計、カウント、平均、最小または最大を計算することに基づいている、請求項5に記載の方法。

  7. 前記モデルが複数の相互接続されたノードを含み、各ノードが1つ以上のリーフに関連付けられている、請求項1〜6のうちのいずれか一項に記載の方法。

  8. 前記第1のセットにおける各リーフが、前記開始ノードまたは前記複数の相互接続されたノードにおける他のノードに関連付けられている、請求項7に記載の方法。

  9. 前記第1のデータベースクエリを生成することが、
    データベースクエリフラグメントを記憶するように5つのデータセットを生成することと、
    前記第1のセットにおける各リーフについて、前記リーフの属性に基づいて前記5つのデータセットのうちの1つ以上に対して1つ以上のデータベースクエリフラグメントを追加することと、
    前記5つのデータセットから前記データベースクエリフラグメントをともに追加することによって前記第1のデータベースクエリを構築することと
    を含む、請求項1〜8のうちのいずれか一項に記載の方法。

  10. 前記第1のデータベースクエリがSQL(構造化照会言語)クエリを含み、前記5つのデータセットが、SELECT、JOIN、WHERE、GROUP BYおよびHAVINGについてのSQLコマンドに対応する、請求項1〜9のうちのいずれか一項に記載の方法。

  11. 前記結果に関連付けられた前記詳細設定が、第2の開始ノードおよびリーフの第2のセットに関連付けられており、前記第2のデータベースクエリを生成することが、前記第2の開始ノードおよび前記リーフの第2のセットに基づいて前記第2のデータベースクエリを生成することを含み、前記第2のデータベースクエリが、前記選択された結果に対応する前記第1の結果出力における行に含まれる1つ以上の値によってフィルタリングされる、請求項1〜10のうちのいずれか一項に記載の方法。

  12. 前記1つ以上のデータベースが、リレーショナルデータベース、非リレーショナルデータベース、ファイルベースのデータベースおよび/または非ファイルベースのデータベースを含む、請求項1〜11のうちのいずれか一項に記載の方法。

  13. 前記第1の結果出力が、前記第1のセットにおけるリーフのうちの1つにしたがってソートされる、請求項1〜12のうちのいずれか一項に記載の方法。

  14. 1つ以上のデータベースと、
    クライアント装置と、
    サーバと
    を備える、データベースクエリを生成するシステムであって、
    前記サーバが、
    前記1つ以上のデータベースに記憶された1つ以上のデータベーステーブルに対応するモデルに含まれるノードおよびリーフの第1のセットを含むモデル入力を、前記クライアント装置からデータネットワークを介して受信し、
    データベースクエリフラグメントを記憶するように複数のデータセットを生成し、
    前記第1のセットにおける各リーフについて、前記リーフの属性に基づいて前記複数のデータセットのうちの1つ以上に対して1つ以上のデータベースクエリフラグメントを追加し、
    前記複数のデータセットから前記データベースクエリフラグメントをともに追加することによってデータベースクエリを構築し、
    前記1つ以上のデータベースに対して前記データベースクエリを実行し、
    前記クライアント装置に対して前記データベースクエリの結果を返す
    ように構成されている、
    システム。

  15. 前記データベースクエリがSQL(構造化照会言語)クエリを含み、前記複数のデータセットが、SELECT、JOIN、WHERE、GROUP BYおよびHAVINGについてのSQLコマンドに対応する、請求項14に記載のシステム。

  16. 前記リーフがリーフSQLフラグメントおよびリーフ識別子に関連付けられており、前記サーバが、前記リーフが前記ノードから到達可能である場合、構文「{leaf SQL fragment} AS {leaf identifier}」を使用して前記SELECTデータセットに対してSQLフラグメントを追加するように構成されている、請求項15に記載のシステム。

  17. 前記リーフがリーフ識別子に関連付けられており、前記サーバが、前記リーフが第1のリーフ種類に関連付けられている場合、構文「{leaf identifier}」を使用して前記GROUP BYデータセットに対してSQLフラグメントを追加するように構成されている、請求項15に記載のシステム。

  18. 前記リーフがリーフ識別子およびノード接続SQLフラグメントに関連付けられており、前記サーバが、前記リーフが前記ノードに接続されていないが、代わりに前記モデルにおける他のノードに接続されている場合、構文「LEFT JOIN {node identifier} ON {node connection SQL fragment}」を使用して前記JOINデータセットに対してSQLフラグメントを追加するように構成されており、前記ノード接続SQLフラグメントが、前記モデルにおける2つのノードの結合に関連付けられている、請求項15に記載のシステム。

  19. サーバ装置において、ネットワーク接続を介してクライアント装置からクエリ入力を受信することと、
    前記クエリ入力に基づいてデータベースクエリを生成することと、
    前記データベースクエリに1つ以上のデータベースに対する実行を開始させることと、
    ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定することと、
    前記サーバが、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを判定した場合、前記データベースクエリをキャンセルさせることと
    を含む、データベースをクエリする方法。

  20. 前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定することが、前記ネットワーク接続において非ブロッキング読み取りを実行することを備える、請求項19に記載の方法。

  21. サーバコンピューティングデバイスにより、ネットワーク接続を介してクライアント装置からクエリ入力を受信することと、
    前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間において非ブロッキングソケットを確立することと、
    前記クエリ入力に基づいてデータベースクエリを生成することと、
    前記データベースクエリに1つ以上のデータベースに対する実行を開始させることと、
    前記サーバコンピューティングデバイスにより、非ブロッキングソケットの読み取り要求を実行することと、
    前記非ブロッキングソケットの読み取り要求に応答してコードを受信することと、
    前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定することと、
    前記サーバが、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを判定した場合、前記データベースクエリをキャンセルさせることと
    を含む、データベースをクエリする方法。

  22. 1つ以上のデータベースがリレーショナルデータベースであり、前記クエリがSQL(構造化照会言語)クエリである、請求項21に記載の方法。

  23. 前記データベースクエリをキャンセルさせることが、第2のデータベースクエリに前記1つ以上のデータベースに対する実行を開始させることを備える、請求項21または請求項22に記載の方法。

  24. 1対1のマッピングが、各非ブロッキングソケットと対応するクエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、請求項21〜23のうちのいずれか一項に記載の方法。

  25. さらに、前記リストに含まれる各非ブロッキングソケットの前記読み取り要求を定期的に実行することを備える、請求項24に記載の方法。

  26. 前記コードが、前記サーバコンピューティングデバイスからの前記非ブロッキングソケットの他方側において前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、請求項21〜25のうちのいずれか一項に記載の方法。

  27. 前記コードが「EAGAIN」または「EWOULDBLOCK」メッセージのうちの1つ以上を含む、請求項26に記載の方法。

  28. プロセッサと、
    命令を記憶するメモリと
    を備える、データベースをクエリするサーバコンピューティングデバイスであって、
    前記命令が、前記プロセッサによって実行されたときに前記サーバコンピューティングデバイスに、
    ネットワーク接続を介してクライアント装置からクエリ入力を受信させ、
    前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間において非ブロッキングソケットを確立させ、
    前記クエリ入力に基づいてデータベースクエリを生成させ、
    前記データベースクエリに1つ以上のデータベースに対する実行を開始させ、
    非ブロッキングソケットの読み取り要求を実行させ、
    前記非ブロッキングソケットの読み取り要求に応答してコードを受信させ、
    前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定させ、
    前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを前記サーバが判定した場合、前記データベースクエリをキャンセルさせる、
    サーバコンピューティングデバイス。

  29. 1つ以上のデータベースがリレーショナルデータベースであり、前記クエリがSQL(構造化照会言語)クエリである、請求項28に記載のサーバコンピューティングデバイス。

  30. 前記データベースクエリをキャンセルさせることが、第2のデータベースクエリに前記1つ以上のデータベースに対する実行を開始させることを含む、請求項28または請求項29に記載のサーバコンピューティングデバイス。

  31. 1対1のマッピングが、各非ブロッキングソケットと対応するクエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、請求項28〜30のうちのいずれか一項に記載のサーバコンピューティングデバイス。

  32. さらに、前記リストに含まれる各非ブロッキングソケットの前記読み取り要求を定期的に実行することを備える、請求項31に記載のサーバコンピューティングデバイス。

  33. 前記コードが、前記サーバコンピューティングデバイスからの前記非ブロッキングソケットの他方側において前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、請求項28〜32のうちのいずれか一項に記載のサーバコンピューティングデバイス。

  34. 前記コードが「EAGAIN」または「EWOULDBLOCK」メッセージのうちの1つ以上を含む、請求項33に記載のサーバコンピューティングデバイス。

  35. プロセッサと、
    命令を記憶するメモリと
    を備える、データベースをクエリするクライアントコンピューティングデバイスであって、
    前記命令が、前記プロセッサによって実行されたときに前記クライアントコンピューティングデバイスに、
    非ブロッキングソケットが前記クライアントコンピューティングデバイスとサーバコンピューティングデバイスとの間に確立され、クエリ入力に基づいてデータベースクエリが生成されて1つ以上のデータベースに対して実行される中で、ネットワーク接続を介してサーバコンピューティングデバイスに対してクエリ入力を送信させ、
    前記サーバコンピューティングデバイスから非ブロッキングソケットの読み取り要求を受信させ、
    受信したコードに基づいて前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に依然として存在するかどうかを前記サーバコンピューティングデバイスが判定するのをコードが可能とし、前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に存在しないことを前記サーバコンピューティングデバイスが判定した場合に前記サーバコンピューティングデバイスが前記データベースクエリをキャンセルさせることができる中で、前記非ブロッキングソケットの読み取り要求に応答して前記サーバコンピューティングデバイスに対してコードを送信させる、
    クライアントコンピューティングデバイス。

  36. 1つ以上のデータベースがリレーショナルデータベースであり、前記クエリがSQL(構造化照会言語)クエリである、請求項35に記載のクライアントコンピューティングデバイス。

  37. 1対1のマッピングが、前記非ブロッキングソケットと前記クエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、請求項35または請求項36に記載のクライアントコンピューティングデバイス。

  38. 前記読み取り要求が前記サーバコンピューティングデバイスから定期的に受信される、請求項35〜37のうちのいずれか一項に記載のクライアントコンピューティングデバイス。

  39. 前記コードが、前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、請求項35〜38のうちのいずれか一項に記載のクライアントコンピューティングデバイス。

  40. 前記コードが「EAGAIN」または「EWOULDBLOCK」メッセージのうちの1つ以上を含む、請求項35〜39のうちのいずれか一項に記載のクライアントコンピューティングデバイス。

  41. サーバコンピューティングデバイスのプロセッサによって実行されたときに前記サーバコンピューティングデバイスに、
    ネットワーク接続を介してクライアント装置からクエリ入力を受信させ、
    前記クライアントコンピューティングデバイスと前記サーバコンピューティングデバイスとの間において非ブロッキングソケットを確立させ、
    前記クエリ入力に基づいてデータベースクエリを生成させ、
    前記データベースクエリに1つ以上のデータベースに対する実行を開始させ、
    非ブロッキングソケットの読み取り要求を実行させ、
    前記非ブロッキングソケットの読み取り要求に応答してコードを受信させ、
    前記受信したコードに基づいて、前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在するかどうかを判定させ、
    前記ネットワーク接続が前記クライアント装置と前記サーバ装置との間に存在しないことを前記サーバが判定した場合、前記データベースクエリをキャンセルさせる
    命令を備える、持続性記録媒体。

  42. 1つ以上のデータベースがリレーショナルデータベースであり、前記クエリがSQL(構造化照会言語)クエリである、請求項41に記載の持続性記録媒体。

  43. 前記データベースクエリをキャンセルさせることが、第2のデータベースクエリに前記1つ以上のデータベースに対する実行を開始させることを含む、請求項41または請求項42に記載の持続性記録媒体。

  44. 1対1のマッピングが、各非ブロッキングソケットと対応するクエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、請求項41〜43のうちのいずれか一項に記載の持続性記録媒体。

  45. さらに、前記サーバコンピューティングデバイスの前記プロセッサによって実行されたときに前記サーバコンピューティングデバイスに前記リストに含まれる各非ブロッキングソケットの前記読み取り要求を定期的に実行させる命令を備える、請求項44に記載の持続性記録媒体。

  46. 前記コードが、前記サーバコンピューティングデバイスからの前記非ブロッキングソケットの他方側において前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、請求項41〜45のうちのいずれか一項に記載の持続性記録媒体。

  47. 前記コードが「EAGAIN」または「EWOULDBLOCK」メッセージのうちの1つ以上を含む、請求項46に記載の持続性記録媒体。

  48. クライアントコンピューティングデバイスのプロセッサによって実行されたときに前記クライアントコンピューティングデバイスに、
    非ブロッキングソケットが前記クライアントコンピューティングデバイスとサーバコンピューティングデバイスとの間に確立され、クエリ入力に基づいてデータベースクエリが生成されて1つ以上のデータベースに対して実行される中で、ネットワーク接続を介してサーバコンピューティングデバイスに対してクエリ入力を送信させ、
    前記サーバコンピューティングデバイスから非ブロッキングソケットの読み取り要求を受信させ、
    受信したコードに基づいて前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に依然として存在するかどうかを前記サーバコンピューティングデバイスが判定するのをコードが可能とし、前記ネットワーク接続が前記クライアント装置と前記サーバコンピューティングデバイスとの間に存在しないことを前記サーバコンピューティングデバイスが判定した場合に前記サーバコンピューティングデバイスが前記データベースクエリをキャンセルさせることができる中で、前記非ブロッキングソケットの読み取り要求に応答して前記サーバコンピューティングデバイスに対してコードを送信させる
    命令を備える、持続性記録媒体。

  49. 1つ以上のデータベースがリレーショナルデータベースであり、前記クエリがSQL(構造化照会言語)クエリである、請求項48に記載の持続性記録媒体。

  50. 1対1のマッピングが、前記非ブロッキングソケットと前記クエリとの間に存在し、各非ブロッキングソケット・クエリマッピングのリストが維持される、請求項48または請求項49に記載の持続性記録媒体。

  51. 前記読み取り要求が前記サーバコンピューティングデバイスから定期的に受信される、請求項48〜50のうちのいずれか一項に記載の持続性記録媒体。

  52. 前記コードが、前記クライアントコンピューティングデバイスが前記ネットワーク接続を介して接続されていることを示す、請求項48〜51のうちのいずれか一項に記載の持続性記録媒体。

  53. 前記コードが「EAGAIN」または「EWOULDBLOCK」メッセージのうちの1つ以上を含む、請求項48〜52のうちのいずれか一項に記載の持続性記録媒体。

  54. 前記1つ以上のリーフの第1のセットのうちの少なくとも2つのリーフが、前記モデルにおける異なるノードに接続される、請求項1〜13のうちのいずれか一項に記載の方法。

  55. 前記1つ以上のリーフの第1のセットのうちの少なくとも2つのリーフが、前記モデルにおける異なるノードに接続される、請求項14〜18のうちのいずれか一項に記載のシステム。

 

 

Patent trol of patentswamp
類似の特許
目的とする物事についての知識を発見し、取得し、組織化し、記憶し、ユーザにアクセス可能にし、かつユーザが種々の豊富な方法でこれらの物事とより効率的に相互作用することに役立つ能力を有する、知的インターネットシステム。知的インターネットシステムは、各ユーザの関心およびコンテキストに動的に適合する個人化インターフェースをユーザに提供する。このインターフェースは、現実であろうと仮想であろうと、人間または機械が一意に感知し、認識し、名前を付け、理解し、相互作用する物事についての「知識」への直接アクセスをユーザに提供する。ユーザは、製品およびサービスを見出し、それらについて学習し、それらを選択し、家族、友人、同僚、級友、顧客、および供給業者と通信し、ユーザの環境内で遭遇する物事について学習し、それらについて決定を行い、知的インターネットシステムに記憶された知識にアクセスすることができる。
単一のユーザインタフェースを介して1以上のレコードとインタラクトするための方法、装置、システム、及びコンピュータ読み取り可能記憶媒体が開示される。ユーザインタフェースは、パブリッシャ及び情報フィードを含む。ユーザは、パブリッシャから、第1のレコードとインタラクトすることをリクエストすることができる。第1のレコードとインタラクトしてレコードをアップデートするために、情報が、パブリッシャを通じて送信され得る。フィード項目が、アップデートに基づく情報フィードに含まれるように提示され得る。フィード項目は、第1のレコードへの参照を提供する1以上の実行可能なセレクションを含む。ユーザが、実行可能なセレクションのうちの1つを選択すると、ユーザは、第1のレコードとのさらなるインタラクションを実行することができる、あるいは、第2のレコードとの新たなインタラクションを実行することができる。
システムは、属性に対してユーザをマッピングする表を記憶して、ソースドメインと関連付けられた製品に対してユーザをマッピングする第2の表を記憶する。システムは、属性のそれぞれについて1組の上位スコアの製品を決定して、上位スコアの製品を使用して、ソースドメインと区別されるターゲットドメインにおける活動を予測するモデルを生成する。システムは、ターゲットドメインにアクセスする特定のユーザからの行動を検出して、行動の検出に応答して、モデルに基づいて特定のユーザについての個別予測を生じる。
【選択図】図5
様々な実施形態は、関心地点の検索の際、データプロバイダに照会するためのシステム、方法、装置およびコンピュータ可読媒体に関する。1つの特定の実施形態では、各々がデータソースの優先度を有する複数のデータソースを識別するステップであって、複数のデータソースは、第1の参照先ソース、第1の構造化知識ベースおよび第1の個々のウェブサイトの少なくとも2つを含む、識別するステップを含む方法が提供される。次いで、複数のデータソースは、poi検索要求と関連するメタデータを求めて照会することができ、照会する順序が複数のデータソースの各々についてのデータソースの優先度と、複数のデータソースの少なくとも1つに関して測定された少なくとも1つのソース品質とに基づく。さらなる実施形態では、照会順序は、測定されたソース品質に基づきアップデートすることができる。
方法は、複数のモジュールを有するアプリケーションで受け取られたデータ記録のストリームからの、データ記録の群中のデータ記録の第1の量を決定するステップを含む。方法は、アプリケーションのモジュールのうちの1つ以上に関して、データ記録の群の処理時にモジュールによって出力されたデータ記録のそれぞれの第2の量を決定するステップを含む。方法は、データ記録の第1および第2の量が規則を満たすかどうかを判定するステップを含む。この規則は、アプリケーションで受け取られたデータ記録の量と、アプリケーションの1つまたは複数のモジュールによって出力されたデータ記録の量との間のターゲット関係を示す。
本発明の実施形態は、データ処理方法、コーディネータ、及びノードデバイスを提供する。コーディネータは、ノードデバイスから送信される、サービスデータを含むデータフレームを受信し、サービスデータが設定データ信頼区間内に収まっているか否かを判断し、データ信頼区間から外れていると判断する場合に、ノードデバイスがサービスデータの正当性を確認するよう、サービスデータを載せた問い合わせデータフレームをノードデバイスに送信する。本発明の実施形態によれば、コーディネータは、まず、受信したサービスデータがデータ信頼区間内に収まっているか否かを判断し、データ信頼区間から外れている場合に、サービスデータをノードデバイスに返して確認させる。コーディネータがサービスデータを直ちに受け入れる先行技術による方法と比較して、本発明の実施形態で提供されるデータ処理方法は、データの信頼性及び精度に対するシステムの要求を満たす。
データベースシステムは、データベースシステムによって格納された特定のデータ記録に対して行われる変更を指定する書き込み要求を受け取ることができる。特定のデータ記録に対して行われる変更を表すログ記録は、データベースシステムのストレージサービスに送ることができる。読み取り用レプリカのキャッシュ内に格納された特定のデータ記録のキャッシュされたバージョンが古くなっていることを示す指示(例えば、ログ記録または他の指示)は、読み取り用レプリカに送ることができる。読み取り用レプリカによって受け取られた特定のデータ記録の後続の読み取りでは、読み取り用レプリカは、ストレージサービスから特定のデータ記録を要求することができる。
【選択図】図5
本発明の実施例は、クラスタリング方法及び関連装置を公開し、前記クラスタリング方法によれば、対象間の距離が対応する、2つの対象間の類似性で決められた重み係数に基づいて、クラスタ間の重み付き距離を取得し、即ち、対象間の距離に重みを付け、そして、併合後のクラスタの数と併合前のクラスタの数と等しくなるまで、重み付き距離が併合条件を満たすクラスタを併合し、クラスタリング結果を取得する。前記重み付き距離と2つの対象の類似性とが関連付けられ、異なる対象間の距離の貢献が異なり、類似性が高いほど対応する貢献が大きくなるので、クラスタリング結果の正確率が向上した。
【選択図】図1
【解決手段】 ページスナップショットの作成が開示される。この作成は、ウェブページに関連付けられているデータを受信し、ウェブページに関連付けられているページリソースが遅延読み込みに関係付けられていると決定し、ページリソースは、遅延読み込みプロセスの間トリガイベントに応答して読み込まれるように設定され、少なくとも一部には、ウェブページに関連付けられている受信データの中のページリソースに関連付けられている1つ以上の属性を変更することに基づいて、トリガイベントを伴うことなくページリソースを読み込み、読み込まれたページリソースをレンダリングし、レンダリングされたページリソースを含むウェブページのページスナップショットを作成すること、を含む。
【選択図】図3
本発明の実施形態は、データベースにおいて再実行データを処理するための方法および装置を提供し、方法は、サーバ内に含まれる複数のアプリケーションスレッドの各アプリケーションスレッドによって、データベースの変更操作に従って、再実行データを生成し、各アプリケーションスレッドに割り当てられた対応するバッファ内に再実行データを保存し、時系列キューのロックが取得された後、時系列キュー内にアプリケーションスレッドの識別子を保存し、保存が終わった後、時系列キューのロックを解除するステップと、データ読み出しスレッドによって、データ読み出し条件が満たされていることを判定し、時系列キューからアプリケーションスレッドの識別子を読み出す順序に連続的に従って、時系列キューにおける各アプリケーションスレッドの識別子に対応する各アプリケーションスレッドのバッファから1つの再実行データを読み出し、1つの再実行データを再実行キューに書き込むステップとを含む。本発明の使用によって、時系列キューをデータキューから分離することによって再実行データの処理効率が改善されることができ、それによって、データベースシステムの同時スループットを向上させる。
To top