(57)【要約】  ログ中の各レコードに対するレコード識別子を含むテーブルに対しテーブル・ログ・スキャンが行われる。これらの識別子に基づいて、テーブル中の各コラムにコラム値がロードされる。これらコラム値に基づくレコードが、テーブル・ベースのグルームされたトランザクション・ブロックに書き込まれ、グルーム済みブロック上の各レコードに対するタプル・シーケンス番号が生成される。このテーブルは、トランザクション処理の処理取扱いを増加させるために、マルチマスタ分散データ管理システム中でトランザクション処理を取り扱う複数のノードに亘って共有／シェアされる。
2021515294.tif 000002
【特許請求の範囲】
【請求項１】
マルチマスタ分散データ管理システムにおいてトランザクション処理をグルーミングする方法であって、前記方法は、
少なくとも１つのトランザクション・ローカル側ログにおいてトランザクション処理を維持するステップと、
ログ中の各レコードに対するレコード識別子を含むテーブルに対し、テーブル・ログ・スキャンを実行するステップと、
前記識別子に基づいて、前記テーブル中の各コラムにコラム値をロードするステップと、
前記コラム値に基づいて、前記レコードに対するタプル・シーケンス番号を生成し、グルーム済みトランザクション・ブロック上の前記レコードを前記テーブルに書込むステップと、
を含み、
前記テーブルが、前記トランザクション処理の処理取扱いを増加するために、前記マルチマスタ分散データ管理システム中でトランザクション処理を取扱う諸ノードに亘ってシェアされる、
方法。
【請求項２】
前記書込むステップが、
前記テーブルのスキャニングから、次のレコードの入力群を受信するステップと、
一意的コミット・タイムスタンプを生成するステップと、
前記レコードのコラムをインメモリ・バッファに追加するステップと、
前記グルーム済みトランザクション・ブロックに書込まれた前記レコードに対し前記タプル・シーケンス番号を生成するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
さらなるレコードの入力群がなく、且つ前記インメモリ・バッファが満杯でないと判断されると、前記インメモリ・バッファを、共有ファイル・システム、オブジェクト・ストア、およびローカル・キャッシュのうちの少なくとも１つに向けフラッシュする、請求項２に記載の方法。
【請求項４】
さらなるレコードの入力群が利用できない場合、分散コーディネータにグルームの終了点情報を通知するステップと、
前記グルーム終了点を越えてログ・ヘッドを移動するステップと、
読み取り処理が残らなくなるまで前記ログを枝刈りするステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記トランザクション処理が、更新、削除、および挿入オペレーションを含み、
トランザクション・コミットが成就されると、前記トランザクション・ローカル側ログが前記ログのストリームに追加され、
グルーミング処理は、前記ログだけを読み取り、コミットされていないトランザクション変更は回避し、且つ
前記グルーミング処理を実行するスレッドは、前のグルーミング・サイクルのしるしとして、前記ログ上にカーソルを維持する、
請求項１に記載の方法。
【請求項６】
前記ログ・ストリーム中の前記カーソルがポイントしている位置の前に削除のためのマークがされ、
前記ログ・ストリームの或る部分に進行中の読み取りオペレーションがないと判断されると、枝刈り処理がログ・ストリームの前記部分を削除し、且つ
前記グルーミング処理および読み取りオペレーションの両方が、データの読み取りオペレーションがモノトニックであるように、前記前のグルーミング・サイクルに後続する、
請求項５に記載の方法。
【請求項７】
前記グルーミング処理は、グルーミング・サイクルが制限のある実行時間を有するように、前記グルーミング処理の開始時間より前のコミット・タイムスタンプを持つログ・ストリームだけを読み取る、
請求項６に記載の方法。
【請求項８】
周期的なバックグラウンド処理による前記グルーミング処理の後、更新されたレコードが、最新のデータを必要とする読み取り処理によってまたは特定の期間からのデータを読み取る読み取り処理によって無視されるように、前記更新されたレコードが終了タイムスタンプでフラグされる、
請求項７に記載の方法。
【請求項９】
前記マルチマスタ分散データ管理システムが、ノードにローカルな第一ストレージ・ティアと、分散共有ファイル・システムまたはオブジェクト・ストアを含む第二ストレージ・ティアとを含むストレージの２つのティア上で動作し、
前記第一ストレージ・ティアは、前回のサイクルで前記グルーミング処理を終了した箇所からグルーミングを開始するため、リカバリ過程で前記グルーミング処理によって使われることになるログの持続的バージョンを維持し、データへの迅速なアクセスを可能にするため、前記第二ストレージ・ティアの頻繁にアクセスされる部分をキャッシュに格納し、且つ
前記第二ストレージ・ティアは、前記データ・ストリームを維持し、前記マルチマスタ分散データ管理システム中のノードの全てに、前記データ・ストリームを利用可能にする、
請求項７に記載の方法。
【請求項１０】
マルチマスタ分散データ管理システムにおいてトランザクション処理をグルーミングするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、具現化されたプログラム命令を内に有するコンピュータ可読ストレージ媒体を含み、前記プログラム命令は、プロセッサによって実行可能であり、前記プロセッサに、
前記プロセッサによって、少なくとも１つのトランザクション・ローカル側ログにおいてトランザクション処理を維持させ、
前記プロセッサによって、ログ中の各レコードに対するレコード識別子を含むテーブルに対し、テーブル・ログ・スキャンを実行させ、
前記プロセッサによって、前記識別子に基づいて、前記テーブル中の各コラムにコラム値をロードさせ、
前記プロセッサによって、前記コラム値に基づいて、前記レコードそれぞれに対するタプル・シーケンス番号を生成させ、グルーム済みトランザクション・ブロック上の前記レコードを前記テーブルに書込ませ、
前記テーブルが、前記トランザクション処理の処理取扱いを増加するために、前記マルチマスタ分散データ管理システム中でトランザクション処理を取扱う諸ノードに亘ってシェアされる、
コンピュータ・プログラム製品。
【請求項１１】
前記書込みが、前記プロセッサに、
前記プロセッサによって、前記テーブルのスキャニングから、次のレコードの入力群を受信させ、
前記プロセッサによって、一意的コミット・タイムスタンプを生成させ、
前記プロセッサによって、前記レコードのコラムをインメモリ・バッファに追加させ、且つ
前記プロセッサによって、前記グルーム済みトランザクション・ブロックに書込まれた前記レコードに対し前記タプル・シーケンス番号を生成させる、
ため、前記プロセッサによって実行可能なプログラム命令をさらに含む、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１２】
さらなるレコードの入力群がなく、且つ前記インメモリ・バッファが満杯でないと判断されると、前記インメモリ・バッファを、共有ファイル・システム、オブジェクト・ストア、およびローカル・キャッシュのうちの少なくとも１つに向けフラッシュする、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１３】
前記書込みが、前記プロセッサに、
さらなるレコードの入力群が利用できない場合、前記プロセッサによって、分散コーディネータにグルームの終了点情報を通知させ、
前記プロセッサによって、前記グルーム終了点を越えてログ・ヘッドを移動させ、且つ
前記プロセッサによって、読み取り処理が残らなくなるまで前記ログを枝刈りさせる、
ため、前記プロセッサによって実行可能なプログラム命令をさらに含む、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１４】
前記トランザクション処理が、更新、削除、および挿入オペレーションを含み、
トランザクション・コミットが成就されると、前記トランザクション・ローカル側ログがログ・ストリームに追加され、
グルーミング処理は、前記ログだけを読み取り、コミットされていないトランザクション変更は回避し、
前記グルーミング処理を実行するスレッドは、前のグルーミング・サイクルのしるしとして、前記ログ上にカーソルを維持し、且つ
前記ログ・ストリーム中の前記カーソルがポイントしている位置の前に削除のためのマークがされ、
前記ログ・ストリームの或る部分に進行中の読み取りオペレーションがないと判断されると、枝刈り処理がログ・ストリームの前記部分を削除し、且つ
前記グルーミング処理および読み取りオペレーションの両方が、データの読み取りオペレーションがモノトニックであるように、前記前のグルーミング・サイクルに後続する、
請求項１０に記載のコンピュータ・プログラム製品。
【請求項１５】
前記グルーミング処理が、グルーミング・サイクルが制限のある実行時間を有するように、前記グルーミング処理の開始時間より前のコミット・タイムスタンプを持つログ・ストリームだけを読み取り、
周期的なバックグラウンド処理による前記グルーミング処理の後、更新されたレコードが、最新のデータを必要とする読み取り処理によってまたは特定の期間からのデータを読み取る読み取り処理によって無視されるように、前記更新されたレコードが終了タイムスタンプでフラグされ、
前記マルチマスタ分散データ管理システムが、ノードにローカルな第一ストレージ・ティアと、分散共有ファイル・システムまたはオブジェクト・ストアを含む第二ストレージ・ティアとを含むストレージの２つのティア上で動作し、
前記第一ストレージ・ティアは、前回のサイクルで前記グルーミング処理を終了した箇所からグルーミングを開始するため、リカバリ過程で前記グルーミング処理によって使われることになるログの持続的バージョンを維持し、データへの迅速なアクセスを可能にするため、前記第二ストレージ・ティアの頻繁にアクセスされる部分をキャッシュに格納し、且つ
前記第二ストレージ・ティアは、前記データ・ストリームを維持し、前記マルチマスタ分散データ管理システム中のノードの全てに、前記データ・ストリームを利用可能にする、
請求項１４に記載のコンピュータ・プログラム製品。
【請求項１６】
命令を格納するように構成されたメモリと、
少なくとも１つのトランザクション・ローカル側ログにおいてトランザクション処理を維持し、ログ中の各レコードに対するレコード識別子を含むテーブルに対しテーブル・ログ・スキャンを実行し、前記識別子に基づいて、前記テーブル中の各コラムにコラム値をロードし、前記レコードに対するタプル・シーケンス番号を生成し、前記コラム値に基づいて、グルーム済みトランザクション・ブロック上のレコードを前記テーブルに書込む、
ため、前記命令を実行するように構成されたプロセッサと、
を含む装置であって、
前記テーブルが、前記トランザクション処理の処理取扱いを増加するために、マルチマスタ分散データ管理システム中でトランザクション処理を取扱う諸ノードに亘ってシェアされる、
装置。
【請求項１７】
前記書込みが、
前記テーブルのスキャニングから、次のレコードの入力群を受信するステップと、
一意的コミット・タイムスタンプを生成するステップと、
前記レコードのコラムをインメモリ・バッファに追加するステップと、
前記グルーム済みトランザクション・ブロックに書込まれた前記レコードに対し前記タプル・シーケンス番号を生成するステップと、
をさらに含み、
さらなるレコードの入力群がなく、且つ前記インメモリ・バッファが満杯でないと判断されると、前記インメモリ・バッファを、共有ファイル・システム、オブジェクト・ストア、およびローカル・キャッシュのうちの少なくとも１つに向けフラッシュする、
請求項１６に記載の装置。
【請求項１８】
前記プロセッサが、
さらなるレコードの入力群が利用できない場合、分散コーディネータにグルームの終了点情報を通知し、
前記グルーム終了点を越えてログ・ヘッドを移動し、且つ
読み取り処理が残らなくなるまで前記ログを枝刈りする、
ための命令を実行するように構成される、請求項１７に記載の装置。
【請求項１９】
前記トランザクション処理が、更新、削除、および挿入オペレーションを含み、
トランザクション・コミットが成就されると、前記トランザクション・ローカル側ログがログ・ストリームに追加され、
グルーミング処理は、前記ログだけを読み取り、コミットされていないトランザクション変更は回避し、且つ
前記グルーミング処理を実行するスレッドは、前のグルーミング・サイクルのしるしとして、前記ログ上にカーソルを維持し、
前記ログ・ストリーム中の前記カーソルがポイントしている位置の前に削除のためのマークがされ、
前記ログ・ストリームの或る部分に進行中の読み取りオペレーションがないと判断されると、枝刈り処理がログ・ストリームの前記部分を削除し、
前記グルーミング処理および読み取りオペレーションの両方は、データの読み取りオペレーションがモノトニックであるように、前記前のグルーミング・サイクルに後続する、
請求項１８に記載の装置。
【請求項２０】
前記グルーミング処理は、グルーミング・サイクルが制限のある実行時間を有するように、前記グルーミング処理の開始時間より前のコミット・タイムスタンプを持つログ・ストリームだけを読み取り、
周期的なバックグラウンド処理による前記グルーミング処理の後、更新されたレコードが、最新のデータを必要とする読み取り処理によってまたは特定の期間からのデータを読み取る読み取り処理によって無視されるように、前記更新されたレコードが終了タイムスタンプでフラグされ、
前記マルチマスタ分散データ管理システムが、ノードにローカルな第一ストレージ・ティアと、分散共有ファイル・システムまたはオブジェクト・ストアを含む第二ストレージ・ティアとを含むストレージの２つのティア上で動作し、
前記第一ストレージ・ティアは、前回のサイクルで前記グルーミング処理を終了した箇所からグルーミングを開始するため、リカバリ過程で前記グルーミング処理によって使われることになるログの持続的バージョンを維持し、データへの迅速なアクセスを可能にするため、前記第二ストレージ・ティアの頻繁にアクセスされる部分をキャッシュに格納し、且つ
前記第二ストレージ・ティアは、前記データ・ストリームを維持し、前記マルチマスタ分散データ管理システム中のノードの全てに、前記データ・ストリームを利用可能にする、
請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の諸実施形態は、マルチマスタ分散データ管理システムにおけるトランザクション処理に関する。
【背景技術】
【０００２】
高可用性を狙いとする従来式のデータ管理システムは、何らかのデータのレプリカを得るために、更新、削除、および挿入（ＵＤＩ：ｕｐｄａｔｅ，ｄｅｌｅｔｅ，ａｎｄ  ｉｎｓｅｒｔ）などのトランザクション処理を可能にする必要がある。また、これらのトランザクション処理は、ビッグ・データ・エコシステムとの互換性を目指しており、これらシステムは、その効率的な読み取り、書込みオペレーションおよびスペース消費における優位性のゆえに、追加専用（しかして、変更にはなじまない）ストレージ・ストリームを用いる。
【発明の概要】
【０００３】
マルチマスタ分散データ管理システムにおけるトランザクション処理をグルーミング（grooming）する方法を提供する。
【０００４】
諸実施形態は、マルチマスタ分散データ管理システムにおけるトランザクション処理に関する。一実施形態は、少なくとも１つのトランザクション・ローカル側ログでのトランザクション処理の維持を含め、マルチマスタ分散データ管理システムにおけるトランザクション処理をグルーミングする方法を提供する。ログ中の各レコードに対するレコード識別子を含むテーブルに対しテーブル・ログ・スキャンが行われる。これらの識別子に基づいて、テーブル中の各コラムにコラム値がロードされる。これらコラム値に基づくレコードが、テーブル・ベースのグルーム済みトランザクション・ブロックに書き込まれ、グルームされたブロック上の各レコードに対するタプル・シーケンス番号が生成される。このテーブルは、トランザクション処理の処理取扱いを増加させるために、マルチマスタ分散データ管理システム中でトランザクション処理を取扱う諸ノードに亘って共有／シェアされる。
【０００５】
本発明のこれらのおよび他の特徴、態様、および利点は、以下の説明、添付の特許請求の範囲、および別添の図面を参照することによって理解することができよう。
【０００６】
本発明の諸実施形態を、単なる例示として、付加の図面を参照しながら以降に説明することとする。
【図面の簡単な説明】
【０００７】
【図１】或る実施形態による、クラウド・コンピューティング環境を表す。
【図２】或る実施形態による、抽象化モデル層のセットを表す。
【図３】或る実施形態による、マルチマスタ分散データ管理システムのためのネットワーク・アーキテクチャである。
【図４】或る実施形態による、図１のサーバもしくはクライアントまたはその両方に関連付けることが可能な典型的なハードウェア環境を示す。
【図５】一実施形態による、トランザクション処理に対しグルーミング処理を行うためのマルチマスタ分散データ管理システムを表すブロック図である。
【図６】一実施形態による、マルチマスタ分散データ管理システムにおいてグルーミング処理を行うための例示のアーキテクチャを表す。
【図７】一実施形態による、マルチマスタ分散データ管理システム中のデータのライフ・サイクルの例を表す。
【図８】一実施形態による、マルチマスタ分散データ管理システムにおいてデータをグルーミングする一例を表す。
【図９】一実施形態による、グルーミング評価プロセスに対する例示のブロック図を表す。
【図１０】一実施形態による、図９のグルーミング評価プロセスのための、例示の書込み処理を表す。
【図１１】一実施形態による、マルチマスタ分散データ管理システムにおけるトランザクション処理をグルーミングするためのプロセスに対するブロック図を表す。
【発明を実施するための形態】
【０００８】
本様々な実施形態の説明は、例示目的で提示されているのであって、網羅的であることもまたは本発明を開示した形態に限定することも意図されていない。当業者には、本発明の範囲および趣旨から逸脱しない多くの修改および別形が明白であろう。本明細書で用いられた用語は、諸実施形態の原理、実際上の応用、または市販の技術の技術的な改良を最善に説明し、または他の当業者が本明細書に開示された諸実施形態を理解できるように選択されたものである。
【０００９】
前もって当然のことながら、本開示はクラウド・コンピューティングの詳細な説明を含むが、本明細書中に記載の教示の実装は、クラウド・コンピューティング環境に限定はされない。それどころか、本発明の諸実施形態は、現在知られた、または将来開発される任意の他の種類のコンピューティング環境に合わせて実装することができる。
【００１０】
諸実施形態は、マルチマスタ分散データ管理システムにおけるトランザクション処理（例えば、更新、削除、挿入など）に関する。一実施形態は、少なくとも１つのトランザクション・ローカル側ログでのトランザクション処理の維持を含め、マルチマスタ分散データ管理システムにおけるトランザクション処理をグルーミングする方法を提供する。ログ中の各レコードに対するレコード識別子を含むテーブルに対してテーブル・ログ・スキャンが行われる。これらの識別子に基づいて、テーブル中の各コラムにコラム値がロードされる。これらコラム値に基づくレコード／タプルが、テーブル・ベースのグルーム済みトランザクション・ブロックに書き込まれ、グルームされたブロック上の各レコードに対するタプル・シーケンス番号（ＴＳＮ：ｔｕｐｌｅ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ）が生成される。このテーブルは、トランザクション処理の処理取扱いを増加させるために、システム中でトランザクション処理を取扱う諸ノードに亘って共有／シェアされる。
【００１１】
クラウド・コンピューティングは、最小の管理作業またはサービスのプロバイダとのやり取りで、迅速にプロビジョンしてリリースすることができる、構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン（ＶＭ：ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）およびサービス）の共有のプールへの、便利でオンデマンドのネットワーク・アクセスを可能にするためのサービス・デリバリの一モデルである。このクラウド・モデルは、少なくとも５つの特徴と、少なくとも３つのサービス・モデルと、少なくとも４つの展開モデルとを含むことができる。
【００１２】
特徴は次の通りである。
オンデマンド・セルフサービス：クラウド・コンシューマは、サービスのプロバイダとの人間のやり取りなしに、必要な場合は自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョンすることができる。
広範なネットワーク・アクセス：ネットワークを介して諸能力が利用可能で、異種から成るシンまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による使用を推進する標準的なメカニズムを通してアクセスされる。
リソースのプール化：プロバイダのコンピューティング・リソースは、マルチテナント・モデルを用いる複数のコンシューマにサービスするために、デマンドに従って動的に割り当ておよび再割り当てされる各種の物理的および仮想のリソースとしてプール化される。一般にコンシューマは提供されたリソースの正確な場所の制御または知識を持たない、という点で、場所無異存性の感覚があるが、抽象化のより高位レベルでは場所（例えば、国、州、またはデータ・センタ）を特定することを可能にできる。
敏速な伸縮性：諸能力は、迅速にスケール・アウトするため、場合によっては自動的に、敏速且つ伸縮自在にプロビジョンでき、且つ、迅速にスケール・インするために敏速にリリースされる。コンシューマには、プロビジョンのため利用可能な諸能力が多くの場合無制限に見え、いつでもどのような量でも購入が可能である。
計量されるサービス：クラウド・システムは、サービスの種類（例えば、ストレージ、処理、帯域幅、および有効なコンシューマ・アカウント）に適した抽象化のいずれかのレベルで、計量機能を利用することによって、リソース使用を自動的に管理し、最適化する。リソース利用は、モニタし、管理し、報告することが可能で、これにより、利用されるサービスのプロバイダとコンシューマとの双方に透明性を提供する。
【００１３】
サービス・モデルは次のとおりである。
サービスとしてのソフトウェア（ＳａａＳ：Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：コンシューマに提供される能力は、クラウド・インフラストラクチャ上で実行されているプロバイダのアプリケーションを使う能力である。これらのアプリケーションは、様々なクライアント・デバイスから、ウェブ・ブラウザ（例えば、ウェブベースのｅメール）などのシン・クライアント・インターフェースを介してアクセス可能である。コンシューマは、限られたコンシューマ固有のアプリケーション構成設定のあり得る例外を除いて、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個別のアプリケーション機能でさえも含め、根底にあるクラウド・インフラストラクチャを管理または制御はしない。
サービスとしてのプラットフォーム（ＰａａＳ：Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：コンシューマに提供される能力は、クラウド・インフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語およびツールを使って生成された、コンシューマ生成の、またはコンシューマ取得のアプリケーションを展開する能力である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含め、根底にあるクラウド・インフラストラクチャを管理または制御することはないが、これら展開されるアプリケーション、および、おそらくはアプリケーションのホスティング環境設定に対する制御を有する。
サービスとしてのインフラストラクチャ（ＩａａＳ：Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：コンシューマに提供される能力は、コンシューマが、処理、ストレージ、ネットワーク、およびオペレーティング・システムおよびアプリケーションを含み得る、任意のソフトウェアを展開し実行することが可能な他の基本的コンピューティング・リソースをプロビジョンする能力である。コンシューマは、根底にあるクラウド・インフラストラクチャを管理または制御することはないが、オペレーティング・システム、ストレージ、展開されるアプリケーションに対する制御、およびおそらくは選択ネットワーク・コンポーネント（例えば、ホストのファイヤウォール）への限定された制御を有する。
【００１４】
展開モデルは次のとおりである。
プライベート・クラウド：このクラウド・インフラストラクチャは、一組織のためだけに運営される。これは、当該組織または第三者によって管理されてよく、自組織構内に所在しても自組織構外に所在してもよい。
コミュニティ・クラウド：このクラウド・インフラストラクチャは、いくつかの組織によって共有され、共有の利害関係（例えば、任務、安全要件、指針、およびコンプライアンス配慮事項）を有する特定のコミュニティをサポートする。これは、これらの組織または第三者によって管理されてよく、これらの組織の構内に所在してもこれらの組織の構外に所在してもよい。
パブリック・クラウド：このクラウド・インフラストラクチャは、一般公衆または大きな産業グループに利用可能にされており、クラウド・サービスを販売する組織によって所有されている。
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、固有のエンティティに留まりながら、データおよびアプリケーションの可搬性（例えば、クラウド間の負荷バランスのためのクラウド・バースティング）を可能にする標準化されたまたは独自の技術によって一緒に結ばれた２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の合成体である。
【００１５】
クラウド・コンピューティング環境は、ステートレスネス、弱連結、モジュール性、および意味相互運用性に焦点を合わせて方向付けられたサービスである。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャが在る。
【００１６】
ここで図１を参照すると、例示的なクラウド・コンピューティング環境５０が表されている。図示のように、クラウド・コンピューティング環境５０は、例えば、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）またはセルラ電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、もしくは車載コンピュータ・システム５４Ｎまたはこれらの組み合わせなど、クラウド・コンシューマによって使用されるローカルのコンピューティング・デバイスが通信可能な１つ以上のクラウド・コンピューティング・ノード１０を含む。ノード１０は、相互に通信することができる。これらは、前述したプライベート、コミュニティ、パブリック、またはハイブリッド・クラウド、またはこれらの組み合わせなど、１つ以上のネットワークに物理的にまたは仮想的にグループ化する（図示せず）ことが可能である。これは、クラウド・コンピューティング環境５０が、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを維持する必要のない、サービスとしてのインフラストラクチャ、プラットフォーム、もしくはソフトウェア、またはこれらの組み合わせを提供することを可能にする。当然のことながら、図１中に示されたコンピューティング・デバイス５４Ａ〜５４Ｎの種類は、例示することだけを意図されたものであり、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続またはその両方を介して（例えば、ウェブ・ブラウザを使って）任意の種類のコンピュータ化デバイスと通信することができる。
【００１７】
ここで図２を参照すると、クラウド・コンピューティング環境５０（図１）によって設けられる機能的抽象化層のセットが示されている。前もって当然のことながら、図２に示されたコンポーネント、層、および機能は例示だけを意図されたものであり、本発明の実施形態はこれらに限定されない。図示のように、以下の諸層および対応する機能が設けられている。
【００１８】
ハードウェアおよびソフトウェア層６０は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム６１、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ（縮小命令セットコンピュータ））アーキテクチャ・ベースのサーバ６２、サーバ６３、ブレード・サーバ６４、ストレージ・デバイス６５、ならびに、ネットワークおよびネットワーキング・コンポーネント６６が含まれる。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア６７およびデータベース・ソフトウェア６８を含む。
【００１９】
仮想化層７０は、例として、仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、および仮想クライアント７５の仮想エンティティを設けることが可能な抽象化層を提供する。
【００２０】
一例において、管理層８０は以下に記載の機能を備えることが可能である。リソース・プロビジョン８１は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計量および価格設定８２は、クラウド・コンピューティング環境内でリソースが利用されるのに応じコストの追跡と、これらリソースの消費に対する課金または請求とを提供する。一例において、これらのリソースには、アプリケーション・ソフトウェア・ライセンスを含めてよい。セキュリティは、クラウド・コンシューマおよびタスクに対する身元検証、ならびにデータおよび他のリソースに対する保護を提供する。ユーザ・ポータル８３は、コンシューマおよびシステム管理者に対し、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理８４は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意（ＳＬＡ：Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）計画および達成８５は、ＳＬＡに沿って将来の必要性が予期されるクラウド・コンピューティング・リソースに対する事前配置およびそれらリソースの調達を提供する。
【００２１】
作業負荷層９０は、クラウド・コンピューティング環境で利用できる機能の例を提示している。この層から提供できる作業負荷および機能の例には、マッピングおよびナビゲーション９１、ソフトウェア開発およびライフ・サイクル管理９２、仮想教室教育配信９３、データ解析処理９４、トランザクション処理９５、およびマルチマスタ分散データ管理システムのプロセスにおけるトランザクション処理のグルーミング９６が含まれる。前述のように、図２に関連して述べた上記の例は、全て単なる例示であり、本発明はこれらの例に限定されない。
【００２２】
当然のことながら、本明細書で説明される１つ以上の実施形態の全ての機能は、通常、クラウド環境３００（図３）または処理システム４００（図４）によって実行することが可能で、プログラム・コードのモジュールとともにハードウェア処理装置として有形に具現化することができる。但し、非リアルタイム処理の場合、必ずしも上記である必要ではない。むしろ、非リアルタイム処理に対しては、本明細書に記載の機能性は、図２に示された層６０、７０、８０、および９０のいずれかによって、実行／実装するもしくは可能化するまたはその両方を行うことができよう。
【００２３】
本開示はクラウド・コンピューティングの詳細な説明を含んでいるが、本明細書で述べる教示の実装はクラウド・コンピューティング環境に限定されないことを再言しておく。それどころか、本発明の実施形態は、現在既知のまたは今後開発される、任意の種類のクラスタ化コンピューティング環境で実装することが可能である。
【００２４】
図３は、一実施形態による、ネットワーク・アーキテクチャ３００を表す。図３に示されるように、第一遠隔ネットワーク３０４および第二遠隔ネットワーク３０６を含む、複数の遠隔ネットワーク３０２が備えられている。ゲートウエイ３０１は、遠隔ネットワーク３０２と近接のネットワーク３０８との間を連結することができる。本ネットワーク・アーキテクチャ３００の状況において、ネットワーク３０４、３０６は、以下に限らないが、ＬＡＮ、インターネットなどのＷＡＮ、公衆電話交換ネットワーク（ＰＳＴＮ：ｐｕｂｌｉｃ  ｓｗｉｔｃｈｅｄ  ｔｅｌｅｐｈｏｎｅ  ｎｅｔｗｏｒｋ）、インターネット電話ネットワークなどを含め、それぞれ任意の形を取ることができる。
【００２５】
作動中、ゲートウエイ３０１は、遠隔ネットワーク３０２から近接のネットワーク３０８への入口点の役割を果たす。しかして、ゲートウエイ３０１は、ゲートウエイ３０１に到着した所与のデータのパケットを配信することが可能なルータとして、また、所与のパケットに対して、ゲートウエイ３０１を出入りする実際の通路を備えたスイッチとして、機能することができる。
【００２６】
さらに、近接のネットワーク３０８に連結された少なくとも１つのデータ・サーバ３１４が含まれており、これには、ゲートウエイ３０１を介して遠隔ネットワーク３０２からのアクセスが可能である。なお、データ・サーバ（単数または複数）３１４は、任意の種類のコンピューティング・デバイス／グループウェアを含んでよい。各データ・サーバ３１４には複数のユーザ・デバイス３１６が連結されている。かかるユーザ・デバイス３１６は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、プリンタ、もしくは任意の他の種類のロジック包含デバイス、またはこれらの組み合わせを含んでよい。なお、いくつかの実施形態では、ユーザ・デバイス３１１が任意のネットワークに直接に連結することも可能である。
【００２７】
周辺機器３２０または一連の周辺機器３２０、例えば、ファクシミリ・マシン、プリンタ、スキャナ、ハード・ディスク・ドライブ、ネットワーク接続のもしくはローカルのまたはその両方のストレージ・ユニットまたはシステムなどが、ネットワーク３０４、３０６、３０８の１つ以上に連結されてよい。なお、諸データベースもしくは追加のコンポーネントまたはその両方が、ネットワーク３０４、３０６、３０８に連結された任意の種類のネットワーク・エレメントとともに使用され、またはその中に組み込まれてよい。本説明の文脈において、ネットワーク・エレメントは、ネットワークの任意のコンポーネントを指すとしてよい。
【００２８】
いくつかのアプローチによれば、本明細書に記載の方法およびシステムは、仮想システムもしくはシステムまたはその両方とともに、もしくはそれらシステム上に、またはこれらの両方によって実装することが可能で、これらシステムは、ＩＢＭ  ｚ／ＯＳ（ＩＢＭ社の登録商標）環境をエミュレートするＵＮＩＸ（Ｒ）システム、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（Ｒ）環境を実質的にホストするＵＮＩＸ（Ｒ）システム、ＩＢＭ  ｚ／ＯＳ（ＩＢＭ社の登録商標）環境をエミュレートするＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（Ｒ）システムなど、１つ以上の他のシステムをエミュレートする。いくつかの実施形態において、この仮想化もしくはエミュレーションまたはその両方は、ＶＭＷＡＲＥ（Ｒ）ソフトウェアの使用を介して実装することが可能である。
【００２９】
図４は、一実施形態による、図３のユーザ・デバイス３１６もしくはサーバ３１４またはその両方に関連付けられた典型的なハードウェア・システム４００の環境を示す。一例において、ハードウェア構成は、マイクロプロセッサなどの中央処理ユニット４１０を有するワークステーション、およびシステム・バス４１２を介して相互接続されたいくつかの他のユニットを含む。図４に示されたワークステーションは、ランダム・アクセス・メモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４１４、読取り専用メモリ（ＲＯＭ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４１６、ディスク・ストレージ・ユニット４２０をバス４１２に接続するなど、周辺デバイスを接続するためのＩ／Ｏアダプタ４１８、キーボード４２４、マウス４２６、スピーカ４２８、マイクロフォン４３２、もしくは、タッチスクリーン、デジタル・カメラ（図示せず）などの他のユーザ・インターフェース・デバイスまたはこれらの組み合わせをバス４１２に接続するためのユーザ・インターフェース・アダプタ４２２、ワークステーションと通信ネットワーク４３５（例えば、データ処理ネットワーク）に接続するための通信アダプタ４３４、およびバス４１２をディスプレイ・デバイス４３８に接続するためのディスプレイ・アダプタ４３６を含むことが可能である。
【００３０】
一例において、ワークステーションは、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（Ｒ）オペレーティング・システム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、ＭＡＣ（Ｒ）ＯＳ、ＵＮＩＸ（Ｒ）ＯＳなど、それに常駐するオペレーティング・システムを有してよい。一実施形態において、システム４００は、ＰＯＳＩＸ（Ｒ）ベースのファイル・システムを用いる。当然のことながら、他の例では、前述とは異なるプラットフォームおよびオペレーティング・システムに実装することが可能である。かかる他の諸例は、オブジェクト指向プログラミング手法に加えて、ＪＡＶＡ、ＸＭＬ、Ｃ、もしくはＣ＋＋言語またはこれらの組み合わせで書かれたオペレーティング・システムを含んでよい。複雑なアプリケーションを開発するため用いられることが多くなってきている、オブジェクト指向プログラミング（ＯＯＰ：ｏｂｊｅｃｔ  ｏｒｉｅｎｔｅｄ  ｐｒｏｇｒａｍｍｉｎｇ）が使用されてもよい。
【００３１】
図５は、一実施形態による、トランザクション処理をグルーミングするために用いることが可能なシステム５００を表すブロック図である。一実施形態において、システム５００は、クライアント・デバイス５１０（例えば、携帯デバイス、スマート・デバイス、コンピューティング・システムなど）と、クラウドまたはリソース共有環境５２０（例えば、パブリック・クラウド・コンピューティング環境、プライベート・クラウド・コンピューティング環境、データセンタなど）と、サーバ５３０とを含む。一実施形態では、クライアント・デバイスには、クラウドまたはリソース共有環境５２０を介して、サーバ５３０からクラウド・サービスが提供される。
【００３２】
一実施形態において、システム５００では、グルーミングと言われる周期的バックグラウンド処理が、マルチマスタ・システム上で実行されている複数設定（multi-statement）トランザクションからのトランザクション処理（例えば、更新、削除、挿入（ＵＤＩ））を解析し、当該データのモノトニックなトランザクション読み取り一貫性を可能にする仕方で、追加専用ストレージ・ストリーム上にＵＤＩを発行する。一実施形態では、グルーミング処理のため、マルチマスタ・システムは、現行の複数設定トランザクションのＵＤＩをトランザクション・ローカル側ログ中に維持／保管する。トランザクションのコミットが成就された場合にだけ、トランザクション・ローカル側ログが、ログ・ストリームに追加される。グルーミング処理は、ログ・ストリームだけを読み取り、したがって、グルーミング処理は、コミットされていないトランザクションの変更を知るのを避ける。グルーミング処理を実行するスレッド（「グルーマ」とも言われる）は、前のグルーミング・サイクルがどこで終了したかを記憶するためにログ・ストリーム上にカーソルまたは表示を設ける。ログ・ストリームの、グルーマのカーソルまたは表示がポイントしている箇所の前に削除のためのマークがされる。一実施形態において、枝刈り処理とも言われる処理が、ログ・ストリーム上に進行中の読み取りオペレーションがなければ当該ストリームのその部分を削除する。前回のグルーム・サイクルの後のグルーマおよび読み取りオペレーションの両方は、したがって、まだグルームされていないログ・ストリームの読み取りを開始する。これは、データのモノリシックな読み取りをさらに確実にする。さらに、グルーミング処理は、そのグルーミング処理の開始時間より以前のタイムスタンプ（例えば、当該ログ・アイテムに対するコミット時間）を持つログ・ストリームだけを読み取り、これは、グルーミング・サイクルに対し制限のある実行時間を確実にする。
【００３３】
図６は、一実施形態による、マルチマスタ分散データ管理システムにおいてグルーミング処理を行うための例示のアーキテクチャ６００を表す。一実施形態において、アーキテクチャ６００は、アプリケーション６１０、タスク・コーディネータ６２０、解析ノード６５０のための実行エンジン６３０、トランザクション・ノード６５５のための実行エンジン６４０、およびストレージ６６０とを含む。一実施形態において、アプリケーション６１０は、わずかに旧いデータに耐性があり、最新のデータを必要とする解析アプリケーション６１１、および高容量トランザクション・アプリケーション６１２を含むことができる。一実施形態で、解析ノード６５０は、読取り専用オペレーションだけを取扱う。トランザクション・ノード６５５は、トランザクション・オペレーションをグルーミング（例えば、ＵＤＩ）する役割を担う。実行エンジン６４０は、メモリ・デバイス６４６（例えば、ソリッド・ステート・ドライブ（ＳＳＤ：ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）、および、読み取り専用メモリ、フラッシュ・メモリ、強誘電性ＲＡＭ、磁気コンピュータ・ストレージ・デバイス（例えば、ハード・ディスク・ドライブ、フレキシブル・ディスク、および磁気テープ）、光ディスク等などの不揮発性メモリ（ＮＶＭ：ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）に接続された、複数の実行エンジン６４５を含む。ストレージ６６０は、共有ファイル・システム、オブジェクト・ストアまたはその両方を含んでよい。
【００３４】
一実施形態において、並列処理を使ってＵＤＩオペレーションをスピード・アップするために、アーキテクチャ６００を含むマルチマスタ・システム中のテーブルが、主（単一コラムまたは混成の）キーのサブセットに基づいて、トランザクションを取扱う諸ノードに亘ってシェアまたは区分けされる。また、シェアされたテーブルは、可用性を高めるために、（構成可能な数の）複数のノード（トランザクション・ノード６５５）に割り当てられる。ＵＤＩオペレーションおよびデータ探索の役割を担うトランザクション・ノード６５５に加え、解析ノード６５０は解析読み取り要求に対する役割だけを担う。分散連携システムは、シェアおよび複製に関するメタ情報を管理するタスク・コーディネータ６２０を含み、カタログは、各テーブルに対するスキーマ情報を維持する。また、１つ以上の実施形態は、ローカル・システムのコンポーネントを関与させずに、外部の読み取り装置がマルチマスタ・システムを介して取り込まれたデータを読み取ることを可能にするが、但し、それらの読み取り装置は、ＵＤＩオペレーションを取扱うトランザクション・ノード６５５上に格納された最新のトランザクション・データを見ることはできないことになる。
【００３５】
一実施形態において、アーキテクチャ６００によって取扱われる各トランザクションは、１つ以上のログ・ブロックから成るトランザクション・ローカル側ログ８１１（図８）中の、そのコミットされていない変更を維持する。各ログ・ブロックは、１つのテーブルだけに対するトランザクションを包含することができる。コミット時に、トランザクションは、そのトランザクション・ローカル側ログ８１１をログ８１２（図８）に追加し、該ログは、その両方がストレージ６６０（図８のメモリ８１０）に保管され、ディスク（ＳＳＤ／ＮＶＭ６４６（（図８の）８３０））上に存続される。さらに、トランザクション・ローカル側ログ８１１は、可用性のため、シェアされたデータの複製を維持する役割を果たす他のトランザクション・ノード６５５の各々にコピーされる。シェアされたデータのどの複製も、当該シェアされたデータ（マルチマスタ）に対するいかなるトランザクション要求も処理可能であるが、これら複製の１つが、周期的にグルーミング・オペレーションまたは処理を呼び出す。このグルーミング処理は、ログ８１２をスキャンし、同じテーブルに対する複数の（コミットされた）トランザクションからのログ・ブロックを一緒にグループ化して、単一のテーブルからだけのデータを包含するより大きなグルーム済ブロックを生成する（例えば、図８のグルームされたデータ８５５を参照）。ログ・ブロックを併合するのに加え、このグルーミング・オペレーションは、データ・アイテムに対する衝突解決９３０（図９）をさらに行うことが可能である。グルームされたデータ・ブロック８５０は、次いで、追加専用ストレージ・ストリーム上にフラッシュされ、これもまた、他のノードが同様にアクセスできるように共有分散ファイル・システムである。グルーミング過程の後、グルーマは、自分が成功裏にグルームしたログレコードを、それがこれ以上リソースを占拠しないように、またグルーミングの次の過程を終了した箇所から開始できるように枝刈りする。
【００３６】
図７は、一実施形態による、アーキテクチャ６００（図６）を含むマルチマスタ分散データ管理システム中のデータのライフ・サイクルの例７００を表す。一実施形態において、データのライフは、最新データ７０１と旧データ７０２とで表される。最新データ７０１は、活性（最新）ゾーン７１０に属し、旧データはグルーム済みゾーン７１１に属する（例えば約１秒旧い）。トランザクション・ノード６５５は活性ゾーン７１０に属し、挿入、更新および削除のトランザクション処理７２０、ならびに、最新のデータを必要とする読み取り専用オペレーション７２１を受信する。解析ノード６５０はグルーム・ゾーンに７１１に属し、ポイント探索７３１、ビジネス・インテリジェント・オペレーション７３２、およびマシン学習（読み取り専用）オペレーション７３３を含む入力７３０を受信する。図示のように、活性ゾーン７１０中のデータは、それがより旧いデータになるのに応じてグルーム済みゾーン７１１に移動する。
【００３７】
図８は、一実施形態による、マルチマスタ分散データ管理システムにおいてデータをグルーミングする一例８００を表す。図示のように、コミットされていない変更は、１つ以上のログ・ブロックから成るトランザクション・ローカル側ログ８１１の中にレコード／格納される。テーブルのログレコード８１５は、ログ８１２（持続的）に対するログ・ブロックを含む。このトランザクションは、トランザクション・ローカル側ログ８１１をログ８１２に追加し、これは、メモリ８１０およびディスクＳＳＤ／ＮＶＭ８３０の両方に、保管および持続される。ＳＳＤ／ＮＶＭ８３０において、ログ８１２は、レコード８３５中で処理され、キャッシュ化データ８４０としてキャッシュ保管される。グルーミング処理によりもたらされたグルーム済みデータ８５５は、共有ファイル・システム８５０（または、図６のストレージ６６０）中に格納される。
【００３８】
図９は、一実施形態による、グルーミング評価プロセスに対する例示のブロック図９００を表す。ハイレベルの例示ブロック図９００において、このプロセスは、ログ中の各レコードに対するレコード識別子（ＩＤ）を含むテーブルに対し、テーブル・ログ・スキャン９１０を行うステップを含む。テーブル・ログ・スキャン９１０への入力は、テーブル名、および（制限のあるスキャンに対する）ログ終了タイムスタンプを含む。テーブル・ログ・スキャン９１０の出力は、制限のあるＴＳＮ（ＢＴＳＮ）群（すなわち、ログ中の各レコードに対するレコードＩＤ）を含む。ブロック９２０で、コラムへのロード処理が行われる。コラムのロードは、入力としてブロック９１０からのＢＳＴＮを取り、コラム値を出力する。一実施形態において、ブロック９３０で、随意的な衝突解決（例えば、データ衝突など）が行われる。ブロック９４０で、テーブル書込みプロセスが行われる。このテーブル書込みプロセスは、入力としてコラム値を取り、ＴＳＮ（グルーム済みブロック上のレコードＩＤ）を出力する。このテーブル書込みプロセスについては、図１０を参照しながら後記でさらに説明する。一実施形態において、テーブルの各インデックスに対し、書込み／更新のインデックスに対する随意的な処理が行われる。一実施形態では、ブロック９５０に対する入力はインデックスのコラムおよびＴＳＮであり、出力はハッシュ値である。
【００３９】
図１０は、一実施形態による、図９のグルーミング評価プロセス９００のブロック９４０のための例示のテーブル書込みプロセスを表す。ブロック１０１０で、テーブル書込みプロセスは、テーブル・ログのスキャニングから、レコードの次の入力ストライド／バッチ／群を取得または受信する。ブロック１０２０で、テーブル書込みプロセスは、一意的なコミット・タイムスタンプを生成する。ブロック１０３０で、テーブル書込みプロセスは、諸レコードのコラムをインメモリ・バッファに追加し、グルーム済みトランザクション・ブロックに対するＴＳＮを生成する。ブロック１０４０で、さらなる入力が存在するかどうか、且つバッファが満杯でないかどうかが判断される。さらなる入力が存在し、且つバッファが満杯でない場合、テーブル書込みプロセスは、ブロック１０１０に戻って続行する。それ以外の場合は、テーブル書込みプロセスはブロック１０５０に進み、インメモリ・バッファを、共有ファイル・システム、オブジェクト・ストア、またはローカル・キャッシュにフラッシュする。ブロック１０６０で、さらなる入力が利用可能かどうかが判断される。さらなる入力が利用可能な場合、テーブル書込みプロセスは、ブロック１０１０に戻って続行する。それ以外の場合は、テーブル書込みプロセスはブロック１０７０に進み、テーブル書込みプロセスは、分散コーディネータにグルームの終了点情報（すなわち、ログの終了点および最後のグルーム済みブロックのＩＤ）を通知する。ブロック１０８０で、テーブル書込みプロセスは、グルーム終了点を越えてログ・ヘッドを移動し、読み取り処理が残らなくなるまでログを枝刈りする。
【００４０】
図１１は、一実施形態による、マルチマスタ分散データ管理システムにおけるトランザクション処理をグルーミングするためのプロセス１１００に対するブロック図を表す。一実施形態において、ブロック１１１０で、プロセス１１００は、少なくとも１つのトランザクション・ローカル側ログにおいてトランザクション処理を維持する。ブロック１１２０で、ログ中の各レコードに対するレコード識別子を含むテーブルに対し、テーブル・ログ・スキャンが行われる。ブロック１１３０で、テーブル中の各コラムに、識別子に基づいてコラム値がロードされる。ブロック１１４０で、これらレコードに対しＴＳＮが生成され、コラム値に基づいて、グルーム済みトランザクション・ブロックについてのレコードがテーブル中に書込まれる。トランザクション処理の処理取扱いを増加させるために、マルチマスタ分散データ管理システム中でトランザクション処理を取り扱う諸ノードに亘って、このテーブルは共有／シェアされる。
【００４１】
一実施形態において、ブロック１１４０は、テーブルのスキャニングからの次のレコードの入力群を受信するステップと、一意的なコミット・タイムスタンプを生成するステップと、それらレコードのコラムをインメモリ・バッファに追加するステップと、グルーム済みトランザクション・ブロックに書込まれたレコードに対するＴＳＮを生成するステップとをさらに含んでよい。ブロック１１４０は、さらなるレコードの入力群がなく、且つインメモリ・バッファが満杯でないと判断されると、インメモリ・バッファを、共有ファイル・システム、オブジェクト・ストア、またはローカル・キャッシュのうちの少なくとも１つに向けフラッシュするステップをさらに含む。上記以外の場合、プロセス１１００は、テーブルのスキャニングからの次のレコードの入力群の受信に戻って続行する。
【００４２】
一実施形態において、プロセス１１００は、さらなるレコードの入力群が利用できない場合、分散コーディネータにグルームの終了点情報を通知し、グルーム終了点を越えてログ・ヘッドを移動し、読み取り処理が残らなくなるまでログを枝刈りするステップをさらに含むことができる。
【００４３】
一実施形態で、プロセス１１００に対するトランザクション処理は、更新、削除、および挿入オペレーションを含む。トランザクション・コミットが成就されると、トランザクション・ローカル側ログがログ・ストリームに追加される。グルーミング処理は、このログだけを読み取り、コミットされていないトランザクション変更は回避する。グルーミング処理を実行するスレッドは、前のグルーミング・サイクルのしるしとして、ログ上にカーソルを維持する。
【００４４】
一実施形態において、プロセス１１００に対し、ログ・ストリーム中で、カーソルがポイントしている位置の前のポイントに削除のためのマークがされる。枝刈り処理は、ログ・ストリームの或る部分に進行中の読み取りオペレーションがないと判断すると、ログ・ストリームのその部分を削除する。グルーミング処理および読み取りオペレーションの両方は、データの読み取りオペレーションがモノトニックであるように前のグルーミング・サイクルに後続する。グルーミング処理は、グルーミング・サイクルが制限のある実行時間を有するように、グルーミング処理の開始時間より前のコミット・タイムスタンプを持つログ・ストリームだけを読み取る。
【００４５】
一実施形態において、プロセス１１００は、周期的なバックグラウンド処理によるグルーミング処理の後、更新されたレコードが、最新のデータを必要とする読み取り処理によってまたは特定の期間からのデータを読み取る読み取り処理によって無視されるように、これら更新されたレコードが終了タイムスタンプでフラグされるように設けることができる。
【００４６】
一実施形態において、プロセス１１００は、マルチマスタ分散データ管理システムが、ノードにローカルな第一ストレージ・ティアと、分散共有ファイル・システムまたはオブジェクト・ストアを含む第二ストレージ・ティアとを含むストレージの２つのティア上で動作することを含んでよい。第一ストレージ・ティアは、前回のサイクルでグルーミング処理を終了した箇所からグルーミングを開始するため、リカバリ過程でグルーミング処理によって使われることになるログの持続的バージョンを維持し、データへの迅速なアクセスを可能にするため、第二ストレージ・ティアの頻繁にアクセスされる部分をキャッシュ保管する。第二ストレージ・ティアは、データ・ストリームを維持し、そのデータ・ストリームを、マルチマスタ分散データ管理システム中のノードの全てに対し利用可能にする。
【００４７】
当業者には当然のことながら、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、ソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは一般に本明細書では全て「回路」、「モジュール」、または「システム」と称することがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが具現化されている一つ以上のコンピュータ可読媒体（単数または複数）中に具現化されたコンピュータ・プログラム製品の形を取ることも可能である。
【００４８】
一つ以上のコンピュータ可読媒体の任意の組み合わせを用いることが可能である。このコンピュータ可読媒体は、コンピュータ可読信号媒体であっても、コンピュータ可読ストレージ媒体であってもよい。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいは前述の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のさらに具体的な例（非包括的リスト）には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去およびプログラマブル読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であってよい。
【００４９】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であってよい。
【００５０】
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバケーブル、ＲＦなど、または前述の任意の適切な組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【００５１】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うことも可能である。
【００５２】
本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様が上記で説明されている。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラマブル・データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するための手段を生成するようにすることができる。
【００５３】
また、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ・プログラム命令を、コンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能／動作を実装する命令群を包含する製造品を作り出すようにすることができる。
【００５４】
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラマブル装置上、または他のデバイス上で一連のオペレーション・ステップを実施させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラマブル装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。
【００５５】
図面のフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能（単数または複数）を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、または命令の部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われ得る。例えば、連続して示された２つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
【００５６】
特許請求の範囲中の単数形の要素への言及は、明示でそう述べられていない限り、「唯一無二」でなく、むしろ「１つ以上」を意味することが意図されている。当業者には既知のまたは今後知られることになる、前述の例示的な実施形態の要素の全ての構造的および機能的等価物は、本特許請求の範囲に網羅されることが意図されている。本明細書中のどの請求要素も、その要素が語句「ｍｅａｎｓ  ｆｏｒ（のための手段）」または「ｓｔｅｐ  ｆｏｒ（のためのステップ）」を用いて明示で述べられている場合を除き、合衆国第３５法典第１１２条第６パラグラフの条項の下で解釈されるべきではない。
【００５７】
本明細書で使用する用語は、単に特定の実施形態を説明する目的のためのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「或る（“ａ”、“ａｎ”）」、および「該（“ｔｈｅ”）」は、文脈上明瞭に別途に示されている場合を除き、複数形も同じように含むことが意図されている。さらに、当然のことながら本明細書で用いられる「含む（“ｃｏｍｐｒｉｓｅ”）」もしくは「含んでいる（“ｃｏｍｐｒｉｓｉｎｇ”）」またはその両方は、述べられた特徴、完全体（ｉｎｔｅｇｅｒ）、ステップ、オペレーション、要素、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の特徴、完全体、ステップ、オペレーション、要素、コンポーネント、もしくはこれらの群、またはこれらの組み合わせの存在または追加を排除するものではない。
【００５８】
添付の請求項中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および等価物は、具体的に請求された他の請求要素と組み合わせてその機能を実施するための、一切の構造、材料または動作を包含することが意図されている。本発明の記述は、例示および説明の目的で提示されたものであり、網羅的であることも、または本発明を開示した形態に限定することも意図されていない。当業者には、本発明の範囲および趣旨から逸脱することのない多くの修改および別形が明白であろう。諸実施形態は、本発明の原理および実際的な応用を最善に説明し、他の当業者が、意図する特定の用途に適したさまざまな修改を加えた様々な実施形態に関して、本発明を理解できるように選択され説明されたものである。
【図１】
2021515294.tif 000003
【図２】
2021515294.tif 000004
【図３】
2021515294.tif 000005
【図４】
2021515294.tif 000006
【図５】
2021515294.tif 000007
【図６】
2021515294.tif 000008
【図７】
2021515294.tif 000009
【図８】
2021515294.tif 000010
【図９】
2021515294.tif 000011
【図１０】
2021515294.tif 000012
【図１１】
2021515294.tif 000013
【手続補正書】
【提出日】令和3年4月13日(2021.4.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マルチマスタ分散データ管理システムにおいてトランザクション処理をグルーミングする方法であって、前記方法は、
少なくとも１つのトランザクション・ローカル側ログにおいてトランザクション処理を維持するステップと、
ログ中の各レコードのためのレコード識別子を含むテーブルに対し、テーブル・ログ・スキャンを実行するステップと、
前記レコード識別子に基づいて、前記テーブル中の各コラムにコラム値をロードするステップと、
前記コラム値に基づいて、前記レコードに対するタプル・シーケンス番号を生成し、グルーム済みトランザクション・ブロック上の前記レコードを前記テーブルに書込むステップと、
を含み、
前記テーブルが、前記トランザクション処理の処理取扱いを増加するために、前記マルチマスタ分散データ管理システム中でトランザクション処理を取扱う複数のノードに亘ってシェアされる、
方法。
【請求項２】
前記書込むステップが、
前記テーブルのスキャニングから、次のレコードの入力群を受信するステップと、
一意的コミット・タイムスタンプを生成するステップと、
前記レコードのコラムをインメモリ・バッファに追加するステップと、
前記グルーム済みトランザクション・ブロックに書込まれた前記レコードに対し前記タプル・シーケンス番号を生成するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
さらなるレコードの入力群がなく、且つ前記インメモリ・バッファが満杯でないと判断されると、前記インメモリ・バッファを、共有ファイル・システム、オブジェクト・ストア、およびローカル・キャッシュのうちの少なくとも１つに向けフラッシュする、請求項２に記載の方法。
【請求項４】
さらなるレコードの入力群が利用できない場合、分散コーディネータにグルームの終了点情報を通知するステップと、 
グルーム終了点を越えてログ・ヘッドを移動するステップと、
読み取り処理が残らなくなるまで前記ログを枝刈りするステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記トランザクション処理が、更新、削除、および挿入オペレーションを含み、
トランザクション・コミットが成就されると、前記トランザクション・ローカル側ログが前記ログのストリームに追加され、
グルーミング処理は、前記ログだけを読み取り、コミットされていないトランザクション変更は回避し、且つ
前記グルーミング処理を実行するスレッドは、前のグルーミング・サイクルのしるしとして、前記ログ上にカーソルを維持する、
請求項１に記載の方法。
【請求項６】
ログ・ストリーム中の前記カーソルがポイントしている位置の前に削除のためのマークがされ、
前記ログ・ストリームの或る部分に進行中の読み取りオペレーションがないと判断されると、枝刈り処理がログ・ストリームの前記部分を削除し、且つ
前記グルーミング処理および読み取りオペレーションの両方が、データの読み取りオペレーションがモノトニックであるように、前記前のグルーミング・サイクルに後続する、
請求項５に記載の方法。
【請求項７】
前記グルーミング処理は、グルーミング・サイクルが制限のある実行時間を有するように、前記グルーミング処理の開始時間より前のコミット・タイムスタンプを持つログ・ストリームだけを読み取る、
請求項６に記載の方法。
【請求項８】
周期的なバックグラウンド処理による前記グルーミング処理の後、更新されたレコードが、最新のデータを必要とする読み取り処理によってまたは特定の期間からのデータを読み取る読み取り処理によって無視されるように、前記更新されたレコードが終了タイムスタンプでフラグされる、
請求項７に記載の方法。
【請求項９】
前記マルチマスタ分散データ管理システムが、ノードにローカルな第一ストレージ・ティアと、分散共有ファイル・システムまたはオブジェクト・ストアを含む第二ストレージ・ティアとを含むストレージの２つのティア上で動作し、
前記第一ストレージ・ティアは、前回のサイクルで前記グルーミング処理を終了した箇所からグルーミングを開始するため、リカバリ過程で前記グルーミング処理によって使われることになるログの持続的バージョンを維持し、データへの迅速なアクセスを可能にするため、前記第二ストレージ・ティアの頻繁にアクセスされる部分をキャッシュに格納し、且つ
前記第二ストレージ・ティアは、データ・ストリームを維持し、前記マルチマスタ分散データ管理システム中のノードの全てに、前記データ・ストリームを利用可能にする、
請求項７に記載の方法。
【請求項１０】
プロセッサに、請求項１から９の何れか一項に記載の方法を実行させるためのプログラム。
【請求項１１】
プロセッサに、請求項１から９の何れか一項に記載の方法を実行させるためのプログラムを記憶した記憶媒体。
【請求項１２】
請求項１から９の何れか一項に記載の方法を実行するプロセッサを備えた装置。
【国際調査報告】
2021515294.tif 000014
2021515294.tif 000015