(57)【要約】矛盾の無い読出し実行データベースにおける一時的な行データを選択的に見るためのシステムおよび方法が記載される。データベースに対して行データを変更するコミットされたトランザクションは、追跡され、格納されたシステム変更番号が各コミットされたトランザクション毎に割り当てられる。データベースからの行データ値の問い合わされた（クエリー）選択は、少なくとも一つのコミットされたトランザクションのコミット時刻前のクエリー時刻で実行される。少なくとも一つのコミットされたトランザクションのためのトランザクション識別子を格納するロールバックセグメントに含まれる、順序付けられた行データ値が検索される。
2004512585.tif 000002
【特許請求の範囲】
【請求項１】
データ処理のための方法であって、
データに対して一時的なアクセスを要求するクエリーを受け、データを修正するトランザクションのコミット時刻の前の時刻を特定するステップと、
データを修正するトランザクションのコミット時刻前の時刻のデータを再構成するステップと、
再構成されたデータに基づいてクエリー処理を完了するステップとを含む、方法。
【請求項２】
前記時刻は標準時を参照して特定される、請求項１に記載の方法。
【請求項３】
前記時刻は標準時刻に対して相対的に特定される、請求項１に記載の方法。
【請求項４】
前記時刻はシステム変更番号によって特定される、請求項１に記載の方法。
【請求項５】
データベースに対してコミットされたトランザクションを追跡することによって連続した矛盾の無いバージョンにデータベースを遷移するステップを含み、各コミットされたトランザクションは、ジャーナルに記録されたコミット時刻にさらに矛盾の無いデータベースのバージョンを生成し、
各コミットされないトランザクションに対してトランザクションテーブルエントリを格納するステップを含み、各トランザクションテーブルエントリはデータベースの変更を反映する保持されたデータ値を格納し、
各トランザクションのコミット時刻に続く保持期間のためのトランザクションテーブルエントリを維持するステップを含み、
トランザクションのために、トランザクションテーブルエントリにおいて格納された保持データ値にアクセスするステップを含む、請求項１に記載の方法。
【請求項６】
各トランザクションテーブルエントリはさらに、トランザクション識別子を含み、
さらに、クエリー時刻に実質的に同時発生するトランザクション識別子に対応する少なくとも一つのトランザクションのためのみにトランザクションテーブルエントリから保持データ値を選択的に検索するステップを含む、請求項５に記載の方法。
【請求項７】
、コミットされないトランザクションによって影響されるデータベース内の各個々の行に対してトランザクションテーブルエントリに保持されたデータ値を格納するステップをさらに含む、請求項５に記載の方法。
【請求項８】
個々の行に影響を与えた各トランザクションに対してトランザクションテーブルエントリ内に格納された保持データ値にアクセスすることにより、データベース内の個々の行の論理的ビュー（ｖｉｅｗ）を生成するステップをさらに含む、請求項７に記載のクリップ。
【請求項９】
トランザクションテーブルエントリをリンクされたデータ構造として組織化するステップをさらに含み、
各々が、保持されたデータ値の少なくとも一部を格納する取消エントリと、
リンクされたデータ構造を横切り、クエリー時刻と実質的に同時に格納された保持データ値を選択的に検索するステップを含む、請求項５に記載のクリップ。
【請求項１０】
標準時刻の参照、相対時刻の参照、各コミットされたトランザクションによって生成されたシステム変更番号の少なくとも一つに基づいてクエリー時刻を決定するステップを含む、請求項５に記載のクリップ。
【請求項１１】
データ値は、オブジェクト、セル、行、レコード、テーブル、ウインドウ、スキーマの少なくとも１つを含む、請求項５に記載のクリップ。
【請求項１２】
トランザクションは選択、加入、および結合データベース操作の少なくとも一つを含む、請求項５に記載のクリップ。
【請求項１３】
データ処理のための命令を担持するコンピュータ読取り可能媒体であって、前記命令は実行されると、コンピュータシステムに対して請求項１〜１２のうちの１つの方法を実行させるよう配列されている、コンピュータ読取り可能媒体。
【請求項１４】
データ処理のためのシステムであって、
データに対する一時的なアクセスを要求するクエリーを受け取り、データを修正するトランザクションのコミット時刻の前の時刻を特定するデータベースエンジンと、
データを修正するトランザクションのコミット時刻の前の時刻におけるデータを再構成する矛盾の無い読出し機構と、
再構成されたデータに基づいてクエリーの処理を完了するクエリーエンジンとを含む、システム。
【請求項１５】
前記時刻は標準時刻を参照して特定される、請求項１４に記載のシステム。
【請求項１６】
前記時刻は標準時刻に対して相対的に特定される、請求項１４に記載のシステム。
【請求項１７】
前記時刻はシステム変更番号によって特定される、請求項１４に記載の方法。
【請求項１８】
連続した矛盾の無いバージョンとしてデータベースに対してコミットされたトランザクションを追跡するデータベースエンジンを含み、各コミットされたトランザクションは、ジャーナルに記録されたコミット時刻にさらに矛盾の無いデータベースのバージョンを生成し、
各コミットされないトランザクションに対してトランザクションテーブルエントリを格納するロールバック機構を含み、各トランザクションテーブルエントリはデータベースの変更を反映する保持されたデータ値を格納し、
各トランザクションのコミット時刻に続く保持期間のためのトランザクションテーブルエントリを維持するとともに、少なくとも一つのトランザクションのために、トランザクションテーブルエントリに格納された保持データ値にアクセスすることにより、少なくとも一つのトランザクションのコミット時刻の前に生じたクエリー時刻におけるデータベースの論理的ビューを提示する、矛盾の無い読出し機構を含む、請求項１４に記載の方法。
【請求項１９】
各トランザクションテーブルエントリはさらに、トランザクション識別子を含み、
さらに、クエリー時刻に実質的に同時発生するトランザクション識別子に対応する少なくとも一つのトランザクションのみのためにトランザクションテーブルエントリから保持データ値を選択的に検索する矛盾のない読出し機構を含む、請求項１８に記載のシステム。
【請求項２０】
前記ロールバック機構は、コミットされないトランザクションによって影響されるデータベース内で各個々の行に対してトランザクションテーブルエントリに保持データ値を格納する、請求項１８に記載の方法。
【請求項２１】
個々の行に影響を与えた各トランザクションに対してトランザクションテーブルエントリにおいて格納された保持データ値にアクセスすることにより、データベース内の個々の行の論理的ビュー（ｖｉｅｗ）を生成する一貫読取り機構をさらに含む、請求項２０に記載のシステム。
【請求項２２】
トランザクションテーブルエントリを、各々が保持されたデータ値の少なくとも一部を格納する取消エントリを含む、リンクされたデータ構造として組織化するロールバック機構と、
リンクされたデータ構造を横切り、クエリー時刻と実質的に同時に格納された保持データ値を選択的に検索する矛盾の無い読出し機構とを含む、請求項１８に記載のシステム。
【請求項２３】
標準時間の参照、相対時刻の参照、各コミットされたトランザクションによって生成されたシステム変更番号の少なくとも一つに基づいてクエリー時刻を決定する矛盾のない読出し機構を含む、請求項１８に記載のシステム。
【請求項２４】
データ値は、オブジェクト、セル、行、レコード、テーブル、ウインドウ、スキーマの少なくとも１つを含む、請求項１８に記載のシステム。
【請求項２５】
トランザクションは選択、加入、および結合データベース操作の少なくとも一つを含む、請求項１８に記載のシステム。
【発明の詳細な説明】
【０００１】
【技術分野】
この発明は、一般に、データベースアクセス方法論に関し、特に、矛盾の無い（ｃｏｎｓｉｓｔｅｎｔ）読出し環境におけるきめの細かい一時的なデータベースアクセスを提供するためのシステムおよび方法に関する。
【０００２】
【発明の背景】
ほとんどの企業のコンピュータ環境においては核となる機能として、情報の普及、格納および処理が実行される。一般に、情報交換を容易にするために、これらの環境は、単一の物理的位置内で動作される、ワークステーションおよびサーバのイントラネットワークで構成される。個々のイントラネットワークは他のイントラネットワークおよびコンピュータを利用した資源に相互接続される。地理的に離れたイントラネットワークは別の相互ネットワークと接続可能な相互ネットワークを形成するためにしばしば、相互に接続される。インターネットのような公衆インターネットワークは、世界中のユーザを相互に接続するために用いられる。
【０００３】
データベースは核となる機能領域を満たしかつサポートすることによって、ますます中心的な役割を果たしている。ほとんどのデータベースはネットワーク化されたコンピュータ環境のために構成され得る。たとえば、パーフォーマンスに敏感なデータベースアプリケーションは処理能力および使用可能なデータを最大にするために平行して動作するように構成される。分散されたデータベースはパーフォーマンスと効率を上げるために相互接続性を利用する。最後に、必須のデータはデータの安全性を確実にするためにしばしば地理的に分散された、冗長データベースシステム上に格納される。
【０００４】
基本的に、全てのデータベースは、関連するデータベースサーバとともに中央に位置したデータ記憶装置を含む。個々のユーザは構造化問い合せ（クエリー）言語（ＳＱＬ）のような何らかの問い合せ言語を用いてデータベースサーバを介してデータベース上でトランザクションを直接実行することができる。代わりに、データベースサーバ上またはこれと関連して作動するデータベースアプリケーションは、データのエントリ（ｅｎｔｒｙ）、解釈および検索を改良するためにユーザフレンドリーなフロントエンドを提供できる。
【０００５】
リレーショナルデータベースにおいては、データの値はスキーマ（ｓｃｈｅｍａ）に従って編成されたテーブルに格納される。スキーマはデータセット間のリンクのマッピングを提供するとともに、個々の属性を定義する。関連したデータ値はテーブル内の行に格納され、各データ値は、英数字の文字列、数値または２値データを含む、データオブジェクトの実質的に任意の形式を格納するよう定義されうる。トランザクションが実行されるにつれて、データベースへの変更が生じる。しかしながら、データベースに対して実際にコミット（ｃｏｍｍｉｔ）されたトランザクションのみが持続的記憶装置（ｐｅｒｓｉｓｔｅｎｔ ｄａｔａ ｓｔｏｒｅ）に対して永久の変化を起こさせる。コミットされないトランザクションは一時的なもので、ロールバック（ｒｏｌｌｅｄ ｂａｃｋ）されるかまたは実行されない。
【０００６】
コミットされたトランザクションを有効にすることは、特にマルチユーザデータベースシステムにおいては、データベースの基本的な特性である。通常、コミットされたトランザクションは、データベースに対して、ときにはユーザの損失となるような、永久の変化を引き起こす。コミットされた変化は、設計によって起こされようと、過失、事故、無視、悪意により起こされようと、取消できない。たとえユーザが後で元の変更される前のデータにアクセスしたいと思っても、変更されたデータは、検索およびビュー（ｖｉｅｗｉｎｇ）のためにアクセスできない。
【０００７】
先行技術においては、コミットされたトランザクションによって取消不可能に変更または削除されたデータにアクセスしたり検索したりするには３つの基本的な解決策があった。バージョニング（ｖｅｒｓｉｏｎｉｎｇ）は持続的記憶装置においてデータ値を変更または削除する操作を不可能にする。代わりに、任意の変更された列の新しいバージョンが生成され、それによって、元のデータ値を列の古いバージョンとして保存する。しかしながら、このアプローチはスペース効率が悪く、特に、データベースが頻繁に変更される場合はデータベースの必要な容量を大幅に増加させる。
【０００８】
時復旧（ｐｏｉｎｔ ｉｎ ｔｉｍｅ ｒｅｃｏｖｅｒｙ）はたとえ不正確としても、おおまかなデータベース復旧へのアプローチを提供する。データベース全体はバックアップコピーから復旧され、問題のデータ値が検査される。データベースの行は以前修正または削除されたデータに置き換えられる。しかしながら、このアプローチは典型的に、データを比較し、実行するための２つのデータベースシステムを必要とし、データ値が復旧されるまで活性化されたデータベースをデータ処理活動から切り離しておく必要がある。
【０００９】
最後に、ログマイニング（ｌｏｇ ｍｉｎｉｎｇ）は推定によってデータ復旧を可能にする。データベースの中にはデータベースに対して実行された全ての操作を追跡および記録するトランザクションログを組み込んだものがある。ログマイニングは、データがデータベースステートメントに再構成され、望ましくはコミットされた変化が保存されるように入れ替えられるのに影響を及ぼすような操作を許容する。
【００１０】
それ故、標準時の参照またはシステム変更番号によって、コミットされたトランザクションの前の時点のデータ値にアクセスするアプローチのためのニーズが存在する。
【００１１】
さらに、連続的なバージョニングまたは大規模なデータベース復旧を要求することなく、個々のデータ値に選択的にアクセスを許容するためのきめ細かく機能するアプローチに対するさらなるニーズも存在する。さらに、そのようなアプローチはステートメントの再構成無しにデータベース言語に対する単なる拡張として機能する。
【００１２】
さらに、データベース管理支援無しにユーザがデータを修復することを許容するセルフサービス的なデータベースシステムに対するニーズもある。
【００１３】
【発明の開示】
この発明は要求されたクエリー時点でのデータベースにおけるデータ値に一時的にアクセスするためのシステムおよび方法を提供する。データベースに格納されたデータ値に影響を与えるトランザクションは追跡され、トランザクション識別子が割り当てられる。トランザクションが対応するデータベースブロック（または単に「データブロック」）に変化を与えると、データベースエンジンは対応するデータベースブロックに格納される相対トランザクションエントリを生成する。各関係するトランザクションエントリは、変更されたデータ値およびトランザクション取消情報を格納するトランザクションテーブルエントリを参照する。各トランザクションが適応されるにつれて、新しいデータベースバージョンが生成される。トランザクションがコミットされると、システム変更番号が割り当てられる。
【００１４】
この発明の一つの局面は、データに対して一時的なデータのアクセスを要求するクエリーを受け、データを修正するトランザクションのコミット時刻の前の時刻を特定するデータ処理のための方法、システムおよびソフトウエアに関連する。データは、データを修正するトランザクションのコミット時刻前の時刻のデータに再構成され、クエリーの処理は、再構成されたデータに基づいて完了される。時刻は標準時（グリニッジ標準時のような）を参照して行っても良いし、標準時に対して相対的に（昨日のように）特定しても良いし、システム変更番号によって特定しても良い。
【００１５】
この発明の実施例は、矛盾のない読取り環境におけるきめの細かい一時的なデータベースアクセスを提供するためのシステムおよび方法である。データは、データベースに対してコミットされたトランザクションを追跡することによって連続した矛盾のないバージョンに遷移される。各コミットされたトランザクションは、ジャーナルに記録された（ｊｏｕｒｎａｌ）コミット時刻にさらに矛盾のないデータベースのバージョンを生成する。各コミットされないトランザクションに対してトランザクションテーブルエントリが格納される。各トランザクションテーブルエントリはデータベースの変更を反映する保持されたデータ値を格納する。トランザクションテーブルエントリは、各トランザクションのコミット時刻に続く保持期間の間維持される。データベースの論理的ビュー（ｖｉｅｗ）は少なくとも一つのトランザクションのために、トランザクションテーブルエントリに格納された保持データにアクセスすることによって少なくとも一つのトランザクションのコミット時刻前に生じたクエリー時刻のデータとして提示される。
【００１６】
さらなる実施例は、矛盾のない読取り実行データベースにおける一時的な行データの選択的なビュー（ｖｉｅｗ）のためのシステムおよび方法である。データベースに対して行データ変化を起こすコミットされたトランザクションが追跡され、格納されたシステム変更番号が各コミットされたトランザクションに割り当てられる。コミットされないトランザクションのためのロールバックセグメントが格納される。各ロールバックセグメントは、トランザクション識別子およびデータベースの変更を反映する順序付けられた行データ値を含む、トランザクションテーブルエントリを格納する。データベースは、ジャーナルに記録されたコミット時刻において各コミットされたトランザクションに応答して、連続した矛盾の無いバージョンに遷移する。トランザクションテーブルエントリは各コミットされたトランザクションのコミット時刻に続くユーザが定義可能な保持期間のために維持される。データベースからの行データ値の問い合わされた選択は、少なくとも一つのコミットされたトランザクションコミット時刻より前に生じたクエリー時刻で実行される。少なくとも一つのコミットされたトランザクションのためのトランザクション識別子を格納したロールバックセグメントに含まれる、順序付けられた行データ値が検索される。
【００１７】
さらなる別の実施例は、矛盾のない読取り実行データベースに格納された一時的な行データ上の論理的選択操作を実行するためのシステムおよび方法である。データベースにコミットされた行データ変化に影響するトランザクションを含む、データベース操作の記録は維持される。コミットされないトランザクションのためのロールバックセグメントが格納される。各ロールバックセグメントはトランザクション識別子および、データベース変更を反映する行データ値を含む取消エントリのためのアドレスを含む、データベースの変更を起こすまたは復帰するのに関係する情報を格納する。データベースは、ジャーナルされたコミット時刻での各コミットされたトランザクションに応答して連続した矛盾のないデータベースバージョンに遷移される。システム変更番号は、各コミットされたトランザクション毎にデータベースバージョンに割り当てられる。トランザクションテーブルエントリは、各コミットされたトランザクションコミット時刻に続くユーザが定義可能な保持期間の間保持される。論理的選択動作は、少なくとも一つのコミットされたトランザクションコミット時刻前に生じたクエリー時刻での行データ値に対してデータベース上で実行される。取消エントリに格納された順序付けられた行データ値は、少なくとも一つのコミットされたトランザクションのためのトランザクション識別子とともに関連するトランザクションエントリに含まれた各アドレスで、トランザクションテーブルエントリを参照することによって検索される。
【００１８】
この発明によってもたらされる一つの利点は、セルフサービス的なデータベースの修復ができることである。テーブルから誤って重要な行を削除したユーザは誤った削除を行った時より前の時刻のクエリーを実行し、無くなった行を見て、現在のテーブルに削除された行を挿入できる。
【００１９】
別の利点は、メッセージの復旧を提供するために、電子メールや音声メールプログラムのような生産性のあるアプリケーションを可能にすることである。
【００２０】
さらに別の利点は、決定サポートシステムおよびオンライン分析的処理アプリケーショントランザクションの再開始の可能性を提供することである。これらの形式のアプリケーションは典型的にはトランザクション処理のロングラン（長時間運転）を実行する。
クラッシュしたときはこれらのアプリケーションを用いて、アプリケーションがクラッシュする前に中止した点での処理を再開始するために一時的なアクセスを利用することができる。
【００２１】
さらに他の利点は、アプリケーションが一時的なアクセスによって導入された暗黙の（ｉｍｐｌｉｃｉｔ）バージョンを組み込むことができるという点である。
【００２２】
この発明のさらに別の実施例は、以下の詳細な記述から当業者にとって容易に理解される。そこでは、この発明の実施例が、この発明を実施するための最良の実施の形態を例示して示されている。理解されるように、この発明は別のまた異なった実施例で実行され、その多くの詳細は、この発明の精神および範囲から離れることなく、各種の自明な点において修正が可能である。したがって、図面および詳細な説明は例示であり、限定するものとみなされてはならない。
【００２３】
【発明を実施するための最良の形態】
図１はこの発明にしたがった、矛盾のない読取り環境でのきめの細かい一時的なデータベースアクセスを提供するためのシステム１０を含む、分散コンピュータ環境９を示すブロック図である。システム１０は、複数のクライアントに対してデータベースアクセスを提供するホストコンピュータシステム上で動作するデータベースサーバ１１からなる。
【００２４】
各種タイプのクライアントがデータベースサーバ１１に相互接続可能である。これらのクライアントはデータベースサーバ１１に直接接続されたローカルクライアント１２とモデム１４のセットを介して接続されたダイアルインクライアント１３とを含む。加えて、ネットワーククライアント１５はインターネットサービスプロバイダ（ＩＳＰ）１６を介して接続されうる。ＩＳＰ１６はデータベースサーバ１１にインターネットを含む、相互ネットワーク１７を介して接続される。同様に、１またはそれ以上のローカルエリアネットワーク（ＬＡＮ）クライアント１８は、それ自体がルータ２０または同様の装置を介してインターネットワーク１７に相互接続されるイントラネットワーク１９を介してデータベースサーバ１１に相互接続されうる。別タイプのクライアントやネットワークトポロジやネットワーク形態および相互接続の形式が実現可能である。
【００２５】
ネットワークサービスのホスティングに通常関連するタスクを実行するのに加えて、データベースサーバ１１は以下に図２を参照して説明するように、データベースエンジン２１を介して持続的記憶装置２２に維持されるデータベース２３へのアクセスを提供する。個々のユーザは構造化クエリー言語（ＳＱＬ）のような、クエリー言語の何らかの形式を用いてデータベースサーバ１１を介してデータベース２３に直接、クライアントを介してトランザクションを実行することができる。代わりに、各クライアント上でまたはデータベースサーバ１１とともに動作する、データベースアプリケーション２４は、ユーザフレンドリーなフロントエンドを提供でき、このフロントエンドを用いてデータが入力され、解釈され、検索される。記述された実施例では、データベースエンジン２１およびデータベース２３は、カリフォルニア州、レッドウッドショアのオラクルコーポレーションによってライセンスされる、オラクル８ｉプロダクトのようなリレーショナルデータベース管理システムを形成する。
【００２６】
データベースサーバ１１およびクライアント１２，１３，１５，１８を含む、個々のコンピュータシステムは、汎用のプログラムされたデジタルコンピュータ装置であって、中央演算装置（ＣＰＵ）、ランダムアクセスメモリ（ＲＡＭ）、ハードディスクまたはＣＤＲＯＭドライブのような不揮発性２次記憶装置、ネットワークインターフェイス、および周辺機器を含み、周辺機器は、キーボードやディスプレイのようなユーザインターフェイス手段を含む。ソフトウエアプログラムを含むプログラムコードおよびデータは、ＣＰＵによる実行および処理のためにＲＡＭにロードされ、結果はディスプレイに表示され、出力され、送信または記録される。
【００２７】
図２は図１のきめの細かい一時的なデータベースアクセスを提供するためのシステム１０を示す詳細なブロック図である。システム１０はデータベースエンジン２１とデータベース２３本体からなる。この発明を記述するために、データベースエンジン２１は、クエリーエンジン３１と、ロールバック（ｒｏｌｌ ｂａｃｋ）機構３２と、矛盾の無い読出し機構３３の、３つの主要部から構成されている。データベースエンジン２１は、当業者によって認識されるような、データ属性を挿入、修正、削除または構成するために使用される他の要素（図示無し）も含む。しかしながら、記述された発明が最も密接にデータベースアクセスに関係しているため、これらの要素は記載の簡素化および、明確化のため省略している。
【００２８】
クエリーエンジン３１はデータベース２３に問い合せ、そこに格納されたデータテーブル３６からデータ項目を検索する基本的な機能を提供する。他のクエリー言語も使用可能であるが、述べられる実施例では、クエリーエンジン３１はＳＱＬ／ＰＬ１クエリー言語で書かれたステートメントを解釈する。
【００２９】
ロールバック機構３２および矛盾の無い読出し機構３３はともにデータベース２３に以前に格納されていたデータ値に一時的にアクセスする能力を提供する。一時的なアクセスとは、柱時計の時刻のような標準時参照時点での、または、「１０分前」または「２００年８月２８日時点」のような、現在の柱時計の時刻に対して相対的な時間間隔、または、以下に説明する、システム変更番号によって、データベース２３上でクエリーを実行する能力をいう。データベース２３が十分な情報を有していれば、たとえ実際のデータ値自身が削除または変更されていても、データベースエンジン２１に提出された全てのクエリーは、ユーザによって要求された時刻またはシステム変更番号でのデータベース２３の、再構成されたデータ値である「スナップショット」として現れる。
【００３０】
複数のクライアントによって共用される矛盾の無い読出し環境を創り出すために、データベースエンジン２１は矛盾の無いバージョン間でデータベース２３を遷移する。同一のクエリーであれば、データベース２３で後に実行されたトランザクションに拘わらず、所与のシステムバージョン番号に対して同じ結果が得られることが保証されている。基本的に、データベースエンジン２１はクライアントによって提出されたトランザクションを実行する。持続的記憶装置２２（図１に示す）に保時されたデータ値を変更するトランザクションは、データベース２３に「コミット」されるとデータテーブル３６のデータ値を永久に変更、すなわち取り消しできなくする。各コミットされたトランザクションは、データベースエンジン２１にジャーナルが記録され、コミットされた時刻でのシステム変更番号によって特定されるデータベース２３の新しいバージョンを発生させる。これについては以下に図６を参照してさらに説明する。
【００３１】
矛盾の無い読出し環境のおかげで、データベース２３への一時的なアクセスが可能になる。データベースエンジン２１はロールバック機構３２を介してデータベース２３に影響するトランザクションを追跡する。図４を参照して以下に述べるように、コミットされないトランザクションはロールバックセグメント３５に格納されたトランザクションテーブルエントリ内のデータテーブル３６とは別に格納される。ロールバックセグメント３５によってデータベースサーバ１１はシステムクラッシュ時に優雅な復旧を可能にする。このように、コミットされないトランザクションはデータベース２３を害したり、矛盾を生じさせることはできない。
【００３２】
ロールバック機構３２は各ロールバックセグメント３５に、好ましくは第１ブロックとして格納されたトランザクションテーブル３４内にトランザクションのジャーナルを記録する。実際のデータ値変化は、リンクされたトランザクションテーブルエントリとして格納される。リンクされたトランザクションテーブルエントリは、関連するトランザクションのコミット時刻を過ぎたユーザが定義できる期間だけ保持できる。トランザクションテーブル３４にジャーナルとして記録された任意の所与のトランザクションは、１またはそれ以上の関連するトランザクションテーブルエントリを有し、実際に変更されたデータ値はこのトランザクションテーブルエントリ内に格納される。
【００３３】
矛盾の無い読出し機構３３は、一時的なアクセスを提供するために、「取消」ブロックとも呼ばれる、トランザクションテーブルエントリを参照する。矛盾のない読出し機構は、図９を参照してさらに以下に記載されるように、所与の時刻、相対時刻またはシステム変更番号時点の行データの選択的な一時的なビューを提供するためにトランザクションテーブルエントリを介して処理を繰り返す。
【００３４】
データベースエンジン２１の各要素３１，３２，３３は、Ｃ＋＋プログラム言語のような従来のプログラム言語においてソースコードとして書かれたコンピュータプログラム、手順またはモジュールであり、当業界において公知のようにオブジェクトまたはバイトコードとしてＣＰＵによって実行されるよう提示される。ソースコード、オブジェクトおよびバイトコードの各種の実行例がコンピュータ読取り可能記録媒体に保持されるか、または搬送波における伝送媒体として実施される。特に、矛盾のない読出し機構３３は、図９を参照して始まる以下にさらに述べているように、処理ステップの順に従って動作される。
【００３５】
図３は、図２のデータベース２３において使用される、相対データベースブロック（「データブロック」）５０の構成を示すデータ構成図である。相対データベースブロック５０は２組のレコードを含む。関係するトランザクションエントリ（ＩＴＥ）５１とユーザブロック５２である。各ＩＴＥ５１はトランザクション識別子（ｘｉｄ）５３と関連するユーザブロックアドレス（ｕｂａ）５４とを格納する。ｘｉｄ５３はデータベース２３におけるデータ値の変更に影響するトランザクションを特定する。ｕｂａ５４は１またはそれ以上のトランザクションテーブルエントリへの参照を格納するユーザブロック５２に含まれる行５５のアドレスを含む。相対的データベースブロック５０は１またはそれ以上のＩＴＥ５１を格納できる。
【００３６】
ユーザブロック５２は、行５５とロックビット５６とを含む。行５５はデータ値を格納し、ロックビット５６は行５５が修正からロックされているかどうかを示す。
【００３７】
図４は図２のデータベース２３で使用されるトランザクションテーブルエントリ７０の構成を示すデータ構成図である。トランザクションテーブルエントリ７０は単独にリンクされたリストとして格納され各々はトランザクションをロールバックするために必要なデータ値の少なくとも一部を含む。各トランザクションテーブルエントリ７０は相対データベースブロックアドレス（ｒｄｂａ）７１、スロット番号７２、ラップカウント７３、次のトランザクションテーブルエントリ（ｕｂａ）７４（次のより早い変更を反映する）に対するポインタおよび実際のデータ７５を格納する。相対データベースブロック７１は、トランザクションテーブルエントリ７０が関係するデータテーブル３６内のデータベースブロックを参照する。スロット番号７２はさらにデータベースブロックとともに特別の位置を特定し、ラップカウント７３は特定されたデータベースブロック内のレコードによって占められた隣接スロットの数を示す。図７を参照してさらに以下で述べるように、実際のデータ７５は、アドレスと内容によって実際のデータ値を列挙する。
【００３８】
図５はトランザクションテーブル８１とトランザクションテーブルエントリ８２，８３，８４との関係を示す機能ブロック図８０である。各トランザクションはトランザクション識別子ｘｉｄｘとユーザブロックアドレスｕｂａｘとを含む。ユーザブロックアドレスｕｂａｘは最初のトランザクションテーブルエントリｕｂａｘ８２を参照する。各トランザクションテーブルエントリｕｂａｘは単独にリンクされたリストとして、次のトランザクションテーブルエントリｕｂａｘ＋１およびｕｂａｘ＋２にリンクされる。ダイナミックに割り当てられるデータ記憶装置の別の形態も実現可能である。
【００３９】
記述されている実施例では、ロールバックセグメント３５はエクステントに格納される。各エクステントは関連する終了時刻を有する隣接するメモリ位置のブロックである。終了時刻は、その後エクステントが新しいデータで上書きできる時刻を示すためにデータベース格納マネージャによって使用される。好ましくは、各トランザクションテーブルエントリの保持時間は終了時刻を超えない。必要であれば、終了時刻経過後、書き込み動作が優先され、トランザクションテーブルエントリを上書きする。トランザクションテーブルエントリに上書きすると、利用できないデータに対する、一時的なアクセス要求ができなくなる。
【００４０】
図６は例として、矛盾の無い読取り動作を示すタイミング図９０である。データベース２３に格納されているデータ値に影響を及ぼす全てのトランザクションは（図２に示す）、追跡され、トランザクション識別子ｘｉｄが割り当てられ、トランザクションテーブル３４にジャーナルとして記録される。トランザクションが持続的記憶装置２２（図１に示す）に対してコミットされた時刻に、データベース２３は、新しい矛盾の無いバージョンに遷移する。
【００４１】
データベース２３で実行される読取り動作においては、コミットされたデータ値およびコミットされないトランザクションによって変更されたデータ値であってそれを要求しているクライアントのみ、がアクセスされる。結局、矛盾のない読取り結果が保証される。たとえば、ｘｉｄ２０１９の早いトランザクションがシステム変更番号（ｓｃｎ）５００を生成する。同様に、それぞれｘｉｄ２０２１および２０２２の付された係続中のトランザクション９３およびそれに続くトランザクション９４が、システム変更番号５０２および５０３を生成する。ｘｉｄ２０２０の付されたコミットされたトランザクション９２のみがコミット時にシステム変更番号５０１を生成する。
【００４２】
図７は例として一組の従業員データレコード１０６を示す部分的なテーブルビュー１００を示す図である。各従業員データレコード１０６はデータ値１０７−１１０の５個のフィールドを含む。名１０１、姓１０２、部門１０３ならびに、住所の市１０４および州１０５である。例として、もし最後の従業員のデータレコード１１０が削除されると、トランザクションが生成され、図８のデータ構成ビュー１２０に示されるような、関連するトランザクションエントリ５１（図３に示す）が割り当てられる。相対的データブロックアドレス（ｒｄｂａ）１２１およびスロット番号１２２はアドレス「０ｘ０５７Ａ９Ｂ４０」およびトランザクションテーブルエントリが属するデータテーブル３６（図２参照）内のデータブロックのスロットを含む。ラップカウント１２３の０はただ１つのデータブロックが使用されていることを示す。次に早いトランザクションテーブルエントリ１２４は「０ｘ８００００００８」に位置される。実際のデータ１２５は削除されたレコード内の各フィールドに対して個々のデータ値として５つに分散される。
【００４３】
一時的なアクセスがあると、トランザクションテーブルエントリに格納されたデータ値は論理的に要求されたクエリー時刻での相対的なデータベースブロックに現在格納されている値に置き換わる。たとえば、ＳＱＬクエリーが部門が「経理」である、昨日の時点での従業員から姓および名を選択せよ」であるかもしれない。この選択トランザクションは「ジョンドゥ」の結果を生成する。「昨日」という相対的クエリー時刻がフォーマット化された日付やタイミング列の代わりに用いられている点に注意のこと。
【００４４】
図９はこの発明にしたがった矛盾の無い読出し環境におけるきめの細かい一時的なデータベースアクセス１４０を提供するための方法を示す。当業者にとって容易に認識されるように、典型的なデータベースのエンジンは任意の時刻において同時に複数のトランザクション動作の処理を行っている。記述された発明は読出し動作に関係し、別の形式のデータベーストランザクションの処理に直接影響しない。結局、方法は読出し動作に関して述べられる。
【００４５】
一時的なアクセスは、要求されたアクセス時刻における「スナップショット」として検索されたデータ値の論理ビューを提供する。このように、スナップショットの環境はトランザクションテーブル３４（図２に示す）からまず検索されなければならない（ブロック１４１）。環境は、トランザクション識別子ｘｉｄと、相対的ユーザブロックブロックアドレスｒｄｂａおよび要求されたクエリー時刻でのシステム変更番号ｓｃｎを含む。環境が検索されると、図１０を参照して説明するように、矛盾の無い読出しが実行される（ブロック１４２）。
【００４６】
記述された実施例では、クエリー時刻は３つの形態で要求される。まず、柱時計またはグリニッジ標準時のような、標準時間でありうる。代わりに、クエリー時刻は標準時間に対する相対時間であり得る。最後に、クエリー時刻に代えてシステム変更番号が使用可能である。バックグラウンドでデーモン（ｄａｅｍｏｎ）プロセスがシステム変更番号をコミット時刻と関連付ける。クエリー時刻の正確なフォーマットは、正確に、２０００年８月２８日午後２：００時点を意味する、「２０００　８月２８　１４：００：００」のような文字通りの列を含みうる。他のフォーマットやクエリー時刻フォームも使用可能である。
【００４７】
図１０は図９の方法１４２で使用される矛盾の無い読取り動作１６０を実行するルーチーンを示すフロー図である。このルーチーンの目的は、要求されたクエリー時刻でのデータベース２３のシステム変更番号に関連したトランザクションテーブルエントリ３５（図２に示す）に格納された保持されたデータ値にアクセスすることである。まず、相対データベースブロックは、持続的記憶装置２２から検索される（ブロック１６１）。次に、各関連するトランザクションエントリ（ＩＴＥ）５１（図３に示す）は要求されたクエリー時刻でのデータベース２３を論理的に再構成するために繰り返し処理される（ブロック１６２−１６９）。繰り返しフロー制御が述べられているが、反復、分散、同時、類似の制御スキームを含む、他の形態のフロー制御も適用可能である。
【００４８】
各ＩＴＥ５１に対して、トランザクションは順序付けられた方法でロールバックされる。活性化されたトランザクションがコミットされたトランザクション（ブロック１６３−１６５）の前にロールバックされ、より早く生じたコミットされたトランザクション、すなわち、システム制御番号（ブロック１６６−１６７）より最近に生じたコミットされたトランザクションのみがロールバックされる。このように、もしトランザクション識別子ｘｉｄによって参照されるトランザクションが活性化されていれば（ブロック１６３）全トランザクションがトランザクションを論理的に取消すために（ブロック１６４）ロールバックされる。より多くの活性化されたトランザクションがあれば（ブロック１６５）、すべての活性化されたトランザクションがロールバックするまでロールバックが繰り返される（ブロック１６５）。全てのトランザクションをロールバックする動作は、それ自体が、矛盾の無い読出し動作を実行し、ルーチン１６０がトランザクションを取消すのに必要な回数だけ繰り返し起動されるということを要求していることに注意のこと。
【００４９】
ひとたび、全ての活性化されたトランザクションがロールバックされ（ブロック１６３−１６５）、もし要求されたクエリー時刻（ブロック１６６）に対応するシステム変更番号よりも早くトランザクションが生じていれば、全てのトランザクションはトランザクションを論理的に取消すために（ブロック１６７）またロールバックされ、次のＩＴＥ５１が処理される（ブロック１６８）。前と同様に、ロールバック動作は追加の矛盾の無い読出し動作を要求できる。
【００５０】
そうでなく、もしトランザクションがコミットされ（ブロック１６３）、トランザクションコミット時刻が要求されたクエリー時刻（ブロック１６６）のシステム変更番号よりも遅ければ、次のＩＴＥ５１が処理される（ブロック１６８）。ＩＴＥの処理（ブロック１６２−１６８）はコミットされないまたは一時的に続くトランザクションが残らなくなるまで続く。
【００５１】
ロールバックトランザクションから検索されたデータ値は提示される（ブロック１６９）。トランザクションテーブルエントリは、タプル（ｔｕｐｌｅ）またはセルの変化を格納するためにより細かくできるが、記述された実施例では、データ値は行優先のベース（ｒｏｗ−ｏｒｉｅｎｔｅｄ ｂａｓｉｓ）で検索される。同様に、トランザクションテーブルエントリはレコード、テーブル、またはスキーマの変更も格納できる。同様に、一時的なアクセス動作が時刻における固定点での単一のテーブル上で作動する。クエリーの意味は、１またはそれ以上の同時に生じる一時的なデータセット、複数のテーブル、接続的および離接的な選択を包含し、また、オブジェクト、セル、行、レコード、テーブル、ウインドウ、およびスキーマを含むように拡張されうる。検索されたデータ値を提示後、ルーチーンは戻る。
【００５２】
発明が、その実施例を参照して特別に示され、また記述されたが、当業者は形式および詳細において、上記および他の変更がこの発明の精神および範囲から離れることなく行われうるということを理解する。
【図面の簡単な説明】
【図１】この発明に従う、矛盾の無い読出し環境において、きめの細かい一時的なデータベースアクセスを提供するためのシステムを含む、分散されたコンピュータ環境を示すブロック図である。
【図２】図１のきめの細かい一時的なデータベースアクセスを提供するためのシステムを示す詳細なブロック図である。
【図３】図２のデータベースにおいて使用されるトランザクションテーブルの構成を示すデータ構成図である。
【図４】図２のデータベースにおいて使用されるトランザクションテーブルエントリの構成を示すデータ構成図である。
【図５】トランザクションテーブルとロールバックセグメント間の関係を示す機能ブロック図である。
【図６】例として、矛盾のない読取り動作を示すタイミング図である。
【図７】例として、従業員のデータ記録の組を示す部分的なテーブルビューである。
【図８】例として、削除された従業員データ記録のためのトランザクションテーブルエントリを示すデータ構造ビューである。
【図９】この発明に従った、矛盾の無い読出し環境でのきめの細かい一時的なデータベースアクセスを提供するための方法を示すフローチャートである。
【図１０】図９の方法で使用される矛盾のない読取り操作を実行するためのルーチンを示すフローチャートである。
【図１】
2004512585.tif 000003
【図２】
2004512585.tif 000004
【図３】
2004512585.tif 000005
【図４】
2004512585.tif 000006
【図５】
2004512585.tif 000007
【図６】
2004512585.tif 000008
【図７】
2004512585.tif 000009
【図８】
2004512585.tif 000010
【図９】
2004512585.tif 000011
【図１０】
2004512585.tif 000012
【国際公開パンフレット】
2004512585.tif 000013
2004512585.tif 000014
2004512585.tif 000015
2004512585.tif 000016
2004512585.tif 000017
2004512585.tif 000018
2004512585.tif 000019
2004512585.tif 000020
2004512585.tif 000021
2004512585.tif 000022
2004512585.tif 000023
2004512585.tif 000024
2004512585.tif 000025
2004512585.tif 000026
2004512585.tif 000027
2004512585.tif 000028
2004512585.tif 000029
2004512585.tif 000030
2004512585.tif 000031
2004512585.tif 000032
2004512585.tif 000033
2004512585.tif 000034
2004512585.tif 000035
2004512585.tif 000036
2004512585.tif 000037
2004512585.tif 000038
2004512585.tif 000039
【国際公開パンフレット（コレクトバージョン）】
2004512585.tif 000040
【国際調査報告】
2004512585.tif 000041
2004512585.tif 000042
2004512585.tif 000043