(57)【要約】データ項目がデータブロックの多数のバージョン上に存在するかもしれず、バージョニングがデータブロックの細分性で行なわれるマルチバージョニングシステムにおいて、データ項目をトランザクションに提供するための手法が提供される。この発明の一局面によれば、その手法は、データ項目の第１のバージョンを含むデータブロックの第１のバージョンを、揮発性メモリ内に配置することを伴う。次に、データブロックの第１のバージョンが一般にトランザクションにより使用可能かどうかにかかわりなく、データ項目の第１のバージョンがトランザクションにより使用可能かどうかが判断される。データ項目の第１のバージョンがトランザクションにより使用可能である場合、データ項目は、トランザクションに提供可能な候補として確立される。このため、ブロック内のデータ項目は、データ項目が存在するデータブロックのバージョンがさもなくばデータブロックをそのトランザクションによって見られるには不適格であるとみなす場合でも、トランザクションに提供されるべき候補と考えられ得る。データ項目の第１のバージョンがトランザクションにより使用可能ではない場合、トランザクションにより使用可能なデータ項目のバージョンは、第１のバージョンとは異なるデータブロックの第２のバージョンから取得される。
2005532615.tif 000002
【特許請求の範囲】
【請求項１】
データ項目をトランザクションに提供するための方法であって、
データ項目の第１のバージョンを含むデータブロックの第１のバージョンを、揮発性メモリ内に配置するステップと、
データブロックの第１のバージョンがトランザクションにより使用可能かどうかにかかわりなく、データ項目の第１のバージョンがトランザクションにより使用可能かどうかを判断するステップと、
データ項目の第１のバージョンがトランザクションにより使用可能である場合、前記データ項目を、前記トランザクションに提供可能な候補として確立するステップと、
データ項目の第１のバージョンがトランザクションにより使用可能ではない場合、トランザクションにより使用可能なデータ項目のバージョンを、前記第１のバージョンとは異なるデータブロックの第２のバージョンから取得するステップとを含む、方法。
【請求項２】
データブロックの第１のバージョンを修正することによって、データブロックの第２のバージョンを生成するステップをさらに含む、請求項１に記載の方法。
【請求項３】
トランザクションにより使用可能なデータ項目のバージョンを、データブロックの第２のバージョンから取得するステップは、使用可能なデータ項目のバージョンを、データブロックの第１のバージョンとは別個に保持されているデータブロックのバージョンから取得することによって行なわれる、請求項１に記載の方法。
【請求項４】
データ項目の第１のバージョンがトランザクションにより使用可能かどうかを判断するステップは、データ項目に関連するバージョン情報を、トランザクションに関連するスナップショット情報と比較するステップを含む、請求項１に記載の方法。
【請求項５】
データ項目に関連するバージョン情報を、トランザクションに関連するスナップショット情報と比較するステップは、データ項目に関連するバージョン情報を、トランザクションに関連するスナップショット時点と比較するステップを含む、請求項４に記載の方法。
【請求項６】
データ項目に関連するバージョン情報を、トランザクションに関連するスナップショット情報と比較するステップは、データ項目に関連するバージョン情報を、トランザクションに関連するMUST-SEE時点およびCANNOT-SEE時点と比較するステップを含む、請求項４に記載の方法。
【請求項７】
データ項目に関連するバージョン情報を、トランザクションに関連するスナップショット情報と比較するステップは、データ項目に関連する鮮度時点を、トランザクションに関連するスナップショット情報と比較するステップを含み、
鮮度時点は、データブロックの第１のバージョン内のデータ項目の第１のバージョンを最近更新した、コミットされたトランザクションのコミット時点を示す、請求項４に記載の方法。
【請求項８】
データ項目の第１のバージョンがロックされているかどうかを判断するステップと、
データ項目の第１のバージョンがロックされている場合、データ項目の第１のバージョンに対するロックを保持するトランザクションが実際にコミットされたかどうかを判断するステップと、
第１のデータ項目に対するロックを保持するトランザクションが実際にコミットされていた場合、ロックを保持する前記トランザクションのコミット時点を、前記データ項目の鮮度時点として使用するステップとを行なうことによって鮮度時点を識別するステップをさらに含む、請求項７に記載の方法。
【請求項９】
データ項目の第１のバージョンがロックされているかどうかを判断するステップと、
データ項目の第１のバージョンがロックされている場合、データ項目の第１のバージョンに対するロックを保持するトランザクションが実際にコミットされたかどうかを判断するステップと、
第１のデータ項目に対するロックを保持するトランザクションが実際にコミットされていなかった場合、第１のデータ項目に対するロックを保持するトランザクションが、データ項目を必要としているトランザクションであるかどうかを判断するステップと、
第１のデータ項目に対するロックを保持するトランザクションが、データ項目を必要としているトランザクションではない場合、データ項目の第１のバージョンはトランザクションにより使用可能ではないと判断するステップとを行なうことによって鮮度時点を識別するステップをさらに含む、請求項７に記載の方法。
【請求項１０】
データ項目の第１のバージョンは、トランザクションにより使用可能なデータ項目のバージョンである複数の候補のうちの一候補として確立され、
前記方法は、複数の候補のうちどの候補を前記トランザクションに提供するかを選択するステップを含む、請求項１に記載の方法。
【請求項１１】
トランザクションは、マルチバージョニングデータベースシステム内で実行されるトランザクションであり、
データ項目は、前記データベースシステム内のテーブルの行である、請求項１に記載の方法。
【請求項１２】
複数の候補のうちどの候補を前記トランザクションに提供するかを選択するステップは、トランザクションに関連する範囲に候補がいかに影響を与えるかに基づいて行なわれ、前記範囲はMUST-SEE時点およびCANNOT-SEE時点により制限される、請求項１０に記載の方法。
【請求項１３】
複数の候補のうちどの候補を提供するかを選択するステップは、どの候補がトランザクションにとって最も幅広い範囲をもたらすかに基づく、請求項１２に記載の方法。
【請求項１４】
複数の候補のうちどの候補を提供するかを選択するステップは、どの候補が最大のCANNOT-SEE時点をもたらすかに基づく、請求項１２に記載の方法。
【請求項１５】
データ項目をトランザクションに提供するための命令を搬送するコンピュータ読取可能媒体であって、命令は、
データ項目の第１のバージョンを含むデータブロックの第１のバージョンを、揮発性メモリ内に配置するステップと、
データブロックの第１のバージョンがトランザクションにより使用可能かどうかにかかわりなく、データ項目の第１のバージョンがトランザクションにより使用可能かどうかを判断するステップと、
データ項目の第１のバージョンがトランザクションにより使用可能である場合、前記データ項目を、前記トランザクションに提供可能な候補として確立するステップと、
データ項目の第１のバージョンがトランザクションにより使用可能ではない場合、トランザクションにより使用可能なデータ項目のバージョンを、前記第１のバージョンとは異なるデータブロックの第２のバージョンから取得するステップとを行なうための命令を含む、コンピュータ読取可能媒体。
【請求項１６】
データブロックの第１のバージョンを修正することによって、データブロックの第２のバージョンを生成するステップを行なうための命令をさらに含む、請求項１５に記載のコ
ンピュータ読取可能媒体。
【請求項１７】
トランザクションにより使用可能なデータ項目のバージョンを、データブロックの第２のバージョンから取得するステップは、使用可能なデータ項目のバージョンを、データブロックの第１のバージョンとは別個に保持されているデータブロックのバージョンから取得することによって行なわれる、請求項１５に記載のコンピュータ読取可能媒体。
【請求項１８】
データ項目の第１のバージョンがトランザクションにより使用可能かどうかを判断するステップは、データ項目に関連するバージョン情報を、トランザクションに関連するスナップショット情報と比較するステップを含む、請求項１５に記載のコンピュータ読取可能媒体。
【請求項１９】
データ項目に関連するバージョン情報を、トランザクションに関連するスナップショット情報と比較するステップは、データ項目に関連するバージョン情報を、トランザクションに関連するスナップショット時点と比較するステップを含む、請求項１８に記載のコンピュータ読取可能媒体。
【請求項２０】
データ項目に関連するバージョン情報を、トランザクションに関連するスナップショット情報と比較するステップは、データ項目に関連するバージョン情報を、トランザクションに関連するMUST-SEE時点およびCANNOT-SEE時点と比較するステップを含む、請求項１８に記載のコンピュータ読取可能媒体。
【請求項２１】
データ項目に関連するバージョン情報を、トランザクションに関連するスナップショット情報と比較するステップは、データ項目に関連する鮮度時点を、トランザクションに関連するスナップショット情報と比較するステップを含み、
鮮度時点は、データブロックの第１のバージョン内のデータ項目の第１のバージョンを最近更新した、コミットされたトランザクションのコミット時点を示す、請求項１８に記載のコンピュータ読取可能媒体。
【請求項２２】
データ項目の第１のバージョンがロックされているかどうかを判断するステップと、
データ項目の第１のバージョンがロックされている場合、データ項目の第１のバージョンに対するロックを保持するトランザクションが実際にコミットされたかどうかを判断するステップと、
第１のデータ項目に対するロックを保持するトランザクションが実際にコミットされていた場合、ロックを保持する前記トランザクションのコミット時点を、前記データ項目の鮮度時点として使用するステップとを行なうことによって鮮度時点を識別するステップを行なうための命令をさらに含む、請求項２１に記載のコンピュータ読取可能媒体。
【請求項２３】
データ項目の第１のバージョンがロックされているかどうかを判断するステップと、
データ項目の第１のバージョンがロックされている場合、データ項目の第１のバージョンに対するロックを保持するトランザクションが実際にコミットされたかどうかを判断するステップと、
第１のデータ項目に対するロックを保持するトランザクションが実際にコミットされていなかった場合、第１のデータ項目に対するロックを保持するトランザクションが、データ項目を必要としているトランザクションであるかどうかを判断するステップと、
第１のデータ項目に対するロックを保持するトランザクションが、データ項目を必要としているトランザクションではない場合、データ項目の第１のバージョンはトランザクションにより使用可能ではないと判断するステップとを行なうことによって鮮度時点を識別するステップを行なうための命令をさらに含む、請求項２１に記載のコンピュータ読取可能媒体。
【請求項２４】
データ項目の第１のバージョンは、トランザクションにより使用可能なデータ項目のバージョンである複数の候補のうちの一候補として確立され、
前記コンピュータ読取可能媒体は、複数の候補のうちどの候補を前記トランザクションに提供するかを選択するステップを行なう命令を含む、請求項１５に記載のコンピュータ読取可能媒体。
【請求項２５】
トランザクションは、マルチバージョニングデータベースシステム内で実行されるトランザクションであり、
データ項目は、前記データベースシステム内のテーブルの行である、請求項１５に記載のコンピュータ読取可能媒体。
【請求項２６】
複数の候補のうちどの候補を前記トランザクションに提供するかを選択するステップは、トランザクションに関連する範囲に候補がいかに影響を与えるかに基づいて行なわれ、前記範囲はMUST-SEE時点およびCANNOT-SEE時点により制限される、請求項２４に記載のコンピュータ読取可能媒体。
【請求項２７】
複数の候補のうちどの候補を提供するかを選択するステップは、どの候補がトランザクションにとって最も幅広い範囲をもたらすかに基づく、請求項２６に記載のコンピュータ読取可能媒体。
【請求項２８】
複数の候補のうちどの候補を提供するかを選択するステップは、どの候補が最大のCANNOT-SEE時点をもたらすかに基づく、請求項２６に記載のコンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
この出願は、その開示全体がここに十分に述べられているかのごとくここに引用される、「データ項目の使用可能バージョンの提供」（Providing a Useable Version of a Data Item）と題され、発明者としてアミット  ガネーシュ（AMIT GANESH）、シュリーニバス  Ｓ．ベムリ（SRINIVAS S. VEMURI）およびロジャー  Ｊ．バンフォード（ROGER J. BAMFORD）の名が挙げられた、２００２年５月１０日出願の仮特許出願連続番号第６０／３７９，８９９号の優先権を主張する。
【０００２】
発明の分野
この発明はデータベースシステムに関し、より具体的には、データベースシステム内のトランザクションがデータ項目の或るバージョンを使用できるかどうかを判断するための方法に関する。
【背景技術】
【０００３】
発明の背景
典型的なデータベースシステムでは、ユーザは、データベースサーバにコマンドをサブミットすることによって情報を記憶、更新および検索する。データベースサーバによって正しく処理されるには、コマンドは、データベースサーバによりサポートされているデータベース言語に準拠していなければならない。或る人気の高いデータベース言語は、構造化照会言語（ＳＱＬ：Structured Query Language）として公知である。
【０００４】
「データ項目」という用語は、ここでは、任意の論理データタイプまたは構造に関連する任意の値、もしくは値の組を指す。リレーショナルデータベースシステム内では、典型的なデータ項目は、テーブル、行、行内のフィールド、インデックス、インデックス入力、ディスクブロックなどを含む。
【０００５】
マルチバージョニングデータベースシステムでは、同じデータ項目のバージョンがいくつか存在する場合がある。通常、データ項目の１つのバージョンが「最新の」もの（つまり、そのデータ項目にこれまでなされた変更をすべて反映しているもの）であり、他のバージョンは最新のものではない。最新のものではないバージョンは通常、以前の時点での最新バージョンの様子を反映している。
【０００６】
マルチバージョニングデータベースシステムにはさまざまなタイプがある。マルチバージョニングデータベースシステムの中には、或るデータ項目の多数のバージョンを永続的に記憶するものもある。また、データ項目の１つのバージョンを永続的に記憶し、アンドゥーまたはリドゥー記録を適用して変更を除去または追加することによって他のバージョンを必要に応じて再現するマルチバージョニングデータベースシステムもある。ここに説明される手法は、マルチバージョニングシステムのどの特定のタイプにも限定されない。
【０００７】
マルチバージョニングデータベースシステムは通常、或る特定のレベルの細分性（granularity）でバージョニングを行なう。このため、或るテーブル全体の別個のコピーを保存する（または生成する）よりもむしろ、マルチバージョニングシステムは通常、或るテーブルの比較的小さな塊の別個のコピーを保存（または生成）する。説明のため、システムがバージョニングを管理する細分性レベルを表わす塊を、ここでは「データブロック」と呼ぶことにする。
【０００８】
現在のデータベースシステムでは、データベースに含まれるデータブロックのコピーはしばしば揮発性メモリに記憶され、それは、必要なアクセス時間が不揮発性メモリよりも少なく、トランザクション処理性能を向上させる。マルチバージョニングデータベースシステムでは、同じデータブロックの多数のコピーが揮発性メモリに保持され、並行して実行されるトランザクションがその中に含まれるデータ項目の異なるバージョンに同時にアクセスできるようになっている場合がある。
【０００９】
データベースシステムの状況では、トランザクションとは、１つ以上のデータベース言語ステートメントから構成される作業の論理的な単位である。データベースシステムがトランザクションを実行する場合、トランザクションは、前のトランザクションの実行に応答して書込まれた、または更新されたデータ項目を読出す、または更新する場合がある。したがって、任意の所与のトランザクションを実行することに応答してデータベースシステムにより戻される結果は通常、前に実行された１組のトランザクションによりなされた変更によって指示される。
【００１０】
各トランザクションはデータベースを一貫した状態で見なければならないため、或るデータ項目の全バージョンが必ずしも或るトランザクションによって使用可能であるとは限らない。たとえば、そのデータ項目の一貫したビューを見るトランザクションについて、そのトランザクションが、データ項目になされた或る更新を見る必要があるかもしれない。しかしながら、データ項目を含むデータブロックのバージョンの中には、トランザクションによって見られなければならない更新を含まないものがあるかもしれない。他方、データ項目を含むデータブロックのバージョンの中には、トランザクションによって見られることができない更新を含むものがあるかもしれない。このため、データブロックの多数のバージョンがトランザクションにとって利用可能である状況においては、トランザクションによるデータ項目のバージョンへのアクセスは、データベース一貫性が維持されるように管理されなければならない。
【００１１】
説明のため、「トランザクション」という用語は、ここでは、データ項目の可能なバージョンのすべてではないもののいくつかを使用することを何らかの理由で許可された任意のエンティティを、より一般的に指すために用いられるものとする。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
システムが多数のノードを含み、それらの各々がそれ自体のキャッシュを有する場合、データ項目の「使用可能なバージョン」をトランザクションに提供するための効率のよい手法を用いることがより一層重要である。たとえば、或る特定のノード上で実行中のトランザクションが、或るデータ項目の或る特定のバージョンを必要としていると仮定されたい。データ項目のその必要なバージョンがその特定のノードのキャッシュ内のデータブロックにある場合、データ項目の所望のバージョンは、最小限のオーバーヘッドで、そのデータブロックからトランザクションへ供給され得る。しかしながら、データ項目の必要なバージョンを含むデータブロックが（１）ディスク上のみに存在する、（２）異なるノードのキャッシュ内に存在する、または（３）ディスク上の、または異なるノードのキャッシュ内の情報に基づいて再構築されなければならない、という場合、必要なバージョンを提供する作業は極めて効率が悪くなり得る。
【００１３】
前述の事項に基づき、データ項目の使用可能バージョンをトランザクションに提供するための効率のよい手法を提供することが望ましい。
【課題を解決するための手段】
【００１４】
発明の概要
データ項目がデータブロックの多数のバージョン上に存在し得るマルチバージョニングシステムにおいて、データ項目をトランザクションに提供するための手法が提供される。この発明の一局面によれば、その手法は、データ項目の第１のバージョンを含むデータブロックの第１のバージョンを、揮発性メモリ内に配置することを伴う。次に、データブロックの第１のバージョンがトランザクションにより使用可能かどうかにかかわりなく、データ項目の第１のバージョンがトランザクションにより使用可能かどうかが判断される。データ項目の第１のバージョンがトランザクションにより使用可能である場合、データ項目は、トランザクションに提供可能な候補として確立される。このため、ブロック内のデータ項目は、データ項目が存在するデータブロックのバージョンがさもなくばそのトランザクションにより使用可能ではない場合でも、トランザクションに提供されるべき候補と考えられ得る。データ項目の第１のバージョンがトランザクションにより使用可能ではない場合、トランザクションにより使用可能なデータ項目のバージョンは、第１のバージョンとは異なるデータブロックの第２のバージョンから取得される。
【００１５】
行の或るバージョンが使用可能かどうかを判断するために使用される情報がトランザクションに関連するスナップショット時点を含んでいる実施例が説明される。また、行の或るバージョンが使用可能かどうかを判断するために使用される情報がMUST-SEE時点（必見時点）とCANNOT-SEE時点（見えない時点）とを含んでいる実施例も説明される。多数の使用可能な候補の中から選択するためのさまざまなアプローチも説明される。
【００１６】
以下の記載では、説明のため、この発明の完全な理解を提供するために特定の詳細が述べられる。しかしながら、この発明がこれらの特定の詳細なしで実践されてもよいことは明らかである。他の点では、この発明を不必要に不明瞭にしないために、周知の構造および装置はブロック図の形で図示される。
【００１７】
機能的概要
トランザクションがデータ項目の或る特定のバージョンを使用できるかどうかを判断するためのアプローチが提供される。以前のアプローチとは異なり、データ項目の特定のバージョンが使用可能かどうかの判断は、データ項目のその特定のバージョンを含むデータブロックのバージョンが一般にトランザクションによって使用できない場合でもなされる。具体的には、データブロックの或る特定のバージョンが、あまりに最近起ったばかりでトランザクションには見えない変更を含む場合でも、トランザクションが関与する特定のデータ項目がそのような変更をどれも含まないかもしれず、したがって依然としてトランザクションにより使用可能であり得る。
【００１８】
一実施例によれば、データ項目の或る特定のバージョンが使用可能かどうかを判断することは、データブロック内のデータ項目がロックされているかどうかを判断することを伴う。データブロックがロックされていない場合、データ項目のそのバージョンを更新する最後のトランザクションは既にコミットされており、したがってコミット時点を割当てられている。説明のため、データブロック内のデータ項目の或る特定のバージョンを更新した最新のトランザクションのコミット時点を、ここでは、そのデータ項目のそのバージョンの「鮮度時点」（freshness time）と呼ぶこととする。
【００１９】
なお、ブロック内のデータ項目の或る特定のバージョンを更新した最新のトランザクションは、データブロック自体を更新する最新のトランザクションではないかもしれない。実際、同じデータブロックが、アクティブなトランザクションによりロックされている他のデータ項目を有し、なおかつ、特定のデータ項目が、関与するトランザクションが使用するには十分古い鮮度時間を有することは起り得る。
【００２０】
データ項目がロックされていない場合、データ項目の鮮度時点は、トランザクションに
関連するスナップショット情報と比較される。以下により詳細に説明されるように、トランザクションに関連するスナップショット情報は、データのどのバージョンがトランザクションには見えるかおよび見えないかを示す。スナップショット情報と鮮度時点との比較は、データ項目のその特定のバージョンがトランザクションにより使用可能かどうかを示す。データ項目のそのバージョンがトランザクションにより使用可能である場合、データ項目のその特定のバージョンは、次にトランザクションに提供されるか、または、トランザクションに実際に提供されるバージョンがそこから選択される候補バージョンのプールに追加されるかもしれない。
【００２１】
多くのシステムでは、コミットされたトランザクションにより更新されたデータブロックは、トランザクションがコミットされたことを示すためにすぐに更新されるわけではない。したがって、データ項目がロックされていることをデータブロック内の情報が示していても、ロックが実際には、コミットされたトランザクションによって保持されているかもしれない。このため、データブロック内の情報によればデータ項目がロックされているという場合、ロックが実際にはアクティブなトランザクションによって保持されているかどうかが判断される。
【００２２】
ロックを保持しているトランザクションが実際にコミットされている場合、ロックを保持しているトランザクションのコミット時点は鮮度時点として使用され、上述の比較が行なわれて、データ項目が使用可能かどうかを判断する。
【００２３】
ロックを保持しているトランザクションがアクティブである場合、ロックを保持しているトランザクションがデータ項目を使用しようとしているトランザクションと同じトランザクションであるかどうかが判断される。ロックを保持しているアクティブなトランザクションがデータ項目を使用しようとしているトランザクションではない場合、そのブロックのデータ項目のバージョンは使用可能ではない。他方、ロックを保持しているアクティブなトランザクションがデータ項目を使用しようとしているトランザクションと同じトランザクションである場合、あまりに最近起ったためにトランザクションには見えない任意の変更をデータ項目が有するかどうかが判断される。あまりに最近起ったためにトランザクションには見えない任意の変更をデータ項目が有していない場合、データ項目はトランザクションによって使用可能である。
【００２４】
トランザクションによって使用可能なデータ項目の多くのバージョンがある状況では、バージョンのうちのどれが実際にトランザクションに提供されるかにより、効率が影響され得る。使用可能な候補のプール内のデータ項目のどのバージョンが或る特定のトランザクションに提供されるべきかを判断するためのさまざまな手法をここに説明する。
【００２５】
ブロックレベルバージョン情報
情報の正しいバージョンをトランザクションに提供するマルチバージョニングシステムについては、このシステムは情報のバージョンを示す情報を保持しなければならない。通常、データベースシステムはそのようなバージョニング情報をデータブロックレベルの細分性で保持している。なぜなら、それはバージョニングが行なわれる細分性レベルであるためである。たとえば、データベースシステムの中には、データブロックの各バージョンについてINCLUDE TIME（包含時点）およびEXCLUDE TIME（除外時点）を保持するものもある。INCLUDE TIMEは、データブロックのバージョンにその変更が含まれている最近コミットされたトランザクションのコミット時点を特定する。EXCLUDE TIMEは、データブロックの内容が「最新の」ものであった時点を特定する。
【００２６】
たとえば、変更をロールバックすることによって作成されたデータブロックのEXCLUDE TIMEは通常、データブロックのバージョンからその変更が既に除去された最も古いトラン
ザクションのコミット時点である。データブロックの或る特定のバージョンがデータブロックの最近のバージョンである場合、そのバージョンについてのEXCLUDE TIMEは、変更が除去されていないため、無限である。
【００２７】
たとえば、第１のトランザクションが、データブロックのコピーを揮発性メモリ内にロードさせ、データブロックの新しいバージョン（「第１のバージョン」）を作成するためにデータブロックのコピーを更新し、次に時点Ｔ１０でコミットする、と仮定されたい。この第１のバージョンについてのINCLUDE TIMEは時点Ｔ１０に設定され、EXCLUDE TIMEは無限に設定される。次に、第２のトランザクションが、データブロックの第２のバージョンを作成するためにデータブロックの同じコピーを更新し、時点Ｔ３０でコミットする。データブロックの第２のバージョンのINCLUDE TIMEは時点Ｔ３０に変更されて、データブロックの第２のバージョンが時点Ｔ３０でコミットされたトランザクションによりなされた変更を含むことを反映しており、一方、EXCLUDE TIMEは、データブロックの第２のバージョンから変更が除去されていないため、無限のままである。
【００２８】
ここで、第３のトランザクションが時点Ｔ２０でデータブロックへのアクセスを要求すると仮定されたい。データブロックの第２のバージョンは、時点Ｔ３０でコミットされた第２のトランザクションによりなされた更新を含んでいるため、その現在の状態では使用できない。したがって、第２のトランザクションによりなされた変更を除去することによって、データブロックの第１のバージョンが再構築される。再構築動作が一旦完了すると、新しいコピーのINCLUDE TIMEは時点Ｔ１０に変更され、EXCLUDE TIMEは時点Ｔ３０に変更されて、データブロックのこのバージョンが時点Ｔ１０でコミットされた第１のトランザクションによりなされた変更を含むこと、および時点Ｔ３０でコミットされた第２のトランザクションによりなされた変更が除去されたことを反映する。このため、時点Ｔ１０から時点Ｔ３０まで（時点Ｔ３０を含まず）存在したようなデータブロックへのアクセスを要求するトランザクションはどれも、データブロックのこの再構築された第１のバージョンを使用できる。
【００２９】
行レベルバージョン情報
典型的な一システムでは、バージョン情報はデータブロックの細分性で保持される。なぜなら、システムはデータブロックの細分性でバージョンを管理するためである。しかしながら、この発明の一局面によれば、バージョン情報はデータ項目細分性で保持され、単一のデータブロックが多数のデータ項目を含む場合がある。データブロックバージョン情報に加えて、および／またはデータブロックバージョン情報の代わりに、データ項目バージョン情報が保持されてもよい。
【００３０】
テーブルの或る特定の行にアクセスしようとする、データベースシステム内のトランザクションの状況において、この発明の実施例をここに説明する。テーブルのその行についてのデータは通常、他の数行についてのデータを含むデータブロック上に存在する。このため、データ項目が行である例を挙げる。したがって、バージョニング情報は行レベルの細分性に基づいて保持される。しかしながら、行は、マルチバージョニングシステム内のデータブロック上に存在し得るデータ項目の単なる一例である。この発明のアプローチは、どの特定のデータ項目にも、またはどの特定のタイプのマルチバージョニングシステムにも限定されない。
【発明を実施するための最良の形態】
【００３１】
図１は、この発明の一実施例に従った、トランザクションがデータ項目の或る特定のバージョンを使用できるかどうかを判断するための行レベルバージョン情報を保持するデータベースシステム１００のブロック図である。
【００３２】
図１を参照すると、データベースシステム１００は、揮発性メモリ１０２と不揮発性メモリ１０４とを含む。不揮発性メモリ１０４は通常、データベースが記憶される、磁気ドライブまたは光ドライブなどの１つ以上の記憶装置を表わしている。データブロック１０６は不揮発性メモリ１０４に記憶されており、１つ以上のデータ項目１０７を含んでいる。例示された実施例では、データ項目１０７はＤ１、Ｄ２、Ｄ３およびＤ４として個々に識別される。
【００３３】
データブロック１０６は、データ項目１０７上で最近動作したトランザクションについての情報も含んでいる。具体的には、入力１１０に列挙されたトランザクションは、データブロック１０６内のデータ項目の各々を更新する最近のトランザクションを含んでいる。そのようなトランザクションは、アクティブである（その場合、データブロックは通常、トランザクションがデータ項目に対するロックを保持していることを示している）か、またはコミットされているかのいずれかであり得る。たとえば、入力１１０は、トランザクションＴＸ１およびＴＸ２がそれぞれ時点１０および時点５でコミットされ、一方、トランザクションＴＸ３はまだコミットされていないことを示している。
【００３４】
データ項目を最後に更新したトランザクションがコミットされると、トランザクションのコミット時点は行のバージョン番号と考えられ得る。このため、ＴＸ１がデータブロック１０６内のデータ項目１を更新した最後のトランザクションである場合、データブロック１０６内のデータ項目１のバージョンは「１０」（ＴＸ１のコミット時点）と考えられ得る。このように、入力１１０は、データブロック１０６内のデータ項目についてのバージョン情報を、データ項目レベルの細分性で伝達する。以下により詳細に説明されるように、データ項目レベルバージョン情報を有することにより、データ項目は、そのデータ項目を含むデータブロックが一般にトランザクションにより使用可能ではない場合でも、トランザクションに提供されるようになる。
【００３５】
システムによっては、データブロック内の情報が、トランザクションが実際にコミットされた際にトランザクションがアクティブであることを示すことは、可能である。この現象は、トランザクションがコミットされる時点と、トランザクションにより修正されたデータブロックが更新されてトランザクションがコミットされたことを示す時点との間に起り得る遅延によるものである。以下により詳細に示すように、この現象は、データブロック内の情報によればアクティブであるトランザクションが実際にコミットされたかどうかを判断することによって勘案され得る。
【００３６】
システム１００に示された構造は、マルチバージョニングシステムがいかにしてバージョニング情報をデータ項目レベルの細分性で保持するかの単なる一例である。特定のバージョニング情報、および情報を保持するための手法は、実現化例によって異なり得る。この発明は、バージョン情報をデータ項目レベルの細分性で保持するためのどの特定の構造または手法にも限定されない。
【００３７】
スナップショット情報
データベース一貫性を維持するためにトランザクションの実行を管理するための一アプローチは、トランザクションが（１）或る特定の一組のコミットされたトランザクションによってデータベースにコミットされた変更、および（２）トランザクション自体の以前のステートメントによってなされた変更のみを見ることを確実にすることを伴う。或るステートメントにはその変更が見える、その一組のトランザクションは、そのステートメントの「スナップショットセット」と呼ばれる。このため、トランザクションはデータベースの「スナップショット」を見なければならない。トランザクションのスナップショットは、そのスナップショットセット内のトランザクションによりなされたすべての変更を含み、そのスナップショットセットにはない任意のトランザクション（「除外されたトラン
ザクション」）によってなされた変更は全く含まない。
【００３８】
一手法によれば、マルチバージョニングデータベースシステムは、トランザクションが実行を開始した時点でのデータベースの状態に対応するスナップショット時点を各トランザクションに割当てることによって、トランザクションがデータベースの一貫したスナップショットを見ることを確実にし得る。一貫した読出については、トランザクションは、トランザクションのスナップショット時点かそれより前にコミットされたトランザクションによってデータベースになされたすべての変更を見なければならず、割当てられたスナップショット時点の後でコミットされたトランザクションによってなされた変更を見ることはできない。
【００３９】
一貫した読出の概念は、１９９７年４月２３日出願の米国特許出願第０８／８４２，１６９号「一貫した読出のためのスナップショットの共有」（SHARING SNAPSHOTS FOR CONSISTENT READS）、１９９７年４月２３日出願の米国特許出願第０８／８３８，９６７号「データベースのスナップショットの数を減少させるための手法」（TECHNIQUES FOR REDUCING THE NUMBER OF SHAPSHOTS OF A DATABASE）、および１９９７年４月２３日出願の米国特許出願第０８／８４１，５４１号「ダイナミックスナップショットセット調節」（DYNAMIC SNAPSHOT SET ADJUSTMENT）により詳細に記載されており、それらの各々の内容はここに引用により援用される。
【００４０】
単純な一例として、トランザクションが、Ｔ１５の時点で存在したようなデータブロックの或るバージョンへのアクセスを要求すると仮定されたい（つまり、このトランザクションのスナップショット時点はＴ１５である）。トランザクションには、時点Ｔ１５またはそれ以前にコミットされたトランザクションによってなされたすべての変更を含むものの時点Ｔ１５の後でコミットされたトランザクションによってなされた変更は含まないデータ項目のバージョンが供給されなければならない。まだコミットされていないトランザクション（要求中のトランザクション自体は除く）、または時点Ｔ１５の後でコミットされたトランザクションによってなされた更新を含むデータ項目のバージョンは使用できない。
【００４１】
データ項目のバージョンが使用可能かどうかの判断
この発明の一実施例に従った、トランザクションがデータ項目の或るバージョンを使用できるかどうかを判断するための方法を、図２のフローチャートを参照してここに説明する。図２で識別されたステップは、トランザクションによって要求されるデータ項目がデータベースシステム内のデータブロックに位置する行である実施例に言及している。
【００４２】
一般に、その行のバージョンがトランザクションによって使用されるかどうかの判断は、その行に関連するバージョン情報を、その行を必要とするトランザクションに関連するスナップショット情報と比較することによってなされる。しかしながら、行のバージョン情報は、それがトランザクションのスナップショット情報と比較される前に判断されなければならない。したがって、図２に示したステップのうちのいくつかは、或る行の或るバージョンの鮮度時点を判断する作業に対応している。
【００４３】
図２を参照すると、ステップ２００で、データブロックに関連するEXCLUDE時点がトランザクションに関連するスナップショット時点未満であるかどうかが判断される。データブロックに関連するEXCLUDE時点がトランザクションに関連するスナップショット時点未満である場合、データブロックに含まれる行のバージョンは、トランザクションによって見られなければならない欠落した変更であるかもしれない。したがって、制御はステップ２０２へ渡り、そこでシステムは、行の正しいバージョンを、データブロックの別のバージョンから得る。
【００４４】
データブロックに関連するEXCLUDE時点がトランザクションに関連するスナップショット時点以上である場合、制御はステップ２０４へ渡る。ステップ２０４で、データブロック内の情報が、行がロックされていることを示すかどうかについて、判断がなされる。行がロックされている場合、制御はステップ２０５へ進む。その他の場合、制御はステップ２１０へ渡る。
【００４５】
ステップ２１０で、そのデータブロック内の行のバージョンを修正した最新のトランザクションのコミット時点が判断される。コミット時点は、たとえば、行を更新する最新のトランザクションについての情報を含むエントリ１１０（図１）内のエントリを検査することによって判断されてもよい。このように判断されたコミット時点は、行のそのバージョンの鮮度時点を構成する。
【００４６】
ステップ２１２で、鮮度時点がスナップショット時点未満、またはそれと等しいかどうか、判断がなされる。そうではない場合、トランザクションはデータブロック１０６のこのバージョンを使用できない。なぜなら、行のバージョンが、新しすぎてトランザクションには見えない修正を含むためである。この状況下では、制御はステップ２０２へ進み、データブロックの別のバージョンが使用される。システムによっては、新しすぎてトランザクションには見えない変更を除去するためにアンドゥー記録をデータブロックに適用することによって、データブロックの他のバージョンが生成されてもよい。
【００４７】
鮮度時点がスナップショット時点未満、またはそれと等しい場合、制御はステップ２１２からステップ２１４へ渡る。ステップ２１４で、トランザクションを使用するために、行のバージョンがトランザクションに提供される。代替的な一実施例では、行のバージョンは、バージョンがトランザクションにより使用可能であると判断されたというだけの理由で、すぐさまトランザクションに提供されなくてもよい。むしろ、システムは、トランザクションにより使用可能な行のいくつかまたはすべてのバージョンを識別するよう進行してもよい。使用可能な候補のプールが一旦決定されると、システムは、行のどのバージョンを実際にトランザクションに提供するかを選択するためのさまざまな基準を使用してもよい。さまざまな選択基準は、以下により詳細に説明されるように使用され得る。
【００４８】
ステップ２１８で、トランザクションに関連するスナップショット情報は、トランザクションに供給された行の特定のバージョンを反映するように更新される。このステップは、たとえば、スナップショット情報がスナップショット範囲を識別する実施例において行なわれる。そのような実施例、およびスナップショット情報がいかに更新されるかの詳細を、以下により詳細に説明する。
【００４９】
ステップ２０４で、データブロックに含まれる情報が、行がロックされていることを示す場合、ステップ２０５で、ロックを保持するトランザクションが本当にアクティブかどうかが判断される。データブロック内の情報が、行がロックされていることを示していても、ロックを保持するトランザクションが実際には既にコミットされたかもしれず、一方データブロックはまだトランザクションのコミット情報を用いて更新されていなかったために、このステップは行なわれる。
【００５０】
ロックを保持するトランザクションがアクティブでない場合、制御はステップ２１０に渡されて、ロックを保持していたトランザクション（データブロックのそのバージョンにある行のバージョンを修正する最新のトランザクション）のコミット時点が判断される。
【００５１】
ロックを保持するトランザクションがアクティブである場合、ステップ２０６で、ロックを保持するトランザクションが行を読出そうとしているトランザクションと同じトラン
ザクションかどうかが判断される。ロックを保持するトランザクションが行を読出そうとしているトランザクションと同じトランザクションではない場合、データブロック内にある行のバージョンは、トランザクションには見えない情報を潜在的に含んでおり、制御はステップ２０２へ渡る。
【００５２】
ロックを保持するトランザクションが行を読出そうとしているトランザクションと同じトランザクションである場合、ステップ２０８で、行のそのバージョンがトランザクションには新しすぎて見えない情報を含むかどうかが判断される。この試験は、データベースシステムによっては、トランザクションが、或る特定の時点までにそれ自体がなした変更を見ることができるものの、その特定の時点の後でなされた変更は見ることができないために、行なわれる。
【００５３】
行のバージョンがトランザクションには新しすぎて見えない情報を含む場合、制御はステップ２０２へ渡る。その他の場合、制御はステップ２１４へ渡る。
【００５４】
スナップショット範囲
トランザクションについての単一のスナップショット時点の代わりに、データベースシステムの中には、MUST-SEE時点およびCANNOT-SEE時点を使用して各トランザクションについての依存性範囲を規定するものもあり、それは、読出すのに便利なバージョンを選択する上でより一層の柔軟性を提供し得る。このアプローチによれば、トランザクションは、コミット時点がMUST-SEE時点かそれより前の任意のトランザクションによってなされた変更を見なければならない。加えて、トランザクションは、コミット時点がCANNOT-SEE時点かそれより後の任意のトランザクションによってなされた変更を見ることができない。MUST-SEE時点およびCANNOT-SEE時点の概念は、上述のように引用により援用される出願に、より詳細に記載されている。
【００５５】
データ項目のバージョンの鮮度時点およびデータブロックのバージョンについてのEXCLUDE TIMEと併せて使用する場合、所与のトランザクションがデータブロックの或るバージョンを使用できるようになるには、２つの条件が満たされなければならない。第１に、所与のトランザクションのCANNOT-SEE時点は、データ項目のバージョンの鮮度時点よりも大きくなければならない。言い換えれば、データ項目のバージョンにその変更が反映された最新のトランザクションは、所与のトランザクションのCANNOT-SEE時点の前にコミットされていなければならない。第２に、所与のトランザクションのMUST-SEE時点は、データブロックのバージョンのEXCLUDE TIMEよりも小さくなければならない。言い換えれば、所与のトランザクションによって見られるべき変更を、データブロックのバージョンから除去することはできない。
【００５６】
たとえば、行の或る特定のバージョンが鮮度時点Ｔ３３を有し、行のそのバージョンが存在するデータブロックがEXCLUDE TIMEＴ３９を有すると仮定されたい。MUST-SEE時点Ｔ３０およびCANNOT-SEE時点Ｔ４０を有するトランザクションが、データブロックへのアクセスを要求する。鮮度時点がCANNOT-SEE時点よりも小さく、EXCLUDE TIMEがMUST-SEE時点よりも大きいため、データブロックのその特定のバージョンはこのトランザクションに供給可能である。
【００５７】
読出後のスナップショット範囲の更新
スナップショット範囲を使用する実施例では、範囲は、データ項目のバージョンがトランザクションに供給された後で調整されなければならない場合がある。たとえば、鮮度時点Ｔ１３のデータ項目のバージョンがトランザクションに提供される場合、トランザクションはその後、時点Ｔ１３の時点でコミットされた全データを見なければならない。したがって、トランザクションのMUST-SEE時点がデータ項目のそのバージョンを読出す前のＴ
１２である場合、トランザクションのMUST-SEE時点は、データ項目の読出後、時点Ｔ１３に調節されなければならない。したがって、トランザクションについてのMUST-SEE時点は、現在のMUST-SEE時点と鮮度時点との大きい方に変更される。
【００５８】
加えて、コミットされた或る特定のトランザクションによって変更が除去されたデータを読出す場合、読出トランザクションはその後、その特定のトランザクションにおいてまたはその後でコミットされたトランザクションによって任意のデータになされたどの変更も見ることができない。したがって、読出トランザクションについてのCANNOT-SEE時点は、トランザクションの現在のCANNOT-SEE時点と読出されたデータ項目を含むデータブロックのEXCLUDE TIMEとの小さい方に変更される。
【００５９】
利用可能な候補からの選択
上述のように、データ項目の或るバージョンがトランザクションに提供されると、CANNOT-SEE時点およびMUST-SEE時点が調節される。この調節の効果は、トランザクションが将来の読出において見るかもしれないスナップショットの範囲を狭くすることである。データ項目の異なる使用可能バージョンは、異なる方法で範囲に影響を与え得る。したがって、データ項目の使用可能バージョンがいくつか存在する場合、システムの効率は、どの使用可能バージョンがトランザクションに提供されるべきバージョンとして選択されるかに基づいて影響され得る。
【００６０】
一実施例によれば、候補のプールからの候補の選択は、候補を使用することが読出トランザクションのスナップショット範囲に対して有する影響に基づく。例示のため、候補バージョンのプールが以下を含むと仮定されたい。
【００６１】
【表１】
2005532615.tif 000003
データ項目を必要とするトランザクションが、MUST-SEE時点Ｔ１１およびCANNOT-SEE時点Ｔ３２を有すると仮定されたい。この筋書きでは、バージョンＶ１、Ｖ２およびＶ３はすべて、使用可能な候補である。なぜなら、全３バージョンについて、鮮度時点はCANNOT-SEE時点よりも小さく、MUST-SEE時点はEXCLUDE TIMEよりも小さいためである。
【００６２】
Ｖ１を提供することから生じる［MUST-SEE，CANNOT-SEE］範囲は［Ｔ１１，Ｔ３０］である。Ｖ２を提供することから生じる［MUST-SEE，CANNOT-SEE］範囲は［Ｔ１５，Ｔ３２］である。Ｖ３を提供することから生じる［MUST-SEE，CANNOT-SEE］範囲は［Ｔ１１，Ｔ２０］である。
【００６３】
一実施例によれば、トランザクションに提供するバージョンは、バージョンがトランザクションに提供された後に残る［MUST-SEE，CANNOT-SEE］範囲の大きさに基づいて、使用可能な候補から選択される。そのような実施例では、Ｖ１がトランザクションに提供される。なぜなら範囲［Ｔ１１，Ｔ３０］は他の範囲よりも広いためである。
【００６４】
代替的な一実施例によれば、トランザクションに提供するバージョンは、最新のCANNOT-SEE時点をもたらす候補に基づいて、使用可能な候補から選択される。そのような実施例では、Ｖ２がトランザクションに提供される。なぜなら、Ｔ３２は、他の候補のいずれか
を使用することから生じるCANNOT-SEE時点よりも遅いためである。この実施例は、たとえば、トランザクションにデータのより新しいバージョンを見させようとするので、有用である。
【００６５】
上述の実施例は単に、トランザクションに実際に提供される候補を候補のプールから選択するのに使用され得る基準の２例を例示している。代替的な実施例では、これらの例で規定された基準の代わりに、または基準に加えて、異なる基準が考慮されてもよい。さらに、実施例によっては、使用可能な候補のプールを識別するというよりもむしろ、識別される第１の使用可能な候補を単に提供するかもしれない。
【００６６】
ハードウェア概要
図３は、この発明に従った一実施例が実現され得るコンピュータシステム３００を示す。コンピュータシステム３００は、情報を通信するためのバス３０２または他の通信メカニズムと、情報を処理するためにバス３０２と結合されたプロセッサ３０４とを含む。コンピュータシステム３００はまた、プロセッサ３０４により実行されるべき命令および情報を記憶するためにバス３０２に結合された、ランダムアクセスメモリ（ＲＡＭ）または他のダイナミック記憶装置といったメインメモリ３０６も含む。メインメモリ３０６は、プロセッサ３０４により実行されるべき命令の実行中に一時的な変数または他の中間情報を記憶するためにも使用されてもよい。コンピュータシステム３００はさらに、プロセッサ３０４用の命令およびスタティック情報を記憶するためにバス３０２に結合された読出専用メモリ（ＲＯＭ）３０８または他のスタティック記憶装置を含む。磁気ディスクまたは光ディスクといった記憶装置３１０が、情報および命令を記憶するために提供され、バス３０２に結合されている。
【００６７】
コンピュータシステム３００は、情報をコンピュータユーザに表示するためのブラウン管（ＣＲＴ）などのディスプレイ３１２に、バス３０２を介して結合されていてもよい。英数字キーおよび他のキーを含む入力装置３１４が、情報およびコマンド選択をプロセッサ３０４に通信するためにバス３０２に結合されている。ユーザ入力装置の別の種類は、方向情報およびコマンド選択をプロセッサ３０４に通信し、ディスプレイ３１２上のカーソルの動きを制御するための、マウス、トラックボール、またはカーソル方向キーといったカーソル制御３１６である。この入力装置は通常、２つの軸、つまり第１の軸（たとえばｘ）および第２の軸（たとえばｙ）において２つの自由度を有しており、それによりこの装置は平面における場所を特定することができる。
【００６８】
この発明は、トランザクションがデータ項目の或るバージョンを使用できるかどうかの判断のためにコンピュータシステム３００を使用することに関する。この発明の一実施例によれば、トランザクションがデータ項目の或るバージョンを使用できるかどうかの判断は、プロセッサ３０４がメインメモリ３０６に含まれた命令のシーケンスを実行するのに応答して、コンピュータシステム３００により提供される。そのような命令は、記憶装置３１０などの別のコンピュータ読取可能な媒体からメインメモリ３０６に読込まれてもよい。メインメモリ３０６に含まれる命令のシーケンスの実行により、プロセッサ３０４は、ここに説明された処理ステップを行なうようになる。プロセッサ３０４の代わりに多重処理構成を使用して、処理ステップを行なってもよい。
【００６９】
代替的な実施例では、この発明を実現するために、ソフトウェア命令の代わりに、またはソフトウェア命令と組合わせて、配線接続回路が使用されてもよい。このため、この発明の実施例は、配線接続回路とソフトウェアとのどの特定の組合せにも限定されない。加えて、プロセッサ３０４の代わりに多重処理システムが採用されてもよい。
【００７０】
ここで用いられるような用語「コンピュータ読取可能な媒体」とは、プロセッサ３０４
に命令を実行用に提供することに関与するあらゆる媒体を指す。そのような媒体は、不揮発性媒体、揮発性媒体、および通信媒体を含むもののそれらに限定されない多くの形態を取り得る。不揮発性媒体はたとえば、記憶装置３１０などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ３０６などのダイナミックメモリを含む。通信媒体は、バス３０２を構成する配線を含む、同軸ケーブル、銅線および光ファイバを含む。通信媒体はまた、無線周波数および赤外線データ通信中に発生するものなどの音波または光波の形も取り得る。
【００７１】
コンピュータ読取可能な媒体の一般的な形態は、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、または任意の他の磁気媒体、任意の他の光媒体、パンチカード、紙テープ、孔のパターンを有する任意の他の物理的媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、任意の他のメモリチップまたはカートリッジ、いかに説明するような搬送波、または、コンピュータがそこから読取可能な任意の他の媒体を含む。
【００７２】
コンピュータ読取可能な媒体のさまざまな形態は、プロセッサに命令のシーケンスを実行用に搬送することに関与していてもよい。たとえば、命令はまず、遠隔コンピュータの磁気ディスク上で搬送されてもよい。遠隔コンピュータは、命令をそのダイナミックメモリにロードし、電話回線を通してモデムを用いて命令を送信することができる。コンピュータシステム３００にとってローカルなモデムは、電話回線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換することができる。バス３０２に結合された赤外線検出器は、赤外線信号で搬送されたデータを受信し、データをバス３０２上に配置することができる。バス３０２はデータをメインメモリ３０６に搬送し、そこからプロセッサ３０４は命令を検索して実行する。メインメモリ３０６によって受信された命令は、プロセッサ３０４による実行の前または後のいずれかで、記憶装置３１０上に随意に記憶されてもよい。
【００７３】
コンピュータシステム３００はまた、バス３０２に結合された通信インターフェイス３１８も含む。通信インターフェイス３１８は、ローカルネットワーク３２２に接続されたネットワークリンク３２０に双方向データ通信結合を提供する。たとえば、通信インターフェイス３１８は、データ通信接続を対応する種類の電話回線に提供するデジタル相互サービス網（ＩＳＤＮ）カード、またはモデムであってもよい。別の例として、通信インターフェイス３１８は、データ通信接続を互換性があるＬＡＭに提供するローカルエリアネットワーク（ＬＡＮ）カードであってもよい。無線リンクも実現され得る。任意のそのような実現化例では、通信インターフェイス３１８は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送信および受信する。
【００７４】
ネットワークリンク３２０は通常、１つ以上のネットワークを介して、他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク３２０は、ローカルネットワーク３２２を介して、ホストコンピュータ３２４に、またはインターネットサービスプロバイダ（ＩＳＰ）３２６により運営されるデータ装置に、接続を提供してもよい。ＩＳＰ３２６は次に、現在一般に「インターネット」３２８と呼ばれている全世界的パケットデータ通信ネットワークを介して、データ通信サービスを提供する。ローカルネットワーク３２２およびインターネット３２８は双方とも、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を使用する。コンピュータシステム３００へ、またはコンピュータシステム３００からデジタルデータを搬送する、さまざまなネットワークを通る信号、ネットワークリンク２２０上の信号、および通信インターフェイス３１８を通る信号は、情報を運ぶ搬送波の例示的な形態である。
【００７５】
コンピュータシステム３００は、ネットワーク、ネットワークリンク３２０および通信インターフェイス３１８を介して、メッセージを送信し、プログラムコードを含むデータを受信する。インターネットの例では、サーバ３３０は、アプリケーションプログラム用の要求されたコードを、インターネット３２８、ＩＳＰ３２６、ローカルネットワーク３２２、および通信インターフェイス３１８を介して送信してもよい。この発明によれば、そのようなダウンロードされたアプリケーションは、トランザクションがデータ項目の或るバージョンを使用できるかどうかを判断することに備える。
【００７６】
受信されたコードは、受信された際にプロセッサ３０４によって実行されてもよく、および／または、後の実行用に記憶装置３１０または他の不揮発性記憶装置に記憶されてもよい。このように、コンピュータシステム３００は、搬送波の形をしたアプリケーションコードを取得し得る。
【００７７】
前述の明細書において、この発明を、その特定の実施例を参照して説明してきた。しかしながら、この発明のより幅広い精神および範囲から逸脱することなく、様々な修正および変更がそれになされてもよいことは明らかである。明細書および図面はしたがって、限定的な意味というよりは例示的な意味で考えられるものとする。
【図面の簡単な説明】
【００７８】
【図１】この発明の一実施例に従った、トランザクションがデータ項目の或る特定のバージョンを使用できるかどうかを判断するための行レベルバージョン情報を保持するデータベースシステム１００のブロック図である。
【図２】この発明の一実施例に従った、トランザクションがデータ項目の或るバージョンを使用できるかどうかを判断するための方法を示すフローチャートである。
【図３】この発明に従った一実施例が実現され得るコンピュータシステム３００を示す図である。
【図１】
2005532615.tif 000004
【図２】
2005532615.tif 000005
【図３】
2005532615.tif 000006
【手続補正書】
【提出日】平成16年7月2日(2004.7.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
データ項目をトランザクションに提供するための方法であって、
データ項目の第１のバージョンを含み、かつ１つ以上の他のデータ項目を含むデータブロックの第１のバージョンを、揮発性メモリ内に配置するステップと、
データブロックの第１のバージョンがトランザクションにより使用可能かどうかにかかわりなく、かつ、１つ以上の他のデータ項目がトランザクションにより使用可能かどうかにかかわりなく、データ項目の第１のバージョンがトランザクションにより使用可能かどうかを判断するステップと、
データ項目の第１のバージョンがトランザクションにより使用可能である場合、前記データ項目を、前記トランザクションに提供可能な候補として確立するステップと、
データ項目の第１のバージョンがトランザクションにより使用可能ではない場合、トランザクションにより使用可能なデータ項目のバージョンを、前記第１のバージョンとは異なるデータブロックの第２のバージョンから取得するステップとを含む、方法。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１５
【補正方法】変更
【補正の内容】
【請求項１５】
データ項目をトランザクションに提供するための命令を搬送するコンピュータ読取可能媒体であって、命令は、
データ項目の第１のバージョンを含み、かつ１つ以上の他のデータ項目を含むデータブロックの第１のバージョンを、揮発性メモリ内に配置するステップと、
データブロックの第１のバージョンがトランザクションにより使用可能かどうかにかかわりなく、かつ、１つ以上の他のデータ項目がトランザクションにより使用可能かどうかにかかわりなく、データ項目の第１のバージョンがトランザクションにより使用可能かどうかを判断するステップと、
データ項目の第１のバージョンがトランザクションにより使用可能である場合、前記データ項目を、前記トランザクションに提供可能な候補として確立するステップと、
データ項目の第１のバージョンがトランザクションにより使用可能ではない場合、トランザクションにより使用可能なデータ項目のバージョンを、前記第１のバージョンとは異
なるデータブロックの第２のバージョンから取得するステップとを行なうための命令を含む、コンピュータ読取可能媒体。
【国際調査報告】
2005532615.tif 000007
2005532615.tif 000008
2005532615.tif 000009