(57)【要約】【課題】  複数ユーザによる同時トランザクションを効率的に実行し、変更するオブジェクトの物理レベルの下の論理レベルでデータを追跡するシステムおよび方法を提供すること。【解決手段】  各トランザクションは、変更するデータセグメントの更新確定されたバージョンをそれぞれの領域にコピーでき、こうしたコピーを変更中に更新できる。検知コンポーネントは、操作するデータセグメントが他のトランザクションが更新確定した結果としての更新を必要とするかどうかを検知し、マージコンポーネントはデータセグメントを更新確定されたバージョンに同期させる。更新確定段階の要素として、検知およびマージ処理を完了する際に様々な最適化機能を導入してもよい。【選択図】  図１
2006012153.tif 000002
【特許請求の範囲】
【請求項１】
複数の同時トランザクションのすべてについて動作し、データセグメントのコピーが該データセグメントの更新確定されたバージョンと比較して最新かどうかを検知する検知コンポーネントであって、前記データセグメントは変更を要求する１つまたは複数のトランザクションによってコピーされる検知コンポーネント
を備えたことを特徴とするデータ管理エンジン。
【請求項２】
前記データセグメントのコピーを前記更新確定されたバージョンに同期させるマージコンポーネントをさらに備えたことを特徴とする請求項１に記載のデータ管理エンジン。
【請求項３】
同時トランザクションのすべてについて前記データセグメントの下位層においてロックをかけることを可能にするロックマネージャをさらに備えたことを特徴とする請求項２に記載のシステム。
【請求項４】
前記同時トランザクションの各々は、前記データセグメントのそれぞれのコピーを変更することを特徴とする請求項２に記載のシステム。
【請求項５】
前記検知コンポーネントは、前記トランザクションの各々が使用するデータセグメントのそれぞれのコピーのすべてについてデータの変更を検知することを特徴とする請求項３に記載のシステム。
【請求項６】
前記マージコンポーネントは、前記それぞれのコピーに付けられたマークに基づいてマージが必要かどうかを判断することを特徴とする請求項４に記載のシステム。
【請求項７】
前記データセグメントはデータベースのデータページであり、前記下位層においてロックをかけること（ｓｕｂ  ｐａｇｅ  ｌｏｃｋｉｎｇ）は前記データページの行においてロックをかけることであることを特徴とする請求項３に記載のシステム。
【請求項８】
前記それぞれのコピーにマークを付けるページマーキングコンポーネントをさらに備えたことを特徴とする請求項２に記載のシステム。
【請求項９】
前記データページを操作するトランザクションに関する一連の条件を適用し、前記トランザクションの更新確定段階に先立って前記データページの少なくとも１つの領域の空きが保証し、マージ処理でのデータの再編成を不要にする最適化機能をさらに備えたことを特徴とする請求項７に記載のシステム。
【請求項１０】
データページのページの下位層の操作を行う同時トランザクションのすべてについて動作し、前記データページのコピーが更新確定されたバージョンに比較して最新かどうか、および前記データページに関連するページマーキングコンポーネントによって前記データページにマークが付けられていないかを検知する検知コンポーネントと、
前記データページの前記コピーを前記更新確定されたバージョンで更新するマージコンポーネントと
を備えたことを特徴とするデータベースエンジン。
【請求項１１】
前記同時トランザクションの各々は、前記データページ上の空き領域をすべて消費することなく、前記データページのそれぞれのコピーを変更することを特徴とする請求項１０に記載のデータベースエンジン。
【請求項１２】
前記同時トランザクションのすべてについて操作の互換性を実現するロックマネージャをさらに備えたことを特徴とする請求項１０に記載のデータベースエンジン。
【請求項１３】
データページの変更を要求するトランザクションの予約領域に前記データページをコピーし、前記データページのそれぞれのコピーを作成するステップと、
前記それぞれのコピーが前記データページの更新確定されたバージョンと比較して最新の状態にあるかどうかを検知するステップと
を備えたことを特徴とする同時トランザクションを実行する方法。
【請求項１４】
前記それぞれのコピーを前記データページの更新確定されたバージョンで更新するステップをさらに備えたことを特徴とする請求項１３に記載の方法。
【請求項１５】
他のトランザクションが更新確定した結果として前記データページを変更するステップをさらに備えたことを特徴とする請求項１３に記載の方法。
【請求項１６】
前記データページのそれぞれのコピーにマークを付けるステップをさらに備えたことを特徴とする請求項１３に記載の方法。
【請求項１７】
前記データページでリソースにロックを割り当てるステップをさらに備えたことを特徴とする請求項１３に記載の方法。
【請求項１８】
前記トランザクションの各々を１動作に１つずつ更新確定するステップをさらに備えたことを特徴とする請求項１４に記載の方法。
【請求項１９】
前記トランザクションがロールバックすると、前記それぞれのコピーを廃棄するステップをさらに備えることを特徴とする請求項１３に記載の方法。
【請求項２０】
トランザクションを更新確定すると、前記ロックを解除するステップをさらに備えることを特徴とする請求項１８に記載の方法。
【請求項２１】
請求項１３に記載の方法を実行するためのコンピュータ実行可能命令を格納するコンピュータ読取可能な媒体。
【請求項２２】
同時トランザクションを実行するシステムであって、
データページ上で更新された情報を検知する手段と、
前記データページのコピー上で前記更新された情報をマージする手段と
を備えたことを特徴とするシステム。
【請求項２３】
前記データページのコピーにマークを付ける手段をさらに備えたことを特徴とする請求項２２に記載のシステム。
【請求項２４】
複数の起動中のトランザクションのすべてについて動作し、前記データページのコピーが更新確定されたバージョンと比較して最新かどうかを検知するコンピュータ実行可能コンポーネントを備えたデータ構造を格納し、前記データページはその変更を要求する起動中のトランザクションによってコピーされることを特徴とするコンピュータ読取可能な媒体。
【請求項２５】
前記それぞれのコピーを前記データページの更新確定されたバージョンで更新する別のコンピュータ実行可能コンポーネントをさらに備えたことを特徴とする請求項２４に記載のコンピュータ読取可能な媒体。
【請求項２６】
データページのデータを変更する際の論理的な考慮事項を管理するさらに別のコンピュータ実行可能コンポーネントをさらに備えたことを特徴とする請求項２４に記載のコンピュータ読取可能な媒体。
【請求項２７】
前記さらに別のコンピュータ実行可能コンポーネントは、前記データページのページの下位層にロックをかけることを許可することを特徴とする請求項２６に記載のコンピュータ読取可能な媒体。
【請求項２８】
前記それぞれのコピーにマークを付けるさらに別のコンピュータ実行可能コンポーネントをさらに備えたことを特徴とする請求項２５に記載のコンピュータ読取可能な媒体。
【請求項２９】
同時トランザクションの同期化を可能にするシステムであって、
データページ上で更新された情報を検知する手段と、
前記データページのコピー上で前記更新された情報をマージする手段と、
前記同時トランザクションの更新確定段階で前記データページの周囲のデータの再編成を軽減する手段と
を備えたことを特徴とするシステム。
【請求項３０】
データページに格納されたデータをトランザクションによって操作する方法であって、
データページを前記トランザクションの予約領域にコピーするステップと、
前記データページ上で更新された情報を検知するステップと、
データページ上でスピンロック（ｓｐｉｎ  ｌｏｃｋ）を取得するステップと
を備えたことを特徴とする方法。
【請求項３１】
前記データページを操作する複数の同時トランザクションのすべてに対して領域の空き状況を追跡するステップをさらに備えたことを特徴とする請求項３０に記載の方法。
【請求項３２】
前記データページにマークを付けるステップをさらに備えたことを特徴とする請求項３０に記載の方法。
【請求項３３】
前記データページの行レベルでリソースにロックをかけるステップをさらに備えたことを特徴とする請求項３０に記載の方法。
【請求項３４】
請求項３０に記載の方法を実行するためのコンピュータ実行可能命令を格納するコンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にデータ管理に関し、より詳細にはページのバージョニングおよびコピーイングの手法を（例えば、データベース管理システムのサブページ程度の階層で）使用してデータの物理セグメントを操作する同時トランザクションを実行するシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータ技術（マイクロプロセッサの速度、メモリ容量、データ転送帯域幅、ソフトウェアの機能など）の更なる進歩により、一般に様々な業界におけるコンピュータアプリケーションが増大してきている。これまでにない強力なサーバシステムとして、多くの場合サーバ配列が用いられ、例えばＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂなどの外部ソースから出される要求を処理している。個別のイントラネットシステムの機能が向上し、より大規模なネットワークの負荷と関連するアプリケーションのサービスが必要になってくるにしたがって、内部システムの要求もますます増大してきている。
【０００３】
一般に、コンピュータシステムの問題は、入手可能な情報やデータが増大しつつあり、それらを処理しなければならないこと、および複数のユーザが入力する更新情報を連続的に監視しなければならないことである。データベースとして何らかの形でディスクやその他の媒体に格納される正味の情報の量は、飛躍的に増えつつある。ファイルとディスクは数十年前には１，０００バイト単位で計算されていたが、１，０００，０００バイト（メガバイト）単位の時代になり、さらに１，０００，０００，０００バイト（ギガバイト）単位になり、現在ではメガバイトの１，０００，０００倍（テラバイト）、場合によってはメガバイトの１，０００，０００，０００倍の規模のデータベースが構築され、日常業務に使用されている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このように多くのビジネスデータがデータベースに格納され、データベース管理システム（ＤＢＭＳ）の下で管理されている。こうしたＤＢＭＳシステムでは、大規模なインストールを行なう際の大量のデータを処理するデータベーストランザクションへの要求が著しく高まりつつある。同時に、リレーショナルデータベース環境によるデータベースアプリケーションは、新しいデータベースアプリケーション全体の大きな部分を占めている。さらに、こうしたリレーショナルデータベースによって、データベースに関する様々な形のクエリをサポートするための理想的な環境が提供される。例えば、こうしたデータベース環境では、臨機応変の（ａｄ  ｈｏｃ）構造化されていない付随的な（ｃｏｎｃｏｍｉｔａｎｔ）クエリの使用が増加する傾向が益々高くなることが予想される。したがって、同一のデータベースに対して、大容量の（ｈｉｇｈ  ｖｏｌｕｍｅ）トランザクション処理と構造化されていないクエリの両方を同時にサポートする必要がある。このように、大容量のトランザクション処理と複雑なクエリの両方を効果的にサポートし、両者間の衝突（ｉｎｔｅｒｆｅｒｅｎｃｅ）を最小限に抑え、データのコピーを共有することができるシステムおよび方法が求められている。
【０００５】
一般に、企業（ｂｕｓｉｎｅｓｓ  ｅｎｔｉｔｉｅｓ）では、複数のトランザクションを同時に実行できるデータベースエンジンの必須の機能を使用し、大容量の比較的単純なトランザクションを処理してデータベースを作成し、保守している。こうした複数のトランザクションの各々は、１つの作業と見なすことができ、さらに、１つの作業はデータベースに対する読み出し、書き込み、更新、および／または削除などの一連の操作により構成することができる。こうしたトランザクションは、一般的な業務操作（例えば、新しい顧客レコードの作成、支払勘定（ａｃｃｏｕｎｔ  ｐａｙｍｅｎｔ）や振替勘定（ａｃｃｏｕｎｔ  ｔｒａｎｓｆｅｒ）の記録など）を表している。企業においては、自社のオンラインデータに対してより臨機応変に対応できる非構造化クエリを実行したいとの要望が高まっている。こうして、データベースの状態が適正であるかどうかの基準、すなわちデータベースの整合性がますます不可欠になっている。
【０００６】
一般に、データベースの整合性とは、ある意味で、同時に２つ以上のトランザクションが実行され、それによりトランザクション同士の衝突が発生しても、データベースが不適切な状態とならないことが保証されるかどうかということである。アプリケーションのプログラマは、通常、個々のトランザクションによって適正な状態が得られること、およびデータベースは適正な状態にあるとき個々のトランザクションを開始することを保証する必要がある。こうしたトランザクション管理は、一般にＡＣＩＤ（Atomicity, Consistency, Isolation and Durability）標準に準拠する必要がある。さらに、データページについて複数のコピーが作成される場合、こうした標準への準拠は困難になる。同時に、データベースエンジンが同時トランザクションを効率的にサポートすれば、動作速度が向上し、データベースの増大が抑制されることでエンドユーザの使い心地も向上する。
【０００７】
特に、従来のシャドウページング技術では、通常、データが変更にかけられている段階（ｃｏｍｍｉｔ  ｓｔａｇｅ）で効率的な操作ができない。同時トランザクションをまとめる（ｍｅｒｇｉｎｇ）ための余計なオーバーヘッドが発生する場合がある。さらに、一般的にログレコードの使用によってデータベースの管理と復旧がさらに複雑になる。
【０００８】
したがって、データベース操作と一般に複数のユーザによるデータ入力を許可する任意のデータ管理システムに関連する従来のシステムおよび方法に伴う上述の問題点を克服することが要求される。
【課題を解決するための手段】
【０００９】
本発明の１つまたは複数の態様について基本的な理解が得られるように、本発明の概要について以下に簡単に説明する。以下の説明は、本発明の概要を一般的に示すものではない。本発明の重要な要素または不可欠な要素を特定したり、本発明の範囲を限定したりするものでもない。この項（ｔｈｉｓ  ｓｕｍｍａｒｙ）は、後述の実施形態に関する説明の準備として、本発明に関するいくつかの概念を簡略化した形で示すことが唯一の目的である。
【００１０】
本発明は、ページのバージョニング／コピーイングの手法を使用して同時トランザクションを実行するシステムおよび方法を提供する。検知コンポーネント（ｄｅｔｅｃｔ  ｃｏｍｐｏｎｅｎｔ）は処理の対象となるデータセグメントが他のトランザクションを処理する（ｃｏｍｍｉｔ）ために更新する必要があるかどうかを検知し、マージコンポーネントはデータセグメントを更新確定された（ｃｏｍｍｉｔｔｅｄ）バージョンと同期させる。データセグメントは、物理ユニットおよび／またはデータベース内のデータページのような複数のトランザクション間の交換ユニットでもよい。したがって、同時トランザクションはデータページの様々なコピーを処理し、各トランザクションは各々のコピーを変更する。こうして複数のユーザによる操作が可能になる。本発明は、基本的にデータベーストランザクションの文脈で説明するが、本発明はこれに限定されず、変更されるオブジェクトの物理レベルの下にある論理レベルにおけるデータの追跡が必要とされるような任意のデータ管理システムに適用することができることを理解されたい。
【００１１】
本発明の方法によると、データページのページの下位層における変更を必要とするトランザクションＴ１は、まず更新確定されたデータページの最新のバージョンをデータベースから専用の領域にコピーする（「ゴールデンコピー（ｇｏｌｄｅｎ  ｃｏｐｙ）」）。要求されたページの下位層（例えば、行）を変更するための適切に錠をかける権限に基づいて、トランザクションＴ１はコピーされた複製に対して必要な変更を開始する。一方、同じページの他のセグメント（例えば、Ｔ１が錠をかけられていない他の行）を変更する他の様々なトランザクションは更新確定（ｃｏｍｍｉｔｅｄ）を実行できるので、データページの「ゴールデンコピー」の変更は、Ｔ１によって同時に変更される。本発明は、Ｔ１が処理する（ｃｏｍｍｉｔ）前にこうした「ゴールデンコピー」の変更を検知し、Ｔ１自体による変更とマージすることで、処理されている段階（ｃｏｍｍｉｔ  ｓｔａｇｅ）でデータベースの整合性が保持されるようにする。したがって、ゴールデンコピーより前のコピーはそれより後の変更において更新および／または同期化される。また、再読み出しの操作では（例えばＴ１が変更しているページの読み出しが必要になった場合に）、このページのゴールデンコピーへの変更があれば、これをトランザクションの領域にマージするので、再読み出しのプロセスではこうしたページの適切な読み取り用の（ｒｅａｄ−ｃｏｍｍｉｔｔｅｄ）バージョンが使用される。さらに、トランザクションＴ１で更新確定しないという判断が下された場合は、Ｔ１で変更されたページのコピーはそのまま廃棄される。
【００１２】
本発明の関連の態様において、ゴールデンコピーへの変更をトランザクションに通知するページ作成コンポーネントを提供することもできる。各トランザクションが処理しているページに関する情報をデータベースエンジンに格納し、トランザクションが処理すると、更新確定されたバージョンに関する情報が、必要に応じて他のトランザクションに提供されるようにしてもよい。したがって、同時トランザクションが別々のページを操作している場合は、一般にマージのステップが不要であり、ページマーキング（ｐａｇｅ  ｍａｒｋｉｎｇ）コンポーネントが他のトランザクションに情報を提供して、更新確定されたページの最新のバージョンに合わせる必要はない。同様に、トランザクションがロールバックし、予定の処理が実行されない場合は、他のトランザクションのページマーキングは一般には不要である。
【００１３】
本発明のもう１つの態様によると、マージ処理を効率的に実行するための様々な最適化機能を導入してもよい。例えば、トランザクションの処理段階に先立って（すなわち、トランザクションがデータベースに対して行う変更を「確定」する前に）、一般的に特定のページの領域に空きがあること（すなわち、ページの様々なコピーを操作するトランザクションはそのページの記憶領域全体を使用するわけではないこと）、およびページ全体のデータの再編成が軽減される（トランザクションは、様々なコピーをマージするためにページ全体のデータを移動する必要はない）ことが保証される。こうした枠組みによって、予定の処理の操作を効率的かつ簡単に実行できるので、複数ユーザによる操作が改善され、システムリソースを節約できる。
【００１４】
本発明の関連する態様において、スピンロックの手法（ｓｐｉｎ  ｌｏｃｋ  ｓｙｓｔｅｍ）を導入し、一度に１人のユーザのみが処理できるようにしてもよい。通常、このようなミューテックス（ｍｕｔｅｘ）コンポーネントをトランザクションが更新確定の段階に到達したときに利用することでデータベース操作における整合性を提供できる。
【００１５】
上述の結果と関連する結果を実現するために、本発明は以下に詳説する機能を備えている。以下の説明と添付の図面には、説明を目的とした本発明の特定の例示的な態様を詳細に示す。ただし、こうした態様は例を示すものであり、本発明の原理を使用できる様々な方法の一部にすぎない。本発明のその他の態様、利点、新規の機能は、以下の詳細な記述に添付の図面を関連付けて考察することで明らかになるであろう。
【発明を実施するための最良の形態】
【００１６】
本発明について添付の図面に関連付けながら詳細に説明するが、全体にわたって同類の要素には同様の参照番号を使用する。以下の説明において、本発明の理解を深めるために、説明を目的として具体的に特定の番号について詳細に説明する。ただし、本発明は以下に示す個々の詳細な要素がなくても実施できることは明らかである。他の例では、本発明の説明を容易にするために、既知の構造とデバイスがブロック図の形で示されている。
【００１７】
本出願で使用する限り、「コンポーネント」、「ハンドラ」、「モデル」、「システム」などの用語は、コンピュータ関連のエンティティを表すものとし、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、実行中のソフトウェア（ｓｏｆｔｗａｒｅ  ｉｎ  ｅｘｅｃｕｔｉｏｎ）のいずれでもよい。例えば、コンポーネントは、プロセッサで実行するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行中のスレッド、プログラム、および／またはコンピュータのいずれでもよいが、これらに限定はされない。例えば、サーバ上で動作するアプリケーションとサーバはいずれもコンポーネントと言える。実行中のプロセスおよび／またはスレッド内に１つまたは複数のコンポーネントが存在してもよい。また、コンポーネントは１台のコンピュータに集中しても、および／または２台またはそれ以上のコンピューに分散してもよい。さらに、こうしたコンポーネントは、様々なデータ構造を格納した様々なコンピュータ読取可能な媒体からも実行できる。コンポーネントは、ローカルプロセスおよび／またはリモートプロセスを介して、例えば１つまたは複数のデータパケット（例えば、ローカルシステム内、分散システム内の別のコンポーネント、および／またはインターネットのようにネットワークを経由した他のシステムと対話するコンポーネントのデータ）を含む信号に従って通信できる。
【００１８】
本発明は、検知コンポーネントとマージコンポーネントを使用して予め定められたデータセグメント（例えば、データベースのページの下位層）に関する同時トランザクションを実行するシステムおよび方法を提供する。個々のトランザクションは、データセグメントを更新確定された最新のバージョンで、データストレージからトランザクション専用の領域にコピーする（「ゴールデンコピー」）。検知コンポーネントは、処理中の任意のデータセグメントが他のトランザクションによって実行されたさらなる変更に基づく更新が必要であるかどうかを検知することができる。本発明は、基本的にデータベーストランザクションの文脈の流れで説明されているが、本発明はこれに限定されず、複数のユーザがデータ記憶領域のデータセグメントの変更を要求する任意のデータ管理システムに適用することができることを理解されたい。
【００１９】
まず図１を参照すると、本発明の１つの実施形態によるデータ管理エンジンの例示的な要素が示されている。検知コンポーネント１１０とマージコンポーネント１２０が組み込まれており、ここでトランザクション１１２〜１１６が動作している。各トランザクション１１２〜１１６は、トランザクションが作成した任意のデータセグメントに加えて、データセグメント（ｉ、ｍ、ｎおよびｚは整数）の更新確定されたバージョン１３０からコピーされるデータセグメントの各々のコピー（例えば、データベースを構成するデータページのコピー）を操作することができる。こうした操作には、例えばデータベースの各ページに格納されたデータの行の操作を含めてもよい。一般に、本発明のデータ管理エンジンは、さらにデータセグメントで構成されるデータストレージ（図示せず）の操作を複数のユーザが同時に実行できるマルチユーザエンジンでもよい。トランザクションがデータセグメントのデータの変更を要求すると、まずデータセグメントはそのトランザクション用に予約された領域にコピーされる。それ以降、トランザクションはこうしてコピーされたデータセグメントを操作して、要求されたデータを変更することができる。
【００２０】
検知コンポーネント１１０は、複数の同時トランザクション１１２〜１１６のすべてに作用し、共有データセグメントの更新確定されたバージョン（「ゴールデンコピー」）１３０からコピーされたデータセグメントで更新を必要とするものがあるかどうかを検知することができる。こうした更新は、例えばトランザクションＴ１がその更新確定された最新のバージョン（ゴールデンコピー）からデータセグメントをコピーした後で別のトランザクションがデータセグメントを更新確定した場合（したがってゴールデンコピーを変更した場合）に要求される。データセグメントストレージ領域を整合性のとれた状態に維持するために、トランザクションＴ１はこうした別のトランザクションの更新確定によるゴールデンコピーへの変更を反映するように更新する必要がある。こうした更新は、複数の同時トランザクション１１２、１１４、および１１６（ただし、Ｎは整数）のすべてに作用できるマージコンポーネントによって提供される。
【００２１】
例えば、指定された任意の時間に複数のトランザクション１〜Ｎ（Ｎは整数）はデータストレージ領域の特定のデータセグメントへの変更を要求することができる。こうした変更には、特定のスロット（ｓｌｏｔ）でのデータの変更、データフィールドの挿入、データフィールドの削除などを含めることができる。次に、トランザクションは予約された領域にデータセグメントをコピーできる。各トランザクションは、そのデータページの各々のコピーに対して行の挿入や行の削除を行う。これに応じて、検知コンポーネント１１０は特定のデータセグメントのゴールデンコピーに発生している変更を検知して、マージコンポーネント１２０と連携してトランザクションの更新確定段階の前に更新確定されたページが適切に更新されるようにすることができる。
【００２２】
図２は、本発明の１つの特定の態様に従ってロックマネージャ２３０と対話するデータベースエンジンの要素の例示的な態様を示している。ロックマネージャ２３０は、特定の資源にロックをかけることが許可されているかどうかを判断でき、一般に各トランザクションＴ１からＴｎはデータページの各々のコピーを操作できるので、サブページロック（例えば行に錠をかける）を管理するのに適している。データページの多くのコピーは、指定された任意の時間に存在することができるので、ロックマネージャ２３０では一般に同時トランザクションが同じデータページの異なる行の情報を変更できることが保証される。例えば、ロックマネージャ２３０は、トランザクションに対して特定の行に関し排他的に錠（ロック）をかけることを許可することができる。これにより、他のトランザクションが他の行への変更を許可されても、この行への変更は制限される。このように、ロックマネージャ２３０は標準的な操作の同時並行性（ｃｏｎｃｕｒｒｅｎｃｙ）に基づいて特定の資源にロックをかけるのを許可したり拒否したりすることができる。
【００２３】
本発明の１つの特定の態様のロックマネージャ２３０は、データベースエンジンの検知コンポーネント２１０およびマージコンポーネント２２０から独立していてもよい。関連の態様において、追加の情報（例えば、特定の場所での排他的ロックの許可、空き領域の有無など）がロックマネージャに格納されており、検知コンポーネント２１０はこれを利用してどのトランザクション２１２〜２１６がデータベースのどのゴールデンコピーを操作しているかを追跡することができる。したがって、データページに関する様々なトランザクションによる変更がデータページの別々のコピー上で生じるので、検知コンポーネント２１０はマージコンポーネント２２０と連携してトランザクション２１２〜２１６のＡＣＩＤプロパティを保護することができる。同時に、ロックマネージャ２３０は、一般にトランザクションが理論上特定のリソースの変更を許可することを保証することができる。したがって、複数ユーザがデータベースを変更すると、ページの下位層（例えば行）による同時トランザクションの操作が可能となる。また、読み出しは、更新確定された状態のデータページから要求できるので、データページの読み出し操作中は（例えば、データページへの変更が要求されていない場合）、一般的に共有のロックを要求する必要はない。さらに、任意のデータページのコピーを所有するトランザクションが読み出し操作を要求する場合も、読み出し操作は共有ロックを必要としない。読み出しは、更新確定されたページおよび／または任意のページのトランザクションのバージョンを使用して実行可能とするためである（通常は、トランザクションのページが更新確定されるページに優先して使用されるが、ただし、この場合このページは他の場所では変更されない）。
【００２４】
図３は、ロックマネージャ２３０によって許可される例示的なロックの階層を示している。ロックの細分性（ｇｒａｎｕｌａｒｉｔｙ）について示すように、データベース２のテーブル２のデータページ２の３行目の変更を要求するトランザクションＴに排他的なロックをかけることが許可されている。したがって、データページ２のコピーがトランザクションＴの予約された領域（図示せず）にコピーされ、トランザクションＴは次にそのコピーの変更を進めることができる。行３に対するこうした排他的なロック許可は他のトランザクションから認識できるので、一般にＴがその変更を更新確定（またはロールバック）し、そのロックが解除されるまで、他のトランザクションはデータページ２の各々のコピーのこの行を変更することはできない。
【００２５】
図４は、本発明の１つの態様に従ってデータベースの変更を要求する複数のクライアントを示している。ここで、各クライアント４２０上で動作するのはクライアントプロセス、例えば、Ｗｅｂブラウザ４１０でもよい。同様に、サーバ４５０上で動作するのは対応するサーバプロセス、例えばＷｅｂサーバ４６０でもよい。さらに、Ｗｅｂブラウザ４１０に埋め込まれているのは、スクリプトまたはアプリケーション４３０でもよい。クライアントコンピュータ４２０の実行時環境４４０内で動作し、フォーマットされたデータパケットのパッケージ用およびアンパック用のプロキシ４１５が存在してもよい。サーバ４５０と通信するのは、データベース（図示せず）へのアクセスを管理するデータベース管理システム（ＤＢＭＳ：ｄａｔａｂａｓｅ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）４８０である。ＤＢＭＳ  ４８０とデータベース（図示せず）は、サーバ自体の内部に配置してもよい。あるいはリモートデータベースサーバ（図示せず）上にリモートで配置してもよい。Ｗｅｂサーバ４６０上で動作しているのは、データベースインターフェースＡＰＩ（アプリケーションプログラミングインターフェース：Ａｐｐｌｉｃａｔｉｏｎｓ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）４７０である。このＡＰＩにより、ＤＢＭＳ  ４８０へアクセスすることが可能となる。クライアントコンピュータ４２０とサーバコンピュータ４５０とは、ネットワーク４９０を介して互いに通信することができる。他の編成（例えば、クライアントコンピュータとサーバコンピュータが同一のコンピュータである）も可能であることを理解されたい。クライアントプロセス、例えば、Ｗｅｂブラウザ４１０が、データベースからデータを要求すると、スクリプトまたはアプリケーション４３０はクエリを発行する。クエリはネットワーク（例えば、インターネット）４９０を経由してサーバコンピュータ４５０に送信され、ここでサーバプロセス、例えばＷｅｂサーバ４６０によって解釈される。クライアント４２０からサーバ４５０への要求には、複数のコマンドを含めることができ、サーバ４５０からの応答では複数の一連の結果を返すことができる。
【００２６】
こうした通信、セッション、プレゼンテーション、およびアプリケーションサービスの各エレメントは、ＴＤＳ（Ｔａｂｕｌａｒ  Ｄａｔａ  Ｓｔｒｅａｍ）によって提供される。ＴＤＳは特定の転送プロバイダを要求しないので、複数の転送プロトコルとネットワーク４９０の全域で実装することができる。クライアントコマンドに返される応答は、自己記述型であり、レコード指向であってもよい（例えば、データストリームに返される行の名前、タイプ、オプションの説明を記述してもよい）。
【００２７】
クライアント側４２０では、データはサーバ側４５０が理解できる言語である構造化照会言語（ＳＱＬ：Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）コマンドでよい。ＳＱＬコマンドの後には、その関連のバイナリデータ（例えば、ｂｕｌｋ  ｃｏｐｙ（バルクコピー）コマンドのデータ）、またはアテンション信号（ａｔｔｅｎｔｉｏｎ  ｓｉｇｎａｌ）が続く。接続が必要な場合は、クライアント４２０からサーバに接続信号を送信できる。クライアント４２０がサーバ４５０への複数の接続を保持できる場合も、それぞれの接続パスは別個に、しかも同じ方法で確立することができる。
【００２８】
サーバ４５０は、クライアント４２０からの接続信号を受信すると、接続要求を許可（ａｃｃｅｐｔｅｄ）したか、拒否（ｒｅｊｅｃｔｅｄ）したかをクライアントに通知する。同様に、ＳＱＬコマンドまたはＳＱＬコマンドのバッチを送信するため、ここでＳＱＬコマンド（例えば、ユニコード形式で表した）はバッファのデータセクションにコピーしてからＳＱＬサーバ側４５０に送信する。さらに、様々なＯＤＢＣ（Ｏｐｅｎ  Ｄａｔａ  Ｂａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ）ルーチンによって、ＳＱＬコマンドがクライアントのメッセージバッファに配置されたり、メッセージバッファがサーバに送信されたりしてもよい。変更が要求され、トランザクションの更新確定段階に先立つ場合は、一般に特定のページの領域を利用することができること（例えば、ページの様々なコピーを操作しているトランザクションが、そのページの記憶領域のすべてを消費しないこと）が保証され、そのページの周囲のデータを再編成することから軽減される（例えば、トランザクションは様々なコピーをマージするためにページの周囲のデータを移動する必要がない）。こうした枠組みによって、更新確定操作を効率的かつ簡単に実行することができるので、複数ユーザによる操作は改善され、システムリソースを節約することができる。
【００２９】
図５は、さらにページマーキングコンポーネント５３０を組み込んだ本発明の１つの態様によるデータベースエンジンの要素の概要を示すブロック図である。一般に、トランザクションＴ１が特定のページを操作している場合に、トランザクションＴ１は、Ｔ１がコピーした後でそのページのゴールデンコピーに変更があったかどうかを検知できる必要がある。本発明による態様の１つにおいて、こうした検知は検知コンポーネント５１０とページマーキングコンポーネント５３０が連携することで可能になる。ページマーキングコンポーネント５３０は、ゴールデンコピーへの変更をトランザクションに通知することができる。各トランザクションが操作しているページに関する情報をデータベースエンジンに格納し、トランザクションが更新確定すると、更新確定されたバージョンに関する情報が必要に応じて他のトランザクションに提供されるようにしてもよい。したがって、同時トランザクションが別々のページを操作している場合は、一般にマージのステップが不要であり、ページマーキングコンポーネントが他のトランザクションに情報を提供して更新確定された最新のバージョンに合わせる必要はない。同様に、トランザクションがロールバックし、更新確定が実行されない場合は、他のトランザクションのページマーキングは一般には不要である。
【００３０】
したがって、トランザクションＴ１が更新確定する場合は、他のトランザクションにどんな影響を及ぼし得るかが確認される。例えば、Ｔ１が変更したのと同じページの別のコピーを別のトランザクションＴ２が操作することができる。この場合は、Ｔ２が動作しているコピーにマークを付けることができる。トランザクション５１２〜５１６の各々が処理しているページについての情報は、データベースエンジンに格納してもよい。トランザクション５１２がその更新を更新確定する前に、マージが必要かどうかが確認される。こうした確認は、ページマーキングコンポーネントが付けた関連のマークを調べることによって、および／または他のトランザクションが同じページを変更したかどうかを調べることによって実行することができる。したがって、同時トランザクション５１２〜５１６が異なるページを処理する場合、一般にマージのステップは不要である。同様に、任意のトランザクション５１２〜５１６がロールバックを要求される場合は、それぞれのページコピーがそのまま廃棄されるが、こうした（その時点でロールバックされる）トランザクションによりページをマークされた他のトランザクションは、更新確定されたバージョンによるマージを実行してもよい。
【００３１】
図６は、本発明のマージ処理に関連して利用できる最適化機能を示している。同時トランザクションＴ１はデータページ６１０のコピーを処理することができる。データページ６１０（ゴールデンページ）には、初めに行Ａが含まれている。操作６１１で、Ｔ１は操作６１２で行ＢとＣを挿入するためにデータページ６１０のコピーの操作を開始する。操作６１２でのそのような挿入操作に先立って最適化機能が導入され、２つの条件６６０、すなわちページ上の領域の利用可能である（ページに空き領域がある）こと、および他のトランザクションがそのページを変更しているためにページは再編成を要求していないことが確認され、かつ／または適用される。このように、挿入操作および／または操作するページの選択に先立って、データページ上の使用済みの領域と空いている領域を確認してもよい（例えば、こうしたページをコピーする前でも、変更を実行するための十分な空き領域があるかどうかを確認してもよい）。このようにして、本発明の最適化機能では、サブページを変更する場合の論理的考慮事項（例えば、特定の場所に行を挿入する論理的許可があるかどうか）に加えて、そのページの物理的なプロパティ（例えば、挿入時に特定のページに空き領域があるかどうか）も考慮することができる。続いて、操作６１２で行ＢとＣが挿入される。操作６２０に図示するように、こうした行ＢとＣの挿入により、該当するデータページコピー上の空き領域が占有される。Ｔ１の更新確定操作６１６は、このように効率よく簡単に実行されると同時に、マルチユーザ操作を改善し、システムリソースを節約する。上述の最適化機能は、本発明の他の態様を実施するために必要ではないが、パフォーマンスの向上に有効である。特に、「ｐａｇｅ  ｎｏｔ  ｆｕｌｌ（ページに空きがある）」以外の状態では、一般にデータベースエンジンに対してデータを格納するための別のページを見つけるように要求することができる。関連する実施形態において、Ｔ１がその変更をロールバックしてデータページの領域を解放する場合に、こうした追加の領域の空き状況（ａｖａｉｌａｂｉｌｉｔｙ）はすべてのトランザクションに通知される。ロールバックによって関連して設定されているロック（例えば、排他的な行のロック）も廃棄されるので、ロールバックしたトランザクションが使用するための領域に事前に格納されていた情報は、関連のロックの解除と同時に廃棄される。
【００３２】
図７は、本発明の１つの態様による例示的な方法を示している。方法７００は、データ記憶領域に格納されたデータの変更を要求するトランザクションＴ１（例えば、データベースのデータページ「Ａ」のページの下位層での変更）で開始される。特定のデータベース環境の例では、トランザクションＴ１はマルチユーザデータベースエンジンの一部として動作する複数の同時トランザクションの要素でもよい。ステップ７１０のトランザクションＴ１によるデータ操作の要求には、特定のデータページ上の特定のスロットに格納されたデータの変更、更新された行による行の置換、行の挿入、行の削除などが含まれる。次に、ステップ７２０でトランザクションＴ１はデータページ「Ａ」を予約された領域にコピーＡ１としてコピーできる。ステップ７３０で、データページ「Ａ」のゴールデンコピーが他のトランザクションによって変更されたことが検知される。こうした検知は、例えば検知コンポーネントによって実行でき、ページＡ１はマージ要求に伴い、ページマーキングコンポーネントによってマーク付けされる。続いて、ステップ７４０でページＡ１は更新確定されたコピーへの新しい変更によってマージされ、更新される。これで、トランザクションＴ１はデータベースの整合性を維持し、データベース内のデータを喪失することなく更新確定することができる。
【００３３】
図８は、本発明の１つの態様による関連する方法を示している。この方法では、トランザクションは本発明の１つの態様により、ステップ８１０でデータページを再読み出しすることが要求される。こうした再読み出しが実行される可能性があるのは、例えば、トランザクションがトランザクションの存続期間中に、リードコミットアイソレーションレベル（ｒｅａｄ  ｃｏｍｍｉｔｔｅｄ  ｉｓｏｌａｔｉｏｎ  ｌｅｖｅｌ）で動作しており、同じデータに対して２度以上「ＳＥＬＥＣＴ」操作を実行する場合である。ステップ８２０でスピンロックが取得され、このスピンロックによって、常に一度に１つのトランザクションのみがマージを行なうためのメカニズムが有効になる。こうしたミューテックスコンポーネントを利用することにより、通常はデータベース操作の整合性を保証することができる。ステップ８３０で、ページが複数の同時トランザクションの間で共有されるデータページの「ゴールデンコピー」に対して実行された新しい変更とのマージを必要とするかどうかについて、この検知手法によって判断される。マージする必要がない場合、ステップ８４０でスピンロックが解除され、ステップ８９０で操作が終了する。これに対して、ページのマージの必要があると判断された場合は、本方法ではマージ処理に進み、ページの更新確定されたバージョンは次にステップ８６０でトランザクションのそれぞれの領域にコピーされる。続いてステップ８７０では、マージ処理の追加部分として、ページ上で変更が実行されるたびに関連する更新確定されたページが更新される。次にステップ８８０で、トランザクションのページは、更新確定されたページの更新されたコピーで置き換えられる。
【００３４】
ここで、図９を参照すると、本発明の１つの態様による関連する方法が示されている。ここでは、更新確定手順９１０の一部として変更の検知とマージが概説されている。ステップ９２０で、一度に唯一のユーザが更新確定するメカニズムを実現するスピンロックが取得され、データベース操作の整合性が保証される。ステップ９２５において、トランザクションで変更する次のデータページが検知とマージのプロセスの対象として選択される。続いて、検知プロセスが開始され、ステップ９２７でそのページが他のトランザクションで使用されているかどうかが判断される。使用されている場合、本方法ではステップ９２９に進み、他のトランザクションで使用されているページのコピーは、例えば上記で詳説したページマーキングコンポーネントによってマージの対象としてマークされる。使用されていない場合は、ステップ９３０で、ページが複数の同時トランザクションの間で共有されるデータページの「ゴールデンコピー」に対して実行された新しい変更とのマージを必要とするかどうかを、この検知手法によって判断する。ページのマージの要求がある場合に、本方法はマージ処理に進み、ステップ９６０でページの更新確定されたバージョンがトランザクションのそれぞれの領域にコピーされる。続いてステップ９７０では、マージ処理の追加の要素として、ページ上で変更が実行されるたびに関連の更新確定されたページが更新される。次にステップ９９０でトランザクションのページは更新確定されたページの更新されたコピーで置き換えられ、続いてステップ９４０でロックが解除される。これに対して、ステップ９３０でページのマージの要求がないと判断された場合、本方法はステップ９４０に進み、直ちにページのロックを解除する。続いて、ステップ９４５で、トランザクションで操作した最後のページに到達しているかどうかが判断される。ステップ９２５にループバックしない場合は、ステップ９４７でスピンロックを解除し、ステップ９９５で終了する。
【００３５】
図１０を参照すると、本発明の様々な態様を実装できるクライアントサイドとサーバサイドの適切なコンピューティング環境が簡単かつ一般的に示されている。本発明について、１台および／または複数台のコンピュータで実行するコンピュータプログラムのコンピュータで実行可能な命令の一般的な流れで説明してきたが、本発明を他のプログラムモジュールと組み合わせても実装できることを当業者は理解されたい。一般に、プログラムモジュールには、ルーチン、プログラム、コンポーネント、データ構造など、特定のタスクを実行するものおよび／または特定の抽象データ型を実装するものがある。さらに、本発明による方法が、シングルプロセッサまたはマルチプロセッサによるコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースの家電製品またはプログラム可能な家電製品など、他のコンピュータシステム構成でも実施できることを、当業者は理解されたい。上述のように、本発明の図示された態様は、通信ネットワークを介してリンクするリモート処理装置でタスクを実行する分散コンピューティング環境でも実施することができる。ただし、本発明のすべてではないがいくつかの態様は、スタンドアロンコンピュータで実施できる。分散コンピューティング環境では、プログラムモジュールはローカルとリモートのいずれのメモリ記憶装置内に配置してもよい。例示的なコンピュータ１０２０には、プロセッシングユニット１０２１、システムメモリ１０２２、様々なシステムコンポーネント（システムメモリとプロセッシングユニット１０２１など）を接続するシステムバス１０２３が含まれる。プロセッシングユニット１０２１は、市販の様々なプロセッサのいずれでもよい。デュアルマイクロプロセッサやその他のマルチプロセッサアーキテクチャも処理装置１０２１として利用することができる。
【００３６】
システムバス１０２３は、市販の様々なバスアーキテクチャの任意の１つを使用したメモリバスまたはメモリコントローラ、周辺バス、ローカルバスを含む各種バス構造のいずれでもよい。システムメモリ１０２２には、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）１０２４とランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１０２５が含まれる。起動時などにコンピュータ１０２０内のエレメント間の情報転送を支援する基本ルーチンを含む基本入出力システム（ＢＩＯＳ：ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）は、ＲＯＭ  １０２４に格納される。
【００３７】
コンピュータ１０２０には、さらにハードディスクドライブ１０２７、例えば取り外し可能なディスク１０２９に対する読み出しまたは書き込みを行う磁気ディスクドライブ１０２８、例えばＣＤ−ＲＯＭディスク１０３１の読み出しまたは書き込み、または他の光媒体に対する読み出しまたは書き込みを行う光ディスクドライブ１０３０が含まれる。ハードディスクドライブ１０２７、磁気ディスクドライブ１０２８、および光ディスクドライブ１０３０は、それぞれハードディスクドライブインターフェース１０３２、磁気ディスクドライブインターフェース１０３３、および光ディスクドライブインターフェース１０３４を介してシステムバス１０２３に接続する。ドライブとこれに関連付けられたコンピュータ読取可能な媒体は、データ、データ構造、コンピュータ１０２０のコンピュータ実行可能命令を格納する不揮発性ストレージとして利用できる。上述のコンピュータ読取可能な媒体の説明は、ハードディスク、取り外し可能な磁気ディスク、およびＣＤを表しているが、例示的な動作環境では、磁気カセット、フラッシュメモリカード、デジタルビデオディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｄｉｓｋ）、Ｂｅｒｎｏｕｌｌｉ（ベルヌーイ）カートリッジなど、その他のコンピュータ読取可能な媒体も利用でき、さらにこうした任意の媒体に本発明の方法を実行するためのコンピュータ実行可能命令を格納できることを当業者は理解されたい。
【００３８】
オペレーティングシステム１０３５、１つまたは複数のアプリケーションプログラム１０３６、その他のプログラムモジュール１０３７、およびプログラムデータ１０３８を含む多くのプログラムモジュールは、ドライブおよびＲＡＭ  １０２５に格納することができる。図示されたコンピュータで動作するオペレーティングシステム１０３５は、実質的に市販の任意のオペレーティングシステムでよい。
【００３９】
ユーザは、キーボード１０４０やポインティングデバイス（例えばマウス１０４２）を使用してコンピュータ１０２０にコマンドや情報を入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを含めてもよい。これらの入力装置および他の入力装置は、多くの場合、システムバスに接続するシリアルポートインターフェース１０４６を介してプロセッシングユニット１０２１に接続するが、パラレルポート、ゲームポート、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）のような他のインターフェースで接続してもよい。モニタ１０４７または他のタイプの表示装置も、ビデオアダプタ１０４８のようなインターフェースを介してシステムバス１０２３に接続される。コンピュータには、一般にモニタ以外にもスピーカーやプリンタなどの周辺出力装置（図示せず）が接続されている。
【００４０】
コンピュータ１０２０は、リモートコンピュータ１０４９のような１台または複数台のリモートコンピュータへの論理接続を使用してネットワーク環境で動作できる。リモートコンピュータ１０４９は、ワークステーション、サーバコンピュータ、ルータ、ピアデバイス、または他の一般的なネットワークノードのいずれでもよい。通常は、コンピュータ１０２０に関連して上で説明したエレメントの多くまたはすべてが含まれるが、図１０にはメモリ記憶装置１０５０のみを示す。図１０に示す論理接続には、ローカルエリアネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）１０５１とワイドエリアネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）１０５２を含めてもよい。このようなネットワーキング環境は、職場、企業規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
【００４１】
ＬＡＮネットワーキング環境で使用する場合、コンピュータ１０２０はローカルネットワーク１０５１にネットワークインターフェースまたはアダプタ１０５３を介して接続してもよい。ＷＡＮネットワーキング環境で使用する場合、コンピュータ１０２０は一般にモデム１０５４を備えることができ、および／またはＬＡＮ上の通信サーバに接続し、および／またはインターネットなどのＷＡＮ  １０５２を介して通信を確立するその他の手段を備えている。モデム１０５４（内蔵または外付け）は、シリアルポートインターフェース１０４６を介してシステムバス１０２３に接続してもよい。ネットワーク環境では、コンピュータ１０２０またはその一部に関連して記述したプログラムモジュールをリモートメモリ記憶装置に格納してもよい。図示されたネットワーク接続が例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは言うまでもない。
【００４２】
本発明について、コンピュータプログラミング業者の実施に従って、他に指定されない限り、コンピュータ１０２０のようなコンピュータが実行する動作およびオペレーションのシンボリック表現に関して説明してきた。このような動作やオペレーションは、コンピュータで実行すると表現されることもある。動作およびオペレーションのシンボリックな表現には、結果として電子信号表現の変換または還元（ｒｅｄｕｃｔｉｏｎ）を得るデータビットを表す電子信号のプロセッシングユニット１０２１による操作、およびコンピュータシステムのオペレーションを再構成または変更するメモリシステム（システムメモリ１０２２、ハードドライブ１０２７、フロッピー（登録商標）ディスク１０２９、ＣＤ−ＲＯＭ  １０３１を含む）におけるメモリロケーションのデータビットの保守、およびその他の信号処理が含まれる。こうしたデータビットが保持されるメモリは、データビットに対応する特定の電子的、磁気的、光学的な特性を有する物理的な場所に配置される。
【００４３】
ここで図１１を参照すると、本発明の１つの態様によるデータ操作方法を利用するクライアントサーバシステムが示されている。１台または複数台のクライアント１１２０は、ハードウェアおよび／またはソフトウェア（例えばスレッド、プロセス、コンピューティングデバイス）でよい。システム１１００には、１台または複数台のサーバ１１４０も含まれる。サーバ１１４０は、ハードウェアおよび／またはソフトウェア（例えばスレッド、プロセス、コンピューティングデバイス）でよい。例えば、こうしたサーバ１１４０には本発明を使用した変換を実行するスレッドを格納することができる。クライアント１１２０とサーバ１１４０とは、本発明に従って２つ以上のコンピュータプロセス間で送信されるデータパケットの形で通信してもよい。クライアント／サーバは同じプロセスを共有してもよい。図示されるように、システム１１００はクライアント１１２０とサーバ１１４０の間の通信を可能にする通信機構（ｆｒａｍｅｗｏｒｋ）フレームワーク１１８０を備えている。クライアント１１２０は、クライアント１１２０のローカルな情報を格納するための１つまたは複数のデータストレージ１１１０に接続して機能する。さらに、クライアント１１２０はサーバプロセスを実行するサーバコンピュータ１１４０上に配置されたデータベース１１６０にアクセスでき、これを更新することができる。本発明の１つの態様において、通信機構１１８０はインターネットでもよい。クライアントプロセスはＷｅｂブラウザであり、サーバプロセスはＷｅｂサーバであってもよい。同様に、一般的なクライアント１１２０はこのように、一般的なクライアント１１２０は、セントラルプロセッシングユニット（ＣＰＵ）、システムメモリ、パーソナルコンピュータをインターネットに接続するためのモデムまたはネットワークカード、ディスプレイ、およびキーボード、マウスのようなその他のコンポーネントを備える従来のパーソナルコンピュータなどの汎用コンピュータでもよい。同様に、一般的なサーバ１１４０は大学または企業のメインフレームコンピュータまたは専用ワークステーションなどでもよい。
【００４４】
本発明を図示された特定の態様に関連して提示し、説明してきたが、他の当業者が本明細書および添付の図面を参照し、理解した時点で同等の変更や変形を加えるのは明らかである。特に上述のコンポーネント（アセンブリ、デバイス、回路、システムなど）で実行する様々な機能に関して、こうしたコンポーネントを表す用語（「手段」という表現を含む）は、特に指示のない限り、記述するコンポーネントの特定の機能を実行する（すなわち機能的に同等の）任意のコンポーネントに対応するものとする。ただし、ここに説明する本発明の例示的な実施形態の特定の機能を実行する開示された構造と構造上同等でなくてもよい。この点について、本発明にはシステムおよび本発明の様々な方法の動作および／またはイベントを実行するためのコンピュータ実行可能命令を格納するコンピュータ読取可能な媒体が含まれることも言うまでもない。さらに、特許請求の範囲と発明の実施の形態のいずれかで使用する「含む」、「含まれる」、「有する」という用語およびその変形の範囲は、用語「備える」と同様に包括的な意味を表すものとする。
【図面の簡単な説明】
【００４５】
【図１】本発明の１つの態様によるデータ管理エンジンの要素を示すブロック図である。
【図２】本発明の１つの態様によるロックマネージャを備えるデータベース環境の要素として動作するデータベースエンジンを示すブロック図である。
【図３】本発明の別の態様によるロックマネージャで管理される例示的なロック階層を示す図である。
【図４】本発明の１つの態様による同時トランザクションを採用するクライアントサーバネットワークを示すブロック図である。
【図５】本発明の１つの態様によるページマーキングコンポーネントを備えるデータベースエンジンの要素を示すブロック図である。
【図６】本発明の１つの態様による特定の方法を示す図である。
【図７】本発明の別の態様による例示的な方法を示す図である。
【図８】本発明の１つの態様による検知とマージの方法を示す流れ図である。
【図９】本発明の１つの態様による更新確定段階の要素として検知とマージのプロセスを実行する別の例示的な方法を示す流れ図である。
【図１０】本発明の様々な態様を利用できる適切なコンピューティング環境の概略を示すブロック図である。
【図１１】本発明の１つの態様によるデータ変更方法を利用できるクライアントサーバシステムを示す図である。
【符号の説明】
【００４６】
１０２０  コンピュータ
１０２１  プロセッシングユニット
１０２２  システムメモリ
１０２７  ハードドライブ
１０２８  フロッピー（登録商標）ドライブ
１０２９  ディスク
１０３０  ＣＤ−ＲＯＭドライブ
１０３１  ディスク
１０３２  インターフェース
１０３３  インターフェース
１０３４  インターフェース
１０３５  オペレーティングシステム
１０３６  アプリケーション
１０３７  モジュール
１０３８  データ
１０４０  キーボード
１０４２  マウス
１０４６  シリアルポートインターフェース
１０４７  モニタ
１０４８  ビデオアダプタ
１０４９  リモートコンピュータ
１０５０  メモリ記憶装置
１０５３  ネットワークアダプタ
１０５４  モデム
１１１０  クライアントデータストレージ
１１２０  クライアント
１１４０  サーバ
１１６０  サーバデータストレージ
１１８０  通信機構
【図１】
2006012153.tif 000003
【図２】
2006012153.tif 000004
【図３】
2006012153.tif 000005
【図４】
2006012153.tif 000006
【図５】
2006012153.tif 000007
【図６】
2006012153.tif 000008
【図７】
2006012153.tif 000009
【図８】
2006012153.tif 000010
【図９】
2006012153.tif 000011
【図１０】
2006012153.tif 000012
【図１１】
2006012153.tif 000013