JP2005503606A - 分散データベース環境での一貫した読取 - Google Patents
分散データベース環境での一貫した読取 Download PDFInfo
- Publication number
- JP2005503606A JP2005503606A JP2003502743A JP2003502743A JP2005503606A JP 2005503606 A JP2005503606 A JP 2005503606A JP 2003502743 A JP2003502743 A JP 2003502743A JP 2003502743 A JP2003502743 A JP 2003502743A JP 2005503606 A JP2005503606 A JP 2005503606A
- Authority
- JP
- Japan
- Prior art keywords
- data item
- clone
- version
- time
- query
- 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.)
- Granted
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99954—Version management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Insulated Conductors (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
Description
【0001】
優先権の主張および関連出願への相互参照
この出願は、アミット・ガネッシュ(Amit Ganesh)およびロジャー・J・バムフォード(Roger J. Bamford)によって2001年6月1日に出願された「分散データベース環境での一貫した読取(Consistent Read in a Distributed Database Environment)」と題される米国仮特許出願連続番号第60/295,104号(代理人処理番号50277−1621)に関連し、かつこの仮出願から国内優先権を主張し、その内容全体を、ここに十分に記載されるかのように引用により援用する。
【0002】
発明の分野
この発明は、分散データベース環境で、記憶されたデータにアクセスすることに関し、特に、データ項目を要求するトランザクションにデータ項目のどのバージョンを供給すべきかを判定するための方法および装置に関する。
【背景技術】
【0003】
発明の背景
典型的なデータベースシステムでは、ユーザは、コマンドまたはステートメントをデータベースアプリケーションにサブミットすることによって、情報を更新、検索および選択する。正しく処理されるためには、ステートメントはデータベースアプリケーションによってサポートされるデータベース言語に準拠していなければならない。広く使用されている1つのデータベース言語はStructured Query Language(SQL)として知られている。
【0004】
1つまたは複数のデータベース言語ステートメントを含む論理的な作業単位は、トランザクションと称される。データベース言語ステートメントの例は、データをデータベースに挿入するための挿入、およびデータベースのデータを選択するための照会である。
【0005】
複数のユーザがデータベースシステムを共有しているとき、一度に1つのトランザクションのみが実行されるようにすることは非現実的である。しかしながら、多くのトランザクションが同時に実行するのを許すと一貫性の問題が生じる。トランザクションデータベース管理システムは、ユーザまたはプログラムがトランザクションを構成するステートメントを詳細に記述するためにサブミットする特別のステートメント、「コミット(commit)」を設けている。トランザクションがコミットする前は、そのトランザクションによって行われたすべての変更は一時的なものと見なされ、そのトランザクションがコミットしないと除去される。トランザクションがコミットするとき、そのトランザクションによって行われたすべての変更は永久的なものとなり、それ以降は他のトランザクションによって見ることができる。
【0006】
予測可能かつ再生可能な結果を保証するため、同時に実行するトランザクションが制御されない形で相互作用し合うのを防止するための技術が開発されてきた。トランザクションは、データベースが全体として1つの一貫した状態から別の状態へと移行するように、データベースへの変更を行なうよう設計されている。
【0007】
トランザクションは完了時にデータベースを一貫した状態にしておかなければならないだけでなく、一貫した状態でデータベースを見なければならない。この条件を満たすのは難しい。なぜなら、同時に実行しているトランザクションがあり、その各々がその1つのトランザクションでのみ見える一時的な矛盾を引起こしているかもしれないためである。結果として、トランザクションは、同時に実行しているトランザクションがコミットするまで、それらトランザクションによって行われた変更を見ることができてはならない。
【0008】
ある照会の属するトランザクションが、同時に実行しているトランザクションによって行われた変更を見ないようにするための1つの方法は、データ項目のバージョンを更新したトランザクションがコミットするまで、更新されたデータ項目バージョンをトランザクションが読取るのを防止する方法である。しかしながら、この方法は、データ項目バージョンを読取りたいトランザクション(読取側)に、データ項目バージョンに書込んだトランザクション(書込側)がコミットするのを待たせることによって、システムの同時実行性を低減させる。
【0009】
同時に実行するトランザクションによって行われた変更を照会が見るのを防止するための別の方法は、照会に「スナップショット時間」を割当て、次に、(1)スナップショット時間前にコミットしたトランザクションによって行われた変更のすべてを照会に見せ、(2)スナップショット時間後にコミットしたトランザクションによって行われた変更を照会が見るのを防止する方法である。さらに具体的には、照会がトランザクションの一部であるとき、照会は、(1)照会のスナップショット時間またはその前にデータベースにコミットされたすべての変更、および(2)(そのトランザクションがまだコミットしていない場合でも)照会の属するトランザクションが行なったすべての変更を見なくてはならない。
【0010】
同じデータ項目の複数のバージョンがデータベースシステム内のキャッシュにあり得る。これらバージョンは、(1)現在の時点までにデータ項目に行われたすべての変更を含む、データ項目の現行バージョン(以降は現行バージョンと称する)、および(2)さまざまな時点で作られた現行バージョンのコピーか、または他のクローンのコピーである、現行バージョンのクローン(以降はクローンと称する)を含む。現行バージョンおよび現行バージョンのクローンからなるセットは、データ項目の「データ項目バージョン」と称する。
【0011】
照会がデータ項目の検索を指定するとき、データベースシステムはデータ項目のさまざまなバージョンのうちのどれを照会に提供できるかを判定しなければならない。所与の照会に関して、データ項目の各バージョンは次の2つの部類、つまり、(1)照会が見なければならないすべてのものを含むバージョン(照会が必要とするものについての将来の変更を有する。これら将来の変更はロールバックされることもあるが、データ項目の古いバージョンを時間的に前進させるのは難しい)、および(2)照会が見なければならない変更が欠落しているバージョンのうちの1つに分類される。
【0012】
一般に、ある特定の照会に関して第1の部類に分類されるデータ項目のバージョンは、照会が見ることのできない何らかの変更がデータ項目のそのバージョンから除去された後に、その特定の照会に答えるために使用することができる。データ項目のバージョンから変更を除去するプロセスは「ロールバック」と称される。ある特定の照会に関して第2の部類に分類されるデータ項目のバージョンは、その特定の照会に答えるために使用することはできない。
【0013】
照会にデータを供給するための1つの方法は、常にデータ項目の現行バージョンから始める方法である。定義では、データ項目の現行バージョンは、そのデータ項目に行われたすべての変更を有する。したがって、それは、すべての照会に対して部類1に属する。データ項目の現行バージョンを使用することは、(1)クローンを作り、(2)照会が見るべきでない変更をすべてクローンからロールアウトすることを必要とすることが多い。しかしながら、照会のスナップショット時間が古い場合、クローンから除去しなければならない変更が多数あり得るため、ロールバック動作が大量の時間および資源を消費することにつながる。さらに、常に現行バージョンから変更をロールバックすることは、単一ノードシステムでしかうまく作用しない。なぜなら、多重ノードシステムでは、現行バージョンがノードからノードへとクラスタ内で移動しているときにデータ項目の現行バージョンを追跡する状況で、データ項目に対する要求がとらえられ得るためである。
【0014】
システムが常に現行バージョンを使用してロールバック動作を開始するとは限らない場合、システムは、そのシステムが処理している照会に関してクローンがどの部類に分類されるかを判定できなければならない。ある所与の照会に関して、クローンが部類1に分類される場合、それらクローンはその照会にデータを供給するために使用することができる。クローンの分類を容易にするため、「除去されたデータの情報」を各データ項目バージョンとともに記憶してもよい。除去されたデータの情報は一般に、あるデータ項目バージョンに行われた変更のうちのどれがそのデータ項目のバージョンから後に除去されたかを示す。
【0015】
たとえば、データ項目の現行バージョンがクローンされてクローンXが作られたと仮定する。当初、クローンXの除去されたデータの情報は、どのデータも除去されていないと示す。クローンXにロールバック動作が行われて、トランザクションT1によって行われた変更が除去されると、クローンXの除去されたデータの情報は改訂され、T1によって行われた変更がクローンXから除去されたと示す。照会がT1によって行われた変更を見る必要がない場合は、クローンXはその照会にデータを供給するのに使用することができる(別のロールバック作業が必要な場合もあり得る)。照会がT1によって行われた変更を見る必要がある場合、クローンXはその照会にデータを供給するのに使用することはできない。
【0016】
残念なことに、除去されたデータの情報は、(1)そのデータ項目に行われた変更であって、(2)クローンにない変更のすべてを常に正確に示しているとは限らない。具体的には、除去されたデータの情報がクローンからデータは除去されていないと示す場合でも、照会が見なくてはならない変更がそのクローンから欠落している可能性がある。具体的には、照会は、クローンの作成後に現行バージョンに行われた変更を見る必要があり得る。したがって、この除去されたデータの情報は、データ項目バージョンから欠落している可能性のあるすべてのデータを判定するのには十分ではない。言換えれば、クローンは、そのクローンから除去されていない変更が欠落している可能性がある。
【0017】
以下は、クローンの除去されたデータの情報に反映されないデータがどのようにクローンから欠落し得るかの例である。あるトランザクションTXBが現行バージョンに更新を行なっている。現行バージョンがクローンされ、クローンYが生じる。TXBは現行バージョンへの更新を行ない続ける。この場合、クローンYからは、それがクローンされた後に現行バージョンに行われた変更が欠落しているが、クローンYの除去されたデータの情報は何らかの変更が欠落していることを示さない。
【0018】
除去されたデータの情報に反映されない変更がクローンから欠落しているかどうかを示す1つの方法は、データ項目の現行バージョンに更新が行われたときにすべての既存のクローンに「古い」と印を付けることである。クローンに「古い」と印を付ける動作は、これ以降、無効化と称する。しかしながら、クローンが多くのノードにわたって散在し得る多重ノードシステム(以降はクラスタと称する)では、これは非現実的である。なぜなら、データ項目の更新のすべてに対して、データ項目のクローンを含む可能性のあるクラスタ内のすべてのノードに無効化メッセージを一斉に送信しなければならないためである。
【発明の開示】
【発明が解決しようとする課題】
【0019】
上述のことに基づいて、データ項目のクローンがクラスタの複数のノードにあり得る場合に、どのデータ項目バージョンを照会に提供すればよいかを判定するためのメカニズムが必要とされている。
【課題を解決するための手段】
【0020】
発明の概要
この発明の一局面によると、照会を満足させるのにどのデータ項目のバージョンを使用可能であるかを判定するための技術が提供される。ここに説明される技術は、代替の技術の性能を大きく犠牲にすることなく、クラスタ環境内で使用することができる。さらに、照会の要求を満足させるために必要とする作業量が最も少ないバージョンを判定するための技術が提供される。一実施例によると、この技術は、
1) 第1の新しいフィールドを各クローンに関連付けるステップを伴い、第1の新しいフィールドはデータ項目バージョンが現行であった時間を示し、この技術はさらに、
2) 第2の新しいフィールドを各照会に関連付けるステップを伴い、第2の新しいフィールドは照会が見なければならないトランザクションによって行われた最後の変更を示し、この技術はさらに、
3) クローンの第1の新しいフィールドの値、および照会の第2の新しいフィールドの値を使用して、クローンを照会に供給してもよいかを判定するステップを伴う。
【発明を実施するための最良の形態】
【0021】
添付の図面の中で、この発明の実施例を限定ではなく、例によって説明する。図中、同様の参照番号は同様の要素を示す。
【0022】
好ましい実施例の詳細な説明
データベースからデータ項目バージョンを供給して照会に答えるための方法およびシステムを説明する。以下の説明では、説明のため、多数の具体的な詳細を示してこの発明を完全に理解できるようにしている。しかしながら、当業者には、これら具体的な詳細なしにこの発明を実現できることが明らかであろう。場合によっては、周知の構造および装置をブロック図の形で示して、不必要にこの発明をわかりにくくするのを避けた。
【0023】
機能の概要
データベースの一貫したスナップショットを見なければならない照会のために、クラスタ内の複数のノードのうちの1つにあるデータ項目のバージョンを探すための技術が提供される。上述のように、そのような照会は、(1)コミットされたトランザクションの特定のセットによってデータベースにコミットされた変更、および(2)照会が属するトランザクションの以前のステートメントによって行われた変更のみを見なければならない。
【0024】
一実施例によると、この技術は、各クローンとともにクローン時間を記憶し、各照会とともに見るべき最後のタイムスタンプを記憶することを伴う。以下のセクションでは、どのようにこれら付加的な情報項目を確立し、維持しかつ使用して、特定のクローンを特定の照会に供給してもよいかを判定するかを説明する。
【0025】
グローバルシステム時間
グローバルシステム時間は、データベースシステムによって維持されるカウンタである。通常、このカウンタは時とともに増加する。データベースイベントのシーケンスを追跡するため、イベントは、グローバルシステム時間によって示される時間にデータベースシステムで起こったとして印を付けられる。たとえば、グローバルシステム時間10で起こるイベントは、グローバルシステム時間11で起こる何らかの他のイベントより前に起こったと見なされる。詳しく後述するように、グローバルシステム時間は、クローンのクローン時間、および照会の見るべき最後のタイプスタンプの両方に使用されるタイムスタンプを作成するために使用される。
【0026】
クローン時間
上述のように、除去されたデータの情報は各クローンとともに記憶されて、そのクローンから除去された変更がある場合は、その変更を示す。しかしながら、除去されたデータの情報は、クローンの作成後に現行バージョンに行われた変更がそのクローンから欠落しているかどうかは示さない。この後者の種類の変更の欠落の追跡を容易にするため、「クローン時間」が各クローンとともに記憶される。
【0027】
一般に、クローンのクローン時間は、そのクローンが属する「クローン分岐」がデータ項目の現行バージョンからクローンされた時間を示す。ある特定のクローンが属するクローン分岐は、(1)その特定のクローンを生成したクローン動作にかかわるすべてのクローン、および(2)その特定のクローンが使用されて生成されるすべてのクローンを含む。
【0028】
以下の例では、クローン、クローン分岐およびクローン時間をさらに詳細に説明する。データ項目の非現行バージョンは、すべて、現行バージョンからクローンされたか、またはデータ項目の別の非現行バージョンからクローンされている。したがって、データ項目の非現行バージョンはすべて、1つまたは複数のクローン動作のシーケンスの産物である。たとえば、図2は現行バージョン200を示す。時間T=10では、現行バージョン200の第1のクローン201が現行バージョンから作成される。クローン201が現行バージョン200からクローンされるとき、グローバルシステム時間からクローン時間が割当てられる。
【0029】
クローン202はクローン201のクローンである。クローン202は、T=12でクローン201からクローンされる。クローン201はT=12で作成されているが、現行バージョン200からT=10でクローンされたクローン分岐に属する。結果として、クローン202は、クローン時間T=10を割当てられる。
【0030】
クローン203は、T=15で作られたクローン202のクローンであり、これもクローン時間T=10を割当てられる。クローン204は、T=17で作られたクローン203のクローンであり、これもクローン時間T=10を割当てられる。したがって、すべてのクローン(201、202、203および204)は同じクローン分岐に属し、クローン201に当初割当てられた同じクローン時間T=10を有する。
【0031】
したがって、現行バージョンから直接作られたクローンに割当てられたクローン時間は、そのクローンが作成されたグローバルシステム時間である。別のクローンから作られたクローンに割当てられるクローン時間は、そのクローンがそこから作られた別のクローンのクローン時間である。
【0032】
クローン時間とともに、除去されたデータの情報を使用することによって、クローン時間の前にデータ項目に行われたすべての変更が(1)データ項目バージョンに反映されているか、または(2)除去されたデータの情報によって除去されたと識別されていると知ることができる。
【0033】
見るべき最後のタイムスタンプ
一実施例によると、各クローンにクローン時間を割当てるのに加え、データベースの一貫した表示を見なければならない各照会に、見るべき最後のタイムスタンプが割当てられる。一実施例によると、トランザクションの一部である照会に割当てられる、見るべき最後のタイムスタンプは、トランザクションが、照会が見なくてはならない最も最近の変更を行なったグローバルシステム時間の値である。
【0034】
たとえば、照会Q1が、トランザクションTX1の一部であり、TX1が時間T=1、T=2、T=3、T=4およびT=5のそれぞれでデータベースに変更を行なったと仮定する。Q1はTX1の最初の3つの変更を見なくてはならないと仮定する。この条件では、Q1に割当てられる、見るべき最後のタイムスタンプはT=3であり、これはTX1が第3の変更を行なったグローバルシステム時間である。
【0035】
クローン時間と見るべき最後のタイムスタンプとの比較
通常、クローンの除去されたデータの情報は、変更がそのクローンに反映されている最も最近のトランザクションのコミット時間を示す。説明のため、以降は、この値を最も最近の取込時間と称する。
【0036】
クローンが、時間10、12および15でコミットしたトランザクションからのデータを含む場合、そのクローンの最も最近の取込時間はコミット時間14を示し、これはトランザクションのコミット時間(たとえば15)から1を引いたものである。時間15でコミットしたトランザクションによって行われた変更がクローンから除去された場合、最も最近の取込時間は12に変更される。
【0037】
以前は、クローンの除去されたデータの情報が、そのクローンから変更が除去されていないことを示す場合でも、クローンの最も最近の取込時間が照会のスナップショット時間より前であれば、そのクローンは照会を満足させるのに使用することはできなかった。たとえば、クローンの除去されたデータの情報が、そのクローンから変更が除去されていないことを示す場合でも、最も最近の取込時間が14であるクローンを用いて、スナップショット時間20を備えた照会を満足させることはできなかった。このクローンを使用することができなかったのは、(1)そのクローンの作成後であって、かつ(2)その照会のスナップショット時間の前に、現行バージョンに変更が行われた可能性があったためである。さらに、グローバルな無効化が不経済であるため、以前は、データ項目の無効化では、バージョンはローカルで無効化され、遠隔のデータ項目のバージョンは使用することができなかった。
【0038】
照会とともに最後の見るべきタイムスタンプを維持し、かつクローンとともにクローン時間を維持することによって、無効化を行なうことなく、クラスタにわたってデータ項目バージョンを使用することができる。具体的には、クローンのクローン時間が照会の見るべき最後のタイムスタンプより大きいかまたは等しく、かつスナップショット時間が最も最近の取込時間よりも小さい場合、そのデータ項目バージョンを使用することができる。
【0039】
一実施例によると、見るべき最後のタイムスタンプは、グローバルシステム時間の値に設定されて、「最後の変更のシーケンス番号」の値に関連付けられる変更をトランザクションが行なった時間を示す。最後の変更のシーケンス番号は、照会が属するトランザクションによって行われた、照会が見なければならない最上位の変更のシーケンス番号である。
【0040】
データ項目バージョンに対して維持されるデータ
上述のように、照会が見る必要がある変更、つまり、1)データ項目バージョンからロールアウトされた変更、および2)データ項目の現行バージョンからそのデータ項目バージョンがクローンされた後にデータ項目の現行バージョンに行われた変更が、データ項目バージョンから欠落するのには2つの過程がある。データ項目バージョンからロールアウトされた変更を「除去されたデータ」と称し、このデータを追跡するのに必要な情報を「除去されたデータの情報」と称する。
【0041】
除去されたデータの情報はデータ項目バージョンのすべてに関連付けられる。この除去されたデータの情報は以下のものを含む。
【0042】
1) 最も最近の取込時間
これは、データ項目バージョンから変更が除去されていない最も最近のトランザクションのコミット時間である。データ項目の現行バージョンでは、最も最近の取込時間は常に無限大である。あるデータ項目バージョンから変更がロールアウトされるとき、そのデータ項目バージョンの最も最近の取込時間は、最も最近のトランザクションのコミット時間を反映するために更新され、そのデータ項目バージョンから変更が除去されなかったデータ項目バージョンを変更する。たとえば、トランザクションTXA、TXBおよびTXCが、ある特定のデータ項目バージョンに対し、時間5、10、15でそれぞれ変更をコミットし、次に、TXCからの変更がロールアウトされると、最も最近の取込時間は10にセットされる。TXBからの変更がロールアウトされると、最も最近の取込時間は5にセットされる。
【0043】
2) 最新の欠落しているトランザクション
これは、データ項目バージョンから変更が欠落している最後のトランザクションの識別子である。言換えれば、最新の欠落しているトランザクションは、データ項目バージョンから最後に変更がロールアウトされたトランザクションのトランザクション識別である。
【0044】
3) 最も最近の欠落している変更のシーケンス番号
これは、最新の欠落しているトランザクションによって行われた最も最近の欠落している変更のシーケンス番号である。たとえば、最新の欠落しているトランザクションが、ある特定のデータ項目に4つの変更を行ない、その4つの変更がシーケンス番号11、25、32および50に関連付けられるとする。そのデータ項目バージョンから変更がロールアウトされない場合、最も最近の欠落している変更のシーケンス番号はゼロにセットされる。変更のすべてが除去された場合、最も最近の欠落している変更のシーケンス番号は11にセットされる。
【0045】
4) ロールアウトされた他のトランザクションの識別子
これは、最新の欠落しているトランザクション以外のトランザクションによって行われた変更がこのデータ項目バージョンからロールアウトされた場合にセットされるビットである。
【0046】
図1は、この発明の一実施例によるデータ項目バージョン100を示すブロック図であり、トランザクションはデータ項目バージョン100を更新しており、除去されたデータの情報がデータ項目バージョン100について維持されている。データ項目バージョン100はデータ106を含み、それに関連付けられる除去されたデータの情報を有する。除去されたデータの情報は、最も最近の取込時間102、最新の欠落しているトランザクション103、最も最近の欠落している変更のシーケンス番号104、およびロールアウトされた他のトランザクションの識別子105を含む。
【0047】
除去されたデータの情報のさまざまな構成要素をどのように維持するかを示すため、3つのトランザクションがデータ項目バージョン100に更新を行なったと仮定する。これらトランザクションはTXA110、TXB111およびTXC112である。TXA110はグローバルシステム時間10でコミットした。TXB111はグローバルシステム時間12でコミットした。TXC112はグローバルシステム時間14でコミットした。
【0048】
データ項目バージョン100が現行データバージョンであり、最も最近の取込時間が無限大であると仮定すると、最新の欠落しているトランザクションはゼロにセットされ、ロールアウトされた他のトランザクションの識別子はセットされない。最も最近の欠落している変更のシーケンス番号はゼロにセットされる。
【0049】
データ項目バージョン100にロールアウトが行われてTXCの変更のすべてがロールアウトされたと仮定する。さらに、TXCがシーケンス番号11、25、32および50の変更を行なったと仮定する。すると、データ項目バージョン100の最も最近の取込時間は13、つまりTXCのコミット時間から1を引いたものであり、最新の欠落しているトランザクションはTXB、最も最近の欠落している変更のシーケンス番号は11となり、ロールアウトされた他のトランザクションの識別子がセットされる。なぜなら、TXCによって行われた変更がデータ項目バージョンからロールアウトされたためである。
【0050】
次に、TXB111によって行われた変更のすべてではなく、一部がデータ項目バージョンからロールアウトされる場合、1つの技術は、最新の欠落しているトランザクションを、現在データバージョン100を読取っているトランザクションにセットし、かつロールアウトされた他のトランザクションの識別子をYESにセットすることである。最も最近の欠落している変更のシーケンス番号は、読取側の最後の変更のシーケンス番号に1を加えたものにセットされる。読取側の照会のコンテクストのトランザクション識別が活性化していない場合(すなわち、スナップショットがとられたときにトランザクションが変更を行なっていなかった場合)、最も最近の欠落している変更のシーケンス番号は、読取側の最後の変更のシーケンス番号に1を加えたものにセットされない。なぜなら、これを行なう必要はないためである。
【0051】
既に述べたように、上述のフィールドは、除去されたデータについて情報を維持するために使用されるため、まとめて除去されたデータの情報と称される。しかしながら、除去されたデータの情報は、あるデータ項目バージョンがクローンされた後にデータ項目の現行バージョンに変更が行われたかどうかを判定するには不十分である。
【0052】
照会について維持されるデータ
照会はすべてコンテクストを有し、これは実行環境を記述する。一実施例によると、照会に関連付けられるコンテクスト情報は、次のものを含む。
【0053】
1) 照会が見なければならない時間を示すスナップショット
これは、照会が見なければならないデータベースのスナップショットに関連付けられる時間を示す。たとえば、照会が見なければならない時間を示すスナップショットが10である場合、その照会はT=10の時点かまたはそれ以前にデータベースにコミットされたすべての変更を見なければならず、T=10の後にデータベースにコミットされた変更は見ることはできない。照会が見なければならない時間を示すスナップショットは、通常、照会が開始されたときにセットされ、システムグローバル時間の現在の値にセットされる。
【0054】
2) 照会が属するトランザクション
照会がトランザクションの一部である場合、照会が属するトランザクションは、そのトランザクションを識別する。照会がトランザクションの一部でない場合、照会が属するトランザクションは使用されない。
【0055】
3) 最後の変更のシーケンス番号
これは、照会が属するトランザクションによって行われ、照会が見なければならない最上位の変更のシーケンス番号である。
【0056】
計算
クローン時間および見るべき最後のタイムスタンプは、照会に供給するデータ項目バージョンを効率よく識別するため、上述の除去されたデータの情報および照会のコンテクスト情報を維持するシステムで使用することができる。
【0057】
詳しく後述するように、この情報は、どのデータ項目バージョンを使用できるかを識別するために使用できるだけでなく、必要とされるロールアウトが最も少ないデータ項目バージョンを識別するためにも使用することができる。これら計算には、データ項目バージョンに関連付けられた除去されたデータの情報、および照会に関連付けられたコンテクスト情報がかかわる。これら計算は以下のとおりである。
【0058】
1.スナップショット時間<=最も最近の取込時間&&
2.見るべき最後のタイムスタンプ<=クローン時間&&
3.(照会が属するトランザクションは照会に対してトランザクションを示さない||
クローンに対する最新の欠落しているトランザクションはない||
照会が属するトランザクション<>最新の欠落しているトランザクション)よって、
データ項目バージョンを使用することができる。
【0059】
上述の論理は、以下に示す記号を使用した。
【0060】
1) 「=」は等しいことを示す。
【0061】
2) 「<」は小なりを示す。
【0062】
3) 「>」は大なりを示す。
【0063】
4) 「<>」は等しくないことを示す。
【0064】
5) 「>=」は大なりか、または等しいことを示す。
【0065】
6) 「<=」は小なりか、または等しいことを示す。
【0066】
7) &&はAND論理を示す。
【0067】
8) ||はOR論理を示す。
【0068】
ベクトル
一実施例によると、分散ロックマネージャ(以降はDLMと称する)が、どのノードが最小の作業量で照会の要求を満足させるデータ項目バージョンを有する最良の候補であるかを判定できるように情報のベクトルが設けられる。ベクトルは特定のデータ項目に関連付けられ、その特定のデータ項目のデータ項目バージョンについての情報を含む。具体的には、ベクトルはクラスタ内のすべてのノードに対してノード識別子のリストを含み、各ノードで、その特定のデータ項目に対するすべてのデータ項目バージョンについて、クローン時間をこれらノード識別子に関連付ける。
【0069】
たとえば、図3を参照すると、ある特定のデータ項目についてのベクトル300は、3つのノード、ノード1 310、ノード2 320、ノード3 330を有する。ノード1 310は、キャッシュ内にその特定のデータ項目の3つのバージョンを含む。これらデータ項目バージョンは、各々それらに関連付けられたクローン時間を有する。クローン時間はベクトル300に反映され、ノード1 310に関連付けられる。具体的には、クローン時間−ノード−ベクトルの関連付け311は、クローン時間1を含み、クローン時間−ノード−ベクトルの関連付け312はクローン時間3を含み、クローン時間−ノード−ベクトルの関連付け313は、クローン時間11を含む。
【0070】
ノード2 320はキャッシュ内に1つのデータ項目バージョンを含む。このデータ項目バージョンのクローン時間は15であり、これはベクトル300に反映され、ノード2
320に関連付けられる。クローン時間−ノード−ベクトルの関連付け314はクローン時間15を含む。
【0071】
ノード3 330はキャッシュ内に2つのデータ項目バージョンを含む。これらデータ項目バージョンは、各々それらに関連付けられたクローン時間を有し、これらはベクトル300に反映され、ノード2 330に関連付けられる。クローン時間−ノード−ベクトルの関連付け315は、クローン時間16を含み、クローン時間−ノード−ベクトルの関連付け316はクローン時間20を含む。
【0072】
最良の候補を探すためのベクトルの使用
照会が見なければならないものをすべて含むデータ項目バージョンは、その照会に供給するための候補である。どの候補でも機能するものの、一般に、最良の候補を選ぶことが好ましい。一般に、第1の候補を照会に供給するのに必要とされるオーバーヘッドが、第2の候補を供給するのに必要とされるものより小さい場合、第1の候補は第2の候補よりも優れている。オーバーヘッドの1つの構成要素は、照会が見ることのできない変更をロールアウトすることを伴う。一般に、ロールアウトする必要のある変更が少ないほど、その候補は優れている。図4は、データベースシステム400を示し、これは3つのノード(ノード1 310、ノード2 320、ノード3 330)および分散ロックマネージャ(たとえばDLM)440を有する。各ノードは、DLMに関連付けられたローカルロックマネージャ(以降はLLMと称する)およびキャッシュを有する。
【0073】
ノード1 310は、キャッシュ411およびLLM441を有する。ノード2 320は、キャッシュ421およびLLM442を有する。ノード3 330は、キャッシュ431およびLLM443を有する。LLM441、442および443は、3つのノード(310、320、330)に関連付けられるだけでなく、DLM440にも関連付けられる。
【0074】
この例のため、図3のベクトル300がDML440によって使用されていると仮定する。次に、照会450がノード2 320で実行していると仮定する。ノード2 320上の照会450は、次のコンテクストの値を有する。
【0075】
【表1】
【0076】
ノード1 310では、照会450がデータ項目バージョン460を作成し始めた後に、データ項目バージョン460はキャッシュ411内でクローンされる。次の値がデータ項目バージョン460に関連付けられると仮定する。
【0077】
【表2】
【0078】
さらに、ロールアウトは行なわれていないため、データ項目バージョンは図3に示されるクローン時間−ノード−ベクトル内のクローン時間に等しい最も新しい取込時間を有すると仮定する。
【0079】
上述の仮定の下では、照会450はDLM440からデータ項目を要求する。DLM330はベクトルをチェックし、ノード1 310が、ノード1に関連付けられたデータ項目バージョンに対して最も新しい取込時間11を有することを発見する(図3を参照、クローン時間−ノード−ベクトル313は11である)。この最も最近の取込時間は、すべての最も最近の取込時間の中で照会の見るべき最後のタイムスタンプに最も近いため、DLM440は照会の要求をノード1 310に送る。ノード1 310での処理は、キャッシュ411を走査して、照会の要求に最も好適なデータ項目バージョンを探す。このプロセスは、最も最近の取込時間11を備えたデータ項目バージョン(図3を参照、クローン時間−ノード−ベクトル313)が最良の選択だと仮定しない。なぜなら、照会450の要求がノード1 310に到着するまでに、よりよいデータ項目バージョンが利用可能となり得るからである。図示の例では、正にこれが当てはまる。具体的には、ノード1 310はクローン時間10を備えたデータ項目バージョンを含み、これは照会の見るべき最後のタイムスタンプ9に最も近い。計算のセクションで概要を述べたように計算が行なわれ、照会の値がデータ項目バージョンの値と比較される。これら計算に基づいて、一旦ロールアウトが行なわれると、データ項目バージョン460は照会450の要求を満足させると判定される。最後の変更のシーケンス番号が71よりも大きい変更はロールアウトされ、ロールアウトの数は変更のシーケンス番号に依存する。データ項目バージョン460は、照会450の要求を満たすのに使用できるため、データ項目バージョン460はノード2 320に送られる。
【0080】
他の用途
この発明は、上述の例以外にも多くの用途がある。たとえば、ここで説明した技術は、システムのセッションについてデータを維持する状況で用いることができる。また、この技術は、分散したキャッシュを保持し、分散したキャッシュを含むさまざまなキャッシュ内のデータを同期させる必要のある多重ノードシステムでも使用可能である。
【0081】
ハードウェアの概要
図5は、この発明の実施例を実現可能なコンピュータシステム500を示すブロック図である。コンピュータシステム500は、情報を通信するためのバス502またはその他の通信機構、および情報を処理するためのバス502に結合されたプロセッサ503を含む。コンピュータシステム500は、バス500に結合された、ランダムアクセスメモリ(RAM)またはその他の動的記憶装置などのメインメモリ506を含み、プロセッサ503によって実行される情報および命令を記憶する。メインメモリ506も、プロセッサ503によって実行される命令の実行中に一時的な変数またはその他の中間情報を記憶するために使用してもよい。コンピュータシステム500は、バス500に結合された、リードオンリメモリ(ROM)508またはその他の静的記憶装置をさらに含み、プロセッサ503のために静的情報および命令を記憶する。磁気ディスクまたは光ディスクなどの記憶装置510も設けられ、バス502に結合されて情報および命令を記憶する。
【0082】
バス502を介して、コンピュータシステム500をブラウン管(CRT)などの表示装置502に結合し、情報をコンピュータのユーザに表示してもよい。英数字キーおよびその他のキーを含む入力装置513はバス502に結合されて、情報およびコマンドの選択をプロセッサ503に通信する。別の種類のユーザ入力装置は、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御516であり、方向情報およびコマンドの選択をプロセッサ503に通信し、表示装置512上でのカーソルの動きを制御する。入力装置は通常、第1の軸(たとえばX軸)および第2の軸(たとえばY軸)での2つの自由度を有し、これによって装置は平面での位置を特定することができる。
【0083】
この発明は、トランザクションに与えるべきデータ項目の特定のバージョンを選択するためにコンピュータシステム500を使用することに関する。この発明の一実施例によると、トランザクションに与えるべきデータ項目の特定のバージョンの選択は、プロセッサが、メインメモリ506に含まれる1つまたは複数の命令の1つまたは複数のシーケンスを実行することに応答して、コンピュータシステム500によって行なわれる。そのような命令は、記憶装置510などの別のコンピュータ読取可能な媒体から読込まれてもよい。メインメモリ506に含まれる命令のシーケンスの実行は、ここに説明されるプロセスのステップをプロセッサ503に行なわせる。メインメモリ506に含まれる命令のシーケンスを実行するため、1つまたは複数のプロセッサを多重処理配置で用いてもよい。代替の実施例では、配線で接続された(hard-wired)回路をソフトウェアの命令の代わりに、またはそれと組合せて使用して、この発明を実現してもよい。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアの特定の組合せに限定されない。
【0084】
ここで使用される「コンピュータ読取可能な媒体」という言葉は、命令をプロセッサ503に与えて実行させるのに参加する媒体を指す。そのような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むさまざまな形を取り得るが、これらに限定されない。不揮発性媒体は、たとえば、記憶装置510などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ506などの動的メモリを含む。伝送媒体は、バス502を含むワイヤを含め、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、無線通信中または赤外線データ通信中に生成されるような音波または光波の形も取り得る。
【0085】
コンピュータ読取可能な媒体に一般的な形は、たとえば、フロッピー(R)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、または他の磁気媒体、CD−ROM、他の光学媒体、パンチカード、紙テープ、孔のパターンを備えた他の物理的な媒体、RAM、PROM、EPROM、FLASH−EPROM、他のメモリチップまたはカートリッジ、後述する搬送波、またはコンピュータがそこから読取ることのできる他のあらゆる媒体を含む。
【0086】
さまざまな形のコンピュータ読取可能な媒体が、1つまたは複数の命令の1つまたは複数のシーケンスをプロセッサ503に運んで実行させるのにかかわり得る。たとえば、最初、命令は遠隔コンピュータの磁気ディスク上で保持されてもよい。遠隔コンピュータは命令を動的メモリにロードし、その命令をモデムを使用して電話線上で送ることができる。コンピュータシステム500のローカルモデムはデータを電話線上で受取り、赤外線トランスミッタを使用してデータを赤外線信号に変換することができる。バス502に結合された赤外線検出器は、赤外線信号で運ばれるデータを受取り、そのデータをバス502上に位置付けることができる。バス502はメインメモリ506にデータを運び、そこからプロセッサ503が命令を検索および実行する。メインメモリ506によって受取られる命令は任意で、プロセッサ503による実行の前後に記憶装置510で記憶してもよい。
【0087】
コンピュータシステム500は、バス502に結合された通信インターフェイス518も含む。通信インターフェイス518は、ローカルネットワーク522に接続されるネットワークリンク520に結合する2方向のデータ通信を提供する。たとえば、通信インターフェイス518は、対応する種類の電話線にデータ通信接続を提供する総合的デジタル通信網(ISDN)カードまたはモデムであってもよい。別の例では、通信インターフェイス518は、互換性LANへのデータ通信接続を提供するローカルエリアネットワーク(LAN)カードであってもよい。無線リンクも実現可能である。そのような実現例では、通信インターフェイス518は、さまざまな種類の情報を表わすデジタルデータストリームを運ぶ電気信号、電磁気信号または光信号を授受する。
【0088】
ネットワークリンク520は、通常1つまたは複数のネットワークを介して、他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク520は、ローカルネットワーク522を介して、ホストコンピュータ523またはインターネットサービスプロバイダ(ISP)526によって運用されるデータ装置への接続を提供し得る。ISP526は、現在では一般に「インターネット」528と称される世界規模のパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク522およびインターネット528はともにデジタルデータストリームを運ぶ電気信号、電磁気信号または光信号を使用する。さまざまなネットワークを通る信号およびネットワークリンク520上の信号ならびに通信インターフェイス518を通る信号は、コンピュータシステム500とデジタルデータを授受するが、これらは情報を搬送する搬送波の例示的な形である。
【0089】
コンピュータシステム500は、ネットワーク、ネットワークリンク520および通信インターフェイス518を通じて、プログラムコードを含むメッセージを送りデータを受取ることができる。インターネットの例では、サーバ530は、アプリケーションプログラムに対して要求されたコードをインターネット528、ISP526、ローカルネットワーク522および通信インターフェイス518を通じて送信することができる。この発明によると、そのような1つのダウンロードされたアプリケーションによって、トランザクションに与えるべきデータ項目の特定のバージョンを選択することが可能になる。
【0090】
受取られたコードは、受取られるときにプロセッサ503によって実行してもよいし、および/または記憶装置510または他の不揮発性記憶装置に記憶して後に実行してもよい。このような態様で、コンピュータシステム500は搬送波の形でアプリケーションコードを入手することができる。
【0091】
結論
ここに説明される技術は、以下のステップによって、照会に供給することのできるデータ項目バージョンを判定し、照会を満足させるのに必要とする作業量が最少であるデータ項目を判定することができる。
【0092】
1) 第1の新しいフィールドを各クローンに関連付けるステップ。第1の新しいフィールドは、データ項目バージョンが現行であった時間を示す。
【0093】
2) 第2の新しいフィールドを各照会に関連付けるステップ。第2の新しいフィールドは、照会が見なくてはならないトランザクションによって行なわれた最後の変更を示す。
【0094】
3) クローンの新しい第1のフィールドの値、および照会の第2の新しいフィールドの値を使用して、クローンを照会に供給してもよいかを判定するステップ。
【0095】
このメカニズムは、以下のことを必要とすることなく、目的を達成した。
【0096】
1) クラスタ内のすべてのノードにわたってメッセージを一斉送信して、データ項目の非現行バージョンのすべての更新または無効化を行なうこと。
【0097】
2) ロックを入手すること、または
3) 過度なロールアウトを行なうこと。
【0098】
したがって、このメカニズムは、最少の作業量で照会を満足させる適切なデータ項目バージョンを提供することができる。
【図面の簡単な説明】
【0099】
【図1】あるデータ項目バージョンおよびそれを更新したトランザクションのブロック図である。
【図2】クローン分岐のブロック図である。
【図3】ベクトルのブロック図である。
【図4】この発明の一実施例によるデータベースシステムのブロック図である。
【図5】この発明の実施例を実現できるコンピュータシステムのブロック図である。
Claims (22)
- データ項目のどのバージョンをセッションに供給すべきかを判定するための方法であって、前記方法はコンピュータで実現される以下のステップを含み、前記以下のステップは、
前記セッションに関連付けられ、前記セッションによって見られなくてはならない前記セッション内で行なわれた最後の変更の時間を示す、見るべき最後のタイムスタンプを維持するステップと、
データ項目バージョンが現行であった時間を示すクローン時間を前記データ項目バージョンとともに維持するステップと、
少なくとも部分的に前記クローン時間と前記見るべき最後のタイムスタンプとの比較に基づいて、前記データ項目バージョンを前記セッションに供給すべきだと判定するステップとを含む、方法。 - 前記判定するステップは、前記クローン時間と前記見るべき最後のタイムスタンプとの前記比較に基づいて、前記セッションに与えるのに適格である複数のデータ項目バージョンから前記データ項目バージョンを選択するステップを含む、請求項1に記載の方法。
- 照会を含むトランザクションは前記セッションで実行しており、
前記見るべき最後のタイムスタンプは、前記照会に関連付けられ、前記照会によって見られなくてはならない前記トランザクションによって行なわれた最後の変更の時間を示し、
前記データ項目バージョンを前記セッションに供給すべきだと判定する前記ステップは、前記データ項目バージョンを使用して前記照会に答えるべきだと判定することによって行なわれる、請求項1に記載の方法。 - 前記データ項目バージョンが現行バージョンからクローンされるときに、グローバルクロックに基づいて前記クローン時間をセットするステップをさらに含む、請求項1に記載の方法。
- 前記データ項目バージョンが非現行データ項目バージョンからクローンされるときに、前記非現行データ項目バージョンのクローン時間に基づいて、前記クローン時間をセットするステップをさらに含む、請求項1に記載の方法。
- クラスタ内の複数のノードは前記データ項目に対してデータ項目バージョンを有し、前記方法は、
前記複数のノードの各のノードに対して、前記データ項目についてのクローン時間情報を維持するステップと、
前記クローン時間情報に基づいて、前記データ項目に対する要求を送るべきノードを選択するステップとを含む、請求項1に記載の方法。 - クローン時間情報を維持する前記ステップは、前記データ項目に対して、ノードをクローン時間に関連付けるベクトルを維持するステップを含み、前記ベクトル内のある所与のノードに関連付けられるクローン時間は、前記所与のノードにあるデータ項目バージョンに関連付けられるクローン時間である、請求項6に記載の方法。
- 前記判定するステップは、
除去されたデータの情報に基づいて、見られなければならない変更が前記データ項目バージョンから除去されたかを判定するステップと、
前記クローン時間に基づいて、データ項目バージョンの作成後に、見られなければならない情報が前記データ項目の現行バージョンに合わせて作成された可能性があるかを判定するステップとを含む、請求項1に記載の方法。 - データベースのある特定のスナップショットを見なければならない照会にデータ項目を供給する方法であって、
複数のノード内にある複数のデータ項目バージョンに対して、前記データ項目バージョンが現行であった時間を示すクローン時間情報を維持するステップと、
少なくとも部分的に前記クローン時間情報に基づいて、前記複数のデータ項目バージョンのうちのどのデータ項目バージョンが、前記照会によって見られなくてはならない変更をすべて含むかを判定するステップと、
前記照会によって見られなければならない変更をすべて含むデータ項目バージョンから前記照会に供給するデータ項目バージョンを選択するステップとを含む、方法。 - 前記判定するステップは、
データ項目バージョンに関連付けられるクローン時間に基づいて、前記照会によって見られなければならない変更が前記データ項目バージョンの作成後に前記データ項目に行なわれた可能性があるかを判定するステップと、
前記データ項目バージョンに関連付けられる最も最近の取込時間に基づいて、前記照会によって見られなければならない変更が前記データ項目バージョンから除去された可能性があるかを判定するステップとを含む、請求項9に記載の方法。 - 前記選択するステップは、前記クローン時間情報を使用して、他の候補よりも除去の必要な変更が少ない候補を選択するステップを含む、請求項10に記載の方法。
- データ項目のどのバージョンをセッションに供給すべきかを判定するための命令を保持するコンピュータ読取可能な媒体であって、前記命令は以下のステップを行なうための命令を含み、前記以下のステップは、
前記セッションに関連付けられ、前記セッションによって見られなければならないセッション内に行なわれた最後の変更の時間を示す、見るべき最後のタイムスタンプを維持するステップと、
データ項目バージョンが現行であった時間を示すクローン時間を、前記データ項目バージョンとともに維持するステップと、
少なくとも部分的に前記クローン時間と前記見るべき最後のタイムスタンプとの比較に基づいて、前記セッションに供給すべきデータ項目バージョンを判定するステップとを含む、コンピュータ読取可能な媒体。 - 前記判定するステップは、前記クローン時間と前記見るべき最後のタイムスタンプとの前記比較に基づいて、前記セッションに供給されるのに適格な複数のデータ項目バージョンから前記データ項目バージョンを選択するステップを含む、請求項12に記載のコンピュータ読取可能な媒体。
- 照会を含むトランザクションは前記セッションで実行しており、
前記見るべき最後のタイムスタンプは照会に関連付けられ、前記照会によって見られなければならない前記トランザクションによって行なわれた最後の変更の時間を示し、
前記データ項目バージョンを前記セッションに供給すべきだと判定する前記ステップは、前記データ項目バージョンを使用して前記照会に答えるべきだと判定することによって行なわれる、請求項12に記載のコンピュータ読取可能な媒体。 - 前記データ項目バージョンが現行バージョンからクローンされるときに、グローバルクロックに基づいて、前記クローン時間をセットするステップを行なうための命令をさらに
含む、請求項12に記載のコンピュータ読取可能な媒体。 - 前記データ項目バージョンが非現行データ項目バージョンからクローンされるときに、前記非現行データ項目バージョンのクローン時間に基づいて、前記クローン時間をセットするステップを行なうための命令をさらに含む、請求項12に記載のコンピュータ読取可能な媒体。
- クラスタ内の複数のノードは前記データ項目に対してデータ項目バージョンを有し、
前記コンピュータ読取可能な媒体は、以下のステップを行なうための命令をさらに含み、前記以下のステップは、
前記複数のノードの各ノードに対して、前記データ項目についてのクローン時間情報を維持するステップと、
前記クローン時間情報に基づいて、前記データ項目に対する要求を送るべきノードを選択するステップとを含む、請求項12に記載のコンピュータ読取可能な媒体。 - クローン時間情報を維持する前記ステップは、前記データ項目に対して、ノードをクローン時間に関連付けるベクトルを維持するステップを含み、前記ベクトル内のある所与のノードに関連付けられる前記クローン時間は、前記所与のノードにあるデータ項目バージョンに関連付けられるクローン時間である、請求項17に記載のコンピュータ読取可能な媒体。
- 前記判定するステップは、
除去されたデータの情報に基づいて、見られなくてはならない変更が前記データ項目バージョンから除去されたかを判定するステップと、
前記クローン時間に基づいて、見られなくてはならない情報が前記データ項目バージョンの作成後にデータ項目の現行バージョンに合わせて作成された可能性があるかを判定するステップとを含む、請求項12に記載のコンピュータ読取可能な媒体。 - データベースのある特定のスナップショットを見なくてはならない照会にデータ項目を供給するための命令を保持するコンピュータ読取可能な媒体であって、前記命令は以下のステップを行なうための命令を含み、前記以下のステップは、
複数のノードにある複数のデータ項目バージョンに対して、データ項目バージョンが現行であった時間を示すクローン時間情報を維持するステップと、
少なくとも部分的に前記クローン時間情報に基づいて、前記複数のデータ項目バージョンのうちのどのデータ項目バージョンが、前記照会によって見られなくてはならない変更のすべてを含むかを判定するステップと、
前記照会によって見られなければならない変更をすべて含むデータ項目バージョンから前記照会に供給するデータ項目バージョンを選択するステップとを含む、コンピュータ読取可能な媒体。 - 前記判定するステップは、
データ項目バージョンに関連付けられたクローン時間に基づいて、前記照会によって見られなければならない変更が、前記データ項目バージョンの作成後に前記データ項目に行なわれた可能性があるかを判定するステップと、
前記データ項目バージョンに関連付けられた最も最近の取込時間に基づいて、前記照会によって見られなければならない変更が、前記データ項目バージョンから除去された可能性があるかを判定するステップとを含む、請求項20に記載のコンピュータ読取可能な媒体。 - 前記選択するステップは、前記クローン時間情報に基づいて、他の候補よりも除去の必
要な変更が少ない候補を選択するステップを含む、請求項21に記載のコンピュータ読取可能な媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29510401P | 2001-06-01 | 2001-06-01 | |
US10/119,672 US7334004B2 (en) | 2001-06-01 | 2002-04-09 | Consistent read in a distributed database environment |
PCT/US2002/016886 WO2002099701A2 (en) | 2001-06-01 | 2002-05-29 | Consistent read in a distributed database environment |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2005503606A true JP2005503606A (ja) | 2005-02-03 |
JP2005503606A5 JP2005503606A5 (ja) | 2006-01-05 |
JP4301937B2 JP4301937B2 (ja) | 2009-07-22 |
Family
ID=26817568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003502743A Expired - Lifetime JP4301937B2 (ja) | 2001-06-01 | 2002-05-29 | 分散データベース環境での一貫した読取 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7334004B2 (ja) |
EP (1) | EP1402414B1 (ja) |
JP (1) | JP4301937B2 (ja) |
CN (1) | CN1270261C (ja) |
AT (1) | ATE364872T1 (ja) |
AU (1) | AU2002303900B2 (ja) |
CA (1) | CA2447692C (ja) |
DE (1) | DE60220676T2 (ja) |
HK (1) | HK1059491A1 (ja) |
WO (1) | WO2002099701A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013077063A (ja) * | 2011-09-29 | 2013-04-25 | Fujitsu Ltd | データ管理プログラム、ノード、および分散データベースシステム |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7117491B2 (en) * | 2002-08-29 | 2006-10-03 | International Business Machines Corporation | Method, system, and program for determining whether data has been modified |
US7480662B2 (en) * | 2003-07-03 | 2009-01-20 | Oracle International Corporation | Fact table storage in a decision support system environment |
US7941408B2 (en) * | 2003-09-06 | 2011-05-10 | Oracle International Corporation | System, structure, interface, and semantics for implementing row versions: accessing past versions of a data item |
US7324995B2 (en) * | 2003-11-17 | 2008-01-29 | Rackable Systems Inc. | Method for retrieving and modifying data elements on a shared medium |
US20050108300A1 (en) * | 2003-11-17 | 2005-05-19 | Terrascale Technologies Inc. | Method for the management of local client cache buffers in a clustered computer environment |
US7281023B2 (en) * | 2003-12-15 | 2007-10-09 | At&T Knowledge Ventures, L.P. | Architecture of database application with robust online recoverability |
CN100388679C (zh) * | 2004-11-30 | 2008-05-14 | 中兴通讯股份有限公司 | 网管系统中查询历史数据的方法 |
CN1904879B (zh) * | 2005-07-27 | 2011-01-12 | 国际商业机器公司 | 电子表格系统及获取电子表格文档的快照/历史信息的方法 |
US7418544B2 (en) * | 2005-10-05 | 2008-08-26 | Oracle International Corporation | Method and system for log structured relational database objects |
US9009116B2 (en) * | 2006-03-28 | 2015-04-14 | Oracle America, Inc. | Systems and methods for synchronizing data in a cache and database |
US20080209260A1 (en) * | 2007-02-27 | 2008-08-28 | Venkateswara Rao Vykunta | Apparatus and method for synchronizing embedded databases of applications in a failover cluster |
US7739547B2 (en) * | 2007-06-07 | 2010-06-15 | International Business Machines Corporation | Failure recovery and error correction techniques for data loading in information warehouses |
US7886124B2 (en) | 2007-07-30 | 2011-02-08 | Oracle International Corporation | Method and mechanism for implementing dynamic space management for large objects |
US8776018B2 (en) * | 2008-01-11 | 2014-07-08 | International Business Machines Corporation | System and method for restartable provisioning of software components |
US7996360B2 (en) * | 2008-06-27 | 2011-08-09 | International Business Machines Corporation | Coordinating updates to replicated data |
US7991775B2 (en) * | 2008-08-08 | 2011-08-02 | Oracle International Corporation | Global checkpoint SCN |
US8756195B2 (en) * | 2009-08-27 | 2014-06-17 | The Boeing Company | Universal delta set management |
US8356007B2 (en) * | 2010-10-20 | 2013-01-15 | Microsoft Corporation | Distributed transaction management for database systems with multiversioning |
US8838919B2 (en) | 2010-08-30 | 2014-09-16 | Oracle International Corporation | Controlling data lag in a replicated computer system |
CN102314505B (zh) * | 2011-09-07 | 2016-04-13 | 北京人大金仓信息技术股份有限公司 | 基于偏序关系的缓冲区版本产生方法 |
CN102646127A (zh) * | 2012-02-29 | 2012-08-22 | 浪潮(北京)电子信息产业有限公司 | 分布式文件系统副本选择方法和装置 |
US9774676B2 (en) | 2012-05-21 | 2017-09-26 | Google Inc. | Storing and moving data in a distributed storage system |
US9230000B1 (en) | 2012-06-04 | 2016-01-05 | Google Inc. | Pipelining Paxos state machines |
US9659038B2 (en) * | 2012-06-04 | 2017-05-23 | Google Inc. | Efficient snapshot read of a database in a distributed storage system |
EP2856356A2 (en) * | 2012-06-04 | 2015-04-08 | Google, Inc. | Systems and methods of increasing database access concurrency using granular timestamps |
US9747310B2 (en) | 2012-06-04 | 2017-08-29 | Google Inc. | Systems and methods of increasing database access concurrency using granular timestamps |
US9449006B2 (en) | 2012-06-04 | 2016-09-20 | Google Inc. | Method and system for deleting obsolete files from a file system |
US9195611B2 (en) | 2012-06-04 | 2015-11-24 | Google Inc. | Efficiently updating and deleting data in a data storage system |
US9298576B2 (en) | 2012-06-04 | 2016-03-29 | Google Inc. | Collecting processor usage statistics |
CN102855271B (zh) * | 2012-07-05 | 2016-09-21 | 中国电力科学研究院 | 一种多版本电网模型的存储与可追溯管理方法 |
US9767178B2 (en) | 2013-10-30 | 2017-09-19 | Oracle International Corporation | Multi-instance redo apply |
US10795881B2 (en) * | 2015-12-18 | 2020-10-06 | Sap Se | Table replication in a database environment |
US10572510B2 (en) | 2015-12-21 | 2020-02-25 | Sap Se | Distributed database transaction protocol |
EP3627359B1 (en) * | 2017-06-05 | 2023-10-04 | Huawei Technologies Co., Ltd. | Transaction processing method, device and equipment |
US10977227B2 (en) | 2017-06-06 | 2021-04-13 | Sap Se | Dynamic snapshot isolation protocol selection |
US11940990B1 (en) * | 2017-06-16 | 2024-03-26 | Amazon Technologies, Inc. | Global clock values for consistent queries to replicated data |
CN110413565A (zh) * | 2019-06-28 | 2019-11-05 | 苏州浪潮智能科技有限公司 | 一种多台存储设备同步快照的方法、设备及介质 |
US11880385B1 (en) | 2020-09-29 | 2024-01-23 | Amazon Technologies, Inc. | Ordering updates to secondary indexes using conditional operations |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3516344B2 (ja) * | 1990-10-22 | 2004-04-05 | 株式会社日立製作所 | 分散処理システムの多重データ処理方法 |
US5287496A (en) | 1991-02-25 | 1994-02-15 | International Business Machines Corporation | Dynamic, finite versioning for concurrent transaction and query processing |
US5454102A (en) * | 1993-01-19 | 1995-09-26 | Canon Information Systems, Inc. | Method and apparatus for transferring structured data using a self-generating node network |
US5642503A (en) * | 1993-12-15 | 1997-06-24 | Microsoft Corporation | Method and computer system for implementing concurrent accesses of a database record by multiple users |
US5574906A (en) * | 1994-10-24 | 1996-11-12 | International Business Machines Corporation | System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing |
US5991771A (en) * | 1995-07-20 | 1999-11-23 | Novell, Inc. | Transaction synchronization in a disconnectable computer and network |
US5870758A (en) * | 1996-03-11 | 1999-02-09 | Oracle Corporation | Method and apparatus for providing isolation levels in a database system |
US5806076A (en) * | 1996-10-29 | 1998-09-08 | Oracle Corporation | Tracking dependencies between transactions in a database |
US5956731A (en) * | 1997-04-23 | 1999-09-21 | Oracle Corporation | Sharing snapshots for consistent reads |
US6014669A (en) * | 1997-10-01 | 2000-01-11 | Sun Microsystems, Inc. | Highly-available distributed cluster configuration database |
US5924096A (en) * | 1997-10-15 | 1999-07-13 | Novell, Inc. | Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand |
US6192377B1 (en) * | 1998-05-13 | 2001-02-20 | Oracle Corporation | Method and apparatus for determing whether a transaction can use a version of a data item |
US6353835B1 (en) * | 1998-08-03 | 2002-03-05 | Lucent Technologies Inc. | Technique for effectively maintaining materialized views in a data warehouse |
US6393485B1 (en) * | 1998-10-27 | 2002-05-21 | International Business Machines Corporation | Method and apparatus for managing clustered computer systems |
US6516327B1 (en) * | 1998-12-24 | 2003-02-04 | International Business Machines Corporation | System and method for synchronizing data in multiple databases |
US6839751B1 (en) * | 1999-06-30 | 2005-01-04 | Hi/Fn, Inc. | Re-using information from data transactions for maintaining statistics in network monitoring |
US6401104B1 (en) * | 1999-07-03 | 2002-06-04 | Starfish Software, Inc. | System and methods for synchronizing datasets using cooperation among multiple synchronization engines |
US7024656B1 (en) * | 1999-11-29 | 2006-04-04 | Oracle International Corporation | Persistent agents |
US20020165724A1 (en) * | 2001-02-07 | 2002-11-07 | Blankesteijn Bartus C. | Method and system for propagating data changes through data objects |
US6574717B1 (en) * | 2001-05-31 | 2003-06-03 | Oracle Corporation | Techniques for time-based retention of a reusable resource |
-
2002
- 2002-04-09 US US10/119,672 patent/US7334004B2/en not_active Expired - Lifetime
- 2002-05-29 EP EP02731965A patent/EP1402414B1/en not_active Expired - Lifetime
- 2002-05-29 CN CNB028107616A patent/CN1270261C/zh not_active Expired - Lifetime
- 2002-05-29 JP JP2003502743A patent/JP4301937B2/ja not_active Expired - Lifetime
- 2002-05-29 DE DE60220676T patent/DE60220676T2/de not_active Expired - Lifetime
- 2002-05-29 WO PCT/US2002/016886 patent/WO2002099701A2/en active IP Right Grant
- 2002-05-29 AU AU2002303900A patent/AU2002303900B2/en not_active Expired
- 2002-05-29 CA CA2447692A patent/CA2447692C/en not_active Expired - Lifetime
- 2002-05-29 AT AT02731965T patent/ATE364872T1/de not_active IP Right Cessation
-
2004
- 2004-04-01 HK HK04102389A patent/HK1059491A1/xx not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013077063A (ja) * | 2011-09-29 | 2013-04-25 | Fujitsu Ltd | データ管理プログラム、ノード、および分散データベースシステム |
Also Published As
Publication number | Publication date |
---|---|
EP1402414B1 (en) | 2007-06-13 |
AU2002303900B2 (en) | 2008-03-06 |
EP1402414A2 (en) | 2004-03-31 |
WO2002099701A2 (en) | 2002-12-12 |
JP4301937B2 (ja) | 2009-07-22 |
CN1524239A (zh) | 2004-08-25 |
US20020194206A1 (en) | 2002-12-19 |
WO2002099701A3 (en) | 2004-01-22 |
US7334004B2 (en) | 2008-02-19 |
CN1270261C (zh) | 2006-08-16 |
DE60220676D1 (de) | 2007-07-26 |
ATE364872T1 (de) | 2007-07-15 |
CA2447692A1 (en) | 2002-12-12 |
DE60220676T2 (de) | 2008-03-06 |
HK1059491A1 (en) | 2004-07-02 |
CA2447692C (en) | 2011-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4301937B2 (ja) | 分散データベース環境での一貫した読取 | |
AU2002303900A1 (en) | Consistent read in a distributed database environment | |
JP4340226B2 (ja) | データ項目の使用可能バージョンの提供 | |
CN109739935B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US6012059A (en) | Method and apparatus for replicated transaction consistency | |
US6078930A (en) | Multi-node fault-tolerant timestamp generation | |
US6738971B2 (en) | Using a resource manager to coordinate the comitting of a distributed transaction | |
US6058389A (en) | Apparatus and method for message queuing in a database system | |
US7237147B2 (en) | Method and apparatus for making available data that was locked by a dead transaction before rolling back the entire dead transaction | |
US6353833B1 (en) | Caching of distributed dynamic SQL statements in a multiple node RDBMS | |
US20120254249A1 (en) | Database Management System | |
US20090300017A1 (en) | Transaction Parallel Control Method, and Database Managemet System | |
CN111522631A (zh) | 分布式事务处理方法、装置、服务器及介质 | |
JP4126843B2 (ja) | データ管理方法および装置並びにデータ管理プログラムを格納した記録媒体 | |
CN102193987B (zh) | 基于oltp的增加节点数据关系的方法及系统 | |
EP1246064A2 (en) | Startup method of a new node in a distributed database management system | |
EP1788496A2 (en) | Consistent read in a distributed database environment | |
KR100450419B1 (ko) | 데이터베이스 시스템에서 다중 쓰레드로 동작하는클라이언트 라이브러리 동작방법 | |
Lam et al. | Mobile distributed real-time database systems | |
CA2249059C (en) | Caching of distributed dynamic sql statements in a multiple node rdbms | |
Zaslavsky et al. | Primary copy method and its modifications for database replication in distributed mobile computing environment | |
Goyal et al. | Extending Speculation-Based Protocols for Processing Read-Only Transactions in Distributed Database Systems | |
JPH05334163A (ja) | 複数システム間共用メモリ排他制御方式 | |
KR20030062775A (ko) | 그룹통신의 메시징 순서를 이용한 즉시 갱신 중복기법에서 전역 직렬성 검사 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050519 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050519 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080819 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081216 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090302 |
|
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: 20090407 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090421 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120501 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4301937 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130501 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |