JP2009505281A - データベースフラグメントのクローン化および管理 - Google Patents

データベースフラグメントのクローン化および管理 Download PDF

Info

Publication number
JP2009505281A
JP2009505281A JP2008526946A JP2008526946A JP2009505281A JP 2009505281 A JP2009505281 A JP 2009505281A JP 2008526946 A JP2008526946 A JP 2008526946A JP 2008526946 A JP2008526946 A JP 2008526946A JP 2009505281 A JP2009505281 A JP 2009505281A
Authority
JP
Japan
Prior art keywords
fragment
clone
primary
update
fragments
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
Application number
JP2008526946A
Other languages
English (en)
Other versions
JP5259404B2 (ja
Inventor
エイチ.ガーバー ロバート
エス.ラマン バラン
アール.ハミルトン ジェームズ
エフ.ルードマン ジョン
エム.クリシュナ ムラリ
エイチ.スミス サミュエル
アシュウィン シュリニバス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009505281A publication Critical patent/JP2009505281A/ja
Application granted granted Critical
Publication of JP5259404B2 publication Critical patent/JP5259404B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Abstract

データベースフラグメントのクローン化および管理に対するメカニズムおよび技術を与える。テーブルまたはインデックスのようなデータベースオブジェクトをフラグメントに分割する。それぞれのフラグメントをクローン化して、互いに動作上は同一であるクローンフラグメントを生成する。1つまたは複数のクローンフラグメントを、データベース操作を実施するプライマリクローンフラグメントとして、またはバックアップの役割を果たすセカンダリクローンフラグメントとして指定することができる。それぞれのフラグメントに対する更新をプライマリクローンフラグメント上で実施し、次いでプライマリクローンフラグメントから対応するセカンダリクローンフラグメントに前記更新を伝達する。クローンフラグメントはオフラインになり、更新不能となることができる。クローンフラグメントがオンラインに戻るとき、クローンフラグメントをプライマリクローンフラグメントに含まれるデータでリフレッシュする。リフレッシュしている間、クローンフラグメントを更新することができる。リフレッシュプロセスが完了したとき、クローンフラグメントはプライマリクローンフラグメントとして指定される資格を有する。

Description

データベースシステムは一般に、アクセシビリティを目的として編成した情報を効率的に管理するために使用される。確実に利用できるように、システムはプライマリコピーを破損または紛失した場合に備えてデータベースのバックアップコピーを含むことができる。データベースバックアップに関する一般的技術の1つは、データベース全体をコンピュータ読取可能媒体に定期的にコピーすることである。例えば、情報システム管理者はデータベースを毎週末にディスクまたはテープにコピーすることができる。データベースのコピーをこのように保存することができるが、データベース全体のコピーには時間がかかり、他の手段で追跡しない場合はバックアップインターバル間のアクティビティは失われる。
データベースバックアップの別の技術として、同じデータベースを別のコンピューティングマシン上に維持することがある。データベースの1つが使用不能となった場合、別のコンピューティングマシンにあるデータベースの別のコピーにアクセスすることができる。この種のフェールオーババックアップによりデータベースを確実に利用することができる。しかしながら、別のマシンにあるデータベース全体の複数のコピーをリアルタイムに同期することは、複雑でコストが高いプロセスである。
データの過度な複雑性または不必要な損失無しにデータベースの利用可能性を保証する効率的な方法は、当業界の技術者にまだ知られていない。
以下で、読者に基本的な理解を与えるために本開示を簡潔に要約する。本要約は本開示の広範囲の概要ではなく、本発明の主要/重要な要素を特定せず、または本発明の範囲を詳述するものではない。本要約の唯一の目的は、本明細書で開示した幾つかの概念を簡潔な形で、後述のより詳細な説明に対する前段として提示することである。
本例はデータベースフラグメントのクローン化および管理に関するメカニズムおよび技術を与える。テーブル、行セット、インデックス、あるいはテーブルまたはインデックスのパーティションのようなデータベースオブジェクトをフラグメントに分割する。行セットはテーブル内の行の集合またはインデックス内のエントリの集合と考えられることに留意されたい。行およびレコードという用語は実質的に同一であると考えられる。したがって、行セットはレコードセットと等価でもある。それぞれのフラグメントをクローン化してクローンフラグメントを生成する。クローンフラグメントは、動作上は互いに実質的には同一である。クローンフラグメントの1つを、データベース操作を実施するプライマリクローンフラグメントとして指定することができ、1つまたは複数のクローンフラグメントを、プライマリフラグメントクローンに対するバックアップの役割を果たす目的でセカンダリクローンフラグメントとして指定することができる。それぞれのフラグメントに対する更新をプライマリクローンフラグメント上で実施し、次いでプライマリクローンフラグメントから対応するセカンダリクローンフラグメントに伝達する。
クローンフラグメントはオフラインになり、更新不能となる可能性がある。上記のクローンフラグメント内のデータは対応するプライマリクローンフラグメントに対してトランザクション的に最新でないので、上記のオフラインで利用不能なクローンフラグメントは陳腐化のクローンフラグメント(stale cloned fragment)であると定義する。陳腐化のクローンフラグメントがオンラインに戻るとき、クローンフラグメントをプライマリクローンフラグメントに含まれるデータでリフレッシュする。リフレッシュする間、クローンフラグメントを更新し続ける。リフレッシュプロセスが完了したとき、クローンフラグメントは即座にプライマリクローンフラグメントの指定候補の資格を得る。
多数の付随する特徴は、付属図面と関連させて考慮すると以下の詳細な説明を参照することで、より容易に理解でき、より良く理解できるであろう。
本説明は付属図面と照らし合わせて以下の詳細説明を読むことでより良く理解できるであろう。
付属図面において、同一の参照番号は同じ部分を指すよう使用する。
以下で付属図面に関連させて与えた詳細な説明は本例を説明するものとして意図しており、本例を構築または利用可能な唯一の形態を表すようには意図していない。本説明は、本例の機能、および本例を構築および操作するためのステップの列を説明する。ただし、同じまたは等価な機能および列を異なる例により実現してもよい。
本明細書ではデータベースフラグメントのクローン化および管理システムにおいて実施されるとして本例を説明および図示するが、説明したシステムは限定ではなく例として与えてある。当業界の技術者が理解できるように、本例は多種の異なるタイプのデータベースフラグメントクローン化および管理システムにおけるアプリケーションに対して適切である。
図1は、データベースシステムにより管理されるデータベースオブジェクト105をクローン化するデータ構造100の例を示す。データベースは、データベース内の所望のデータ片が迅速に選択および/または更新可能であるように編成した情報の集合である。データベースオブジェクトはデータベースの全体または任意の部分であることができる。例えば、データベースオブジェクト105はテーブル全体、インデックス、行の集合(例えば、行セット)、等であることができる。
データベースオブジェクト105をパーティション111−113に分割することができる。一般に、データベースオブジェクト105を便宜上または性能上の理由で分割する。例えば、データベースオブジェクト105は複数の年に関連付けたデータを含むことができる。データベースオブジェクト105を、それぞれのパーティションを特定の年度に関連付けたパーティション111−113に分割することができる。データベースオブジェクト105を分割することは任意のステップであり、実際の実装では実施してもしなくともよい。
データベースオブジェクト105のそれぞれのパーティション111−113(またはデータベース全体、未分割のオブジェクト105)を一般に、フラグメント121−124のようなフラグメントに分割する。フラグメント121−124は、データベースシステムにより操作ベースで分割したデータベースオブジェクト105の部分である。例えば、フラグメント121−124を異なるコンピューティング装置に割り当てて、データベースオブジェクト105に関連付けた問合わせをフラグメント121−124に対して、並列に動作するコンピューティング装置により実施することができる。
データベースオブジェクト105内のフラグメントをさらにクローン化してクローンフラグメントを生成することができる。図1に示すように、論理的に分割したフラグメント121−124の各々をクローン化して、クローンフラグメントの例131、140−146を生成する。一般に、データベースオブジェクトのフラグメント(またはデータベースオブジェクトのパーティションのフラグメント)を、上記オブジェクトを(テーブルに対する)行または(インデックスに対する)インデックスエントリの離散集合に分割することで、生成する。上記分割を実現する1つの基盤として、テーブルまたはインデックスのキー上でのハッシングがある。行の集合を、行セットまたはレコードの集合と称することもある。クローンフラグメントを図2に関連させてより詳細に説明する。簡潔に述べると、正しく更新すれば、データベースオブジェクト105の特定のフラグメントに関連付けたクローンフラグメントは動作上は同一であり、その結果、データベースシステムは容易にクローンフラグメントを使用することができる。クローンフラグメントの使用により、特定フラグメントの二つまたは複数のコピーを使用することができ、例えば高レベルのデータ可用性を維持すること、問合せおよび他のデータベース操作を高速にすること、負荷分散を実施すること、等が可能になる。例えば、高レベルのデータ可用性を維持するため、少なくとも1つのクローンフラグメントが、データベース操作に使用される別のクローンフラグメントのバックアップの役割を果たすことができる。検索を高速にするため、複数の動作上同一なクローンフラグメントをデータベース問合せに並行に使用することができる。負荷分散を実施するために、異なるが動作上は同一であるクローンフラグメントのコピーを作業負荷状況に基づいて起動することができる。
図2はデータベースオブジェクトのクローンフラグメントの例131−139を示す。図に示すように、クローンフラグメント131−139を3つのグループ151−153と見ることができる。クローンフラグメントのそれぞれのグループはデータベースオブジェクトの特定のフラグメントに関連する。それぞれのグループ内部のクローンフラグメントを、互いに動作上同一なものとして生成する。したがって、正しく更新すると、クローンフラグメントの131−139の各々を、対応するフラグメント151−153に適用可能なデータベース操作に対して使用することができる。
1つの実施形態において、クローンフラグメント131−139を構成して高レベルのデータ可用性を与えることができる。本実施形態において、グループ151−153の各々からのクローンフラグメントを、データベース操作に対するプライマリクローンフラグメントとして指定することができる。グループ内の他のクローンフラグメントは、容易に利用可能なバックアップとしての役割を果たすセカンダリクローンフラグメントである。図2において、クローンフラグメント131、135および139をプライマリクローンフラグメントとして示し、残りのクローンフラグメントをセカンダリクローンフラグメントとして指定してある。
高レベルのデータ可用性を与えるため、装置の1つが故障した場合に別の装置内のセカンダリクローンフラグメントで前記の故障した装置内のクローンフラグメントを迅速に置換してプライマリクローンフラグメントとすることができるように、グループ内のクローンフラグメントの各々を異なる装置に含めることができる。例えば、プライマリクローンフラグメント131が含まれる装置が故障した場合にセカンダリクローンフラグメント132−133のいずれかをプライマリとして指定できるように、クローンフラグメント131−133の各々を別々の装置に含めることができる。
クローンフラグメントを管理するデータベースシステムはクローンフラグメント上で様々な操作を実施することができる。これらの操作は一般に、データ操作言語(DML)のステートメントまたは他の構造化問合せ言語(SQL)のステートメントのような標準的なデータベース操作を用いて実施する。クローンフラグメントを更新およびリフレッシュする操作の例を、図3および4に関連させてより詳細に説明する。1つの実施例において、操作は以下を含むことができる。
1.クローンフラグメントの生成
クローンフラグメントを、データベース内の通常のテーブルまたはインデックス行セットから区別不能なように生成することができる。
2.クローンフラグメントの削除
ちょうどデータベース内の行セットのようにクローンを削除することができる。
3.クローンフラグメントのデータの完全な初期化
クローンフラグメントを完全に初期化し、クローンフラグメントにロードした新規の行セットを最初から含めることができる。
4.データ変更のクローンフラグメントへの伝達
プライマリクローンフラグメントへの変更を1つまたは複数のセカンダリクローンフラグメントに伝達する。伝達は、プライマリクローンフラグメントへの更新と同じトランザクションコンテクスト内で行う。
5.陳腐化のクローンフラグメントのリフレッシュ
クローンフラグメントがオフラインであるかまたはプライマリクローンフラグメントから更新のトランザクション伝達を受け取っていないとき、そのクローンフラグメントは陳腐化のクローンフラグメントであると定義する。陳腐化のクローンフラグメントを無効フラグメントクローンと記述することもできる。陳腐化クローンをプライマリフラグメントクローンとトランザクション的に一貫するように戻すプロセスはリフレッシュと呼ばれる。
6.クローンフラグメントの読み取り
ちょうど通常のテーブルまたはインデックスを読み出し、アクセスするように、クローンフラグメントをデータ抽出(テーブルアクセス)の目的で読み出すことができ、または参照(インデックスアクセス)するために読み出すことができる。本実施において、プライマリクローンフラグメントから読み出すことだけがユーザの作業負荷である。本制限を、システムにおける不必要なデッドロックを回避するためのメカニズムを簡略化する目的で使用することができる。しかしながら、デッドロックが問題ではないかまたは所与のシステムにおける他の手段を通して回避されるかのいずれかである場合、本制限を緩和することができる。
7.クローンフラグメントの更新
ユーザの作業負荷はプライマリクローンフラグメントを更新することであり、データベースシステムがこれらの変更を、同一トランザクション内のプライマリフラグメントに対応するセカンダリクローンに伝達および適用する。変更を伝達することは、プライマリクローンに適用した実質的には同一のDML操作をセカンダリクローンに適用することを意味する。
図3はデータベースオブジェクトのクローンフラグメント131−139を更新する操作の例300を示す。データベースの更新は、データの追加、削除および変更といった任意の種類の修正を含むことができる。データベースオブジェクトに関連付けた変更が判定されると、更新する必要があるデータベースオブジェクト内のフラグメントが識別される。識別したフラグメントに対応するプライマリクローンフラグメントを更新する。図に示すように、操作301−303はそれぞれ、プライマリクローンフラグメント131、135および139を更新するための操作である。プライマリクローンフラグメント131、135および139を更新した後、前記更新を対応するセカンダリクローンフラグメントに伝達する。図3において、操作311−313は、更新したプライマリクローンフラグメントに対応するセカンダリクローンフラグメントを更新するための操作である。
一般に、操作301−303および311−313は、DMLステートメントのセマンティクスを実施する挿入、更新および削除から成る標準的なデータベース操作を通して実施する。一貫性を実現するため、プライマリクローンフラグメントの更新操作とプライマリクローンフラグメントに対応するセカンダリフラグメントの更新操作とを、原子的な操作集合として構成することができる。
図4は、データベースオブジェクトに関連付けた陳腐化のクローンフラグメント133のリフレッシュ操作の例400を示す。クローンフラグメントは、陳腐化フラグメントに対応するデータベースオブジェクトに関連付けた伝達更新操作を実行できない場合、陳腐である。例えば、クローンフラグメント133は、装置の故障、接続性の損失、システムの更新、等のような様々な理由により、更新不能である可能性がある。実用的であるためには、セカンダリクローンフラグメント133を、リフレッシュプロセスを通してプライマリクローンフラグメント131とトランザクション的に一貫するように戻さなければならないであろう。
クローンフラグメント133がオンラインに戻り、更新操作を実行可能になると、現在および過去の更新の全てを含む現在のプライマリクローンフラグメントに含まれるデータに基づいてクローンフラグメント133をリフレッシュする。例えば図4において、クローンリフレッシュ操作413を実行して、プライマリクローンフラグメント131内に含まれるデータでクローンフラグメント133をリフレッシュする。このように、クローンフラグメント133を、クローンフラグメント133が利用不能であった間に発生した更新でリフレッシュする。効率性のため、クローンリフレッシュ操作413を、陳腐化した行を削除するSQL削除操作と、プライマリからコピーされた新規の行を追加するSQL挿入動作とを通して実施することができる。上記の実施により、余分なプロセスを追加せずに、データベースシステムにおける通常のSQLステートメントの実行が用いるものと同様な実行経路を経由してリフレッシュ操作を管理することができる。
プライマリクローンフラグメント131に対する更新操作401は、データベースオブジェクトに対する更新がプライマリクローンフラグメント131に対応するオブジェクト部分に影響するときに行う。更新を次いで、プライマリクローンフラグメント131に関連付けたセカンダリクローンフラグメントに伝達する。図4に示すように、セカンダリクローンフラグメント132をプライマリクローンフラグメント131に関連付けた操作411により更新する。クローンフラグメントを更新する必要性は、クローンフラグメントをリフレッシュしている間に生ずる可能性がある。例えば、クローンフラグメント133に対する更新は、クローンリフレッシュ操作413の実行中に生ずる可能性がある。更新操作412を、クローンリフレッシュ操作413の実行中にクローンフラグメント133上で実施することができる。一般に、ユーザの更新操作412はクローンリフレッシュ操作413よりも高優先度のデータベース操作である。更新操作412およびクローンリフレッシュ操作413を様々な方法で、および互いに対して様々なタイミングで実施することができる。例えば、更新が必要なとき、クローンフラグメント133上の更新操作412をクローンリフレッシュ413が継続する前に完了することができる。さらに、任意の所与の更新操作412に対するロックを原因とする任意の遅延の頻度および期間の両方を最小化するように、クローンリフレッシュ413を設計する。クローンリフレッシュは、短いインターバル時間だけロックを取得および保持する一連の小規模なトランザクションバッチとして実行することで、それを実現する。操作412は、操作413により既にリフレッシュした陳腐化クローン内の行またはエントリ、または陳腐化クローンがオフラインであった間にプライマリ内で不変であった行またはエントリのみを更新する。すなわち、陳腐化クローン内の無効な行を操作412が更新することを防ぐ。伝達した更新操作は、陳腐化クローン内の矛盾した行を最新と見せかけることはできない。行全体を更新412で伝達する実施においては、本制限を緩和することができる。しかしながら性能上の理由により、少数の列の値のみが変化したか否かに関わらず、全てのDML操作に対して行全体を伝達する上記操作412は妨げられる傾向にある。新しい、最新の行を陳腐化クローンに導入することはクローンリフレッシュ操作413の責任である。
図4に示す陳腐化のクローンフラグメントをリフレッシュする操作400により、データベースシステムは陳腐化のクローンフラグメントを、標準的なデータベース操作を用いてそのプライマリのオンライン状態を維持しつつ、対応するプライマリフラグメントとトランザクション的に一貫するように戻すことができる。DMLステートメントを表現するもののような標準的なデータベース操作を用いることでクローンリフレッシュを、データベースシステム上の余分だが標準的なSQLステートメントの負荷として特別なプロセスを必要とせずに管理することができる。操作400により、フラグメント全体を排他的にロックする必要なしに、およびリフレッシュプロセス中に発生しうる更新をキャッチアップする必要性によりリフレッシュプロセスを伸ばす必要なしに、陳腐化のクローンフラグメントのリフレッシュを可能とすることもできる。なぜならば、リフレッシュ操作413が進む間にこれらの更新が適用され続けるからである。操作400によりさらに、陳腐化のセカンダリクローンフラグメントを効率的に更新してプライマリクローンフラグメントになる資格を迅速に与えうることが重要である。
1つの実施例において、クローンリフレッシュ操作413にはリフレッシュ操作から成る複数の小規模バッチが含まれる。小規模なリフレッシュ操作のバッチを用いることで、並行なユーザ作業負荷を長時間ブロックアウトすることを回避する。したがってリフレッシュプロセスをインクリメンタル形式で実施し、それによりプロセスはユーザの作業負荷とオンラインで共存することができる。
図4に示すクローンリフレッシュ操作413の複数インスタンスを、任意のデータベースオブジェクトの同一または異なるフラグメント内部の、異なる陳腐化のクローンフラグメントに対して並行に実行することができる。すなわち、上記リフレッシュ操作は互いに独立である。
図5はクローンフラグメント500を識別するためのデータ構造の例511−514を示す。データ構造500を用いて、データオブジェクトに対応するクローンフラグメントを識別する。本例では前記データ構造は、データベースに関連付けたテーブルに対応するクローンフラグメント500を識別する。図5に示すように、クローンフラグメント500に対する識別子はテーブル識別子511、パーティション識別子512、フラグメント識別子513およびクローン識別子514を含むことができる。テーブル識別子511により、クローンフラグメント500が対応するデータベースオブジェクト(この場合、テーブル)を識別する。データベースオブジェクトをパーティションに分割して、便宜上または性能上の理由でデータを分離することができる。パーティション識別子512により、クローンフラグメント500が対応するパーティションを識別する。
データベースオブジェクトを管理するデータベースシステムを構成してデータベースオブジェクトをフラグメントに自動的に分離し、フラグメントをクローン化する。フラグメント識別子513により、クローンフラグメント500が対応するデータベースオブジェクトの特定のフラグメントを識別する。クローン識別子514により、データベースオブジェクトの特定のフラグメントに関連付けた複数のクローンフラグメントの中からクローンフラグメント500を識別する。
図6はデータオブジェクトのクローンフラグメントにおけるレコード600を特定するデータ構造の例611−612を示す。クローンフラグメントはデータベースのレコード(またはインデックスエントリ)を含むことができる。例えば、クローンフラグメントは、データベースに関連付けたテーブルの一部における行として具体化されるレコードを含むことができる。レコード600内のデータ構造611−612により、クローンフラグメント内のレコード600およびレコードの更新状態を識別することができる。
図6に示すようにレコード600はクローンレコード識別子611およびクローン更新識別子612を含むことができる。クローンレコード識別子611により、対応するテーブルまたはインデックス内部でレコード600を一意に識別する。インデックスレコード内のクローンレコード識別子は、対応するクローンデータフラグメントからの更新により伝達される。ユーザ定義の一意なキーをクローンレコード識別子として使用したり、またはクローンレコード識別子としての役割を果たすのに十分な程度に複合キーが一意であるようにシステム定義の一意なキーを追加(またはユーザ定義のキーを補完)することができる、例えば、更なる一意性を与える目的でフラグメント識別子をキーに追加することができる。クローン更新識別子によりレコード600の更新状態を識別する。本実施例において、クローンレコード識別子611は所与のテーブルのコンテクスト内部で一意(特有)であるべきである。クローン更新識別子612により、所与のデータベースオブジェクトに対して長時間、同一のクローンレコード識別子611を有する他レコードの更新状態と比較したレコードの更新状態だけを一意に識別する。
1つの実施形態において、データベースシステムにはプライマリクローンフラグメントとセカンダリクローンフラグメントが含まれ、クローンフラグメントには行が含まれる。クローンレコード識別子611およびクローン更新識別子612の両方をクローンフラグメントの行における列として含めることができる。クローンレコード識別子611およびクローン更新識別子612の列をセカンダリクローンフラグメントに含めることができ、セカンダリクローンフラグメントがトランザクション的に一貫しているとき(矛盾がないとき)、クローンレコード識別子611およびクローン更新識別子612の列はプライマリクローンフラグメントの場合と同一の値を含むことができる。したがってクローンレコード識別子611によりプライマリおよびセカンダリクローンフラグメントの間の行をマッピングすることができ、クローン更新識別子612により行に矛盾がないか否かを検証することができる。
陳腐化のクローンフラグメントに対するリフレッシュプロセスは、クローンレコード識別子(CRID)とクローン更新識別子(CUID)とを使用してクローンフラグメント内の特定のレコードをリフレッシュするべき否かを判定する。例えば、陳腐化のクローンフラグメント内のレコードはCRID=xかつCUID=yを含むことができる。陳腐化のクローンフラグメントに関連付けたプライマリクローンフラグメント内の対応するレコードは、CRID=xかつCUID=zを含むことができる。リフレッシュプロセスはCRIDを使用して陳腐化のクローンフラグメント内のそれぞれのレコードを識別し、存在すればプライマリクローンフラグメント内の対応するレコードを発見する。リフレッシュプロセスは次いで、陳腐化のクローンフラグメント内のそれぞれの上記レコードを、存在すればプライマリクローンフラグメント内の対応するレコードと比較して陳腐化のクローンフラグメント内のレコードを更新すべきか否かを判定する。
データベースオブジェクトのフラグメントはデータフラグメント、インデックスフラグメント、等のような任意のフラグメントであることができる。インデックスフラグメントに対し、インデックス内のそれぞれの行はそのデータフラグメント識別子をインデックスのキーの一部として記憶することで、行がどこから来たかを指定する。インデックス自体はベーステーブルフラグメントのどのクローンが現在プライマリであるかを知る必要はない。所与のフラグメントに対し1つのプライマリクローンフラグメントが存在するので、インデックスレコードを任意の所与の時点でアクセスの目的で指定フラグメントにマップすることができる。したがってインデックスフラグメントは、異なるテーブルフラグメントを参照する互いに素なセカンダリ行セット(またはインデックスエントリ)の共存集合を含むことができる。それぞれの上記セカンダリ行セットを同一インデックスフラグメントにおいて他のものから別々に扱う限り、上で概観した仮定および技術を継続して適用する。実施に関して、任意の特定のベーステーブルフラグメントに対応するインデックスフラグメント内の行をロックすることで、(そのベーステーブルフラグメントに対応しない)インデックスフラグメント内の他の行に対するロックを発生させるべきではない。
インデックスフラグメントをデータフラグメントと同様にクローン化することができる。更新を伝達させる目的で、クローンインデックスフラグメントを同一のベーステーブルフラグメント集合上の追加インデックスとして扱う。すなわち、全てのクローンインデックスフラグメントに対する更新を、クローンインデックスフラグメントの構築基盤であるベーステーブルのプライマリクローンデータフラグメントから直接伝達する。或るインデックスフラグメントから別のものへ更新を伝達することが可能である一方、本プロセスは追加の待機ステップを導入することができる。所与のデータフラグメント内のレコードに対応する所与のインデックスフラグメント内のインデックスエントリ集合をセカンダリ行セットとして扱う場合、対応するプライマリ行セットはベーステーブルフラグメントと実質的には同一である。インデックスフラグメントのクローンにおけるそれぞれのセカンダリ行セットはしたがって、更新を伝達する目的で同一のクローン内部の他のセカンダリ行セットすべてから独立である。
図7はクローンインデックスフラグメントとクローンデータフラグメントとを更新するためのプロセスの例を示す。上述のようにデータフラグメントの最新(または現在)のセカンダリクローンフラグメントは所与のデータフラグメントに対してプライマリクローンフラグメントと実質的には同一である。同様に、インデックスフラグメントの最新のセカンダリクローンフラグメントはそのインデックスフラグメントに対してプライマリクローンフラグメントと実質的には同一である。クローンインデックスフラグメントは、複数のデータフラグメント内のレコードを参照するインデックスエントリを含むことができる。したがって、クローンインデックスフラグメントは伝達した更新を、複数のクローンデータフラグメントから受け取ることができる。
図7における例はインデックスフラグメントI1を示す。インデックスフラグメントI1は、二つの異なるデータフラグメントD1およびD2内のレコードを参照するインデックスエントリを含む。本例では、プライマリクローンインデックスフラグメントI1.a705とセカンダリクローンインデックスフラグメントI1.b706との両方は、伝達した更新を、プライマリクローンデータフラグメントD1.a702とプライマリクローンデータフラグメントD2.a703との両方から直接受け取る。
データフラグメントとインデックスフラグメントの間のマッピングは、物理データベース設計と呼ばれる標準的なデータベース操作の結果を表す。テーブルの任意の所与のインデックス列に対して、列の値をインデックスのパーティション定義およびフラグメント定義に基づいて1つまたは複数のインデックスフラグメントに離散的にマップすることができる。テーブルおよびインデックスに対するパーティション定義は、例えば値の範囲、値のハッシュ、またはラウンドロビン割当てによりレコードを集合に分割する任意の従来のデータベース方法を指定することができる。システムが定義したフラグメント定義を、テーブルまたはインデックスのキー上でのハッシュにより実現することができる。しかしながら、ハッシュベースのフラグメント化が、非常に不均一にデータが偏在するようにフラグメントに対して行(またはインデックスエントリ)を埋める場合、フラグメントに対する行のラウンドロビン割当てを使用することができる。
クローンインデックスフラグメントが陳腐化し、リフレッシュする必要があるとき、リフレッシュを実現する2つの可能な方法がある。プライマリクローンインデックスフラグメントが存在する場合、陳腐化セカンダリクローンインデックスフラグメントをプライマリクローンインデックスフラグメントから直接リフレッシュすることができる。または陳腐化セカンダリクローンインデックスフラグメントを、インデックステーブルのプライマリクローンデータフラグメントの集合から直接リフレッシュすることができる。後者の場合、キー値がリフレッシュされているインデックスフラグメントにマップするような、プライマリクローンデータフラグメント内のレコードのみをリフレッシュにおいて使用する。
実施例において、クローン更新識別子(CUID)値をテーブル毎ベースで維持することができる。すなわち、所与のプライマリクローンフラグメントを更新するDMLステートメントに対してCUID値をそのフラグメントテーブルに固有なメタデータから読み出す。そのステートメントにより更新されるレコードにそのCUID値を割り当てる。これらレコードに対する更新をセカンダリクローンフラグメントに伝達するとき、割り当てた新規のCUID値も伝達する。
本実施例において、CUID値は長時間所与のテーブルに対し一意である。現在のCUID値は、所与のテーブルを記述するメタデータ内でトランザクション的に存続する。
CUID値が最大値から最小値に巻き込む点に達する時点で、様々な技術を使用してCUID値を一貫した最小値にリセットすることができる。CUID値のバイト範囲(例えば、6バイト)が与えられると、この場合が時系列で生じる可能性がある。CUID値をリセットするための1つの単純な技術はテーブル上で排他的ロックを行い、そのテーブルのプライマリクローンフラグメントにおける全レコードのCUID値を最小のCUID値にリセットすることである。次いで、通常の更新伝達メカニズムがセカンダリクローンフラグメント内のCUID値を効率的にリセットする。
テーブルに対するCUID値はテーブルのフラグメントがオフラインになる度に増加する。本実施は図12と関連させて後述する。
他のCUID割当てポリシーが可能であるが、それぞれはクローンリフレッシュに対する基本的技術に影響を及ぼす可能性を有する。例えばトランザクションIDをCUID値のベースとして使用できるが、更新の伝達とクローンリフレッシュの正確な相互作用とを保証するために、幾分か有利でないクローンリフレッシュ技術が必要である。具体的には、伝達待機ステップ(後述)において、基本クローンリフレッシュ技術は、全ての現在のDMLステートメントの完了を単に待機するのではなく、現在アクティブなトランザクションの全ての完了を待機しなければならない。
一般にCUID値の管理技術を、その技術が以下の要件を満たす場合に実施することができる。
a)フラグメント内部で用いる所与のCRID値に対して、トランザクション的に一貫したセカンダリクローンフラグメント内のCRID値により特定(識別)される全てのレコードが、プライマリクローンフラグメント内のそのCRID値により特定されるレコード内のCUID値と同じであるCUID値を有さなければならない。
b)所与のフラグメントに対し、陳腐化のセカンダリクローンフラグメント(リフレッシュ前)内およびプライマリクローンフラグメント内にCRIDが発見される場合、前記CUID値はセカンダリクローンフラグメントが陳腐化してから行がプライマリクローンフラグメント内で更新されていない場合にのみ同一であることができる。
クローンフラグメントを更新するDMLステートメントの例を以下で示す。DMLステートメントの例には、CUID値3を用いて更新されるSales.2004.1.a(クローンレコード識別子(CRID):5&3)内の2つのレコードが含まれる。
sales.2004.1.aプライマリクローンフラグメントの例を表1に示す。
Figure 2009505281
プライマリクローンフラグメントSales.2004.1.aを更新した後、これらの更新を表2に示すようにセカンダリクローンフラグメントSales.2004.1.bに伝達および適用する。
Figure 2009505281
所与の時点で、利用可能なフラグメントは1つのプライマリクローンフラグメント(潜在的なクローンリフレッシュ源)と、N個のセカンダリクローン(潜在的なリフレッシュ対象)とを有する。行がプライマリクローンフラグメント内の対応する行とトランザクション的に一貫しないセカンダリクローンフラグメントは、無効または陳腐化したクローンフラグメントである。陳腐化のクローンフラグメント内部の行(レコードまたはインデックスエントリ)は、以下の状態例の一つにあることができる。プライマリ行という用語はプライマリクローンフラグメント内の行を指す。陳腐化のクローンフラグメント内部の行は以下であることができる。
1.矛盾がない
陳腐化のセカンダリクローンフラグメントがオフラインである間、プライマリ行は変化しない。または、リフレッシュプロセスが既に、陳腐化のセカンダリクローンフラグメント内の行を対応するプライマリ行と一貫するように更新している。セカンダリクローンフラグメント内の一貫した行は、同一のCRID値およびCUID値を有するプライマリクローンフラグメント内の行に対応する。
2.矛盾している
陳腐化のセカンダリクローンフラグメントがオフラインである間にプライマリ行が更新される。陳腐化のセカンダリクローンフラグメント内の矛盾した行は、同一のCRID値と異なるCUID値とを有するプライマリクローンフラグメント内の行に対応する。
3.紛失している
陳腐化のセカンダリクローンフラグメントがオフラインである間に新しいプライマリ行が生成される。陳腐化のセカンダリクローンフラグメント内の紛失行は、同じCRID値を有する対応行が陳腐化のセカンダリクローンフラグメント内に存在しないようなCRID値を有するプライマリ行が存在する場合を示す。
4.エキストラ
陳腐化のセカンダリクローンフラグメントがオフラインである間にプライマリ行が削除される。陳腐化のセカンダリクローンフラグメント内のエキストラ行は、同じCRID値を有する対応行がプライマリローンフラグメント内に存在しないようなCRID値を有する行が陳腐化のセカンダリクローンフラグメント内に存在する場合を示す。
一貫していない陳腐化クローンの行のCRIDを、リフレッシュ技術の初期段階で一時ファイル(StaleCloneCRIDs)に捕捉する。その一時ファイルは、リフレッシュが必要なレコード、例えば矛盾したレコード、紛失したレコード、またはエキストラレコードを識別する値を有する列Stale_CUIDを有する。一時ファイル(StaleCloneCRIDs)の1つの実施において、Batch_ID列を追加して、StaleCloneCRIDs内部の離散的な行集合のアクセス処理を多数の小規模でインクリメンタルなバッチ操作に簡略化する値で初期化することができる。
図8は、陳腐化のクローンフラグメントをリフレッシュする際の状態の推移を示す。図8に示すように、セカンダリクローンフラグメント805はオフライン状態からリフレッシュ前状態に進む。陳腐化クローンがリフレッシュ前状態にある間に、リフレッシュ操作の性能を最適化する目的で、操作を陳腐化クローンに適用することができる。次に、セカンダリクローンフラグメント805をオンラインと見なし、リフレッシュ中状態に置く。リフレッシュしている間、陳腐化のクローンフラグメントはリフレッシュ中状態に留まる。本状態において、セカンダリクローンフラグメント805をプライマリクローンフラグメント803から伝達した変更により更新することができる。
リフレッシュプロセスを実施した後、セカンダリクローンフラグメント805はカレント状態に入る。セカンダリクローンフラグメント805がカレント状態に入ると、セカンダリクローンフラグメント805はプライマリになる資格を得る。
図11はデータベースオブジェクトの陳腐化のクローンフラグメントをリフレッシュするリフレッシュプロセスの例1100を示す。
0.陳腐化クローンのオンライン化 1150:
ブロック1102で、陳腐化クローンをクローンリフレッシュの対象とするとき(例えば、オフラインであった後に陳腐化クローンがシステムに対してアクセス可能となるとき)、陳腐化クローンをリフレッシュ前状態に置く。次に、ブロック1104で、クローンフラグメントがリフレッシュ前状態にある間にプリパス最適化を実行することができる。上記最適化を、残りのリフレッシュプロセス1100の性能を最適化するように設計する。
1.更新の伝達を有効化 1160:
ブロック1106で、陳腐化のクローンフラグメントをリフレッシュ中状態にあるとしてマークを付ける。次いでブロック1108で、プライマリクローンフラグメントから陳腐化のクローンフラグメントへの更新の伝達が可能となる。更新の伝達を陳腐化のクローンフラグメントに選択的に適用することができる。例えば、更新の伝達を、既にリフレッシュしたレコードまたはリフレッシュが不必要と判定できるレコードに対してのみ実施する。すなわち、更新の伝達を、所与のCRID値に対するCUID値がプライマリクローンフラグメント内の対応レコードのものとマッチするレコードに対してのみ適用する。別の実施例において、全体の行の値を更新により伝達する場合、クローンフラグメントをリフレッシュしている間に更新を陳腐化のクローンフラグメントの任意のレコードに伝達および適用することができる。
2.伝達を待機 1110:
次のブロック1110で、リフレッシュプロセス1100は、プライマリクローンフラグメント上の全てのアクティブなDMLステートメントが更新を陳腐化のクローンフラグメントに伝達開始するまで待機する(または、プライマリに対する全ての後続のDMLが一貫して陳腐化のクローンフラグメントに伝達されることを保証する等価なメカニズムを使用する)。リフレッシュ中状態にある陳腐化のクローンフラグメントを含む全てのオンラインなクローンフラグメントに更新が伝達されることを任意の新規に起動したDMLステートメントは保証されるので、全ての現在実行中のDMLステートメントが完了することを待機することでブロック1110を実現することができる。
3.陳腐化クローンのCRIDの構築 1112:
ブロック1112で、コミット済み読み込みモードでStaleCloneCRIDs一時テーブルを生成および初期化する。StaleCloneCRIDsは陳腐化のクローンフラグメント内の最新でない行(矛盾行、紛失行およびエキストラ行)の全てを網羅することを保証されるが、コミット済み読み込み隔離モードで実行されるため、StaleCloneCRIDsは実際には一貫しているCRIDsの行を含むことがありうる。StaleCloneCRIDs一時テーブルを埋める1つの実施において、プライマリおよび陳腐化のクローンフラグメントの対応クローンレコード識別子(crid)列の上でSQL外部結合操作を使用することができる。この場合、対応するクローン更新識別子(cuid)列の値はマッチしないかまたはヌルである。以下の擬似コードは上記の外部結合の1つの例を与える。本例では、Batch_Id列をStaleCloneCRIDsテーブルに追加して、所与のサイズのリフレッシュバッチを生成するために使用しうる基盤の例を与えることに留意されたい。
SELECT
(case when (p.crid is not null) then p.crid else c.crid end) as crid,
IDENTITY(int, 1, 1) AS Batch_Id
Into
StaleCloneCRIDs
FROM
(select crid, cuid from primary_fragment_clone) as p
FULL OUTER JOIN
(select crid, cuid from stale_fragment_clone) as c
ON (p.crid = c.crid)
Where
p.cuid <> c.cuid OR
(p.crid is null) OR
(c.crid is null)
4.カレント化 1170:
図17は陳腐化クローンをカレントにするプロセスの例1170を示す。プロセス1170は図11に示すリフレッシュプロセスの例1100の一部である。
StaleCloneCRIDs一時テーブルからのStale_CRIDsの第1の小規模バッチ(BatchOfStaleCRIDs)をブロック1114で初期化する。ブロック1114の1例においてBatchOfStaleCRIDsを、Batch_Id列の値がパラメータ値@start_Idおよび@end_Idの間にあるStaleCloneCRIDs一時テーブル内の行のCRIDsであると定義する。実際の@start_Idの初期値を、StaleCloneCRIDs一時テーブルにおける最小のBatch_Id列の値のものに設定する(例えば、Batch_IdをIDENTITY関数によりシード値1に初期化する)。実際の@end_Idの初期値を次いで所望のBatchSizeの値に設定する。BatchSizeの値を変化させて異なるリフレッシュ目標を実現することができる。小さい値のBatchSizeにより、進行中のユーザ作業負荷に更なる並列性を与えることができる。BatchSizeに大きい値を与えると、より良好なリフレッシュ性能が得られる可能性がある。判定ブロック1116で、BatchOfStaleCRIDsが空か否かを判定するチェックを行う。BatchOfStaleCRIDsが空の場合、リフレッシュプロセス1100はブロック1118に進み、リフレッシュしたクローンフラグメントにカレント状態にあるとしてマークを付ける。カレント状態にあるセカンダリクローンフラグメントは、プライマリクローンフラグメントになる資格を有する。次いで、プロセス1100はブロック1120で終了する。
判定ブロック1116で、BatchOfStaleCRIDsが空でないと分かった場合、
a.ブロック1112で、新規トランザクションを反復読み取りモードで開始する。
b.ブロック1124で、読取りロックをBatchOfStaleCRIDsにより識別されるプライマリクローンフラグメント内の行に設定する。本ステップは機能的には必要でないが、更新の伝達による潜在的デッドロックを回避する目的に対しては重要である。
c.ブロック1126で、BatchOfStaleCRIDs内のCRIDsにより識別される陳腐化のクローンフラグメント内の行を削除する。以下の擬似コードは、旧式の行を陳腐化のクローンフラグメントから削除する1つの実施例を示す。実際の@start_Idおよび@end_Idの値は(ブロック1114またはブロック1132での)カレント化プロセス1170において前に設定したものである。
delete from stale_fragment_clone
where exists (select * from StaleCloneCRIDs as s
where stale_fragment_clone.crid = s.crid and
(s.Batch_Id between @start_Id and @end_Id))
d.ブロック1128で、BatchOfStaleCRIDsにより識別される行がプライマリクローンから陳腐化クローンに挿入される。新規行をプライマリフラグメントから陳腐化のクローンフラグメントに挿入する1つの実施例の擬似コードの記述例は以下の通りである。実際の@start_Idおよび@end_Idの値は(ブロック1114またはブロック1132での)カレント化プロセス1170において前に設定したものである。
insert into stale_fragment_clone
select * from primary_fragment_clone as p
where exists
(select * from StaleCloneCRIDs as s
Where p.crid = s.crid and
(s.Batch_Id between @start_Id and @end_Id))
e.ブロック1130で、トランザクションをコミットする。
f.ブロック1132で、StaleCloneCRIDs一時テーブルからのCRIDsの次のバッチを次のBatchOfStaleCRIDsとして識別する。@start_Idおよび@end_Idに使用される実際の値はそれぞれ、所望のBatchSizeの値だけ増加する。
g.リフレッシュプロセス1100は次いでブロック1116に戻る。
BatchOfStaleCRIDsの処理中にエラーが発生する場合、トランザクションを中断し、リフレッシュプロセス1100は終了する。
リフレッシュプロセス1100が無事に完了しない場合、陳腐化のクローンフラグメントはリフレッシュ前状態に移動する(または、陳腐化のクローンフラグメントへのアクセスが完全に失われた場合は、オフライン状態に戻る)。
クローンフラグメントリフレッシュ技術の例は、既存の作業負荷との衝突を小規模な短いトランザクションを通して最小化しつつ継続して前進する。上で議論したクローンリフレッシュ技術を、ちょうどそれをクローンデータフラグメントに適用するように、クローンインデックスフラグメントに適用することもできる。1つの実施例において、陳腐化セカンダリクローンインデックスフラグメントを対応するプライマリクローンインデックスフラグメントからリフレッシュすることができる。
ベーステーブルフラグメントに対するクローンデータフラグメントの全てがオフラインになる場合、そのフラグメントに対応する全てのインデックスフラグメント内の行も同様に効率的にオフラインになる。ベーステーブルプライマリクローンフラグメントがオフラインに戻ると、リフレッシュ技術は任意の陳腐化テーブルクローンデータフラグメントおよび任意の陳腐化クローンインデックスフラグメントに影響を及ぼす。その時点で、リフレッシュされている陳腐化セカンダリクローンインデックスとデータフラグメントとに更新動作を伝達する。同様に、インデックスフラグメントに対する全てのクローンフラグメントがオフラインになる場合、そのインデックスフラグメントを用いるインデックスアクセスパスはオフラインになる。陳腐化クローンインデックスフラグメントを、それが再度アクセス可能になるときに、クローンリフレッシュを通して復元する。1つの実施例において、陳腐化クローンインデックスフラグメントをベーステーブルフラグメントの行を用いて直接リフレッシュする。しかしながら、陳腐化したセカンダリクローンインデックスフラグメントを、対応するプライマリクローンインデックスフラグメントからリフレッシュすることもできる。
上述したデータベースフラグメントのクローン化および管理メカニズムの性能を、後述する最適化の例により向上させることができる。
a)クローンリフレッシュのリフレッシュ前ステップ
クローンリフレッシュ技術を実行する前に、(図11のプロセス1100で説明した)完全にコミット済み読み込みモードで同じリフレッシュ技術を実行することができる(例えば、リフレッシュ前ステップ中に実行されると、プロセス1100のブロック1122はコミット済み読み込みモードでトランザクションを開始する)。多数の並列更新がない場合、このプリパスによりクローンフラグメント内の大多数の行を除去する。その際、少数の矛盾が残り、もう少し多くの矛盾が導入される可能性がある。プリパスを行った後に、反復読み取り可能モードでの厳密なリフレッシュ段階(図17のプロセス1170)がより高速に動作することがその狙いである。(バッチが少ないので)全体の短い期間に対しロックされる行は殆ど無く、したがってシステムにおける並行性が向上する。
プライマリクローンフラグメントがリフレッシュを必要とする複数のセカンダリクローンフラグメントを有するとき、全てのセカンダリクローンフラグメント上のリフレッシュパスを互いに独立に実行することができる。並列度の程度を、クローンフラグメントがオンラインに戻る速度に基づいて制御することができ、システムに課すべき並行性の量とトレードオフすることができる。
b)セカンダリクローンフラグメントの障害に対するトランザクション弾力性
セカンダリクローンフラグメントに対する更新の伝達がシステム上の理由で失敗するとき、そのクローンフラグメントをオフラインとしてマーク付けする。進行中トランザクションの影響をプライマリクローンフラグメントの行に直接保存する。以前のトランザクションの影響を保存する目的に対し、保留中作業の待ち行列を追加する必要はない。エラー処理の便宜上、更新が伝達されていたステートメントをロールバックすることができる。しかしながら、故障したセカンダリクローンフラグメントに対する更新の伝達の失敗がステートメントの実行に対してその他の副作用を及ぼさない場合は、これは必要ではない。そのステートメントに対する更新はプライマリクローンフラグメントに対して既に適用され、プライマリクローンフラグメントに既に保存されているであろう。
c)プライマリクローンフラグメントの障害に対するトランザクション弾力性
プライマリクローンフラグメントに障害が発生するとき、新規のプライマリとして即座に指定可能なオンラインの一貫したセカンダリクローンフラグメントがある場合、そのクローンフラグメントにアクセスするユーザトランザクションを中断する必要はない。しかしながら、障害が発生したプライマリクローンフラグメントに現在アクセスする任意のステートメントはロールバックされるであろう。
d)クローンリフレッシュ弾力性
セカンダリクローンフラグメントにおけるレコードに対するクローンリフレッシュ更新がシステム上の理由で失敗する場合、クローンリフレッシュパスは最初から再開することができ、現在アクティブなカレント化バッチを再試行するかまたはStaleCloneCRIDsのカレント化処理全体を繰り返すことができる。
図9は、クローンデータベースフラグメントを有するデータベースシステムの例900である。データベースシステム900は一般に、作業負荷を分散しデータオブジェクトのアクセスに対する信頼性のある可用性と負荷分散とを与える、複数のコンピューティング装置911−914を含む。データベース例の内部のオブジェクトをクローンフラグメントに分割する。クローンフラグメントはコンピューティング装置911−914の間で分割する。このように、コンピューティング装置911−914は、データベース例におけるオブジェクトの異なる部分上で並列に操作を実施することができる。コンピューティング装置911−914をSQLサーバのような任意の種類のデータベースシステムで構成することができる。
図に示すように、コンピューティング装置911−914はプライマリクローンフラグメント923−926とセカンダリクローンフラグメント934−937を含むことができる。1つの実施形態において、プライマリクローンフラグメント923−926をコンピューティング装置911−914により使用して、データベースオブジェクト、問合せ、レポート、等の追加、削除、または修正といった生産性関連の作業を実施する。セカンダリクローンフラグメント934−937はプライマリクローンフラグメント923−926のバックアップとしての役割を果たす。
一般に、それぞれのコンピューティング装置内のプライマリクローンフラグメントは前記装置内のセカンダリクローンフラグメントに対応しない。コンピューティング装置911−914の1つに障害が発生した場合、別のコンピューティング装置が、障害が発生した装置が管理するプライマリフラグメントに対応するセカンダリクローンフラグメントを用いて動作を引き継ぐことができる。このように、データベースシステム900は、データベースオブジェクトのフラグメントはそのフラグメントの少なくとも1つのクローンが利用可能である限りアクセス可能であることを、保証することができる。
別の実施形態において、コンピューティング装置911−914は重複したプライマリクローンフラグメントを含むことができる。このように、複数のコンピューティング装置は問合せのような操作をデータベースオブジェクトの同一部分上で実施することができる。
図10は、データベースオブジェクトを更新するプロセスの例1000を示す。データベースオブジェクトは、テーブル、インデックス等のようなデータベース全体のデータまたはデータベースの一部のデータを含むことができる。更新は、1つまたは複数のフラグメントの修正を含むことができる。ブロック1001で、更新の影響を受けるデータベースオブジェクトのフラグメントを識別し、これらはプロセス1000に対してローカルなデータ構造であるSetOfFragmentsという名前の集合を形成する。本集合内のそれぞれの要素に最初は未処理としてマークを付ける(これは実際のフラグメントを変更せず、ローカルデータ構造内の要素のみを変更する)。プロセス1000は判定ブロック1002に続き、SetOfFragments内に未処理の要素がまだあるか否かを判定する。未処理の要素がなければ、プロセス1000は終了ブロック1012に続き、プロセスが終了する。
判定ブロック1002に戻ると、集合SetOfFragments内に未処理の要素がまだある場合、プロセス1000はブロック1003に続き、未処理の要素を集合SetOfFragmentsから取得し、この要素が次に更新すべきフラグメントを表す。ブロック1004で、対応するプライマリクローンフラグメントを判定し、更新する必要があるプライマリクローンフラグメントのレコード集合を識別し、プロセス1000に対してローカルなデータ構造であるSetOfRecordsという名前の集合を形成する。本集合内のそれぞれの要素に最初は未処理としてマークを付ける(これは実際のレコードを変更せず、ローカルデータ構造内の要素のみを変更する)。判定ブロック1005で、集合SetOfRecords内に未処理の要素がまだあるか否かを判定する。未処理の要素がなければ、プロセス1000はブロック1006に続き、集合SetOfFragments内のカレント要素に処理済としてマークを付ける(これは実際のフラグメントを変更せず、ローカルデータ構造内の要素のみを変更する)。プロセス1000は次いで判定ブロック1002に戻る。
判定ブロック1005に戻ると、集合SetOfRecords内に未処理の要素が残っている場合、プロセス1000はブロック1007に続き、未処理の要素を集合SetOfRecordsから取得する。その要素が次に更新すべきレコードを表す。ブロック1008で、前記レコードに対してCUIDを取得する(CUID値の維持および割り当ては、図12および13のコンテクストで本文書の他所でさらに説明する)。
プロセス1000はブロック1009に続き、レコードを新規値と新規CUIDで更新する。ブロック1010で、古いCUIDおよび(新規CUIDを含む)更新レコードを全てのセカンダリクローンデータフラグメント、および本レコードのコピーを含む全てのクローンインデックスフラグメント(プライマリ、セカンダリ両方)に伝達する。図16は本ブロックをさらに詳細に説明する。
更新を伝達および適用した後、プロセス1000はブロック1011に続き、集合SetOfRecords内のカレント要素に処理済としてマークを付ける(これは実際のレコードを変更せず、ローカルデータ構造内の要素のみを変更する)。プロセス1000は次いで判定ブロック1005に戻る。
図12は、クローン更新識別子(CUIDs)を修正するプロセスの例1200を示す。プロセス1200を、データベースのテーブルのようなそれぞれのデータベースオブジェクトに対し実施することができる。ブロック1203で、プロセス1200はテーブルに関連付けたクローンフラグメントの構成に対する変化を待機する。判定ブロック1205で、クローンフラグメントが利用不能となったか否かの判定を行う。クローンフラグメントが全て利用可能である場合、プロセス1200はブロック1203で待機状態に戻る。
判定ブロック1205に戻ると、クローンフラグメントが利用できなくなった場合、プロセス1200はブロック1207に移動して、テーブルのCUID値が増加する。ブロック1209で、テーブルの新規CUID値はトランザクション的に存続する。
図13は、図12に示すプロセス1200にしたがって配分したプロセスにCUID値を割り当てるプロセスの例1300を示す。データベースシステムを構成して、データベース上で動作するステートメントに対してプロセス1300を実行することができる。ブロック1302で、プロセスはデータベースに対して新規のステートメントを実行する準備を行う。判定ブロック1304で、新規ステートメントがDMLステートメントか否かを判定する。DMLステートメントには一般にデータベース内の項目の挿入、削除および修正のような操作が含まれる。ステートメントがDMLステートメントでない場合、プロセス1300はブロック1320に行き、非DMLステートメントをデータベースに対して実行する。次いで、プロセスはブロック1302に戻る。
判定ブロック1304に戻ると、ステートメントがDMLステートメントである場合、プロセス1300はブロック1306で継続し、更新されているデータベースのテーブルに対するCUID値を読み出す。ブロック1308で、CUID値がDMLステートメントと関連付けられる。ブロック1310で、CUID値を、DMLステートメントにより更新した全てのプライマリクローンフラグメントの各行に記憶する。ブロック1312で、CUID値を、DMLステートメントの更新の伝達により影響を受けたクローンフラグメント内のそれぞれの行またはインデックスエントリに記憶する。CUID値を前記更新でクローンデータおよびインデックスフラグメントの両方に対して伝達することができる。CUID値に対する伝達経路の例を図14に関連させて説明する。CUID値が伝達されると、プロセス1300はブロック1302に戻る。
図14は、CUID値に対する伝達経路の例を示す。図14において、プライマリクローンデータフラグメント1403はDMLステートメントに含まれる更新を実施する。上述のように、DMLステートメントに関連付けたCUID値を、プライマリクローンデータフラグメント1403内のDMLステートメントにより更新される各行に記憶する。プライマリクローンデータフラグメント1403はCUID値を更新とともに経路1411を通ってセカンダリクローンデータフラグメント1405に伝達することができる。特に、DMLステートメントに関連付けたCUID値を、更新の伝達により影響を受けたそれぞれの行に割り当てる。1つの実施において、CUID値をプライマリクローンインデックスフラグメント1407およびセカンダリクローンインデックス1409に、それぞれ経路1412および1413を通してプライマリクローンデータフラグメントから伝達する。別の実施において、CUID値を経路1413で伝達する代わりに、経路1415を通してCUID値をプライマリクローンインデックスフラグメント1407からセカンダリクローンインデックスフラグメント1409に伝達する。
図16は、更新レコードおよび古いCUID値をプライマリクローンフラグメントから全てのセカンダリクローンデータフラグメント、および本レコードのコピーを含む全てのクローンインデックスフラグメントに伝達および適用するプロセスの例1600を示す。伝達した更新を受け取るこれらのクローンフラグメントはカレント状態にあることができるか、またはリフレッシュ中状態にあることができる。プロセス1600は一般に大規模な更新プロセスで1つのステップを形成し、これを本文書の別の部分で説明する。ブロック1601で、全てのセカンダリクローンデータフラグメントと、本レコードのコピーを含む全てのクローンインデックスフラグメント(プライマリ、セカンダリ両方)とを識別する。これらのクローンフラグメントは、プロセス1600に対してローカルなデータ構造であるSetOfSecondariesという名前の集合を形成する。本集合内のそれぞれの要素に最初は未処理としてマークを付ける(これは実際のフラグメントを変更せず、ローカルデータ構造内の要素のみを変更する)。プロセス1600は判定ブロック1602に続き、集合SetOfSecondaries内に未処理の要素がまだあるか否かを判定する。未処理の要素がなければ、プロセス1600は終了ブロック1603に続き、プロセスは終了して、プロセス1600をステップとして備える任意の大規模なプロセスは、その大規模なプロセス内で次のステップに続く。
判定ブロック1602に戻ると、集合SetOfSecondaries内に未処理の要素がまだある場合、プロセス1600はブロック1604に続き、未処理の要素を集合SetOfSecondariesから取得する。その要素は、次に更新すべきセカンダリクローンフラグメントを表す。そのセカンダリクローンフラグメントはセカンダリクローンデータフラグメント、プライマリクローンインデックスフラグメント、またはセカンダリクローンインデックスフラグメントである可能性がある。判定ブロック1605で、セカンダリクローンフラグメント内に、プライマリクローンフラグメントからのレコードと同じCRIDを有し、CUIDがプライマリクローンフラグメントからのレコードの古いCUID値とマッチするレコードが存在するか否かを判定する。存在する場合、プロセス1600はブロック1606に続き、レコードが新規値および新規CUIDで更新される。プロセス1600は次いでブロック1609に続く。
判定ブロック1605に戻ると、マッチするレコードが見つからない場合、プロセス1600は判定ブロック1607に続き、セカンダリクローンフラグメントがリフレッシュ中状態にあるか否かを判定する。リフレッシュ中状態でなければ、ブロック1608で、プライマリクローンフラグメントと一貫しないのでセカンダリクローンフラグメントにオフラインとしてマークを付ける。プロセス1600は次いでブロック1609に続く。
判定ブロック1607に戻ると、セカンダリクローンフラグメントがリフレッシュ中状態にある場合、プロセス1600はブロック1609に続き、集合SetOfSecondaries内のカレント要素に処理済としてマークを付ける(これは実際のフラグメントを変更せず、ローカルデータ構造内の要素のみを変更する)。プロセス1600は次いで判定ブロック1602に戻る。
図15は、説明したシステムおよび方法を実施するコンピュータ装置の例1500を示す。その最も基本的な構成において、コンピューティング装置1500には一般に少なくとも1つの中央演算装置(CPU)1505およびメモリ1510が含まれる。
コンピューティング装置の正確な構成および種類に依存して、メモリ1510は揮発性(例えば、RAM)、不揮発性(例えば、ROM、フラッシュメモリ、等)、または前記2つの何らかの組み合わせであることができる。さらに、コンピューティング装置1500は追加の特徴/機能性を有することもできる。例えば、コンピューティング装置1500は複数のCPUを含むことができる。説明した方法をコンピューティング装置1500内の任意の演算装置により任意の方法で実行することができる。例えば、説明したプロセスを複数のCPUにより並列に実行することができる。
コンピューティング装置1500は追加の記憶装置(取り外し可能および/または取り外し不能)を含むこともできる。その記憶装置は、磁気または光ディスクあるいはテープを含むがこれらに限らない。上記の追加の記憶装置を図15において記憶装置1515により示す。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュールまたは他のデータといった情報を記憶するための任意の方法または技術で実施した揮発性および不揮発性、取り外し可能および取り外し不能媒体が含まれる。メモリ1510および記憶装置1515はコンピュータ記憶媒体の全ての例である。コンピュータ記憶媒体はRAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶または他の磁気記憶装置、あるいは所望の情報を記憶するために使用可能でかつコンピューティング装置1500によりアクセス可能な任意の他の媒体を含むがこれらに限らない。任意の上記コンピュータ記憶媒体はコンピューティング装置1500の一部であることができる。
コンピューティング装置1500は通信装置(複数)1540を含むこともできる。通信装置(複数)1540により、コンピューティング装置1500は他の装置と通信することができる。通信装置(複数)1540は通信媒体の例である。通信媒体は一般に、コンピュータ読取可能命令、データ構造、プログラムモジュールまたは他のデータを、搬送波または他の伝送機構のような変調データ信号で具現化し、任意の情報配信媒体を含む。用語「変調データ信号」は、1つまたは複数の特性集合を有するかまたは情報を信号に符号化するように変化した信号を意味する。限定ではなく例として、通信媒体には有線ネットワークまたは直接配線接続のような有線媒体、ならびに音響、RF、赤外線および他の無線媒体のような無線媒体が含まれる。本明細書で用いるコンピュータ読取可能媒体または装置読取可能媒体という用語には、コンピュータ記憶媒体および通信媒体の両方が含まれる。説明した方法を任意のコンピュータ読取可能媒体において、データ、コンピュータ実行可能命令、等のような任意の形態で符号化することができる。
コンピューティング装置1500は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、等のような入力装置(複数)1535を有することもできる。ディスプレイ、スピーカ、プリンタ、等のような出力装置(複数)1530も含めることができる。これら装置の全ては当業界において公知であり、詳細に議論する必要はない。
当業界の技術者は、プログラム命令を記憶するために利用される記憶装置をネットワークに渡って分散できることを理解するであろう。例えば、リモートコンピュータは、説明したプロセスの例をソフトウェアとして記憶することができる。ローカルまたはターミナルコンピュータはリモートコンピュータにアクセスして、ソフトウェアの一部または全部をダウンロードしてプログラムを実行することができる。または、ローカルコンピュータは必要に応じて少量のソフトウェアをダウンロードすることができるか、または幾つかのソフトウェア命令をローカル端末で実行し、幾つかをリモートコンピュータ(またはコンピュータネットワーク)で実行することができる。当業界の技術者は、当業界の技術者に公知な従来技術を利用することで、ソフトウェア命令の全部または一部をDSP、プログラマブルロジックアレイのような専用回路により実行可能であることも理解するであろう。
データベースシステムにより管理されるデータベースオブジェクトをクローン化するデータ構造の例である。 データベースオブジェクトのクローンフラグメントの例である。 データベースオブジェクトのクローンフラグメントを更新する操作の例である。 データベースオブジェクトに関連付けた陳腐化のクローンフラグメントをリフレッシュする操作の例である。 クローンフラグメントを識別(特定)するデータ構造の例である。 データベースオブジェクトのクローンフラグメントにおけるレコードを識別(特定)するデータ構造の例である。 セカンダリクローンインデックスフラグメントおよびセカンダリクローンデータフラグメントを更新するプロセスの例である。 陳腐化のクローンフラグメントをリフレッシュする際の状態の推移を示す。 クローンデータベースフラグメントを有するデータベースシステムの例である。 データベースオブジェクトの更新プロセスの例を示す。 データベースオブジェクトの陳腐化のクローンフラグメントをリフレッシュするリフレッシュプロセスの例を示す。 クローン更新識別子(CUID)の修正プロセスの例を示す。 図12に示すプロセスに従って配分したCUID値の割り当てプロセスの例を示す。 CUID値の伝達経路の例を示す。 記載したシステムおよび方法を実施するコンピュータ装置の例である。 更新をレコードに伝達および適用し、古いCUID値をプライマリクローンフラグメントから全てのセカンダリクローンデータフラグメント、および前記レコードのコピーを含む全てのクローンインデックスフラグメントに伝達するプロセスの例を示す。 図11に示すリフレッシュプロセスの一部として陳腐化クローンをカレントとするプロセスの例である。

Claims (28)

  1. データベースオブジェクトに関連付けたプライマリクローンフラグメントであって、前記データベースオブジェクトに関連付けたデータベース操作に関して選択されたプライマリクローンフラグメントを識別するステップと、
    前記プライマリクローンフラグメントに対応するセカンダリクローンフラグメントであって、前記プライマリクローンフラグメントに関して陳腐であるセカンダリクローンフラグメントを識別するステップと、
    データベース操作を実行することで、陳腐化の前記セカンダリクローンフラグメントを前記プライマリクローンフラグメント内のデータでリフレッシュするステップと
    を実行するための装置実行可能な命令を有することを特徴とする1つまたは複数の装置読取可能媒体。
  2. 前記陳腐化のセカンダリクローンフラグメントをリフレッシュするためのデータベース操作は、前記陳腐化のセカンダリクローンフラグメントをインクリメンタルにリフレッシュするバッチ操作を含むことを特徴とする請求項1に記載の1つまたは複数の装置読取可能媒体。
  3. 前記陳腐化のセカンダリクローンフラグメントをリフレッシュするバッチ操作は、構造化問合せ言語(SQL)の操作であることを特徴とする請求項2に記載の1つまたは複数の装置読取可能媒体。
  4. さらに、前記プライマリクローンフラグメントについて実行する更新に応じて、前記陳腐化のセカンダリクローンフラグメントをリフレッシュしている間に前記陳腐化のセカンダリクローンフラグメントを更新することを特徴とする請求項1に記載の1つまたは複数の装置読取可能媒体。
  5. 前記更新するステップでは、さらに、前記陳腐化のセカンダリクローンフラグメントの最新行を更新するが前記陳腐化のセカンダリクローンフラグメントの最新でない行は更新しないことを特徴とする請求項4に記載の1つまたは複数の装置読取可能媒体。
  6. 前記リフレッシュするステップでは、
    前記プライマリクローンフラグメントに含まれる第1のレコードに関連付けた第1の更新識別子を識別し、
    前記陳腐化のセカンダリクローンフラグメント内の、前記第1のレコードに対応する第2のレコードに関連付けた第2の更新識別子を識別し、および
    同一のクローンレコード識別子を有する前記第1のレコードおよび第2のレコードが矛盾がないか否かを、少なくとも部分的に、前記第1の更新識別子と前記第2の更新識別子とを比較することに基づいて判定する
    ことを特徴とする請求項1に記載の1つまたは複数の装置読取可能媒体。
  7. 前記第1および第2のレコードが矛盾していると判定される場合、前記リフレッシュするステップでは、さらに、
    前記第2のレコードを前記第1のレコード内のデータでリフレッシュし、および
    前記第1の更新識別子の値を前記第2の更新識別子に割り当てる
    ことを特徴とする請求項6に記載の1つまたは複数の装置読取可能媒体。
  8. 前記セカンダリクローンフラグメント内に含まれるレコードの各々について判定、リフレッシュ、および割り当てのステップを実行することを特徴とする請求項7に記載の1つまたは複数の装置読取可能媒体。
  9. 前記リフレッシュスするテップでは、コミット済み読み込みモードでプレリフレッシュの動作を前記セカンダリクローンフラグメントについてで実行することを特徴とする請求項1に記載の1つまたは複数の装置読取可能媒体。
  10. 前記プレリフレッシュの動作は、前記プライマリクローンフラグメントに対応する他のセカンダリクローンフラグメントについて並列に実行されることを特徴とする請求項9に記載の1つまたは複数の装置読取可能媒体。
  11. 前記陳腐化のセカンダリクローンフラグメントが更新中にオフラインになることに応じて、更新を前記プライマリクローンフラグメントに保存するステップ、および
    前記陳腐化のセカンダリクローンフラグメントがオンラインに戻るとき、前記陳腐化のセカンダリクローンフラグメントを前記の保存した更新でリフレッシュするステップ
    をさらに実行することを特徴とする請求項1に記載の1つまたは複数の装置読取可能媒体。
  12. 前記セカンダリクローンフラグメントをリフレッシュする前記データベース操作は、前記セカンダリクローン内のレコードを挿入、削除および更新するデータ操作言語(DML)の操作を含むことを特徴とする請求項1に記載の1つまたは複数の装置読取可能媒体。
  13. 前記プライマリクローンフラグメントは、クローンデータフラグメントまたはクローンインデックスフラグメントのうち少なくとも1つであることを特徴とする請求項1に記載の1つまたは複数の装置読取可能媒体。
  14. 前記陳腐化のセカンダリクローンフラグメントはクローンインデックスフラグメントであり、前記陳腐化のセカンダリクローンフラグメントを複数のクローンデータフラグメントによりリフレッシュし、それぞれは前記陳腐化のセカンダリクローンフラグメント内の少なくとも1つのエントリと関連付けたことを特徴とする請求項1に記載の1つまたは複数の装置読取可能媒体。
  15. データベースオブジェクトのフラグメントを識別するステップ、
    対応するクローンフラグメントを前記の識別したフラグメントから生成するステップ、
    前記クローンフラグメントをコンピューティング装置のグループに分散するステップ、および
    前記クローンフラグメントの少なくとも1つを、前記データベースオブジェクトに関連付けた操作に対して使用するよう構成したプライマリクローンフラグメントとして指定するステップを
    を実行するための装置実行可能命令を有することを特徴とする1つまたは複数の装置読取可能媒体。
  16. 前記データベースオブジェクトの識別したフラグメントに対する更新を判定するステップ、
    前記プライマリクローンフラグメントに対する前記更新を実行するステップ、および
    前記更新を他の対応するセカンダリクローンフラグメントに伝達および適用するステップ
    をさらに実行することを特徴とする請求項15に記載の1つまたは複数の装置読取可能媒体。
  17. 前記セカンダリクローンフラグメントの1つを、前記更新を含まない陳腐化のセカンダリクローンフラグメントとして識別するステップ、および
    前記の特定した陳腐化のセカンダリクローンフラグメントを、前記プライマリクローンフラグメント内のデータでリフレッシュするステップ
    をさらに実行することを特徴とする請求項16に記載の1つまたは複数の装置読取可能媒体。
  18. 前記リフレッシュステップを標準的なSQLデータベース操作を用いて実行することを特徴とする請求項17に記載の1つまたは複数の装置読取可能媒体。
  19. 前記の識別したフラグメントに対する別の更新を判定するステップ、
    前記の他の更新を前記プライマリクローンフラグメント上で実行するステップ、および
    前記の他の更新の前に前記陳腐化のセカンダリクローンフラグメント内のレコードが前記プライマリクローンフラグメントの対応するレコードに対して最新であった場合に限り、前記の他の更新を前記陳腐化のクローンフラグメント上で選択的に実行するステップ、
    をさらに実行することを特徴とする請求項17に記載の1つまたは複数の装置読取可能媒体。
  20. 前記の選択的に実行するステップでは、リフレッシュした前記陳腐化のクローンフラグメントの一部分で前記の他の更新を実行することを特徴とする請求項19に記載の1つまたは複数の装置読取可能媒体。
  21. さらに、前記陳腐化のクローンフラグメントがリフレッシュされたと判定することに応じて、前記リフレッシュクローンフラグメントをプライマリクローンフラグメントである資格を有するとして即座に指定するステップを実行することを特徴とする請求項20に記載の1つまたは複数の装置読取可能媒体。
  22. 前記リフレッシュするステップを、少数のレコードを短期間ロックしかつ他のユーザの作業負荷と並行に実行する作業負荷として実行することを特徴とする請求項17に記載の1つまたは複数の装置読取可能媒体。
  23. 前記リフレッシュステップを、複数の陳腐化のセカンダリクローンフラグメント上で並列に実行することを特徴とする請求項17に記載の1つまたは複数の装置読取可能媒体。
  24. 前記複数の陳腐化のセカンダリクローンフラグメントは、共通プライマリクローンフラグメント、別のプライマリクローンフラグメント、または別のデータベースオブジェクトのうち少なくとも1つに対応することを特徴とする請求項17に記載の1つまたは複数の装置読取可能媒体。
  25. 前記クローンフラグメントを、データベース操作に対して十分に同一なように生成することを特徴とする請求項15に記載の1つまたは複数の装置読取可能媒体。
  26. 相互作用コンピューティング装置システムにおけるコンピューティング装置であって、前記コンピューティング装置はデータベースオブジェクトと関連付けたデータを含み、前記コンピューティング装置を
    前記データベースオブジェクトの一部分を更新用に識別するステップ、
    前記の特定したデータベースオブジェクト部分に関連付けたプライマリクローンフラグメントを第1のデータベース操作を用いて更新するステップ、
    前記プライマリクローンフラグメントに関連付けたセカンダリクローンフラグメントを特定するステップ、および
    前記セカンダリクローンフラグメントを、少なくとも部分的に前記プライマリクローンフラグメントに含まれるデータに基づいて、前記第1のデータベース操作に関連付けた第2のデータベース操作を用いて更新するステップ
    を実行するよう構成したことを特徴とするコンピューティング装置。
  27. 前記セカンダリクローンフラグメントは前記プライマリクローンフラグメントと比べて陳腐化していることを判定するステップ、
    前記プライマリクローンフラグメント内のデータを用いて前記セカンダリクローンフラグメントをリフレッシュするステップ、および
    前記セカンダリクローンフラグメントがリフレッシュされているときに、前記セカンダリクローンフラグメントを選択的に更新するステップ
    を実行するよう前記コンピューティング装置をさらに構成したことを特徴とする請求項26に記載のコンピューティング装置。
  28. データベースオブジェクトに関連付けた、プライマリおよびセカンダリクローンフラグメントを含むクローンフラグメントを監視するステップ、
    前記クローンフラグメントの少なくとも1つが利用不能になったことを判定するステップ、
    前記データベースオブジェクトに関連付けた更新識別子を増加させるステップ、
    トランザクション的に前記更新識別子を存続させるステップ、
    前記データベースオブジェクトに関連付けた、前記データベースオブジェクトに対する更新を含むDMLステートメントを識別するステップ、
    前記の存続させた更新識別子を前記DMLステートメントと関連付けるステップ、
    前記DMLステートメントにより影響を受けた前記プライマリクローンフラグメント上で前記更新を実行するステップ、
    前記DMLステートメントに関連付けた更新識別子を、前記更新により影響を受けた前記プライマリクローンフラグメント内の各行に記憶するステップ、
    前記更新および前記更新識別子を、前記の影響を受けたプライマリクローンフラグメントに関連付けた前記セカンダリクローンフラグメントに伝達するステップ、および
    前記セカンダリクローンフラグメント上に前記更新識別子を記憶するステップ
    を実行することを特徴とする装置実行可能な方法。
JP2008526946A 2005-08-19 2006-07-20 データベースフラグメントのクローン化および管理 Expired - Fee Related JP5259404B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/207,482 US7890508B2 (en) 2005-08-19 2005-08-19 Database fragment cloning and management
US11/207,482 2005-08-19
PCT/US2006/028346 WO2007024376A2 (en) 2005-08-19 2006-07-20 Database fragment cloning and management

Publications (2)

Publication Number Publication Date
JP2009505281A true JP2009505281A (ja) 2009-02-05
JP5259404B2 JP5259404B2 (ja) 2013-08-07

Family

ID=37768395

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008526946A Expired - Fee Related JP5259404B2 (ja) 2005-08-19 2006-07-20 データベースフラグメントのクローン化および管理

Country Status (15)

Country Link
US (1) US7890508B2 (ja)
EP (1) EP1915668B1 (ja)
JP (1) JP5259404B2 (ja)
KR (1) KR20080055795A (ja)
CN (1) CN101268439B (ja)
AU (1) AU2006284498B2 (ja)
BR (1) BRPI0615028A2 (ja)
CA (1) CA2615421A1 (ja)
IL (1) IL188664A (ja)
MX (1) MX2008002168A (ja)
NO (1) NO20080234L (ja)
NZ (2) NZ593162A (ja)
RU (1) RU2417426C2 (ja)
WO (1) WO2007024376A2 (ja)
ZA (1) ZA200800962B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10191690B2 (en) 2014-03-20 2019-01-29 Nec Corporation Storage system, control device, memory device, data access method, and program recording medium

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5068062B2 (ja) * 2006-10-30 2012-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースを統合するためのシステム、方法、およびプログラム
US20080313136A1 (en) * 2007-06-13 2008-12-18 International Business Machines Corporation Method and apparatus for producing up-to-date query results from tables including data from a data warehouse
US20100057787A1 (en) * 2008-08-28 2010-03-04 International Business Machines Corporation Method, system, and computer program product for cloning of distributed and stateful systems
US8131700B2 (en) * 2008-09-25 2012-03-06 Microsoft Corporation Transitioning clone data maps and synchronizing with a data query
US20100082551A1 (en) * 2008-09-26 2010-04-01 Microsoft Corporation Data placement transparency for high availability and load balancing
WO2010037065A2 (en) 2008-09-26 2010-04-01 Cmi Corporate Marketing D/B/A Prelude Innovations, Inc. Scalable relational database replication
US8990161B1 (en) * 2008-09-30 2015-03-24 Emc Corporation System and method for single segment backup
US20100082546A1 (en) * 2008-09-30 2010-04-01 Microsoft Corporation Storage Tiers for Database Server System
JP5387015B2 (ja) * 2009-02-02 2014-01-15 株式会社リコー 情報処理装置、および情報処理装置の情報処理方法
US20100306591A1 (en) * 2009-06-01 2010-12-02 Murali Mallela Krishna Method and system for performing testing on a database system
WO2011109025A1 (en) * 2010-03-05 2011-09-09 Hewlett Packard Development Company, L.P. System and method for rowset inserts
CN103026355B (zh) * 2010-03-18 2016-06-08 诺宝公司 数据库管理系统
JP2012079100A (ja) * 2010-10-01 2012-04-19 Canon Inc ディスク制御装置及びディスク制御方法、並びにプログラム
US8832028B2 (en) 2011-08-25 2014-09-09 Oracle International Corporation Database cloning
WO2013083183A1 (en) * 2011-12-06 2013-06-13 Huawei Technologies Co., Ltd. Database with aging mechanism and method for managing a database
US9805107B2 (en) * 2011-12-09 2017-10-31 Telduráðgevin Sp/f Systems and methods for dynamic partitioning in a relational database
US8620924B2 (en) 2012-03-06 2013-12-31 International Business Machines Corporation Refreshing a full-text search index in a partitioned database
US11176111B2 (en) 2013-03-15 2021-11-16 Nuodb, Inc. Distributed database management system with dynamically split B-tree indexes
US10740323B1 (en) 2013-03-15 2020-08-11 Nuodb, Inc. Global uniqueness checking in distributed databases
US9501363B1 (en) 2013-03-15 2016-11-22 Nuodb, Inc. Distributed database management system with node failure detection
WO2014168913A1 (en) 2013-04-08 2014-10-16 Nuodb, Inc. Database management system with database hibernation and bursting
US9633051B1 (en) 2013-09-20 2017-04-25 Amazon Technologies, Inc. Backup of partitioned database tables
US10025673B1 (en) 2013-09-20 2018-07-17 Amazon Technologies, Inc. Restoring partitioned database tables from backup
US9632878B1 (en) 2013-09-20 2017-04-25 Amazon Technologies, Inc. Verification of database table partitions during backup
US10025710B2 (en) 2014-04-30 2018-07-17 Walmart Apollo, Llc Pattern for integrating primary and secondary data stores in a sharded data domain
GB2532039B (en) 2014-11-06 2016-09-21 Ibm Secure database backup and recovery
WO2016118361A1 (en) 2015-01-23 2016-07-28 Servicenow, Inc. Distributed computing system with resource managed database cloning
US10884869B2 (en) 2015-04-16 2021-01-05 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
US10067969B2 (en) 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9529923B1 (en) 2015-08-28 2016-12-27 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US20180074967A1 (en) * 2016-09-09 2018-03-15 Sap Se Paging Mechanism for In-Memory Data Management System
EP4027251A1 (en) 2016-11-10 2022-07-13 Swirlds, Inc. Methods and apparatus for a distributed database including anonymous entries
AU2017382161B2 (en) 2016-12-19 2022-07-07 Hedera Hashgraph, Llc Methods and apparatus for a distributed database that enables deletion of events
KR102348418B1 (ko) 2017-07-11 2022-01-07 스월즈, 인크. 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
CN111213138A (zh) 2017-08-15 2020-05-29 诺宝公司 分布式数据库中的索引拆分
US10489385B2 (en) * 2017-11-01 2019-11-26 Swirlds, Inc. Methods and apparatus for efficiently implementing a fast-copyable database
RU2703961C1 (ru) * 2018-07-25 2019-10-22 федеральное государственное бюджетное образовательное учреждение высшего образования "Российский государственный университет им. А.Н. Косыгина (Технологии. Дизайн. Искусство)" Система репликации информации в базах данных
US11048692B2 (en) * 2019-04-02 2021-06-29 Sap Se Partition move in case of table update
CN110111203A (zh) * 2019-05-05 2019-08-09 北京阿尔山金融科技有限公司 业务数据的批量操作方法、装置及电子设备
CN113711202A (zh) 2019-05-22 2021-11-26 斯沃尔德斯股份有限公司 用于在分布式数据库中实现状态证明和分类帐标识符的方法和装置
EP3896579A1 (de) * 2020-04-17 2021-10-20 Allianz Deutschland AG Verfahren zur integration und koordination von mess- und/oder steuersystemen
US11809591B1 (en) * 2023-02-22 2023-11-07 Snowflake Inc. Column hiding management system

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274394A (ja) * 1993-03-19 1994-09-30 Nippon Telegr & Teleph Corp <Ntt> 分散データベース制御方法
JPH0877053A (ja) * 1994-09-08 1996-03-22 Nippon Telegr & Teleph Corp <Ntt> 複製データベース反映装置及び複製データベース反映方法
US5937414A (en) * 1997-02-28 1999-08-10 Oracle Corporation Method and apparatus for providing database system replication in a mixed propagation environment
US6101497A (en) * 1996-05-31 2000-08-08 Emc Corporation Method and apparatus for independent and simultaneous access to a common data set
JP2000339210A (ja) * 1999-05-28 2000-12-08 Fujitsu Ltd データベース複写装置及びデータベース複写方法並びにデータベース複写プログラムを記録した記録媒体
JP2001290687A (ja) * 2000-04-04 2001-10-19 Nec Eng Ltd データ同期化制御方式
JP2002157156A (ja) * 2000-09-08 2002-05-31 Hitachi Ltd データベース管理方法およびシステム並びにその処理プログラムおよびそのプログラムを格納した記録媒体
JP2002297455A (ja) * 2001-03-29 2002-10-11 Fujitsu Ltd 記憶装置のデータ領域間複写処理方法、及び記憶システム
JP2002542526A (ja) * 1999-02-17 2002-12-10 イーエムシー コーポレイション 冗長データ記憶ユニットを通じてデータをカスケードにする方法および装置
JP2003527688A (ja) * 2000-03-14 2003-09-16 テレフオンアクチーボラゲット エル エム エリクソン(パブル) クライアントのデータベースとサーバーのデータベースとを同期させる方法
JP2003316634A (ja) * 2002-04-26 2003-11-07 Hitachi Ltd データベース管理方法および装置およびその処理プログラム
JP2003345640A (ja) * 2002-05-28 2003-12-05 Mitsubishi Electric Corp データベースバックアップシステム
JP2004334460A (ja) * 2003-05-07 2004-11-25 Hitachi Ltd データベースのスナップショット方法及びシステム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4432057A (en) 1981-11-27 1984-02-14 International Business Machines Corporation Method for the dynamic replication of data under distributed system control to control utilization of resources in a multiprocessing, distributed data base system
CA1307919C (en) 1988-10-06 1992-09-29 Dean S. Liu Method and apparatus for making electrical heater pad
US5170480A (en) 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time
US5440727A (en) 1991-12-18 1995-08-08 International Business Machines Corporation Asynchronous replica management in shared nothing architectures
US5555404A (en) 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
JP2708386B2 (ja) 1994-03-18 1998-02-04 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時更新及び複写手順を通して重複データベースを回復させる方法及び装置
US6539381B1 (en) 1999-04-21 2003-03-25 Novell, Inc. System and method for synchronizing database information
US6694337B1 (en) * 2000-10-26 2004-02-17 Intel Corporation Synchronizing databases
US7164676B1 (en) * 2001-03-21 2007-01-16 Cisco Technology, Inc. Method and apparatus for a combined bulk and transactional database synchronous scheme
US6839564B2 (en) * 2001-04-25 2005-01-04 Nokia Corporation Synchronization of database data
US7373362B2 (en) * 2001-11-19 2008-05-13 Extended Systems, Inc. Coordinated synchronization
US6820180B2 (en) * 2002-04-04 2004-11-16 International Business Machines Corporation Apparatus and method of cascading backup logical volume mirrors
GB0308264D0 (en) 2003-04-10 2003-05-14 Ibm Recovery from failures within data processing systems
US20050149582A1 (en) * 2003-12-29 2005-07-07 Wissmann Joseph T. Method and system for synchronization of copies of a database
US20080126439A1 (en) * 2006-09-25 2008-05-29 International Business Machines Corporation Change verification in a configuration management database

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274394A (ja) * 1993-03-19 1994-09-30 Nippon Telegr & Teleph Corp <Ntt> 分散データベース制御方法
JPH0877053A (ja) * 1994-09-08 1996-03-22 Nippon Telegr & Teleph Corp <Ntt> 複製データベース反映装置及び複製データベース反映方法
US6101497A (en) * 1996-05-31 2000-08-08 Emc Corporation Method and apparatus for independent and simultaneous access to a common data set
US5937414A (en) * 1997-02-28 1999-08-10 Oracle Corporation Method and apparatus for providing database system replication in a mixed propagation environment
JP2002542526A (ja) * 1999-02-17 2002-12-10 イーエムシー コーポレイション 冗長データ記憶ユニットを通じてデータをカスケードにする方法および装置
JP2000339210A (ja) * 1999-05-28 2000-12-08 Fujitsu Ltd データベース複写装置及びデータベース複写方法並びにデータベース複写プログラムを記録した記録媒体
JP2003527688A (ja) * 2000-03-14 2003-09-16 テレフオンアクチーボラゲット エル エム エリクソン(パブル) クライアントのデータベースとサーバーのデータベースとを同期させる方法
JP2001290687A (ja) * 2000-04-04 2001-10-19 Nec Eng Ltd データ同期化制御方式
JP2002157156A (ja) * 2000-09-08 2002-05-31 Hitachi Ltd データベース管理方法およびシステム並びにその処理プログラムおよびそのプログラムを格納した記録媒体
JP2002297455A (ja) * 2001-03-29 2002-10-11 Fujitsu Ltd 記憶装置のデータ領域間複写処理方法、及び記憶システム
JP2003316634A (ja) * 2002-04-26 2003-11-07 Hitachi Ltd データベース管理方法および装置およびその処理プログラム
JP2003345640A (ja) * 2002-05-28 2003-12-05 Mitsubishi Electric Corp データベースバックアップシステム
JP2004334460A (ja) * 2003-05-07 2004-11-25 Hitachi Ltd データベースのスナップショット方法及びシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10191690B2 (en) 2014-03-20 2019-01-29 Nec Corporation Storage system, control device, memory device, data access method, and program recording medium

Also Published As

Publication number Publication date
IL188664A0 (en) 2008-08-07
US7890508B2 (en) 2011-02-15
EP1915668B1 (en) 2018-07-04
KR20080055795A (ko) 2008-06-19
EP1915668A2 (en) 2008-04-30
MX2008002168A (es) 2008-04-22
ZA200800962B (en) 2009-05-27
RU2008106228A (ru) 2009-08-27
AU2006284498A1 (en) 2007-03-01
AU2006284498B2 (en) 2011-04-14
WO2007024376A3 (en) 2007-11-29
EP1915668A4 (en) 2009-10-28
JP5259404B2 (ja) 2013-08-07
CN101268439A (zh) 2008-09-17
NZ593162A (en) 2012-04-27
NO20080234L (no) 2008-03-14
NZ565641A (en) 2011-06-30
CN101268439B (zh) 2012-04-25
CA2615421A1 (en) 2007-03-01
IL188664A (en) 2014-02-27
BRPI0615028A2 (pt) 2011-05-03
RU2417426C2 (ru) 2011-04-27
US20070043749A1 (en) 2007-02-22
WO2007024376A2 (en) 2007-03-01

Similar Documents

Publication Publication Date Title
JP5259404B2 (ja) データベースフラグメントのクローン化および管理
US11429641B2 (en) Copying data changes to a target database
US11132350B2 (en) Replicable differential store data structure
JP5890071B2 (ja) 分散キーバリューストア
US9922075B2 (en) Scalable distributed transaction processing system
US10248709B2 (en) Promoted properties in relational structured data
US10599676B2 (en) Replication control among redundant data centers
US9922086B1 (en) Consistent query of local indexes
CN108509462B (zh) 一种同步活动事务表的方法及装置
US11226985B2 (en) Replication of structured data records among partitioned data storage spaces
EP2406736A2 (en) Composite hash and list partitioning of database tables
US10235406B2 (en) Reminder processing of structured data records among partitioned data storage spaces
US7809762B1 (en) Outage-less database change operation
VanBenschoten et al. Enabling the next generation of multi-region applications with cockroachdb
WO2023124242A1 (zh) 事务执行方法、装置、设备和存储介质
Göbel et al. Elasticity in Tell

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111028

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120817

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121119

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: 20130329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130424

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160502

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5259404

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees