JP4028820B2 - コンピュータ・システムでのトランザクションの選択的キャッシングの方法および装置 - Google Patents
コンピュータ・システムでのトランザクションの選択的キャッシングの方法および装置 Download PDFInfo
- Publication number
- JP4028820B2 JP4028820B2 JP2003154968A JP2003154968A JP4028820B2 JP 4028820 B2 JP4028820 B2 JP 4028820B2 JP 2003154968 A JP2003154968 A JP 2003154968A JP 2003154968 A JP2003154968 A JP 2003154968A JP 4028820 B2 JP4028820 B2 JP 4028820B2
- Authority
- JP
- Japan
- Prior art keywords
- journal
- data
- buffer
- volatile
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、全般的にはディジタル・データ処理に関し、具体的には、ディジタル・コンピュータ・システムでのデータベース管理に関する。
【0002】
【従来の技術】
近代のコンピュータ・システムには、通常は、中央処理装置(CPU)と、通信バスおよびメモリなど、情報の保管、検索、および転送に必要なサポートするハードウェアが含まれる。近代のコンピュータ・システムには、入出力コントローラまたはストレージ・コントローラなど、外部の世界と通信するのに必要なハードウェア、キーボード、モニタ、磁気テープ・ドライブ、ディスク・ドライブ、ネットワークに接続された通信信号線など、外部と通信するハードウェアに接続された装置も含まれる。CPUは、システムの心臓部である。CPUは、コンピュータ・プログラムを含む命令を実行し、他のシステム構成要素の動作を指示する。
【0003】
コンピュータのハードウェアの観点からは、ほとんどのシステムが、基本的に同一の形で動作する。プロセッサは、算術演算、論理比較、ある位置から別の位置へのデータの移動など、非常に単純な動作の限られた組を実行することができる。しかし、動作のそれぞれが、非常にすばやく実行される。膨大な数のこれらの単純な動作を実行するようにコンピュータに指示するプログラムによって、コンピュータが何か洗練されたことを行っているという幻想がもたらされる。コンピュータ・システムの新しい能力または改善された能力としてユーザが知覚するものは、基本的には非常に単純な動作の同一の組を、非常に高速に実行することによって可能になる。したがって、コンピュータ・システムに対する改善を継続することは、これらのシステムをさらに高速にすることを必要とする。
【0004】
コンピュータ・システムは、互いに相互作用する多数の構成要素を有する非常に複雑な機械である。CPUは、推進機関であるが、システムの総合的速度またはスループットは、CPUを待たせるかCPUに追加の作業負荷を課すさまざまな他の構成要素によって影響される可能性がある。たとえば、CPUがメモリからのデータを必要とする場合に、CPUは、メモリにアクセスするために数サイクル待たなければならない場合がある。CPUが、メモリ内ではなく、ハード・ディスクなどのストレージ・デバイスに保管されたデータを必要とする場合には、CPUは、オペレーティング・システム機能を実行して、ストレージ内のデータにアクセスし、オペレーティング・システムは、しばしば、ストレージからのデータを待っている間に、実行を別のタスクまたはスレッドに切り替える。これらの動作は、必ずしもCPUをアイドルにさせるのではないが、システム性能に影響する可能性がある追加の作業負荷をCPUに課す。これらの動作によって、遅延も導入され、これによって、コンピュータと対話する人間が長時間応答を待つことになる可能性がある。
【0005】
多くのより大きいコンピュータ・システムが、主にまたは大体はデータベース・アプリケーションをサポートするのに使用される。データベース・アプリケーションは、大量のデータを編成し、アクセスし、保守するプログラムである。通常、データベース・アプリケーションは、複数のユーザからの要求をサービスして、読み取りまたは更新のいずれかのためにデータベース内の少量の情報にアクセスする。これらのアクセスは、必ずしも順次の順序で行われるのではなく、データベースのランダムな部分に巻き散らされたように見える場合がある。データベースは、通常は非常に大きいので、データベース全体またはその大部分でさえ、常時メイン・メモリ内に保持することは、一般に実行不能である。したがって、データベース・アプリケーションは、通常は、多数のストレージ・アクセス動作という特徴があり、そのほとんどが、個別には小さく、システムのストレージ・アドレスにまたがって分散される。これらの条件の下で、コンピュータ・システムの性能は、ストレージ・デバイスの集合としての性能に大きく依存する。
【0006】
より高速のストレージ・ハードウェアによって、多くの場合に、大規模データベースのサービスに使用されるコンピュータ・システムの性能が改善されるが、ストレージ・ハードウェア特性の所与の組について、ストレージ・アクセス動作の数を減らすこと、ストレージ・ハードウェアが忙しくない時にいくつかの動作を実行すること、または使用可能なストレージ・ハードウェアをより効率的に使用することのいずれかによって、性能を改善することが、さらに可能である。
【0007】
データベース変更をサポートする周知の方法の1つが、ジャーナリングである。ジャーナリングには、1つまたは複数の特殊なストレージ・デバイスまたはストレージ・デバイスの特殊な部分に、変更動作を順次書き込むことが含まれる。ジャーナリングは、実行されるストレージ動作の数を減らすのではなく、ストレージ・ハードウェアをより効率的に使用するという原理に基づいて動作する。具体的に言うと、通常のストレージ・デバイスは、回転式磁気ディスク・ドライブである。ディスク・ドライブへの少量のランダム・アクセスについて、データにアクセスするのに必要な時間のほとんどが、トラックへのシーク動作(シーク)および所望の角度位置までディスクが回転するのを待つこと(待ち時間)に費やされる。しかし、データが、必ず順次(次のセクタまたはトラックに)書き込まれる場合に、これらのシーク時間および待ち時間が、事実上除去され、同一の量のデータを、はるかに短い時間間隔で書き込むことができる。残念ながら、順次書込は、ジャーナル内のデータが、データベースの編成構造に従って編成されていないことを意味する。したがって、ジャーナリングは、データを不揮発性ストレージ・デバイスに一時的に保管するに過ぎない。最終的に、同一のデータ更新を、ストレージ内の編成されたデータ(オリジナル・コピー)に対して実行しなければならず、これは、一般に、多数の少量の書込動作を意味する。変更されたデータは、通常は、不揮発性ストレージのオリジナル・コピーに対する更新が結果として起こるまで、メモリ内で保持される。この更新は、ジャーナリングされたデータが異なる形で編成されるので、メモリ内のデータから実行される。ジャーナル・データをより長くメモリ内に保持することによって、ディスク上のジャーナル・データのオリジナル・コピーへの書込アクセスの総数が減る。というのは、連続的なジャーナル・データを収容したメモリ・ページが、最終的なストレージへの書込が実行される前に、複数回更新される可能性があるからである。他の場合には、この遅延されたバッファリングによって、ストレージ・デバイスがより忙しくない時にストレージ書込動作を実行できるようになるか、複数の書込動作を組み合わせられるようになるか、ストレージ書込動作に対する効率的な改善の他の形が可能になる。
【0008】
多数の大規模近代コンピュータ・システムの設計目標の1つが、データ保存または冗長性すなわち、システム誤動作(停電などの外部の原因または構成要素故障などの内部の原因のいずれかに起因する)の結果としてデータが失われてはならないことである。もう1つの設計目標が、可用性すなわち、システムをできる限りユーザにとって使用可能にすることである。いくつかの場合に、一定の可用性の必要がある、すなわち、システムを、何が起ころうとも、常に使用可能になるように設計しなければならない。他のシステムでは、ある長さのダウン・タイム、またはシステムが低い性能で動作するある長さの時間が、許容可能である場合がある。
【0009】
【発明が解決しようとする課題】
一般に、一方ではデータ保存と可用性の間、もう一方ではデータ保存と生産的な作業に関するハードウェア・リソースの最大限の利用の間に、なんらかのトレードオフがある。ジャーナリングは、この原理の1例である。ジャーナルでは、データを不揮発性位置に保管し、構造化された不揮発性ストレージへの変更されたデータの書込を保留することによってデータ保存および可用性を機能強化するが、ジャーナリング自体は、ストレージ・デバイスおよびサポートするハードウェアの形のハードウェア・リソースを必要とし、バス、チャネル、およびプロセッサなどの他のリソースの使用可能帯域幅の一部を消費する可能性がある。この原理のもう1つの例として、「RAID」(redundant array of independent disksを意味する)と称するさまざまな方式のどれかで複数のストレージ・デバイスに冗長な形でデータを保管することが周知であるが、このような方式のすべてが、冗長性を達成するために、ディスクの記憶容量の一部を犠牲にし、いくつかの場合に、非冗長記憶方式と比較した時にストレージ・アクセス時間に悪影響を及ぼす可能性がある。
【0010】
ジャーナルを実施する形にも、さらなる設計トレードオフがある。すべてのデータベース変更項目が、即座にジャーナル・ディスクに書き込まれる場合に、ジャーナルは、多数の少量の書込動作という重荷を負う。通常、いくつかのジャーナル変更項目が、メモリ内でバッファリングまたはキャッシングされ、その結果、複数の項目が、一時にジャーナルに書き込まれるようになる。ジャーナルへの書込の前にキャッシングされる項目の数が多いほど、書込の回数と、その結果のシステム性能への影響が減る。しかし、ジャーナル項目を不揮発性ストレージに書き込む前に待つ時間が長くなるほど、ジャーナルの有益な効果が減る、すなわち、より多くのデータが露出される。
【0011】
必ずしも認められてはいないが、これらの競合する考慮事項を管理し、その結果、システムが、適度なレベルの性能、可用性、およびデータ保存を達成するようにする手段の必要が存在する。
【0012】
【課題を解決するための手段】
データベース・マネージャが、動的に変化するシステムの状態変数である動的選択判断基準に基づいて、あるデータベース変更に関するジャーナル項目を選択的にキャッシングする。少なくとも1つの選択判断基準が、システム・クラッシュの場合の回復の推定時間である。更に選択判断基準としてシステムまたはそのいくつかの構成要素の現在の性能を含めてもよい。一般に、システムが忙しいほど、より多くのデータがキャッシングされ、逆も同様である。したがって、ジャーナルへの書込動作の性能的重荷は、削減が最も必要な時に減らされ、システムがそれに最もよく耐えられる時に増やされる。
【0013】
好ましい実施形態では、データベースに対する変更を保管するジャーナル・ディスク・ストレージ・デバイスが提供される。データベース変更項目は、順次形式でメイン・メモリ・ジャーナル・バッファにキャッシングされ、ジャーナル書込を待つ。ジャーナル・バッファが満杯になる時に、バッファ内容が、ジャーナル・ディスクに書き込まれる。しかし、ある種の変更動作によって、バッファの内容が、バッファが充てんされるのを待たずに、即座にジャーナル・ディスクに書き込まれる。いくつかの場合に、データベース変更項目のタイプによって、自動的にバッファがジャーナルに書き込まれるようになる。他のデータベース変更項目では、動的選択判断基準に応じて、選択的にバッファが書き込まれる。これらの選択判断基準で、システム・クラッシュの場合の回復の推定時間と、システムでのアクティビティの現在のレベルの両方を考慮に入れることが好ましい。
【0014】
ジャーナル・バッファを空にする時を選択的に決定することによって、このシステムは、忙しくない時により頻繁にバッファを空にし(したがって、回復時間露出が減る)、より忙しい時に、より低い頻度でバッファを空にする(したがって、性能が最もクリティカルである時の追加書込動作の性能上の重荷が減る)。
【0015】
【発明の実施の形態】
本発明の詳細は、その構造および動作の両方に関して、添付図面に関して最もよく理解することができ、図面では、同様の符号が同様の部分を指す。
【0016】
図面を参照すると、同様の符号は複数の図面を通じて同様の部分を示すが、図1に、好ましい実施形態との一貫性を有する、データベース情報のリポジトリとして働くコンピュータ・システム100の高水準ブロック図が示されている。コンピュータ・システム100には、1つまたは複数の中央処理装置(CPU)101、メモリ102、データ・ストレージ・インターフェース103、端末インターフェース104、入出力装置インターフェース105、および外部ネットワーク・インターフェース106が含まれる。さまざまな装置は、内部通信バス110を介して互いに通信する。CPU101は、汎用プログラマブル・プロセッサであり、メモリ102に保管された命令を実行する。図1には単一のCPUが示されているが、複数のCPUを有するコンピュータ・システムを使用できることを理解されたい。メモリ102は、データおよびプログラムが保管される、ランダム・アクセス揮発性メモリであり、メモリは、概念的に単一のモノリシックなエンティティとして図示されているが、メモリが、しばしば、キャッシュおよび他のメモリ・デバイスの階層として配置されることと、異なるキャッシュを複数CPUシステムの異なるCPUに関連付けることができることを理解されたい。データ・ストレージ・インターフェース103は、1つまたは複数のデータ・ストレージ・デバイスへの接続を提供し、これらのデータ・ストレージ・デバイスは、他のタイプのデータ・ストレージを使用することができるが、回転式磁気ハード・ディスク・ユニットであるジャーナル・ディスク111およびデータ・ストレージ112から115であることが好ましい。端末インターフェース104は、1つまたは複数の接続された端末またはワークステーションとの間でデータを伝送するための接続を提供する。これは、さまざまな形で実施することができる。多くの大型コンピュータ・システム(メインフレーム)が、通常は1つまたは複数の電子回路カードである端末インターフェース入出力プロセッサを介する複数の端末の直接接続をサポートする。その代わりに、端末インターフェース104が、ローカル・エリア・ネットワークへの接続を提供することができる。さまざまな他の代替案が可能である。入出力装置インターフェース105は、1つまたは複数の入出力装置(ストレージ、端末、および外部ネットワーク以外)への接続を提供する。入出力装置は、考えられるところでは、コンピュータ・システムに接続された任意のタイプの装置とすることができる。そのような装置の例が、プリンタ、スキャナ、磁気ストライプ・リーダー、特殊目的センサ、サーボ・コントローラ、スイッチ、などである。外部ネットワーク・インターフェース106は、インターネットなどの外部ネットワークとの間のデータの伝送の物理接続を提供し、任意のさまざまな使用可能な技術を使用することができる。データベース動作を実行するクライアントを、インターネットまたは他のリモート・ネットワーク接続を介してリモートに接続することが可能である。内部通信バス110は、異なる装置の間でのデータ、コマンド、および他の情報の転送をサポートし、簡略化された形で単一のバスとして図示されているが、通常は、複数のバスとして構成され、階層的な形または他の形で配置することができる。図1に示されたコンピュータ・システムは、例示のための簡略化された表現であることを意図され、上で具体的に述べたものに加えて、システム構成の多数の変形形態が可能であることを理解されたい。具体的に言うと、装置の数およびタイプを変更することができ、データ・ストレージ・インターフェース103、端末インターフェース104、入出力装置インターフェース105、および外部ネットワーク・インターフェース106を、それぞれ複数の機能ハードウェア・ユニットで実施するか、統合された複数機能ユニットに組み合わせられることを理解されたい。コンピュータ・システム100のリソースは、論理的に区分することができるが、そうする必要はない。コンピュータ・システム100は、考えられるところでは、単一ユーザのパーソナル・コンピュータ・システムとすることができるが、大規模データベースは、より一般的に、より大型のマルチユーザ・コンピュータ・システムでサポートされる。好ましい実施形態では、コンピュータ・システム100が、IBM AS/400またはe-Server I/Seriesアーキテクチャであるが、本発明を他のコンピュータ・システムでも実施できることを理解されたい。
【0017】
図1の図および以下の説明において、ジャーナル・ディスク111は、ジャーナル・ドライブを表し、データ・ストレージ112から115は、具体的には構造化された形での1つまたは複数のデータベースの保管を含む、一般的なデータ・ストレージに使用されるドライブを表す。「構造化された形」とは、データがあるタイプの編成された構造を有し、これによって、既知のレコードが見つかるまでレコードの順序付けられない集合を読み取るのではなく、既知のデータベース・レコードに直接にアクセスできることを意味する。データベースの編成構造は、大幅に異なる可能性があり、一部のデータベースが、複数の異なるパラメータ値によるデータベース・レコードの判定を可能にする複数の索引を有する場合がある。単一のジャーナル・ディスク111および4つのデータ・ストレージ112から115が図1に示されているが、ドライブの実際の数を変更できること、特に複数のジャーナル・ドライブを設けることができることを理解されたい。さらに、一般に「RAID」と称するさまざまな冗長ストレージ技法に従ってパリティまたは他の冗長データを保管するために、またはドライブ障害の場合に使用される「ホット・スペア」ドライブとして、追加ドライブを設けることができる。1つまたは複数のドライブが二重機能を有し、そのような二重機能ドライブのストレージ域の一部を、ジャーナルに使用し、別の部分を、一般的なデータまたはホット・スペア・ストレージ・デバイスなどの他の機能に使用することも可能である。
【0018】
図2は、メモリ102内のコンピュータ・システム100の主要なソフトウェア構成要素の概念図である。オペレーティング・システム201が、当技術分野で周知のように、装置インターフェース、メモリ・ページの管理、複数タスクの管理など、さまざまな低水準ソフトウェア機能を提供する。データベース202に、データが含まれ、このデータは、コンピュータ・システム100によって維持され、このシステムが、このデータに関して、1つまたは複数のユーザにアクセスを提供し、ユーザは、コンピュータ・システム100に直接に接続されるか、クライアント/サーバ・アクセス・プロトコルを使用してネットワークを介してコンピュータ・システム100にアクセスするリモート・クライアントとすることができる。当技術分野で周知のように、データベース202には、複数のレコードが含まれ、各レコードに、少なくとも1つ(通常は多数)のフィールドが含まれる。データベース202には、コンピュータ・システムのユーザに提供される、ほとんどすべてのタイプのデータを含めることができる。データベース202に関連するのが、複数のデータベース索引203および204であり、各索引が、ある指定された判断基準によるデータベース202内のレコードの順序付けを表す。ユーザの一部によるデータへのアクセスを、読取専用とすることができるが、データベース内のデータを更新する少なくともいくつかの機能がある。図2には、1つのデータベース202および2つのデータベース索引203および204だけが図示されているが、コンピュータ・システムに、複数のデータベースを含めることができ、索引の数を変更することができる(通常ははるかに多い)。代替案では、コンピュータ・システム100のデータベース202を、論理的に、複数のコンピュータ・システムに保管されるより大きい分散データベースの一部とすることができる。
【0019】
データベース管理システム211は、データベース202の管理の基本機能を提供する。データベース管理システム211は、理論的には、任意の数のデータベースをサポートすることができるが、図2には1つだけが示されている。データベース管理システム211は、データベースの定義、データベースの定義の変更、データベース内のレコードの作成、編集、および除去、データベース内のレコードの表示、データベース索引の定義などの基本的なデータベース動作をユーザが実行できるようにすることが好ましい。データベース管理システム211に、さらに、さまざまなより高度なデータベース機能を含めることができる。データベース管理システム211は、オペレーティング・システム201内に完全に含めることができ、あるいは、オペレーティング・システム201から分離することができ、あるいは、その一部をオペレーティング・システム201内、それ以外の部分を別にすることができる。
【0020】
データベース管理システム211に加えて、CPU101で実行される1つまたは複数のユーザ・アプリケーション212および213が、データベース202のデータにアクセスして、1つまたは複数のユーザの代わりにタスクを実行することができる。そのような他のユーザ・アプリケーションには、たとえば、ワード・プロセッシング、会計、コード開発およびコンパイル、メール、予定管理、または膨大な数のユーザ・アプリケーションのどれでも含めることができる。これらのアプリケーションの一部は、読取専用の形でデータベースにアクセスでき、他のアプリケーションは、データを更新する能力を有する。多数異なるタイプの読取または書込のデータベース・アクセス・タスクがあり、これらのタスクそれぞれが、異なるデータにアクセスするか、データに対する異なる動作を要求する。たとえば、1つのタスクが、特定の既知のレコードからのデータにアクセスし、任意選択としてそれを更新することができ、もう1つのタスクが、照会の性質を持つことができ、この場合に、データベース内のすべてのレコードが、指定された検索判断基準と突き合わされ、一致したレコードからのデータが返され、任意選択として更新される。さらに、データを、データベース202から直接に読み取るか直接に書き込むことができ、あるいは、操作されるかユーザによって供給される、別のデータベースまたは他の何らかのソースから得られる他のデータと組み合わされることを必要とする場合がある。2つのユーザ・アプリケーション212および213だけが例示のために図2に示されているが、そのようなアプリケーションの数は、変更することができる。データベース202にアクセスするユーザ・アプリケーション212および213は、オペレーティング・システム機能呼出しを使用してデータベース202内のデータにアクセスすることができ、あるいは、データベース202内のデータに独立にアクセスすることができる。
【0021】
好ましい実施形態では、データベース管理システム211に、ジャーナル・マネージャ機能215が含まれ、このジャーナル・マネージャ機能215が、データベース変更動作のジャーナリングを処理する。ジャーナリングを意図されたデータベース変更項目は、メモリ内で1つまたは複数のジャーナル・バッファ(ブロック)206および207内でディスク書込のために組み立てられ、このバッファから、ディスク・ストレージに書き込まれる。2つのジャーナル・バッファ・ブロック206および207が図2に示されているが、そのようなバッファの数は、変更することができる。ジャーナル・マネージャは、ジャーナル・バッファ206および207へのデータベース変更の書込を処理し、バッファ内のデータのジャーナル・ディスク111への最終的な書込を処理する。ジャーナル・マネージャ機能215の挙動を、本明細書で詳細に説明する。
【0022】
図2のソフトウェア構成要素は、概念的にメモリに常駐するものとして図示されているが、一般に、コンピュータ・システムのメモリは、すべてのプログラムおよびデータを同時に保持するには小さすぎ、情報が、通常は、回転式磁気ディスク・ドライブなどの1つまたは複数の大容量記憶装置を含むデータ・ストレージ112から115に保管され、情報が、必要に応じてオペレーティング・システムによってメモリにページングされることを理解されたい。具体的に言うと、データベース202は、通常は、メモリにロードするには大きすぎ、通常は、データベース・レコードの総数のごくわずかな部分だけが、一時にメモリにロードされる。完全なデータベース202は、通常は、データ・ストレージ112から115に記録される。
【0023】
本発明の好ましい実施形態によれば、ジャーナル・バッファ206および207の使用は、動的に管理され、その結果、バッファが、コンピュータ・システムの現在の状態およびバッファに記録されたあるトランザクションの消失からの回復の潜在的な回復時間に応じて、選択的に空にされるようになる。具体的に言うと、データベース202に対する変更は、ジャーナル・バッファ206および207内の項目として配置され、最終的に、データ・ストレージ112から115内のデータベースへの書込の前に、ジャーナル・ディスク111に書き込まれる。ジャーナル・バッファ206および207は、選択されたイベントの発生時に空にされる。これらのイベントの一部は、ユーザ・アプリケーションによって指示することができ、現在のシステムまたはジャーナル・バッファの状態に関連しない。他のイベントは、ジャーナル・マネージャ機能215の制御下にあり、ジャーナル・マネージャ機能215は、システム状態およびジャーナル状態を考慮に入れて、システム性能、回復時間、データ露出などの競合する要因の間での動的な平衡を達成することができる。一般に、ジャーナル・マネージャは、システムが忙しくない場合に直ちにバッファを空にし、システムがより忙しい場合にはバッファを空にすることを延期する傾向を有する。この動作のモードを、図3から5を参照して本明細書で詳細に説明する。
【0024】
図3は、好ましい実施形態による、データベースに対する変更を引き起こすデータベース・トランザクションを入力する一般化された処理を示す高水準流れ図である。通常のそのようなデータベース・トランザクションは、データベース内の1つまたは複数の新規レコードの作成、データベース内の1つまたは複数の既存レコードの1つまたは複数のフィールドの変更、またはデータベース内の1つまたは複数のレコードの削除になる可能性がある。データベース変更は、ユーザ・アプリケーション212および213を介して、またはデータベース管理システム211を介して入力することができる。データベース変更を他の形で、たとえば、新しいフィールドの定義、新しい索引の定義などによって引き起こすことも可能であるが、これらの変更は、より一般的でない。
【0025】
図3からわかるように、データベース・トランザクションは、一般に、影響される1つまたは複数のデータベース・レコードが識別され、アクセスされることを必要とする(ステップ301)。新規レコードが作成される場合に、これは、ユーザ・アプリケーション212および213またはデータベース管理システム211から入力されるデータを受け取る空白のレコード・テンプレートの生成だけを意味する場合がある。1つまたは複数のレコードが修正される、より一般的な場合に、これは、一般に、ディスク・ストレージからレコードにアクセスし、それらをデータベース202のうちのメモリ102内の部分にロードすることを意味する。当技術分野で既知のように、レコードの識別には、レコードの表示されるリストからレコードまたはレコードの選択範囲を一意に識別するフィールド値のユーザ入力だけが含まれる場合がある。その一方で、1つまたは複数のレコードの識別が、たとえば、論理照会が、定式化され、照会の検索判断基準と一致するレコードを見つけるためにデータベース内の複数の(おそらくはすべての)レコードと比較される、はるかに複雑な操作になる場合がある。ステップ301は、現在既知であるか将来に開発されるそのような技法のすべてを表すことが意図されている。影響されるレコードの数は少ないが、処理のためにすべてのレコードがメモリ102にロードされることが期待される。しかし、一部のトランザクションは、非常に広範囲または複雑なので、影響されるレコードのごく一部が、一時にメモリにロードされる。
【0026】
1つまたは複数のデータベース・レコードを識別した後に、識別されたレコードが、ユーザの要求に応じて変更される(ステップ302)。変更は、1つまたは複数のフィールドのマニュアルの編集になる場合があり、あるいは、複数のレコードの複数のフィールドがあるグローバル判断基準に従って訂正される自動化された処理になる場合、あるいは、データがなんらかの他のソースからレコードにインポートされる処理になる場合がある。
【0027】
ユーザは、任意選択として、図3で破線の輪郭内のステップ303として表されるように、1つまたは複数のデータベース・レコードに対する1つまたは複数の変更が、即座に「コミット」されなければならないトランザクションを構成することを指定することができる。そのような変更のグループを、「明示コミット」または「ハード・コミット」と称する。そのような指定の効果は、本明細書でさらに説明するが、グループのすべての変更が、永久的データベースに一緒にコミットされ、グループの最後の変更の入力または作成の際に、すべての変更が、メモリ常駐ジャーナル・バッファの現在の状態に無関係に、ジャーナルを収容するディスクに即座に書き込まれることである。ユーザが、ある変更の組ができる限り早く永久的データベースの一部になることを保証するか、データ消失の確率およびデータ再入力の必要を減らすために、明示コミットを指定することを望む場合があり、または、特定の組の変更がアトミック・オペレーションにされる(すなわち、変更のすべてが永久的データベースの一部になる、または変更のどれもが永久的データベースの一部にならないのいずれか)ことを保証することを望む場合、あるいはその両方の場合がある。
【0028】
ユーザが、ステップ303で明示コミット指定を行わない場合に、データベース・オペレーティング・システム機能が、任意選択として、図3の破線の輪郭内のステップ304に示されているように、1つまたは複数のデータベース・レコードに対する1つまたは複数の変更を、「暗黙コミット」グループまたは「ソフト・コミット」グループとして指定することができる。「暗黙コミット」指定は、グループのすべての変更がアトミックにされる点で「明示コミット」に似るが、明示コミットと異なって、暗黙コミットは、延期することができる(必ずしも即座にジャーナルに書き込まれない)。好ましい実施形態では、変更を「暗黙コミット」と指定できる少なくとも2つの理由があるが、アプリケーションに応じて、「暗黙コミット」技法を使用する他の理由が存在する場合があることを理解されたい。データベース変更を、明示コミット・グループまたは暗黙コミット・グループの一部にする必要はない、すなわち、データベースに対する分離された書込にすることができる。
【0029】
暗黙コミットを使用する主な理由は、参照保全すなわち、データベース内の異なるフィールドに対するある変更が、互いに関連し、変更の一方が永久的データベースの一部にされるが他方がそうでない場合に、データベース内のデータが、破壊されることである。このタイプの参照保全の例を、図6に示す。参照保全状態に、複数の表で参照される特定の項目の識別番号が含まれる場合がある。特定の項目がマスタ項目表(たとえば親表601)から削除される時に、データベース表の間の参照保全を維持するために、その項目が他の表602および603から自動的に削除されるように、制約をセット・アップすることができる。結果の削除が、別の表での削除を引き起こすことが可能であり、複数の動作がもたらされる。これらの動作は、動作の組を、それらが部分的にのみコミットされた場合にロール・バックできるようにするために、暗黙コミット・サイクルの下で実行される。これによって、データベースの保全性を保証するために、削除の組を原子的に行うことが可能になる。
【0030】
暗黙コミットを使用する追加の理由は、「SQL[構造化照会言語]原子性」と称する、変更が、多数の異なるレコードに対する処置を必要とする複雑な照会関数の結果である可能性があることである。その例が、データベース内の5000行に影響するが、そのうちの50行だけが処理が終了した時に完了している、セット削除動作である。この場合に、データは、変更の一部を行い、それ以外を行わないことによって必ず破壊されるのではなく、特定のグローバル変更が行われたと信じるユーザの代わりに混乱がある可能性がある。ライト・アヘッド・ジャーナリングと提携する暗黙コミットによって提供される原子性によって、この危険性が除去される。
【0031】
ステップ306および307(下で説明する)とほぼ並行に、ある変更によって、任意選択として、1つまたは複数のデータベース索引203および204も暫定的に更新される場合がある(ステップ305)。索引は、メイン・メモリ内で更新されるが、索引更新は、必ずしもジャーナル・ディスク111への書込のためにジャーナル・バッファに追加されない。索引が、データベース自体から導出されるかコンパイルされるデータを表すことが観察される。データベース・レコード(索引を除く)の保全性が維持される限り、必ず索引を導出することが可能であり、したがって、索引更新のジャーナリングは、必要ではない。しかし、すべての索引の導出は、かなりの時間を要する可能性があり、米国特許第5574897号および米国特許第5625820号に記載されているように、いくつかの状況で、システム障害からの回復に必要な時間を減らすために、索引更新をジャーナリングすることが望ましい場合がある。同一の理由から、ステップ305の正確なタイミングは、必ずしもクリティカルではなく、図3に示された他の動作の前、後、またはそれらと並行に実行することができる。
【0032】
その後、変更が、揮発性メモリ内のジャーナル・バッファ206および207の1つに追加される(ステップ306)。変更項目は、それらが最終的にジャーナル・ディスク111に書き込まれるのと同一のフォーマットで、これらのジャーナル・バッファに順次書き込まれる。実際には、ジャーナル・バッファ206および207は、通常は、交代する形で使用される、すなわち、連続的な変更が、バッファを空にさせるイベントが発生するまでバッファの1つに書き込まれ、そのイベントの後に、すべての変更が他方のバッファに書き込まれる。3つ以上のバッファを割り振り、たとえば、ラウンド・ロビン式にそれらに書き込むことが可能である。環状バッファなど、単一のバッファだけを割り振ることも可能である。
【0033】
ほぼ同時に、変更が、メモリ102内のデータベース202に対して行われる(ステップ307)。好ましい実施形態では、変更が、メイン・メモリ内のデータベースに対して行われる前に、ジャーナル・バッファに記録される。しかし、このメイン・メモリ変更シーケンスは、必ずしもデータベース保全性に必要ではない。どの場合にも、ジャーナル・バッファへの変更レコードの追加およびデータベース202内のレコードへの変更の追加の両方が、メモリ102への書込を伴い、比較的すばやく行われる。
【0034】
メイン・メモリ更新の少し後に、変更項目が、ジャーナル・バッファ206および207からジャーナル・ディスク111に書き込まれる(ステップ308)。この書込が開始される前にかなりのタイム・ラグがある場合があり、あるいは、ジャーナル・ストレージへの書込が、ほぼ即座に開始される場合がある(ディスク・ストレージへの物理的な書込は、CPUサイクル・タイムの観点からは比較的長い動作であり、したがって、ジャーナル書込の完了の前に多少タイム・ラグがあるが)。このタイム・ラグは、多くの要因に依存して変化する可能性があるが、そのタイム・ラグの判定を、本明細書でより詳細に説明する。ジャーナル書込動作の完了の後に、ジャーナル・バッファが再利用され、ジャーナル・バッファ内の変更レコードが、最終的に、関連しない変更データと共に書き込まれる。
【0035】
ジャーナル・ディスク111への書込の完了の後に、データベース202内の変更が、データ・ストレージ112から115の対応するアドレスに書き出される(ステップ309)。やはり、さまざまな要因に依存して、この書込が開始される前にかなりのタイム・ラグが生じる場合がある。しばしば、データベース・レコードは、さまざまな周知のページング方式のどれかを使用してページ・アウトされるまで、メイン・メモリにとどまる。レコードが、頻繁にアクセスされるメモリ・ページ内にある場合には、そのレコードは、ディスク・ストレージに書き込まれずに非常に長い時間にわたってメイン・メモリにとどまる可能性がある。この場合に、レコードに対する変更が、同一レコードへの後続の変更によって上書きされることもめずらしくない。レコードをディスク・ストレージに書き込んだ後に、そのレコードが、メイン・メモリから削除される(通常は、レコードを含むページのページ・アウトと、ストレージの異なるページによるメモリの上書きの結果として)。
【0036】
データ保全性のために、変更がジャーナル・ディスク111に書き出されるまでは、データベース・レコードをデータ・ストレージ112から115に書き出すことができない。変更が、メイン・メモリ内でデータベース202のレコード(行)に対して行われる(ステップ307で)時に、その行が、ディスク・ストレージへの書込(ページ・アウト)を一時的に妨げるために、「固定」される。変更の対応するジャーナル項目がジャーナル・ディスクに書き込まれた(ステップ308で)後に、その行が「固定解除」され、その後にページ・アウトできるようになる。行の固定解除は、必ずしもその行を含むページの即座のページ・アウトを引き起こさず、ページ・アウトに対する一時的保持を解放するだけである。
【0037】
図3が、通常のデータベース・トランザクションに含まれるある種の有効なイベントのシーケンスの単純化された図として意図され、他の処理(図3に示されていない)も発生することを理解されたい。データベース・トランザクションは、データベースおよび他のソースからのデータを処理するより大きいユーザ・アプリケーションの一部とすることができ、データベースに対する変更が、アプリケーションの機能の派生的な部分にすぎない場合がある。さらに、ある種の記帳アクティビティが、メモリ、ジャーナル・ストレージ、および一般ディスク・ストレージへの書込が正しいシーケンスで行われることと、状態変数が維持され、この状態変数から、変更が一般ディスク・ストレージに書き込まれる前のシステム障害の場合にジャーナル・ストレージからデータベース内容を回復することが可能になることとを保証するために行われる。
【0038】
上で説明したように、ジャーナル書込(ステップ308)のタイミングは、さまざまな要因に依存する可能性があるが、ジャーナル書込は、必ず一般ディスク・ストレージへのデータベース・レコードの書込(ステップ309)に先行すると言うことができる。ジャーナル・バッファ206および207は、ジャーナル・ディスク111への物理的書込を保留されているジャーナル書込項目を累積するために存在する。ジャーナル・マネージャ機能215は、ジャーナル・ディスク111への書込のタイミングを管理する。一般に、ジャーナル・マネージャは、ある条件が満たされるまで書込データをバッファに蓄積できるようにし、条件が満たされた時点で、ジャーナル・ディスクに書き込むことによってバッファが空にされる。
【0039】
図4は、ジャーナル・マネージャ機能の動作を示す高水準流れ図である。上で図3に関して説明したように、データベースに対する変更は、ユーザ・アプリケーションまたはデータベース・マネージャによって生成される時に、ジャーナル・バッファに書き込まれる。ジャーナル・バッファの一方が、現在アクティブなバッファであり、すべての現在の変更を受け取る。各個々の変更項目は、現在アクティブなバッファの末尾に付加され(ステップ401)、バッファ・ポインタが、次の変更項目が書き込まれるバッファ位置を指すように増分される(ステップ402)。
【0040】
変更項目が、コンピュータ・システム100で実行されるタスクによって生成された順序でバッファに付加されることに留意されたい。複数のタスクが、データベースに対する変更を同時に行うことができるので、特定のユーザによってまたは特定のコミット・グループ(明示コミットであれ暗黙コミットであれ)から行われたすべての変更が、バッファに連続して書き込まれるという保証はない。実際に、単一のユーザによって生成された複数の変更が、非常にしばしば、他のユーザの変更項目とインターリーブされる。すべての個々の変更項目が、バッファを空にさせる可能性があるので、単一のユーザによってまたは特定のコミット・グループから生成されたすべての変更項目が、バッファ内で一緒になり、同一の書込動作でジャーナル・ディスクに書き込まれるという保証もないことになる。たとえば、ユーザAが、バッファに書き込まれるコミット・グループの一部としていくつかの変更を生成するが、Aがコミット・グループのすべの変更の生成を完了する前に、ユーザBが、バッファを空にさせる変更項目を生成し、ユーザAの変更項目の残りが、ユーザAの早期の変更がすでにジャーナル・ディスクに書き込まれた後にバッファに書き込まれることが、頻繁に発生する。
【0041】
変更項目を付加した後に、現在アクティブなバッファが満杯である場合には、ステップ403からの「Y」分岐に進む。各バッファが、最大サイズ限界を有する。好ましい実施形態では、この最大サイズが、約128Kバイトであり、これは、ディスク・ストレージ・デバイスの単一トラックの1回転ごとに書き込まれるデータの量にほぼ対応するサイズであるが、最大サイズを変更できることを理解されたい。したがって、最大サイズは、効率的なジャーナル書込動作に対応するように選択されることが好ましい。バッファがこのサイズに達した場合に、バッファを空にする前にバッファ・サイズをさらに増やすことは、必ずしも感知できる性能改善をもたらさず、したがって、バッファ内のあるトランザクションをコミットし、メイン・メモリのページを解放するためには、バッファを空にしなければならない(ジャーナル・ディスクに書き込む)。
【0042】
バッファが満杯でない(ステップ403からの「N」分岐)が、最も最近に付加された変更項目が、ユーザによって「明示コミット」グループとして指定された変更のグループの最後の変更項目である場合には、ステップ404からの「Y」分岐に進む。この場合には、ユーザの明示コミット指定に従うために、追加の変更でバッファが満たされるのを待たずに、バッファを即座に空にしなければならない。バッファを空にすることによって、明示コミット・グループの以前に付加された変更項目のすべてが、まだジャーナルに書き込まれていない場合にジャーナルに書き込まれる。
【0043】
最も最近に付加された変更項目が、明示コミット・グループの最後の変更項目でない場合には、ジャーナル・マネージャは、それが暗黙コミット・グループの最後の変更項目であるかどうかを検討する。そうでない場合には、ステップ405からの「N」分岐に進み、ジャーナル・マネージャは、ステップ401で、次の変更項目がジャーナル・バッファに追加されるのを待つ。変更項目が、暗黙コミット・グループの最後の変更である場合には、ステップ405からの「Y」分岐に進む。この場合には、ジャーナル・マネージャは、追加の動的要因を検討して、バッファを空にするか否かを決定する。3つの追加の動的要因の検討が、図4ではステップ406として示されており、下で説明する図5に詳細に示されている。ステップ406での追加要因の判定が否定である場合には、ジャーナル・マネージャは、ステップ401で次の変更項目がジャーナルに追加されるのを待つ。判定が肯定である場合には、ジャーナル・マネージャは、ステップ410でバッファを空にする。
【0044】
バッファを空にすることにトリガをかけるさまざまな条件のどれかが存在する場合に、ジャーナル・マネージャは、ジャーナル・ディスクに書込コマンドを発行し、メモリ内のアクティブ・ジャーナル・バッファの内容全体のジャーナル・ディスク111への直接メモリ転送動作を引き起こす(ステップ410)。ジャーナル・マネージャは、アクティブ・ジャーナル・バッファの指定も変更する(ステップ411)。異なる数のバッファが可能であるが、2つのジャーナル・バッファが交代する形で使用されることが好ましい。ジャーナル・マネージャは、その後、ステップ401で次の変更項目がアクティブ・バッファに追加されるのを待つが、このアクティブ・バッファは、空にされたばかりのバッファでないバッファである。
【0045】
ジャーナル・ディスク111への物理的な書込(ステップ410の実行時に開始される)が、ある時間を要し、その間に、新しいデータベース変更項目が、新しいアクティブ・バッファに書き込まれることに留意されたい。ジャーナル・ディスクへの物理的な書込が完了した後に、メイン・メモリ内のデータベース202の対応するデータベース行が、「固定解除」され、ディスク・ストレージへの書込の適格性が示される。
【0046】
図5は、暗黙コミット・グループの最後の変更項目がバッファに付加された時にバッファを空にするかどうかの、ジャーナル・マネージャによって行われる判定を詳細に示す流れ図である。この判定は、ある動的判断基準すなわち、動的に変化するシステム状態変数に基づく。具体的に言うと、この判定では、推定回復時間ならびにジャーナル・ディスクへの書込アクティビティの現在のレベルを考慮に入れる。
【0047】
ジャーナル・マネージャは、まず、暗黙コミット・グループの最初の変更項目が、現在、そのグループの最後の変更項目と同一のジャーナル・バッファ・ブロックにあるかどうかを判定する(ステップ501)。そうである場合には、ジャーナル・バッファが最終的に空にされる時に、必ず、暗黙コミット・グループのすべての変更項目が、同一の書込コマンドでジャーナル・ディスクに書き込まれる。この場合には、トランザクションをジャーナル・ディスクに即座にコミットしないことが経過IPL回復時間持続時間に及ぼす影響が、小さい可能性が高く、バッファは、空にされない(「Y」分岐に進む)。最初の変更項目が異なるバッファ・ブロックにある場合には、この暗黙トランザクションからの変更項目の少なくとも一部が、おそらくは既にジャーナル・ディスク上にある。この事実は、回復時間露出を示す。すなわち、この暗黙コミット・グループの最後の変更項目をジャーナル・ディスクに書き込むことができる前に、システム障害が発生する場合に、このグループのいくつかの項目が、ジャーナル・ディスクに書き込まれているが、それ以外の項目が書き込まれていない状態になる。書き込まれていない項目が、失われることになる。したがって、暗黙コミット・グループの原子性を保つためには、障害からの回復時に、ジャーナルに前に書き込まれたデータをデータベースから「バック・アウト」して、暗黙コミット・グループのすべての変更項目を見つけ、暗黙コミット・グループによって行われた変更が一切ない状態にデータベースを復元することが必要になる。この暗黙コミット・グループに関連する最初のジャーナル項目と、同一グループの最後のジャーナル項目の間の距離のスパンが大きい場合には、この処理が、回復時にかなりの時間を要する可能性がある。したがって、ジャーナル・マネージャは、「N」分岐に進んで、回復時間露出を減らすためにバッファを即座に空にするかどうかを検討する。
【0048】
ステップ501からの「N」分岐に進む場合に、ジャーナル・マネージャは、回復時間増分関数を呼び出して、暗黙コミット・グループの変更項目によって表されるトランザクションの追加を伴うシステム全体の総回復時間を推定する(ステップ502)。Inc_Recovery_Time関数には、システム初期化時間並列サーバ・タスク(使用可能なプロセッサごとに1つ)のそれぞれが、部分的に完了した(部分的にジャーナルに書き込まれた)暗黙コミット・トランザクションのコミット・バックアウト回復を実行するのに要する推定時間を表す「バケット」の組に保管された推定値を更新することが含まれる。そのような回復中に、現在の暗黙コミット・トランザクションの一部であるジャーナル項目のすべてが、ジャーナル・ディスクから走査される。これを行うために、システムは、「前」のイメージを表すジャーナル項目をリンクするバックチェーン・ポインタをたどる。これらの項目は、ジャーナル・ディスク内のランダムな位置にあるので、そのような項目のそれぞれについて1回のディスク・アクセスが必要であると仮定する。したがって、現在の暗黙コミット・トランザクションからバック・アウトするのに必要な総時間は、次式によって推定される。
Num_entries×Avg_Jnl_IO_Time
ここで、Num_entriesは、このトランザクションの項目数(トランザクションに関連するコミット・ブロック・データ構造のフィールドに保管される)であり、Avg_Jnl_IO_Timeは、ジャーナル・ディスクでの入出力(ディスク読取)動作の平均時間である。実際の回復時間には、構造化データベース内のレコードに対する変更を元に戻す時間も含まれるが、一般に、この時間よりも、逆方向ジャーナル走査に必要な時間が重要であると仮定する。
【0049】
システム全体の回復時間を計算する時に、バッファを空にさせなかった他の未解決の暗黙コミット・トランザクションを検討することも必要になる。類似する計算が、これらのトランザクションのそれぞれについて使用される。これらのトランザクションは、システム初期化時に異なる初期化サーバ・タスクによって並列に回復される可能性があるので、バケットの組を作成して、各タスクの回復時間を維持する。未解決のトランザクションは、さまざまなバケットに連続して割り振られ、各連続するトランザクションが、現在最小の総回復時間を含むバケットに割り振られる。完了時に、推定されるシステム全体の回復時間は、その構成要素の最大の総回復時間を有するバケットの回復時間である。
【0050】
図7に、このバケット割振処理の例を示す。図7の例では、3つのバケット701から703(初期化時の3つの並列CPUタスクに対応する)がある。Inc_Recovery_Timeが呼び出された時に、さまざまなバケットに割り振られたトランザクションの総回復時間は、それぞれ280、255、および262秒であり、これは、総システム回復時間が、最大のバケットの推定時間に対応する280秒と考えられることを意味する。それぞれ8、3、12、42、6、5、15、および3秒の回復時間を有する8つの追加のトランザクションが、バケットに割り振られる。8秒の回復時間を有する最初のトランザクションが、最低の総回復時間を有するバケットすなわち、255秒の回復時間を有するバケット702に割り振られ、その総計が263秒になる。ここで、最低の総回復時間は、バケット703(262秒)になり、したがって、3秒の回復時間を有する2番目のトランザクションは、バケット703に割り振られる。この処理が継続され、3番目のトランザクション(12秒)がバケット702に、4番目(42秒)がバケット703に、5番目(6秒)がバケット702に、6番目(5秒)がバケット701に、7番目(15秒)がバケット702に、8番目(3秒)がバケット701に追加される。バケット総計は、この割振りの終りに、それぞれ288、296、および307秒になる。したがって、総回復時間は、最長のバケットの時間である307秒と考えられる。この割振り方式は、必ずしも完全に平衡ではないが、単純であり、リソースの近似平衡を達成することが観察される。
【0051】
更新されたシステム全体の総回復時間が、ある所定の閾値未満である場合に、ステップ503から「Y」分岐に進み、バッファを空にしない。この場合には、回復時間露出が、バッファを空にすることを正当化するには短すぎると考えられる。好ましい実施形態では、閾値が、10分の固定された時間枠であるが、異なる期間を使用することができ、閾値を、システム管理者によって指定される変数にすることができる。システム全体の総回復時間が閾値を越える場合には、バッファを空にすることが望ましい可能性があり、したがって、ステップ503からの「N」分岐に進む。
【0052】
その後、ジャーナル・マネージャは、ジャーナル・ディスク作業負荷の計算を行う(ステップ504)。好ましい実施形態では、ジャーナル・ディスク作業負荷が、下記の比として計算される。
Avg_Jrn_IO/Spec_Jrn_IO
ここで、Avg_Jrn_IOは、ジャーナル項目を含むディスク(ジャーナル・ディスク111)の毎秒のディスク入出力動作の平均値であり、最後の測定以降に発生した入出力動作の数を最後の測定以降の時間で割ることによって計算され、Spec_Jrn_IOは、ジャーナル項目を含むディスクの仕様ディスク帯域幅すなわち、ディスク仕様に従って処理することができる毎秒の入出力動作の数である。
【0053】
ステップ504で計算された比が、事前に指定された限度(80%であることが好ましい)より大きい場合には、ステップ505の「Y」分岐に進み、バッファを空にしない。この場合には、ジャーナル・ディスクが、現在、最も重要な作業のサービスで非常に忙しい。まだ満杯でないバッファを空にすることが、性能に悪影響を及ぼす可能性がある。この比が80%未満の場合には、ステップ505の「N」分岐に進んで、バッファを空にする。
【0054】
ステップ505から「N」分岐に進む(バッファを空にする)場合には、ジャーナル・マネージャは、回復時間減分関数を呼び出してシステム全体の回復時間を減分し、その結果、未解決の暗黙コミット・グループ(および、現在アクティブなバッファを空にすることによって最終的にジャーナルにコミットされる他の未解決のグループのすべて)の一部であった変更が、もはや推定回復時間の一部とみなされないようにする(ステップ506)。
【0055】
上の、システム全体の回復時間の推定値を増分する手順を参照すると、この推定値は、まず、現在アクティブなジャーナル・バッファ・ブロックを空にすることによって完了する暗黙コミット・トランザクションを各バケットから除去することによって減分される。これによって、バケットが、非平衡になる。バケットの平衡を取り直すために、一から回復時間を再割り振りすることが可能である。しかし、好ましい実施形態では、より単純でより高速な手順が使用される。最大の回復時間を含むバケットから開始して、最小の回復時間を有する(宛先)バケットが、転送の後に転送前のこの(ドナー)バケットの回復時間より短い総回復時間を有する場合に、ドナー・パケットから宛先パケットへ、最小のトランザクション時間を転送する。この処理を、転送の条件が満足されなくなるまで繰り返す。新しいシステム全体の回復時間は、最大の総回復時間を有するバケットの総回復時間である。
【0056】
ジャーナル・バッファを空にすることに選択的にトリガをかけるための、上で説明したアルゴリズムは、バッファに到着するジャーナル項目の持続速度が比較的高い環境に対処することが意図されている。データベース更新アクティビティのレベルが非常に低い環境では、ジャーナル・バッファ・ブロックを満たすのに長時間を要する可能性があり、したがって、いくつかの項目が、ユーザ・アプリケーションによって生成された後に、ジャーナル・ディスクに長時間コミットされないままになることが可能である。この低アクティビティ環境に対処し、バッファ内容が過度に古くならないことを保証するために、ジャーナル・マネージャに、周期的に覚醒し、スイープ・タスクが前に実行されて以来フラッシュされていないバッファの内容をフラッシュするスイープ・タスクが含まれることが好ましい。代替のアルゴリズムまたは技法を使用して、同一の目的を達成できることを諒解されたい。
【0057】
ジャーナル・バッファを空にする時を判定するために動的要因を使用することに関して上で説明したステップおよび式において、多数の変形形態が可能であることを理解されたい。好ましい実施形態では、システムのアクティビティが、指定された容量に対する実際のジャーナル入出力の比として測定されるが、異なるパラメータまたは式あるいはその両方を、その代わりに使用することができる。たとえば、その代わりに、ジャーナル・ディスクに対する保留中の入出力動作のバックログまたはキューの長さを測定することができ、「固定された」データベース・ページによって消費されるメイン・メモリの総量を考慮に入れることを選択することができる。同様に、好ましい実施形態では、総システム回復時間の推定を、初期閾値照会としてバケットを使用して行うことができる。しかし、総システム回復時間の推定を必要としない異なる判定を行うことができる。たとえば、現在の暗黙コミット・トランザクションに適用可能な回復時間を推定することができ、あるいは、現在の暗黙コミット・トランザクションのジャーナル項目の数(一般に、回復時間の直接の測定値ではないが、回復時間に関連する)を閾値として使用することができる。さらに、総システム回復時間またはトランザクションのあるサブセットに適用可能な回復時間のいずれかを推定するか、何らかの形で回復時間に関連する他のパラメータを使用する、多数の代替方法を使用することができる。最後に、これらの要因を比較する形を変更することができる。たとえば、回復時間を固定された閾値と順次比較し、その後にディスク入出力を固定された閾値と比較するのではなく、これらの要因の両方あるいは他の要因または追加の要因を、バッファを空にすることの望ましさの単一の定量的測定値をもたらす数学的評価関数に含めることができる。
【0058】
一般に、本発明の説明された実施形態を実施するために実行されるルーチンは、オペレーティング・システムの一部として、あるいは特定のアプリケーション、プログラム、オブジェクト、モジュール、または命令のシーケンスのどれとして実施されるものでも、本明細書では「コンピュータ・プログラム」または単に「プログラム」と称する。コンピュータ・プログラムには、通常は、命令が含まれ、この命令は、本発明との整合性を有するコンピュータ・システムのデバイスまたはシステム内の1つまたは複数のプロセッサによって読み取られ、実行される時に、これらのデバイスまたはシステムに、本発明のさまざまな態様を実施するステップを実行するかそれを実施する要素を生成するのに必要なステップを実行させる。さらに、本発明を、完全に機能するコンピュータ・システムに関して説明したが、本発明のさまざまな実施形態は、さまざまな形でプログラム製品として配布することができ、本発明は、配布を実際に実行するのに使用される信号担持媒体の特定のタイプに無関係に同等に適用される。信号担持媒体の例には、揮発性および不揮発性のメモリ・デバイス、フロッピ・ディスク、ハード・ディスク、CD−ROM、DVD、磁気テープなどの記録可能型媒体と、無線通信リンクを含むディジタルおよびアナログの通信リンクなどの伝送型媒体が含まれるが、これに制限はされない。信号担持媒体の例が、図1に、メモリ102、ジャーナル・ディスク111、およびデータ・ストレージ112から115として示されている。
【0059】
上の説明で、ジャーナリングの対称であるデータを、構造化「データベース」内で維持されるものとして説明した。この用語の使用は、データの特性または構造に対する制限を暗示することを意図されたものではなく、本発明は、データを「データベース」と称するか否かにかかわりなく、すべての形のデータに適用することができる。
【0060】
上で説明した好ましい実施形態では、コンピュータ・システムが、IBM AS/400アーキテクチャまたはI/Seriesアーキテクチャを使用する。上で説明したある実施形態の詳細が、このアーキテクチャに固有であることと、本発明によるデータベース管理機構を、異なるアーキテクチャ上で実施することができ、ある実施形態の詳細を変更できることを理解されたい。
【0061】
現在最も実用的で好ましい実施形態とみなされるものに関して本発明を説明したが、本発明が、開示された実施形態に制限されるのではなく、請求項の趣旨および範囲に含まれるさまざまな修正形態および同等の配置を含むことが意図されていることを理解されたい。
【0062】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0063】
(1)コンピュータ・システムでデータを管理する方法であって、
データ変更をジャーナル・バッファに入力するステップであって、前記ジャーナル・バッファが、前記コンピュータ・システムの揮発性メモリ内である、ステップと、
前記ジャーナル・バッファの内容を不揮発性ジャーナル・ストレージに書き込むかどうかを選択的に判定するステップであって、前記選択的に判定するステップが、前記ジャーナル・バッファが最大容量まで充てんされていない時に前記ジャーナル・バッファの内容を前記ジャーナル・ストレージ・デバイスに書き込むかどうかを選択的に判定するために少なくとも1つの動的選択判断基準を使用する、ステップと、
前記選択的に判定するステップの結果に応答して前記ジャーナル・バッファの内容を前記不揮発性ジャーナル・ストレージ・デバイスに書き込むステップと
を含む方法。
(2)前記不揮発性ジャーナル・ストレージが、少なくとも1つの回転式磁気ハード・ディスク・ストレージ・デバイスを含む、上記(1)に記載のデータを管理する方法。
(3)前記少なくとも1つの動的選択判断基準が、前記コンピュータ・システムの少なくとも1つの構成要素の現在のアクティビティ・レベルの測定を含む、上記(1)に記載のデータを管理する方法。
(4)前記少なくとも1つの動的選択判断基準が、前記不揮発性ジャーナル・ストレージの現在のアクティビティ・レベルの測定を含む、上記(3)に記載のデータを管理する方法。
(5)前記少なくとも1つの動的選択判断基準が、不完全なジャーナル・トランザクションを回復する時間の推定を含む、上記(1)に記載のデータを管理する方法。
(6)不完全なジャーナル・トランザクションを回復する時間の前記推定が、バケットごとにそれぞれの回復時間を判定するために、平衡化アルゴリズムに従って、回復タスクに対応する複数のバケットに不完全なジャーナル・トランザクションを割り振るステップと、前記複数のバケットのうちで最大の回復時間を有する個々のバケットの回復時間として前記コンピュータ・システムの回復の時間を推定するステップとを含む、上記(5)に記載のデータを管理する方法。
(7)前記選択的に判定するステップが、
複数のコミット・トランザクションを識別するステップであって、各コミット・トランザクションが、前記ジャーナル・バッファに入力される前記データ変更のそれぞれの別個の組を含む、ステップと、
複数のコミット・トランザクションのそれぞれの最後のデータ変更を識別するステップと、
複数のコミット・トランザクションのそれぞれの最後のデータ変更を識別するステップに応答して、前記ジャーナル・バッファの内容を不揮発性ジャーナル・ストレージに書き込むかどうかの前記選択的判定にトリガをかけるステップと
を含む、上記(1)に記載のデータを管理する方法。
(8)前記コミット・トランザクションの一部が、ユーザによってコミット・トランザクションとして明示的に識別され、前記コミット・トランザクションの一部が、前記コンピュータ・システムで実行される管理機能によってコミット・トランザクションとして暗黙のうちに識別され、前記ジャーナル・バッファの内容を不揮発性ジャーナル・ストレージに書き込むかどうかの前記選択的判定にトリガをかける前記ステップが、暗黙のうちに識別されたコミット・トランザクションのそれぞれの最後のデータ変更を識別するステップに応答して実行される、上記(7)に記載のデータを管理する方法。
(9)コンピュータ・システムでデータを管理するプログラム製品であって、前記プログラム製品が、信号担持媒体に記録された複数のプロセッサ実行可能命令を含み、前記命令が、前記コンピュータ・システムの少なくとも1つの中央プロセッサによって実行される時に、前記システムに、
データ変更をジャーナル・バッファに入力するステップであって、前記ジャーナル・バッファが、前記コンピュータ・システムの揮発性メモリ内である、ステップと、
前記ジャーナル・バッファの内容を不揮発性ジャーナル・ストレージに書き込むかどうかを選択的に判定するステップであって、前記選択的に判定するステップが、前記ジャーナル・バッファが最大容量まで充てんされていない時に前記ジャーナル・バッファの内容を前記ジャーナル・ストレージ・デバイスに書き込むかどうかを選択的に判定するために少なくとも1つの動的選択判断基準を使用する、ステップと、
前記選択的に判定するステップの結果に応答して前記ジャーナル・バッファの内容を前記不揮発性ジャーナル・ストレージ・デバイスに書き込むステップと
を実行させる、プログラム製品。
(10)前記不揮発性ジャーナル・ストレージが、少なくとも1つの回転式磁気ハード・ディスク・ストレージ・デバイスを含む、上記(9)に記載のプログラム製品。
(11)前記少なくとも1つの動的選択判断基準が、前記コンピュータ・システムの少なくとも1つの構成要素の現在のアクティビティ・レベルの測定を含む、上記(9)に記載のプログラム製品。
(12)前記少なくとも1つの動的選択判断基準が、前記不揮発性ジャーナル・ストレージの現在のアクティビティ・レベルの測定を含む、上記(11)に記載のプログラム製品。
(13)前記少なくとも1つの動的選択判断基準が、不完全なジャーナル・トランザクションを回復する時間の推定を含む、上記(9)に記載のプログラム製品。
(14)不完全なジャーナル・トランザクションを回復する時間の前記推定が、バケットごとにそれぞれの回復時間を判定するために、平衡化アルゴリズムに従って、回復タスクに対応する複数のバケットに不完全なジャーナル・トランザクションを割り振るステップと、前記複数のバケットのうちで最大の回復時間を有する個々のバケットの回復時間として前記コンピュータ・システムの回復の時間を推定するステップとを含む、上記(13)に記載のプログラム製品。
(15)前記選択的に判定するステップが、
複数のコミット・トランザクションを識別するステップであって、各コミット・トランザクションが、前記ジャーナル・バッファに入力される前記データ変更のそれぞれの別個の組を含む、ステップと、
複数のコミット・トランザクションのそれぞれの最後のデータ変更を識別するステップと、
複数のコミット・トランザクションのそれぞれの最後のデータ変更を識別するステップに応答して、前記ジャーナル・バッファの内容を不揮発性ジャーナル・ストレージに書き込むかどうかの前記選択的判定にトリガをかけるステップと
を含む、上記(9)に記載のプログラム製品。
(16)前記コミット・トランザクションの一部が、ユーザによってコミット・トランザクションとして明示的に識別され、前記コミット・トランザクションの一部が、前記コンピュータ・システムで実行される管理機能によってコミット・トランザクションとして暗黙のうちに識別され、前記ジャーナル・バッファの内容を不揮発性ジャーナル・ストレージに書き込むかどうかの前記選択的判定にトリガをかける前記ステップが、暗黙のうちに識別されたコミット・トランザクションのそれぞれの最後のデータ変更を識別するステップに応答して実行される、上記(15)に記載のデータをプログラム製品。
(17)コンピュータ・システムであって、
少なくとも1つの処理ユニットと、
少なくとも1つの不揮発性データ・ストレージ・デバイスを含む不揮発性データ・ストレージであって、前記不揮発性データ・ストレージの一部が、ジャーナルとして使用される、不揮発性データ・ストレージと、
前記少なくとも1つの処理ユニットで実行可能な命令を保管し、前記不揮発性データ・ストレージに保管されたデータに対する変更を含むジャーナル・バッファを保管する、揮発性メモリと、
前記ジャーナル・バッファの内容を前記不揮発性データ・ストレージの前記ジャーナル部分に書き込むかどうかを選択的に判断するマネージャであって、前記マネージャが、前記ジャーナル・バッファが最大容量まで充てんされていない時に前記ジャーナル・バッファの内容を前記ジャーナルに書き込むかどうかを選択的に判定するのに少なくとも1つの動的選択判断基準を使用し、前記選択的な判定の結果に応答して、ジャーナル・バッファ内容を前記不揮発性データ・ストレージの前記ジャーナル部分に書き込ませる、マネージャと
を含む、コンピュータ・システム。
(18)前記不揮発性データ・ストレージが、複数の独立にアクセス可能なデータ・ストレージ・デバイスを含み、前記不揮発性データ・ストレージの前記ジャーナル部分が、前記複数の独立にアクセス可能なデータ・ストレージ・デバイスのサブセットである、上記(17)に記載のコンピュータ・システム。
【図面の簡単な説明】
【図1】本明細書に記載の発明の好ましい実施形態による、データベース動作をサポートするコンピュータ・システムの主要なハードウェア構成要素の高水準ブロック図である。
【図2】好ましい実施形態による、データベース動作をサポートするコンピュータ・システムのメイン・メモリに保管される主要なエンティティの概念図である。
【図3】好ましい実施形態による、データベースに対する変更を引き起こすデータベース・トランザクションを入力する一般化された処理を示す高水準流れ図である。
【図4】好ましい実施形態による、ジャーナル・ストレージへの書込に関するジャーナル・バッファの管理を示す高水準流れ図である。
【図5】好ましい実施形態による、ある種の動的考慮事項に基づいてジャーナル・バッファを空にするかどうかに関してジャーナル・マネージャによって行われる判定を詳細に示す流れ図である。
【図6】データベース更新時の参照保全問題の例を示す図である。
【図7】好ましい実施形態による、初期化時に総システム回復時間を推定するバケット割振処理の例を示す図である。
【符号の説明】
100 コンピュータ・システム
101 中央処理装置
102 メモリ
103 データ・ストレージ・インターフェース
104 端末インターフェース
105 入出力インターフェース
106 外部ネットワーク・インターフェース
110 内部通信バス
Claims (8)
- コンピュータ・システムでデータを管理する方法であって、
前記コンピュータ・システムの揮発性メモリ内にあるジャーナル・バッファにデータ変更を入力するステップと、
前記ジャーナル・バッファの内容を不揮発性ジャーナル・ストレージに書き込むかどうかを、その構成要素である複数のデータ変更の一部のみが前記不揮発性ジャーナル・ストレージに既に書き込まれている不完全な、前記ジャーナル・バッファに現在含まれるコミット処理すべきコミット・トランザクションについて、少なくとも前記不揮発性ジャーナル・ストレージを前記コミット・トランザクションが一切なかった状態に回復させるための回復時間を推定し当該回復時間が所定の許容時間内であるか否かを判断することにより、選択的に判定するステップと、
前記所定の許容時間内でないとの前記選択的に判定するステップの結果に応答して前記ジャーナル・バッファの内容を前記不揮発性ジャーナル・ストレージに書き込むステップと
を含む方法。 - 前記選択的に判定するステップが、平衡化アルゴリズムに従って、前記コンピュータ・システムの初期化時に並列に実行される複数の回復タスクにそれぞれ対応する各バケットに前記不完全なコミット・トランザクションの前記回復時間を割り振るステップと、前記複数のバケットのうちで最大の回復時間を有するバケットの回復時間として前記コンピュータ・システムの回復の時間を推定するステップとを含む、請求項1に記載のデータを管理する方法。
- 各々が前記ジャーナル・バッファに入力される前記データ変更の別個の組を含む、複数の前記コミット・トランザクションを識別するステップと、前記複数のコミット・トランザクションのそれぞれの最後の前記データ変更を識別するステップとを更に含み、前記選択的に判定するステップが、前記複数のコミット・トランザクションのそれぞれの前記最後のデータ変更を識別するステップに応答して実行される、請求項1に記載のデータを管理する方法。
- 前記コミット・トランザクションの一部が、ユーザによってコミット・トランザクションとして明示的に識別され、前記コミット・トランザクションの一部が、前記コンピュータ・システムで実行される管理機能によってコミット・トランザクションとして暗黙のうちに識別され、前記選択的に判定するステップは、暗黙のうちに識別された前記コミット・トランザクションのそれぞれの前記最後のデータ変更を識別するステップに応答して実行される、請求項3に記載のデータを管理する方法。
- コンピュータ・システムでデータを管理するコンピュータ・プログラムであって、前記コンピュータプログラムは前記コンピュータ・システムに、
前記コンピュータ・システムの揮発性メモリ内にあるジャーナル・バッファにデータ変更を入力するステップと、
前記ジャーナル・バッファの内容を不揮発性ジャーナル・ストレージに書き込むかどうかを、その構成要素である複数のデータ変更の一部のみが前記不揮発性ジャーナル・ストレージに既に書き込まれている不完全な、前記ジャーナル・バッファに現在含まれるコミット処理すべきコミット・トランザクションについて、少なくとも前記不揮発性ジャーナル・ストレージを前記コミット・トランザクションが一切なかった状態に回復させるための回復時間を推定し当該回復時間が所定の許容時間内であるか否かを判断することにより、選択的に判定するステップと、
前記所定の許容時間内でないとの前記選択的に判定するステップの結果に応答して前記ジャーナル・バッファの内容を前記不揮発性ジャーナル・ストレージに書き込むステップと
を実行させる、コンピュータ・プログラム。 - 各々が前記ジャーナル・バッファに入力される前記データ変更の別個の組を含む、コミット処理すべき複数のコミット・トランザクションを識別するステップと、前記複数のコミット・トランザクションのそれぞれの最後の前記データ変更を識別するステップとを更に前記コンピュータ・システムに実行させ、前記選択的に判定するステップが、前記複数のコミット・トランザクションのそれぞれの前記最後のデータ変更を識別するステップに応答して実行される、請求項5に記載のデータを管理するコンピュータ・プログラム。
- コンピュータ・システムであって、
少なくとも1つの処理ユニットと、
少なくとも1つの不揮発性データ・ストレージ・デバイスを含む不揮発性データ・ストレージであって、前記不揮発性データ・ストレージの一部が、ジャーナルとして使用される、不揮発性データ・ストレージと、
前記少なくとも1つの処理ユニットで実行可能な命令を保管し、前記不揮発性データ・ストレージに保管されたデータに対する変更を含むジャーナル・バッファを保管する、揮発性メモリと、
前記ジャーナル・バッファの内容を前記不揮発性データ・ストレージの前記ジャーナル部分に書き込むかどうかを、その構成要素である複数のデータ変更の一部のみが前記不揮発性ジャーナル・ストレージに既に書き込まれている不完全な、前記ジャーナル・バッファに現在含まれるコミット処理すべきコミット・トランザクションについて、少なくとも前記不揮発性ジャーナル・ストレージを前記コミット・トランザクションが一切なかった状態に回復させるための回復時間を推定し当該回復時間が所定の許容時間内であるか否かを判断することにより選択的に判断し、前記所定の許容時間内でないと判定した場合にジャーナル・バッファ内容を前記不揮発性データ・ストレージの前記ジャーナル部分に書き込ませるマネージャと
を含む、コンピュータ・システム。 - 前記不揮発性データ・ストレージが、複数の独立にアクセス可能なデータ・ストレージ・デバイスを含み、前記不揮発性データ・ストレージの前記ジャーナル部分が、前記複数の独立にアクセス可能なデータ・ストレージ・デバイスのサブセットである、請求項7に記載のコンピュータ・システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/164,200 US6947956B2 (en) | 2002-06-06 | 2002-06-06 | Method and apparatus for selective caching of transactions in a computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004062869A JP2004062869A (ja) | 2004-02-26 |
JP4028820B2 true JP4028820B2 (ja) | 2007-12-26 |
Family
ID=29710158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003154968A Expired - Fee Related JP4028820B2 (ja) | 2002-06-06 | 2003-05-30 | コンピュータ・システムでのトランザクションの選択的キャッシングの方法および装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US6947956B2 (ja) |
JP (1) | JP4028820B2 (ja) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3951835B2 (ja) * | 2002-07-03 | 2007-08-01 | 株式会社日立製作所 | 業務管理方法及び業務処理システム |
JP2004062781A (ja) * | 2002-07-31 | 2004-02-26 | Fujitsu Ltd | 情報管理装置 |
US7624112B2 (en) * | 2003-04-03 | 2009-11-24 | Oracle International Corporation | Asynchronously storing transaction information from memory to a persistent storage |
US7330858B1 (en) | 2003-06-30 | 2008-02-12 | Symantec Operating Corporation | Coordinated distributed logging in a multi-host environment |
US8234517B2 (en) * | 2003-08-01 | 2012-07-31 | Oracle International Corporation | Parallel recovery by non-failed nodes |
US7222117B1 (en) | 2003-11-14 | 2007-05-22 | Advent Software, Inc. | Segmented global area database |
US7606828B2 (en) * | 2003-11-18 | 2009-10-20 | Sap Ag | Delta-mechanism for integration of OLAP-based planning and reporting |
WO2005086001A1 (en) * | 2004-02-27 | 2005-09-15 | Incipient, Inc. | Distributed asynchronous ordered replication |
US7577805B2 (en) * | 2004-11-01 | 2009-08-18 | Hitachi, Ltd. | Using bandwidth and capacity parameters to control remote copy operations in storage systems |
US7752181B2 (en) * | 2004-11-08 | 2010-07-06 | Oracle International Corporation | System and method for performing a data uniqueness check in a sorted data set |
US7647362B1 (en) | 2005-11-29 | 2010-01-12 | Symantec Corporation | Content-based file versioning |
US7774313B1 (en) * | 2005-11-29 | 2010-08-10 | Symantec Corporation | Policy enforcement in continuous data protection backup systems |
US8205189B2 (en) * | 2006-07-13 | 2012-06-19 | Oracle International Corporation | Method and system for definition control in a data repository application |
JP4859605B2 (ja) * | 2006-09-20 | 2012-01-25 | 株式会社日立製作所 | 情報処理システム |
WO2008061919A2 (en) * | 2006-11-22 | 2008-05-29 | Agfa Healthcare Inc. | Method and system for remote collaboration |
US7787679B2 (en) * | 2006-11-22 | 2010-08-31 | Agfa Healthcare Inc. | Study navigation system and method |
WO2008061903A1 (en) * | 2006-11-22 | 2008-05-29 | Agfa Healthcate Inc. | Method and system for client / server distributed image processing |
US7921258B1 (en) | 2006-12-14 | 2011-04-05 | Microsoft Corporation | Nonvolatile disk cache for data security |
JP4432087B2 (ja) | 2006-12-26 | 2010-03-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベース更新管理システム、プログラムおよび方法 |
CN101815983A (zh) * | 2007-08-21 | 2010-08-25 | 汤姆森许可贸易公司 | 用于防止硬盘驱动文件系统的损坏的方法和系统 |
JP4598817B2 (ja) * | 2007-12-18 | 2010-12-15 | 株式会社日立製作所 | 計算機システム及びデータ消失回避方法 |
US8055630B2 (en) * | 2008-06-17 | 2011-11-08 | International Business Machines Corporation | Estimating recovery times for data assets |
US8458217B1 (en) | 2009-08-24 | 2013-06-04 | Advent Software, Inc. | Instantly built information space (IBIS) |
JP5380542B2 (ja) * | 2009-09-17 | 2014-01-08 | 株式会社東芝 | 管理装置 |
JP5404798B2 (ja) | 2009-09-21 | 2014-02-05 | 株式会社東芝 | 仮想記憶管理装置及び記憶管理装置 |
US8510334B2 (en) | 2009-11-05 | 2013-08-13 | Oracle International Corporation | Lock manager on disk |
EP2534568A1 (en) * | 2010-02-09 | 2012-12-19 | Telefonaktiebolaget LM Ericsson (publ) | Data storage method |
US8732342B1 (en) | 2011-03-31 | 2014-05-20 | Emc Corporation | I/O scheduling system and method |
US11086850B2 (en) * | 2011-04-13 | 2021-08-10 | International Business Machines Corporation | Persisting of a low latency in-memory database |
US8769350B1 (en) | 2011-09-20 | 2014-07-01 | Advent Software, Inc. | Multi-writer in-memory non-copying database (MIND) system and method |
US9092475B2 (en) * | 2011-11-07 | 2015-07-28 | Sap Se | Database log parallelization |
US8332349B1 (en) | 2012-01-06 | 2012-12-11 | Advent Software, Inc. | Asynchronous acid event-driven data processing using audit trail tools for transaction systems |
JP2013200601A (ja) * | 2012-03-23 | 2013-10-03 | Nec Corp | データベースシステム、データベースシステムにおけるコミット方法、及びプログラム |
US8886671B1 (en) | 2013-08-14 | 2014-11-11 | Advent Software, Inc. | Multi-tenant in-memory database (MUTED) system and method |
US9928259B2 (en) | 2015-04-21 | 2018-03-27 | International Business Machines Corporation | Deleted database record reuse |
US10585124B1 (en) | 2015-05-19 | 2020-03-10 | CSC Holdings, LLC | Power outage detection |
KR101686340B1 (ko) * | 2015-08-06 | 2016-12-29 | 성균관대학교산학협력단 | 대용량 스토리지 장치를 위한 효율적인 비휘발성 캐시 부하 관리 방법 |
US10331657B1 (en) | 2015-09-28 | 2019-06-25 | Amazon Technologies, Inc. | Contention analysis for journal-based databases |
US10133767B1 (en) | 2015-09-28 | 2018-11-20 | Amazon Technologies, Inc. | Materialization strategies in journal-based databases |
US10198346B1 (en) * | 2015-09-28 | 2019-02-05 | Amazon Technologies, Inc. | Test framework for applications using journal-based databases |
US10140190B1 (en) * | 2016-03-29 | 2018-11-27 | EMC IP Holding Company LLC | Efficient transaction log flushing |
US10198394B2 (en) * | 2016-05-24 | 2019-02-05 | Intel Corporation | Reduced pin count interface |
CN108572970B (zh) * | 2017-03-09 | 2022-07-08 | 腾讯科技(深圳)有限公司 | 一种结构化数据的处理方法和分布式处理系统 |
US10922307B2 (en) | 2017-12-11 | 2021-02-16 | NextWorld, LLC | Automated transaction engine |
CN109522315B (zh) * | 2018-10-26 | 2021-10-22 | 苏宁易购集团股份有限公司 | 一种数据库处理方法及系统 |
CN111694703B (zh) * | 2019-03-13 | 2023-05-02 | 阿里云计算有限公司 | 缓存区管理方法、装置和计算机设备 |
CN112148222B (zh) * | 2020-09-21 | 2023-08-25 | 浙江大华技术股份有限公司 | 数据库硬盘的配置方法、装置、存储介质及电子装置 |
US20230205759A1 (en) * | 2021-12-28 | 2023-06-29 | Vast Data Ltd. | Managing a transaction isolation |
US12019620B2 (en) | 2022-01-27 | 2024-06-25 | Hewlett Packard Enterprise Development Lp | Journal groups for metadata housekeeping operation |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1505603A (en) * | 1976-07-07 | 1978-03-30 | Ibm | Data processing systems |
US4228501A (en) * | 1978-06-21 | 1980-10-14 | Data General Corporation | Data transfer technique for use with peripheral storage devices |
US4425615A (en) * | 1980-11-14 | 1984-01-10 | Sperry Corporation | Hierarchical memory system having cache/disk subsystem with command queues for plural disks |
US4507751A (en) * | 1982-06-21 | 1985-03-26 | International Business Machines Corporation | Method and apparatus for logging journal data using a log write ahead data set |
US4860193A (en) * | 1986-05-22 | 1989-08-22 | International Business Machines Corporation | System for efficiently transferring data between a high speed channel and a low speed I/O device |
US4819156A (en) * | 1986-06-13 | 1989-04-04 | International Business Machines Corporation | Database index journaling for enhanced recovery |
US5249271A (en) * | 1990-06-04 | 1993-09-28 | Emulex Corporation | Buffer memory data flow controller |
GB9111524D0 (en) * | 1991-05-29 | 1991-07-17 | Hewlett Packard Co | Data storage method and apparatus |
US5574897A (en) * | 1992-09-30 | 1996-11-12 | International Business Machines Corporation | System managed logging of objects to speed recovery processing |
US5991835A (en) * | 1994-11-22 | 1999-11-23 | Teac Corporation | Peripheral data storage device in which time interval used for data transfer from relatively fast buffer memory to relatively slower main memory is selected in view of average of time intervals during which data blocks were recently received from host |
US6526418B1 (en) * | 1999-12-16 | 2003-02-25 | Livevault Corporation | Systems and methods for backing up data files |
US8359335B2 (en) * | 2001-09-29 | 2013-01-22 | Siebel Systems, Inc. | Computing system and method to implicitly commit unsaved data for a world wide web application |
US6820217B2 (en) * | 2001-10-29 | 2004-11-16 | International Business Machines Corporation | Method and apparatus for data recovery optimization in a logically partitioned computer system |
-
2002
- 2002-06-06 US US10/164,200 patent/US6947956B2/en not_active Expired - Fee Related
-
2003
- 2003-05-30 JP JP2003154968A patent/JP4028820B2/ja not_active Expired - Fee Related
-
2005
- 2005-08-11 US US11/201,968 patent/US20050273527A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JP2004062869A (ja) | 2004-02-26 |
US6947956B2 (en) | 2005-09-20 |
US20050273527A1 (en) | 2005-12-08 |
US20030229650A1 (en) | 2003-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4028820B2 (ja) | コンピュータ・システムでのトランザクションの選択的キャッシングの方法および装置 | |
US10657008B2 (en) | Managing a redundant computerized database using a replicated database cache | |
JP7329518B2 (ja) | 追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法 | |
US20220188276A1 (en) | Metadata journal in a distributed storage system | |
US6839819B2 (en) | Data management appliance | |
US6898688B2 (en) | Data management appliance | |
US7340645B1 (en) | Data management with virtual recovery mapping and backward moves | |
US7383290B2 (en) | Transaction processing systems and methods utilizing non-disk persistent memory | |
US5933593A (en) | Method for writing modified data from a main memory of a computer back to a database | |
US7328307B2 (en) | Method and apparatus for improving update performance of non-uniform access time persistent storage media | |
JP3085899B2 (ja) | マルチプロセッサシステム | |
JPH0683679A (ja) | データのバックアップ・コピー中の同時アクセスの方法及びシステム | |
US20030131253A1 (en) | Data management appliance | |
US5752268A (en) | Minimum-delay recoverable disk control system using checkpoints and nonvolatile memory | |
EP2590078B1 (en) | Shadow paging based log segment directory | |
JPH0683677A (ja) | データの増分タイム・ゼロ・バックアップ・コピーの方法及びシステム | |
GB2369206A (en) | Excluding last written segments while rebuilding meta-data in a data storage system | |
US6996582B2 (en) | Virtual storage systems and virtual storage system operational methods | |
US20040260735A1 (en) | Method, system, and program for assigning a timestamp associated with data | |
US7165160B2 (en) | Computing system with memory mirroring and snapshot reliability | |
CN106897311B (zh) | 数据库批次更新方法、数据还原日志产生方法与存储装置 | |
WO2014061847A1 (ko) | 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법 | |
US12007842B2 (en) | Database node soft restart | |
US11789951B2 (en) | Storage of data structures | |
WO2024030167A1 (en) | Increasing oltp throughput by improving the performance of logging using persistent memory storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20030530 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061219 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070309 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070314 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070521 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070703 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070910 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071009 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071012 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101019 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101019 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111019 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121019 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121019 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131019 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |