(57)【特許請求の範囲】
【請求項１】
1つまたは複数のデータベースの複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、中間テーブルを作成せずに、レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用し、前記乱数値に前記レコード値を加算して固有のキー値・レコード値複合整数を提供することによって、該テーブルを結合するための固有のキーに対応するデータベースレコードの集約の集約値を計算する固有の集約関数を含む、単一の構造化照会言語（SQL）データベース問合せを、コンピュータ通信ネットワークを介して要求元クライアントから受信した1つまたは複数の関係データベースにアクセスできるデータベースエンジンのプロセッサを用いて実行する工程 を含む方法であって、
前記固有のキーは、各々が、別々のデータセットを相関させて前記集約値の計算処理のための単一のデータセットに統合するのに用いられるが、前記集約値を計算する際に使われた値とは異なり、
前記問合せの実行は、前記複数のデータベーステーブルにある主キーの複数のインスタンスが存在するので、計算された前記集約値の予期される値に対し結果の値が偏るのを防ぐことができる、データベース問合せを用いて集約関数を実行するための方法。 
【請求項２】
前記プロセッサがサーバ機器に含まれており、前記方法が、前記データベース問合せの結果をネットワーク接続を通じてクライアント機器に提供する工程を含む、請求項1記載の方法。 
【請求項３】
前記固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数であり、該総和関数が、
前記固有のキー値・レコード値複合整数の和を求める工程と
固有のキーに対応するレコード値の和を提供するために前記乱数値の和を減算する工程と
を含む、請求項１記載の方法。
【請求項４】
前記固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、該平均関数が、
前記固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために前記乱数値の和を減算する工程と、
固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、請求項１記載の方法。 
【請求項５】
前記固有のキー値・レコード値複合整数の生成は、集約すべきすべての前記レコード値の全体の総和を含めるのに十分な前記固有のキー値・レコード値複合整数のビット深度データ型を選択する工程を含む、請求項１記載の方法。 
【請求項６】
前記実行する工程が、
集約算出命令のコレクションにアクセスすること；
前記データベースエンジンのプロセッサによって実行される場合に、該データベースエンジンに、
各所与のキー値の最初のインスタンスのみを検査すること、および
前記固有の集約関数において該所与のキー値の該最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令の該コレクションの中から選択すること
を含む、請求項1記載の方法。 
【請求項７】
算出命令の前記コレクションがクライアント機器によって前記データベースエンジンに提供される、請求項６記載の方法。 
【請求項８】
算出命令の前記コレクションが前記データベースエンジンによってソースコードまたはコンパイル済みコードとしてロードされている、請求項６記載の方法。
【請求項９】
算出命令の前記コレクションが前記データベースエンジンに含まれている、請求項６記載の方法。 
【請求項１０】
前記実行する工程が、ユーザ定義のライブラリにアクセスすることを含み、前記データベースエンジンのプロセッサによって実行される場合に、該データベースエンジンのプロセッサに以下を行わせる命令を、該ユーザ定義のライブラリが含む、請求項1記載の方法：
各所与のキー値の最初のインスタンスのみを検査すること、および
前記固有の集約関数において該所与のキー値の該最初のインスタンスに対応するレコード値を利用すること。 
【請求項１１】
前記ユーザ定義のライブラリがデータベースメモリに記憶されている、請求項１０記載の方法。
【請求項１２】
データベースエンジンのプロセッサによって実行される場合に、該データベースエンジンに以下を行わせる命令を含む、非一時的な記録媒体：
1つまたは複数のデータベースの複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、中間テーブルを作成せずに、レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用し、前記乱数値に前記レコード値を加算して固有のキー値・レコード値複合整数を提供することによって、該テーブルを結合するための固有のキーに対応するデータベースレコードの集約の集約値を計算する固有の集約関数を含む、単一の構造化照会言語（SQL）データベース問合せを、コンピュータ通信ネットワークを介して要求元クライアントから受信した1つまたは複数の関係データベースに対して実行し、
前記固有のキーは、各々が、別々のデータセットを相関させて前記集約値の計算処理のための単一のデータセットに統合するのに用いられるが、前記集約値を計算する際に使われた値とは異なり、
前記問合せの実行は、前記複数のデータベーステーブルにある主キーの複数のインスタンスが存在するので、計算された前記集約値の予期される値に対し結果の値が偏るのを防ぐことができること。 
【請求項１３】
前記プロセッサがサーバ機器に含まれており、前記非一時的な記録媒体が、該プロセッサによって実行される場合に、該プロセッサに、前記データベース問合せの結果をネットワーク接続を通じてクライアント機器に提供させる命令を含む、請求項１２記載の非一時的な記録媒体。 
【請求項１４】
前記固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数であり、該総和関数が、
前記固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を提供するために前記乱数値の和を減算する工程と
を含む、請求項１２記載の非一時的な記録媒体。
【請求項１５】
前記固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、該平均関数が、
前記固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために前記乱数値の和を減算する工程と、
固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、請求項１２記載の非一時的な記録媒体。 
【請求項１６】
前記プロセッサによって実行される場合に、前記データベースエンジンに、集約すべきすべての前記レコード値の全体の総和を含めるのに十分な前記固有のキー値・レコード値複合整数のビット深度データ型を選択させる命令を含む、請求項１２記載の非一時的な記録媒体。 
【請求項１７】
前記実行することが、
集約算出命令のコレクションにアクセスすること；
前記データベースエンジンのプロセッサによって実行される場合に、該データベースエンジンに、
各所与のキー値の最初のインスタンスのみを検査すること、および
該固有の集約関数において該所与のキー値の該最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令の該コレクションの中から選択すること
を含む、請求項１２記載の非一時的な記録媒体。 
【請求項１８】
前記実行することが、ユーザ定義のライブラリにアクセスすることを含み、前記データベースエンジンのプロセッサによって実行される場合に、該データベースエンジンのプロセッサに以下を行わせる命令を、該ユーザ定義のライブラリが含む、請求項１２記載の非一時的な記録媒体：
各所与のキー値の最初のインスタンスのみを検査すること、および
前記固有の集約関数において該所与のキー値の該最初のインスタンスに対応するレコード値を利用すること。 
【請求項１９】
クライアント機器と、
サーバ機器と、
1つまたは複数のデータベースと
を含み、
該サーバ機器によって受信されると、該サーバ機器に、コンピュータ通信ネットワークを介して要求元クライアントから受信した該1つまたは複数のデータベースに対してデータベース問合せを実行させる、単一の構造化照会言語（SQL）データベース問合せを、ネットワーク接続を通じて該クライアント機器から該サーバ機器へ、該クライアント機器が送信し、
1つまたは複数のデータベースの複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、中間テーブルを作成せずに、レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用し、前記乱数値に前記レコード値を加算して固有のキー値・レコード値複合整数を提供することによって、該テーブルを結合するための固有のキーに対応するデータベースレコードの集約の集約値を計算する固有の集約関数を、該データベース問合せが含み、
前記固有のキーは、各々が、別々のデータセットを相関させて前記集約値の計算処理のための単一のデータセットに統合するのに用いられるが、前記集約値を計算する際に使われた値とは異なり、
前記問合せの実行は、前記複数のデータベーステーブルにある主キーの複数のインスタンスが存在するので、計算された前記集約値の予期される値に対し結果の値が偏るのを防ぐことができる、
データベース問合せを用いて集約関数を実行するためのシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
序論
構造化照会言語（Structured Query Language、SQL）データベースは、データが比較的コンパクトな単位のコレクションとして記憶されている場合に、データベース内のコレクション間の関係接続を指定するのに必要なデータと共に適切に動作するように設計されている。そして、これらの異種の情報源は、質問または問合せに回答するのに必要なすべての適切な情報を有するデータセットを作成するために、様々な関係組合せ計算を用いて組み合わされる。
【０００２】
このデータの「正規化」により、データベースが、データを効率的に記憶し、索引付けし、理論的に任意の次元に沿ってデータを探る柔軟性を持つことが可能になる。しかし、この形式のデータに対する問合せが非効率的であることから、複数のテーブルを結合する問合せに応答するために、正規化されたデータに対する第2層の処理が必要になる場合もある。
【０００３】
この第2層の処理は、データベースが効率的に回答することが予期される質問のセットが事前に知られていれば、回避することができる。一般的な解決法は正規化されたテーブルの上にデータの要約層を構築することである。これは、空間的には非効率的であるが、計算処理の負担が除去される。
【発明の概要】
【０００４】
概要
関係認識集約（Relation Aware Aggregation、RAA）は、正規化されたデータの非効率性を回避すると同時に、単に正規化されただけのデータベースの柔軟性も引き続き維持する、データセットの集約関数を算出する方法である。RAAは、集約関数の結果セットを獲得すると同時に、そうした結果セットを獲得するのに必要な処理工程の回数および/またはメモリを低減させる有効な手段を提供する。
【０００５】
本開示は、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを用いて集約関数による計算処理を行うための方法を提供する。関連する機器およびシステムも提供される。
【０００６】
本明細書に記載する発明の主題の、各態様を含む各局面は、単独で、または1つもしくは複数の他の局面もしくは態様と組み合わせて役立てることができる。前述の、または後述する説明を制限するものではないが、以下に1〜86と付番された本開示のいくつかの非限定的な局面を示す。本開示を読めば当業者には明らかになるように、個別に付番された局面は各々が用いられてもよく、先行する、または後続の個別に付番された局面のいずれかと組み合わされてもよい。これは、そうした局面の組み合わせすべてのサポートを提供するためのものであり、以下で明示的に提供する局面の組み合わせのみに限定するものではない。
1．一局面において、本開示は、
1つまたは複数のデータベースの複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを、1つまたは複数のデータベースにアクセスできるデータベースエンジンのプロセッサを用いて実行する工程
を含む、データベース問合せを用いて集約関数を実行するための方法を提供する。
2．前記プロセッサがサーバ機器に含まれており、前記方法が、データベース問合せの結果をネットワーク接続を通じてクライアント機器に提供する工程を含む、局面1の方法。
3．1つまたは複数のデータベースが関係データベースであり、かつデータベース問合せが単一の構造化照会言語（SQL）問合せ文である、局面1または2の方法。
4．以下の工程を含む、局面3の方法：
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算すること
を含む、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成する工程。
5．固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数であり、総和関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と
を含む、局面4の方法。
6．固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、平均関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、
固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、局面4の方法。
7．固有のキー値・レコード値複合整数の生成に関連して用いるために、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を選択する工程を含む、局面4〜6のいずれか1つの方法。
8．実行する工程が、
集約算出命令のコレクションにアクセスすること；
データベースエンジンのプロセッサによって実行される場合に、データベースエンジンに、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令のコレクションの中から選択すること
を含む、局面1の方法。
9．算出命令のコレクションがクライアント機器によってデータベースエンジンに提供される、局面8の方法。
10．算出命令のコレクションがデータベースエンジンによってソースコードまたはコンパイル済みコードとしてロードされている、局面8の方法。
11．算出命令のコレクションがデータベースエンジンに含まれている、局面8の方法。
12．実行する工程が、ユーザ定義のライブラリにアクセスすることを含み、データベースエンジンのプロセッサによって実行される場合に、データベースエンジンのプロセッサに以下を行わせる命令を、ユーザ定義のライブラリが含む、局面1の方法：
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること。
13．ユーザ定義のライブラリがデータベースメモリに記憶されている、局面12の方法。
14．別の局面において、本開示は、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを用いて、集約関数の実行を容易にするための方法を提供し、本方法は、以下の工程を含む：
データベースエンジンのプロセッサによって実行される場合に、データベースエンジンに、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキーの最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を含む集約算出命令のコレクションを、データベースエンジンのプロセッサに提供する工程。
15．別の局面において、本開示は、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを用いて、集約関数の実行を容易にするための方法を提供し、本方法は、以下の工程を含む：
サーバ機器のプロセッサによって実行される場合に、サーバ機器に、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキーの最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を含む、サーバ機器に対してアクセス可能なユーザ定義のライブラリを提供する工程。
16．別の局面において、本開示は、データベース問合せを用いて集約関数を実行するための方法を提供し、本方法は、以下の工程を含む：
複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、該テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを、サーバ機器において受信する工程；
1つまたは複数のデータベースに対してデータベース問合せを実行する工程；および
データベース問合せの結果をネットワーク接続を通じてクライアント機器に提供する工程。
17．1つまたは複数のデータベースが関係データベースであり、かつデータベース問合せが単一の構造化照会言語（SQL）問合せ文である、局面16の方法。
18．以下の工程を含む、局面17の方法：
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算すること
を含む、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成する工程。
19．固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数であり、総和関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と
を含む、局面18の方法。
20．固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、平均関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、
固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、局面18の方法。
21．固有のキー値・レコード値複合整数の生成に関連して用いるために、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を選択する工程を含む、局面18〜20のいずれか1つの方法。
22．実行する工程が、
集約算出命令のコレクションにアクセスすること；
サーバ機器のプロセッサによって実行される場合に、サーバ機器に、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令のコレクションの中から選択すること
を含む、局面16の方法。
23．実行する工程が、ユーザ定義のライブラリにアクセスすることを含み、サーバ機器のプロセッサによって実行される場合に、サーバ機器に以下を行わせる命令を、ユーザ定義のライブラリが含む、局面16の方法：
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること。
24．別の局面において、本開示は、データベース問合せを用いて集約関数を実行するための方法を提供し、本方法は、以下の工程を含む：
サーバ機器において、ネットワーク接続を通じてクライアント機器から問合せ入力を受信する工程；
複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを、問合せ入力に基づいて生成する工程；
1つまたは複数のデータベースに対してデータベース問合せを実行する工程；および
データベース問合せの結果をネットワーク接続を通じてクライアント機器に返す工程。
25．1つまたは複数のデータベースが関係データベースであり、かつデータベース問合せが単一の構造化照会言語（SQL）問合せ文である、局面24の方法。
26．以下の工程を含む、局面25の方法：
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算すること
を含む、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成する工程。
27．固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数であり、総和関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と
を含む、局面26の方法。
28．固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、平均関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、
固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、局面26の方法。
29．固有のキー値・レコード値複合整数の生成に関連して用いるために、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を選択する工程、を含む、局面26〜28のいずれか1つの方法。
30．実行する工程が、
集約算出命令のコレクションにアクセスすること；
サーバ機器のプロセッサによって実行される場合に、サーバ機器に、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令のコレクションの中から選択すること
を含む、局面24の方法。
31．実行する工程が、ユーザ定義のライブラリにアクセスすることを含み、サーバ機器のプロセッサによって実行される場合に、サーバ機器に以下を行わせる命令を、ユーザ定義のライブラリが含む、局面24の方法：
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること。
32．ユーザ定義のライブラリがデータベースメモリに記憶されている、局面31の方法。
33．別の局面において、本開示は、集約関数において用いるための固有のキー値・レコード値複合整数を生成するための方法を提供し、本方法は、
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用する工程と、
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算する工程と
を含み、適用する工程および加算する工程は、データベースエンジンのプロセッサによって実行される。
34．固有のキー値・レコード値複合整数の生成に関連して用いるために、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を選択する工程、を含む、局面33の方法。
35．別の局面において、本開示は、集約関数において用いるための固有のキー値・レコード値複合整数を生成するための方法を提供し、本方法は、
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用する工程と、
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算する工程と
を含み、適用する工程および加算する工程は、サーバ機器のプロセッサによって実行される。
36．固有のキー値・レコード値複合整数の生成に関連して用いるために、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を選択する工程、を含む、局面35の方法。
37．別の局面において、本開示は、データベースエンジンのプロセッサによって実行される場合にデータベースエンジンに1つまたは複数のデータベースに対してデータベース問合せを実行させる命令を含む、非一時的な記録媒体を提供し、データベース問合せは、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む。
38．プロセッサが、サーバ機器に含まれており、前記非一時的な記録媒体が、プロセッサによって実行される場合に、プロセッサに、データベース問合せの結果をネットワーク接続を通じてクライアント機器に提供させる命令を含む、局面37の非一時的な記録媒体。
39．1つまたは複数のデータベースが関係データベースであり、かつデータベース問合せが単一の構造化照会言語（SQL）問合せ文である、局面37または38の非一時的な記録媒体。
40．プロセッサによって実行される場合に、データベースエンジンに、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成させる命令を含む、非一時的な記録媒体であって、固有のキー値・レコード値複合整数を生成することが以下を含む、局面39の非一時的な記録媒体：
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算すること。
41．固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数であり、総和関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と
を含む、局面40の非一時的な記録媒体。
42．固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、平均関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、
固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、局面40の非一時的な記録媒体。
43．プロセッサによって実行される場合に、データベースエンジンに、固有のキー値・レコード値複合整数の生成に関連して用いるために、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を選択させる命令を含む、局面39〜42のいずれか1つの非一時的な記録媒体。
44．実行することが、
集約算出命令のコレクションにアクセスすること；
データベースエンジンのプロセッサによって実行される場合に、データベースエンジンに、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令のコレクションの中から選択すること
を含む、局面37の非一時的な記録媒体。
45．実行することが、ユーザ定義のライブラリにアクセスすることを含み、データベースエンジンのプロセッサによって実行される場合に、データベースエンジンのプロセッサに以下を行わせる命令を、ユーザ定義のライブラリが含む、局面37の非一時的な記録媒体：
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること。
46．別の局面において、本開示は、サーバ機器のプロセッサによって実行される場合に、サーバ機器に以下を行わせる命令を含む、非一時的な記録媒体を提供する：
ネットワーク接続を通じてクライアント機器から問合せ入力を受信すること；
問合せ入力に基づいて、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを生成すること；
1つまたは複数のデータベースに対してデータベース問合せを実行すること；および
データベース問合せの結果をネットワーク接続を通じてクライアント機器に返すこと。
47．1つまたは複数のデータベースが関係データベースであり、かつデータベース問合せが単一の構造化照会言語（SQL）問合せ文である、局面46の非一時的な記録媒体。
48．サーバ機器のプロセッサによって実行される場合に、サーバ機器に、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成させる命令を含む、非一時的な記録媒体であって、固有のキー値・レコード値複合整数を生成することが以下を含む、局面47の非一時的な記録媒体：
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算すること。
49．固有の集約関数が、固有のキーに対応する値の和を算出するように構成された総和関数であり、総和関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と
を含む、局面48の非一時的な記録媒体。
50．固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、平均関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、
固有のキーに対応する値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、局面48の非一時的な記録媒体。
51．サーバ機器のプロセッサによって実行される場合に、サーバ機器に、固有のキー値・レコード値複合整数の生成に関連して用いるために、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を選択させる命令を含む、局面48〜50のいずれか1つの非一時的な記録媒体。
52．実行することが、
集約算出命令のコレクションにアクセスすること；
サーバ機器のプロセッサによって実行される場合に、サーバ機器に、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令のコレクションの中から選択すること
を含む、局面46の非一時的な記録媒体。
53．実行することが、ユーザ定義のライブラリにアクセスすることを含み、サーバ機器のプロセッサによって実行される場合に、サーバ機器に以下を行わせる命令を、ユーザ定義のライブラリが含む、局面46の非一時的な記録媒体：
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること。
54．別の局面において、本開示は、サーバ機器のプロセッサによって実行される場合に、サーバ機器に、以下を行わせる命令を含む、非一時的な記録媒体を提供する：
1つまたは複数のデータベースに対して、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを、実行すること、および
データベース問合せの結果をネットワーク接続を通じてクライアント機器に提供すること。
55．1つまたは複数のデータベースが関係データベースであり、かつデータベース問合せが単一の構造化照会言語（SQL）問合せ文である、局面54の非一時的な記録媒体。
56．サーバ機器のプロセッサによって実行される場合に、サーバ機器に、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成させる命令を含む、非一時的な記録媒体であって、固有のキー値・レコード値複合整数を生成することが以下を含む、局面55の非一時的な記録媒体：
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算すること。
57．固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数であり、総和関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と
を含む、局面56の非一時的な記録媒体。
58．固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、平均関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、
固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、局面56の非一時的な記録媒体。
59．サーバ機器のプロセッサによって実行される場合に、サーバ機器に、固有のキー値・レコード値複合整数の生成に関連して用いるために、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を選択させる命令を含む、局面56〜58のいずれか1つの非一時的な記録媒体。
60．実行することが、
集約算出命令のコレクションにアクセスすること；
サーバ機器のプロセッサによって実行される場合に、サーバ機器に、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令のコレクションの中から選択すること
を含む、局面54の非一時的な記録媒体。
61．実行することが、ユーザ定義のライブラリにアクセスすることを含み、サーバ機器のプロセッサによって実行される場合に、サーバ機器に以下を行わせる命令を、ユーザ定義のライブラリが含む、局面54の非一時的な記録媒体：
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること。
62．別の局面において、本開示は、サーバ機器のプロセッサによって実行される場合に、サーバ機器に以下を行わせる命令を含む、非一時的な記録媒体を提供する：
ネットワーク接続を通じてクライアント機器から問合せ入力を受信すること；
問合せ入力に基づいて、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを生成すること；
1つまたは複数のデータベースに対してデータベース問合せを実行すること；および
データベース問合せの結果をネットワーク接続を通じてクライアント機器に返すこと。
63．1つまたは複数のデータベースが関係データベースであり、かつデータベース問合せが単一の構造化照会言語（SQL）問合せ文である、局面62の非一時的な記録媒体。
64．サーバ機器のプロセッサによって実行される場合に、サーバ機器に、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成させる命令を含む、非一時的な記録媒体であって、固有のキー値・レコード値複合整数を生成することが以下を含む、局面63の非一時的な記録媒体：
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算すること。
65．固有の集約関数が、固有のキーに対応する値の和を算出するように構成された総和関数であり、総和関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と
を含む、局面64の非一時的な記録媒体。
66．固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、平均関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、
固有のキーに対応する値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、局面64の非一時的な記録媒体。
67．サーバ機器のプロセッサによって実行される場合に、サーバ機器に、固有のキー値・レコード値複合整数の生成に関連して用いるために、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を選択させる命令を含む、局面64〜66のいずれか1つの非一時的な記録媒体。
68．実行することが、
集約算出命令のコレクションにアクセスすること；
サーバ機器のプロセッサによって実行される場合に、サーバ機器に、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令のコレクションの中から選択すること
を含む、局面62の非一時的な記録媒体。
69．実行することが、ユーザ定義のライブラリにアクセスすることを含み、サーバ機器のプロセッサによって実行される場合に、サーバ機器に以下を行わせる命令を、ユーザ定義のライブラリが含む、局面62の非一時的な記録媒体：
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること。
70．別の局面において、本開示は、データベース問合せを用いて集約関数を実行するための方法を提供し、本方法は、以下の工程を含む：
サーバ機器によって受信されると、サーバ機器に、1つまたは複数のデータベースに対してデータベース問合せを実行させる、データベース問合せを、ネットワーク接続を通じてクライアント機器からサーバ機器へ送信する工程であって、データベース問合せが、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、該送信する工程；および
クライアント機器においてサーバ機器からデータベース問合せの結果を受信する工程。
71．1つまたは複数のデータベースが関係データベースであり、かつデータベース問合せが単一の構造化照会言語（SQL）問合せ文である、局面70の方法。
72．以下の工程を含む、局面71の方法：
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算すること
を含む、サーバ機器に、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成させる工程。
73．固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数であり、総和関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と
を含む、局面72の方法。
74．固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、平均関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、
固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、局面72の方法。
75．サーバが、固有のキー値・レコード値複合整数の生成に関連して、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を利用する、局面72〜74のいずれか1つの方法。
76．実行することが、
集約算出命令のコレクションにアクセスすること；
サーバ機器のプロセッサによって実行される場合に、サーバ機器に、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令のコレクションの中から選択すること
を含む、局面70の方法。
77．実行する工程が、ユーザ定義のライブラリにアクセスすることを含み、サーバ機器のプロセッサによって実行される場合に、サーバ機器に以下を行わせる命令を、ユーザ定義のライブラリが含む、局面70の方法：
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること。
78．別の局面において、本開示は、データベース問合せを用いて集約関数を実行するための方法を提供し、本方法は、以下の工程を含む：
サーバ機器によって受信されると、サーバ機器に、
問合せ入力に基づいて、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを生成すること、および
1つまたは複数のデータベースに対してデータベース問合せを実行すること
を行わせる問合せ入力を、ネットワーク接続を通じてクライアント機器からサーバ機器へ送信する工程；ならびに
クライアント機器においてサーバ機器からデータベース問合せの結果を受信する工程。
79．1つまたは複数のデータベースが関係データベースであり、かつデータベース問合せが単一の構造化照会言語（SQL）問合せ文である、局面78の方法。
80．以下の工程を含む、局面79の方法：
レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および
固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算すること
を含む、サーバ機器に、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成させる工程。
81．固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数であり、総和関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と
を含む、局面80の方法。
82．固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数であり、平均関数が、
固有のキー値・レコード値複合整数の和を求める工程と、
固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、
固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と
を含む、局面80の方法。
83．サーバが、固有のキー値・レコード値複合整数の生成に関連して、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を利用する、局面80〜82のいずれか1つの方法。
84．実行することが、
集約算出命令のコレクションにアクセスすること；
サーバ機器のプロセッサによって実行される場合に、サーバ機器に、
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること
を行わせる命令を、集約算出命令のコレクションの中から選択すること
を含む、局面78の方法。
85．実行する工程が、ユーザ定義のライブラリにアクセスすることを含み、サーバ機器のプロセッサによって実行される場合に、サーバ機器に以下を行わせる命令を、ユーザ定義のライブラリが含む、局面78の方法：
各所与のキー値の最初のインスタンスのみを検査すること、および
固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用すること。
86．別の局面において、本開示は、データベース問合せを用いて集約関数を実行するためのシステムを提供し、本システムは、
クライアント機器と、
サーバ機器と、
1つまたは複数のデータベースと
を含み、
サーバ機器によって受信されると、サーバ機器に、1つまたは複数のデータベースに対してデータベース問合せを実行させる、データベース問合せを、ネットワーク接続を通じてクライアント機器からサーバ機器へ、クライアント機器は送信し、
複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を、データベース問合せは含み、
データベース問合せの結果を、ネットワーク接続を通じてクライアント機器に、サーバ機器は返す。
【図面の簡単な説明】
【０００７】
【図１】一例示的態様による、1つまたは複数のデータベースに問合せするための例示的システムのブロック図である。
【図２】一例示的態様による、1つまたは複数のデータベースに問合せするように構成されたコンピューティングデバイスの構成要素の配置のブロック図である。
【図３】一態様による、コンピューティングデバイスのための例示的な機能構成要素のブロック図である。
【発明を実施するための形態】
【０００８】
詳細な説明
上述のように、RAAは、結合された正規化データの集約関数を正確に計算するのに必要な非効率性を回避すると同時に、単に正規化されただけのデータベースの柔軟性も引き続き維持する、データセットの集約関数を算出する方法である。本開示は、データベース問合せを用いて集約関数を実行するための方法を提供し、このデータベース問合せは、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む。
【０００９】
本発明をさらに詳細に説明する前に、本発明は記載する特定の態様だけに限定されるものではなく、本発明の態様は様々なものとしうることを理解すべきである。また、本発明の範囲は添付の特許請求の範囲によってのみ限定されるため、本明細書で用いる用語は特定の態様を説明するためのものにすぎず、限定のためのものではないことも理解すべきである。
【００１０】
特に定義しない限り、本明細書で用いるすべての科学技術用語は、本発明が属する技術分野の当業者が一般に理解するのと同じ意味を有するものである。
【００１１】
本明細書で言及するありとあらゆる文献は、それらの文献が関連して引用されている方法および/または材料を開示し、記述するために、参照により本明細書に組み入れられる。矛盾が生じる場合には、本開示が組み入れられる文献の開示に優先することを理解されたい。さらに、提供するそれらの文献の発行日は実際の発行日と異なる可能性もあり、実際の発行日については別個に確認する必要がある。
【００１２】
本明細書および添付の特許請求の範囲で用いる場合、単数形の「a」、「an」、および「the」は、文脈上明らかに他の意味に解されるのでない限り、複数を含むものであることに留意しなければならない。よって、例えば、「a database（1つのデータベース）」という場合、それは複数のそうしたデータベースを含み、以下同様である。
【００１３】
特許請求の範囲は、任意の要素、例えば、任意の任意選択の要素を除外するように起草されている可能性があることにさらに留意されたい。よって、本明細書は、クレーム要素の引用と関連した、「solely（もっぱら）」、「only（〜のみ）」などといった排他的な用語の使用、または「否定的な」限定の使用の前提的基礎をなすものであることが意図されている。
【００１４】
本開示を読めば当業者には明らかになるように、本明細書に記載し、例示する個々の態様は各々、本発明の範囲または趣旨を逸脱することなく、その他のいくつかの態様のいずれかの特徴から容易に分離し、またはそれらの特徴と組み合わせることができる、別個の構成要素および特徴を有する。記載するいかなる方法も、記載する事象の順序で実行することもでき、論理的に可能な任意の他の順序で実行することもできる。
【００１５】
本発明の実施に際しては本明細書に記載する方法および材料に類似した、またはそれらと同等のいかなる方法および材料も用いることができるが、次にいくつかの潜在的、例示的な方法および材料について説明する。
【００１６】
RAAによって対処される非効率性の一例を以下で表1および表2を参照して示す。データベースアーキテクチャにおいてきわめて一般的なパターンは、エンティティの第1のテーブルと、それらのエンティティのアクティビティを記述する第2のテーブルとを有するものである。各エンティティに固有の情報は各アクティビティに固有の情報と異なるものとして保持される。アクティビティに関する問合せを、アクティビティを実行するエンティティに関する情報を取得するためにエンティティテーブルに結合することができる。例えば、以下の表1に、1組のユーザについてのデータを含む単純なテーブルを示す。以下の表2に、表1で識別されているユーザが出した1組の注文を含むテーブルを示す。
【００１７】
【表１】
0006517930.tif 000002
【００１８】
【表２】
0006517930.tif 000003
【００１９】
ユーザが上記テーブルを含むデータベースに尋ねる可能性のある例示的な質問が、「注文を出した顧客の平均年齢は何歳か？」である。この小規模なデータセットを用いて、単に各テーブルを見るだけで回答を選び出し、算出することができる。Marcus、AndreaおよびShimrodは全員発注しており、よって平均年齢は彼らの年齢の和を、3で割ったものであり、（23＋34＋45）/3、すなわち34歳である。しかし、この計算処理のSQL問合せを書くことはより複雑である。上記質問に回答する第1の試みは、SQLにおいて集約関数「AVG（）」を用いる以下の問合せを利用することができる。
0006517930.tif 000004
【００２０】
上記計算では各注文を行ったユーザの年齢の和を求め、その和を注文数で割り、すなわち、（45＋45＋45＋23＋34＋34＋45）/7になり、約38.7歳という回答が得られる。これは、「注文を受けるために電話に回答するときに予期すべき顧客の平均年齢は何歳か？」といった別の質問への回答である。この質問への回答は、潜在的には興味深いものであるが、最初に出された質問への回答ではない。
【００２１】
上記コンテキストにおいてSQLでAVG関数を用いるためには、発注した固有のユーザの数と同じ行数を有するデータセットに対して平均を実行しなければならない。この計算は2つの問合せ、すなわち、ユーザごとにすべての注文アクティビティをまとめる第1の問合せと、平均を算出する第2の問合せを必要とする。SQL-99では、これを、2つの計算を組み合わせる「WITH」句を用いて書くことができる。
0006517930.tif 000005
【００２２】
第2のネストされた問合せを用いると正しい結果が生じるが、より複雑な注文に関する問合せを扱うためには、例えば、注文が多くの注文品目を含む可能性がある場合や、ユーザが複数の送付先を有する可能性がある場合には、注文に関する質問に回答するのに必要なこれらの中間計算の数が急速にきわめて大きくなり、非常に多くの場合、1つの問合せにいくつものこれらの副問合せが必要になる。したがって、この手法が表しているのは所望の情報を獲得する非効率的な手段である。
【００２３】
本明細書に記載するRAA法が表しているのは改善された手法であり、この手法は上述の非効率性によって損なわれない。RAAは、ある数の集約を、その数が集約の算出を表現する問合せにどのように結合されたかについての知識を用いて算出するための方法であり、この方法は、異なる濃度のテーブルを結合することから生じる予期しない結果、および中間テーブルを作成しなければならない非効率性を回避する。例えば、一局面において、RAAは、問合せされるテーブルに主キーの複数のインスタンスが存在するために、標準的な集約技法により予期される値と比べて偏った集約値がもたらされる場合に生じる問題への解決策を提供する。
【００２４】
この概念は、SQLにおける「distinct value（固有の値）」という考え方の拡張である。SQLには現在、「現在のデータセット全体のこの式の固有の値をカウントする」を意味する計算処理COUNT（DISTINCT（））があり、これを用いれば集約全体の項目を正しくカウントすることができる。あまり一般的に有用ではないが、同様の式がSUM（DISTINCT（））であり、これは、式のすべての固有の値を算出し、次いでそれらの値の和を求める。
【００２５】
RAAは、固有のキーを有するレコードの値を集約するための方法として特徴づけることができる。RAAを用いれば、上記の問題問合せを、以下のように単純かつ効率的に書くことができるはずである。
0006517930.tif 000006
【００２６】
RAAの技法は、固有のキー全体の集約を求めるものであり、これは集約計算で用いられる値ではなく、別々のデータセットを相関させて計算処理のための単一のデータセットにするのに用いられるキーである。
【００２７】
上記の単純な例は、RAAなしで、以下のように、相関全体の区別を算出するSQLにおけるGROUP BYキーワードを用いて書くこともできると考えられる。
0006517930.tif 000007
【００２８】
しかし、複数の列を有する問合せでは、結果セット内の列ごとに正しい集約計算を生み出すように値ごとに異なるGROUP BYを行うことは不可能である。例えば、注文内の品目のリストも注文IDに基づいて結合されていた場合、ユーザに関する計算処理についての正しい集約を取得するためにユーザIDでグループ化すると同時に、注文に基づいて正しく集約するために注文IDでもグループ化することは不可能となるはずである。RAAは、たとえ結果を算出するのに十分なデータを集めるためにいくつかの異なるテーブルが結合されていたとしても、各集約が、1つの効率的な問合せにおいて、正しいグループ化を用いて行われることを可能にする。
【００２９】
相関キー全体の集約のために固有の値を選択するこの技法は、データベースエンジンによって典型的に提供される、平均、収集、相関、共分散、密度、中央値、階数、百分位数、標準偏差、分散といった、様々な集約関数の有用性を拡張するために適用することができる。
【００３０】
SQL実装
演算SUM_DISTINCTおよび演算AVG_DISTINCTについてSQLで表現することができるRAAの一実装が存在する。この実装では、固定長整数演算（例えば、128ビット演算）を用いてキー値および対応するレコード値の知識を新しい値、例えば、128ビット値に、結果として得られる値セットが実際には、Raw値ごとのみならず、キーごとに固有になるように、変換する。これにより、基礎をなすSQLエンジンの組み込みSUM（DISTINCT（））の使用を、DISTINCTを正しいセマンティクスで、すなわち、合計される列のRaw値に基づいてではなく、問題となるキーに基づいて適用するのに用いることが可能になる。この実装では、均一ハッシュを用いてキー値を乱数値に変換し、次いで、固有のキー値・レコード値算出するために、加算を用いて乱数値を符号化してハッシュにする。次いで、集約合計が必要とされるときに複合値からハッシュを除去するのに減算が利用される。
【００３１】
（存在するが、一般には、SQL方言ごとに異なる名前を有する）均一ハッシュ関数「HASH」が存在するものと仮定すると、キーKを用いる結合全体にわたる式Vの固有の値の和を算出する擬似SQLは以下のようになる。
0006517930.tif 000008
【００３２】
また、Kに基づく結合全体の平均Vの算出は以下のようになるはずである。
0006517930.tif 000009
【００３３】
集約される値が整数ではない場合、その値を、符号化して複合キー値にするために整数に変換し、次いで複合後に逆変換することが必要になるはずであり、これには、値の範囲およびそれらの値で必要とされる精度に関する追加情報が必要となりうる。
【００３４】
256ビット整数を用いたSQL実装については、この実装は、オーバーフローを気にせずに用いることができる。しかし、128ビット実装を用いた場合、ハッシュから複合値を算出するのに、データセット、可能な値の範囲、およびデータセット内の固有の値の数に関する多少の事前知識が必要である。データベースサーバがネイティブ実装を提供しない場合には、これが、多くの用途で、正確さの点でネイティブ実装と等価となるであろう。
【００３５】
128ビット実装を用いた場合、ハッシュ関数によって生成されるビット数は制限され、本質的には、キーをNビット空間にマップすることができる均一ハッシュ関数h（K,N）が作成される。コリジョンの確率を最小限に抑えるために可能な限り多くのビットをNに割り振ることが望ましい。A個の固有の値を有するデータセットにおいては、ハッシュ値の和をA回求めることが必要となり、これは最大和がA×2Nになるはずであることを意味する。よって、Nを選択する場合、それは、計算処理のための最大ビット数（本例では128）からlog2（A）を減じたものに等しいはずである。
【００３６】
Nが選択された後で、コリジョンの確率を以下のように算出することができる。
0006517930.tif 000010
【００３７】
SQL実装がNをどのように選択することになるかの例として、上記の式を用いて、所与のサイズのセットについてのコリジョンの確率を計算し、そうしたセットが、結果の和を求めるのに用いられるはずの残りのビットをオーバーフローさせることになるかどうかの判定も行う、以下の「C」プログラムを作成することができる。
0006517930.tif 000011
0006517930.tif 000012
【００３８】
以下の表3は上記プログラムを用いて生成されたものであり、コリジョンの可能性と、ハッシュ空間に割り振られたビット数との関係を示している。SQLの実装では、この情報を用いて、問合せされるデータに適したNを選択することができる。
【００３９】
【表３】
0006517930.tif 000013
【００４０】
ネイティブ実装
RAAのネイティブ実装では、問合せされる全データセットにアクセスすることができ、SQL実装について上述したような複合値の構築に頼らなくても多種多様な集約関数全体にわたる集約のための固有の値の正確な選択を行うことができる。よってネイティブ実装は理論的にはSQL実装よりも単純である。
【００４１】
具体的なネイティブ実装の詳細は異なる。というのは、各ネイティブ実装は、既存のデータベースエンジンの拡張として提供されることになり、そのため、各データベースエンジンに固有の方法によってデータにアクセスすることができるからである。しかし、RAAを実装するための一般的な技法は各インスタンスにおいて同じになる。一般に、そうした実装は、プロセッサ、例えばデータベースエンジンのプロセッサが、集約算出命令のコレクションにアクセスし、かつ、プロセッサによって実行される場合に、プロセッサに、各所与のキー値の最初のインスタンスだけを検査すること、および固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用することを行わせる命令を、集約算出命令のコレクションの中から選択するためのプロセスを含む。プロセッサがデータベースエンジンのプロセッサである場合、集約算出命令のコレクションはクライアント機器によってデータベースエンジンに提供されてよい。別の態様では、集約算出命令のコレクションは、データベースエンジンによってソースコードまたはコンパイル済みコードとしてロードされている。さらに別の態様では、集約算出命令のコレクションは、データベースエンジンの構築において他の命令と一緒に組み合わされる。
【００４２】
いくつかの態様では、そうした実装は、サーバ機器がユーザ定義のライブラリにアクセスするためのプロセスを含み、サーバ機器のプロセッサによって実行される場合に、サーバ機器に、所与のキー値の最初のインスタンスだけを検査すること、および固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用することを行わせる命令を、ユーザ定義のライブラリは含む。
【００４３】
検査および利用に関与する具体的な工程は、例えば、実行される特定の集約関数によって異なる。集約算出命令のコレクション、例えば上述のユーザ定義のライブラリは、データベースメモリに、または、適切なプロセッサ、例えばデータベースエンジンのプロセッサおよび/もしくはサーバ機器のプロセッサからアクセスできる任意の他の適切な場所に記憶されていてよい。
【００４４】
例えば、あるオープン・ソース・データベース・エンジンにおいて、「分散」および他の集約の関数を提供するために、単一の共有ライブラリが、例えば次のようなSQL命令文によってロードされるべき集約関数ごとに以下の関数を実装するターゲットプラットフォームのために構築されたとする。
0006517930.tif 000014
【００４５】
以下の関数が共有ライブラリに付加されている。
0006517930.tif 000015
【００４６】
ここでの重要な関数はvariance_distinct_on_key_addであり、この関数は、結果セット内の行ごとに、DISTINCTの主キーの値および集約すべきフィールドの値を渡されることになる。
【００４７】
この関数は、最初に所与の値の主キーを有する行に遭遇すると、集約を表すデータ構造に新しい要素を追加し、この要素は、主キーの値とフィールドの値の両方を記憶している。
【００４８】
同じ値の主キーを有する後続の行ごとに、集約すべきフィールドの値が同じである場合には、その値は無視される。同じ値の主キーでこの値が異なる場合、エラーにフラグが立てられる。
【００４９】
variance_distinct_on_keyは、集約データ構造内の記憶された値に基づいて分散を実際に算出して返し、deinit関数は、集約データ構造の記憶と関連付けられたリソースがあれば解放する。
【００５０】
ある特定の種類の集約はこのプロセスの最適化に適しており、例えば、sum_distinct_on_keyは累積を維持することができ、集約データ構造全体を記憶しなくてもよい。
【００５１】
方法、システム、および機器
次に、本開示の例示的な方法、システム、および機器について各図を参照して説明する。
【００５２】
図1は、一例示的態様による、1つまたは複数のデータベースに問合せするための例示的システムのブロック図である。システムは、クライアント機器102と、データネットワーク104と、1つまたは複数のサーバ106と、データベース108、110とを含む。
【００５３】
クライアント機器102は、パーソナルコンピュータ、ラップトップコンピュータ、計算処理能力を備えた携帯電話機、または任意の他の種類の機器を含む、任意の種類のコンピューティングデバイスとすることができる。クライアント機器102は、特に、デバイスハードウェア120、ソフトウェアアプリケーション122、他のアプリケーション、通信クライアント、出力機器（例えばディスプレイ）、および入力機器（例えばキーボード、マウス、タッチスクリーン）などを含む。いくつかの態様では、クライアント機器102は出力機器と入力機器の両方として機能することができる。
【００５４】
デバイスハードウェア120は、プロセッサやメモリといった物理コンピュータ構成要素を含む。ソフトウェアアプリケーション122は、1つまたは複数のデータベース108、110に問合せするための入力を受け取るように構成されている。様々な態様によれば、ソフトウェアアプリケーション122は、クライアント機器102のOS（オペレーティングシステム）で実装することもでき、クライアント機器102上にインストールされた独立型アプリケーションとして実装することもできる。一態様では、ソフトウェアアプリケーション122はウェブ・ブラウザ・アプリケーションである。
【００５５】
データネットワーク104は、特に、インターネットネットワーク（例えば、広域ネットワーク（WAN）やローカル・エリア・ネットワーク（LAN））、有線もしくは無線ネットワーク、または携帯電話網を含む、任意の種類の通信ネットワークとすることができる。
【００５６】
クライアント機器102は、データネットワーク104を介してサーバ106と通信するように構成されている。サーバ106は、クライアント機器102から受信した入力に基づいてデータベース108、110に対して問合せを生成するように構成されているプロセッサによって実行されるソフトウェアアプリケーションを含む。サーバ106は、データベース108、110と通信状態にある。データベース108、110は、データを記憶するように構成されている。データベース108、110は、特に、関係データベース、非関係データベース、ファイルベースのデータベース、および/または非ファイルベースのデータベースを含む、任意の種類のデータベースとすることができる。
【００５７】
図2は、一例示的態様による、1つまたは複数のデータベースに問合せするように構成されたコンピューティングデバイス200の構成要素の配置のブロック図である。図示のように、コンピューティングデバイス200は、（図示されていない）他の構成要素の中でも特に、プロセッサ202と、メモリ204とを含む。一態様では、コンピューティングデバイス200は、クライアント機器102を構成する。別の態様では、コンピューティングデバイス200は、サーバ106を構成する。
【００５８】
メモリ204は、インストール済みアプリケーション210、オペレーティングシステム208、およびソフトウェアアプリケーション222を含む、プロセッサ202によって実行される様々なアプリケーションを含む。コンピューティングデバイス200がクライアント機器102を構成する態様では、ソフトウェアアプリケーション222は、ウェブ・ブラウザ・アプリケーションを含む。コンピューティングデバイス200がサーバ106を構成する態様では、ソフトウェアアプリケーション222は、データベース問合せを受信し、実行し、かつ/または問合せ入力を受信し、問合せ入力に基づいてデータベース問合せを生成し、データベース問合せを実行するように構成されたソフトウェアアプリケーションを含む。
【００５９】
図3は、一態様による、コンピューティングデバイス300のための例示的な機能構成要素のブロック図である。コンピューティングデバイス300の1つの具体例が例示されている。コンピューティングデバイス300の他の多くの態様も用いられてよい。一態様では、コンピューティングデバイス300は、クライアント機器102を構成する。別の態様では、コンピューティングデバイス300は、サーバ106を構成する。
【００６０】
図3の例示の態様では、コンピューティングデバイス300は、1つまたは複数のプロセッサ311と、メモリ312と、ネットワークインターフェース313と、1つまたは複数の記憶装置314と、電源315と、出力機器360と、入力機器380とを含む。またコンピューティングデバイス300は、オペレーティングシステム318および通信クライアント340も含む。各構成要素311、312、313、314、315、360、380、318、および340は、任意の動作可能な方法での構成要素間通信のために、物理的に、通信可能に、かつ/または動作可能に相互接続されている。
【００６１】
例示のように、プロセッサ311は、機能を実現し、かつ/またはコンピューティングデバイス300内で実行するための命令を処理するように構成されている。プロセッサ311は、メモリ312に記憶された命令または記憶装置314上に記憶された命令を実行する。メモリ312は、非一時的なコンピュータ可読記憶媒体とすることができ、動作時にコンピューティングデバイス300内で情報を記憶するように構成されている。いくつかの態様では、メモリ312は、コンピューティングデバイス300の電源が切られたときに維持されない情報のための一時記憶領域を含む。そうした一時記憶の例には、ランダム・アクセス・メモリ（RAM）、ダイナミック・ランダム・アクセス・メモリ（DRAM）、スタティック・ランダム・アクセス・メモリ（SRAM）といった揮発性メモリが含まれる。メモリ312は、プロセッサ311が実行するためのプログラム命令を維持する。
【００６２】
また記憶装置314は、1つまたは複数の非一時的なコンピュータ可読記憶媒体も含む。記憶装置314は、一般に、メモリ312よりも大量の情報を記憶するように構成されている。記憶装置314はさらに、情報の長期記憶のために構成されていてもよい。いくつかの例では、記憶装置314は、不揮発性記憶素子を含む。不揮発性記憶素子の非限定的な例には、磁気ハードディスク、光ディスク、フロッピーディスク、フラッシュメモリ、または電気的プログラム可能メモリ（EPROM）や電気的消去可能プログラム可能（EEPROM）メモリの形のものが含まれる。
【００６３】
コンピューティングデバイス300は、ネットワークインターフェース313を用い、1つまたは複数のネットワークを介して、図1に示すサーバ106および/またはデータベース108、110といった外部機器と通信する。ネットワークインターフェース313は、イーサネットカードといったネットワーク・インターフェース・カード、光送受信機、無線周波数送受信機、または情報を送受信することができる任意の他の種類の機器とすることができる。ネットワークインターフェースの他の非限定的な例には、無線ネットワークインターフェース、例えば、Bluetooth（登録商標）や、モバイル・コンピューティング・デバイスの4G無線機およびWi-Fi（登録商標）無線機や、USB（Universal Serial Bus）が含まれる。いくつかの態様では、コンピューティングデバイス300は、ネットワークインターフェース313を用いて、外部機器、別の携帯電話機、あるいは他のネットワーク接続されたコンピューティングデバイスと無線通信する。
【００６４】
本明細書に記載する無線ネットワークには、それだけに限らないが、CDMA（Code Divisional Multiple Access、符号分割多元接続）ネットワーク、GSM（Group Special MobileまたはGlobal System for Mobile Communications）およびGPRS（General Packet Radio Service）ネットワーク、EDGE（Enhanced Data-rates for Global Evolution）やUMTS（Universal Mobile Telecommunications Systems）といった3G（third-generation、第3世代）ネットワーク、Mobile WiMaxやLTE（Long Term Evolution）といった4G（fourth-generation、第4世代）ネットワーク、IMT-Advanced（International Mobile Telecommunications-Advancedネットワーク、ならびに現在の4G/IMT-Advanced規格の能力を超えた将来の5G（fifth-generation、第5世代）ネットワークが含まれる。無線ネットワークの例には、例えば、BLUETOOTHネットワーク、無線パーソナル・エリア・ネットワーク、無線802.11ローカル・エリア・ネットワーク（LAN）、および/または無線電話網（例えば、セルラ、PCS、GSMネットワーク）が含まれる。
【００６５】
コンピューティングデバイス300は、1つまたは複数の入力機器380を含む。入力機器380は、触覚、音声、映像、その他の感知フィードバックによって、ユーザから入力を受け取るように構成されている。入力機器380の非限定的な例には、存在感知画面、マウス、キーボード、音声応答システム、カメラ302、ビデオレコーダ304、マイクロフォン306、GPSモジュール308、あるいはユーザからのコマンドを検出し、または環境を感知するための任意の他の種類の機器が含まれる。いくつかの例では、存在感知画面は、タッチスクリーンを含む。
【００６６】
コンピューティングデバイス300には1つまたは複数の出力機器360も含まれる。出力機器360は、触覚刺激、音声刺激、および/または映像刺激を用いてユーザに出力を提供するように構成されている。出力機器360は、表示画面（存在感知画面の一部）、サウンドカード、ビデオ・グラフィックス・アダプタ・カード、または信号を人間もしくは機械が理解できる適切な形に変換するための任意の他の種類の機器を含むことができる。出力機器360の別の例には、スピーカ、ブラウン管（CRT）モニタ、液晶ディスプレイ（LCD）、あるいはユーザへの理解可能な出力を生成することができる任意の他の種類の機器が含まれる。いくつかの態様では、機器は出力機器と入力機器の両方として機能することができる。
【００６７】
コンピューティングデバイス300は、コンピューティングデバイス300に電力を提供する1つまたは複数の電源315を含む。電源315の非限定的な例には、使い捨て電源、充電式電源、および/またはニッケルカドミウム、リチウムイオン、もしくは他の適切な材料で作られた電源が含まれる。コンピューティングデバイス300は、Windows（登録商標）オペレーティングシステム、Apple（登録商標）OSオペレーティングシステム、iOS（登録商標）オペレーティングシステム、Android（登録商標）オペレーティングシステムといったオペレーティングシステム318を含む。オペレーティングシステム318は、コンピューティングデバイス300の構成要素の動作を制御する。例えば、オペレーティングシステム318は、通信クライアント340と、プロセッサ311、メモリ312、ネットワークインターフェース313、記憶装置314、入力機器380、出力機器360、および電源315との対話を円滑に行わせる。
【００６８】
やはり図3に例示されているように、コンピューティングデバイス300は、通信クライアント340を含む。通信クライアント340は、通信モジュール345を含む。通信クライアント340および通信モジュール345は各々、コンピューティングデバイス300が実行可能なプログラム命令および/またはデータを含む。例えば、一態様では、通信モジュール345は、コンピューティングデバイス300上で実行されている通信クライアント340に、本開示に記載される動作およびアクションのうちの1つまたは複数を行わせる命令を含む。いくつかの態様では、通信クライアント340および/または通信モジュール345は、コンピューティングデバイス300上で実行されるオペレーティングシステム318の一部を形成する。
【００６９】
本明細書で詳細に説明されているように、本開示の1つまたは複数の態様は、データベース問合せを用いて集約関数を実行するための方法および関連システムを提供する。例えば、いくつかの態様では、本開示は、データベース問合せを用いて集約関数を実行するための方法を提供し、本方法は、サーバ106においてデータベース問合せを受信する工程を含み、データベース問合せは、複数のデータベーステーブル、例えば、データベース108、110のデータベーステーブルを結合し、かつ、1つまたは複数のデータベース108、110に対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む。サーバ106は次いで、1つまたは複数のデータベース108、110に対してデータベース問合せを実行し、データベース問合せの結果を、データネットワーク104を通じてクライアント機器102に提供する。上述のように、クライアント機器102は、第1のコンピューティングデバイス200またはその構成要素とすることができる。あるいは、またはこれに加えて、第2のコンピューティングデバイス200がサーバ106を含む。同様に、クライアント機器102は、本明細書に記載するように、第1のコンピューティングデバイス300、またはその構成要素であってもよい。あるいは、またはこれに加えて、第2のコンピューティングデバイス300がサーバ106を含む。
【００７０】
1つまたは複数のデータベース108、110は、関係データベースとすることができる。いくつかの態様では、データベース問合せはSQL問合せである。いくつかのそうした態様では、本開示による方法は、レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算することを含む、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成する工程、を含む。
【００７１】
固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数である場合、総和関数は、固有のキー値・レコード値複合整数の和を求める工程と、固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と、を含むことができる。
【００７２】
固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数である場合、平均関数は、固有のキー値・レコード値複合整数の和を求める工程と、固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と、を含むことができる。
【００７３】
上述の固有のキー値・レコード値複合整数の生成を伴う方法では、一般に、集約すべきすべてのレコード値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を利用すべきである。本明細書で前述したように、128ビットの演算精度しかないデータベースサーバといった、限られた精度を有する機器においてRAAを実装する場合、コリジョンを回避するために、データセット、可能な値の範囲、およびデータセット内の固有の値の数に関する多少の事前知識が必要となりうる。
【００７４】
他の態様では、本開示は、データベース問合せを用いて集約関数を実行するための方法を提供し、本方法は、データネットワーク104を通じてクライアント機器102からの問合せ入力をサーバ106で受信する工程を含む。サーバ106は次いで、問合せ入力ベースに基づいてデータベース問合せを生成し、データベース問合せは、複数のデータベーステーブル、例えば、データベース108、110のデータベーステーブルを結合し、かつ、1つまたは複数のデータベース108、110に対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む。サーバ106は次いで、1つまたは複数のデータベース108、110に対してデータベース問合せを実行し、データベース問合せの結果を、データネットワーク104を通じてクライアント機器102に返す。
【００７５】
上述のように、クライアント機器102は、第1のコンピューティングデバイス200またはその構成要素とすることができる。あるいは、またはこれに加えて、第2のコンピューティングデバイス200がサーバ106を含む。同様に、クライアント機器102は、本明細書に記載するように、第1のコンピューティングデバイス300、またはその構成要素であってもよい。あるいは、またはこれに加えて、第2のコンピューティングデバイス300がサーバ106を含む。
【００７６】
1つまたは複数のデータベース108、110は、関係データベースとすることができる。いくつかの態様では、データベース問合せはSQL問合せである。いくつかのそうした態様では、本開示による方法は、レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用すること、および固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算することを含む、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成する工程、を含む。
【００７７】
固有の集約関数が、固有のキーに対応するレコード値の和を算出するように構成された総和関数である場合、この総和関数は、固有のキー値・レコード値複合整数の和を求める工程と、固有のキーに対応するレコード値の和を提供するために乱数値の和を減算する工程と、を含むことができる。
【００７８】
固有の集約関数が、固有のキーに対応するレコード値の平均値を算出するように構成された平均関数である場合、平均関数は、固有のキー値・レコード値複合整数の和を求める工程と、固有のキーに対応するレコード値の和を獲得するために乱数値の和を減算する工程と、固有のキーに対応するレコード値の平均値を提供するために、固有のキーに対応するレコード値の和を固有のキーの数で割る工程と、を含むことができる。
【００７９】
上述の固有のキー値・レコード値複合整数の生成を伴う方法では、一般に、集約すべきすべての値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型を利用すべきである。本明細書において前述したように、128ビット実装を用いる場合には、コリジョンを回避するために、データセット、可能な値の範囲、およびデータセット内の固有の値の数に関する多少の事前知識が必要となりうる。
【００８０】
上述のように、いくつかの態様では、本開示は、データベース問合せを用いて集約関数を実行するための方法を提供し、本方法は、サーバ106においてデータベース問合せを受信する工程を含み、データベース問合せは、複数のデータベーステーブル、例えば、データベース108、110のデータベーステーブルを結合し、かつ、1つまたは複数のデータベース108、110に対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む。サーバ106は次いで、1つまたは複数のデータベース108、110に対してデータベース問合せを実行し、データベース問合せの結果を、データネットワーク104を通じてクライアント機器102に提供する。
【００８１】
1つまたは複数のデータベース108、110に対してデータベース問合せを実行する工程は、いくつかの態様では、集約算出命令のコレクションにアクセスすること；およびサーバ106によって実行される場合に、サーバ106に、各所与のキー値の最初のインスタンスのみを検査すること、および固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用することを行わせる命令を、集約算出命令のコレクションの中から選択すること、を含む。いくつかの態様では、この工程は、ユーザ定義のライブラリにアクセスすることを含み、サーバ106と関連付けられたプロセッサによって実行される場合に、サーバ106に、各所与のキー値の最初のインスタンスのみを検査すること、および固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用することを行わせる命令を、ユーザ定義のライブラリは含む。いくつかの態様では、この工程は、各所与のキー値の最初のインスタンス、およびそれに対応する集約すべきレコード値のみを含むデータ構造を提供することを含むことができる。そうした態様では、サーバはその後、データ構造のレコード値を集約することができる。サーバ106と関連付けられたプロセッサは、例えば、それぞれ、コンピューティングデバイス200のプロセッサ202やコンピューティングデバイス300のプロセッサ311とすることができる。
【００８２】
上述のように、クライアント機器102は、第1のコンピューティングデバイス200またはその構成要素とすることができる。あるいは、またはこれに加えて、第2のコンピューティングデバイス200がサーバ106を含む。同様に、クライアント機器102は、本明細書に記載するように、第1のコンピューティングデバイス300、またはその構成要素であってもよい。あるいは、またはこれに加えて、第2のコンピューティングデバイス300がサーバ106を含む。
【００８３】
ユーザ定義のライブラリは、データベースメモリ、例えば、1つまたは複数のデータベース108、110のデータベースメモリや、サーバ106がアクセスすることのできる任意の他の適切な場所に記憶されていてよい。
【００８４】
上記に関連して、いくつかの態様では、本開示は、データベース問合せを用いて集約関数の実行を容易にするための方法を提供し、データベース問合せは、複数のデータベーステーブル、例えば、データベース108、110のデータベーステーブルを結合し、かつ、1つまたは複数のデータベース108、110に対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含み、本方法は、サーバ106からアクセス可能な集約算出命令のコレクション、例えばユーザ定義のライブラリを提供する工程を含み、サーバ106と関連付けられたプロセッサによって実行される場合に、サーバ106に、各所与のキー値の最初のインスタンスのみを検査すること、および固有の集約関数において所与のキー値の最初のインスタンスに対応するレコード値を利用することを行わせる命令を、集約算出命令のコレクション、例えばユーザ定義のライブラリは含む。いくつかの態様では、この工程は、各所与のキー値の最初のインスタンス、およびそれに対応する集約すべきレコード値のみを含むデータ構造を提供することを含むことができる。そうした態様では、サーバはその後、データ構造のレコード値を集約することができる。
【００８５】
上述のように、いくつかのそうした態様では、本開示による方法は、固有の集約関数によって、集約すべきレコード値ごとに固有のキー値・レコード値複合整数を生成する工程を含む。したがって、いくつかの態様では、本開示は、集約において用いるための固有のキー値・レコード値複合整数を生成するための方法を提供し、本方法は、レコード値に対応するキー値を乱数値に変換する均一ハッシュ関数を適用する工程と、固有のキー値・レコード値複合整数を提供するために乱数値にレコード値を加算する工程と、を含み、適用する工程および加算する工程は、サーバ106と関連付けられたプロセッサ、例えば本明細書に記載するプロセッサ202やプロセッサ311によって実行される。いくつかの態様では、そうした方法は、集約すべきすべての値の全体の総和を含めるのに十分な固有のキー値・レコード値複合整数のビット深度データ型の選択を含むことになる。
【００８６】
上記の方法は、クライアント機器102の視点から説明することもできる。例えば、いくつかの態様では、本開示は、サーバ106によって受信されると、サーバ106に、1つまたは複数のデータベース108、110に対するデータベース問合せを実行させる、データベース問合せを、データネットワーク104を通じてクライアント機器102からサーバ106へ送信する工程を含む方法を提供し、データベース問合せは、複数のデータベーステーブル、例えば、データベース108、110の複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベース108、110に対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値のみを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む。本方法は、クライアント機器102においてサーバ106からデータベース問合せの結果を受信する工程をさらに含む。
【００８７】
同様に、いくつかの態様では、本開示は、サーバ106によって受信されると、サーバ106に、複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベースに対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値だけを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む、データベース問合せを、問合せ入力に基づいて生成させ、かつ、1つまたは複数のデータベースに対してデータベース問合せを実行させる、問合せ入力を、データネットワーク104を通じてクライアント機器102からサーバ106へ送信する工程を含む方法を提供する。本方法は、クライアント機器102においてサーバ106からデータベース問合せの結果を受信する工程をさらに含む。
【００８８】
本明細書に記載する方法の様々な工程のうちの1つまたは複数を実装する命令は、当分野で公知の、かつ/または本明細書に記載する任意の適切な非一時的な記録媒体において具現化されてよい。
【００８９】
いくつかの態様では、本明細書に記載する方法の様々な工程のうちの1つまたは複数が、1つまたは複数のソフトウェアアプリケーション、例えば、本明細書に記載するコンピューティングデバイス上で動作し、かつ/または本明細書に記載する非一時的なコンピュータ可読記憶媒体上に記憶されるように設計されたソフトウェアアプリケーションによって実行されてよい。いくつかの態様では、1つまたは複数のソフトウェアアプリケーションは、本明細書に記載する1つまたは複数のデータベースと関連付けられたメタデータ、例えば、1つまたは複数のデータベースのスキーマを記述するメタデータを備え、またはそうしたメタデータにアクセスするように構成されている。いくつかの態様では、1つまたは複数のデータベースと関連付けられたメタデータは、本明細書に記載する固有の集約関数を含むデータベース問合せの形成および/または実行において利用される。例えば、いくつかの態様では、特定の固有の集約関数が、1つまたは複数のデータベースと関連付けられたメタデータに基づいて選択され、かつ/または、例えばユーザが出した質問に応答して実施される。そうしたメタデータには、例えば、1つまたは複数のデータベース内のテーブルの構造および/または関係に関する情報が含まれうる。
【００９０】
本開示は、機能的に関係のある本明細書に記載する複数の個別構成要素を組み込んだシステムおよびサブシステムを提供することも理解されるであろう。例えば、いくつかの態様では、本開示のシステムは、クライアント機器102と、（例えばサーバハードウェアや、例えば1つまたは複数の関連付けられたプロセッサを含む）サーバ106と、1つまたは複数のデータベース108、110とを含み、クライアント機器102は、サーバ106によって受信されると、サーバ106に、1つまたは複数のデータベース108、110に対するデータベース問合せを実行させる、データベース問合せを、データネットワーク104を通じてクライアント機器102からサーバ106へ送信し、データベース問合せは、複数のデータベーステーブル、例えば、データベース108、110の1つまたは複数のデータベーステーブルを結合し、かつ、1つまたは複数のデータベース108、110に対して実行される場合に、テーブルを結合するための固有のキーに対応するデータベースレコードの値だけを、結合されるテーブルの濃度にかかわらず集約する固有の集約関数を含む。システムは、サーバ106が、データネットワーク、例えばデータネットワーク104を通じてクライアント機器102へデータベース問合せの結果を返すようにさらに構成されている。
【００９１】
前述の発明は理解を明確にするための説明および例としてある程度詳細に説明されているが、本開示の教示を考慮すれば当業者には、添付の特許請求の範囲の趣旨または範囲を逸脱することなく前述の発明にいくつかの変更および改変を加えることができることが、容易に明らかになるはずである。
【００９２】
したがって、以上の説明は単に本発明の原理を説明しているにすぎない。当業者であれば、本明細書では明示的に説明も図示もされていないが、本発明の原理を具現化し、本発明の趣旨および範囲に含まれる様々な構成を考案することができることが理解されるであろう。さらに、本明細書に記載するすべての例および条件付きの言葉は、主として、読者が本発明の原理を理解するのを支援するためのものであり、明記した例および条件だけに限定するものではない。さらに、本発明の原理、局面、および態様ならびにそれらの具体例を記述する本明細書のすべての表現は、それらの構造的均等物と機能的均等物の両方を包含するものであることが意図されている。加えて、そうした均等物は、現在公知である均等物と、将来において開発される均等物、すなわち、構造にかかわらず、同じ機能を果たす開発される任意の要素の両方を含むものであることが意図されている。したがって、本発明の範囲は、本明細書において図示し、説明した例示的態様だけに限定すべきではない。そうではなく、本発明の範囲および趣旨は添付の特許請求の範囲によって具現化されるものである。
【図１】
0006517930.tif 000016
【図２】
0006517930.tif 000017
【図３】
0006517930.tif 000018