IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-505161ログ・パイプラインの競合に基づくデータベース・ログの書き込み
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-05
(54)【発明の名称】ログ・パイプラインの競合に基づくデータベース・ログの書き込み
(51)【国際特許分類】
   G06F 16/176 20190101AFI20240129BHJP
【FI】
G06F16/176
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023542709
(86)(22)【出願日】2022-01-12
(85)【翻訳文提出日】2023-07-13
(86)【国際出願番号】 CN2022071585
(87)【国際公開番号】W WO2022161170
(87)【国際公開日】2022-08-04
(31)【優先権主張番号】17/162,063
(32)【優先日】2021-01-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】リー、シュオ
(72)【発明者】
【氏名】ワン、シャオボー
(72)【発明者】
【氏名】ツォン、ジアチアン
(72)【発明者】
【氏名】スン、シェンヤン
(57)【要約】
データベース・ログの書き込みが、ログ・パイプラインの競合に基づく。データをログ・パイプラインに書き込むことにおける競合が事前に指定されたレベルであるかどうかに関する判定が行われ、ログ・パイプラインは、データをメモリからストレージに書き込むことにおいて使用される。データをログ・パイプラインに書き込むことにおける競合が事前に指定されたレベルであるということの決定に基づいて、新しいログ・パイプラインを作成するための分割動作が自動的に実行される。
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、前記プログラム命令が、
データをログ・パイプラインに書き込むことにおける競合が事前に指定されたレベルであるかどうかを判定することであって、前記ログ・パイプラインが、前記データをメモリからストレージに書き込むことにおいて使用される、前記判定することと、
前記データを前記ログ・パイプラインに書き込むことにおける前記競合が前記事前に指定されたレベルであるということを決定することに基づいて、分割動作を自動的に実行して新しいログ・パイプラインを作成することとを含む方法を実行する、コンピュータ・プログラム製品。
【請求項2】
前記方法が、ルート・マップに基づいて、受信データを選択されたログ・パイプラインにルーティングすることをさらに含み、前記ルート・マップが、複数のログ・パイプラインのうちのどのログ・パイプラインが前記受信データを受信するかの指示を含み、前記複数のログ・パイプラインが少なくとも前記ログ・パイプラインおよび前記新しいログ・パイプラインを含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
選択された識別子のモジュロ演算を使用して、前記ルート・マップによって示される前記ルーティングが決定され、前記モジュロ演算において使用されるモジュロ数が、前記複数のログ・パイプラインのうちのログ・パイプラインの数に基づく、請求項2に記載のコンピュータ・プログラム製品。
【請求項4】
前記選択された識別子が、単位回復の識別子であり、前記単位回復が、前記受信データを生成する1つまたは複数の動作を含む、請求項3に記載のコンピュータ・プログラム製品。
【請求項5】
前記方法が、前記新しいログ・パイプラインを作成することに基づいて前記ルート・マップを作成することをさらに含む、請求項2に記載のコンピュータ・プログラム製品。
【請求項6】
前記方法が、
1つまたは複数のデータの単位がメモリからストレージに書き込まれるかどうかを判定することであって、前記判定することが、1つまたは複数のログ・パイプライン内の1つまたは複数のフラッシュ・ポイントに基づく、前記判定することと、
前記1つまたは複数のデータの単位がメモリからストレージに書き込まれるということの決定に基づいて、前記1つまたは複数のデータの単位をメモリからストレージに書き込むこととをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項7】
前記方法が、前記1つまたは複数のログ・パイプラインの最小フラッシュ・ポイントを決定することをさらに含み、前記1つまたは複数のデータの単位のうちのデータの単位がメモリからストレージに書き込まれるかどうかの前記判定が、前記データの単位が、前記最小フラッシュ・ポイントとの事前に定義された関係を有するタイムスタンプを含んでいるかどうかを判定することを含み、前記データの単位が、前記最小フラッシュ・ポイントとの前記事前に定義された関係を有する前記タイムスタンプを含んでいるということに基づいて、前記データの単位を前記書き込むことが実行される、請求項6に記載のコンピュータ・プログラム製品。
【請求項8】
前記方法が、
ログ書き込みエンジンを使用して、ログ・データを1つまたは複数のログ・パイプラインからストレージに書き込むことと、
前記ログ・データを前記1つまたは複数のログ・パイプラインから書き込むために、1つまたは複数の追加のログ書き込みエンジンがデプロイされるかどうかを自動的に判定することと、
前記1つまたは複数の追加のログ書き込みエンジンがデプロイされるということの決定に基づいて、前記1つまたは複数の追加のログ書き込みエンジンをデプロイすることとをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項9】
前記方法が、
1つまたは複数のデータベース・オブジェクトに対して回復が実行されるということを決定することと、
回復が実行されるということの決定に基づいて、第1の複数の並べ替えられたレコードを提供するために、第1の技術を使用してストレージから読み取られた複数のレコードを並べ替えることであって、前記第1の複数の並べ替えられたレコードが第1の複数のログ単位を含む、前記並べ替えることと、
前記第1の複数の並べ替えられたレコードをやり直し動作に提供することであって、前記やり直し動作が前記第1の複数のログ単位に対して並列に実行される、前記提供することとをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項10】
前記方法が、
1つまたは複数のデータベース・オブジェクトに対して回復が実行されるということを決定することと、
回復が実行されるということの決定に基づいて、第2の複数の並べ替えられたレコードを提供するために、第2の技術を使用してストレージから読み取られた複数のレコードを並べ替えることであって、前記第2の複数の並べ替えられたレコードが第2の複数のログ単位を含む、前記並べ替えることと、
前記第2の複数の並べ替えられたログ・レコードを取り消し動作に提供することであって、前記取り消し動作が前記第2の複数のログ単位に対して並列に実行される、前記提供することとをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項11】
前記方法が、
データを1つまたは複数のログ・パイプラインに書き込むことにおける前記競合が、別の事前に指定されたレベルであるかどうかを判定することと、
前記データを前記1つまたは複数のログ・パイプラインに書き込むことにおける前記競合が前記別の事前に指定されたレベルであるということを決定することに基づいて、マージ動作を実行してログ・パイプラインの数を減らすこととをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項12】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信する少なくとも1つのプロセッサとを備え、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
データをログ・パイプラインに書き込むことにおける競合が事前に指定されたレベルであるかどうかを判定することであって、前記ログ・パイプラインが、前記データをメモリからストレージに書き込むことにおいて使用される、前記判定することと、
前記データを前記ログ・パイプラインに書き込むことにおける前記競合が前記事前に指定されたレベルであるということを決定することに基づいて、分割動作を自動的に実行して新しいログ・パイプラインを作成することとを含む、コンピュータ・システム。
【請求項13】
前記方法が、ルート・マップに基づいて、受信データを選択されたログ・パイプラインにルーティングすることをさらに含み、前記ルート・マップが、複数のログ・パイプラインのうちのどのログ・パイプラインが前記受信データを受信するかの指示を含み、前記複数のログ・パイプラインが少なくとも前記ログ・パイプラインおよび前記新しいログ・パイプラインを含む、請求項12に記載のコンピュータ・システム。
【請求項14】
前記方法が、
ログ書き込みエンジンを使用して、ログ・データを1つまたは複数のログ・パイプラインからストレージに書き込むことと、
前記ログ・データを前記1つまたは複数のログ・パイプラインから書き込むために、1つまたは複数の追加のログ書き込みエンジンがデプロイされるかどうかを自動的に判定することと、
前記1つまたは複数の追加のログ書き込みエンジンがデプロイされるということの決定に基づいて、前記1つまたは複数の追加のログ書き込みエンジンをデプロイすることとをさらに含む、請求項12に記載のコンピュータ・システム。
【請求項15】
前記方法が、
1つまたは複数のデータベース・オブジェクトに対して回復が実行されるということを決定することと、
回復が実行されるということの決定に基づいて、第1の複数の並べ替えられたレコードを提供するために、第1の技術を使用してストレージから読み取られた複数のレコードを並べ替えることであって、前記第1の複数の並べ替えられたレコードが第1の複数のログ単位を含む、前記並べ替えることと、
前記第1の複数の並べ替えられたレコードをやり直し動作に提供することであって、前記やり直し動作が前記第1の複数のログ単位に対して並列に実行される、前記提供することとをさらに含む、請求項12に記載のコンピュータ・システム。
【請求項16】
前記方法が、
1つまたは複数のデータベース・オブジェクトに対して回復が実行されるということを決定することと、
回復が実行されるということの決定に基づいて、第2の複数の並べ替えられたレコードを提供するために、第2の技術を使用してストレージから読み取られた複数のレコードを並べ替えることであって、前記第2の複数の並べ替えられたレコードが第2の複数のログ単位を含む、前記並べ替えることと、
前記第2の複数の並べ替えられたログ・レコードを取り消し動作に提供することであって、前記取り消し動作が前記第2の複数のログ単位に対して並列に実行される、前記提供することとをさらに含む、請求項12に記載のコンピュータ・システム。
【請求項17】
前記方法が、
データを1つまたは複数のログ・パイプラインに書き込むことにおける前記競合が、別の事前に指定されたレベルであるかどうかを判定することと、
前記データを前記1つまたは複数のログ・パイプラインに書き込むことにおける前記競合が前記別の事前に指定されたレベルであるということを決定することに基づいて、マージ動作を実行してログ・パイプラインの数を減らすこととをさらに含む、請求項12に記載のコンピュータ・システム。
【請求項18】
コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
データをログ・パイプラインに書き込むことにおける競合が事前に指定されたレベルであるかどうかを判定することであって、前記ログ・パイプラインが、前記データをメモリからストレージに書き込むことにおいて使用される、前記判定することと、
前記データを前記ログ・パイプラインに書き込むことにおける前記競合が前記事前に指定されたレベルであるということを決定することに基づいて、分割動作を自動的に実行して新しいログ・パイプラインを作成することとを含む、コンピュータ実装方法。
【請求項19】
ルート・マップに基づいて、受信データを選択されたログ・パイプラインにルーティングすることをさらに含み、前記ルート・マップが、複数のログ・パイプラインのうちのどのログ・パイプラインが前記受信データを受信するかの指示を含み、前記複数のログ・パイプラインが少なくとも前記ログ・パイプラインおよび前記新しいログ・パイプラインを含む、請求項18に記載のコンピュータ実装方法。
【請求項20】
ログ書き込みエンジンを使用して、ログ・データを1つまたは複数のログ・パイプラインからストレージに書き込むことと、
前記ログ・データを前記1つまたは複数のログ・パイプラインから書き込むために、1つまたは複数の追加のログ書き込みエンジンがデプロイされるかどうかを自動的に判定することと、
前記1つまたは複数の追加のログ書き込みエンジンがデプロイされるということの決定に基づいて、前記1つまたは複数の追加のログ書き込みエンジンをデプロイすることとをさらに含む、請求項18に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【0001】
1つまたは複数の態様は、一般に、コンピューティング環境内の処理を容易にすることに関し、特に、コンピューティング環境のデータベース・システムに関連する処理を容易にすることに関する。
【背景技術】
【0002】
データベース・システムは、通常、1つまたは複数のデータベースおよび少なくとも1つのデータベース管理システムを含む。データベースは、電子的に格納されてアクセスされるデータの構造化された集合であり、データベース管理システムは、1つまたは複数のデータベース、ならびに1つまたは複数のデータベースを使用するユーザおよびアプリケーションと情報をやりとりするために使用されるメカニズムである。データベース管理システムは、データベース内で維持されるデータの挿入、削除、および変更を提供する更新機能、データベース内のデータの取り出し、データ・セキュリティ、データ完全性、性能監視を提供することなどのデータベースの管理、ならびにデータの構造の定義を含む、データベースを管理するためのさまざまな機能を提供する。
【0003】
データベース内で維持されるデータは、ストレージに書き込まれる前にログ(ログ・パイプまたはログ・パイプラインとも呼ばれる)に書き込まれる。データがログおよびストレージに書き込まれる速度は、データベースの更新動作、削除動作、および挿入動作の性能に影響を与え、システム性能に影響を与える。例えば、ストレージへのログ実体化に起因するログの高い同時性の下では、更新動作、削除動作、および挿入動作の速度が低下する。さらに、メモリのページ内の変更されたデータがストレージに書き出される前に、ログ・データがストレージに書き込まれるため、システム性能が影響を受ける。したがって、ストレージへのログ・データの書き込みにおける悪化が、メモリからストレージへの変更されたデータのフラッシュを悪化させることがある。
【発明の概要】
【0004】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、方法を実行するために1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含む。この方法は、データをログ・パイプラインに書き込むことにおける競合が事前に指定されたレベルであるかどうかを判定することを含む。ログ・パイプラインは、データをメモリからストレージに書き込むことにおいて使用される。データをログ・パイプラインに書き込むことにおける競合が事前に指定されたレベルであるということの決定に基づいて、新しいログ・パイプラインを作成するための分割動作が自動的に実行される。分割動作を実行することによって、ログ・パイプライン上の競合が減らされ、データがログ・パイプラインに書き込まれ得る速度が増やされ、それによって、データがストレージにより高速に書き込まれることを可能にし、システム性能を向上させる。
【0005】
1つの態様では、ルート・マップに基づいて、受信データが、選択されたログ・パイプラインにルーティングされる。ルート・マップは、複数のログ・パイプラインのうちのどのログ・パイプラインが受信データを受信するかの指示を含む。複数のログ・パイプラインは、少なくともログ・パイプラインおよび新しいログ・パイプラインを含む。ルート・マップの使用は、ログ・データがログ・パイプラインのうちのどれに書き込まれるかの追跡を容易にし、少なくとも、再起動動作または回復動作あるいはその両方を容易にする。
【0006】
一例として、選択された識別子のモジュロ演算を使用して、ルート・マップによって示されるルーティングが決定される。モジュロ演算において使用されるモジュロ数は、例えば、複数のログ・パイプラインのうちのログ・パイプラインの数に基づく。1つの例では、選択された識別子は、単位回復(unit recovery)の識別子であり、単位回復は、受信データを生成する1つまたは複数の動作を含む。モジュロ演算は、選択された識別子の再ハッシュを可能にし、受信データのルーティングを容易にする。
【0007】
1つの実施形態では、新しいログ・パイプラインを作成することに基づいてルート・マップが作成される。一例として、ルート・マップ(例えば、新しいルート・マップ)の作成は、1つまたは複数の先行するルート・マップに対するロック/ラッチを必要とせずに、ログ・パイプラインの分割/マージ・プロセスが実行されることを可能にし、システム性能を改善する。
【0008】
1つの態様では、1つまたは複数のデータの単位がメモリからストレージに書き込まれるかどうかに関する判定が行われる。この判定は、1つまたは複数のログ・パイプライン内の1つまたは複数のフラッシュ・ポイントに基づく。1つまたは複数のデータの単位がメモリからストレージに書き込まれるということの決定に基づいて、1つまたは複数のデータの単位がメモリからストレージに書き込まれる。フラッシュ・ポイントを使用することによって、データをログ・パイプラインに書き込むのと同時に、データの単位がメモリに書き込まれてよく、システム性能を改善する。
【0009】
1つの実施形態では、1つまたは複数のログ・パイプラインの最小フラッシュ・ポイントの決定が行われ、1つまたは複数のデータの単位のうちのデータの単位がメモリからストレージに書き込まれるかどうかの判定は、データの単位が、最小フラッシュ・ポイントとの事前に定義された関係を有するタイムスタンプを含んでいるかどうかを判定することを含む。データの単位が最小フラッシュ・ポイントとの事前に定義された関係を有するタイムスタンプを含んでいるということに基づいて、データの単位の書き込みが実行される。これによって、一例として、データをログ・パイプに書き込むのと同時に、データの単位(例えば、データのページ)がストレージに書き込まれることを可能にし、システム性能を向上させる。
【0010】
1つの態様では、ログ・データを1つまたは複数のログ・パイプラインからストレージに書き込むために、ログ書き込みエンジンが使用される。ログ・データを1つまたは複数のログ・パイプラインから書き込むために、1つまたは複数の追加のログ書き込みエンジンがデプロイされるかどうかに関する判定が自動的に行われる。1つまたは複数の追加のログ書き込みエンジンがデプロイされるということの決定に基づいて、1つまたは複数の追加のログ書き込みエンジンがデプロイされる。追加のログ書き込みエンジンを提供することによって、データがストレージに書き込まれ得る速度が増やされ、それによって、システム性能を向上させる。さらに、1つまたは複数の態様では、ログ・データがストレージに書き込まれ得る速度を増やすことによって、一例として、メモリの変更されたページがメモリからストレージに書き込まれ得る速度も増やされる。
【0011】
1つの態様では、1つまたは複数のデータベース・オブジェクトに対して回復が実行されるかどうかに関する判定が行われる。回復が実行されるということの決定に基づいて、第1の複数の並べ替えられたレコードを提供するために、ストレージから読み取られた複数のレコードが、第1の技術を使用して並べ替えられる。第1の複数の並べ替えられたレコードは、第1の複数のログ単位を含む。第1の複数の並べ替えられたレコードは、やり直し動作に提供される。やり直し動作は、第1の複数のログ単位に対して並列に実行される。これによって、データ完全性を維持しながら、データベース回復処理が並列に実行されることを可能にする。
【0012】
1つの態様では、1つまたは複数のデータベース・オブジェクトに対して回復が実行されるかどうかに関する判定が行われる。回復が実行されるということの決定に基づいて、第2の複数の並べ替えられたレコードを提供するために、ストレージから読み取られた複数のレコードが、第2の技術を使用して並べ替えられる。第2の複数の並べ替えられたログ・レコードは、第2の複数のログ単位を含む。第2の複数の並べ替えられたレコードは、取り消し動作に提供される。取り消し動作は、第2の複数のログ単位に対して並列に実行される。これによって、データ完全性を維持しながら、データベース回復処理が並列に実行されることを可能にする。
【0013】
1つの態様では、データを1つまたは複数のログ・パイプラインに書き込むことにおける競合が、別の事前に指定されたレベルであるかどうかに関する判定が行われる。データを1つまたは複数のログ・パイプラインに書き込むことにおける競合が他の事前に指定されたレベルであるということの決定に基づいて、ログ・パイプラインの数を減らすためのマージ動作が実行される。マージ動作を実行することによって、より少ないログ・パイプラインが利用され、したがって、より少ないシステム・リソースが利用される。
【0014】
1つまたは複数の態様に関連するコンピュータ・システムおよびコンピュータ実装方法も本明細書に記載され、請求される。さらに、1つまたは複数の態様に関連するサービスも本明細書に記載されており、請求されてよい。
【0015】
さらなる特徴および長所が、本明細書に記載された技術によって実現される。他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
【0016】
1つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに1つまたは複数の態様の目的、特徴、および長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0017】
図1A】本発明の1つまたは複数の態様に従って、使用されるログ・パイプラインの一例を示す図である。
図1B】本発明の1つまたは複数の態様に従って、使用されるページ・バッファ・プールの一例を示す図である。
図2A】本発明の1つまたは複数の態様に従って、追加のログ・パイプラインを作成するための分割動作の一例を示す図である。
図2B】本発明の1つまたは複数の態様に従って、ログ情報をログ・パイプラインからストレージに書き込むための追加のログ書き込みエンジンをデプロイする一例を示す図である。
図2C】本発明の1つまたは複数の態様に従って、追加のログ・パイプラインを作成するための分割動作、および1つまたは複数の追加のログ書き込みエンジンのデプロイの一例を示す図である。
図3A】本発明の1つまたは複数の態様に従って、ログ・パイプラインへのデータの書き込み、ログ・パイプラインからストレージへのログ・データの書き込み、ストレージへのメモリの変更されたページの書き込み、またはデータベースの再起動/回復、あるいはその組合せを容易にすることに関連付けられた処理の1つの実施形態を示す図である。
図3B】本発明の1つまたは複数の態様に従って、ログ・パイプラインへのデータの書き込み、ログ・パイプラインからストレージへのログ・データの書き込み、メモリの変更されたページのストレージへの書き込み、またはデータベースの再起動/回復、あるいはその組合せを容易にすることに関連付けられた処理の1つの実施形態を示す図である。
図3C】本発明の1つまたは複数の態様に従って、ログ・パイプラインへのデータの書き込み、ログ・パイプラインからストレージへのログ・データの書き込み、メモリの変更されたページのストレージへの書き込み、またはデータベースの再起動/回復、あるいはその組合せを容易にすることに関連付けられた処理の1つの実施形態を示す図である。
図4】本発明の1つまたは複数の態様に従って、単位回復ルート・マップ(unitrecovery route map)を使用して、単位回復をログ・パイプラインにルーティングする一例を示す図である。
図5】本発明の1つまたは複数の態様に従って、単位回復ルート・マップを使用して、単位回復をログ・パイプラインにルーティングする別の例を示す図である。
図6】本発明の1つまたは複数の態様に従って、ログ・パイプラインを動的に分割し、新しい単位回復ルート・マップを作成する一例を示す図である。
図7】本発明の1つまたは複数の態様に従って、新しい単位回復ルート・マップを使用して、単位回復をログ・パイプラインにルーティングする一例を示す図である。
図8A】本発明の1つまたは複数の態様に従って、どの変更されたページがメモリからストレージに追い出され得るかを決定する一例を示す図である。
図8B】本発明の1つまたは複数の態様に従って、どの変更されたページがメモリからストレージに追い出され得るかを決定する一例を示す図である。
図8C】本発明の1つまたは複数の態様に従って、どの変更されたページがメモリからストレージに追い出され得るかを決定する一例を示す図である。
図9A】本発明の1つまたは複数の態様に従って、ログ・パイプラインごとに最小のログ・タイムスタンプを生成する一例を示す図である。
図9B】本発明の1つまたは複数の態様に従って、ログ・パイプラインごとに最小のログ・タイムスタンプを生成する一例を示す図である。
図9C】本発明の1つまたは複数の態様に従って、データをメモリからストレージに書き込むことにおいて最小のログ・タイムスタンプを使用する一例を示す図である。
図10A】本発明の1つまたは複数の態様に従って、コントロール・インターバルを使用して、ログ情報をログ・パイプラインからストレージにフラッシュする一例を示す図である。
図10B】本発明の1つまたは複数の態様に従って、コントロール・インターバルを使用して、ログ情報をログ・パイプラインからストレージにフラッシュする一例を示す図である。
図11】本発明の1つまたは複数の態様に従って、データベースの再起動または回復あるいはその両方のためにログ・レコードを並べ替える一例を示す図である。
図12A】本発明の1つまたは複数の態様に従って、1つまたは複数の追加のログ・パイプラインを作成するための分割動作、および1つまたは複数の追加のログ書き込みエンジンのデプロイの一例を示す図である。
図12B】本発明の1つまたは複数の態様に従って、データベースの回復または再起動あるいはその両方のためにログ・レコードを並べ替える一例を示す図である。
図13A】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする1つの実施形態の態様を示す図である。
図13B】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする1つの実施形態の態様を示す図である。
図13C】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする1つの実施形態の態様を示す図である。
図14A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例を示す図である。
図14B】本発明の1つまたは複数の態様を実行するために使用される図14Aのコンピューティング環境のデータベース・システムのコンポーネントの一例を示す図である。
図15A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
図15B】本発明の1つまたは複数の態様に従って、図15Aのメモリのさらなる詳細を示す図である。
図16】本発明の1つまたは複数の態様に従って、クラウド・コンピューティング環境の1つの実施形態を示す図である。
図17】本発明の1つまたは複数の態様に従って、抽象モデル・レイヤの一例を示す図である。
【発明を実施するための形態】
【0018】
1つまたは複数の態様に従って、メモリからログ・パイプライン(ログ・パイプ、ログ、またはパイプとも呼ばれる)へ、およびログ・パイプラインからストレージへのデータの書き込みを容易にするための能力が提供される。1つまたは複数の態様では、この能力は、追加のログ・パイプラインが、ストレージに書き込まれるデータの受信に使用可能になるように、ログ・パイプライン上の競合が事前に指定されたレベルである(例えば、選択されたしきい値を超えている)ということを検出することに基づいて、ログ・パイプラインを1つまたは複数の他のログ・パイプラインに動的に分割することを含む。1つまたは複数のさらなる態様では、この能力は、少なくとも1つのログ・パイプライン上の競合が別の事前に指定されたレベルである(例えば、選択されたしきい値未満である)ということを検出することに基づいて、1つまたは複数のログ・パイプラインをマージすることを含む。さらに、1つまたは複数の態様では、この能力は、ログ・データを1つまたは複数のログ・パイプラインからストレージに書き込むためのログ書き込みエンジンの数を動的に増やすことを含む。
【0019】
ストレージに書き込まれるデータを受信するために、ログ・パイプラインを分割して1つまたは複数の追加のログ・パイプラインを提供することによって、特定のログ・パイプライン上の競合が減らされ、データがログ・パイプラインに書き込まれ得る速度およびログ・データがストレージに書き込まれ得る速度を増やし、それによって、システム性能を向上させる。さらに、ログ・データがストレージに書き込まれ得る速度を増やすことによって、選択された変更されたページの書き込みが、例えば、タイムスタンプの比較によって決定されたとおりに、1つまたは複数のログ・パイプラインからストレージへの特定のログ・データの書き込みの後に発生するため、メモリの変更されたページがメモリからストレージに書き込まれ得る速度も増やされる。
【0020】
同様に、ログ・データをログ・パイプラインからストレージに書き込むための書き込みエンジンの数を増やすことによって、データがログ・パイプラインに書き込まれ得る速度およびログ・データがストレージに書き込まれ得る速度が増やされ、それによって、システム性能を向上させる。やはり、ログ・データがストレージに書き込まれ得る速度を増やすことによって、選択された変更されたページの書き込みが、例えば、タイムスタンプの比較によって決定されたとおりに、1つまたは複数のログ・パイプラインからストレージへの特定のログ・データの書き込みの後に発生するため、メモリの変更されたページがメモリからストレージに書き込まれ得る速度も増やされる。
【0021】
図1Aを参照すると、ログ・パイプライン100が、ログ・バッファ・プール102に含まれており、複数のログ・エントリ104を含んでいる。各ログ・エントリ104は、ログ・レコード106(ログ・データまたはログ情報とも呼ばれる)などのデータを含んでいる。1つの例では、各ログ・レコードには、ログ・レコードがいつパイプに書き込まれたかを示すタイムスタンプ120が関連付けられる。データは、ストレージに書き込まれる前に(例えば、データベースに対する更新、削除、挿入に基づいて)メモリからログ・パイプに書き込まれる。データをログ・パイプライン100に書き込むことにおいて、どのログ・エントリが最初に書き込まれるかなどが決定されるため、例えばラッチ・キューを介して、ログ・パイプライン上でシリアル化が実行される。シリアル化は、ログ・パイプライン上の競合を引き起こし、システム性能に悪影響を与えるボトルネックをもたらす。さらに、この例では、ログ・レコード106が、単一のログ書き込みエンジンを介してストレージ108に書き込まれる。単一のログ書き込みエンジンを使用して、データをログ・パイプラインからストレージに書き込むことは、時間がかかり、システム性能に悪影響を与える別のボトルネックをもたらす。
【0022】
さらに、本明細書において説明されるように、選択された変更されたデータメモリからストレージにフラッシュされる前に、ログ・データがストレージに書き込まれる。図1Bに示されているように、ページ・バッファ・プール140は、互いに連結された複数のエントリ152を含む書き込み延期キュー(defer write queue)150を含んでいる。各エントリは、例えば、ストレージ154に書き込まれるデータの単位を含む。1つの例では、データの単位はデータのページ156であり、データのページ156には、例えば、ページが変更された時間を示すタイムスタンプ158が関連付けられる(ページは、任意の選択されたサイズであってよい)。1つの実施形態では、タイムスタンプ158およびタイムスタンプ120は、データのページが書き込み延期キューからストレージにいつ書き込まれ得るかを決定するために使用される。例えば、書き込み延期キュー内のデータのページのタイムスタンプ(例えば、16:33:55)が、ログ・パイプラインから書き込まれた最後のログのタイムスタンプ(例えば、16:33:58)未満である場合、このデータのページは、書き込み延期キュー150からストレージ154に書き込まれてよい。タイムスタンプに基づいて、データをログ・パイプラインからストレージに書き込むのと同時に、データが書き込み延期キューからストレージに書き込まれることを可能にすることによって、変更されたデータをストレージに書き込むことにおける並列性が実現され、システム性能を向上させる。
【0023】
本発明の1つまたは複数の態様に従って、例えば、データベースにおける更新動作、削除動作、または挿入動作、あるいはその組合せを含むデータベース処理を加速するために、ログ・データをメモリからストレージに書き込むために使用されるログ・パイプラインが監視され、ログ・パイプライン上の競合が容認できないレベルであるかどうかを判定する。競合は、データをログ・パイプに書き込むことにおけるボトルネック、またはログ・データをログ・パイプからストレージに書き込むことにおけるボトルネック、あるいはその両方によって引き起こされることがある。ログ・パイプライン上の競合が高すぎる(例えば、競合のレベルが、選択されたしきい値より大きいなどの、事前に指定されたレベルである)か、または他の基準に基づくか、あるいはその両方であるということが決定された場合、1つまたは複数の既存のログ・パイプライン上の競合を減らすために、分割動作(本明細書では、ログ・パイプラインの分割と呼ばれる)が実行され、1つまたは複数の追加のログ・パイプラインを自動的に作成する。例えば、図2Aに示されているように、ログ・パイプライン100上の競合が高すぎるということが決定された場合、分割動作が自動的に実行されて、1つまたは複数の追加のログ・パイプラインを作成する。次にデータが、ログ・パイプライン100のみまたはログ・パイプライン100a~100nより少ない複数のログ・パイプラインの代わりに、ログ・バッファ・プール102内のログ・パイプライン100a~100nにルーティングされる。1つの実施形態では、単一のログ書き込みエンジン110を使用して、複数のログ・パイプライン100a~100nからのデータがストレージに書き込まれる。単一のログ書き込みエンジン110は、ログ・データを、例えば複数のログ・パイプライン100a~100nからストレージ内のログ・セット120に書き込む。
【0024】
図2Bを参照すると、1つの態様では、ログ情報をログ・パイプラインからストレージに書き込むことにおける競合が高すぎる(例えば、選択されたしきい値より大きいなどの、事前に指定されたレベルである)ということに基づいて、または他の基準に基づいて、あるいはその両方に基づいて、データをログ・パイプライン100から1つまたは複数のログ・セット120a~120mに書き込むためにログ書き込みエンジン110a~110xが使用されるように、1つまたは複数の追加のログ書き込みエンジンが自動的にデプロイされる。複数のログ書き込みエンジンを使用することによって、データがログ・パイプライン100からストレージ(例えば、ログ・セット120a~120mのうちの1つまたは複数)に書き込まれ得る速度が増やされる。さらに、データがログ・パイプラインから除去される速度を増やすことによって、データがログ・パイプラインに書き込まれ得る速度に加えて、変更されたメモリ・ページなどのデータの単位がメモリからストレージに書き込まれ得る速度も増やされる。
【0025】
1つまたは複数の態様では、図2Cを参照すると、1つまたは複数のログ・パイプライン上の競合が高すぎるということに基づいて、または他の基準に基づいて、あるいはその両方に基づいて、ログ・レコードを受信するためにログ・パイプライン100a~100nが使用されるように、分割動作が動的に実行されて、1つまたは複数の追加のログ・パイプラインを自動的に作成し、複数のログ・パイプライン内のログ・データを1つまたは複数のログ・セット120a~120mに書き込むためにログ・エンジン110a~110xが使用されるように、1つまたは複数の追加のログ書き込みエンジンが自動的にデプロイされる。
【0026】
さらなる態様では、1つまたは複数のログ・パイプライン上の競合が低すぎる(例えば、競合のレベルが、選択されたしきい値より小さいなどの、別の事前に指定されたレベルである)場合、マージ動作が実行され、少なくとも1つのログ・パイプラインを少なくとも1つの他のログ・パイプラインとマージする。例えば、データがより少ないログ・パイプラインにルーティングされる。
【0027】
例えば、データベース内の更新動作、削除動作、または挿入動作、あるいはその組合せを加速し、システムのスループットを改善し、ログのシリアル化の競合を減らするために、ログ・パイプラインを動的に分割/マージし、追加のログ書き込みエンジンをデプロイすることのさらなる詳細が、図3A~3Cおよび図4~11を参照して説明される。特に、図3A~3Cは、本発明のさまざまな態様の概要を示し、図4~11は、選択された態様のさらなる詳細を示す。
【0028】
図3Aを参照すると、1つの態様では、複数のパイプラインへのデータ(例えば、ログ・レコード)の書き込みを容易にするため、またはデータベースの再起動もしくは回復またはその両方を容易にするため、あるいはその両方のために、単位回復と呼ばれる単位の一部として実行された動作から生じるログ・レコードが、同じパイプラインにルーティングされる。一例として、各単位回復は、トランザクションまたはプログラムの1つのコミット・ポイントから、トランザクションまたはプログラムの別のコミット・ポイントまでに実行された動作を含む。単位回復(例えば、回復の単位の動作に基づいて生成されたログ・レコード)が、選択されたログ・パイプラインに書き込まれ、本発明の態様に従って、複数のログ・パイプラインが存在し得るため、単位回復ルート・マップを介してログ・パイプラインが選択される。各単位回復を、ログ情報出力用に選択されたログ・パイプラインにルーティングするために、単位回復ルート・マップ(元の単位回復ルート・マップまたはマップ番号1と呼ばれる)が構築されて使用される(300)。これが、図4~5を参照してさらに説明される。
【0029】
図4に示されているように、1つの例では、プログラム番号X400などのプログラムが、複数の単位回復402を含んでいる。単位回復402は、例えば、プログラムの先頭と最初のコミット・ポイントの間、2つのコミット・ポイント間、またはコミット・ポイントとプログラムの末尾の間に、1つまたは複数の動作404を含んでいる。例として、単位回復番号1が番号1 insert、番号2 update...および番号M deleteを含み、単位回復番号2が番号N update...番号X deleteを含む、などとなっている。単位回復ID(例えば、1、2...)は、単位回復ルート・マップ406に入力され、動作から生じる単位回復データをバッファリングするためにどのログ・パイプラインが使用されるかを示す。図4の例では、UR番号1がログ・パイプライン番号N408cにルーティングされ、UR番号2がログ・パイプライン408aにルーティングされ、UR番号Xがログ・パイプライン408bにルーティングされる。
【0030】
1つの実施形態では、図5に示されているように、単位回復全体が単一のログ・パイプラインに書き込まれる。例えば、UR番号1の動作番号1~動作番号Mのデータ(例えば、ログ・レコード)が、単位回復ルート・マップ406を介してログ・パイプライン500aにルーティングされ、UR番号2の動作番号N~動作番号Xのデータ(例えば、ログ・レコード)が、単位回復ルート・マップ406を介してログ・パイプライン500bにルーティングされる。1つの例では、ログ・パイプラインは、単位回復IDのハッシュを介して選択される。例えば、選択するための3つのログ・パイプラインが存在する場合、単位回復ID番号1に関しては、1 mod(モジュロ)3が1に等しく、ログ・パイプライン番号1が選択される。同様に、単位回復ID番号2の場合、2 mod 3が2に等しく、ログ・パイプライン番号2が選択される、などとなる。単位回復の動作のうちの1つまたは複数のデータ(例えば、ログ・レコード)が異なるログ・パイプラインにルーティングされる代わりに、単位回復のすべての動作のデータ(例えば、ログ・レコード)を単一のログ・パイプライン内に含むことによって、キャンセル機能、ロールバック機能、およびバックアウト機能などの回復機能が容易にされる。1つの例では、回復を実行するために、ログ・パイプラインが後方へトラバースされ、回復される単位回復のログ・データを特定する。単位回復のログ・データが1つのログ・パイプラインである場合、この後方へのトラバースが容易にされる(例えば、より素早くなる)。
【0031】
図3Aに戻り、1つの態様では、データベース・ログ性能モニタ(ログ性能モニタとしても知られている)が、ログ・バッファ・プールのログ・パイプライン内の競合を監視し、競合が高すぎる(例えば、競合のレベルが事前に指定されたレベルである、例えば、選択されたしきい値を上回る)ということに基づいて、システムへの圧迫を軽減するために、ログ・パイプラインを複数のログ・パイプラインに自動的に分割するか(302)、または競合が低すぎる(例えば、競合のレベルが別の事前に指定されたレベルである、例えば、選択されたしきい値を下回る)場合、システム・リソースを節約するために、ログ・パイプラインをマージする(304)。1つの例では、競合を決定するために、データベース・ログ性能モニタが、ログ・バッファ・プール(例えば、1つまたは複数のログ・パイプライン)または1つまたは複数のラッチ・キューあるいはその両方を監視し、ログ・パイプラインのうちの1つまたは複数での競合が、1つまたは複数の事前に指定されたレベルに対して高すぎるか、または低すぎるかを判定する。
【0032】
例えば、データをログ・パイプラインに書き込むことにおいて、例えばラッチ・キューを介して、シリアル化が実行される。例えば、ログ・パイプに書き込まれる情報をシリアル化するために、ログ・パイプごとに対応するラッチ・キューが存在する。一例として、スレッド1が情報をログ・パイプ番号1に書き込むことになっている場合、スレッド1は、書き込み動作の前に排他的ラッチを取得する。同様に、スレッド番号2もログ情報をログ・パイプ番号1に書き込むことになっている場合、スレッド番号2は、排他的ラッチを取得しようとする。排他的ラッチが一度に1つのスレッドのみに付与されるため、スレッド番号2の要求は、待機するためにラッチ・キューに入れられる。したがって、ラッチ・キューが長い(例えば、ラッチ・キュー内で待機しているコンポーネント(例えば、スレッド)の数が多い)ほど、ログ・パイプの競合がより高い。したがって、1つの例では、競合が低いか、または高いかを判定するために、ラッチ・キューの長さが使用される。データベース・ログ性能モニタが、競合が高すぎる(例えば、ラッチ・キューがXを超える数の待機しているコンポーネントを含み、Xが、選好、性能目標などに基づいて選択される)ということを決定した場合、1つまたは複数の追加のログ・パイプラインを作成するために、分割動作が実行される。
【0033】
1つの例では、新しいログ・パイプラインを作成するために、ログ・バッファ・プールのメモリ・アドレスが新しいログ・パイプラインに割り当てられ、識別子が新しいログ・パイプラインに割り当てられ、データ(例えば、単位回復)を、1つまたは複数の追加のログ・パイプラインを含んでいるログ・パイプラインにルーティングするために、単位回復ルート・マップが作成される。新しいログ・パイプラインを作成するために、より多い動作、より少ない動作、または他の動作、あるいはその組合せが実行されてよい。
【0034】
同様に、データベース・ログ性能モニタが、競合が低すぎる(例えば、ラッチ・キューが、Yを下回る数の待機しているコンポーネント(例えば、スレッド)を含み、Yが、選好、性能目標などに基づいて選択される)ということを決定した場合、データのルーティング先になるログ・パイプラインの数を減らすために、マージ動作が実行される。例えば、1つまたは複数のより少ないログ・パイプラインにルーティングする単位回復ルート・マップが作成される。
【0035】
上記の例示的な競合は、待機しているコンポーネントの数に基づくが、競合は、ラッチ・キューに関連するか、または関連しない他の係数に基づいてよい。多くの例が可能である。
【0036】
示されたように、ログ・パイプラインの分割/マージ・プロセス中に、新しい単位回復ルート・マップが構築される。1つの実施形態では、分割/マージ・プロセス中に、新しい単位回復ルート・マップ(例えば、マップ番号2)の構築に起因する元の単位回復ルート・マップ(例えば、マップ番号1)に対するロック/ラッチは必要とされない。新しい単位回復ルート・マップを構築することに基づいて、マップ番号1からの単位回復識別子が、マップ番号2内で再ハッシュされる(306)。例えば、図6に示されているように、この例では、ハッシュ・テーブル602に含まれているUR_ID(例えば、UR番号1、UR番号2、UR番号4、UR番号6、UR番号8、およびUR番号10)をハッシュすることによって、現在の単位回復ルート・マップ600aが構築された。この例では、最初に2つのログ・パイプラインが存在するため、各単位回復をログ・パイプラインに割り当てるために、UR_ID mod 2(604)が使用される。例えば、UR番号1がログ・パイプライン1(606b)にルーティングされ、残りの単位回復(例えば、番号2、番号4、番号6、番号8、および番号10)がログ・パイプライン0(606a)にルーティングされる。パイプラインのうちの1つが分割されるという決定に基づいて、第3のパイプラインが作成される。最初はこのパイプラインは、単位回復にとって不可視である。このパイプラインは、1つの例では、新しい単位回復ルート・マップ600bを作成することに基づいて可視になる。この例では、3つのログ・パイプラインが存在するため、単位回復を3つのログ・パイプライン606a、606b、606cにルーティングするURルート・マップ600bを作成するために、UR_ID mod 3(610)が使用される。例えば、ログ・パイプライン番号2を追加することによって、UR番号6が引き続きログ・パイプライン0にルーティングされ、UR番号1、UR番号4、およびUR番号10がログ・パイプライン番号1にルーティングされ、UR番号2、UR番号8、およびUR番号11がログ・パイプライン番号2にルーティングされる。
【0037】
図3Aおよび図6を参照すると、1つの例では、新しい単位回復(例えば、UR番号11)が到着した場合、この例では、1つの単位回復ルート・マップ(例えば、600b)のみが更新され(308)、元の単位回復ルート・マップ(または他の先行する単位回復ルート・マップ)は更新されない。新しい単位回復をログ情報出力用の対応するログ・パイプラインにルーティングするために、更新された単位回復ルート・マップ(例えば、マップ番号2 600b)が使用される(310)。例えば、UR番号11がログ・パイプライン番号2(606c)(例えば、11 mod 3=2)にルーティングされる。
【0038】
1つの例では、既存の単位回復がコミットされ、この単位回復の識別子をハッシュ・テーブル602から除去することによって、マップ番号1(600a)およびマップ番号2(600b)の両方が更新される(312)。例えば、UR番号10がコミットされた場合、UR番号10は、URルート・マップ600aおよびURルート・マップ600bから除去される。1つの例では、UR番号10を除去し、既存のUR idを再ハッシュすることを含む、ハッシュ・テーブル602を更新することによって、除去が実行される。別の例では、UR番号10をURルート・テーブル600a、600bから直接除去することによって、除去が実行される。他の例も可能である。
【0039】
さらに、図3Aおよび図7を参照すると、既存の単位回復が到着した(例えば、既存のURの1つまたは複数のログ・レコードが到着した)ときに、マップ番号2内でUR IDがすでに再ハッシュされているということを仮定して、受信ログ情報をそれに対応するログ・パイプラインにルーティングするために、マップ番号2(例えば、600b)が使用される(314)。そうでない場合、どのログ・パイプラインがログ情報出力の役割を担うかを決定するために、マップ番号1(例えば、600a)が使用される(316)。したがって、ログ・パイプラインに対して1つまたは複数の分割動作またはマージ動作が実行される場合でも、ログ出力動作に関するブロックの問題がない。さらに説明すると、既存の単位回復に関する追加のログ情報出力(データとも呼ばれる)が到着した場合、その追加のログ情報出力は、分割のため、その既存の単位回復に関する前に受信されたログ情報出力と異なるログ・パイプラインに配置されてよい。例えば、最初にUR番号8(700)のログ情報出力がログ・パイプライン番号0(606a)にルーティングされ、現在は、UR番号8(700)の追加のログ情報出力が、ログ・パイプライン番号2(606c)にルーティングされている。1つの例では、ログ情報出力は、分割に基づいて1つのログ・パイプラインから別のログ・パイプラインに移動されない。ログ情報出力が、複数のログ・パイプラインに配置されることがあるため、必要に応じて回復を容易にするために、コミットされていないデータを含む単位回復を含んでいる任意のURルート・マップが維持される。前に示されたように、特定の単位回復に関するログ情報出力を同じログ・パイプライン内で維持することによって、回復が容易にされる。しかし、1つまたは複数の分割動作に基づいて、ログ情報出力が同じログ・パイプライン内で維持されないことがあり、ログ情報出力が、複数のログ・パイプライン内にあることがある。したがって、回復を容易にするために、ログ情報がどこにバッファリングされており、ログ情報をどこから回復するべきかを決定するために、複数のURルート・マップが利用される。
【0040】
さらなる例では、分割動作またはマージ動作に基づいて、ログ情報が1つのログ・パイプラインから別のログ・パイプラインに移動されてよい。他の変形が可能である。
【0041】
図3Bおよび図7を参照すると、1つの態様では、単位回復がキャンセルまたはロールバックされたときに、元の単位回復ルート・マップ(例えば、現在のURルート・マップでなくなっているため仮想的URルート・マップとも呼ばれる、マップ番号1(600a))および1つまたは複数の新しい単位回復ルート・マップ(例えば、マップ番号2(600b))の両方は、どの1つまたは複数のログ・パイプラインが、この単位回復に対する取り消しログを読み取るために使用されるかを特定するために使用される(320)。次に、取り消しログに関して復元動作が実行される。
【0042】
1つの例では、すべての単位回復IDがマップから除去され、対応する単位回復がコミットされたことを示した後に、元の単位回復ルート・マップ(例えば、マップ番号1)が除去されてよい(322)。
【0043】
1つの態様では、図3Bおよび図8Aを参照すると、情報がログ・パイプ800に書き込まれるときに、書き込み動作ごとにタイムスタンプ802が生成される(324)。例えば、動作Xに関するログ番号Xのログ情報を書き込むことに基づいて、16:33:11のタイムスタンプが生成され、ログ番号Jのログ情報の場合、16:33:58のタイムスタンプが生成され、ログ番号Nのログ情報の場合、16:36:49のタイムスタンプが生成される、などとなる。この情報は、1つの例では、本明細書において説明されるように、メモリのどの変更されたページが書き込み延期キューから追い出され得るかを決定するために使用される。
【0044】
図8Bを参照すると、書き込み延期キュー820は、ページ・バッファ・プールからストレージ(例えば、ディスクなど)に書き込まれるのを待機している複数のページ822を含んでいる。書き込み延期キュー820に含まれている各ページ822は、そのページがいつ変更されてバッファに書き込まれたかを示すタイムスタンプ824を含む。タイムスタンプ802および804は、本明細書において説明されるように、ページがページ・バッファからストレージに書き込まれ得るかどうかを判定するために使用される。
【0045】
1つの例では、図8Cに示されているように、ログ・パイプライン800a~800cごとにフラッシュ・ポイント840a~840cが決定される。フラッシュ・ポイントは、フラッシュ・ポイントとの事前に定義された関係を有する(例えば、フラッシュ・ポイント未満である)タイムスタンプを含んでいるログ情報がログ・パイプラインからストレージに書き込まれたことを示す、タイムスタンプである。
【0046】
1つの実施形態では、図3Bおよび図9A~9Cを参照すると、ログ・パイプラインごとに(パイプラインの数がNであると仮定する)、メモリ内のログ・パイプラインからストレージ内のログ・セットにフラッシュされたログ情報の最も早いタイムスタンプが保持される(326)。したがって、N個のパイプラインに対応するN個のフラッシュ・タイムスタンプが存在する。図9Aに示されているように、特定の時点(1)で、ログ・パイプライン800aのフラッシュ・ポイントがT4であり、ログ・パイプライン800bのフラッシュ・ポイントがT12であり、ログ・パイプライン800cのフラッシュ・ポイントがT9である。N個のタイムスタンプのうちの最小のタイムスタンプが、どの変更されたページがメモリからストレージに実体化され得るかを決定するための書き込み延期キュー内のフラッシュ・ポイントとして使用されるように選択される(328)。時間(1)の例では、T4が最小のタイムスタンプであり、したがって、T1のタイムスタンプを含んでいるページ番号NおよびT3のタイムスタンプを含んでいるページ番号Mなどの、最小のタイムスタンプT4未満のタイムスタンプを含んでいるページ・バッファ・プール900(図9C)内のページが、ページ・バッファ・プールからストレージに書き出され得る。
【0047】
図9Bのさらなる例では、別の特定の時点(2)で、ログ・パイプライン800aのフラッシュ・ポイントがT10であり、ログ・パイプライン800bのフラッシュ・ポイントがT12であり、ログ・パイプライン800cのフラッシュ・ポイントがT9である。時間(2)の例では、T9が最小のタイムスタンプであり、したがって、T4のタイムスタンプを含んでいるページ番号NおよびT8のタイムスタンプを含んでいるページ番号Mなどの、最小のタイムスタンプT9未満のタイムスタンプを含んでいるページ・バッファ・プール900(図9C)内のページが、ページ・バッファ・プールからストレージに書き出され得る。
【0048】
図3Cを参照すると、1つの実施形態では、ログ情報をログ・パイプラインからストレージに書き込むために、ログ書き込みエンジン・ディスパッチャが、ログ・データをパイプラインからストレージに書き込むための1つまたは複数のログ書き込みエンジンをデプロイする(330)。これが、図10Aを参照してさらに説明される。図に示されているように、1つの態様では、ログ書き込みエンジン・ディスパッチャ1000は、ログ情報を1つまたは複数のログ・パイプラインから1つまたは複数のログ・セットにフラッシュするために使用される1つまたは複数のログ書き込みエンジン1002をデプロイする(例えば、開始する、作動させる、など)。ログ書き込みエンジン・ディスパッチャ1000は、ログ・パイプラインからストレージ内のログ・データ・セットへのデータの書き込みを最適化する方法を決定する。1つの実施形態では、書き込みを最適化するために、1つまたは複数のセルまたはコントロール・インターバル(CI:control intervals)1004が定義される。一例として、コントロール・インターバルは、ログ・パイプラインから書き込まれるデータの選択された量(例えば、4K、8K、16Kなど)であり、例えば、1つまたは複数のログ・レコード・ヘッダー、1つまたは複数のログ・レコード(例えば、選択された量のデータ)、および1つまたは複数の制御などの、1つまたは複数の要素を含む。他の実施形態では、コントロール・インターバルは、より多い要素、より少ない要素、または他の要素、あるいはその組合せを含む。1つの実施形態では、ログ・データがコントロール・インターバルに分割され、書き込みポリシーに基づいて、異なるログ書き込みエンジンによって複数のコントロール・インターバルが並列に書き出される。ログ書き込みエンジンは、同じパイプ、異なるパイプ、または同じパイプおよび異なるパイプの組合せ、あるいはその組合せから、コントロール・インターバルを並列に書き出してよい。これによって、システム性能を改善する。
【0049】
1つの例では、書き込みポリシーは、できるだけ早くログ情報をログ・パイプラインからストレージに書き込むことと(1006)、追加ログ情報をプリフェッチして書き込みを容易にする(例えば、書き込みが実行される速度を増やす)ことと(1008)を含む(332)。1つの実施形態では、ログ書き込みエンジンによってどのコントロール・インターバルが書き出されるかを決定するために、ログ書き込みエンジン・ディスパッチャによって最も早いタイムスタンプが使用される。例えば、1つの例では、T4が最も早いタイムスタンプであるため、ログ書き込みエンジン・ディスパッチャは、最も高速な書き込みを容易にするために、ログ・パイプ番号1のCI番号2がログ書き込みエンジン番号1によって書き出され、並列に、ログ・パイプ番号2のCI番号1およびCI番号3がログ書き込みエンジン番号2によって書き出されるということを決定する。
【0050】
1つの実施形態では、ログ書き込みエンジン・ディスパッチャは、本明細書において説明されるように、コントロール・インターバルの書き込みおよびプリフェッチに関する情報を受信し、1つまたは複数のログ・パイプライン上の競合が多すぎる(例えば、事前に指定されたレベルである)ということの決定に基づいて、ログ書き込みディスパッチャは、1つまたは複数のビジーなログ・パイプラインのフラッシュ・プロセスを促進するために、どのエンジンがどのログ・パイプラインから書き込むかを調整するか、または追加のログ書き込みエンジン1010(図10B)をデプロイする/作動させるか、あるいはその両方を実行する(334)。
【0051】
1つの例として、ログ書き込みエンジン・ディスパッチャ1000は、ログ・パイプの占有された部分が事前に指定されたレベル(例えば、合計パイプ容量の85%)であるということに基づいて、別のログ書き込みエンジンがデプロイされるということを決定する。例えば、ログ・パイプの容量は、制限され、例えば100MBであってよい(他のサイズも可能である)。新しいログ情報が書き込まれるログ・パイプの空き部分、およびログ情報がディスクに実体化される占有された部分が存在する。占有された部分の割合は、合計ログ容量のうちの多すぎる空間(例えば、85%)を占める場合、それは、データベース・システムがデータをストレージに書き込んでいてビジーであるということを示す。したがって、1つの例では、ストレージへのログ・データの実体化を促進するために、追加のログ書き込みエンジン1010がデプロイされる。さらなる例では、1つのログ・パイプラインから書き込むために、複数の書き込みエンジンが割り当てられてよい。図10Bに示されているように、1つの例では、ログ・パイプ番号1から書き込む/プリフェッチするために、ログ書き込みエンジン番号1およびバン後2が割り当てられ、ログ・パイプ番号2から書き込む/プリフェッチするために、ログ書き込みエンジン番号3および番号4が割り当てられる。これらの割り当ては、ログ・パイプラインから迅速に書き込むために、必要に応じてログ書き込みエンジン・ディスパッチャによって動的に変更される。
【0052】
1つまたは複数の態様では、データベース・システムが再起動プロセスまたは回復プロセス中である場合、回復プロセスまたは再起動プロセスにおいて、1つまたは複数の格納されたログ・レコードが使用される。例えば、1つまたは複数のレコードがストレージからメモリに読み取られ、やり直し動作に適用されるか、または1つまたは複数のレコードがストレージからメモリに読み取られ、取り消し動作に適用されるか、あるいはその両方である。やり直し動作では、ログ・レコードが順方向に読み取られ、取り消し動作では、ログ・レコードが逆方向に読み取られる。しかし、特定の単位回復に関して回復される複数のログ・パイプラインが存在する場合、ログが必ずしも順序正しくないため、順方向または逆方向での読み取りが変更される。1つの例では、やり直し動作および取り消し動作の場合、ログがメモリの同じ単位(例えば、同じメモリ・ページ)内にあるとき、ログが順序通りに適用される。ログがメモリの異なる単位(異なるメモリ・ページ)内にある場合、ログは不規則な順序で適用されることがある。
【0053】
図3Cを引き続き参照すると、データベース・システムが再起動プロセスまたは回復プロセス中である場合、使用されている複数のログ・パイプラインに起因してログ・セット内のログ・レコードが不規則な順序であるため、1つの実施形態では、以下が実行される。
【0054】
(1)データベース・ログの取り消し動作を使用してどのデータベース・オブジェクト(データ・ページなど)がロールバックされるかを決定するために、単位回復識別子(例えば、UR_ID+ログ・タイムスタンプ)に従ってログ・レコードを並べ替え、マージする(340)。
【0055】
(2)ログのやり直し動作による再サブミットのための入力として、一意のページ識別子(例えば、データベースDB_ID+ページ・セットID+パーティションID+ページID+ログ・タイムスタンプ)に従ってログ・レコードを並べ替え、マージする(342)。
【0056】
(3)データベース・システムの再起動または回復を実現するために、並べ替え動作から生成された結果に従って、ログ適用をトリガーする(344)。
【0057】
図11を参照すると、1つの実施形態では、データベース再起動および回復マネージャ1100が、並べ替え結果1106に対するやり直し動作1102または並べ替え結果1108に対する取り消し動作1104あるいはその両方を管理する。やり直し動作を実行することにおいて、1つまたは複数のログ読み取りエンジン1110が、ログ・レコードをストレージ1112からメモリに読み取り、次に、例えば、オブジェクト識別子1120(例えば、一意のページ識別子)に基づいて、取得されたログ・レコードを並べ替える。その後、下で説明されているように、並べ替えられたログ・レコード1106がやり直し動作1102に提供され、やり直し動作が、並べ替えられたログ・レコードに対して並列に適用される。
【0058】
さらに、取り消し動作1104の場合、1つまたは複数のログ読み取りエンジン1110が、ログ・レコードをストレージ1112からメモリに読み取り、次に、例えば、単位回復識別子1122に基づいて、取得されたログ・レコードを並べ替える。その後、下で説明されているように、並べ替えられたログ・レコード1108が取り消し動作1104に提供され、取り消し動作が、並べ替えられたログ・レコードに対して並列に適用される。
【0059】
データベースの再起動または回復の場合、1つの実施形態では、ログ単位1130に基づいて、並べ替え結果1106に対してやり直し動作1102がトリガーされる。例えば、ログ・レコードT2、T4、T6、およびT10は、これらのログ・レコードが同じページ番号1(オブジェクトID)に含まれるため、1つのログ単位と見なされる。同様に、T1、T3、T5、およびT12は、別のログ単位と見なされる、などとなる。各ログ単位内の並べ替えられたログ・レコード(例えば、1つのログ単位のT2、T4、T6、およびT10)が、順方向に(例えば、左から右に)適用される。これらのログ単位1130は、やり直し動作プロセスを促進するために並列に適用される。
【0060】
さらに、各ログ単位1132に基づいて、並べ替え結果1108に対して(T1、T3、およびT6が1つのログ単位に構成され、T2およびT4が別のログ単位に構成される、などの)取り消し動作1104がトリガーされる。各ログ単位内のログ・レコード(例えば、1つのログ単位のT1、T3、およびT6)が、逆方向に(例えば、右から左に)適用される。これらの時間単位1132は、取り消し動作プロセスを促進するために、並列に適用される。
【0061】
やり直しおよび取り消しの両方の場合、1つの実施形態では、回復プロセスが並列に実行されるが、データ完全性が維持される。回復プロセスを並列に実行することによって、回復プロセスが促進され、それによって、システム性能を向上させる。
【0062】
前述したように、図12Aに関して、1つまたは複数の態様では、ログ・パイプライン1200上の競合が高すぎるということの決定に基づいて、少なくとも1つの他のログ・パイプライン1202を定義するために、分割動作が実行される。次に、1つまたは複数の単位回復ルート・マップ1204に基づいて、ログ・レコードがログ・パイプラインに書き込まれる。さらに、ログ情報をログ・パイプラインからストレージ内のログ・データ・セット1212に書き込むために、1つまたは複数のログ書き込みエンジン1210が使用される。
【0063】
ログ・パイプラインの分割または追加のログ書き込みエンジンのデプロイあるいはその両方は、ログ・パイプラインへのデータの書き込みおよびログ・パイプラインからストレージへのデータの書き込み、競合の低減、ならびにシステム性能の改善を容易にする。ログ・パイプラインのマージは、システム・リソースの使用を減らし、システム性能を改善する。
【0064】
さらに、例えば格納されたログ・データを使用して、再起動または回復あるいはその両方を実行するために、データベース再起動および回復マネージャ1250が、1つまたは複数のログ単位に対するやり直し動作または取り消し動作あるいはその両方を管理する。やり直し動作を実行することにおいて、1つまたは複数のログ読み取りエンジン1260が、ログ・レコードをストレージ1262からメモリに読み取り、次に、例えば、オブジェクト識別子1270(例えば、一意のページ識別子)に基づいて、取得されたログ・レコードを並べ替える。その後、並べ替えられたログ・レコードが、やり直し動作への入力として使用され、やり直し動作が、ログ単位の並べ替えられたログ・レコードに対して並列に適用される。さらに、取り消し動作の場合、1つまたは複数のログ読み取りエンジン1260が、ログ・レコードをストレージ1262からメモリに読み取り、次に、例えば、単位回復識別子1272に基づいて、取得されたログ・レコードを並べ替える。次に、並べ替えられたログ・レコードが、取り消し動作への入力として使用され、取り消し動作が、ログ単位の並べ替えられたログ・レコードに対して並列に適用される。
【0065】
本明細書ではさまざまな実施形態が説明されたが、他の変形および実施形態が可能である。本明細書に記載された各態様または特徴およびその変形を、特に矛盾しない限り、任意の他の態様または特徴と組み合わせることができるということに、注意するべきである。
【0066】
本発明の1つまたは複数の態様は、コンピュータ技術に密接に関係しており、コンピュータ内の処理を容易にし、その性能を改善する。1つの例では、ログ・パイプラインを自動的に分割すること、もしくはマージすること、またはその両方、1つまたは複数の追加の書き込みエンジンを自動的にデプロイすること、またはデータベースの再起動/回復のためにログ・レコードを並べ替える/マージすること、あるいはその組合せによって、性能が改善される。
【0067】
コンピューティング環境内の処理が、データベース関連の処理の1つまたは複数の態様に関連しているとき、その処理を容易にする1つの実施形態の態様が、図13A~13Cを参照して説明される。
【0068】
1つの態様では、図13Aを参照すると、データをログ・パイプラインに書き込むことにおける競合が、事前に指定されたレベルであるかどうかに関する判定が行われる(1300)。ログ・パイプラインは、例えば、データをメモリからストレージに書き込むことにおいて使用される(1301)。データをログ・パイプラインに書き込むことにおける競合が事前に指定されたレベルであるということの決定に基づいて、新しいログ・パイプラインを作成するための分割動作が自動的に実行される(1302)。
【0069】
分割動作を実行することによって、ログ・パイプライン上の競合が減らされ、データがログ・パイプラインに書き込まれ得る速度が増やされ、それによって、データがストレージにより高速に書き込まれることを可能にし、システム性能を向上させる。
【0070】
1つの態様では、ルート・マップに基づいて、受信データが、選択されたログ・パイプラインにルーティングされる(1304)。ルート・マップは、複数のログ・パイプラインのうちのどのログ・パイプラインが受信データを受信するかの指示を含む(1306)。複数のログ・パイプラインは、例えば、少なくともログ・パイプラインおよび新しいログ・パイプラインを含む(1308)。ルート・マップの使用は、ログ・データがログ・パイプラインのうちのどれに書き込まれるかの追跡を容易にし、少なくとも、再起動動作または回復動作あるいはその両方を容易にする。
【0071】
一例として、選択された識別子のモジュロ演算を使用して、ルート・マップによって示されるルーティングが決定される(1310)。モジュロ演算において使用されるモジュロ数は、例えば、複数のログ・パイプラインのうちのログ・パイプラインの数に基づく(1312)。1つの例では、選択された識別子は、単位回復の識別子であり(1314)、単位回復は、例えば、受信データを生成する1つまたは複数の動作を含む(1316)。1つの実施形態では、新しいログ・パイプラインを作成することに基づいてルート・マップが作成される(1318)。一例として、ルート・マップ(例えば、新しいルート・マップ)の作成は、1つまたは複数の先行するルート・マップに対するロック/ラッチを必要とせずに、ログ・パイプラインの分割/マージ・プロセスが実行されることを可能にする。
【0072】
図13Bを参照すると、1つの態様では、データ(例えば、ページ)の1つまたは複数の単位がメモリ(例えば、ページ・バッファ)からストレージに書き込まれるかどうかに関する判定が行われる(1330)。この判定は、例えば、1つまたは複数のログ・パイプライン内の1つまたは複数のフラッシュ・ポイントに基づく(1332)。1つまたは複数のデータの単位がメモリからストレージに書き込まれるということの決定に基づいて、1つまたは複数のデータの単位がメモリからストレージに書き込まれる(1334)。
【0073】
1つの実施形態では、1つまたは複数のログ・パイプラインの最小フラッシュ・ポイントの決定が行われる(1336)。さらに、1つまたは複数のデータの単位のうちのデータの単位がメモリからストレージに書き込まれるかどうかの判定は、データの単位が、最小フラッシュ・ポイントとの事前に定義された関係(例えば、未満)を有するタイムスタンプを含んでいるかどうかを判定することを含み、データの単位が、最小フラッシュ・ポイントとの事前に定義された関係を有するタイムスタンプを含んでいるということに基づいて、データの単位を書き込むことが実行される(1338)。これによって、一例として、データをログ・パイプに書き込むのと同時に、データのページがストレージに書き込まれることを可能にし、システム性能を向上させる。
【0074】
1つの態様では、ログ書き込みエンジンを使用して、ログ・データが1つまたは複数のログ・パイプラインからストレージに書き込まれる(1350)。さらに、1つの態様では、ログ・データを1つまたは複数のログ・パイプラインから書き込むために、1つまたは複数の追加のログ書き込みエンジンがデプロイされるかどうかに関する判定が自動的に行われる(1352)。1つまたは複数の追加のログ書き込みエンジンがデプロイされるということの決定に基づいて、1つまたは複数の追加のログ書き込みエンジンがデプロイされる(1354)。追加のログ書き込みエンジンを提供することによって、データがストレージに書き込まれ得る速度が増やされ、それによって、システム性能を向上させる。さらに、1つまたは複数の態様では、ログ・データがストレージに書き込まれ得る速度を増やすことによって、メモリの変更されたページがメモリからストレージに書き込まれ得る速度も増やされる。
【0075】
1つの態様では、図13Cを参照すると、1つまたは複数のデータベース・オブジェクトに対して回復が実行されるかどうかに関する判定が行われる(1370)。回復が実行されるということの決定に基づいて、第1の複数の並べ替えられたレコードを提供するために、ストレージから読み取られた複数のレコードが、第1の技術を使用して並べ替えられる(1372)。第1の複数の並べ替えられたレコードは、第1の複数のログ単位を含む(1374)。第1の複数の並べ替えられたレコードは、やり直し動作に提供される(1376)。やり直し動作は、第1の複数のログ単位に対して並列に実行される(1378)。これによって、データ完全性を維持しながら、データベース回復処理が並列に実行されることを可能にする。
【0076】
1つの態様では、1つまたは複数のデータベース・オブジェクトに対して回復が実行されるかどうかに関する判定が行われる(1380)。回復が実行されるということの決定に基づいて、第2の複数の並べ替えられたレコードを提供するために、ストレージから読み取られた複数のレコードが、第2の技術を使用して並べ替えられる(1382)。第2の複数の並べ替えられたレコードは、第2の複数のログ単位を含む(1384)。第2の複数の並べ替えられたログ・レコードは、取り消し動作に提供される(1386)。取り消し動作は、第2の複数のログ単位に対して並列に実行される(1388)。これによって、データ完全性を維持しながら、データベース回復処理が並列に実行されることを可能にする。
【0077】
1つの態様では、データを1つまたは複数のログ・パイプラインに書き込むことにおける競合が、別の事前に指定されたレベルであるかどうかに関する判定が行われる(1390)。データを1つまたは複数のログ・パイプラインに書き込むことにおける競合が他の事前に指定されたレベルであるということの決定に基づいて、ログ・パイプラインの数を減らすためのマージ動作が実行される(1392)。マージ動作を実行することによって、より少ないログ・パイプラインが利用され、したがって、より少ないシステム・リソースが利用される。
【0078】
他の実施形態、態様、または変形、あるいはその組合せが可能である。
【0079】
本発明の1つまたは複数の態様は、コンピューティング環境内に含まれるデータベース・システムによって実行され、その例が図14Aに示されている。図14Aに示されているように、コンピューティング環境1400は、例えば、汎用コンピューティング・デバイスの形態などで示されるコンピュータ・システム1402を含んでいる。コンピュータ・システム1402は、1つまたは複数のバスまたは他の接続1410あるいはその両方を介して互いに結合された、1つまたは複数のプロセッサまたはプロセッシング・ユニット1404(例えば、中央処理装置(CPU:central processing units))、メモリ1406(例えば、システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置とも呼ばれる)、および1つまたは複数の入出力(I/O:input/output)インターフェイス1408を含んでよいが、これらに限定されない。
【0080】
バス1410は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、およびさまざまなバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数の種類のバス構造のいずれかのうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)、MCA(Micro Channel Architecture)、EISA(Enhanced ISA)、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnect)を含むが、これらに限定されない。
【0081】
メモリ1406は、例えば、プロセッサ1404のローカル・キャッシュ1414に結合されてよい、共有キャッシュなどのキャッシュ1412を含んでよい。さらに、メモリ1406は、1つまたは複数のプログラムまたはアプリケーション1416、オペレーティング・システム1418、データベース・システム1419、および1つまたは複数のコンピュータ可読プログラム命令1420を含んでよい。コンピュータ可読プログラム命令1420は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【0082】
コンピュータ・システム1402は、例えばI/Oインターフェイス1408を介して、1つまたは複数の外部デバイス1430およびネットワーク・インターフェイス1432と通信してもよい。外部デバイス1430は、例えば、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイなど、ならびに1つまたは複数のデータ・ストレージ・デバイス1434(例えば、ディスクなどのストレージ)を含む。データ・ストレージ・デバイス1434は、1つまたは複数のプログラム1436、1つまたは複数のコンピュータ可読プログラム命令1438、またはデータ(例えば、ストレージに書き込まれる変更されたページ、ストレージに書き込まれるログ・データなど)、あるいはその組合せなどを格納してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【0083】
ネットワーク・インターフェイス1432は、コンピュータ・システム1402が、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組合せなどの1つまたは複数のネットワークと通信できるようにし、他のコンピューティング・デバイスまたはシステムとの通信を実現する。
【0084】
コンピュータ・システム1402は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であってよい。例えば、コンピュータ・システム1402は、取り外し不可、不揮発性の磁気媒体(通常は、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りおよび書き込みを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROM、もしくは他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りもしくは書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であってよい。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム1402と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0085】
コンピュータ・システム1402は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用されてよい。コンピュータ・システム1402での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【0086】
1つの例では、データベース・システム1419は、本発明の1つまたは複数の態様を実行するための1つまたは複数のコンポーネントを含む。これらのコンポーネントは、メイン・メモリ(例えば、メモリ1406)、または1つまたは複数のキャッシュ(例えば、キャッシュ1412、ローカル・キャッシュ1414)、または外部ストレージ(例えば、デバイス1434)、あるいはその組合せを含む、メモリに格納されてよく、1つまたは複数のプロセッサ(例えば、プロセッサ1404)によって実行されてよい。
【0087】
1つの例では、図14Bを参照すると、コンポーネントは、例えば以下を含む。
【0088】
例えば、データを1つまたは複数のログ・パイプラインからストレージに書き込むために使用される、1つまたは複数のログ書き込みエンジン1450。
【0089】
例えば、1つまたは複数の追加のログ書き込みエンジンがいつ(例えば、自動的に)デプロイされるかを決定するために使用される、ログ書き込みエンジン・ディスパッチャ1455。
【0090】
例えば、データベースの再起動または回復あるいはその両方のために、例えば、データをストレージからメモリに読み取るために使用される、1つまたは複数のログ読み取りエンジン1460。
【0091】
例えば、分割動作またはマージ動作あるいはその両方がいつ実行されるかを決定するために使用される、ログ性能モニタ1465。
【0092】
例えば、1つまたは複数のデータベース・オブジェクトの再起動または回復あるいはその両方を実行するために使用される、データベース再起動および回復マネージャ1470。
【0093】
さまざまなコンポーネントが説明されたが、本発明の態様は、これらのコンポーネントのうちの1つまたは複数によって実行されてよい。本発明の1つまたは複数の態様を実行するために、より多いコンポーネント、より少ないコンポーネント、または異なるコンポーネント、あるいはその組合せが使用される。多くの変形が可能である。
【0094】
エミュレーション環境を含むが、これに限定されない、さらに他の種類のコンピューティング環境が、本発明の1つまたは複数の態様を組み込んで使用してもよく、その例が、図15Aを参照して説明される。この例では、コンピューティング環境10は、例えば、1つまたは複数のバス18または他の接続あるいはその両方を介して互いに結合された、ネイティブ中央処理装置(CPU)12、メモリ14、および1つまたは複数の入出力デバイスまたはインターフェイスあるいはその両方16を含む。例として、コンピューティング環境10は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるPowerPC(R)プロセッサ、ヒューレット・パッカード社(カリフォルニア州パロアルト市)によって提供されるインテル(R)Itanium(R)IIプロセッサ内蔵HP Superdome、あるいはInternational Business Machines Corporation、ヒューレット・パッカード社、インテル社、Oracle社、または他の企業によって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せを含んでよい。PowerPCは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。インテルおよびItaniumは、米国および他の国における、インテル社またはその子会社の商標または登録商標である。
【0095】
ネイティブ中央処理装置12は、環境内で処理中に使用される1つもしくは複数の汎用レジスタまたは1つもしくは複数の専用レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ20を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
【0096】
さらに、ネイティブ中央処理装置12は、メモリ14に格納された命令およびコードを実行する。1つの特定の例では、中央処理装置は、メモリ14に格納されたエミュレータ・コード22を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード22は、例えばInternational Business Machines Corporationによって提供されるz/Architecture(R)ハードウェア・アーキテクチャ以外のアーキテクチャに基づくマシン(PowerPC(R)プロセッサ、HP Superdomeサーバなど)が、例えばz/Architecture(R)ハードウェア・アーキテクチャをエミュレートし、例えばz/Architecture(R)ハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行できるようにする。Z/ARCHITECTUREは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0097】
エミュレータ・コード22に関連するさらなる詳細が、図15Bを参照して説明される。メモリ14に格納されたゲスト命令30は、ネイティブCPU12のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された(例えば、マシン命令と相互関係がある)ソフトウェア命令を含む。例えば、ゲスト命令30は、z/Architecture(R)ハードウェア・アーキテクチャに基づくプロセッサ上で実行するように設計されてよいが、代わりに、例えばインテル(R)Itanium(R)IIプロセッサであってよい、ネイティブCPU12上でエミュレートされる。1つの例では、エミュレータ・コード22は、メモリ14から1つまたは複数のゲスト命令30を取得するため、および取得された命令のローカル・バッファリングを任意選択的に提供するための命令フェッチ・ルーチン32を含む。エミュレータ・コード22は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、1つまたは複数の対応するネイティブ命令36に変換するための命令変換ルーチン34も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
【0098】
さらに、エミュレータ・コード22は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン40を含む。エミュレーション制御ルーチン40は、ネイティブCPU12に、1つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令36の実行は、データをメモリ14からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、または変換ルーチンによって決定された何らかの種類の算術演算もしくは論理演算を実行することを含んでよい。
【0099】
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置12によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組合せにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ20を使用して、またはメモリ14内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令30、ネイティブ命令36、およびエミュレータ・コード22は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
【0100】
本発明の1つまたは複数の態様がクラウド・コンピューティングに関連してよい。
【0101】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された教示の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装され得る。
【0102】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含んでよい。
【0103】
特徴は、次のとおりである。
【0104】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0105】
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0106】
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できることがある。
【0107】
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【0108】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと利用者の両方に透明性を提供する。
【0109】
サービス・モデルは、次のとおりである。
【0110】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0111】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0112】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0113】
デプロイメント・モデルは、次のとおりである。
【0114】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0115】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0116】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0117】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データおよびアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0118】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0119】
ここで図16を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード52を含んでいる。ノード52は、互いに通信してよい。ノード52は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはこれらの組合せなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。図16に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0120】
ここで図17を参照すると、クラウド・コンピューティング環境50(図16)によって提供される機能的抽象レイヤのセットが示されている。図17に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0121】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0122】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
【0123】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供してよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよび他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当ておよび管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0124】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、ならびにデータベース関連の処理96が挙げられる。
【0125】
前述されたコンピューティング環境は、使用可能なコンピューティング環境の例にすぎない。分割されない環境、分割された環境、クラウド環境、またはエミュレートされた環境、あるいはその組合せを含むが、これらに限定されない、他の環境が使用されてよく、実施形態はいずれか1つの環境に限定されない。本明細書ではコンピューティング環境のさまざまな例が説明されるが、本発明の1つまたは複数の態様が、多くの種類の環境と共に使用されてよい。本明細書で提供されるコンピューティング環境は、例にすぎない。
【0126】
各コンピューティング環境は、本発明の1つまたは複数の態様を含むように構成されることが可能である。例えば、各コンピューティング環境は、本発明の1つまたは複数の態様に従って、データベース関連の処理のために構成されてよい。
【0127】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲から逸脱することなく、多くの変更および変形が、当業者にとって明らかになるであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、もしくは市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
【0128】
本発明の態様は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【0129】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波または他の自由に伝搬する電磁波、導波管または他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの、それ自体が一過性の信号であると解釈されるべきではない。
【0130】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組合せ)を介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0131】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで記述されたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、またはリモート・コンピュータ上もしくはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)もしくは広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行し、電子回路をカスタマイズしてよい。
【0132】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0133】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
【0134】
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
【0135】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして実現されるか、同時に実行されるか、時間的に部分的もしくは完全に重複する方法で実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能もしくは動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0136】
上に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、1つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、1人または複数の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
【0137】
1つの態様では、1つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。1つの例として、アプリケーションのデプロイは、1つまたは複数の実施形態を実行するよう機能するコンピュータ・インフラストラクチャを提供することを含む。
【0138】
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、1つまたは複数の実施形態を実行できる。
【0139】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、1つまたは複数の実施形態を実行できる。
【0140】
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、分割またはマージあるいはその両方は、他の基準に基づいて、または本明細書に記載された方法と異なって、あるいはその両方で、実行されてよい。さらに、他の並べ替え技術が使用されてよい。さらに、追加のログ書き込みエンジンのデプロイが、他の基準に基づいてよい。多くの変形が可能である。
【0141】
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも2つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
【0142】
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他の記憶媒体などを含むが、これらに限定されない)は、直接的に、または介在するI/Oコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタもしくはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
【0143】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、文脈で特に明示的に示されない限り、複数形も含むよう意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外していないということが、さらに理解されるであろう。
【0144】
下の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるとき、他の請求される要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
図1A
図1B
図2A
図2B
図2C
図3A
図3B
図3C
図4
図5
図6
図7
図8A
図8B
図8C
図9A
図9B
図9C
図10A
図10B
図11
図12A
図12B
図13A
図13B
図13C
図14A
図14B
図15A
図15B
図16
図17
【手続補正書】
【提出日】2023-12-21
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ・システムが実行する方法であって
データをログ・パイプラインに書き込むことにおける競合が事前に指定されたレベルであるかどうかを判定することであって、前記ログ・パイプラインが、前記データをメモリからストレージに書き込むことにおいて使用される、前記判定することと、
前記データを前記ログ・パイプラインに書き込むことにおける前記競合が前記事前に指定されたレベルであるということを決定することに基づいて、分割動作を自動的に実行して新しいログ・パイプラインを作成することと、
を含む、方法
【請求項2】
ート・マップに基づいて、受信データを選択されたログ・パイプラインにルーティングすることをさらに含み、前記ルート・マップが、複数のログ・パイプラインのうちのどのログ・パイプラインが前記受信データを受信するかの指示を含み、前記複数のログ・パイプラインが少なくとも前記ログ・パイプラインおよび前記新しいログ・パイプラインを含む、請求項1に記載の方法
【請求項3】
選択された識別子のモジュロ演算を使用して、前記ルート・マップによって示される前記ルーティングが決定され、前記モジュロ演算において使用されるモジュロ数が、前記複数のログ・パイプラインのうちのログ・パイプラインの数に基づく、請求項2に記載の方法
【請求項4】
前記選択された識別子が、単位回復の識別子であり、前記単位回復が、前記受信データを生成する1つまたは複数の動作を含む、請求項3に記載の方法
【請求項5】
記新しいログ・パイプラインを作成することに基づいて前記ルート・マップを作成することをさらに含む、請求項2から請求項4のいずれか一項に記載の方法
【請求項6】
つまたは複数のデータの単位がメモリからストレージに書き込まれるかどうかを判定することであって、前記判定することが、1つまたは複数のログ・パイプライン内の1つまたは複数のフラッシュ・ポイントに基づく、前記判定することと、
前記1つまたは複数のデータの単位がメモリからストレージに書き込まれるということの決定に基づいて、前記1つまたは複数のデータの単位をメモリからストレージに書き込むこととをさらに含む、請求項1から請求項5のいずれか一項に記載の方法
【請求項7】
記1つまたは複数のログ・パイプラインの最小フラッシュ・ポイントを決定することをさらに含み、前記1つまたは複数のデータの単位のうちのデータの単位がメモリからストレージに書き込まれるかどうかの前記判定が、前記データの単位が、前記最小フラッシュ・ポイントとの事前に定義された関係を有するタイムスタンプを含んでいるかどうかを判定することを含み、前記データの単位が、前記最小フラッシュ・ポイントとの前記事前に定義された関係を有する前記タイムスタンプを含んでいるということに基づいて、前記データの単位を前記書き込むことが実行される、請求項6に記載の方法
【請求項8】
グ書き込みエンジンを使用して、ログ・データを1つまたは複数のログ・パイプラインからストレージに書き込むことと、
前記ログ・データを前記1つまたは複数のログ・パイプラインから書き込むために、1つまたは複数の追加のログ書き込みエンジンがデプロイされるかどうかを自動的に判定することと、
前記1つまたは複数の追加のログ書き込みエンジンがデプロイされるということの決定に基づいて、前記1つまたは複数の追加のログ書き込みエンジンをデプロイすることとをさらに含む、請求項1から請求項7のいずれか一項に記載の方法
【請求項9】
つまたは複数のデータベース・オブジェクトに対して回復が実行されるということを決定することと、
回復が実行されるということの決定に基づいて、第1の複数の並べ替えられたレコードを提供するために、第1の技術を使用してストレージから読み取られた複数のレコードを並べ替えることであって、前記第1の複数の並べ替えられたレコードが第1の複数のログ単位を含む、前記並べ替えることと、
前記第1の複数の並べ替えられたレコードをやり直し動作に提供することであって、前記やり直し動作が前記第1の複数のログ単位に対して並列に実行される、前記提供することとをさらに含む、請求項1から請求項8のいずれか一項に記載の方法
【請求項10】
つまたは複数のデータベース・オブジェクトに対して回復が実行されるということを決定することと、
回復が実行されるということの決定に基づいて、第2の複数の並べ替えられたレコードを提供するために、第2の技術を使用してストレージから読み取られた複数のレコードを並べ替えることであって、前記第2の複数の並べ替えられたレコードが第2の複数のログ単位を含む、前記並べ替えることと、
前記第2の複数の並べ替えられたログ・レコードを取り消し動作に提供することであって、前記取り消し動作が前記第2の複数のログ単位に対して並列に実行される、前記提供することとをさらに含む、請求項1から請求項9のいずれか一項に記載の方法
【請求項11】
ータを1つまたは複数のログ・パイプラインに書き込むことにおける前記競合が、別の事前に指定されたレベルであるかどうかを判定することと、
前記データを前記1つまたは複数のログ・パイプラインに書き込むことにおける前記競合が前記別の事前に指定されたレベルであるということを決定することに基づいて、マージ動作を実行してログ・パイプラインの数を減らすこととをさらに含む、請求項1から請求項10のいずれか一項に記載の方法
【請求項12】
モリと、
前記メモリと通信する少なくとも1つのプロセッサとを備え、請求項1から請求項11に記載の方法を実行するように構成されている、コンピュータ・システム。
【請求項13】
コンピュータ・システムに、請求項1から請求項11に記載の方法を実行させる、コンピュータ・プログラム。
【請求項14】
コンピュータ・システムに請求項1から請求項11に記載の方法を実行させるためのコンピュータ・プログラムを記録した、コンピュータ可読ストレージ媒体。
【国際調査報告】