特許第6392340号(P6392340)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ロジックブロックス,インコーポレイテッドの特許一覧

特許6392340データベーステーブルのサンプルを生成する方法、システムおよびコンピュータプログラム製品
<>
  • 特許6392340-データベーステーブルのサンプルを生成する方法、システムおよびコンピュータプログラム製品 図000002
  • 特許6392340-データベーステーブルのサンプルを生成する方法、システムおよびコンピュータプログラム製品 図000003
  • 特許6392340-データベーステーブルのサンプルを生成する方法、システムおよびコンピュータプログラム製品 図000004
  • 特許6392340-データベーステーブルのサンプルを生成する方法、システムおよびコンピュータプログラム製品 図000005
  • 特許6392340-データベーステーブルのサンプルを生成する方法、システムおよびコンピュータプログラム製品 図000006
  • 特許6392340-データベーステーブルのサンプルを生成する方法、システムおよびコンピュータプログラム製品 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6392340
(24)【登録日】2018年8月31日
(45)【発行日】2018年9月19日
(54)【発明の名称】データベーステーブルのサンプルを生成する方法、システムおよびコンピュータプログラム製品
(51)【国際特許分類】
   G06F 12/00 20060101AFI20180910BHJP
   G06F 17/30 20060101ALI20180910BHJP
【FI】
   G06F12/00 513D
   G06F17/30 340D
   G06F17/30 180D
【請求項の数】18
【全頁数】19
(21)【出願番号】特願2016-525365(P2016-525365)
(86)(22)【出願日】2014年6月26日
(65)【公表番号】特表2016-532938(P2016-532938A)
(43)【公表日】2016年10月20日
(86)【国際出願番号】US2014044271
(87)【国際公開番号】WO2015006061
(87)【国際公開日】20150115
【審査請求日】2017年4月12日
(31)【優先権主張番号】61/844,045
(32)【優先日】2013年7月9日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】515081464
【氏名又は名称】ロジックブロックス,インコーポレイテッド
【氏名又は名称原語表記】LOGICBLOX,INC.
(74)【代理人】
【識別番号】100078282
【弁理士】
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【弁理士】
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【弁理士】
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【弁理士】
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【弁護士】
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】フェルトハイゼン, トッド エル.
【審査官】 田中 啓介
(56)【参考文献】
【文献】 米国特許出願公開第2013/0024430(US,A1)
【文献】 特開平11−353331(JP,A)
【文献】 特開2012−079078(JP,A)
【文献】 米国特許出願公開第2002/0178151(US,A1)
【文献】 PETER J. HAAS, JEFFREY F. NAUGHTON, S. SESHADRI, ARUN N. SWAMI,Selectivity and Cost Estimation for Joins Based on Random Sampling,JOURNAL OF COMPUTER AND SYSTEM SCIENCES,米国,Academic Press,1996年 6月,Volume 52, Issue 3,pp.550-569
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00、17/30
(57)【特許請求の範囲】
【請求項1】
データベーステーブルのサンプルを生成する方法であって、前記方法は、
プロセッサが、データベーステーブル内の2つ以上の列を識別することであって、前記2つ以上の列は、1つ以上の他のテーブル内に対応する列を有し、前記2つ以上の列は、第1の列および第2の列を含む、ことと、
前記プロセッサが、1つ以上のハッシュ関数を、前記識別された列の各々のドメインに適用することであって、前記適用することは、第1のハッシュ関数を、前記第1の列のドメインに適用することと、第2のハッシュ関数を、前記第2の列のドメインに適用することとを含む、ことと、
前記プロセッサが、前記1つ以上のハッシュ関数を適用した結果に基づいて、前記データベーステーブル内の行のサブセットを選択することであって、前記選択することは、前記第1のハッシュ関数の結果が第1の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することと、前記第2のハッシュ関数の結果が第2の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することとを含む、ことと、
前記プロセッサが、前記データベーステーブルに対応するサンプルデータベーステーブルを生成することであって、前記サンプルデータベーステーブルは、前記データベーステーブル内の前記選択された行のサブセットを含む、ことと、
前記プロセッサが、前記サンプルデータベーステーブルにわたるデータベースクエリの濃度を1/v倍にスケーリングすることによって、前記データベーステーブルにわたる前記データベースクエリの濃度を推定することであって、vは、前記データベーステーブルに対する前記データベーステーブル内の前記選択された行のサブセットのボリュームである、ことと
を含む、方法。
【請求項2】
前記プロセッサが、クエリを前記サンプルデータベーステーブルに対して実行することをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のハッシュ関数は、前記第2のハッシュ関数と異なる、請求項1に記載の方法。
【請求項4】
前記第1のハッシュ関数は、前記第2のハッシュ関数と同じである、請求項1に記載の方法。
【請求項5】
前記第1の数値的閾値は、前記第2の数値的閾値と異なる、請求項1に記載の方法。
【請求項6】
前記第1の数値的閾値は、前記第2の数値的閾値と同じである、請求項1に記載の方法。
【請求項7】
前記データベーステーブルおよび前記2つ以上の列は、前記データベースクエリ内で言及されており、前記識別すること、適用すること、選択すること、および生成することは、前記データベースクエリ内で結合されている前記データベーステーブルおよび列の全てに対して実施される、請求項1に記載の方法。
【請求項8】
前記方法は、前記プロセッサが、前記サンプルデータベーステーブルにわたる前記データベースクエリを計算することをさらに含む、請求項7に記載の方法。
【請求項9】
前記プロセッサが、前記データベースクエリを、2つ以上のサブクエリの直和として表現することと、
前記プロセッサが、各サブクエリに対して
前記サンプルデータベーステーブルにわたる前記サブクエリを計算すること、および
前記データベースクエリの濃度を、前記選択された行のサブセットのボリュームによって除算される、前記サンプルデータベーステーブルにわたる前記サブクエリの濃度として推定すること
を実施することと、
前記プロセッサが、結果として生じる推定値を加算することと
をさらに含む、請求項7に記載の方法。
【請求項10】
データベーステーブルのサンプルを生成するためのシステムであって、前記システムは、
コンピュータ読み取り可能な命令を有するメモリと、
プロセッサと
を備え、
前記プロセッサは、
データベーステーブル内の2つ以上の列を識別することであって、前記2つ以上の列は、1つ以上の他のテーブル内に対応する列を有し、前記2つ以上の列は、第1の列および第2の列を含む、ことと、
1つ以上のハッシュ関数を、前記識別された列の各々のドメインに適用することであって、前記適用することは、第1のハッシュ関数を、前記第1の列のドメインに適用することと、第2のハッシュ関数を、前記第2の列のドメインに適用することとを含む、ことと、
前記1つ以上のハッシュ関数を適用した結果に基づいて、前記データベーステーブル内の行のサブセットを選択することであって、前記選択することは、前記第1のハッシュ関数の結果が第1の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することと、前記第2のハッシュ関数の結果が第2の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することとを含む、ことと、
前記データベーステーブルに対応するサンプルデータベーステーブルを生成することであって、前記サンプルデータベーステーブルは、前記データベーステーブル内の前記選択された行のサブセットを含む、ことと、
前記サンプルデータベーステーブルにわたるデータベースクエリの濃度を1/v倍にスケーリングすることによって、前記データベーステーブルにわたる前記データベースクエリの濃度を推定することであって、vは、前記データベーステーブルに対する前記データベーステーブル内の前記選択された行のサブセットのボリュームである、ことと
を含む方法を実施するための前記コンピュータ読み取り可能な命令を実行する、システム。
【請求項11】
クエリを前記サンプルデータベーステーブルに対して実行することをさらに含む、請求項10に記載のシステム。
【請求項12】
少なくとも、前記第1のハッシュ関数が、前記第2のハッシュ関数と異なるか、または前記第1の数値的閾値が、前記第2の数値的閾値と異なる、請求項10に記載のシステム。
【請求項13】
少なくとも、前記第1のハッシュ関数が、前記第2のハッシュ関数と同じであるか、または前記第1の数値的閾値が、前記第2の数値的閾値と同じである、請求項10に記載のシステム。
【請求項14】
前記データベーステーブルおよび前記2つ以上の列は、前記データベースクエリ内で言及されており、前記識別すること、適用すること、選択すること、および生成することは、前記データベースクエリ内で言及されている前記データベーステーブルおよび列の全てに対して実施される、請求項10に記載のシステム。
【請求項15】
前記方法は、前記サンプルデータベーステーブルにわたる前記データベースクエリを計算することをさらに含む、請求項14に記載のシステム。
【請求項16】
前記方法は、
前記データベースクエリを、2つ以上のサブクエリの直和として表現することと、
各サブクエリに対して
前記サンプルデータベーステーブルにわたる前記サブクエリを計算すること、および
前記データベースクエリの濃度を、前記選択された行のサブセットのボリュームによって除算される、前記サンプルデータベーステーブルにわたる前記サブクエリの濃度として推定すること
を実施することと、
結果として生じる推定値を加算することと
をさらに含む、請求項14に記載のシステム。
【請求項17】
データベーステーブルのサンプルを生成するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、具現化されたコンピュータ読み取り可能なプログラムコードを有するコンピュータ読み取り可能な記憶媒体を備え、
前記コンピュータ読み取り可能なプログラムコードは、コンピュータプロセッサによって実行されると、
データベーステーブル内の2つ以上の列を識別することであって、前記2つ以上の列は、1つ以上の他のテーブル内に対応する列を有し、前記2つ以上の列は、第1の列および第2の列を含む、ことと、
1つ以上のハッシュ関数を、前記識別された列の各々のドメインに適用することであって、前記適用することは、第1のハッシュ関数を、前記第1の列のドメインに適用することと、第2のハッシュ関数を、前記第2の列のドメインに適用することとを含む、ことと、
前記1つ以上のハッシュ関数を適用した結果に基づいて、前記データベーステーブル内の行のサブセットを選択することであって、前記選択することは、前記第1のハッシュ関数の結果が第1の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することと、前記第2のハッシュ関数の結果が第2の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することとを含む、ことと、
前記データベーステーブルに対応するサンプルデータベーステーブルを生成することであって、前記サンプルデータベーステーブルは、前記データベーステーブル内の前記選択された行のサブセットを含む、ことと、
前記サンプルデータベーステーブルにわたるデータベースクエリの濃度を1/v倍にスケーリングすることによって、前記データベーステーブルにわたる前記データベースクエリの濃度を推定することであって、vは、前記データベーステーブルに対する前記データベーステーブル内の前記選択された行のサブセットのボリュームである、ことと
を含む方法を前記コンピュータプロセッサに実装させる、コンピュータプログラム製品。
【請求項18】
前記方法は、クエリを前記サンプルデータベーステーブルに対して実行することをさらに含む、請求項17に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の引用)
本願は、米国出願第61/844045号(2013年7月9日出願)の利益を主張し、上記出願は、その全体が参照により本明細書に引用される。
【0002】
本発明は、概して、データベース演算に関し、より具体的には、データベースのクエリサイズ推定のためのサンプルデータの提供に関する。
【背景技術】
【0003】
データベース管理システムは、ユーザが、膨大な量の情報にクエリを行うことを可能にする。所与のクエリに返答するために、データベース管理システムが、潜在的に採用し得る、多くの実行計画が存在する。クエリ最適化は、データベース管理システムが、いくつかの候補計画のコストを推定し、最低コストのものを選ぶプロセスである。
【0004】
データベースのクエリコスト推定における重要なステップは、多くの場合、データベースクエリに関連付けられる計画のコストに影響を及ぼす、中間クエリ結果のサイズの推定である。データベースシステムは、比較的少ない努力で、実際にクエリを実行することなく、正確に、これらのサイズを推定することを目標としている。いくつかの技法が、多くの場合、そのようなサイズの推定のために使用される。クエリ結果のサイズを推定するための技法の1つの一般的なクラスは、サンプリングと称される。サンプリングでは、システムは、関与するテーブルのうちの1つ以上のものからサンプルを得て、サンプルにわたって様々なクエリを実施する。サンプルにわたるクエリ結果のサイズは、適切にスケーリングされ、全データセットにわたるクエリのサイズを推定する。
【0005】
サンプリングはまた、クエリ最適化とは別の種々の種類の推定タスクのためにも使用され得る。例えば、クエリ結果のおおよその推定が、必要とされる全ての場合、好適にサイズを決定されたサンプルを処理することが、多くの場合、精度と計算時間との間の良好なバランスを提供するために使用される。
【発明の概要】
【課題を解決するための手段】
【0006】
実施形態は、データベーステーブルのサンプルを生成するための方法と、システムと、コンピュータプログラム製品とを含む。2つ以上の他のテーブル内に対応する列を有する、データベーステーブル内の2つ以上の列が、識別される。2つ以上の列は、第1の列と、第2の列とを含む。1つ以上のハッシュ関数が、識別された列の各々のドメインに適用される。適用することは、第1のハッシュ関数を、第1の列のドメインに適用することと、第2のハッシュ関数を、第2の列のドメインに適用することとを含む。データベーステーブル内の行のサブセットが、1つ以上のハッシュ関数を適用した結果に基づいて選択される。選択することは、第1のハッシュ関数の結果が第1の数値的閾値を満たす場合、データベーステーブル内の行を選択することと、第2のハッシュ関数の結果が第2の数値的閾値を満たす場合、データベーステーブル内の行を選択することとを含む。データベーステーブルに対応するサンプルデータベーステーブルが、生成される。サンプルデータベーステーブルは、データベーステーブル内の選択された行のサブセットを含む。
本明細書は、例えば、以下の項目も提供する。
(項目1)
データベーステーブルのサンプルを生成する方法であって、前記方法は、
データベーステーブル内の2つ以上の列を識別することであって、前記2つ以上の列は、1つ以上の他のテーブル内に対応する列を有し、前記2つ以上の列は、第1の列および第2の列を含む、ことと、
1つ以上のハッシュ関数を、前記識別された列の各々のドメインに適用することであって、前記適用することは、第1のハッシュ関数を、前記第1の列のドメインに適用することと、第2のハッシュ関数を、前記第2の列のドメインに適用することとを含む、ことと、
前記1つ以上のハッシュ関数を適用した結果に基づいて、前記データベーステーブル内の行のサブセットを選択することであって、前記選択することは、前記第1のハッシュ関数の結果が第1の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することと、前記第2のハッシュ関数の結果が第2の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することとを含む、ことと、
前記データベーステーブルに対応するサンプルデータベーステーブルを生成することと
を含み、
前記サンプルデータベーステーブルは、前記データベーステーブル内の前記選択された行のサブセットを含む、方法。
(項目2)
クエリを前記サンプルデータベーステーブルに対して実行することをさらに含む、項目1に記載の方法。
(項目3)
前記第1のハッシュ関数は、前記第2のハッシュ関数と異なる、項目1に記載の方法。
(項目4)
前記第1のハッシュ関数は、前記第2のハッシュ関数と同じものである、項目1に記載の方法。
(項目5)
前記第1の数値的閾値は、前記第2の数値的閾値と異なる、項目1に記載の方法。
(項目6)
前記第1の数値的閾値は、前記第2の数値的閾値と同じものである、項目1に記載の方法。
(項目7)
前記データベーステーブルおよび前記2つ以上の列は、データベースクエリ内で言及されており、前記識別すること、適用すること、選択すること、および生成することは、前記データベースクエリ内で結合されている前記データベーステーブルおよび列の全てに対して実施される、項目1に記載の方法。
(項目8)
前記方法は、前記サンプルデータベーステーブルにわたる前記データベースクエリを計算することをさらに含む、項目7に記載の方法。
(項目9)
前記データベースクエリの濃度を、前記選択された行のサブセットのボリュームによって除算される、前記サンプルデータベーステーブルにわたるデータベースクエリの濃度として推定することをさらに含む、項目8に記載の方法。
(項目10)
前記データベースクエリを、2つ以上のサブクエリの直和として表現することと、
各サブクエリに対して実施することと、
前記サンプルデータベーステーブルにわたるサブクエリを計算することと、
前記データベースクエリの濃度を、前記選択された行のサブセットのボリュームによって除算される、前記サンプルデータベーステーブルにわたる前記サブクエリの濃度として推定することと、
結果として生じる推定値を加算することと
をさらに含む、項目7に記載の方法。
(項目11)
データベーステーブルのサンプルを生成するためのシステムであって、前記システムは、
コンピュータ読み取り可能なコンピュータ命令を有するメモリと、
プロセッサと
を備え、
前記プロセッサは、
データベーステーブル内の2つ以上の列を識別することであって、前記2つ以上の列は、1つ以上の他のテーブル内に対応する列を有し、前記2つ以上の列は、第1の列および第2の列を含む、ことと、
1つ以上のハッシュ関数を、前記識別された列の各々のドメインに適用することであって、前記適用することは、第1のハッシュ関数を、前記第1の列のドメインに適用することと、第2のハッシュ関数を、前記第2の列のドメインに適用することとを含む、ことと、
前記1つ以上のハッシュ関数を適用した結果に基づいて、前記データベーステーブル内の行のサブセットを選択することであって、前記選択することは、前記第1のハッシュ関数の結果が第1の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することと、前記第2のハッシュ関数の結果が第2の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することとを含む、ことと、
前記データベーステーブルに対応するサンプルデータベーステーブルを生成することと
を含む方法を実施するための前記コンピュータ読み取り可能な命令を実行し、
前記サンプルデータベーステーブルは、前記データベーステーブル内の前記選択された行のサブセットを含む、システム。
(項目12)
クエリを前記サンプルデータベーステーブルに対して実行することをさらに含む、項目11に記載のシステム。
(項目13)
少なくとも、前記第1のハッシュ関数が、前記第2のハッシュ関数と異なるか、または前記第1の数値的閾値が、前記第2の数値的閾値と異なる、項目11に記載のシステム。
(項目14)
少なくとも、前記第1のハッシュ関数が、前記第2のハッシュ関数と同じものであるか、または前記第1の数値的閾値が、前記第2の数値的閾値と同じものである、項目11に記載のシステム。
(項目15)
前記データベーステーブルおよび前記2つ以上の列は、データベースクエリ内で言及されており、前記識別すること、適用すること、選択すること、および生成することは、前記データベースクエリ内で言及されている前記データベーステーブルおよび列の全てに対して実施される、項目11に記載のシステム。
(項目16)
前記方法は、前記サンプルデータベーステーブルにわたる前記データベースクエリを計算することをさらに含む、項目15に記載のシステム。
(項目17)
前記方法は、前記データベースクエリの濃度を、前記選択された行のサブセットのボリュームによって除算される、前記サンプルデータベーステーブルにわたる前記データベースクエリの濃度として推定することをさらに含む、項目16に記載のシステム。
(項目18)
前記方法は、
前記データベースクエリを、2つ以上のサブクエリの直和として表現することと、
各サブクエリに対して実施することと、
前記サンプルデータベーステーブルにわたる前記サブクエリを計算することと、
前記データベースクエリの濃度を、前記選択された行のサブセットのボリュームによって除算される、前記サンプルデータベーステーブルにわたる前記サブクエリの濃度として推定することと、
結果として生じる推定値を加算することと
をさらに含む、項目15に記載のシステム。
(項目19)
データベーステーブルのサンプルを生成するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、具現化されたコンピュータ読み取り可能なプログラムコードを有するコンピュータ読み取り可能な記憶媒体を備え、
前記プログラムコードは、コンピュータプロセッサによって実行されると、
データベーステーブル内の2つ以上の列を識別することであって、前記2つ以上の列は、1つ以上の他のテーブル内に対応する列を有し、前記2つ以上の列は、第1の列および第2の列を含む、ことと、
1つ以上のハッシュ関数を、前記識別された列の各々のドメインに適用することであって、前記適用することは、第1のハッシュ関数を、前記第1の列のドメインに適用することと、第2のハッシュ関数を、前記第2の列のドメインに適用することとを含む、ことと、
前記1つ以上のハッシュ関数を適用した結果に基づいて、前記データベーステーブル内の行のサブセットを選択することであって、前記選択することは、前記第1のハッシュ関数の結果が第1の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することと、前記第2のハッシュ関数の結果が第2の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することとを含む、ことと、
前記データベーステーブルに対応するサンプルデータベーステーブルを生成することと
を含む方法を前記コンピュータプロセッサに実装させ、
前記サンプルデータベーステーブルは、前記データベーステーブル内の前記選択された行のサブセットを含む、コンピュータプログラム製品。
(項目20)
前記方法は、クエリを前記サンプルデータベーステーブルに対して実行することをさらに含む、項目19に記載のコンピュータプログラム製品。
【0007】
追加の特徴および利点が、本発明の技法を通して実現される。本発明の他の実施形態および側面も、本明細書に詳細に説明され、請求される発明の一部であると見なされる。本発明を利点および特徴とともにより深く理解するために、説明および図面を参照されたい。
【図面の簡単な説明】
【0008】
本発明として見なされる主題が、本明細書の結論における請求項において、特に指摘され、明確に請求される。本発明の前述ならびに他の特徴および利点は、以下の付随の図面と併せて検討される以下の詳細な説明から明白である。
図1図1は、ある実施形態による、サンプリングが2次元において起こり得る方法を幾何学的に示す、チャートを描写する。
図2図2は、ある実施形態による、サンプリングが3次元において起こり得る方法を幾何学的に示す、チャートを描写する。
図3図3は、提案されるサンプリング技法による、2次元クエリのオリジナルおよびハッシュ空間図の実施例を描写する。
図4図4は、ある実施形態による、サンプリングされたデータの実施例およびサンプル結合の結果を描写する。
図5図5は、ある実施形態による、クエリサイズ推定のための顕著性サンプリングのフローチャートを描写する。
図6図6は、ある実施形態による、クエリサイズ推定のための顕著性サンプリングが実装され得る、システムのブロック図を描写する。
【発明を実施するための形態】
【0009】
本発明は、概して、データベース演算に関し、より具体的には、データベースのクエリサイズ推定のためのサンプルデータの提供に関する。実施形態は、クエリ内で使用されるであろう2つ以上のテーブルのサンプルを生成することを対象とする。ある実施形態では、サンプルを生成することは、クエリ結果内の1つ以上の属性の各ドメインに対してハッシュ関数を選ぶことを含む。クエリの次元性(すなわち、結合される列の数)は、クエリ内の先の変数または定数に等しくない、別個の変数の数を数えることによって決定され得る。決定される次元性の顕著性領域は、選ばれるハッシュ関数および数値的閾値に基づいて、クエリ内で言及される各テーブルに対して計算され得る。顕著性領域内のそれらの記録は、次いで、クエリ内で言及される各テーブルのサンプル内に含まれ得る。
【0010】
実施形態は、既知のサイズのランダムなサブセットが基礎となるデータセットから選ばれる従来のサンプリングと対照的である。従来のサンプリングは、いくつかの目的のためには適正であるが、複数のテーブルからのデータが組み合わせられるとき、不利益を有する。
【0011】
サンプリング技法は、規定の割合でデータセットをサンプリングするために、ハッシングを採用し得る。例えば、データベースが、3つの属性X、Y、およびZを有し、R(X,Y,Z)と示されるテーブルRを含むと仮定する。システムは、属性Xのドメインを、例えば、1,・・・,Nの範囲にマッピングするハッシュ関数Hを選ぶ。R(X,Y,Z)は、H(X)≦dであるR(X,Y,Z)のサブセットを示し、式中、「d」は、範囲1,・・・,N内で選択された閾値である。Hがそのドメインを1,・・・,Nにわたって均一に分配するハッシュ関数であり、HがR(X,Y,Z)における実際の値から独立して選ばれる場合、R(X,Y,Z)は、R(X,Y,Z)のサイズのd/N倍であるサンプルであると予期される。R(X,Y,Z)のサイズは、前述のようにサンプリングすることによって推定されることができ、|R(X,Y,Z)|に対してN×|R(X,Y,Z)|/dの推定値を得る。式中、|R(X,Y,Z)|は、テーブルR内の記録の数を示す。
【0012】
ハッシュベースのサンプリングは、等結合(例えば、結合は、2つのテーブルが等条件であることに関連する条件である)を使用して、複数のテーブルからのデータを組み合わせるとき、従来のサンプリングよりも利点を有し得る。例えば、R(X,Y,Z)と、1つの属性Xを有し、S(X)と表示されるテーブルSとを仮定すると、閾値dの共通値を用いて、前述のように両方ともサンプリングされ、サンプルR(X,Y,Z)およびS(X)をもたらす。加えて、属性Xが、両方のテーブル内の大きなドメインにわたって、均一に分配されていると仮定される。次いで、R(X,Y,Z)とS(X)との自然結合も、R(X,Y,Z)とS(X)との自然結合のd/Nサンプルとなるであろう。対照的に、共通X値が含まれていることを確認しないR(X,Y,Z)およびS(X)の独立した従来のサンプルは、完全結合の(d/N)サンプルにすぎないであろうサンプルの結合結果を導くであろう。
【0013】
便宜上、本明細書に説明される実施形態では、ハッシュ範囲は、h(x)=H(x)/Nを定義することによって間隔[0,1]にマッピングされ、式中、Nは、Hの範囲の最大値である。同様に、閾値dは、好適な閾値θ=d/Nにマッピングされ得る。間隔[0,1]が、説明を容易にするために本明細書で選択され、使用される。他の間隔も、他の実施形態によって実装され得る。
【0014】
ある実施形態では、ある望ましい特性を達成するために、ハッシュ関数hは、強ユニバーサルハッシュ関数の既知のクラスからランダムに選ばれ得る。[0,1]にわたってアイテムを均一に分配するハッシュ関数hは、ランダムに選ばれる値xがh(x)≦θを満足させる確率が、θであるように選択され得る。加えて、ある実施形態では、ドメイン内の別個の値xおよびyに対するクラスにおける全てのハッシュ関数hを考えると、h(x)≦θである確率と、h(y)≦θである確率とは、互に独立している。
【0015】
列Xのみに対するサンプリング閾値θおよびθをそれぞれ伴う、R(X,Y,Z)とS(X)との間の双方向結合を考える。本実施形態では、θは、θおよびθの最小値であると定義される。加えて、R(X,Y,Z)およびS(X)は、対応するサンプルである。RおよびSの結合のサイズは、θによって乗算されるRおよびSの結合のサイズであると推定され得る。前述のハッシュ関数についての仮定の下、全てのハッシュ関数にわたって平均化されると、本推定値の相対的誤差は、結合結果のサイズが拡大するにつれて、ゼロに向かって減少することが、数学的に示され得る。
【0016】
ハッシュベースのサンプリング技法の変形例が、先に説明されているが(例えば、Hadjieleftheriou,他による「Hashed Samples:Selectivity Estimators for Set Similarity Selection Queries」(Very Large Data Bases(VLDB)、2008年)、Estan,他による「End−biased Samples for Join Cardinality Estimation」(International Conference on Data Engineering、2006年4月)を参照されたい)、これらのサンプリング技法は、1回につき1つの属性をサンプリングすることを説明する(例えば、1次元におけるサンプリング)。現代の技法は、本明細書に説明されるような複数の同時属性に対するハッシュベースのサンプリングスキームを処理せず、またそれを考慮しない。本発明の実施形態は、ハッシュベースのサンプリングを、多次元に拡張し、関与するテーブルの各々のサンプルを与えられる複結合式のサイズを推定する方法を提供する。
【0017】
ここで、ある実施例に目を向けると、最初に、全ての属性が、共通のドメインを共有すると仮定される。そのような場合、各属性は、共通ハッシュ関数hを使用してハッシュされ得る。サンプリングを目的として、各テーブルRは、閾値θに関連付けられる。その属性のうちの1つ以上のものが、閾値に対するハッシュサンプリング条件を満たす場合、テーブルからの記録が、含まれ得る。例えば、R(X,Y,Z)における記録(a,b,c)が、h(a)≦θまたはh(b)≦θまたはh(c)≦θの場合、含まれるであろう。言い換えると、R(X,Y,Z)における(a,b,c)は、min(h(a),h(b),h(c))≦θの場合、サンプリングされる。本実施例では、ハッシュベースのサンプリングは、3次元において実施される(すなわち、3の次元性を有する)。
【0018】
ここで、図1に目を向けると、ある実施形態による、サンプリングが2次元において起こり得る方法を幾何学的に描写するグラフが、概して、示される。図1に描写されるように、テーブル(または結合式)内の各属性に対して1つの次元が存在する。本実施例では、T(X,Y)と示されるテーブルは、2つの属性XおよびYを含む。サンプリング条件によって対象とされる多次元空間の領域は、本明細書では「顕著性領域(salient region)」または単純に「顕著性(salient)」と称される。図1に示される顕著性102のボリューム「v」は、vによって与えられ得、ここで、v=1−(1−θ)であり、kは、次元の数である。ある実施形態では、閾値θが十分に小さいとき、vは、kθとして概算され得る。図1に示される顕著性102は、Xのハッシュ値「h(x)」またはYのハッシュ値「h(y)」が、閾値θ未満またはそれに等しい領域を表す。
【0019】
ここで、図2に目を向けると、ある実施形態による、サンプリングが3次元において起こり得る方法を幾何学的に描写するグラフが、概して、示される。図2に描写されるように、テーブル(または結合式)内の各属性に対して1つの次元が存在する。本実施例では、T(X,Y,Z)と示されるテーブルは、3つの属性X、Y、およびZを含む。先に説明されるように、図2に示される顕著性202のボリューム「v」は、vによって与えられ得、ここでは、v=1−(1−θ)であり、kは、次元の数である。ある実施形態では、閾値θが十分に小さいとき、vは、kθとして概算され得る。図2に示される顕著性202は、Xのハッシュ値「h(x)」、Yのハッシュ値「h(y)」、またはZのハッシュ値「h(z)」が、閾値θ未満またはそれに等しいボリュームの和集合を表す。
【0020】
k次元のサンプルRおよびSの結合のサイズは、v=1−(1−θ)によって乗算されるRおよびSの結合のサイズであると推定され得、式中、kは、次元の数である。結合に関与するテーブルの1つが、全体としての数式より低次元を有するとき、ある実施形態は、顕著性領域を、より高次元空間にわたって適切に定義され得るように、調節することができる。例えば、サンプリングが、ここでは、3次元的に、X、Y、およびZにわたって実施される、R(X,Y,Z)およびS(X)の結合を再び考える。RのサンプルR(X,Y,Z)は、図2に示されるもの等の3次元ハッシュサンプリング方法を使用して得られ、SのサンプルS(X)は、1次元ハッシュサンプリング方法を使用して得られると仮定する。両方法は、共通閾値θを使用すると仮定する。次いで、R(X,Y,Z)およびS(X)の結合において、テーブルSからの全ての記録は、h(X)≦θを満たすであろう。これは、R(X,Y,Z)およびS(X)の結合に対する顕著性領域の適切なサブ空間である。2つのサンプルの結合は、完全結合の割合vではなく、完全結合の割合θのみのサイズを有するであろう。したがって、サンプルの結合は、テーブルRとSとの間の完全結合のサンプルのものと合致するであろう3次元分布を有しない。例えば、完全結合の3次元サンプルは、サンプリング閾値を満たさないX値を伴ういくつかの行を含むであろう一方、サンプルの結合は、それを含まないであろう。
【0021】
本問題を改善するために、提案される技法の実施形態は、不在の属性に対して、より低次元のテーブルを、ドメインからの値でパディングすることができる。例えば、D(Y)は、Yが属性YのドメインDからの任意の値であり得ることを意味するように書かれ得、D(Z)は、属性ZのドメインDからの任意の値であり得ると仮定する。概念的には、サンプルSは、ここでは、クロス積S(X)×D(Y)×D(Z)のハッシュベースのサンプルとして、3次元において定義され得る。実践では、最大θである値にハッシュするX範囲の一部のみが明示的に記憶されるであろうため、Sを完全に具体化する必要はない。残りの要素は、記号的に表され得る。Rおよび新しいSが結合されるとき、Sの記号要素(変数YおよびZに関して、h(y)≦θまたはh(z)≦θであるとアサートする)は、Rにおけるそれらの属性上の選択に変換される。
【0022】
結合に関与するテーブルが、異なる閾値θを用いてサンプリングされると、それらの閾値の最小値が、結合のサンプルに対する閾値を定義する。
【0023】
ここで、図3を参照すると、提案されるサンプリング技法による、1つを上回る結合を含む複結合式の結果が、概して、示される。図3は、2次元における3つのテーブルA(X,Y)、B(X)、およびC(Y)の自然結合を考慮する実施形態による、クエリのオリジナルおよびハッシュ空間図の実施例を描写する。グラフ302は、2次元(x,y)座標における入力テーブルを例証する。3つのテーブルの各々は、非対称にされ、BおよびCは両方とも、ドメインからより高い値をとる一方、テーブルAは、(x,y)値が略ドーナツ形のクラスタに集中させられている分布を有する。図3におけるグラフ304は、このデータセットに対する完全結合の結果を示す。図3におけるグラフ306および308は、(h(x),h(y))座標を含む、ハッシュ変換された空間における入力およびクエリ結果を示す。本変換の効果は、元々よりも、データがより均一に現れるようにすることである。顕著性領域は、空間の左および下部のスライスを含む。
【0024】
ここで、図4を参照すると、ある実施形態による、サンプリングされたデータの実施形態が、概して、示される。図4に示されるサンプリングされたデータは、図3におけるグラフ302および304に基づく。本明細書に説明されるハッシュベースのサンプリング技法の実施形態を使用して、オリジナル(x,y)座標において、グラフ402は、サンプリングされたデータを描写し、グラフ404は、サンプリングされたデータの結合を描写する。図4に示されるように、本データセットに関して、サンプリングされたデータの結合は、図3のグラフ304に示される完全結合の代表である。
【0025】
ここで、図5に目を向けると、ある実施形態による、クエリサイズ推定のための顕著性サンプリングに関するフロー図が、概して、示される。ブロック502において、サンプリングされるべきテーブルが、クエリ式に基づいて識別され、ブロック504において、テーブル内に結合され得る列は、クエリ式において規定されるように識別される。明確にするために、ロジックベースの言語が、クエリの書き込みのために使用されており、異なるテーブル内の列は、それらが結合されるとき、共通の変数名を共有する。それにもかかわらず、SQL等の他の言語が、代わりに使用され得、共通の属性名を有することは、列が結合可能であるために要求されない。ブロック506において、ハッシュ関数が、各テーブル内の識別された列におけるデータ値に適用される。ある実施形態では、各ドメインタイプに対して1つのハッシュ関数が存在する。当技術分野で公知の任意のハッシュ関数が、利用され得るが、ユニバーサルなハッシュ関数族が、好ましくあり得る。
【0026】
ブロック508において、特定のハッシュ値を有する列値が、選択される。先に説明されるように、これは、閾値数に基づき得、ある実施形態では、選択された列値の全てまたはサブセットが、同じ閾値数と比較される。
【0027】
ブロック510において、選択された列値に関連付けられる行が、サンプリングのために使用されるべきサンプルテーブルを生成するために、識別される。テーブルが、全体としてのクエリの次元より低次元を有する場合、テーブルは、全般的な次元と合致するように、追加の列で記号的にパディングされる。ブロック512において、結合または他のクエリが、結合のサンプルを生成するために、サンプルテーブルに適用される。
【0028】
実施形態は、固定された次元の顕著性領域に基づいてサンプリングするためのサンプルテーブルを実装することに限定されない。次元の数に上限はなく、次元の任意の数に基づく顕著性領域が、実施形態によって実装され得る。
【0029】
ある実施形態では、完全結合のサイズは、サンプルの結合結果を1/v倍にスケーリングすることによって推定され、ここで、vは、顕著性領域のボリュームである。いくつかの場合、本手順は、その誤差限界が定量化され得る推定値を与えることができる。
【0030】
記録が1つ以上の属性において同じ値を含まない、データベースを考える。さらに、単一値xが、|Q|β記録を超えて発生しないと仮定し、ここでは、βは、0と1との間の数であり、Qは、等結合クエリであり、|Q|は、完全結合における記録の数である。そのような条件下では、以下の定理が当てはまる。サンプルの結合における記録の予期される数が、少なくとも|Q|(β+1)/2に比例する限り、全てのハッシュ関数にわたって平均化されると、1/vの近似値の相対的誤差は、データベースサイズが拡大するにつれてゼロに減少する。
【0031】
前述の定理の前提条件は、具体的配慮を必要とする特別な場合、つまり、行の複数属性において現れるそれらの値と、データベースにおいて非常に頻繁に現れるそれらの値とを示唆する。これらの場合に対処するために、提案される方法の実施形態は、サンプリングの問題を、オリジナルサンプリンプ空間の互いに素なサブ空間に対するいくつかのサブサンプリングの問題に細分化することができる。有意な数の記録が1つを上回る列に同じ値を含むデータベースに対処するために、提案される方法の実施形態は、サンプリングの問題を、列値が共通ではないサブセットと、共通の列値が存在するサブセットとに分割することができる。サブセットは、互いに素であり、そのため、全体的濃度(overall cardinality)は、各サブセットに対する推定値の合計をとることによって推定され得る。例えば、3つの属性クエリQ(X,Y,Z)を考慮されたい。Qは、以下のように表され得る:Q∪Q∪Q∪Q∪Q、ここで、Q=σ(X=Y=Z)Q、Q=σ(X=Y≠Z)Q、Q=σ(X=Z≠Y)Q、Q=σ(Z=Y≠X)Q、Q=σ(X≠Z,Y≠Z,X≠Y)Qである。|Q|に関する推定値は、推定値の合計|Q|+|Q|+|Q|+|Q|+|Q|であり得る。列値は共通ではないため、|Q|は、前述のように推定され得る。Qに対して、全ての列は等しいため、テーブルは、3次元ではなく、事実上、1次元である。幾何学的に、これは、Qに対する(X,Y,Z)立方体の対角線に対応する。このより少ない次元性のため、|Q1|は、前述のように推定され得るが、k=3ではなく、k=1を使用する。同様の方法で、オリジナル空間の2次元サブセットに対応するため、|Q|、|Q|、および|Q|の各々は、k=2を用いて推定され得る。
【0032】
発見的最適化として、推定に寄与する可能性がない場合を回避することによって、より少ないサンプリング作業を行うことが可能になり得る。例えば、Qにおいて、属性Xは、従業員IDであり、属性Yは、Xのマネージャの従業員IDと仮定する。会社の最高経営責任者(CEO)(彼らのマネージャである)は別として、Xは、QにおけるYとは決して等しくない。したがって、前述の|Q|を推定する際、|Q|および|Q|を無視することは妥当である。Qに対する唯一の回答が、会社のCEOの識別であるXを有するとき等、|Q|および|Q|を含めることが重要である実施例を構築し得るため、これは、発見的最適化にすぎない。
【0033】
単一値wが、全ての記録の有意な割合において発生するとき、推定値の品質は、不良となり得る。h(w)は、顕著性領域内にあり、その場合、クエリ推定は、真のクエリサイズの過大推定になる可能性が高いか、またはh(w)は、顕著性領域内になく、その場合、クエリ推定は、真のクエリサイズの過小推定になる可能性が高いかのいずれかである。非常に一般的な値に対処するために、ある実施形態は、サブサンプリングアプローチを適用し得る。前述のクエリQに対して、wは、記録の大きな割合において発生するZに対する値であると仮定する。例えば、Zは、従業員の医療計画であり得、従業員の50%は、wによって表される最も一般的な計画に登録され得る。次いで、Qは、以下のように表され得る:T∪T、ここで、T=σ(w=Z)QおよびT=σ(w≠Z)Qである。|Q|に関する推定値は、推定値の合計|T|+|T|である。前述のサブサンプリングアプローチに従って、|T|が、k=2を用いて推定され、|T|が、k=3を用いて推定されるであろう。複数の共通値が存在する場合(非常に少ない数の選択肢を有する属性によくあり得るような)、提案される方法の実施形態は、各共通値に対して別個の場合を使用して、クエリをサブサンプルするであろう。クエリからの属性が、1つを上回るドメインに由来するとき、各ドメインDは、それ自体のハッシュ関数hを有し得る。顕著性領域は、各属性がそのドメインのハッシュ関数を使用してハッシュされることを除いて、前述のように定義される。
【0034】
技術的効果および利益は、より正確にクエリコスト推定値を予測し得るサンプルデータと、サンプリングされたデータに基づく他のデータベース推定値とを生成する能力を含む。
【0035】
いくつかの実施形態では、1つ以上の方法が、1つ以上のタイプのメモリへのアクセスを有する1つ以上のプロセッサに対する一組の命令において具現化される。本命令は、ハードウェアまたはソフトウェアにおいてコーディングされ得る。限定ではないが、コンピュータ、携帯電話、タブレットデバイス、ゲーム機、ネットワーク管理デバイス、フィールドプログラマブルゲートアレイ、およびクラウドベースのコンピュータシステムを含む、多くの種類のプラットフォームが使用され得る。本開示の側面は、並列演算のために、複数のデバイス上で展開され得る。実施形態は、データベース管理システム等のより大きなシステムの構成要素として使用され得る。
【0036】
図6を参照すると、ある実施形態による、クエリサイズ推定のための顕著性サンプリングに関する例示的システム600のブロック図が、概して、示される。システム600は、ホストシステム604上に位置する1つ以上のコンピュータプログラムによって実行される、顕著性サンプリングクエリサイズ推定を実施するための、サンプリングアルゴリズム610を含む。ある実施形態では、アルゴリズム610の全てまたは一部は、ホストシステム604上で実行するデータベース管理システムの一部である。別の実施形態では、アルゴリズム610の全てまたは一部は、トランザクションとクエリとの両方をサポートするシステムの構成要素である。
【0037】
図6に描写されるシステム600は、1つ以上のユーザシステム602を含み、それを通して、1つ以上の地理的場所におけるユーザ(例えば、エンドユーザ、データベース管理者)は、データベースクエリおよび/またはトランザクションを実行するプログラムを開始するために、ホストシステム604にコンタクトし得る。ユーザシステム602は、ホストシステム604にネットワーク606を介して結合される。各ユーザシステム602は、本明細書に説明されるプロセスを実行するためのコンピュータプログラムを実行する、汎用コンピュータを使用して実装され得る。ユーザシステム602は、パーソナルコンピュータ(例えば、ラップトップ、タブレットコンピュータ、セルラー電話)またはホスト付属端末であり得る。ユーザシステム602がパーソナルコンピュータである場合、本明細書に説明される処理は、ユーザシステム602およびホストシステム604によって共有され得る。ユーザシステム602はまた、ゲーム機、ネットワーク管理デバイス、およびフィールドプログラマブルゲートアレイも含み得る。加えて、複数のユーザシステム602および/またはホストシステム604は、顕著性サンプリングを実施するために、並列的に動作し得る。
【0038】
ネットワーク606は、限定ではないが、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、グローバルネットワーク(例えば、インターネット)、仮想プライベートネットワーク(VPN)、クラウドネットワーク、およびイントラネットを含む、既知のネットワークの任意のタイプであり得る。ネットワーク606は、無線ネットワーク、または当分野で公知の物理ネットワーク実装の任意の種類を使用して実装され得る。ユーザシステム602は、全てのユーザシステム602が、同じネットワークを通してホストシステム604に結合されないように、複数のネットワーク(例えば、セルラーおよびインターネット)を通してホストシステムに結合され得る。ユーザシステム602およびホストシステム604の1つ以上のものが、ネットワーク606に、無線方式で接続され得る。一実施形態では、ネットワークは、インターネットであり、1つ以上のユーザシステム602は、ホストシステム604にネットワーク606を通してコンタクトするために、ユーザインターフェースアプリケーション(例えば、ウェブブラウザ)を実行する。別の例示的実施形態では、ユーザシステム602は、直接(すなわち、ネットワーク606を通さずに)ホストシステム604に接続される。さらなる実施形態では、ホストシステム604は、記憶デバイス608に直接接続され、またはそれを含む。
【0039】
記憶デバイス608は、クエリサイズ推定のための顕著性サンプリングと関連するデータを含み、電子情報を記憶するための様々なデバイスを使用して実装され得る。ある実施形態では、記憶デバイス608内に記憶されるデータは、限定ではないが、1つ以上のデータベース、データベーステーブル、インデックス、および本明細書に説明される実施形態によって利用される他のデータを含む。記憶デバイス608は、ホストシステム604内に含まれるメモリを使用して実装され得るか、または別個の物理デバイスであり得ることを理解されたい。記憶デバイス608は、ネットワーク606を含む分散環境を横断する統合データソースとして、論理的にアドレス可能であり得る。記憶デバイス608内に記憶される情報は、ホストシステム604を介して、および/またはユーザシステム602を介して読み出され、操作され得る。
【0040】
図6に描写されるホストシステム604は、サーバによってアクセス可能な記憶媒体内に記憶されるコンピュータプログラムに応答して動作する、1つ以上のサーバを使用して実装され得る。ホストシステム604は、ユーザシステム602と通信するために、ネットワークサーバ(例えば、ウェブサーバ)として動作し得る。ホストシステム604は、ユーザシステム602に、およびそれから情報を送信および受信することを取り扱い、関連付けられたタスクを実施することができる。ホストシステム604はまた、ホストシステム604への不正アクセスを防止し、正当なアクセスへの任意の制限を施行するためのファイアウォールも含み得る。例えば、管理者は、全システムへのアクセスを有し、システムの一部を修正する権限を有し得る。ファイアウォールは、当分野で公知であるような従来のハードウェアおよび/またはソフトウェアを使用して実装され得る。
【0041】
ホストシステム604はまた、アプリケーションサーバとしても動作し得る。ホストシステム604は、本明細書に説明されるような実施形態の側面を提供するために、アルゴリズム610を含む、1つ以上のコンピュータプログラムを実行する。処理は、アプリケーションをユーザシステム602に提供することによって、ユーザシステム602およびホストシステム604によって共有され得る。代替として、ユーザシステム602は、本明細書に説明される実施形態処理の一部または全てを実施するためのスタンドアローンのソフトウェアアプリケーションを含み得る。先に説明されるように、別個のサーバが、ネットワークサーバ機能およびアプリケーションサーバ機能を実装するために利用され得ることを理解されたい。代替として、ネットワークサーバ、ファイアウォール、およびアプリケーションサーバは、必須機能を実施するためのコンピュータプログラムを実行する単一サーバによって実装され得る。
【0042】
当業者によって理解されるであろうように、本発明の側面は、システム、方法、またはコンピュータプログラム製品として具現化され得る。故に、本発明の側面は、全体的にハードウェアである実施形態、全体的にソフトウェアである実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または本明細書で、全て、概して、「回路」、「モジュール」、もしくは「システム」と称され得るソフトウェアおよびハードウェアの側面を組み合わせる実施形態の形態を成し得る。その上さらに、本発明の側面は、その上に具現化されるコンピュータ読み取り可能なプログラムコードを有する、1つ以上のコンピュータ読み取り可能な媒体内で具現化されるコンピュータプログラム製品の形態を成し得る。
【0043】
1つ以上のコンピュータ読み取り可能な媒体の任意の組み合わせが、利用され得る。コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な信号媒体またはコンピュータ読み取り可能な記憶媒体であり得る。コンピュータ読み取り可能な記憶媒体は、例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体システム、装置、もしくはデバイス、または前述の任意の好適な組み合わせであり得る。コンピュータ読み取り可能な記憶媒体のより具体的実施例(非包括的リスト)は、以下の、1つ以上のワイヤを有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消却プログラム可能読み取り専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、または前述の任意の好適な組み合わせを含むであろう。本明細書の文脈において、コンピュータ読み取り可能な記憶媒体は、命令実行システム、装置、またはデバイスによって、またはそれらと関係しての使用のためのプログラムを含有または記憶し得る任意の有形的表現媒体であり得る。
【0044】
コンピュータ読み取り可能な信号媒体は、例えば、ベースバンド内に、または搬送波の一部として、その中に具現化されるコンピュータ読み取り可能なプログラムコードを伴う伝搬データ信号を含み得る。そのような伝搬信号は、限定ではないが、電磁気、光、またはそれらの任意の好適な組み合わせを含む、任意の様々な形状を成し得る。コンピュータ読み取り可能な信号媒体は、コンピュータ読み取り可能な記憶媒体ではない、命令実行システム、装置、またはデバイスによって、またはそれらと関係しての使用のためのプログラムを通信、伝搬、またはトランスポートし得る、任意のコンピュータ読み取り可能な媒体であり得る。
【0045】
コンピュータ読み取り可能な媒体上で具現化されるプログラムコードは、限定ではないが、無線、有線、光ファイバケーブル、RF等、または前述の任意の好適な組み合わせを含む、任意の適切な媒体を使用して伝送され得る。
【0046】
本発明の側面に関する動作を実行するためのコンピュータプログラムコードは、Java(登録商標)、Smalltalk、C++等、オブジェクト指向プログラミング言語と、「C」プログラミング言語または類似プログラミング言語等、従来の手続き型プログラミング言語とを含む、1つ以上のプログラミング言語の任意の組み合わせで書き込まれ得る。プログラムコードは、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、ユーザのコンピュータ上で部分的におよびリモートコンピュータ上で部分的にスタンドアローンのソフトウェアパッケージとして、またはリモートコンピュータもしくはサーバ上で全体的に実行し得る。後者のシナリオでは、リモートコンピュータは、ユーザのコンピュータに、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を含む、任意のタイプのネットワークを通して接続され得、または接続は、外部コンピュータに(例えば、インターネットサービスプロバイダを使用するインターネットを通して)行われ得る。
【0047】
本発明の実施形態の側面が、本発明の実施形態による、方法、装置(システム)、およびコンピュータプログラム製品のフローチャート例証および/またはブロック図を参照して前述される。フローチャート例証および/またはブロック図の各ブロック、ならびにフローチャート例証および/またはブロック図内のブロックの組み合わせは、コンピュータプログラム命令によって実装され得ることが理解されるであろう。これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートおよび/またはブロック図のブロックまたは複数のブロックに規定される機能/作用を実装するための手段を生成するように、機械を製造するための汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供され得る。
【0048】
これらのコンピュータプログラム命令はまた、コンピュータ読み取り可能な媒体内に記憶される命令が、フローチャートおよび/またはブロック図のブロックまたは複数のブロック内に規定される機能/作用を実装する命令を含む、製造品を製造するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに、特定の様式で機能するように命令し得る、コンピュータ読み取り可能な媒体内に記憶され得る。
【0049】
コンピュータプログラム命令はまた、コンピュータまたは他のプログラム可能装置上で実行する命令が、フローチャートおよび/またはブロック図のブロックまたは複数のブロック内に規定される機能/作用を実装するためのプロセスを提供するように、コンピュータ、他のプログラム可能装置、または他のデバイス上で実施されるべき一連の動作ステップが、コンピュータ実装プロセスを生じさせるように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ得る。
【0050】
図内のローチャートおよび/またはブロック図は、本発明の種々の実施形態による、システム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能性、および動作を例証する。これに関して、フローチャートまたはブロック図内の各ブロックは、モジュール、セグメント、またはコードの一部を表し得、これは、規定される論理機能を実装するための1つ以上の実行可能な命令を備える。また、いくつかの代替実装では、ブロック内に記述される機能は、図内に記述される順序に従わずに発生し得ることにも留意されたい。例えば、連続して示される2つのブロックは、実際、実質的に、並列的に実行され得、またブロックは、時として、関与する機能性に応じて、逆の順序で実行され得る。また、ブロック図および/またはフローチャート例証の各ブロック、ならびにブロック図および/またはフローチャート例証内のブロックの組み合わせは、規定される機能または作用を実施する専用ハードウェアベースのシステム、または専用ハードウェアとコンピュータ命令との組み合わせによって実装され得ることにも留意されたい。
【0051】
本明細書に使用される専門用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することは意図されない。本明細書に使用されるように、単数形「a」、「an」、および「the」は、文脈が明確にそうでないことを示さない限り、複数形も含むことが意図される。さらに、「備える(comprises)」および/または「備える(comprising)」という用語は、本明細書に使用されるとき、所定の特徴、整数、ステップ、動作、要素、および/または構成要素の存在を規定するが、もう1つの他の特徴、整数、ステップ、動作、要素構成要素、および/またはそれらのグループの存在または追加を除外しないことが理解されるであろう。
【0052】
以下の請求項における全ての手段またはステップの対応する構造、材料、作用、および均等物、さらに機能要素は、具体的に請求されるように、他の請求される要素と組み合わせた機能を実施するための任意の構造、材料、または作用を含むように意図される。本発明の説明は、例証及び説明を目的として提示されているが、開示される形式における発明に包括または限定されることは意図されない。多くの修正および変形例は、本発明の範囲および精神から逸脱することなく、当業者に明白となるであろう。
実施形態は、本発明の原則および実践的用途を最良に説明し、当業者が、熟慮される特定の使用に好適であるような種々の修正を伴う、種々の実施形態に関する発明を理解することを可能にするために、選ばれ、説明される。
【0053】
本明細書に描写される任意のフロー図は、一実施例のみを示す。本明細書に説明されるこの図またはステップ(または動作)への多くの変形例は、本発明の精神から逸脱することなく存在し得る。例えば、ステップは、異なる順序で実施され得、またステップは、追加され、削除され、もしくは修正され得る。これらの変形例の全ては、請求される発明の一部と見なされる。
【0054】
本発明の好ましい実施形態が説明されているが、当業者は、現在および将来の両方で、続く請求項の範囲内に該当する種々の改良型および拡張型を作成し得ることが理解されるであろう。これらの請求項は、最初に説明される発明のための適切な保護を維持するように解釈されるべきである。
図1
図2
図3
図4
図5
図6