(57)【要約】  一態様は、アクティブクエリのメンテナンス方法を含む。当該方法は、データベース内の少なくとも２つの関係におけるデータ項目に基づきクエリを実行し、前記クエリに対応付けられたクエリ結果と制御情報とを出力する工程を含む。前記クエリ結果と、前記制御情報とを記録する。前記実行する工程の後に前記データ項目の内の少なくとも１つが更新されたことを示す通知を受信する。前記実行する工程の後に更新された前記データ項目を反映するよう、前記制御情報に応じて前記クエリ結果を修正する。
2016509281.tif 000002
【特許請求の範囲】
【請求項１】
データベース内の少なくとも２つの関係におけるデータ項目に基づきクエリを実行し、  前記クエリに対応付けられたクエリ結果と制御情報とを出力する工程と、
前記クエリ結果と、前記制御情報とを記録する工程と、
前記実行する工程の後に前記データ項目の内の少なくとも１つが更新されたことを示す通知を受信する工程と、
前記実行する工程の後に更新された前記データ項目を反映するよう、前記制御情報に応じて前記クエリ結果を修正する工程と、
を有するアクティブクエリのメンテナンス方法。
【請求項２】
前記制御情報を、前記修正する工程に基づき更新する工程と、
前記修正されたクエリ結果と、前記更新された制御情報とを記録する工程と、
をさらに有する請求項１に記載の方法。
【請求項３】
前記修正されたクエリ結果と、前記更新された制御情報の記録後に前記データ項目の内少なくとも１つが更新されたことを示す第２の通知を受信する工程と、
前記第２の通知内のデータ項目を反映するよう、前記更新された制御情報に応じて前記修正されたクエリ結果を修正する工程と、
をさらに有する請求項２に記載の方法。
【請求項４】
前記実行する工程は、マージ結合動作を実行することを含み、
前記制御情報は、マージ結合トレース情報に基づき生成される、
請求項１に記載の方法。
【請求項５】
前記制御情報は、選択されたデータ項目の更新が前記クエリ結果に及ぼし得る影響を示す感度指数を含む請求項１に記載の方法。
【請求項６】
前記選択されたデータ項目は、前記データベースにおける別データ項目にアクセスするために使用されるキーである請求項５に記載の方法。
【請求項７】
前記クエリに対応付けられた前記制御情報は、前記実行する工程の最中に収集されたトレース情報に基づいている請求項１に記載の方法。
【請求項８】
前記記録する工程は、前記クエリ結果のビューを実体化することを含む請求項１に記載の方法。
【請求項９】
前記クエリは、トランザクションがコミットする時間における前記データベースの状態に矛盾しないことが求められる前記トランザクションを構成する複数のクエリの１つである、請求項１に記載の方法。
【請求項１０】
前記トランザクションは別トランザクションと並行して実行され、
前記実行する工程後に更新された前記データ項目の内少なくとも１つは、前記別のトランザクションが前記データベースにコミットすることに応じて前記別のトランザクションにより更新された、請求項９に記載の方法。
【請求項１１】
コンピュータ読取可能コンピュータ命令を有するメモリと、
前記コンピュータ読取可能命令を実行するプロセッサと、
を有するアクティブクエリのメンテナンスシステムであって、前記プロセッサは、
データベース内の少なくとも２つの関係におけるデータ項目に基づきクエリを実行し、  前記クエリに対応付けられたクエリ結果と制御情報とを出力する工程と、
前記クエリ結果と、前記制御情報とを記録する工程と、
前記実行する工程の後に前記データ項目の内の少なくとも１つが更新されたことを示す通知を受信する工程と、
前記実行する工程の後に更新された前記データ項目を反映するよう、前記制御情報に応じて前記クエリ結果を修正する工程と、
を有する方法を実行するアクティブクエリのメンテナンスシステム。
【請求項１２】
前記方法は、
前記制御情報を、前記修正する工程に基づき更新する工程と、
前記修正されたクエリ結果と、前記更新された制御情報とを記録する工程と、
をさらに有する請求項１１に記載のシステム。
【請求項１３】
前記方法は、
前記修正されたクエリ結果と、前記更新された制御情報の記録後に前記データ項目の内少なくとも１つが更新されたことを示す第２の通知を受信する工程と、
前記第２の通知内のデータ項目を反映するよう、前記更新された制御情報に応じて前記修正されたクエリ結果を修正する工程と、
をさらに有する請求項１２に記載のシステム。
【請求項１４】
前記実行する工程は、マージ結合動作を実行することを含み、
前記制御情報は、マージ結合トレース情報に基づき生成される、
請求項１２に記載のシステム。
【請求項１５】
前記制御情報は、選択されたデータ項目の更新が前記クエリ結果に及ぼし得る影響を示す感度指数を含む請求項１１に記載のシステム。
【請求項１６】
前記選択されたデータ項目は、前記データベースにおける別データ項目にアクセスするために使用されるキーである請求項１５に記載のシステム。
【請求項１７】
前記クエリに対応付けられた前記制御情報は、前記実行する工程の最中に収集されたトレース情報に基づいている請求項１１に記載のシステム。
【請求項１８】
前記記録する工程は、前記クエリ結果のビューを実体化することを含む請求項１１に記載のシステム。
【請求項１９】
前記クエリは、トランザクションがコミットする時間における前記データベースの状態に矛盾しないことが求められる前記トランザクションを構成する複数のクエリの１つである、請求項１１に記載のシステム。
【請求項２０】
前記トランザクションは別トランザクションと並行して実行され、
前記実行する工程後に更新された前記データ項目の内少なくとも１つは、前記別のトランザクションが前記データベースにコミットすることに応じて前記別のトランザクションにより更新された、請求項１９に記載のシステム。
【請求項２１】
アクティブクエリをメンテナンスするコンピュータプログラムプロダクトであって、前記コンピュータプログラムプロダクトは、コンピュータ読取可能プログラムコードが組み込まれたコンピュータ読取可能記憶媒体を有し、コンピュータプロセッサによって実行されると、前記コンピュータプロセッサに方法を実行させ、前記方法は、
データベース内の少なくとも２つの関係におけるデータ項目に基づきクエリを実行し、  前記クエリに対応付けられたクエリ結果と制御情報とを出力する工程と、
前記クエリ結果と、前記制御情報とを記録する工程と、
前記実行する工程の後に前記データ項目の内の少なくとも１つが更新されたことを示す通知を受信する工程と、
前記実行する工程の後に更新された前記データ項目を反映するよう、前記制御情報に応じて前記クエリ結果を修正する工程と、
を有するコンピュータプログラムプロダクト。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、２０１２年１２月２０日に出願された米国特許出願第１３／７２２，０６７号に基づく利益を主張し、本明細書の一部を構成するものとしてその全文を援用する。
【背景技術】
【０００２】
本発明はデータベースクエリに関し、より詳細には、アクティブデータベースクエリのメンテナンスに関する。
【０００３】
データベース管理システムにより、対応するクエリが情報に対してサポートされた状態で、ユーザが大量の情報を保存、更新可能となる。クエリがデータベースの最新データを反映した回答を返すことが理想だが、長期実行中のクエリまたはトランザクションでは、並行して実行中の別トランザクションにより更新されるデータを処理する必要が生じる。
【０００４】
そのような矛盾する更新を管理するための並行処理制御技術が現在、存在する。例えば、矛盾するトランザクションを待機状態とすることで、複数のトランザクションが矛盾するデータ項目にアクセスさせないロックベース技術が存在する。ロックベース技術では、デッドロックにより、時にトランザクションを中止する必要があるため、頻繁にアクセスされるデータ項目ではキューが長くなる可能性がある。さらに現在利用可能な制御技術として、オプティミスティック法が挙げられる。オプティミスティック法では、トランザクションの最後にのみ矛盾の確認が行われ、矛盾が発見されるとトランザクションが中止される。したがって、頻繁に矛盾が生じる場合、無駄な作業が多くなる。マルチバージョンタイムスタンプベース制御技術では、データ項目に対するアクセスタイムスタンプを追跡し、当該項目のタイムスタンプに対し矛盾するデータ項目がトランザクションで書き込まれる必要がある場合、当該トランザクションを中止する。ここでも無駄な作業が多くなり得る。
【０００５】
クエリ高速化のため、データベース内の導出情報を記憶して、データ検索および／または計算を効率化する技術が一般的に使用されている。このような導出情報の一例として、マテリアライズドビューが挙げられる。マテリアライズドビューでは、クエリに対する回答（例えば、サブクエリ）が明示的にデータベースに記憶される。この記憶されたサブクエリが後のクエリで利用可能な場合、マテリアライズドビューを利用しない場合と比較して、当該後のクエリに対して迅速な回答が可能となる。
【発明の概要】
【０００６】
実施例は、アクティブクエリをメンテナンスする方法、システム、およびコンピュータプログラムプロダクトを含む。本願の一態様は、データベース内の少なくとも２つの関係におけるデータ項目に基づきクエリを実行し、前記クエリに対応付けられたクエリ結果と制御情報とを出力する工程を含む。他の態様においては、前記クエリ結果と、前記制御情報とを記録する工程を含む。他の態様においては、前記実行する工程の後に前記データ項目の内の少なくとも１つが更新されたことを示す通知を受信する工程を含む。さらに別の態様は、前記実行する工程の後に更新された前記データ項目を反映するよう、前記制御情報に応じて前記クエリ結果を修正する工程を含む。
【０００７】
本発明の技術により、さらなる特徴および効果も実現される。本発明の他の実施例および態様は、本明細書に詳細に説明され、請求項に記載された発明の一部をなすと考えられる。効果や特徴と合わせて本発明をより一層理解するために、本明細書の説明および図面を参照されたい。
【図面の簡単な説明】
【０００８】
本発明とみなされる主題は、本明細書の末尾の請求項に具体的に挙げられ、明示的にその権利を主張されている。本発明の前述およびその他の特徴および効果は、以下に挙げる添付図面を参照して後述する詳細な説明を読めば明白である。
【０００９】
【図１】小売企業用データベースの一例を示す。
【００１０】
【図２】例示的実施例に係るアクティブデータベースクエリのメンテナンスを実行する処理を示す。
【００１１】
【図３】マージ結合処理を含むクエリのトレースの一例を示す。
【００１２】
【図４】本発明の実施例に係るアクティブデータベースクエリのメンテナンスを実行し得るシステムのブロック図を示す。
【実施例】
【００１３】
例示の実施例は、アクティブデータベーストランザクション間の矛盾を、増分メンテナンス処理により解消することに関する。データベース性能を向上するため、サブクエリ結果を、マテリアライズドビューを使用して保存する。ここで説明される実施例では、増分ビューメンテナンス処理により、データベース更新のたびにマテリアライズドビューが再計算しなおされることを防ぐ。増分ビューメンテナンス処理では、ビューの初期実体化に際して生成されるトレース情報を利用してマテリアライズドビューが最新化される。
【００１４】
ここで説明される実施例は、アクティブトランザクション間の矛盾を増分メンテナンス処理により解消する。トランザクション（Ｔ１）がコミットして、アクティブトランザクション（Ｔ２）に必要なデータ項目が更新されると（例えば、新しい値の書き込みやデータ項目の削除）、Ｔ２に当該変更に対するメンテナンス用のフラグが立てられる。Ｔ２の完了前に、コミット済みの、並行して実行されていたトランザクションによる、必要項目に対する全ての変化を考慮して、Ｔ２の実行が修正される。複数回メンテナンスが必要となる場合もある。Ｔ２を中断、再開するのではなく、Ｔ２の実行を増分的に修正することで、システムはＴ２で処理された作業の多くを保持できるのである。本実施例は感度指数と呼ばれる、Ｔ２が必要とする項目を認識し、すでに実行された部分に対し当該項目に対する変更がいかに影響するかを迅速に判断するための新規構造の作成を含む。感度指数は、別トランザクションがデータを更新している間に、マテリアライズドビューを作成することや、マテリアライズドビューの最新状態を効果的かつ増分的に保つことに使用されてもよい。
【００１５】
図１に、ここで説明される実施例の各種特徴を示す、顧客に商品を売る小売企業用データベースの一例を示す。図１に示すデータベースは、顧客テーブル１０２と、注文テーブル１０４と、ラインアイテムテーブル１０６とを有する。顧客テーブル１０２は、一意の識別子（Ｃ＿ＩＤ）と、カテゴリ名（ＣＡＴＥＧＯＲＹ）と、顧客名（ＮＡＭＥ）と、その他属性とを含む、顧客についての情報とを記憶する。注文テーブル１０４は、注文識別子（Ｏ＿ＩＤ）と、顧客識別子（Ｃ＿ＩＤ）と、注文日（ＤＡＴＥ）と、その他属性とを有する、顧客による注文についての情報を記憶する。各注文は、ラインアイテムテーブル１０６に記録されるようなラインアイテムの数量を含んでもよい。ラインアイテムテーブル１０６に記録される各ラインアイテムは、対応する注文識別子（Ｏ＿ＩＤ）と、商品識別子（Ｐ＿ＩＤ）と、注文された商品の数量（ＱＵＡＮＴＩＴＹ）と、その他属性とを有する。データベースはさらに、図１に不図示のその他テーブル（ここでは「関係」とも称する）を有してもよい。
【００１６】
小売企業での女性ユーザが、異なる顧客カテゴリで商品について整理分析するものとする。彼女は各カテゴリの顧客が５つ以上購入した商品を確認したいと判断する。彼女は以下の構造化問い合わせ言語（ＳＱＬ）で表現可能な商品カテゴリビュー（Ｐｃａｔ）を定義する。
Ｃｒｅａｔｅ  Ｖｉｅｗ  Ｐｃａｔ  Ａｓ
Ｓｅｌｅｃｔ  Ｄｉｓｔｉｎｃｔ  ＣＡＴＥＧＯＲＹ，Ｐ＿ＩＤ
Ｆｒｏｍ  Ｌｉｎｅ＿Ｉｔｅｍ  Ｌ，Ｏｒｄｅｒｓ  Ｏ，Ｃｕｓｔｏｍｅｒ  Ｃ
Ｗｈｅｒｅ  Ｌ．Ｏ＿ＩＤ＝Ｏ．Ｏ＿ＩＤ  Ａｎｄ  Ｏ．Ｃ＿ＩＤ＝Ｃ．Ｃ＿ＩＤ  Ａｎｄ  Ｌ．ＱＵＡＮＴＩＴＹ＞＝５
【００１７】
データログのようなルールベース言語では、同様のビューは以下のとおりに示されてもよい。
Ｐｃａｔ（ＣＡＴＥＧＯＲＹ，Ｐ＿ＩＤ）：−
ＬｉｎｅＩｔｅｍ（Ｐ＿ＩＤ，Ｏ＿ＩＤ，ＱＵＡＮＴＩＴＹ，．．．），
Ｏｒｄｅｒｓ（Ｏ＿ＩＤ，Ｃ＿ＩＤ，．．．），
Ｃｕｓｔｏｍｅｒ（Ｃ＿ＩＤ，ＣＡＴＥＧＯＲＹ，．．．），
ＱＵＡＮＴＩＴＹ＞＝５
【００１８】
当該ユーザがクエリで共通してＰｃａｔビューを使用すると判断すると、ビュー条件を満たすレコードが明示的に保存されるビューを実体化すると判断してもよい。実体化は、長期に及ぶと可能性のあるトランザクション（Ｔ）で実行される。明示的な保存、即ちＴのコミットにより、保存されたＰｃａｔビューの現在のデータベース状態に対する矛盾が生じてはならない。しかし、Ｔ開始後に更なるトランザクションがコミットされ、それによりＴで読み込み済みのデータが変更され得るため、矛盾を生じないのは困難である。従来の解決法では、矛盾が生じるとＴが中止されるか、Ｔ実行中に起こり得る矛盾が全て排除されるため、並行性が低下する。現在利用可能な別の技術として、ビュー内の各レコードの導出可能回数（即ち、「サポート数」）を記憶するため、ビューを拡大するものがある。これにより、システムは、いつ最新の導出されたレコードが削除されたか把握可能となる。さらなる導出が不能となった場合にのみ、レコードはマテリアライズドビューから削除される。この例では、各組（ＣＡＴＥＧＯＲＹ，Ｐ＿ＩＤ）の導出総数により、ビューが拡大されるものとする。
【００１９】
本発明の実施例において、データベース管理システムはクエリ実行用の実行プランを選択する。上記の例では、Ｐｃａｔビュー用の例示的実行プラン（ここでは「Ｐｃａｔビュー用第１実行プラン」と称する）は以下のステップを含む。
１．Ｏ＿ＩＤ順に、ラインアイテムテーブル１０６および注文テーブル１０４内のレコードにアクセスし、ラインアイテムテーブル１０６内のレコードに対しＱＵＡＮＴＩＴＹに関するフィルタ条件を適用。
２．結果として得られるレコードシーケンスのマージ結合を実行。
３．属性ＣＡＴＥＧＯＲＹおよびＰ＿ＩＤのみ固定して、ステップ２の結果の各レコードＲと、顧客テーブル１０２内のＣ＿ＩＤのレコードをマージ結合する。
４．ステップ３の結果から一意の組を認識し、その重複数と共に各組を記憶。
【００２０】
特定の順序で関係にアクセスするため、上述のように、データベース管理システムは保存された関係の物理的順序を利用するか、所望の順序となるよう、関係を明示的にソートしてもよい。あるいは、データベース管理システムは適切な指数構造を利用して、関係内をキー順に繰り返し（イテレート）してもよい。なお、結合に対するオペランドの１つが結合キーにより順序付けられていない場合でも、ここで説明されるデータベース管理システムの実施形態では、上述のＰｃａｔビュー用第１実行プランのステップ３のとおり、非順序入力に対し、一度に１レコードの割合でマージ結合シーケンスを利用することが可能である。
【００２１】
上述のＰｃａｔビュー用第１実行プランでは、２段階のマージ結合が行われる。マージ結合は、入力に対するイテレータを作成し、イテレータのキーがそれぞれ異なる場合、先頭イテレータの結合キーに基づき、末尾イテレータを進める。本動作を「Ｓｅｅｋ」と呼ぶ。例えば、末尾キーが５で、先頭キーが８の場合、シーク（８）が末尾イテレータに対し呼び出され、少なくとも８のキーと対応した結合入力関係にある第１レコードに進む。全てのイテレータでキーが全て同じ場合、同一の結合キーを持つ入力レコードの全組み合わせに対して出力レコードが作成され、当該入力の１つに対するイテレータが、ここでは「ネクスト」と呼ぶ動作により次のキーに進む。一組の入力に対するシーク、ネクスト動作のシーケンスをここで「トレース」と呼ぶ。トレースは制御情報の一例であり、したがってデータに対する所定のアルゴリズム実行シーケンスについての情報である。
【００２２】
シーク、ネクスト動作はあらゆる順序の入力に対し実行可能であるが、シークは順序づけられた木構造で整理された入力に対し特に有効である。キー範囲内で広い幅に対応するシークは、多くのキー値をスキップできるため、作業を省略できる。
【００２３】
例示的実施例において、感度範囲は、関係（またはテーブル）Ａ、Ｂのマージ結合についての以下の３つの基本的ルールに基づく、マージ結合のトレースから導出される。
ａ）Ａ、Ｂにそれぞれ対応する初期キーがＫＡとＫＢであり、ＫＡ＜ＫＢの場合、Ｂは、［−∞，ＫＢ］の範囲のキーの影響を受ける。ＫＡ＞ＫＢの場合、Ａが［−∞，ＫＡ］の範囲のキーの影響を受ける。初期キーが同じである場合、任意で片方の入力を選択し（例えばＡとする）、当該入力が［−∞，ＫＡ］の範囲のキーの影響を受けるものとする。
ｂ）入力（例えばＡとする）がキーＫに位置し、ネクスト動作がＡに行われて、新たなキーＫ’が得られる場合、Ａは［Ｋ，Ｋ’］の範囲のキーの影響を受けるとされる。ＫがＡにおける最後のキーである場合、Ｋ’＝∞となる。
ｃ）入力（例えばＡとする）がキーＫに位置し、シーク（Ｌ）動作がＡに行われて、新たなキーＫ’が得られる場合、Ａは［Ｌ、Ｋ’］の範囲のキーの影響を受けるとされる。Ａの全てのキーがＬ未満の場合、Ｋ’＝∞となる。
【００２４】
このようにして、あらゆる規則領域が処理可能である。
【００２５】
上述のＰｃａｔビュー用第１実行プランのステップ３は、感度範囲の特殊な状況を示す。これは関係Ａが関係Ｂに対してキーが関連しておらず、関係Ａに単一のレコードのみ存在する場合に生じる。関係Ａ内の単一のレコードがキーＫを有するものとする。この場合に初期シークが関係Ａではなく関係Ｂで行われ、後続のネクスト動作が関係Ｂではなく関係Ａで行われるものとする。この場合、関係Ｂの感度範囲は単純に［Ｋ，Ｋ］となる。
【００２６】
感度範囲はその他属性と関連付けられ、感度指数となる。特に、それまでのマージ結合ステップからの全ての結合カラムが含まれる。上述のＰｃａｔビューの第１実行プランにおいて、ステップ２のマージ結合における２つの入力に対する感度指数は追加属性を含まないが、ステップ３のマージ結合に対する感度指数はレコードＲからのＯ＿ＩＤを含む。
【００２７】
感度指数はマージ結合が入れ子順序を持つ場合にも定義可能である。例えば、以下のＰｃａｔビュー用の実行プランの別実施形態を考える（ここでは「Ｐｃａｔビュー用第２実行プラン」と呼ぶ）。
１．（Ｃ＿ＩＤ，Ｏ＿ＩＤ）辞書順に注文テーブル１０４のレコードにアクセスし、Ｃ＿ＩＤの順に顧客テーブル１０２のレコードにアクセス。
２．Ｃ＿ＩＤに対する２つの入力のマージ結合を実行。その結果、各Ｃ＿ＩＤに対しＯ＿ＩＤ値が順序づけられる。
３．結果として得られた中間結果内の各Ｃ＿ＩＤに対し、ラインアイテムテーブル１０６のＯ＿ＩＤ順でのイテレートと、数量に係るフィルタ条件の適用と、属性ＣＡＴＥＧＯＲＹおよびＰ＿ＩＤのみを固定としてＯ＿ＩＤに対する２つの入力のマージ結合と、をこの順番に実行する。
４．前ステップの結果から一意の組を認識し、その重複数と共に各組を記憶。
【００２８】
このＰｃａｔビュー用第２実行プランでは、各Ｃ＿ＩＤ値に対し、ステップ３のマージ結合が一度実行される。したがって、ここで説明されるデータベース管理システムの実施例は、各Ｃ＿ＩＤ値に対し、Ｏ＿ＩＤ範囲に対する感度を認識する感度指数を（マージ結合のトレースに基づいて）メンテナンスする。
【００２９】
例示的実施例では、データベース管理システムは、演算時間や使用資源について各プランのコストを推定することで、様々なプラン候補の中からプランを選択する。データベース管理システムは、当該指数が有効な特定のテーブルの更新頻度や、当該指数維持に伴う時間空間オーバーヘッドに応じて、全てまたは一部の感度指数を選択し、実体化してもよい。
【００３０】
感度指数を利用すると、各入力関係のレコード（例えば新規レコードや削除済みレコード）のデータ項目への特定の更新が、トレースを変化し得たかを判断可能となる。トレースが変更により変化し得なかった場合、データベース管理システムは、結合結果が現存するこれら新レコードの影響を受けないと判断可能なのである。一方、いくつかのレコード更新によりトレースが変化し得た場合、感度指数はデータベース管理システムにとって非常に重要な情報源となる。このような情報により、実施例に係るデータベース管理システムは、メンテナンスが必要となり得るキー範囲をまとめた変更−オラクルを利用して増分的かつ効率的に出力結果をメンテナンスできるのである。変更−オラクルは、一実施形態では明示的に実体化される。別実施形態では変更−オラクルは実体化されず、一組の一致する感度間隔から必要に応じて、より効率的に導出される。
【００３１】
ここでの「変更−オラクル」という言葉は、属性値の組み合わせ空間内の領域をまとめたクエリ表現である。この属性値の組み合わせ空間内の領域は、基礎データ更新に応じてクエリの再評価が必要な領域である。
【００３２】
ここでの「感度間隔」や「感度範囲」という言葉は、同義であり、上述の３ルールに応じたマージ結合トレースから導出されたキー値の範囲を指す。感度範囲内の修正されたキーは、マージ結合結果を変更し得るものである。
【００３３】
ここでの「感度指数」はエントリの集合を示すデータ構造を指す。例えば、マージ結合の結合キーＡに対する感度指数はエントリの集合を示すデータ構造を指し、各エントリはＡに対する感度範囲と、マージ結合入力からのその他属性に対する０以上の値を含む。
【００３４】
図２により、実施例に応じてアクティブデータベースクエリのメンテナンスを実行する処理の概要を示す。図１に示すテーブルと、先述のＰｃａｔビューを使用する例を利用して、実施例の特徴を説明する。ただし実施例がこれらテーブルやビューに限定されないことが理解されよう。ブロック２０２において、上述のＰｃａｔクエリのようなクエリが、例えばＰｃａｔビュー用第１実行プランにより実行される。ブロック２０４では、Ｐｃａｔビューが対応する感度指数と共に実体化される。ブロック２０６において、クエリで使用されるテーブル内のデータ更新の通知を受信する。例えば、Ｃ＿ＩＤが「１２３４５」の顧客のカテゴリが「ＡＢＣ」から「ＤＥＦ」に変化したとする。この変更は、顧客テーブル１０２の行（１２３４５、ＡＢＣ、…）を削除し、新たに行（１２３４５、ＤＥＦ、…）を顧客テーブル１０２に挿入することで行われる。
【００３５】
ブロック２０８において、１つ以上の感度指数を確認し、当該変化のＰｃａｔビューに対する影響を判定する。ここで説明される例示的実施形態では、システムは顧客テーブル１０２に対する感度指数Ｉ（Ｏ＿ＩＤ、［Ｃ＿ＩＤ１、Ｃ＿ＩＤ２］）を調べる。２つの場合が考えられる。第１の場合では、指数（Ｉ）内のあらゆるエントリの範囲［Ｃ＿ＩＤ１、Ｃ＿ＩＤ２］内に１２３４５が存在しないため、当該顧客は５を超えるラインアイテム数量を含む注文をしていないこととなり、更新により最終結果は影響されない。即ち、上記削除や上記挿入によってマージ結合結果が変化しない。その他入力に対する感度指数において１２３４５がスキップされているため、感度指数も変更する必要がない。第２の場合では、Ｉの少なくとも１つのエントリの範囲［Ｃ＿ＩＤ１、Ｃ＿ＩＤ２］に１２３４５が存在するため、顧客１２３４５は５を超える数量の注文を過去に行っていることとなり、最終結果が変化し得る。最初の顧客１２３４５の削除に応じて、システムは１２３４５を含む範囲［Ｃ＿ＩＤ１、Ｃ＿ＩＤ２］のＩにおけるＯ＿ＩＤ値全てを認識する。実施形態において、Ｉにおけるあるエントリの範囲［Ｃ＿ｉｄ１、Ｃ＿ｉｄ２］に１２３４５が存在するかの判定は、特殊なデータ構造により容易になる。例えば、Ｂ木状のセグメントツリーを実体化することで、１２３４５を含む間隔のクエリを高速化可能である。
【００３６】
図２のブロック２１０では、ブロック２１０で実行された分析に基づき、再評価されるべき任意の感度範囲を反映するため、変更−オラクルを更新する。例えば、一致するＯ＿ＩＤに対して、組（Ｏ＿ＩＤ、１２３４５）が変更−オラクルに追加され、再評価されるべきクエリの一部を判定する。その後、（１２３４５、ＤＥＦ）を挿入している間に、アクティブデータベースクエリメンテナンス処理により、Ｉにおける一致するＯ＿ＩＤ範囲の組が認識される、これも変更−オラクルに追加される。この例では、挿入、削除のＣ＿ＩＤが同一であり、範囲が削除の間に認識された範囲に一致する。しかし一般的に挿入、削除の組では範囲は異なり得る。
【００３７】
変更−オラクルが計算されると、ブロック２１２において、変更−オラクルはクエリ結果を増分的に修正するために用いられる。変更−オラクルは、更新結果により変化し得た結合属性組み合わせのサブセットを定義するものである。クエリ本体は当初のプランどおり再実行され得るが、変更−オラクルからの組（Ｏ＿ＩＤ、Ｃ＿ＩＤ）に限定される。メンテナンス処理により、今まで存在しなかった新たな中間レコードや、既に存在しない古い中間レコードが認識される。上記例では、ラインアイテムテーブル１０６と注文テーブル１０４との間の初期結合が、変更−オラクルの組（Ｏ＿ＩＤ、Ｃ＿ＩＤ）にのみ繰り返される。ラインアイテムテーブル１０６はＯ＿ＩＤでのみフィルタリングされ、注文テーブル１０４はＯ＿ＩＤｉｄおよびＣ＿ＩＤによりフィルタリングされる。本初期結合の結果は、さらにＣ＿ＩＤで顧客テーブル１０２に結合されるが、Ｃ＿ＩＤが変更−オラクルに存在する顧客のみが対象となる。変更−オラクルに限定される結合の部分は、更新前状態および更新後状態の両方で計算される。これら２つの状態の差が、クエリ結果に適用されるべき最終的変化に対応する。
【００３８】
本実施形態では、顧客１２３４５が、それぞれ数量が６以上の、それぞれ明示的に異なる商品Ｐ１、Ｐ２、Ｐ３というちょうど３つのラインアイテムを購入したものとする。変更−オラクルは、Ｃ＿ＩＤ１２３４５に関連付けられた、これら３つの多量ラインアイテムを含む注文のＯ＿ＩＤを認識する。カテゴリ、商品に投影される結合前値は｛（ＡＢＣ、Ｐ１）、（ＡＢＣ、Ｐ２）、（ＡＢＣ、Ｐ３）｝となり、結合後値は｛（ＤＥＦ、Ｐ１）、（ＤＥＦ、Ｐ２）、（ＤＥＦ、Ｐ３）｝となる。その後、アクティブデータベースクエリ処理で、３商品のカテゴリＡＢＣの導出数を低減でき、これら商品のカテゴリＤＥＦの導出数を増加できる。０まで減少すると、行が削除され、それまで存在していなかったが導出数が増加した行に対しては導出数１が挿入される。
【００３９】
実施例において、テーブル記憶構造は、新たに挿入された行、削除された行が効率的に認識可能となるよう構成される。例えば、Ｂ木データ構造を使用したコピーオンライトページレベルバージョニングにより、システムは両バージョンに共通のサブツリーをスキップ可能となる。さらに、カスケーディングツリーも、直近の変更を少数のページに集約できるため有用である。
【００４０】
次にブロック２１４では、１つ以上の感度指数が更新される。ここで、ブロック２１２、２１４で実行される処理を「メンテナンス処理」と呼ぶ。メンテナンス処理の間、感度指数は増分変化に伴い更新される。上述の例では、同一のトランザクションで、キー１２３４５を有する削除されたレコードが同じキーを有するレコードの挿入により置き換えられるため、感度指数の最終的変化は生じない。一方、新規注文の挿入や既存のラインアイテムの削除のようなその他変化により、トレースが影響され、感度指数の変更が必要となる。感度指数が更新されるため、実施例では、クエリに対する複数回のメンテナンスが可能となる。
【００４１】
トレースで厳格に定義された間隔からさらに追加の間隔を含んだ感度指数でもメンテナンスに有用である。追加の間隔の存在により、方法の正確さが影響されることはないが、追加の間隔によりクエリ結果メンテナンスに多少の余分な作業が必要となり得る。実施例では新たなデータに対するクエリ評価のトレースが正しく反映されるよう、感度指数がメンテナンス可能であるが、時に必須の間隔以上に多くの間隔が含まれるよう、感度指数をメンテナンスすることで効率が高まる場合がある。典型的な適応ケースでは、クエリ結果メンテナンスに余計な作業が生じたとしても、簡易に感度指数をメンテナンスする方が有効な場合もあり得る。
【００４２】
実施形態では、感度指数メンテナンスは以下のとおりに実施される。クエリ結果メンテナンス中に感度指数で一致する間隔が発見されると、当該間隔は削除される。メンテナンス処理中、イテレートされた実行済みシーク／ネクスト動作を反映するため、新たな感度間隔が設けられる。その結果としての感度指数は、単一クエリ評価のトレースのレコードを正確に示すとは限らず、必要以上の数の感度間隔を含んでもよいが、データ変更によりメンテナンスが必要となる全ての間隔を網羅するものとする。
【００４３】
図３に、実施例に関連するクエリのトレースの概要を示す。感度指数のメンテナンスを説明するため、データベース管理システムが２つのテーブルＸ、Ｙのマージ結合を実行するものとする。図３に示すよう、テーブルＸがキー０、２、４、５、６を含み、テーブルＹが１、２、６、７を含むものとする。図３はこの状態で得られるトレースを示す。上述の実施例により、マージ結合のトレースから感度範囲を導出すると、テーブルＸの感度範囲は｛［１，２］，［２，４］，［６，６］，［６，∞］｝となり、テーブルＹの感度間隔は｛［−∞，１］，［２，２］，［４，６］｝となる。
【００４４】
次に、テーブルＸおよびテーブルＹが以下のとおり更新されるものとする。キー５をテーブルＸから削除し、キー８をテーブルＸに挿入し、キー２をテーブルＹから削除し、キー３をテーブルＹに挿入する。データベース管理システムは、トレースおよび感度指数を更新しながら結合結果をメンテナンスする。これら更新に対する変更−オラクルは｛［２，２］，［６，∞］｝となり、テーブルＹからのキー２の削除、テーブルＹへのキー８の挿入が今までのクエリ結果に対し影響し得るという判断を反映している。実施形態では、メンテナンス中にデータベース管理システムは変更−オラクルを、シークおよびネクスト動作が実行される、結合に対する第３の入力として扱う。増分的にメンテナンスが実行されることから、キー範囲全体に対して変更−オラクルは小さくなる可能性が高く、変更−オラクルに対するシークおよびネクスト動作はいずれの入力関係に対しても好適なものである。変更−オラクルが｛［２，２］，［６，∞］｝であることから、メンテナンス処理はキー２まで直接進む。キー２はテーブルＹから削除済みであるため、既にマージ結合結果に存在しないと判断される。このメンテナンス中、データベース管理システムはテーブルＹでのシーク（２）動作ではキー２ではなく、キー３に進むと判断する。その結果テーブルＹに対する感度指数において、［２，２］が［２，３］に置き換えられる。
【００４５】
テーブルＸからのキー５の削除は結果にもトレースにも影響しない。初期トレースにおいて、シーク（６）動作によりキー５がスキップされているからである。テーブルＹへのキー３の挿入についても同様である。テーブルＸにキー８を挿入しても結果は変化しないが、トレースは変化する。キー６後のネクスト動作がエンドマーカではなくキー８に進むようになるためである。その結果、データベース管理システムはテーブルＸに対する感度指数の［６，∞］を［６，８］で置き換え、テーブルＹに対する感度指数に［８，∞］を追加する。変更−オラクルで示されるよう、これら変化は範囲［６，∞］に対するメンテナンスの処理中に生じる。メンテナンスから以下の最終結果が得られる。（ａ）キー２が結合結果から削除される。（ｂ）テーブルＸに対する感度間隔は｛［１，２］，［２，４］，［６，６］，［６，８］｝となる。（ｃ）テーブルＹに対する感度間隔は｛［−∞，１］，［２，３］，［４，６］，［８，∞］｝となる。Ｘに対する感度指数は［３、４］ではなく、更新されたデータのトレースに含まれる［２，４］を有する。システムは、感度指数に対するメンテナンス処理を簡略化するため、より大きい間隔［２，４］を含むのである。
【００４６】
適応状況によっては、メンテナンスはトランザクション更新の実行のたびその直後に行われてよく、または更新が複数回実行された後にまとめて行われてもよい。
【００４７】
別実施形態において、感度指数は結合属性以外にさらなる属性を有する。以下の例に示すよう、感度指数内のクエリで出力される属性を含むことは有利である場合が多い。上述のＰｃａｔビューにおいて、各組（ＣＡＴＥＧＯＲＹ、Ｐ＿ＩＤ）からの導出総数によりビューを拡大するのではなく、データベース管理システムが、ＣＡＴＥＧＯＲＹおよびＰ＿ＩＤによりグループ化される最小Ｃ＿ＩＤによりビューを拡大する場合について考える。総数ではなく最小Ｃ＿ＩＤを記録することは、総数のメンテナンスに必要な作業を省略出来得るという点で有利である。総数は、グループに対する更新の度に変更の必要があるが、最小Ｃ＿ＩＤは、現在の最小Ｃ＿ＩＤより更新対象Ｃ＿ＩＤが大きい場合、更新の必要はないのである。
【００４８】
上述のＰｃａｔビュー用第１実行プランのステップ３についての感度指数を検討する。（Ｏ＿ＩＤ，［Ｃ＿ＩＤ１，Ｃ＿ＩＤ２］）のみ記録するのではなく、システムは感度指数Ｉに（Ｐ＿ＩＤ，Ｏ＿ＩＤ，［Ｃ＿ＩＤ１，Ｃ＿ＩＤ２］）を記録するものとする。顧客テーブル１０２が更新されると、データベース管理システムはＩ内で、更新された行のＣ＿ＩＤを含むＣ＿ＩＤ範囲を持つエントリを検索する。データベース管理システムがＰ＿ＩＤにアクセス可能となっているため、更新により影響される組（ＣＡＴＥＧＯＲＹ，Ｐ＿ＩＤ）を判定でき、現行のビューから、グループに対する現状最小Ｃ＿ＩＤ（Ｍと称する）を取得する。挿入を伴う更新が、Ｍ以上の最新Ｃ＿ＩＤを含む場合、当該更新の挿入はビューを変化させないため、無視される。挿入を伴う更新が、Ｍ未満の最新Ｃ＿ＩＤを含む場合、Ｍは当該Ｃ＿ＩＤに置き換えられる。削除を伴う更新が、Ｍ以下の最新Ｃ＿ＩＤを含む場合、このグループの新たな最小Ｃ＿ＩＤの認識や、グループ内にその他Ｃ−ｉｄが不在であることを認識するため、より高価なメンテナンス動作が開始される。このようにメンテナンス方式を選択することは、より高価なメンテナンス動作につながる更新の頻度が十分低い場合に有効となり得る。
【００４９】
図４に、アクティブデータベースクエリのメンテナンスを自動的に実行するシステムの例のブロック図を概略的に示す。システムはアクティブデータベースクエリメンテナンスアプリケーション４１０を有する。アクティブデータベースクエリメンテナンスアプリケーション４１０はホストシステム４０４上の１つ以上のコンピュータプログラムにより実行される。実施例では、アクティブデータベースクエリメンテナンスアプリケーション４１０の少なくとも一部がホストシステム４０４で実行されるデータベース管理システムの一部である。別実施例では、アクティブデータベースクエリメンテナンスアプリケーション４１０の少なくとも一部が、トランザクションおよびクエリをいずれも実行可能なシステムの構成要素となる。
【００５０】
図４に示すシステムは少なくとも１つのシステム４０２を有する。少なくとも１つの地点にいるユーザ（例えばエンドユーザやデータベース管理者）はシステム４０２を介してホストシステム４０４と通信し、データベースクエリおよび／またはトランザクションを実行するプログラムを開始する。ユーザシステム４０２はネットワーク４０６を介してホストシステム４０４に接続される。各ユーザシステム４０２は、本明細書で説明された処理を実行するコンピュータプログラムを実行する汎用コンピュータにより実現できる。ユーザシステム４０２はパーソナルコンピュータ（例えば、ノートパソコン、タブレットコンピュータ、携帯電話）またはホスト付き端末であってもよい。ユーザシステム４０２がパーソナルコンピュータである場合、本明細書で説明された処理はユーザシステム４０２とホストシステム４０４との間で分担されてもよい。ユーザシステム４０２はさらにゲーム筐体、ネットワーク管理装置、ＦＰＧＡであってもよい。さらに、複数のユーザシステム４０２および／またはホストシステム４０４が並列動作してアクティブデータベースクエリメンテナンスを実行してもよい。
【００５１】
ネットワーク４０６は広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、グローバルネットワーク（例えばインターネット）、仮想プライベートネットワーク（ＶＰＮ）、クラウドネットワーク、イントラネットなどの任意の周知ネットワークであってもよいが、これに限られない。ネットワーク４０６は無線ネットワークや、当該技術分野で周知の物理ネットワークにより実現されてもよい。ユーザシステム４０２は複数のネットワーク（例えば、セルラーネットワークとインターネット）を介してホストシステムに接続されてもよい。これにより全てのユーザシステム４０２が同じネットワークを介してホストシステム４０４に接続されることがなくなる。１つ以上のユーザシステム４０２と、ホストシステム４０４はネットワーク４０６に無線接続されてもよい。一実施形態では、ネットワークはインターネットであり、１つ以上のユーザシステム４０２はユーザインターフェースアプリケーション（例えばウェブブラウザ）を実行して、ネットワーク４０６を介してホストシステム４０４と通信してもよい。別例示的実施例では、ユーザシステム４０２は直接ホストシステム４０４に接続される（即ち、ネットワーク４０６を介さない）。更なる実施例では、ホストシステム４０４に直接記憶装置４０８に接続されるか記憶装置４０８を含む。
【００５２】
記憶装置４０８はアクティブデータベースクエリメンテナンスに係るデータを有し、電子情報を記憶する様々な装置により実現できる。実施例において、記憶装置４０８に記憶されるデータは、データベーステーブル、マテリアライズドビュー、感度範囲、感度指数、感度範囲、変更−オラクル、ビュー、プランを１つ以上含むが、これらに限定されない。記憶装置４０８はホストシステム４０４内のメモリで実現されてよく、あるいは独立した物理的装置により実電されてもよい。記憶装置４０８は、ネットワーク４０６を含む環境全体で統合されたデータソースとして論理的にアドレス可能であってもよい。記憶装置４０８に記憶される情報は、ホストシステム４０４および／またはユーザシステム４０２を介して検索、操作されてもよい。
【００５３】
図４に示すホストシステム４０４は、サーバによりアクセス可能な記憶媒体に記憶されたコンピュータプログラムに応じて動作する１つ以上のサーバにより実現されてもよい。ホストシステム４０４は、ネットワークサーバ（例えば、ウェブサーバ）として動作してユーザシステム４０２と通信してもよい。ホストシステム４０４は、ユーザシステム４０２に対する情報の送信、受信を処理し、関連したタスクを実行可能である。ホストシステム４０４は、ホストシステム４０４に対する不正アクセスを防ぎ、正当なアクセスに対し任意の限定を付与するよう、ファイヤウォールを有してもよい。例えば、管理者は、システム全体にアクセス可能で、システムを部分的に変更可能であってもよい。ファイヤウォールは当該技術で周知の従来のハードウェアおよび／またはソフトウェアにより実現されてもよい。
【００５４】
ホストシステム４０４はアプリケーションサーバとして動作してもよい。ホストシステム４０４はアクティブデータベースクエリメンテナンスアプリケーション４１０を含む１つ以上のコンピュータプログラムを実行し、本明細書で説明された実施例の態様を実現可能である。ユーザシステム４０２にアプリケーションを設けることで、処理がユーザシステム４０２およびホストシステム４０４で分担されてもよい。あるいは、ユーザシステム４０２は、本明細書で説明された処理を少なくとも部分的に実行するための独立型ソフトウェアを含んでもよい。先述のように、ネットワークサーバ機能とアプリケーションサーバ機能を異なるサーバで実現してもよい。あるいは、ネットワークサーバ、ファイヤウォール、アプリケーションサーバは、必要な機能を実現するコンピュータプログラムを実行する単一のサーバで実現されてもよい。
【００５５】
本明細書で説明された感度指数の実施例により様々な利点が得られる。１つの利点として、感度指数の実施例は、レコードごとにエントリが１つではなく、キーごとにエントリが１つとなるため、多数のレコードでキーが共用される場合にもコンパクトな構造が得られる。更なる利点として、通常、感度指数のサイズは、最小入力のサイズに比例することが挙げられる。さらなる利点として、入力そのものが指数構造を含むか否かに関わらず、感度指数の実施例が、複雑なサブクエリの結果を含む任意の順序の入力から構築可能であることが挙げられる。さらに、感度指数の実施例のさらなる利点として、結合が演算される際に最小限のオーバーヘッドで構築できることと、入力された関係が更新される際にも少ないオーバーヘッドでメンテナンス可能であることが挙げられる。感度指数の実施例のさらなる利点として、共通属性の多方向マージ結合に直接適用可能であり、一連の組単位結合として拡張不要であることが挙げられる。
【００５６】
感度指数の実施例はその他技術と連動して使用されてもよい。例えば、複雑な表現のサブクエリに対応するクエリを追加的にメンテナンスすることで、当該表現のメンテナンスに補助的に使用されてもよい。
【００５７】
本明細書で説明されたメンテナンス技術は以下のように様々な用途例に利用可能であり、ここに挙げる実施例に限定されるものではない。初期実体化中または初期実体化後にマテリアライズドビューを最新の状態に保つ。トランザクションが長期動作中のデータベース管理システムにおいて並列性を向上する。さらに、再帰的クエリ処理に用いて、以前のイテレーションで観察されたプレディケートに対する変更に基づき、プレディケートに新たなデータを導出する。
【００５８】
当業者には明らかなように、本発明の態様は、システム、方法、またはコンピュータプログラムプロダクトとして実施可能である。したがって、本発明の態様は、全体としてハードウェアの形態として、全体としてソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）の形態として、またはソフトウェアおよびハードウェアの組み合わせの形態として実施可能であり、本明細書においてこれらは全て一般的に「回路」、「モジュール」、または「システム」と呼ばれる。さらに、本発明の態様は、コンピュータ読取可能プログラムコードを組み込んだ１以上のコンピュータ読取可能媒体に搭載されたコンピュータプログラムプロダクトの形態を取ってもよい。
【００５９】
１以上のコンピュータ読取可能媒体を任意に組み合わせることができる。コンピュータ読取可能媒体は、コンピュータ読取可能信号媒体やコンピュータ読取可能記憶媒体であってもよい。コンピュータ読取可能記憶媒体は、例えば電子的、磁気的、光学的、電磁的、赤外線、または半導体システム、装置、またはデバイス、あるいはこれらのいかなる適切な組み合わせであってもよいが、これらに限定されない。コンピュータ読取可能記憶媒体の具体例としては、１以上のワイヤを有する電気的接続、ポータブルフロッピーディスク、ハードディスク、ＲＡＭ、ＲＯＭ、消去可能ＥＰＲＯＭまたはフラッシュメモリ、光ファイバ、ポータブルＣＤ−ＲＯＭ、光学記憶装置、磁気記憶装置、あるいはこれらのいかなる適切な組み合わせであってもよいが、これらに限定されない。本明細書の文脈において、コンピュータ読取可能記憶媒体は、命令実行システム、装置、またはデバイスにより使用されるまたはこれらに連動するプログラムを含むまたは記憶する任意の有形の媒体であってもよい。
【００６０】
コンピュータ読取可能信号媒体は、コンピュータ読取可能プログラムコードが組み込まれた伝搬データ信号であってもよく、例えば、ベースバンドまたは搬送波の一部である。この伝搬信号は様々な形態を取ってもよく、例えば電磁的、光学的、またはこれらのいかなる適切な組み合わせであってもよいが、これらに限定されない。コンピュータ読取可能信号媒体は、コンピュータ読取可能記憶媒体ではない任意のコンピュータ読取媒体であり、命令実行システム、装置、またはデバイスにより使用されるまたはこれらに連動するプログラムをやり取りし、伝搬し、搬送することができる。
【００６１】
コンピュータ読取媒体に組み込まれたプログラムコードは、任意の適切な媒体を用いて送信されてよく、例えば無線、有線、光ファイバケーブル、ＲＦ等、またはこれらのいかなる適切な組み合わせであってもよいが、これらに限定されない。
【００６２】
本発明の態様の動作を実行するコンピュータプログラムコードは、１以上のプログラミング言語の任意の組み合わせにより記述されてもよく、例えばＪａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向プログラミング言語、Ｃプログラミング言語等の従来の手続き型プログラミング言語が挙げられる。プログラムコードは、その全体がユーザのコンピュータ上で動作しても、部分的にユーザのコンピュータ上で動作してもよく、独立型ソフトウェアパッケージとして、部分的にユーザのコンピュータ上で動作し部分的にリモートコンピュータ上で動作し、またはその全体がリモートコンピュータまたはサーバ上で動作してもよい。後者の場合、リモートコンピュータは、ユーザのコンピュータに任意の種類のネットワークにより接続されてもよく、例えばローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）が挙げられる。あるいは、外部コンピュータに対して（例えば、インターネットサービスプロバイダによりインターネットを介して）接続が行われていてもよい。
【００６３】
以上、本発明の態様を、本発明の実施例に係る方法、装置（システム）、およびコンピュータプログラムプロダクトのフローチャートによる例示および／またはブロック図を参照して説明した。フローチャートによる例示および／またはブロック図の各ブロック、およびフローチャートによる例示および／またはブロック図のブロックの組み合わせは、コンピュータプログラムの命令により実行できることが理解できよう。これらのコンピュータプログラム命令は、汎用コンピュータのプロセッサ、専用コンピュータ、またはその他のプログラム可能データ処理装置に設けられてもよい。これにより、コンピュータまたはその他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートおよび／またはブロック図の１以上のブロックに規定された機能や動作を実行する手段を提供するようなマシンが実現される。
【００６４】
また、これらのコンピュータプログラム命令は、コンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスに特定の方法で機能するよう命令するコンピュータ読取可能媒体に保存されてもよい。これにより、コンピュータ読取可能媒体に保存された命令が、フローチャートおよび／またはブロック図の１以上のブロックに規定された機能や動作を実行する命令を含む製品が実現される。
【００６５】
さらに、これらのコンピュータプログラム命令は、コンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスに展開され、コンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスで実行される一連の動作ステップを実施してもよい。これにより、コンピュータまたはその他のプログラム可能装置で実行される命令が、フローチャートおよび／またはブロック図の１以上のブロックに規定された機能や動作を実行するための処理を提供するようなコンピュータ実行処理が実現される。
【００６６】
図示されたフローチャートおよびブロック図には、本発明の様々な実施例に係るシステム、方法、およびコンピュータプログラムプロダクトの構成、機能、実施可能な動作を示す。この意味において、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための１以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を示してもよい。なお、別の実施においては、ブロックに記載された機能は図示された順番から外れて実行されてもよい。例えば、連続して示された２つのブロックは、実際には、実質的に同時に実行されてもよいし、または関連する機能によっては逆の順序で実行されてもよい。なお、ブロック図および／またはフローチャートによる例示の各ブロック、およびブロック図および／またはフローチャートによる例示のブロックの組み合わせは、特定の機能または動作を実行する専用ハードウェア系システムによって、または専用ハードウェアとコンピュータ命令との組み合わせによって実行可能である。
【００６７】
本明細書に記載の技術は、特定の実施例を説明する目的に限って使用され、本発明を限定する意図はない。本明細書において単数形を示す「ａ」、「ａｎ」、「ｔｈｅ」は、別途明確に規定されない限り複数形をも含むことを意図している。さらに、本明細書において用語「ｃｏｍｐｒｉｓｅｓ」および／または「ｃｏｍｐｒｉｓｉｎｇ」は、記載された特徴、整数、ステップ、動作、要素、および／または構成要素が含まれ、１以上の他の特徴、整数、ステップ、動作、要素、構成要素、および／またはそれらの群が含まれるまたは追加されることを排除しない。
【００６８】
以下の請求項における全てのミーンズプラスファンクション要素およびステッププラスファンクション要素に対応する構造、素材、行為、および等価物には、具体的に請求項に記載されているその他の構成要素との組み合わせにおいて、機能を実施する構造、素材、行為が含まれると意図される。本発明の説明は、例示および説明のために提供されるものであり、開示されている形式の本発明を打ち消すまたは限定する意図はない。本発明の範囲および要旨から外れることなく、様々な変形例および変更が可能であることは、当業者であれば明らかであろう。実施例は、本発明の原理を最もよく説明するために選択され記載されたもので、意図された具体的な使用に適する様々な変形例と共に様々な実施例に対し本発明についての当業者の理解を促すためのものである。
【００６９】
本明細書に記載されたフロー図は、単に例示的なものであり、図およびそこに記載されたステップ（動作）には、本発明の要旨から外れることなく様々な変更が可能である。例えば、ステップは異なる順序で実行されてもよく、ステップは追加、削除、または変更されてもよい。これらの変更は全て、請求項に記載された発明の一部を構成するとみなされる。
【００７０】
本発明の好適な実施例が説明されてきたが、当業者であれば、現在および未来において、後続の請求項の範囲内に収まる様々な改良および増強し得る。これらの請求項は、最初に記載された本発明に対する適切な保護を維持するものとみなされるべきである。
【図１】
2016509281.tif 000003
【図２】
2016509281.tif 000004
【図３】
2016509281.tif 000005
【図４】
2016509281.tif 000006
【国際調査報告】
2016509281.tif 000007
2016509281.tif 000008