(57)【要約】【課題】クエリサイズ推定のための好適な顕著性サンプリングを提供すること。【解決手段】当該サンプリングは１つ以上の他のテーブル内に対応する列を有するデータベーステーブル内の２つ以上の列の識別を含む。１つ以上のハッシュ関数は識別された列の各々のドメインに適用される。第１のハッシュ関数は第１の列のドメインに適用され、第２のハッシュ関数は第２の列のドメインに適用される。データベーステーブル内の行のサブセットが選択される。選択することは、第１のハッシュ関数の結果が第１の数値的閾値を満たす場合、データベーステーブル内の行を選択すること、第２のハッシュ関数の結果が第２の数値的閾値を満たす場合、データベーステーブル内の行を選択することを含む。データベーステーブルに対応するサンプルデータベーステーブルが生成される。サンプルデータベーステーブルはデータベーステーブル内の選択された行のサブセットを含む。【選択図】図５
2018185848.tif 000002
【特許請求の範囲】
【請求項１】
本明細書に記載の発明。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の引用）
本願は、米国出願第６１／８４４０４５号（２０１３年７月９日出願）の利益を主張し、上記出願は、その全体が参照により本明細書に引用される。
【０００２】
本発明は、概して、データベース演算に関し、より具体的には、データベースのクエリサイズ推定のためのサンプルデータの提供に関する。
【背景技術】
【０００３】
データベース管理システムは、ユーザが、膨大な量の情報にクエリを行うことを可能にする。所与のクエリに返答するために、データベース管理システムが、潜在的に採用し得る、多くの実行計画が存在する。クエリ最適化は、データベース管理システムが、いくつかの候補計画のコストを推定し、最低コストのものを選ぶプロセスである。
【０００４】
データベースのクエリコスト推定における重要なステップは、多くの場合、データベースクエリに関連付けられる計画のコストに影響を及ぼす、中間クエリ結果のサイズの推定である。データベースシステムは、比較的少ない努力で、実際にクエリを実行することなく、正確に、これらのサイズを推定することを目標としている。いくつかの技法が、多くの場合、そのようなサイズの推定のために使用される。クエリ結果のサイズを推定するための技法の１つの一般的なクラスは、サンプリングと称される。サンプリングでは、システムは、関与するテーブルのうちの１つ以上のものからサンプルを得て、サンプルにわたって様々なクエリを実施する。サンプルにわたるクエリ結果のサイズは、適切にスケーリングされ、全データセットにわたるクエリのサイズを推定する。
【０００５】
サンプリングはまた、クエリ最適化とは別の種々の種類の推定タスクのためにも使用され得る。例えば、クエリ結果のおおよその推定が、必要とされる全ての場合、好適にサイズを決定されたサンプルを処理することが、多くの場合、精度と計算時間との間の良好なバランスを提供するために使用される。
【発明の概要】
【課題を解決するための手段】
【０００６】
実施形態は、データベーステーブルのサンプルを生成するための方法と、システムと、コンピュータプログラム製品とを含む。２つ以上の他のテーブル内に対応する列を有する、データベーステーブル内の２つ以上の列が、識別される。２つ以上の列は、第１の列と、第２の列とを含む。１つ以上のハッシュ関数が、識別された列の各々のドメインに適用される。適用することは、第１のハッシュ関数を、第１の列のドメインに適用することと、第２のハッシュ関数を、第２の列のドメインに適用することとを含む。データベーステーブル内の行のサブセットが、１つ以上のハッシュ関数を適用した結果に基づいて選択される。選択することは、第１のハッシュ関数の結果が第１の数値的閾値を満たす場合、データベーステーブル内の行を選択することと、第２のハッシュ関数の結果が第２の数値的閾値を満たす場合、データベーステーブル内の行を選択することとを含む。データベーステーブルに対応するサンプルデータベーステーブルが、生成される。サンプルデータベーステーブルは、データベーステーブル内の選択された行のサブセットを含む。
本明細書は、例えば、以下の項目も提供する。
（項目１）
データベーステーブルのサンプルを生成する方法であって、前記方法は、
データベーステーブル内の２つ以上の列を識別することであって、前記２つ以上の列は、１つ以上の他のテーブル内に対応する列を有し、前記２つ以上の列は、第１の列および第２の列を含む、ことと、
１つ以上のハッシュ関数を、前記識別された列の各々のドメインに適用することであって、前記適用することは、第１のハッシュ関数を、前記第１の列のドメインに適用することと、第２のハッシュ関数を、前記第２の列のドメインに適用することとを含む、ことと、
前記１つ以上のハッシュ関数を適用した結果に基づいて、前記データベーステーブル内の行のサブセットを選択することであって、前記選択することは、前記第１のハッシュ関数の結果が第１の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することと、前記第２のハッシュ関数の結果が第２の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することとを含む、ことと、
前記データベーステーブルに対応するサンプルデータベーステーブルを生成することと
を含み、
前記サンプルデータベーステーブルは、前記データベーステーブル内の前記選択された行のサブセットを含む、方法。
（項目２）
クエリを前記サンプルデータベーステーブルに対して実行することをさらに含む、項目１に記載の方法。
（項目３）
前記第１のハッシュ関数は、前記第２のハッシュ関数と異なる、項目１に記載の方法。
（項目４）
前記第１のハッシュ関数は、前記第２のハッシュ関数と同じものである、項目１に記載の方法。
（項目５）
前記第１の数値的閾値は、前記第２の数値的閾値と異なる、項目１に記載の方法。
（項目６）
前記第１の数値的閾値は、前記第２の数値的閾値と同じものである、項目１に記載の方法。
（項目７）
前記データベーステーブルおよび前記２つ以上の列は、データベースクエリ内で言及されており、前記識別すること、適用すること、選択すること、および生成することは、前記データベースクエリ内で結合されている前記データベーステーブルおよび列の全てに対して実施される、項目１に記載の方法。
（項目８）
前記方法は、前記サンプルデータベーステーブルにわたる前記データベースクエリを計算することをさらに含む、項目７に記載の方法。
（項目９）
前記データベースクエリの濃度を、前記選択された行のサブセットのボリュームによって除算される、前記サンプルデータベーステーブルにわたるデータベースクエリの濃度として推定することをさらに含む、項目８に記載の方法。
（項目１０）
前記データベースクエリを、２つ以上のサブクエリの直和として表現することと、
各サブクエリに対して実施することと、
前記サンプルデータベーステーブルにわたるサブクエリを計算することと、
前記データベースクエリの濃度を、前記選択された行のサブセットのボリュームによって除算される、前記サンプルデータベーステーブルにわたる前記サブクエリの濃度として推定することと、
結果として生じる推定値を加算することと
をさらに含む、項目７に記載の方法。
（項目１１）
データベーステーブルのサンプルを生成するためのシステムであって、前記システムは、
コンピュータ読み取り可能なコンピュータ命令を有するメモリと、
プロセッサと
を備え、
前記プロセッサは、
データベーステーブル内の２つ以上の列を識別することであって、前記２つ以上の列は、１つ以上の他のテーブル内に対応する列を有し、前記２つ以上の列は、第１の列および第２の列を含む、ことと、
１つ以上のハッシュ関数を、前記識別された列の各々のドメインに適用することであって、前記適用することは、第１のハッシュ関数を、前記第１の列のドメインに適用することと、第２のハッシュ関数を、前記第２の列のドメインに適用することとを含む、ことと、
前記１つ以上のハッシュ関数を適用した結果に基づいて、前記データベーステーブル内の行のサブセットを選択することであって、前記選択することは、前記第１のハッシュ関数の結果が第１の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することと、前記第２のハッシュ関数の結果が第２の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することとを含む、ことと、
前記データベーステーブルに対応するサンプルデータベーステーブルを生成することと
を含む方法を実施するための前記コンピュータ読み取り可能な命令を実行し、
前記サンプルデータベーステーブルは、前記データベーステーブル内の前記選択された行のサブセットを含む、システム。
（項目１２）
クエリを前記サンプルデータベーステーブルに対して実行することをさらに含む、項目１１に記載のシステム。
（項目１３）
少なくとも、前記第１のハッシュ関数が、前記第２のハッシュ関数と異なるか、または前記第１の数値的閾値が、前記第２の数値的閾値と異なる、項目１１に記載のシステム。
（項目１４）
少なくとも、前記第１のハッシュ関数が、前記第２のハッシュ関数と同じものであるか、または前記第１の数値的閾値が、前記第２の数値的閾値と同じものである、項目１１に記載のシステム。
（項目１５）
前記データベーステーブルおよび前記２つ以上の列は、データベースクエリ内で言及されており、前記識別すること、適用すること、選択すること、および生成することは、前記データベースクエリ内で言及されている前記データベーステーブルおよび列の全てに対して実施される、項目１１に記載のシステム。
（項目１６）
前記方法は、前記サンプルデータベーステーブルにわたる前記データベースクエリを計算することをさらに含む、項目１５に記載のシステム。
（項目１７）
前記方法は、前記データベースクエリの濃度を、前記選択された行のサブセットのボリュームによって除算される、前記サンプルデータベーステーブルにわたる前記データベースクエリの濃度として推定することをさらに含む、項目１６に記載のシステム。
（項目１８）
前記方法は、
前記データベースクエリを、２つ以上のサブクエリの直和として表現することと、
各サブクエリに対して実施することと、
前記サンプルデータベーステーブルにわたる前記サブクエリを計算することと、
前記データベースクエリの濃度を、前記選択された行のサブセットのボリュームによって除算される、前記サンプルデータベーステーブルにわたる前記サブクエリの濃度として推定することと、
結果として生じる推定値を加算することと
をさらに含む、項目１５に記載のシステム。
（項目１９）
データベーステーブルのサンプルを生成するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、具現化されたコンピュータ読み取り可能なプログラムコードを有するコンピュータ読み取り可能な記憶媒体を備え、
前記プログラムコードは、コンピュータプロセッサによって実行されると、
データベーステーブル内の２つ以上の列を識別することであって、前記２つ以上の列は、１つ以上の他のテーブル内に対応する列を有し、前記２つ以上の列は、第１の列および第２の列を含む、ことと、
１つ以上のハッシュ関数を、前記識別された列の各々のドメインに適用することであって、前記適用することは、第１のハッシュ関数を、前記第１の列のドメインに適用することと、第２のハッシュ関数を、前記第２の列のドメインに適用することとを含む、ことと、
前記１つ以上のハッシュ関数を適用した結果に基づいて、前記データベーステーブル内の行のサブセットを選択することであって、前記選択することは、前記第１のハッシュ関数の結果が第１の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することと、前記第２のハッシュ関数の結果が第２の数値的閾値を満たす場合、前記データベーステーブル内の行を選択することとを含む、ことと、
前記データベーステーブルに対応するサンプルデータベーステーブルを生成することと
を含む方法を前記コンピュータプロセッサに実装させ、
前記サンプルデータベーステーブルは、前記データベーステーブル内の前記選択された行のサブセットを含む、コンピュータプログラム製品。
（項目２０）
前記方法は、クエリを前記サンプルデータベーステーブルに対して実行することをさらに含む、項目１９に記載のコンピュータプログラム製品。
【０００７】
追加の特徴および利点が、本発明の技法を通して実現される。本発明の他の実施形態および側面も、本明細書に詳細に説明され、請求される発明の一部であると見なされる。本発明を利点および特徴とともにより深く理解するために、説明および図面を参照されたい。
【図面の簡単な説明】
【０００８】
本発明として見なされる主題が、本明細書の結論における請求項において、特に指摘され、明確に請求される。本発明の前述ならびに他の特徴および利点は、以下の付随の図面と併せて検討される以下の詳細な説明から明白である。
【図１】図１は、ある実施形態による、サンプリングが２次元において起こり得る方法を幾何学的に示す、チャートを描写する。
【図２】図２は、ある実施形態による、サンプリングが３次元において起こり得る方法を幾何学的に示す、チャートを描写する。
【図３】図３は、提案されるサンプリング技法による、２次元クエリのオリジナルおよびハッシュ空間図の実施例を描写する。
【図４】図４は、ある実施形態による、サンプリングされたデータの実施例およびサンプル結合の結果を描写する。
【図５】図５は、ある実施形態による、クエリサイズ推定のための顕著性サンプリングのフローチャートを描写する。
【図６】図６は、ある実施形態による、クエリサイズ推定のための顕著性サンプリングが実装され得る、システムのブロック図を描写する。
【発明を実施するための形態】
【０００９】
本発明は、概して、データベース演算に関し、より具体的には、データベースのクエリサイズ推定のためのサンプルデータの提供に関する。実施形態は、クエリ内で使用されるであろう２つ以上のテーブルのサンプルを生成することを対象とする。ある実施形態では、サンプルを生成することは、クエリ結果内の１つ以上の属性の各ドメインに対してハッシュ関数を選ぶことを含む。クエリの次元性（すなわち、結合される列の数）は、クエリ内の先の変数または定数に等しくない、別個の変数の数を数えることによって決定され得る。決定される次元性の顕著性領域は、選ばれるハッシュ関数および数値的閾値に基づいて、クエリ内で言及される各テーブルに対して計算され得る。顕著性領域内のそれらの記録は、次いで、クエリ内で言及される各テーブルのサンプル内に含まれ得る。
【００１０】
実施形態は、既知のサイズのランダムなサブセットが基礎となるデータセットから選ばれる従来のサンプリングと対照的である。従来のサンプリングは、いくつかの目的のためには適正であるが、複数のテーブルからのデータが組み合わせられるとき、不利益を有する。
【００１１】
サンプリング技法は、規定の割合でデータセットをサンプリングするために、ハッシングを採用し得る。例えば、データベースが、３つの属性Ｘ、Ｙ、およびＺを有し、Ｒ（Ｘ，Ｙ，Ｚ）と示されるテーブルＲを含むと仮定する。システムは、属性Ｘのドメインを、例えば、１，・・・，Ｎの範囲にマッピングするハッシュ関数Ｈを選ぶ。Ｒｓ（Ｘ，Ｙ，Ｚ）は、Ｈ（Ｘ）≦ｄであるＲ（Ｘ，Ｙ，Ｚ）のサブセットを示し、式中、「ｄ」は、範囲１，・・・，Ｎ内で選択された閾値である。Ｈがそのドメインを１，・・・，Ｎにわたって均一に分配するハッシュ関数であり、ＨがＲ（Ｘ，Ｙ，Ｚ）における実際の値から独立して選ばれる場合、Ｒｓ（Ｘ，Ｙ，Ｚ）は、Ｒ（Ｘ，Ｙ，Ｚ）のサイズのｄ／Ｎ倍であるサンプルであると予期される。Ｒ（Ｘ，Ｙ，Ｚ）のサイズは、前述のようにサンプリングすることによって推定されることができ、｜Ｒ（Ｘ，Ｙ，Ｚ）｜に対してＮ×｜Ｒｓ（Ｘ，Ｙ，Ｚ）｜／ｄの推定値を得る。式中、｜Ｒ（Ｘ，Ｙ，Ｚ）｜は、テーブルＲ内の記録の数を示す。
【００１２】
ハッシュベースのサンプリングは、等結合（例えば、結合は、２つのテーブルが等条件であることに関連する条件である）を使用して、複数のテーブルからのデータを組み合わせるとき、従来のサンプリングよりも利点を有し得る。例えば、Ｒ（Ｘ，Ｙ，Ｚ）と、１つの属性Ｘを有し、Ｓ（Ｘ）と表示されるテーブルＳとを仮定すると、閾値ｄの共通値を用いて、前述のように両方ともサンプリングされ、サンプルＲｓ（Ｘ，Ｙ，Ｚ）およびＳｓ（Ｘ）をもたらす。加えて、属性Ｘが、両方のテーブル内の大きなドメインにわたって、均一に分配されていると仮定される。次いで、Ｒｓ（Ｘ，Ｙ，Ｚ）とＳｓ（Ｘ）との自然結合も、Ｒ（Ｘ，Ｙ，Ｚ）とＳ（Ｘ）との自然結合のｄ／Ｎサンプルとなるであろう。対照的に、共通Ｘ値が含まれていることを確認しないＲ（Ｘ，Ｙ，Ｚ）およびＳ（Ｘ）の独立した従来のサンプルは、完全結合の（ｄ／Ｎ）２サンプルにすぎないであろうサンプルの結合結果を導くであろう。
【００１３】
便宜上、本明細書に説明される実施形態では、ハッシュ範囲は、ｈ（ｘ）＝Ｈ（ｘ）／Ｎを定義することによって間隔［０，１］にマッピングされ、式中、Ｎは、Ｈの範囲の最大値である。同様に、閾値ｄは、好適な閾値θ＝ｄ／Ｎにマッピングされ得る。間隔［０，１］が、説明を容易にするために本明細書で選択され、使用される。他の間隔も、他の実施形態によって実装され得る。
【００１４】
ある実施形態では、ある望ましい特性を達成するために、ハッシュ関数ｈは、強ユニバーサルハッシュ関数の既知のクラスからランダムに選ばれ得る。［０，１］にわたってアイテムを均一に分配するハッシュ関数ｈは、ランダムに選ばれる値ｘがｈ（ｘ）≦θを満足させる確率が、θであるように選択され得る。加えて、ある実施形態では、ドメイン内の別個の値ｘおよびｙに対するクラスにおける全てのハッシュ関数ｈを考えると、ｈ（ｘ）≦θである確率と、ｈ（ｙ）≦θである確率とは、互に独立している。
【００１５】
列Ｘのみに対するサンプリング閾値θＲおよびθｓをそれぞれ伴う、Ｒ（Ｘ，Ｙ，Ｚ）とＳ（Ｘ）との間の双方向結合を考える。本実施形態では、θは、θＲおよびθｓの最小値であると定義される。加えて、Ｒｓ（Ｘ，Ｙ，Ｚ）およびＳｓ（Ｘ）は、対応するサンプルである。ＲｓおよびＳｓの結合のサイズは、θによって乗算されるＲおよびＳの結合のサイズであると推定され得る。前述のハッシュ関数についての仮定の下、全てのハッシュ関数にわたって平均化されると、本推定値の相対的誤差は、結合結果のサイズが拡大するにつれて、ゼロに向かって減少することが、数学的に示され得る。
【００１６】
ハッシュベースのサンプリング技法の変形例が、先に説明されているが（例えば、Ｈａｄｊｉｅｌｅｆｔｈｅｒｉｏｕ，他による「Ｈａｓｈｅｄ  Ｓａｍｐｌｅｓ：Ｓｅｌｅｃｔｉｖｉｔｙ  Ｅｓｔｉｍａｔｏｒｓ  ｆｏｒ  Ｓｅｔ  Ｓｉｍｉｌａｒｉｔｙ  Ｓｅｌｅｃｔｉｏｎ  Ｑｕｅｒｉｅｓ」（Ｖｅｒｙ  Ｌａｒｇｅ  Ｄａｔａ  Ｂａｓｅｓ（ＶＬＤＢ）、２００８年）、Ｅｓｔａｎ，他による「Ｅｎｄ−ｂｉａｓｅｄ  Ｓａｍｐｌｅｓ  ｆｏｒ  Ｊｏｉｎ  Ｃａｒｄｉｎａｌｉｔｙ  Ｅｓｔｉｍａｔｉｏｎ」（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｄａｔａ  Ｅｎｇｉｎｅｅｒｉｎｇ、２００６年４月）を参照されたい）、これらのサンプリング技法は、１回につき１つの属性をサンプリングすることを説明する（例えば、１次元におけるサンプリング）。現代の技法は、本明細書に説明されるような複数の同時属性に対するハッシュベースのサンプリングスキームを処理せず、またそれを考慮しない。本発明の実施形態は、ハッシュベースのサンプリングを、多次元に拡張し、関与するテーブルの各々のサンプルを与えられる複結合式のサイズを推定する方法を提供する。
【００１７】
ここで、ある実施例に目を向けると、最初に、全ての属性が、共通のドメインを共有すると仮定される。そのような場合、各属性は、共通ハッシュ関数ｈを使用してハッシュされ得る。サンプリングを目的として、各テーブルＲは、閾値θＲに関連付けられる。その属性のうちの１つ以上のものが、閾値に対するハッシュサンプリング条件を満たす場合、テーブルからの記録が、含まれ得る。例えば、Ｒ（Ｘ，Ｙ，Ｚ）における記録（ａ，ｂ，ｃ）が、ｈ（ａ）≦θＲまたはｈ（ｂ）≦θＲまたはｈ（ｃ）≦θＲの場合、含まれるであろう。言い換えると、Ｒ（Ｘ，Ｙ，Ｚ）における（ａ，ｂ，ｃ）は、ｍｉｎ（ｈ（ａ），ｈ（ｂ），ｈ（ｃ））≦θＲの場合、サンプリングされる。本実施例では、ハッシュベースのサンプリングは、３次元において実施される（すなわち、３の次元性を有する）。
【００１８】
ここで、図１に目を向けると、ある実施形態による、サンプリングが２次元において起こり得る方法を幾何学的に描写するグラフが、概して、示される。図１に描写されるように、テーブル（または結合式）内の各属性に対して１つの次元が存在する。本実施例では、Ｔ（Ｘ，Ｙ）と示されるテーブルは、２つの属性ＸおよびＹを含む。サンプリング条件によって対象とされる多次元空間の領域は、本明細書では「顕著性領域（ｓａｌｉｅｎｔ  ｒｅｇｉｏｎ）」または単純に「顕著性（ｓａｌｉｅｎｔ）」と称される。図１に示される顕著性１０２のボリューム「ｖ」は、ｖによって与えられ得、ここで、ｖ＝１−（１−θ）ｋであり、ｋは、次元の数である。ある実施形態では、閾値θが十分に小さいとき、ｖは、ｋθとして概算され得る。図１に示される顕著性１０２は、Ｘのハッシュ値「ｈ（ｘ）」またはＹのハッシュ値「ｈ（ｙ）」が、閾値θ未満またはそれに等しい領域を表す。
【００１９】
ここで、図２に目を向けると、ある実施形態による、サンプリングが３次元において起こり得る方法を幾何学的に描写するグラフが、概して、示される。図２に描写されるように、テーブル（または結合式）内の各属性に対して１つの次元が存在する。本実施例では、Ｔ（Ｘ，Ｙ，Ｚ）と示されるテーブルは、３つの属性Ｘ、Ｙ、およびＺを含む。先に説明されるように、図２に示される顕著性２０２のボリューム「ｖ」は、ｖによって与えられ得、ここでは、ｖ＝１−（１−θ）ｋであり、ｋは、次元の数である。ある実施形態では、閾値θが十分に小さいとき、ｖは、ｋθとして概算され得る。図２に示される顕著性２０２は、Ｘのハッシュ値「ｈ（ｘ）」、Ｙのハッシュ値「ｈ（ｙ）」、またはＺのハッシュ値「ｈ（ｚ）」が、閾値θ未満またはそれに等しいボリュームの和集合を表す。
【００２０】
ｋ次元のサンプルＲｓおよびＳｓの結合のサイズは、ｖ＝１−（１−θ）ｋによって乗算されるＲおよびＳの結合のサイズであると推定され得、式中、ｋは、次元の数である。結合に関与するテーブルの１つが、全体としての数式より低次元を有するとき、ある実施形態は、顕著性領域を、より高次元空間にわたって適切に定義され得るように、調節することができる。例えば、サンプリングが、ここでは、３次元的に、Ｘ、Ｙ、およびＺにわたって実施される、Ｒ（Ｘ，Ｙ，Ｚ）およびＳ（Ｘ）の結合を再び考える。ＲのサンプルＲｓ（Ｘ，Ｙ，Ｚ）は、図２に示されるもの等の３次元ハッシュサンプリング方法を使用して得られ、ＳのサンプルＳｓ（Ｘ）は、１次元ハッシュサンプリング方法を使用して得られると仮定する。両方法は、共通閾値θを使用すると仮定する。次いで、Ｒｓ（Ｘ，Ｙ，Ｚ）およびＳｓ（Ｘ）の結合において、テーブルＳからの全ての記録は、ｈ（Ｘ）≦θを満たすであろう。これは、Ｒ（Ｘ，Ｙ，Ｚ）およびＳ（Ｘ）の結合に対する顕著性領域の適切なサブ空間である。２つのサンプルの結合は、完全結合の割合ｖではなく、完全結合の割合θのみのサイズを有するであろう。したがって、サンプルの結合は、テーブルＲとＳとの間の完全結合のサンプルのものと合致するであろう３次元分布を有しない。例えば、完全結合の３次元サンプルは、サンプリング閾値を満たさないＸ値を伴ういくつかの行を含むであろう一方、サンプルの結合は、それを含まないであろう。
【００２１】
本問題を改善するために、提案される技法の実施形態は、不在の属性に対して、より低次元のテーブルを、ドメインからの値でパディングすることができる。例えば、Ｄ（Ｙ）は、Ｙが属性ＹのドメインＤからの任意の値であり得ることを意味するように書かれ得、Ｄ（Ｚ）は、属性ＺのドメインＤからの任意の値であり得ると仮定する。概念的には、サンプルＳｓは、ここでは、クロス積Ｓ（Ｘ）×Ｄ（Ｙ）×Ｄ（Ｚ）のハッシュベースのサンプルとして、３次元において定義され得る。実践では、最大θである値にハッシュするＸ範囲の一部のみが明示的に記憶されるであろうため、Ｓｓを完全に具体化する必要はない。残りの要素は、記号的に表され得る。Ｒｓおよび新しいＳｓが結合されるとき、Ｓｓの記号要素（変数ＹおよびＺに関して、ｈ（ｙ）≦θまたはｈ（ｚ）≦θであるとアサートする）は、Ｒｓにおけるそれらの属性上の選択に変換される。
【００２２】
結合に関与するテーブルが、異なる閾値θｉを用いてサンプリングされると、それらの閾値の最小値が、結合のサンプルに対する閾値を定義する。
【００２３】
ここで、図３を参照すると、提案されるサンプリング技法による、１つを上回る結合を含む複結合式の結果が、概して、示される。図３は、２次元における３つのテーブルＡ（Ｘ，Ｙ）、Ｂ（Ｘ）、およびＣ（Ｙ）の自然結合を考慮する実施形態による、クエリのオリジナルおよびハッシュ空間図の実施例を描写する。グラフ３０２は、２次元（ｘ，ｙ）座標における入力テーブルを例証する。３つのテーブルの各々は、非対称にされ、ＢおよびＣは両方とも、ドメインからより高い値をとる一方、テーブルＡは、（ｘ，ｙ）値が略ドーナツ形のクラスタに集中させられている分布を有する。図３におけるグラフ３０４は、このデータセットに対する完全結合の結果を示す。図３におけるグラフ３０６および３０８は、（ｈ（ｘ），ｈ（ｙ））座標を含む、ハッシュ変換された空間における入力およびクエリ結果を示す。本変換の効果は、元々よりも、データがより均一に現れるようにすることである。顕著性領域は、空間の左および下部のスライスを含む。
【００２４】
ここで、図４を参照すると、ある実施形態による、サンプリングされたデータの実施形態が、概して、示される。図４に示されるサンプリングされたデータは、図３におけるグラフ３０２および３０４に基づく。本明細書に説明されるハッシュベースのサンプリング技法の実施形態を使用して、オリジナル（ｘ，ｙ）座標において、グラフ４０２は、サンプリングされたデータを描写し、グラフ４０４は、サンプリングされたデータの結合を描写する。図４に示されるように、本データセットに関して、サンプリングされたデータの結合は、図３のグラフ３０４に示される完全結合の代表である。
【００２５】
ここで、図５に目を向けると、ある実施形態による、クエリサイズ推定のための顕著性サンプリングに関するフロー図が、概して、示される。ブロック５０２において、サンプリングされるべきテーブルが、クエリ式に基づいて識別され、ブロック５０４において、テーブル内に結合され得る列は、クエリ式において規定されるように識別される。明確にするために、ロジックベースの言語が、クエリの書き込みのために使用されており、異なるテーブル内の列は、それらが結合されるとき、共通の変数名を共有する。それにもかかわらず、ＳＱＬ等の他の言語が、代わりに使用され得、共通の属性名を有することは、列が結合可能であるために要求されない。ブロック５０６において、ハッシュ関数が、各テーブル内の識別された列におけるデータ値に適用される。ある実施形態では、各ドメインタイプに対して１つのハッシュ関数が存在する。当技術分野で公知の任意のハッシュ関数が、利用され得るが、ユニバーサルなハッシュ関数族が、好ましくあり得る。
【００２６】
ブロック５０８において、特定のハッシュ値を有する列値が、選択される。先に説明されるように、これは、閾値数に基づき得、ある実施形態では、選択された列値の全てまたはサブセットが、同じ閾値数と比較される。
【００２７】
ブロック５１０において、選択された列値に関連付けられる行が、サンプリングのために使用されるべきサンプルテーブルを生成するために、識別される。テーブルが、全体としてのクエリの次元より低次元を有する場合、テーブルは、全般的な次元と合致するように、追加の列で記号的にパディングされる。ブロック５１２において、結合または他のクエリが、結合のサンプルを生成するために、サンプルテーブルに適用される。
【００２８】
実施形態は、固定された次元の顕著性領域に基づいてサンプリングするためのサンプルテーブルを実装することに限定されない。次元の数に上限はなく、次元の任意の数に基づく顕著性領域が、実施形態によって実装され得る。
【００２９】
ある実施形態では、完全結合のサイズは、サンプルの結合結果を１／ｖ倍にスケーリングすることによって推定され、ここで、ｖは、顕著性領域のボリュームである。いくつかの場合、本手順は、その誤差限界が定量化され得る推定値を与えることができる。
【００３０】
記録が１つ以上の属性において同じ値を含まない、データベースを考える。さらに、単一値ｘが、｜Ｑ｜β記録を超えて発生しないと仮定し、ここでは、βは、０と１との間の数であり、Ｑは、等結合クエリであり、｜Ｑ｜は、完全結合における記録の数である。そのような条件下では、以下の定理が当てはまる。サンプルの結合における記録の予期される数が、少なくとも｜Ｑ｜（β＋１）／２に比例する限り、全てのハッシュ関数にわたって平均化されると、１／ｖの近似値の相対的誤差は、データベースサイズが拡大するにつれてゼロに減少する。
【００３１】
前述の定理の前提条件は、具体的配慮を必要とする特別な場合、つまり、行の複数属性において現れるそれらの値と、データベースにおいて非常に頻繁に現れるそれらの値とを示唆する。これらの場合に対処するために、提案される方法の実施形態は、サンプリングの問題を、オリジナルサンプリンプ空間の互いに素なサブ空間に対するいくつかのサブサンプリングの問題に細分化することができる。有意な数の記録が１つを上回る列に同じ値を含むデータベースに対処するために、提案される方法の実施形態は、サンプリングの問題を、列値が共通ではないサブセットと、共通の列値が存在するサブセットとに分割することができる。サブセットは、互いに素であり、そのため、全体的濃度（ｏｖｅｒａｌｌ  ｃａｒｄｉｎａｌｉｔｙ）は、各サブセットに対する推定値の合計をとることによって推定され得る。例えば、３つの属性クエリＱ（Ｘ，Ｙ，Ｚ）を考慮されたい。Ｑは、以下のように表され得る：Ｑ１∪Ｑ２∪Ｑ３∪Ｑ４∪Ｑ５、ここで、Ｑ１＝σ（Ｘ＝Ｙ＝Ｚ）Ｑ、Ｑ２＝σ（Ｘ＝Ｙ≠Ｚ）Ｑ、Ｑ３＝σ（Ｘ＝Ｚ≠Ｙ）Ｑ、Ｑ４＝σ（Ｚ＝Ｙ≠Ｘ）Ｑ、Ｑ５＝σ（Ｘ≠Ｚ，Ｙ≠Ｚ，Ｘ≠Ｙ）Ｑである。｜Ｑ｜に関する推定値は、推定値の合計｜Ｑ１｜＋｜Ｑ２｜＋｜Ｑ３｜＋｜Ｑ４｜＋｜Ｑ５｜であり得る。列値は共通ではないため、｜Ｑ５｜は、前述のように推定され得る。Ｑ１に対して、全ての列は等しいため、テーブルは、３次元ではなく、事実上、１次元である。幾何学的に、これは、Ｑに対する（Ｘ，Ｙ，Ｚ）立方体の対角線に対応する。このより少ない次元性のため、｜Ｑ１｜は、前述のように推定され得るが、ｋ＝３ではなく、ｋ＝１を使用する。同様の方法で、オリジナル空間の２次元サブセットに対応するため、｜Ｑ２｜、｜Ｑ３｜、および｜Ｑ４｜の各々は、ｋ＝２を用いて推定され得る。
【００３２】
発見的最適化として、推定に寄与する可能性がない場合を回避することによって、より少ないサンプリング作業を行うことが可能になり得る。例えば、Ｑにおいて、属性Ｘは、従業員ＩＤであり、属性Ｙは、Ｘのマネージャの従業員ＩＤと仮定する。会社の最高経営責任者（ＣＥＯ）（彼らのマネージャである）は別として、Ｘは、ＱにおけるＹとは決して等しくない。したがって、前述の｜Ｑ｜を推定する際、｜Ｑ１｜および｜Ｑ２｜を無視することは妥当である。Ｑに対する唯一の回答が、会社のＣＥＯの識別であるＸを有するとき等、｜Ｑ１｜および｜Ｑ２｜を含めることが重要である実施例を構築し得るため、これは、発見的最適化にすぎない。
【００３３】
単一値ｗが、全ての記録の有意な割合において発生するとき、推定値の品質は、不良となり得る。ｈ（ｗ）は、顕著性領域内にあり、その場合、クエリ推定は、真のクエリサイズの過大推定になる可能性が高いか、またはｈ（ｗ）は、顕著性領域内になく、その場合、クエリ推定は、真のクエリサイズの過小推定になる可能性が高いかのいずれかである。非常に一般的な値に対処するために、ある実施形態は、サブサンプリングアプローチを適用し得る。前述のクエリＱに対して、ｗは、記録の大きな割合において発生するＺに対する値であると仮定する。例えば、Ｚは、従業員の医療計画であり得、従業員の５０％は、ｗによって表される最も一般的な計画に登録され得る。次いで、Ｑは、以下のように表され得る：Ｔ１∪Ｔ２、ここで、Ｔ１＝σ（ｗ＝Ｚ）ＱおよびＴ２＝σ（ｗ≠Ｚ）Ｑである。｜Ｑ｜に関する推定値は、推定値の合計｜Ｔ１｜＋｜Ｔ２｜である。前述のサブサンプリングアプローチに従って、｜Ｔ１｜が、ｋ＝２を用いて推定され、｜Ｔ２｜が、ｋ＝３を用いて推定されるであろう。複数の共通値が存在する場合（非常に少ない数の選択肢を有する属性によくあり得るような）、提案される方法の実施形態は、各共通値に対して別個の場合を使用して、クエリをサブサンプルするであろう。クエリからの属性が、１つを上回るドメインに由来するとき、各ドメインＤは、それ自体のハッシュ関数ｈＤを有し得る。顕著性領域は、各属性がそのドメインのハッシュ関数を使用してハッシュされることを除いて、前述のように定義される。
【００３４】
技術的効果および利益は、より正確にクエリコスト推定値を予測し得るサンプルデータと、サンプリングされたデータに基づく他のデータベース推定値とを生成する能力を含む。
【００３５】
いくつかの実施形態では、１つ以上の方法が、１つ以上のタイプのメモリへのアクセスを有する１つ以上のプロセッサに対する一組の命令において具現化される。本命令は、ハードウェアまたはソフトウェアにおいてコーディングされ得る。限定ではないが、コンピュータ、携帯電話、タブレットデバイス、ゲーム機、ネットワーク管理デバイス、フィールドプログラマブルゲートアレイ、およびクラウドベースのコンピュータシステムを含む、多くの種類のプラットフォームが使用され得る。本開示の側面は、並列演算のために、複数のデバイス上で展開され得る。実施形態は、データベース管理システム等のより大きなシステムの構成要素として使用され得る。
【００３６】
図６を参照すると、ある実施形態による、クエリサイズ推定のための顕著性サンプリングに関する例示的システム６００のブロック図が、概して、示される。システム６００は、ホストシステム６０４上に位置する１つ以上のコンピュータプログラムによって実行される、顕著性サンプリングクエリサイズ推定を実施するための、サンプリングアルゴリズム６１０を含む。ある実施形態では、アルゴリズム６１０の全てまたは一部は、ホストシステム６０４上で実行するデータベース管理システムの一部である。別の実施形態では、アルゴリズム６１０の全てまたは一部は、トランザクションとクエリとの両方をサポートするシステムの構成要素である。
【００３７】
図６に描写されるシステム６００は、１つ以上のユーザシステム６０２を含み、それを通して、１つ以上の地理的場所におけるユーザ（例えば、エンドユーザ、データベース管理者）は、データベースクエリおよび／またはトランザクションを実行するプログラムを開始するために、ホストシステム６０４にコンタクトし得る。ユーザシステム６０２は、ホストシステム６０４にネットワーク６０６を介して結合される。各ユーザシステム６０２は、本明細書に説明されるプロセスを実行するためのコンピュータプログラムを実行する、汎用コンピュータを使用して実装され得る。ユーザシステム６０２は、パーソナルコンピュータ（例えば、ラップトップ、タブレットコンピュータ、セルラー電話）またはホスト付属端末であり得る。ユーザシステム６０２がパーソナルコンピュータである場合、本明細書に説明される処理は、ユーザシステム６０２およびホストシステム６０４によって共有され得る。ユーザシステム６０２はまた、ゲーム機、ネットワーク管理デバイス、およびフィールドプログラマブルゲートアレイも含み得る。加えて、複数のユーザシステム６０２および／またはホストシステム６０４は、顕著性サンプリングを実施するために、並列的に動作し得る。
【００３８】
ネットワーク６０６は、限定ではないが、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、グローバルネットワーク（例えば、インターネット）、仮想プライベートネットワーク（ＶＰＮ）、クラウドネットワーク、およびイントラネットを含む、既知のネットワークの任意のタイプであり得る。ネットワーク６０６は、無線ネットワーク、または当分野で公知の物理ネットワーク実装の任意の種類を使用して実装され得る。ユーザシステム６０２は、全てのユーザシステム６０２が、同じネットワークを通してホストシステム６０４に結合されないように、複数のネットワーク（例えば、セルラーおよびインターネット）を通してホストシステムに結合され得る。ユーザシステム６０２およびホストシステム６０４の１つ以上のものが、ネットワーク６０６に、無線方式で接続され得る。一実施形態では、ネットワークは、インターネットであり、１つ以上のユーザシステム６０２は、ホストシステム６０４にネットワーク６０６を通してコンタクトするために、ユーザインターフェースアプリケーション（例えば、ウェブブラウザ）を実行する。別の例示的実施形態では、ユーザシステム６０２は、直接（すなわち、ネットワーク６０６を通さずに）ホストシステム６０４に接続される。さらなる実施形態では、ホストシステム６０４は、記憶デバイス６０８に直接接続され、またはそれを含む。
【００３９】
記憶デバイス６０８は、クエリサイズ推定のための顕著性サンプリングと関連するデータを含み、電子情報を記憶するための様々なデバイスを使用して実装され得る。ある実施形態では、記憶デバイス６０８内に記憶されるデータは、限定ではないが、１つ以上のデータベース、データベーステーブル、インデックス、および本明細書に説明される実施形態によって利用される他のデータを含む。記憶デバイス６０８は、ホストシステム６０４内に含まれるメモリを使用して実装され得るか、または別個の物理デバイスであり得ることを理解されたい。記憶デバイス６０８は、ネットワーク６０６を含む分散環境を横断する統合データソースとして、論理的にアドレス可能であり得る。記憶デバイス６０８内に記憶される情報は、ホストシステム６０４を介して、および／またはユーザシステム６０２を介して読み出され、操作され得る。
【００４０】
図６に描写されるホストシステム６０４は、サーバによってアクセス可能な記憶媒体内に記憶されるコンピュータプログラムに応答して動作する、１つ以上のサーバを使用して実装され得る。ホストシステム６０４は、ユーザシステム６０２と通信するために、ネットワークサーバ（例えば、ウェブサーバ）として動作し得る。ホストシステム６０４は、ユーザシステム６０２に、およびそれから情報を送信および受信することを取り扱い、関連付けられたタスクを実施することができる。ホストシステム６０４はまた、ホストシステム６０４への不正アクセスを防止し、正当なアクセスへの任意の制限を施行するためのファイアウォールも含み得る。例えば、管理者は、全システムへのアクセスを有し、システムの一部を修正する権限を有し得る。ファイアウォールは、当分野で公知であるような従来のハードウェアおよび／またはソフトウェアを使用して実装され得る。
【００４１】
ホストシステム６０４はまた、アプリケーションサーバとしても動作し得る。ホストシステム６０４は、本明細書に説明されるような実施形態の側面を提供するために、アルゴリズム６１０を含む、１つ以上のコンピュータプログラムを実行する。処理は、アプリケーションをユーザシステム６０２に提供することによって、ユーザシステム６０２およびホストシステム６０４によって共有され得る。代替として、ユーザシステム６０２は、本明細書に説明される実施形態処理の一部または全てを実施するためのスタンドアローンのソフトウェアアプリケーションを含み得る。先に説明されるように、別個のサーバが、ネットワークサーバ機能およびアプリケーションサーバ機能を実装するために利用され得ることを理解されたい。代替として、ネットワークサーバ、ファイアウォール、およびアプリケーションサーバは、必須機能を実施するためのコンピュータプログラムを実行する単一サーバによって実装され得る。
【００４２】
当業者によって理解されるであろうように、本発明の側面は、システム、方法、またはコンピュータプログラム製品として具現化され得る。故に、本発明の側面は、全体的にハードウェアである実施形態、全体的にソフトウェアである実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または本明細書で、全て、概して、「回路」、「モジュール」、もしくは「システム」と称され得るソフトウェアおよびハードウェアの側面を組み合わせる実施形態の形態を成し得る。その上さらに、本発明の側面は、その上に具現化されるコンピュータ読み取り可能なプログラムコードを有する、１つ以上のコンピュータ読み取り可能な媒体内で具現化されるコンピュータプログラム製品の形態を成し得る。
【００４３】
１つ以上のコンピュータ読み取り可能な媒体の任意の組み合わせが、利用され得る。コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な信号媒体またはコンピュータ読み取り可能な記憶媒体であり得る。コンピュータ読み取り可能な記憶媒体は、例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体システム、装置、もしくはデバイス、または前述の任意の好適な組み合わせであり得る。コンピュータ読み取り可能な記憶媒体のより具体的実施例（非包括的リスト）は、以下の、１つ以上のワイヤを有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消却プログラム可能読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、または前述の任意の好適な組み合わせを含むであろう。本明細書の文脈において、コンピュータ読み取り可能な記憶媒体は、命令実行システム、装置、またはデバイスによって、またはそれらと関係しての使用のためのプログラムを含有または記憶し得る任意の有形的表現媒体であり得る。
【００４４】
コンピュータ読み取り可能な信号媒体は、例えば、ベースバンド内に、または搬送波の一部として、その中に具現化されるコンピュータ読み取り可能なプログラムコードを伴う伝搬データ信号を含み得る。そのような伝搬信号は、限定ではないが、電磁気、光、またはそれらの任意の好適な組み合わせを含む、任意の様々な形状を成し得る。コンピュータ読み取り可能な信号媒体は、コンピュータ読み取り可能な記憶媒体ではない、命令実行システム、装置、またはデバイスによって、またはそれらと関係しての使用のためのプログラムを通信、伝搬、またはトランスポートし得る、任意のコンピュータ読み取り可能な媒体であり得る。
【００４５】
コンピュータ読み取り可能な媒体上で具現化されるプログラムコードは、限定ではないが、無線、有線、光ファイバケーブル、ＲＦ等、または前述の任意の好適な組み合わせを含む、任意の適切な媒体を使用して伝送され得る。
【００４６】
本発明の側面に関する動作を実行するためのコンピュータプログラムコードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等、オブジェクト指向プログラミング言語と、「Ｃ」プログラミング言語または類似プログラミング言語等、従来の手続き型プログラミング言語とを含む、１つ以上のプログラミング言語の任意の組み合わせで書き込まれ得る。プログラムコードは、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、ユーザのコンピュータ上で部分的におよびリモートコンピュータ上で部分的にスタンドアローンのソフトウェアパッケージとして、またはリモートコンピュータもしくはサーバ上で全体的に実行し得る。後者のシナリオでは、リモートコンピュータは、ユーザのコンピュータに、ローカルエリアネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを通して接続され得、または接続は、外部コンピュータに（例えば、インターネットサービスプロバイダを使用するインターネットを通して）行われ得る。
【００４７】
本発明の実施形態の側面が、本発明の実施形態による、方法、装置（システム）、およびコンピュータプログラム製品のフローチャート例証および／またはブロック図を参照して前述される。フローチャート例証および／またはブロック図の各ブロック、ならびにフローチャート例証および／またはブロック図内のブロックの組み合わせは、コンピュータプログラム命令によって実装され得ることが理解されるであろう。これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートおよび／またはブロック図のブロックまたは複数のブロックに規定される機能／作用を実装するための手段を生成するように、機械を製造するための汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供され得る。
【００４８】
これらのコンピュータプログラム命令はまた、コンピュータ読み取り可能な媒体内に記憶される命令が、フローチャートおよび／またはブロック図のブロックまたは複数のブロック内に規定される機能／作用を実装する命令を含む、製造品を製造するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに、特定の様式で機能するように命令し得る、コンピュータ読み取り可能な媒体内に記憶され得る。
【００４９】
コンピュータプログラム命令はまた、コンピュータまたは他のプログラム可能装置上で実行する命令が、フローチャートおよび／またはブロック図のブロックまたは複数のブロック内に規定される機能／作用を実装するためのプロセスを提供するように、コンピュータ、他のプログラム可能装置、または他のデバイス上で実施されるべき一連の動作ステップが、コンピュータ実装プロセスを生じさせるように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ得る。
【００５０】
図内のローチャートおよび／またはブロック図は、本発明の種々の実施形態による、システム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能性、および動作を例証する。これに関して、フローチャートまたはブロック図内の各ブロックは、モジュール、セグメント、またはコードの一部を表し得、これは、規定される論理機能を実装するための１つ以上の実行可能な命令を備える。また、いくつかの代替実装では、ブロック内に記述される機能は、図内に記述される順序に従わずに発生し得ることにも留意されたい。例えば、連続して示される２つのブロックは、実際、実質的に、並列的に実行され得、またブロックは、時として、関与する機能性に応じて、逆の順序で実行され得る。また、ブロック図および／またはフローチャート例証の各ブロック、ならびにブロック図および／またはフローチャート例証内のブロックの組み合わせは、規定される機能または作用を実施する専用ハードウェアベースのシステム、または専用ハードウェアとコンピュータ命令との組み合わせによって実装され得ることにも留意されたい。
【００５１】
本明細書に使用される専門用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することは意図されない。本明細書に使用されるように、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈が明確にそうでないことを示さない限り、複数形も含むことが意図される。さらに、「備える（ｃｏｍｐｒｉｓｅｓ）」および／または「備える（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、本明細書に使用されるとき、所定の特徴、整数、ステップ、動作、要素、および／または構成要素の存在を規定するが、もう１つの他の特徴、整数、ステップ、動作、要素構成要素、および／またはそれらのグループの存在または追加を除外しないことが理解されるであろう。
【００５２】
以下の請求項における全ての手段またはステップの対応する構造、材料、作用、および均等物、さらに機能要素は、具体的に請求されるように、他の請求される要素と組み合わせた機能を実施するための任意の構造、材料、または作用を含むように意図される。本発明の説明は、例証及び説明を目的として提示されているが、開示される形式における発明に包括または限定されることは意図されない。多くの修正および変形例は、本発明の範囲および精神から逸脱することなく、当業者に明白となるであろう。実施形態は、本発明の原則および実践的用途を最良に説明し、当業者が、熟慮される特定の使用に好適であるような種々の修正を伴う、種々の実施形態に関する発明を理解することを可能にするために、選ばれ、説明される。
【００５３】
本明細書に描写される任意のフロー図は、一実施例のみを示す。本明細書に説明されるこの図またはステップ（または動作）への多くの変形例は、本発明の精神から逸脱することなく存在し得る。例えば、ステップは、異なる順序で実施され得、またステップは、追加され、削除され、もしくは修正され得る。これらの変形例の全ては、請求される発明の一部と見なされる。
【００５４】
本発明の好ましい実施形態が説明されているが、当業者は、現在および将来の両方で、続く請求項の範囲内に該当する種々の改良型および拡張型を作成し得ることが理解されるであろう。これらの請求項は、最初に説明される発明のための適切な保護を維持するように解釈されるべきである。
【図１】
2018185848.tif 000003
【図２】
2018185848.tif 000004
【図３】
2018185848.tif 000005
【図４】
2018185848.tif 000006
【図５】
2018185848.tif 000007
【図６】
2018185848.tif 000008
【外国語明細書】
2018185848000001.pdf