本願の目的、技術的解決手段及び利点をより明確にするために、以下、図面を組み合わせて本願の実施形態をさらに詳細に記述する。
説明する必要があるように、本願の明細書及び特許請求の範囲における用語「第1」、「第2」などは、類似の対象を区別することに用いられるものであり、特定の順序又は前後順番を記述することに用いられるものではない。理解すべきであるように、ここで記述された本願の実施例がここで図示又は記述されたそれらのもの以外の順序で実施されることを可能にするように、このように使用されるデータは適切な場合に相互に交換することができる。以下の例示的な実施例において記述された実施形態は本願と一致するすべての実施形態を代表するものではない。逆に、これらは添付の特許請求の範囲において詳述された本願のいくつかの態様と一致する装置及び方法の例に過ぎない。
いくつかの実施例において、本願の実施例に関する分散型データベースシステムは、共有記憶(share-disk)アーキテクチャに基づく分散型データベースシステムであり、共有記憶アーキテクチャに基づく分散型データベースシステムにおいて少なくとも2つのノード機器が含まれ、該少なくとも2つのノード機器は自体のローカルの内部メモリエリアを有し、ネットワーク通信メカニズムによって同一の記憶システムに直接アクセスし、すなわち少なくとも2つのノード機器は同一の記憶システムを共有する。例えば、同一のHDFS(Hadoop Distributed File System、分散型ファイルシステム)を共有する。少なくとも2つのノード機器によって共有された記憶システムにおいて複数のデータテーブルを記憶することができ、個々のデータテーブルは1つ又は複数のデータ項目を記憶することに用いることができる。
論理という角度から見ると、分散型データベースシステムにおけるノード機器は、協調ノード機器及びデータノード機器の2つの種類のロールに分割することができる。ここで、協調ノード機器は主に生産、配信処理計画、及び分散型トランザクションの協調を担当し、データノード機器は主に協調ノード機器から送信された処理計画を受信し、相応なトランザクションを実行して協調ノード機器にトランザクションに関する関連データを返信することを担当する。
分散型データベースシステムにおいて、最小の操作実行ユニットはトランザクションであり、トランザクションが複数のデータノード機器上のデータ項目を操作する必要があるか否かに応じて、トランザクションは分散型トランザクション及びローカルトランザクションの2つの種類に分割することができる。この2つの種類の異なるトランザクションに対しては、それぞれ異なる実行プロセスを採用して、ネットワーク通信オーバーヘッドをできるだけ減少させ、トランザクション処理効率を高めることができる。ここで、分散型トランザクションは複数のデータノード機器間で読み書き操作を実行する必要があるトランザクションを表し、すなわちトランザクションは複数のデータノード機器上のデータ項目を操作する必要がある。たとえば、トランザクションTはデータノード機器RM1、RM2、RM3上のデータ項目を操作する必要がある場合、該トランザクションTは1つの分散型トランザクションである。ローカルトランザクションは単一のデータノード機器上のデータ項目のみを操作する必要があるトランザクションを表し、例えば、トランザクションTはRM1上のデータ項目のみを操作する必要があれば、該トランザクションTは1つのローカルトランザクションである。
図1は本願の実施例が提供するトランザクション処理方法の実施環境の模式図である。図1に参照されるように、本願の実施例はshare-diskフレームワークに基づく分散型データベースシステムに応用されてもよく、該分散型データベースシステムにおいてゲートウェイサーバ101と、トランザクション割り当て機器102と、分散型記憶クラスタ103と、グローバルタイムスタンプ生成クラスタ104とが含まれてもよい。分散型記憶クラスタ103においてm(mは2以上の整数である)個のノード機器が含まれ、該m個のノード機器は同一の記憶システムを共有する。
ゲートウェイサーバ101は外部の読み書き要求を受信し、かつ読み書き要求に対応する読み書きトランザクションをトランザクション割り当て機器102、又は、分散型記憶クラスタ103に配信することに用いられる。たとえば、ユーザは端末上のアプリケーションクライアント端末にログインした後、アプリケーションクライアント端末をトリガーして読み書き要求を生成し、分散型データベースシステムによって提供されたAPI(Application Programming Interface、アプリケーションプログラムプログラミングインタフェース)を呼び出して該読み書き要求に対応する読み書きトランザクションをゲートウェイサーバ101に送信する。
いくつかの実施例において、ゲートウェイサーバ101は分散型記憶クラスタ103におけるいずれか1つのノード機器と同一の物理マシン上に合併されてもよく、すなわち、あるノード機器をゲートウェイサーバ101として機能させる。
いくつかの実施例において、アプリケーションクライアント端末が所在する端末は分散型データベースシステムにおけるトランザクション割り当て機器102、及び、分散型記憶クラスタ103と通信接続を直接確立することを可能にする。このような場合に、分散型データベースシステムにおいてゲートウェイサーバ101が存在しなくてもよい。
トランザクション割り当て機器102は新たなトランザクションに適切なノード機器を協調ノード機器として割り当てることに用いられる。例示的な実施例において、トランザクション割り当て機器は分散型協調システム(たとえばZooKeeper)にある。分散型協調システムはゲートウェイサーバ101、分散型記憶クラスタ103、及びグローバルタイムスタンプ生成クラスタ104のうちの少なくとも1つを管理することに用いられてもよい。選択的に、技術者は、端末上のスケジューラ(scheduler)を介して該分散型協調システムにアクセスし、それによりフロントエンドのスケジューラに基づいてバックエンドの分散型協調システムを制御して、各クラスタ又はサーバに対する管理を実現することができる。例えば、技術者は、スケジューラを介してZooKeeperを制御してあるノード機器を分散型記憶クラスタ103から削除することができ、すなわちあるノード機器を無効にすることができる。
分散型記憶クラスタ103はデータノード機器と、協調ノード機器とを含んでもよく、個々の協調ノード機器は少なくとも1つのデータノード機器に対応してもよい。データノード機器と協調ノード機器の分割は異なるトランザクションに対するものである。ある分散型トランザクションを例とすると、分散型トランザクションを発したノード機器は協調ノード機器と呼ばれてもよく、分散型トランザクションに関する他のノード機器はデータノード機器と呼ばれる。データノード機器又は協調ノード機器の数は1つ又は複数であってもよく、本願の実施例は分散型記憶クラスタ103におけるデータノード機器又は協調ノード機器の数を具体的に限定しない。
本願の実施例が提供する分散型データベースシステムにおいては、グローバルトランザクションマネージャがないため、該システムにおいてXA(eXtended Architecture、X/Open組織の分散型トランザクション規範)/2PC(Two-Phase Commit、2相コミット)技術を採用してノード間のトランザクション(分散型トランザクション)をサポートし、ノード間での書き込み操作時のデータの原子性及び一致性を確保することができる。このとき、協調ノード機器は2PCアルゴリズムにおけるコーディネーターとして機能することに用いられ、該協調ノード機器と対応する各データノード機器は2PCアルゴリズムにおける関与者として機能することに用いられる。
個々のデータノード機器、又は、協調ノード機器はスタンドアロン機器であってもよく、マスタースタンバイ構造(すなわちワンマスターマルチスタンバイクラスタ)を採用してもよい。図1に示すように、ノード機器(データノード機器又は協調ノード機器)がワンマスターデュアルスタンバイクラスタであることを例として例示すると、個々のノード機器においては1つのマスター、及び2つのスタンバイが含まれ、選択的に、個々のマスター又はスタンバイはいずれもエージェント(agent)機器が対応して配置される。エージェント機器はマスター又はスタンバイと物理的に独立してもよく、もちろん、エージェント機器はさらにマスター又はスタンバイにおける1つのエイジェントモジュールとして用いられてもよい。ノード機器1を例とすると、ノード機器1は1つのマスターデータベース、及びエージェント機器(マスターdatabase+agent、マスターDB+agentと略称する)を含み、この他、2つのスタンバイデータベース及びエージェント機器(スタンバイdatabase+agent、スタンバイDB+agentと略称する)をさらに含む。マスターデータベースは上記したマスターであり、スタンバイデータベースは上記したスタンバイである。
グローバルタイムスタンプ生成クラスタ104は分散型トランザクションのグローバルコミットタイムスタンプ(Global Timestamp、Gts)を生成することに用いられ、該分散型トランザクションは複数のデータノード機器に関するトランザクションを指してもよく、例えば分散型読み取りトランザクションは複数のデータノード機器に記憶されたデータの読み取りに関してもよい。さらに例えば、分散型書き込みトランザクションは複数のデータノード機器におけるデータの書き込みに関してもよい。グローバルタイムスタンプ生成クラスタ104は、論理的に1つのシングルポイントとみなされてもよいが、いくつかの実施例において、1マスター3スレーブのアーキテクチャによってより高い可用性を有するサービスを提供でき、クラスタの形式を採用して該グローバルコミットタイムスタンプの生成を実現することにより、シングルポイントの故障を防止し、それによりシングルポイントのボトルネック問題を避けることができる。
選択的に、グローバルコミットタイムスタンプは、分散型データベースシステムにおいてグローバルに一意的でかつ単調に逓増する1つのタイムスタンプ識別子であり、個々のトランザクションのグローバルコミット順序をマークする。これによりトランザクション間の実際の時間上の前後関係(トランザクションの全順序関係)を反映することに用いることを可能にし、グローバルコミットタイムスタンプは物理クロック、論理クロック又はハイブリッド物理クロックのうちの少なくとも1つを採用してもよく、本願の実施例はグローバルコミットタイムスタンプのタイプを具体的に限定しない。
いくつかの実施例において、該グローバルタイムスタンプ生成クラスタ104は物理的に独立してもよく、分散型協調システム(例えばZooKeeper)と合併されてもよい。
上記図1は軽量なトランザクション処理を提供するアーキテクチャ図に過ぎず、share-diskアーキテクチャに基づく分散型データベースシステムの1つの例示的な記述である。いくつかの実施例において、上記ゲートウェイサーバ101、トランザクション割り当て機器102、分散型記憶クラスタ103、及びグローバルタイムスタンプ生成クラスタ104で構成された分散型データベースシステムは、ユーザ端末にデータサービスを提供するサーバとみなされてもよい。該サーバは独立した物理サーバであってもよく、複数の物理サーバで構成されたサーバクラスタ又は分散型システムであってもよく、クラウドサービス、クラウドデータベース、クラウドコンピューティング、クラウド関数、クラウド記憶、ネットワークサービス、クラウド通信、ミドルウェアサービス、ドメイン名サービス、セキュリティサービス、CDN(Content Delivery Network、コンテンツ配信ネットワーク)、及びビッグデータ、並びに人工知能プラットフォームなどの基礎的なクラウドコンピューティングサービスを提供するクラウドサーバであってもよい。選択的に、上記ユーザ端末はスマートフォン、タブレットコンピュータ、ノートパソコン、デスクトップコンピュータ、スマートスピーカー、スマートウォッチなどであってもよいが、これらに限定されない。端末、及びサーバは有線又は無線通信方式によって直接又は間接的に接続されてもよく、本願はここで制限しない。
上記図1に示される実施環境に基づいて、本願の実施例はトランザクション処理方法を提供する。図2に示すように、本願の実施例が提供する方法は以下のステップ201~ステップ209を含む。
ステップ201において、トランザクション割り当て機器は、ターゲットトランザクションの割り当て要求に応答して、少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標を決定し、1つのノード機器に対応するトランザクション割り当て指標は該1つのノード機器に新たなトランザクションを割り当てるマッチング度を指示することに用いられる。
トランザクション割り当て機器、及び少なくとも2つのノード機器はいずれも分散型データベースシステム中にあり、かつ少なくとも2つのノード機器は同一の記憶システムを共有する。本願の実施例は分散型データシステムの具体的な構造を限定せず、トランザクション割り当て機器と、同一の記憶システムを共有する少なくとも2つのノード機器とを含むものであればよい。
ターゲットトランザクションとは処理対象のトランザクションを指し、ターゲットトランザクションは分散型トランザクションであってもよく、ローカルトランザクションであってもよいが、本願の実施例はこれを限定しない。ターゲットトランザクションの割り当て要求はターゲットトランザクションに適切なノード機器を協調ノード機器として割り当てて、割り当てられた協調ノード機器によって該ターゲットトランザクションを協調処理するように指示することに用いられる。
ターゲットトランザクションの割り当て要求は端末によって発され、端末によって発されたターゲットトランザクションの割り当て要求は端末によってトランザクション割り当て機器に直接送信されるか、又はゲートウェイサーバによってトランザクション割り当て機器に転送されるが、本願の実施例はこれを限定しない。端末はユーザと対応するいずれかの電子機器であってもよく、スマートフォン、タブレットコンピュータ、ノートパソコン、デスクトップコンピュータ、スマートスピーカー、又はスマートウォッチのうちの少なくとも1つを含むがこれらに限定されず、本願の実施例は端末のタイプを具体的に限定しない。選択的に、端末上にアプリケーションクライアント端末がインストールされ、該アプリケーションクライアント端末はデータサービスを提供することを可能にするいずれかのクライアント端末であってもよく、例えば、該アプリケーションクライアント端末は支払いアプリケーションクライアント端末、フードデリバリーアプリケーションクライアント端末、タクシーアプリケーションクライアント端末又はソーシャルアプリケーションクライアント端末のうちの少なくとも1つであってもよく、本願の実施例はアプリケーションクライアント端末のタイプを具体的に限定しない。
少なくとも2つのノード機器とは、分散型データベースシステムにおいて分散化されたノード機器としてトランザクションを協調処理することを可能にするノード機器を指し、個々のノード機器はいずれも分散化されたアルゴリズムによって分散型トランザクションを協調処理することに用いることを可能にする。
トランザクション割り当て機器は、ターゲットトランザクションの割り当て要求を受信した後、ターゲットトランザクションに適切なノード機器を協調ノード機器として割り当てて、トランザクション処理の効率を確保する必要がある。ターゲットトランザクションに適切なノード機器を協調ノード機器として割り当てる過程において、トランザクション割り当て機器は先ず少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標を決定する。1つのノード機器に対応するトランザクション割り当て指標は該1つのノード機器に新たなトランザクションを割り当てるマッチング度を指示することに用いられる。1つのノード機器に新たなトランザクションを割り当てるマッチング度が高いほど、該1つのノード機器に新たなトランザクションを割り当てるのにより適していることが説明される。
トランザクション割り当て指標は、トランザクションの観点から決定された、あるノード機器に新たなトランザクションを割り当てるのに適しているか否かを評価することに用いられる指標である。1つの可能な実現形態において、少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標を決定する過程は以下のステップ2011とステップ2012とを含む。
ステップ2011:トランザクション割り当てモードを決定し、トランザクション割り当てモードはトランザクションのビジー度に基づく割り当て、機器のビジー度に基づく割り当て、及びハイブリッドのビジー度に基づく割り当てのうちのいずれか1つを含む。
トランザクション割り当てモードはノード機器に対応するトランザクション割り当て指標を決定する決定方式を指示することに用いられる。いくつかの実施例において、トランザクション割り当てモードは開発者によって設定されてトランザクション割り当て機器にアップロードされる。説明する必要があるように、異なる時期に採用されたトランザクション割り当てモードは異なる可能性がある。ここでは、ステップ2011において決定されるのは、ターゲットトランザクションの割り当て要求を受信したときに採用すべきトランザクション割り当てモードである。
トランザクション割り当てモードはトランザクションのビジー度に基づく割り当て、機器のビジー度に基づく割り当て、及びハイブリッドのビジー度に基づく割り当てのうちのいずれか1つを含む。ここで、トランザクションのビジー度に基づく割り当てモードとは、ノード機器のトランザクション処理数を考慮する観点からトランザクション割り当て指標を決定することを指し、ノード機器のトランザクション処理数はノード機器のトランザクションのビジー度を反映することを可能にする。機器のビジー度に基づく割り当てモードとは、ノード機器の機器リソース使用率を考慮する観点からトランザクション割り当て指標を決定することを指し、ノード機器の機器リソース使用率はノード機器の機器のビジー度を反映することを可能にする。ハイブリッドのビジー度に基づく割り当てモードとは、ノード機器のトランザクション処理数、及びノード機器の機器リソース使用率を総合的に考慮する観点からトランザクション割り当て指標を決定することを指し、ノード機器のトランザクション処理数、及びノード機器の機器リソース使用率はノード機器のハイブリッドのビジー度を反映することを可能にする。
ステップ2012:トランザクション割り当てモードによって指示された決定方式に基づき、少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標を決定する。
異なるトランザクション割り当てモードによって指示された決定方式は異なり、トランザクション割り当てモードを決定した後、トランザクション割り当てモードによって指示された決定方式に基づき、少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標を決定する。次に、異なるトランザクション割り当てモード下で、少なくとも2つのノード機器のうちの第1ノード機器に対応するトランザクション割り当て指標を決定する方式をそれぞれ紹介する。ここで、第1ノード機器は少なくとも2つのノード機器のうちのいずれか1つのノード機器である。
いくつかの実施例において、トランザクション割り当てモードはトランザクションのビジー度に基づく割り当てである。このような場合に、トランザクション割り当てモードによって指示された決定方式に基づき、第1ノード機器に対応するトランザクション割り当て指標を決定する方式としては、該第1ノード機器のトランザクション処理数に基づいて、該第1ノード機器に対応するトランザクション割り当て指標を決定する。
第1ノード機器のトランザクション処理数とは、第1ノード機器が単位時間当たりに処理する必要があるトランザクションの数を指す。説明する必要があるように、ここでの処理する必要があるトランザクションとは、既に該第1ノード機器に割り当てられて処理されたトランザクションを指す。第1ノード機器が単位時間当たりに処理する必要があるトランザクションの数が多いほど、該第1ノード機器に新たなトランザクションを割り当てるのに適しないことが説明される。例示的な実施例において、第1ノード機器のトランザクション処理数は該第1ノード機器によってトランザクション割り当て機器にフィードバックされてもよく、トランザクション割り当て機器によってトランザクション割り当て状況に基づき自ら決定されてもよいが、本願の実施例はこれを限定しない。
本願の実施例はトランザクション割り当て指標の表現形式を限定せず、例示的には、トランザクション割り当て指標の表現形式はビジーレベル、又は数値である。
例示的には、トランザクション割り当て指標の表現形式がビジーレベルである場合、該第1ノード機器のトランザクション処理数に基づいて該第1ノード機器に対応するトランザクション割り当て指標を決定する方式としては、異なるビジーレベルに異なるトランザクション処理数の範囲を設定し、該第1ノード機器のトランザクション処理数があるトランザクション処理範囲に対応するビジーレベルを該第1ノード機器に対応するビジーレベルとして用いる。例示的には、ビジーレベルは「ビジー」、「部分ビジー」及び「アイドル」を含み、「ビジー」に対応するトランザクション処理数の範囲は[10,+∞)であり、「部分ビジー」に対応するトランザクション処理数の範囲は[3,10)であり、「アイドル」に対応するトランザクション処理数の範囲は[0,3)である。第1ノード機器のトランザクション処理数が2であれば、「アイドル」を該第1ノード機器に対応するトランザクション割り当て指標として用いる。第1ノード機器に対応するトランザクション割り当て指標が「アイドル」に近くなるほど、該第1ノード機器に新たなトランザクションを割り当てるマッチング度が高くなることが説明される。
例示的には、トランザクション割り当て指標の表現形式が数値である場合、該第1ノード機器のトランザクション処理数に基づいて該第1ノード機器に対応するトランザクション割り当て指標を決定する方式としては、該第1ノード機器のトランザクション処理数を数値化処理し、数値化処理した後に得られた数値を該第1ノード機器に対応するトランザクション割り当て指標として用いる。トランザクション処理数を数値化処理する方式は経験に基づき設定されるか、又は応用シナリオに基づき柔軟に調整されるが、本願の実施例はこれを限定しない。例示的には、トランザクション処理数を数値化処理する方式としては、トランザクション処理数と参照重みとの積を計算する。このような方式では、トランザクション処理数が多いほど、数値化処理した後に得られた数値が大きくなる。第1ノード機器に対応するトランザクション割り当て指標が小さいほど、該第1ノード機器に新たなトランザクションを割り当てるマッチング度が高くなることが説明される。
いくつかの実施例において、トランザクション割り当てモードは機器のビジー度に基づく割り当てである。このような場合に、トランザクション割り当てモードによって指示された決定方式に基づき、第1ノード機器に対応するトランザクション割り当て指標を決定する方式としては、該第1ノード機器の機器リソース使用率に基づいて該第1ノード機器に対応するトランザクション割り当て指標を決定する。
第1ノード機器の機器リソース使用率とは、第1ノード機器が既に使用した機器リソースが総機器リソースを占める割合を指し、例示的には、機器リソースとはCPU(Central Processing Unit、中央プロセッサ)リソースを指す。第1ノード機器の機器リソース使用率が高いほど、該第1ノード機器に新たなトランザクションを割り当てるのに適しないことが説明される。説明する必要があるように、第1ノード機器の機器リソース使用率は該第1ノード機器によってリアルタイムに監視されてトランザクション割り当て機器にフィードバックされてもよく、トランザクション割り当て機器によって自ら監視されて得られてもよいが、本願の実施例はこれを限定しない。
該第1ノード機器の機器リソース使用率に基づいて該第1ノード機器に対応するトランザクション割り当て指標を決定する方式は、該第1ノード機器のトランザクション処理数に基づいて該第1ノード機器に対応するトランザクション割り当て指標を決定する方式を参照すればよく、ここでは詳細な説明を省略する。
いくつかの実施例において、トランザクション割り当てモードはハイブリッドのビジー度に基づく割り当てである。このような場合に、トランザクション割り当てモードによって指示された決定方式に基づき、第1ノード機器に対応するトランザクション割り当て指標を決定する方式としては、第1ノード機器のトランザクション処理数、第1ノード機器の機器リソース使用率、トランザクション処理数の重み、機器リソース使用率の重み、及び重み調節パラメータに基づいて、第1ノード機器に対応するトランザクション割り当て指標を決定する。
例示的な実施例において、トランザクション処理数の重み、及び機器リソース使用率の重みはトランザクション処理数、及び機器リソース使用率の2つのパラメータのパーセンテージを調節することに用いられ、実測して得ることができ、例示的には、トランザクション処理数の重み、及び機器リソース使用率の重みのデフォルト値はいずれも1である。重み調節パラメータとは、機器リソース使用率とトランザクション処理数の相対割合係数を指し、機器リソース使用率とトランザクション処理数の重み割り当てを調節するために用いられ、実測して得ることができ、例示的には、重み調節パラメータのデフォルト値は0.33である。
例示的には、p1を利用して機器リソース使用率の重みを表し、p2を利用してトランザクション処理数の重みを表し、wを利用して重み調節パラメータを表すとすると、第1ノード機器に対応するトランザクション割り当て指標QはQ=p1×機器リソース使用率+p2×w×トランザクション処理数として表されてもよい。
いくつかの実施例において、ハイブリッドのビジー度に基づく割り当てモードにおいて、トランザクション処理数、及び機器リソース使用率を総合的に考慮することに加えて、さらに他の態様の要素、例えば、処理する必要があるトランザクションのうちの長いトランザクションの数などを考慮することができる。このような場合に、第1ノード機器に対応するトランザクション割り当て指標QはQ=p1×機器リソース使用率+p2×w×トランザクション処理数+p3×他の要素として表されてもよい。ここで、p3は他の要素の重みを表し、p3は他の要素のタイプに基づき実測して得ることができ、例示的には、p3のデフォルト値は1である。第1ノード機器に対応するトランザクション割り当て指標Qが小さいほど、該第1ノード機器に新たなトランザクションを割り当てるマッチング度が高くなることが説明される。
説明する必要があるように、以上は第1ノード機器の観点からのみ第1ノード機器に対応するトランザクション割り当て指標を決定する過程を紹介し、上記方式に基づき分散型データベースシステムにおける少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標を決定し、更にステップ202を実行することを可能にする。
ステップ202において、トランザクション割り当て機器は、少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標に基づいて、少なくとも2つのノード機器のうちターゲットトランザクションの協調ノード機器を決定し、協調ノード機器によってターゲットトランザクションを協調処理する。
ターゲットトランザクションの協調ノード機器とは、少なくとも2つのノード機器のうち新たなトランザクションを割り当てるのに適しているノード機器を指す。ターゲットトランザクションの協調ノード機器はターゲットトランザクションを協調処理することに用いられ、つまり、ターゲットトランザクションの協調ノード機器とはターゲットトランザクションのコーディネーターを指す。例示的には、ターゲットトランザクションを協調処理する過程とは、分散型データベースシステムにおいてターゲットトランザクションを発し、次にターゲットトランザクションのデータノード機器を組織して該ターゲットトランザクションを共同で処理する過程を指す。ターゲットトランザクションのデータノード機器とは、少なくとも2つのノード機器のうちターゲットトランザクションの処理に関与することに用いられるノード機器を指し、つまり、ターゲットトランザクションのデータノード機器とはターゲットトランザクションの関与者を指す。
説明する必要があるように、本願の実施例において言及された協調ノード機器及びデータノード機器はいずれもターゲットトランザクションに対するものであり、異なるトランザクションにとって、協調ノード機器又はデータノード機器は固定されるものではなく、すなわち、同一のノード機器はいくつかのトランザクションにとって協調ノード機器に属するが、別のいくつかのトランザクションにとってはデータノード機器に属する可能性がある。
少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標に基づいて、少なくとも2つのノード機器のうちターゲットトランザクションの協調ノード機器を決定する方式は、トランザクション割り当て指標の表現形式の差異に基づき異なっており、本願の実施例はこれを限定せず、協調ノード機器が現在新たなトランザクションを割り当てるのに適しているノード機器であることを確保することを可能にすればよい。
いくつかの実施例において、トランザクション割り当て指標の表現形式はビジーレベルであり、ビジーレベルはそれぞれ「ビジー」、「部分ビジー」及び「アイドル」である。このような場合に、少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標に基づいて、少なくとも2つのノード機器のうちターゲットトランザクションの協調ノード機器を決定する方式としては、少なくとも2つのノード機器のうち対応するトランザクション割り当て指標が「アイドル」のノード機器を候補ノード機器として用い、候補ノード機器において1つのノード機器をターゲットトランザクションの協調ノード機器として任意に選択する。
例示的には、対応するトランザクション割り当て指標が「アイドル」のノード機器が存在しなければ、少なくとも2つのノード機器のうち対応するトランザクション割り当て指標が「部分ビジー」のノード機器を候補ノード機器として用いて、更に候補ノード機器において1つのノード機器をターゲットトランザクションの協調ノード機器として任意に選択する。例示的には、少なくとも2つのノード機器に対応するトランザクション割り当て指標がいずれも「ビジー」であれば、ターゲットトランザクションの協調ノード機器を決定することを一時的に停止し、参照期間待機した後に少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標を再決定し、更にターゲットトランザクションの協調ノード機器を再決定する。参照期間は経験に基づき設定され、例えば、参照期間は1つのトランザクションを完了する実測された平均期間である。
いくつかの実施例において、トランザクション割り当て指標の表現形式は数値であり、且つ1つのノード機器に対応するトランザクション割り当て指標が小さいほど、該1つのノード機器に新たなトランザクションを割り当てるマッチング度が高くなることが説明される。このような場合に、少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標に基づいて、少なくとも2つのノード機器のうちターゲットトランザクションの協調ノード機器を決定する方式としては、少なくとも2つのノード機器のうち前s(sは1以上の整数である)個の小さなトランザクション割り当て指標に対応するノード機器を候補ノード機器として用いて、候補ノード機器において1つのノード機器をターゲットトランザクションの協調ノード機器として任意に選択する。sの値は経験に基づき設定されるか、又は少なくとも2つのノード機器の総数に基づき柔軟に調整され、本願の実施例はこれを限定せず、例えば、sの値は1であり、又はsの値は3などである。
説明する必要があるように、以上は少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標に基づいて、少なくとも2つのノード機器のうちターゲットトランザクションの協調ノード機器を決定する方式の例示的な記述に過ぎず、本願の実施例はこれに限定されない。例示的には、トランザクション割り当て指標の表現形式が数値であり、且つ1つのノード機器に対応するトランザクション割り当て指標が大きいほど、該1つのノード機器に新たなトランザクションを割り当てるマッチング度が高くなることが説明される場合については、少なくとも2つのノード機器のうち前t(tは1以上の整数である)個の大きなトランザクション割り当て指標に対応するノード機器を候補ノード機器として用い、候補ノード機器において1つのノード機器をターゲットトランザクションの協調ノード機器として任意に選択する。
トランザクション割り当て指標に基づいて決定されたターゲットトランザクションの協調ノード機器は少なくとも2つのノード機器のうち新たなトランザクションを割り当てるのに適しているノード機器であり、更にターゲットトランザクションを該協調ノード機器に割り当てて、該協調ノード機器によって該ターゲットトランザクションを協調処理し、ターゲットトランザクションの処理効率を確保することに有利である。
関連技術において、個々のノード機器は一定数のエリア(region)にサービスし、個々のノード機器はいずれも該ノード機器によってサービスされるエリアにおけるデータ項目の分布情報を維持し、データ項目の分布情報はデータ項目の記憶位置を指示することに用いられる。この他、トランザクション割り当て機器においてエリアのメタ情報が維持される。このようなアーキテクチャでは、関連技術において、トランザクション割り当て機器は維持されたエリアのメタ情報に基づき、ターゲットトランザクションに関するデータ項目が所在するエリアにサービスすることに用いられるノード機器を決定し、更に該ノード機器によってターゲットトランザクションを独立して処理する。このような方式では、トランザクションの処理効率を大幅に制限し、真の分散型トランザクションをサポートすることができず、良好なトランザクション属性特徴付きのグローバルで一致性のあるマルチ読み取り及び一致性のあるマルチ書き込みの能力を備えない。
本願の実施例においては、ノード機器は特定の固定されたエリアにサービスしなくなり、ノード機器はデータ項目の分布情報を維持しなくなり、トランザクション割り当て機器もエリアのメタ情報を維持しなくなる。例示的には、エリアのメタ情報を分散型データベースシステムにおける共有された記憶システム全体において分布する。このような改良に基づいて、トランザクション割り当て機器はトランザクション割り当て指標に基づいてターゲットトランザクションに適切なノード機器を協調ノード機器として割り当てることを可能にし、トランザクションに関するデータ項目を考慮する必要がなく、データ項目の分布状況を考慮する必要もない。ノード機器はトランザクションにおけるSQL(Structured Query Language、構造化照会言語)ステートメントのニーズに基づき、共有された記憶システムからデータを自動的に呼び出すことを可能にする。このような方式では、個々のノード機器はいずれも分散化されたノード機器として分散型トランザクションを協調処理することを可能にすることにより、分散型データベースシステムが分散化された分散型トランザクションの処理能力を有する。
1つの可能な実現形態において、ターゲットトランザクションの協調ノード機器を決定するステップの後に、協調ノード機器の機器識別情報を該割り当て要求を発した端末に送信するステップをさらに含み、端末は協調ノード機器の機器識別情報に基づき、ターゲットトランザクションのトランザクション情報を協調ノード機器に送信し、協調ノード機器によってトランザクション情報に基づいてターゲットトランザクションを協調処理することに用いられる。
協調ノード機器の機器識別情報は、該協調ノード機器を一意的に識別することに用いられ、協調ノード機器の機器識別情報を割り当て要求を発した端末に送信することによって、端末にターゲットトランザクションを協調処理することに用いられる協調ノード機器を知らせることを可能にする。端末は機器識別情報に基づきターゲットトランザクションを協調処理することに用いられる協調ノード機器を知った後、ターゲットトランザクションのトランザクション情報を協調ノード機器に送信する。ターゲットトランザクションのトランザクション情報はターゲットトランザクションの関連処理操作を指示することに用いられ、例示的には、ターゲットトランザクションのトランザクション情報とはSQLステートメントを指す。
1つの可能な実現形態において、端末はターゲットトランザクションのトランザクション情報を協調ノード機器に直接送信し、又は、端末はターゲットトランザクションのトランザクション情報及び協調ノード機器の機器識別情報をゲートウェイサーバに送信し、ゲートウェイサーバによってターゲットトランザクションのトランザクション情報を協調ノード機器に転送する。
協調ノード機器はターゲットトランザクションのトランザクション情報を受信した後、トランザクション情報に基づいてターゲットトランザクションを協調処理する。協調ノード機器はトランザクション情報、たとえば、SQLステートメントを解析し、トランザクション実行計画を生成し、次に関連するデータノード機器と通信することによってターゲットトランザクションの処理を完了することを可能にする。
例示的な実施例において、ターゲットトランザクションの協調ノード機器はトランザクション割り当て指標に基づき決定され、異なるトランザクションは異なるノード機器を利用して協調処理を行うことを可能にするため、本願の実施例が提供する方法は分散化されたトランザクション処理過程を実現することを可能にする。分散化されたトランザクション処理過程において、複数の分散型トランザクションはそれぞれ複数のノード機器によって協調処理される。ターゲットトランザクションの協調ノード機器がターゲットトランザクションを協調処理する過程において、複数の分散型トランザクションが存在すると、協調ノード機器は他のノード機器と通信を確立して、他のノード機器が他の分散型トランザクションを協調処理する過程において生じたデータ情報を取得し、更に取得したデータ情報に基づきデータ異常又はシリアル化可能な認証を行って、ターゲットトランザクションがトランザクションの一致性を満たすか否かを判断し、トランザクション処理技術が正確であることを確保する。例示的な実施例において、協調ノード機器は他のノード機器から送られたデータ情報を一時データバッファ領域にバッファし、ターゲットトランザクションが終了するとクリーンアップする。
1つの可能な実現形態において、ターゲットトランザクションの割り当て要求を発した端末にとって、該端末は分散型データベースシステムにアクセスした後、他のトランザクションが生じると、個々の他のトランザクションはいずれも該協調ノード機器によって協調処理され、又は、個々の他のトランザクションはいずれもトランザクション割り当て機器がノード機器のトランザクション割り当て指標に基づきリアルタイムに割り当てられた適した協調ノード機器によって協調処理されるが、本願の実施例はこれを限定しない。
ステップ203において、協調ノード機器はターゲットトランザクションのトランザクション情報を取得する。
ターゲットトランザクションのトランザクション情報はターゲットトランザクションの作成端末によって協調ノード機器に直接送信されてもよく、ゲートウェイサーバによって協調ノード機器に転送されてもよいが、本願の実施例はこれを限定しない。例示的には、ターゲットトランザクションのトランザクション情報とはターゲットトランザクションを実現することに用いられるSQLステートメントを指す。
1つの可能な実現形態において、協調ノード機器はターゲットトランザクションのトランザクション情報を取得した後、ターゲットトランザクションを初期化する。ターゲットトランザクションを初期化する段階はトランザクションを確立するスナップショット段階とみなされてもよい。この段階ではグローバルな一致性スナップショットポイントを確立し、グローバルな読み取り一致性を保証することを可能にする。
1つの可能な実現形態において、ターゲットトランザクションを初期化する過程において、協調ノード機器は以下の2つの初期化操作のうちの少なくとも1つを実行することができる。
初期化操作1:協調ノード機器はターゲットトランザクションに1つのグローバルで一意的なトランザクション識別子TIDを割り当てる。
該トランザクション識別子TIDは該ターゲットトランザクションを一意的に識別することに用いられる。
初期化操作2:協調ノード機器は第1トランザクションステータスリストにおいてターゲットトランザクションの初期ステータス情報を記録する。
本願の実施例においては、協調ノード機器によって維持されたトランザクションステータスリストを第1トランザクションステータスリストと呼び、該第1トランザクションステータスリストは分散化フレームワーク下でターゲットトランザクションのグローバルステータスを記録することに用いられるグローバルステータスリストである。
例示的な実施例において、第1トランザクションステータスリストにおいて記録されたターゲットトランザクションのステータス情報は、ターゲットトランザクションのトランザクション識別子、ターゲットトランザクションのグローバルトランザクションステータス及びターゲットトランザクションの論理ライフサイクルを含むがこれらに限定されない。ここで、論理ライフサイクルはタイムスタンプ下限、及びタイムスタンプ上限で構成される。論理ライフサイクルのタイムスタンプ下限はターゲットトランザクションの開始タイムスタンプ(Begintimestamp、Bts)と呼ばれ、論理ライフサイクルのタイムスタンプ上限はターゲットトランザクションの終了タイムスタンプ(Endtimestamp、Ets)と呼ばれ、つまり、論理ライフサイクルはタイムスタンプ下限Bts、及びタイムスタンプ上限Etsで構成される。
ターゲットトランザクションの初期ステータス情報において、ターゲットトランザクションのトランザクション識別子TIDは初期化操作1において割り当てられ、ターゲットトランザクションのグローバルトランザクションステータスStatusはGrunning(グローバルに動作している)であり、ターゲットトランザクションの論理ライフサイクルは第1論理ライフサイクルであり、該第1論理ライフサイクルのタイムスタンプ下限Btsはグローバルで一意的に逓増するタイムスタンプ値であり、第1論理ライフサイクルのタイムスタンプ上限Etsは+∞である。
例示的な実施例において、第1論理ライフサイクルのタイムスタンプ下限Bts、及びタイムスタンプ上限Etsの取得方式としては、シリアル化可能レベルより上の分離レベルに対しては、協調ノード機器はグローバルクロックからタイムスタンプ値を取得し、シリアル化可能レベル、及びより弱い分離レベルに対しては、協調ノード機器はローカルのハイブリッド論理クロック(Hybrid Logical Clock、HLC)からタイムスタンプ値を取得する。もちろん、いくつかの実施例において、シリアル化可能レベル、及びより弱い分離レベルに対しては、協調ノード機器はグローバルクロックからタイムスタンプ値を取得することによって第1論理ライフサイクルのタイムスタンプ下限Bts、及びタイムスタンプ上限Etsを取得することも可能にする。例示的な実施例において、シリアル化可能レベル、及びより弱い分離レベルに対して、ローカルのHLCからタイムスタンプ値を取得する効率が比較的高い。
グローバルクロックとはグローバル論理クロックジェネレータによって生成されたクロックを指し、単調に逓増する特性を備え、形式的にはwalltime(ウォールタイム)であってもよく、自然数Nなどであってもよい。例示的には、グローバルクロックは分散型データベースシステムにおけるグローバルタイムスタンプ生成クラスタによって提供される。例示的には、share-diskアーキテクチャに基づく分散型データベースシステムにとって、グローバルクロックは分散型データベースシステムにおける記憶システムによってAPIの方式を介して提供される。例示的には、グローバル論理クロックジェネレータはトランザクションの開始タイムスタンプBts、トランザクションの終了タイムスタンプEtsに値を付与することを可能にし、さらにWAL(Write Ahead Logging、ログ先行書き込み)のグローバルLSN(Log Sequence Number、ログシーケンス番号)に値を付与することを可能にする。
いくつかの実施例において、グローバルクロックは1つの論理的概念であり、全システムに統一的な単調逓増値を提供し、物理的形態は1つのグローバルな物理クロックであってもよく、1つのグローバルな論理クロックであってもよい。グローバルクロックの実現形態は、複数種の方式を有してもよい。たとえば、グローバルクロックはGoogle(グーグル)の「Truetime(一種のクロックメカニズム)」メカニズムと類似する1つの分散化された分散型クロックであり、又は、グローバルクロックは複数の冗長ノード(たとえば、一致性プロトコル(Paxos/Raftなど)で構造されたクラスタ)を用いるマスタースタンバイシステムが統一的に提供した1つのクロックであり、さらに又は、グローバルクロックは正確な同期メカニズムとノードログアウトメカニズムとを併せ持つ一種のアルゴリズムメカニズムによって提供された1つのクロックである。
例示的な実施例において、1つのトランザクションのBts、及びEtsの構成はいずれも8バイトからなる。8バイトは2つの部分に分けられ、第1部分は物理タイムスタンプの値(すなわちUnix(一種のオペレーティングシステム)タイムスタンプ、ミリ秒まで正確にする)であり、グローバル時間(gtsを用いて表す)を識別することに用いられ、第2部分はあるミリ秒内の単調逓増カウントであり、グローバル時間上の相対時間(すなわち局所時間、ltsを用いて表す)を識別することに用いられる。例示的には、8バイトにおける上位44ビットは第1部分であり、このように合計で244個の符号なし整数を表すことができる。従って理論的には合計で約557.8([数1])年の物理タイムスタンプを表すことができ、8バイトにおける下位20ビットは第2部分であり、このように、ミリ秒毎に220個(約100万個)のカウントがある。例示的な実施例において、2つの部分のビット数を調整することにより、グローバル時間gts、及び局所時間ltsで表される範囲を変化させることもできる。
説明する必要があるように、実際の必要に基づき、1つのトランザクションのBts、及びEtsの構成は8バイトよりも多いバイトからなるか、又は8バイトよりも少ないバイトからなってもよい。例示的には、Bts、及びEtsの構成を10バイトからなるように調整することにより、局所時間ltsを増大させ、より大きな並行トランザクションの数に対処する。
例示的には、グローバル時間gts、及び局所時間ltsの2つの部分で構成された2つのタイムスタンプTi.bts、及びTj.btsにとって、Ti.bts.gts<Tj.bts.gts、又はTi.bts.gts=Tj.bts.gts且つTi.bts.lts<Tj.bts.ltsとなると、Ti.bts<Tj.btsとなるとみなされる。
ステップ204において、協調ノード機器はターゲットトランザクションのトランザクション情報に基づいて、データノード機器にデータ読み取り要求を送信し、データノード機器は少なくとも2つのノード機器のうちターゲットトランザクションの処理に関与することに用いられるノード機器である。
協調ノード機器はターゲットトランザクションを初期化した後、ターゲットトランザクションの実行段階を開始し、トランザクションの実行段階はトランザクションセマンティクス実現操作段階とみなされてもよい。
データノード機器は少なくとも2つのノード機器のうちターゲットトランザクションの処理に関与することに用いられるノード機器であり、データノード機器はターゲットトランザクションに関するデータ項目を取得することを可能にし、すなわち本願の実施例におけるデータノード機器はターゲットトランザクションに関連するデータノード機器である。ターゲットトランザクションのトランザクション情報において読み取る必要があるデータの関連情報を携え、協調ノード機器はターゲットトランザクションのトランザクション情報に基づき、データ読み取り要求を生成し、次にデータノード機器にデータ読み取り要求を送信することを可能にする。
1つの可能な実現形態において、データ読み取り要求はReadRequestMessage(読み取り要求メッセージ)として表され、rrqmと略称する。
1つの可能な実現形態において、データ読み取り要求はターゲットトランザクションの第1論理ライフサイクル、ターゲットトランザクションのトランザクション識別子及び読み取り計画を携えている。第1論理ライフサイクルはタイムスタンプ下限Bts、及びタイムスタンプ上限Etsを利用して表される。読み取り計画とはターゲットトランザクションに対応するデータ読み取り計画を指し、読み取る必要があるデータ項目を指示することに用いられる。例示的な実施例において、トランザクション識別子、タイムスタンプ下限Bts、タイムスタンプ上限Ets、及び読み取り計画はそれぞれrrqmの4つのフィールドにおいて記録される。
説明する必要があるように、データノード機器の数は1つ又は複数であってもよく、本願の実施例においてデータノード機器の数を具体的に限定しない。データノード機器の数が複数である場合については、異なるデータノード機器に送信されたデータ読み取り要求において携える読み取り計画が異なり、異なるデータノード機器において異なるデータ項目を読み取る必要があるように指示する。
ステップ205において、データノード機器は協調ノード機器から送信されたデータ読み取り要求に基づいて、データ読み取り結果を取得し、データ読み取り結果を協調ノード機器に返信する。
データノード機器はデータ読み取り要求を取得した後、データ読み取り要求に基づいて、データ読み取り結果を取得する。1つの可能な実現形態において、データ読み取り要求がターゲットトランザクションの第1論理ライフサイクルを携えている場合については、データノード機器がデータ読み取り要求に基づいて、データ読み取り結果を取得する過程は以下のステップ2051~ステップ2053を含む。
ステップ2051:第1論理ライフサイクルに基づいて、データ読み取り要求によって指示された読み取り対象のデータ項目の可視バージョンデータを決定する。
データノード機器はデータ読み取り要求が携えている読み取り計画に基づいて、ターゲットトランザクションが読み取る必要があるデータ項目を決定し、ターゲットトランザクションが読み取る必要があるデータ項目を読み取り対象のデータ項目として用いることを可能にする。読み取り対象のデータ項目の可視バージョンデータとは読み取り対象のデータ項目に対応する各バージョンデータのうちターゲットトランザクションに対して可視なあるバージョンデータを指す。例示的には、データノード機器においてデータバッファ領域が設定され、データバッファ領域において読み取り対象のデータ項目の各バージョンデータが存在すると、データノード機器はデータバッファ領域から読み取り対象のデータ項目の各バージョンデータを直接取得し、データバッファ領域において読み取り対象のデータ項目の各バージョンデータが存在しなければ、データノード機器は共有された記憶システムから読み取り対象のデータ項目の各バージョンデータを取得する。
例示的な実施例において、データノード機器はデータ読み取り要求を受信した後、先ずローカルトランザクションステータスリスト(Local TS)においてターゲットトランザクションのステータス情報が含まれるか否かをチェックする。ローカルトランザクションステータスリストはデータノード機器によって維持されたトランザクションステータスリストであり、ローカルトランザクションステータスリストにおいて該データノード機器が関与するコミットされていない各トランザクションのステータス情報が記録される。例示的な実施例において、データノード機器はデータ読み取り要求を受信した後、データ読み取り要求が携えているターゲットトランザクションのトランザクション識別子に基づき、ローカルトランザクションステータスリストにおいてターゲットトランザクションのステータス情報が含まれるか否かをチェックし、チェック結果は以下の2つの種類を含む。
チェック結果1:ローカルトランザクションステータスリストにおいてターゲットトランザクションのステータス情報が含まれていない。
このような場合に、ローカルトランザクションステータスリストにおいて該ターゲットトランザクションのステータス情報を初期化することができ、すなわちLocal TSにおいてターゲットトランザクションに関連する1つのレコードを挿入し、該レコードにおける値はそれぞれ、データ読み取り要求が携えているターゲットトランザクションのトランザクション識別子rrqm.TID、データ読み取り要求が携えているターゲットトランザクションの第1論理ライフサイクルのタイムスタンプ下限rrqm.Bts、データ読み取り要求が携えているターゲットトランザクションの第1論理ライフサイクルのタイムスタンプ上限rrqm.Ets、及びデータ読み取り要求によって指示されたターゲットトランザクションの現在のトランザクションステータスrrqm.Runningである。
このような場合に、第1論理ライフサイクルに基づいて、データ読み取り要求によって指示された読み取り対象のデータ項目の可視バージョンデータを決定する方式としては、読み取り対象のデータ項目の第1論理ライフサイクルに対する可視バージョンデータを決定する。
チェック結果2:ローカルトランザクションステータスリストにおいてターゲットトランザクションのステータス情報が含まれる。
このような場合に、データ読み取り要求を受信する前に、ターゲットトランザクションが既に該データノード機器にアクセスしたことが説明される。このとき、該データノード機器上のターゲットトランザクションのステータス情報を更新することができ、更新方法としては、ターゲットトランザクションの論理ライフサイクルのタイムスタンプ下限T.Btsを、照会されたタイムスタンプ下限T.Btsとデータ読み取り要求において携えているタイムスタンプ下限rrqm.Bts(すなわち第1論理ライフサイクルのタイムスタンプ下限)のうちの最大値に更新し、すなわち、T.Bts=max(T.Bts,rrqm.Bts)とする。この他、さらにターゲットトランザクションの論理ライフサイクルのタイムスタンプ上限T.Etsを、照会されたタイムスタンプ上限T.Etsとデータ読み取り要求において携えているタイムスタンプ上限rrqm.Ets(すなわち第1論理ライフサイクルのタイムスタンプ上限)における最小値に更新し、すなわち、T.Ets=min(T.Ets,rrqm.Ets)とする。更新されたタイムスタンプ下限、及び更新されたタイムスタンプ上限で構成された論理ライフサイクルを更新された論理ライフサイクルとして用いる。
このような場合に、第1論理ライフサイクルに基づいて、データ読み取り要求によって指示された読み取り対象のデータ項目の可視バージョンデータを決定する方式としては、第1論理ライフサイクルに基づいて、更新された論理ライフサイクルを決定し、読み取り対象のデータ項目の更新された論理ライフサイクルに対する可視バージョンデータを決定する。
説明する必要があるように、読み取り対象のデータ項目の第1論理ライフサイクルに対する可視バージョンデータを決定する実現形態は、読み取り対象のデータ項目の更新された論理ライフサイクルに対する可視バージョンデータを決定する実現形態と類似しており、本願の実施例においては、読み取り対象のデータ項目の第1論理ライフサイクルに対する可視バージョンデータを決定することを例として説明する。
1つの可能な実現形態において、読み取り対象のデータ項目の第1論理ライフサイクルに対する可視バージョンデータを決定する前に、先ず第1論理ライフサイクルに対して正当性検査を行って、第1論理ライフサイクルが有効であるか否かを判断する。例示的には、第1論理ライフサイクルに対して正当性検査を行う方式としては、第1論理ライフサイクルのタイムスタンプ下限が第1論理ライフサイクルのタイムスタンプ上限よりも小さいか否かを検査する。第1論理ライフサイクルのタイムスタンプ下限が第1論理ライフサイクルのタイムスタンプ上限以上であれば、第1論理ライフサイクルが無効であることが説明され、このとき、ローカルトランザクションステータスリストにおけるターゲットトランザクションのトランザクションステータスをRunningからAborted(アボート)に更新する。この他、データノード機器は協調ノード機器にAbort(アボート)メッセージを携えているデータ読み取り結果を返信する。データ読み取り結果はReadReplyMessage(読み取りフィードバックメッセージ)として表され、rrpmと略称する。データ読み取り結果がAbortメッセージが携えている場合については、rrpmメッセージにおけるIsAbortフィールドは1に等しく、すなわちrrpm.IsAbort=1となる。
第1論理ライフサイクルのタイムスタンプ下限が第1論理ライフサイクルのタイムスタンプ上限よりも小さい場合は、第1論理ライフサイクルが有効であることが説明され、このとき、読み取り対象のデータ項目の第1論理ライフサイクルに対する可視バージョンデータを決定する操作を実行する。
1つの可能な実現形態において、読み取り対象のデータ項目の第1論理ライフサイクルに対する可視バージョンデータを決定する過程としては、読み取り対象のデータ項目の最新のバージョンデータの作成タイムスタンプが第1論理ライフサイクルのタイムスタンプ上限よりも小さいことに応答して、該最新のバージョンデータを可視バージョンデータとして用いて、読み取り対象のデータ項目の最新のバージョンデータの作成タイムスタンプが第1論理ライフサイクルのタイムスタンプ上限以上であることに応答して、最初の作成タイムスタンプが第1論理ライフサイクルのタイムスタンプ上限よりも小さいあるバージョンデータを決定するまで、読み取り対象のデータ項目の前のバージョンデータと第1論理ライフサイクルのタイムスタンプ上限とを継続的に比較し、該バージョンデータを可視バージョンデータとして用いる。
つまり、データノード機器は読み取り対象のデータ項目xのある論理ライフサイクルに対する可視バージョンデータを決定する過程において、先ず読み取り対象のデータ項目xの最新のバージョンデータからチェックを開始し、もし該論理ライフサイクルのタイムスタンプ上限T.Etsが最新のバージョンデータの作成タイムスタンプWtsよりも大きければ、該最新のバージョンデータは該論理ライフサイクルに対する可視バージョンデータである。そうでなければ、該最新のバージョンデータは該論理ライフサイクルに対する可視バージョンデータではなく、T.Ets>Wtsを満たす最初のあるバージョンデータx.vを見つけるまで、前のバージョンデータを検索する必要があり、該バージョンデータx.vを該論理ライフサイクルに対する可視バージョンデータとして用いる。
1つの可能な実現形態において、可視バージョンデータを決定した後、該可視バージョンデータx.vを該ターゲットトランザクションの読み取りセットにおいて記憶する。選択的に、ここでの読み取りセットはローカル読み取りセットであってもよく、グローバル読み取りセットであってもよい。本願の実施例においては、該読み取りセットがローカル読み取りセットであることを例として説明しており、グローバル読み取りセットの同期に起因する通信オーバーヘッドを回避することを可能にする。
例示的な実施例において、1つのトランザクションの読み取りセットにおいて該トランザクションが読み取る必要があるデータ項目の可視バージョンデータが記録される。説明する必要があるように、1つの分散型読み取りトランザクションにとっては、該分散型読み取りトランザクションの読み取りセットはローカル読み取りセット及びグローバル読み取りセットに分割されてもよく、ローカル読み取りセットはデータノード機器上に存在し、グローバル読み取りセットは協調ノード機器上に存在する。もちろん、協調ノード機器はグローバル読み取りセットを各データノード機器上に定期的に同期できることにより、データノード機器上にトランザクションのグローバル読み取りセットを維持させることを可能にする。
ステップ2052:可視バージョンデータの作成タイムスタンプ、及び第1論理ライフサイクルに基づいて、ターゲットトランザクションの第2論理ライフサイクルを決定する。
可視バージョンデータを決定した後、データノード機器は可視バージョンデータの作成タイムスタンプ、及び第1論理ライフサイクルに基づいて、ターゲットトランザクションの第2論理ライフサイクルを決定する。
いくつかの実施例において、可視バージョンデータとは第1論理ライフサイクルに対する可視バージョンデータを指す場合、該ステップ2052の実現形態としては、可視バージョンデータの作成タイムスタンプ、及び第1論理ライフサイクルに直接基づいて、ターゲットトランザクションの第2論理ライフサイクルを決定する。可視バージョンデータとは第1論理ライフサイクルに基づき決定された更新された論理ライフサイクルに対する可視バージョンデータを指す場合、該ステップ2052の実現形態としては、可視バージョンデータの作成タイムスタンプ、及び第1論理ライフサイクルに基づき決定された更新された論理ライフサイクルに基づいて、ターゲットトランザクションの第2論理ライフサイクルを決定する。本願の実施例は、可視バージョンデータの作成タイムスタンプ、及び第1論理ライフサイクルに直接基づいて、ターゲットトランザクションの第2論理ライフサイクルを決定することを例として説明する。
1つの可能な実現形態において、可視バージョンデータの作成タイムスタンプ、及び第1論理ライフサイクルに直接基づいて、ターゲットトランザクションの第2論理ライフサイクルを決定する方式としては、第1論理ライフサイクルのタイムスタンプ下限を調整し、第1論理ライフサイクルのタイムスタンプ下限を可視バージョンデータx.vの作成タイムスタンプよりも大きくし、すなわち、T.Bts>x.v.Wtsにして、書き読み異常を除去し、調整した後に得られた論理ライフサイクルを第2論理ライフサイクルとして用いる。
別の可能な実現形態において、可視バージョンデータが読み取り対象のデータ項目の最新のバージョンデータである場合については、可視バージョンデータの作成タイムスタンプ、及び第1論理ライフサイクルに直接基づいて、ターゲットトランザクションの第2論理ライフサイクルを決定する方式としては、第1論理ライフサイクルのタイムスタンプ下限を調整し、第1論理ライフサイクルのタイムスタンプ下限を可視バージョンデータx.vの作成タイムスタンプよりも大きくし、すなわち、T.Bts>x.v.Wtsにして、書き読み異常を除去し、可視バージョンデータに対応する書き込み対象のトランザクションがヌルではないことに応答して、第1論理ライフサイクルのタイムスタンプ上限を調整し、第1論理ライフサイクルのタイムスタンプ上限を可視バージョンデータに対応する書き込み対象のトランザクションの論理ライフサイクルのタイムスタンプ下限よりも小さくし、すなわちT.Ets<T0.Bts(T0は可視バージョンデータに対応する書き込み対象のトランザクションを表す)にして、読み書き競合を除去し、調整した後に得られた論理ライフサイクルを第2論理ライフサイクルとして用いる。
可視バージョンデータに対応する書き込み対象のトランザクションWTは可視バージョンデータと対応するデータ項目を修正しており、且つ認証に合格したトランザクションである。例示的には、書き込み対象のトランザクションのトランザクション識別子を記録することによって書き込み対象のトランザクションを記録する。いくつかの実施例において、可視バージョンデータが最新のバージョンデータである場合については、ターゲットトランザクションのトランザクション識別子を可視バージョンデータのアクティブトランザクション集合において追加し、可視バージョンデータをターゲットトランザクションのローカル読み取りセットにおいて追加する。
アクティブトランザクション集合(RTlist)は該最新のバージョンデータにアクセスしたアクティブトランザクションを記録することに用いられ、読み取りトランザクションリストと呼ばれてもよく、該アクティブトランザクション集合は配列の形式であってもよく、リスト、キュー、スタックなどの形式であってもよく、本願の実施例はアクティブトランザクション集合の形式を具体的に限定せず、RTlistにおける個々の要素は上記最新のバージョンデータを読み取ったトランザクションのトランザクション識別子(TID)であってもよい。
ステップ2053:第2論理ライフサイクル、及び可視バージョンデータを携えている結果をデータ読み取り結果として用いる。
第2論理ライフサイクル、及び可視バージョンデータを決定した後、データノード機器は第2論理ライフサイクル、及び可視バージョンデータを携えている結果をデータ読み取り結果として用い、次に第2論理ライフサイクル、及び可視バージョンデータを携えているデータ読み取り結果を協調ノード機器に返信し、協調ノード機器に第2論理ライフサイクル、及び可視バージョンデータを取得させる。例示的には、データ読み取り結果はReadReplyMessage(読み取りフィードバックメッセージ)として表され、rrpmと略称する。例示的には、第2論理ライフサイクル、及び可視バージョンデータを携えているrrpmにおいてBts、Ets、及びValueフィールドが含まれ、ここで、Btsフィールド及びEtsフィールドはそれぞれ第2論理ライフサイクルのタイムスタンプ下限、及び第2論理ライフサイクルのタイムスタンプ上限を記録し、Valueフィールドは可視バージョンデータの値を記録する。
ステップ206において、協調ノード機器はデータノード機器から返信されたデータ読み取り結果がトランザクション認証条件を満たすことに応答して、データノード機器にトランザクション認証要求、及びローカル書き込みセットを送信する。
データノード機器はデータ読み取り結果を協調ノード機器に返信した後、協調ノード機器はデータ読み取り結果がトランザクション認証条件を満たすか否かを判断し、次にデータ読み取り結果がトランザクション認証条件を満たすと判定した場合、データノード機器にトランザクション認証要求、及びローカル書き込みセットを送信し、データノード機器にターゲットトランザクションを認証させる。
例示的には、協調ノード機器はデータ読み取り結果がトランザクション認証条件を満たすか否かを判断する過程において、先ずデータ読み取り結果がAbort(アボート)メッセージを携えているか否かを判断し、すなわちrrpmにおけるIsAbortフィールドが1に等しいか否かをチェックする。データ読み取り結果がAbortメッセージを携えており、すなわちrrpm.IsAbort=1とすると、データ読み取り結果がトランザクション認証条件を満たさないとみなされ、このとき、グローバルアボート段階に入る。
データ読み取り結果がAbortメッセージを携えていなければ、第1トランザクションステータスリストにおけるターゲットトランザクションの論理ライフサイクルを更新し、更新方式としては、第1論理ライフサイクルのタイムスタンプ下限と第2論理ライフサイクルのタイムスタンプ下限における最大値をターゲットトランザクションの第3論理ライフサイクルのタイムスタンプ下限として用い、第1論理ライフサイクルのタイムスタンプ上限と第2論理ライフサイクルのタイムスタンプ上限における最小値をターゲットトランザクションの第3論理ライフサイクルのタイムスタンプ上限として用いる。すなわち、T.Bts=max(T.Bts,rrpm.Bts)、T.Ets=min(T.Ets,rrpm.Ets)とし、ここで、括弧内のT.Bts、及びT.Etsはそれぞれ更新前の論理ライフサイクル(すなわち第1論理ライフサイクル)のタイムスタンプ下限、及びタイムスタンプ上限であり、rrpm.Bts、及びrrpm.Etsはそれぞれデータ読み取り結果が携えている第2論理ライフサイクルのタイムスタンプ下限、及びタイムスタンプ上限である。
第1トランザクションステータスリストにおけるターゲットトランザクションの論理ライフサイクルを更新した後、第1トランザクションステータスリストにおけるT.BtsがT.Etsよりも小さいか否かをチェックし、すなわち第3論理ライフサイクルのタイムスタンプ下限が第3論理ライフサイクルのタイムスタンプ上限よりも小さいか否かをチェックして、第3論理ライフサイクルが有効であるか否かを判断する。第3論理ライフサイクルのタイムスタンプ下限が第3論理ライフサイクルのタイムスタンプ上限以上である場合、第3論理ライフサイクルが無効であり、このような場合に、データ読み取り結果がトランザクション認証条件を満たさないとみなされ、グローバルアボート段階に入り、第3論理ライフサイクルのタイムスタンプ下限が第3論理ライフサイクルのタイムスタンプ上限よりも小さい場合、第3論理ライフサイクルが有効であり、このような場合に、データ読み取り結果がトランザクション認証条件を満たすとみなされ、データノード機器に第3論理ライフサイクルを携えているトランザクション認証要求を送信する。
例示的な実施例において、もし協調ノード機器がターゲットトランザクションのアボートを決めれば、第1トランザクションステータスリストにおけるターゲットトランザクションのグローバルトランザクションステータスをGaborting(グローバルにアボートしている)に修正し、関連するサブノード(すなわちデータノード機器)に局所アボートを行うように通知する必要がある。
例示的な実施例において、トランザクション認証要求を送信する前に、協調ノード機器は第1トランザクションステータスリストにおけるターゲットトランザクションのグローバルトランザクションステータスをGvalidating(グローバルに認証している)に修正する。例示的には、トランザクション認証要求はValidateRequestMessage(認証要求メッセージ)として表され、vrmと略称する。例示的には、vrmにおいてBts、及びEtsフィールドが含まれる。ここで、Btsフィールド及びEtsフィールドはそれぞれターゲットトランザクションの第1トランザクションステータスリストにおける最新の論理ライフサイクルのタイムスタンプ下限、及びタイムスタンプ上限、すなわち第3論理ライフサイクルのタイムスタンプ下限、及びタイムスタンプ上限を記録する。
いくつかの実施例において、データノード機器の数は複数であり、このような場合に、個々のデータノード機器はいずれも1つのデータ読み取り結果を返信し、データ読み取り結果がトランザクション認証条件を満たすことは、各データノード機器から返信された各データ読み取り結果がいずれもトランザクション認証条件を満たすことを指す。このような場合に、第3論理ライフサイクルは各データ読み取り結果を総合的に考慮することによって決定された論理ライフサイクルである。
いくつかの実施例において、全部の所要のデータを読み取り且つ更新をローカルの内部メモリにおいて書き込んだ後、トランザクション認証条件を満たすとみなされる。つまり、協調ノード機器は第3論理ライフサイクルが有効であることに応答して、且つターゲットトランザクションのグローバル書き込みセットをローカルの内部メモリにおいて記憶し、データノード機器にトランザクション認証要求を送信する。ターゲットトランザクションのグローバル書き込みセットは端末によって生成されて協調ノード機器に伝送されるか、又は協調ノード機器によって自ら生成され、本願の実施例はこれを限定しない。
1つのトランザクションの書き込みセットにおいて該トランザクションが更新する必要があるデータ項目が記憶され、読み取りセット構造と類似しており、同様に内部メモリチェーンテーブル構造を使用してトランザクションの書き込みセットを維持することができる。説明する必要があるように、1つの分散型書き込みトランザクションにとって、該分散型書き込みトランザクションの書き込みセットはローカル書き込みセット及びグローバル書き込みセットに分割されてもよく、ローカル書き込みセットはデータノード機器上に存在し、グローバル書き込みセットは協調ノード機器上に存在する。もちろん、協調ノード機器はグローバル書き込みセットを各データノード機器上に定期的に同期できることにより、データノード機器上にもトランザクションのグローバル書き込みセットを維持することを可能にする。
ターゲットトランザクションのグローバル書き込みセットを協調ノード機器のローカルの内部メモリに書き込んだ後、協調ノード機器はグローバル書き込みセットに基づいてデータノード機器のローカル書き込みセットを決定して、トランザクション認証要求をローカル書き込みセットとともにデータノード機器に送信する。データノード機器のローカル書き込みセットとはターゲットトランザクションのグローバル書き込みセットのうちデータノード機器によって書き込みを担当する必要がある書き込みセットを指す。
ターゲットトランザクションの読み取り段階では、通信は主に協調ノード機器と関連するデータノード機器との間で発生し、データの読み取りに成功するたびに2回の通信が必要であり、協調ノード機器はデータ読み取り要求を関連するデータノード機器上に送信し、関連するデータノード機器はデータ読み取り結果を協調ノード機器に返信する。従って、データ読み取り段階では、n(nが1よりも大きい整数である)がリモート読み取りの回数であると仮定すると、最大2n回の通信を行う必要があり、最大通信量はn×(データ読み取り要求メッセージのサイズ+データ読み取り結果メッセージのサイズ)として表されてもよい。例示的な実施において、ターゲットトランザクションがある関連するデータノード機器の複数のデータ項目のデータを読み取る必要がある場合、複数のデータ項目のデータのデータ読み取り要求をパッケージ化して送信し、これらのデータを一括して読み取り、通信回数を節約し、データ読み取り効率を向上させる。
ステップ207において、データノード機器は協調ノード機器から送信されたトランザクション認証要求、及びローカル書き込みセットに基づいて、ターゲットトランザクションの認証結果を取得し、ターゲットトランザクションの認証結果を協調ノード機器に返信する。
データノード機器は協調ノード機器から送信されたトランザクション認証要求、及びローカル書き込みセットを受信した後、ターゲットトランザクションの正当性を認証して、ターゲットトランザクションの認証結果を取得する。この段階はトランザクションをコミットする前のトランザクション正当性認証段階である。
データノード機器の認証過程はローカル認証過程であり、データノード機器がトランザクション認証要求、及びローカル書き込みセットに基づいて、ターゲットトランザクションの認証結果を取得する過程はデータノード機器がローカル認証操作を実行する過程である。1つの可能な実現形態において、トランザクション認証要求は第3論理ライフサイクルを携えており、第3論理ライフサイクルは協調ノード機器によって第1論理ライフサイクル、及び第2論理ライフサイクルに基づいて決定された有効論理ライフサイクルである。第3論理ライフサイクルは協調ノード機器がトランザクション認証要求を送信する前に維持したターゲットトランザクションの最新の論理ライフサイクルである。
1つの可能な実現形態において、データノード機器はトランザクション認証要求、及びローカル書き込みセットに基づいて、ターゲットトランザクションの認証結果を取得する過程において、データノード機器は先ずローカルトランザクションステータスリストにおけるターゲットトランザクションTのステータス情報を更新し、更新方式としては、T.Bts=max(T.Bts,vrm.Bts)、T.Ets=min(T.Ets,vrm.Ets)とし、ここで、括弧におけるvrm.Bts、及びvrm.Etsはそれぞれトランザクション認証要求が携えている第3論理ライフサイクルのタイムスタンプ下限、及びタイムスタンプ上限である。本願の実施例において、トランザクション認証要求を受信する前に、データノード機器のローカルトランザクションステータスリストにおいて維持されたターゲットトランザクションの論理ライフサイクルは第2論理ライフサイクルであり、区別を容易にするために、トランザクション認証要求を受信した後且つターゲットトランザクションのステータス情報を更新した後に、ローカルトランザクションステータスリストに維持されたターゲットトランザクションの論理ライフサイクルは第4論理ライフサイクルと呼ばれる。
つまり、データノード機器は第3論理ライフサイクルのタイムスタンプ下限と第2論理ライフサイクルのタイムスタンプ下限における最大値をターゲットトランザクションの第4論理ライフサイクルの下限として用い、第3論理ライフサイクルのタイムスタンプ上限と第2論理ライフサイクルのタイムスタンプ上限における最小値をターゲットトランザクションの第4論理ライフサイクルのタイムスタンプ上限として用いる。これにより、第4論理ライフサイクルを得る。説明する必要があるように、ここで更新されるのはデータノード機器のローカルトランザクションステータスリストにおいて維持されたターゲットトランザクションの論理ライフサイクルであり、このような更新はトランザクション並行アクセス制御に用いられ、すなわちトランザクションの一致性を確保することに用いることを可能にする。
例示的な実施例において、シリアル化可能分離レベルに対しては、第4論理ライフサイクルを決定した後、第4論理ライフサイクルのタイムスタンプ下限が第4論理ライフサイクルのタイムスタンプ上限よりも小さいか否かをチェックすることによって、第4論理ライフサイクルが有効であるか否かを認証する。
第4論理ライフサイクルのタイムスタンプ下限が第4論理ライフサイクルのタイムスタンプ上限以上であることに応答して、第4論理ライフサイクルが無効であることが説明され、このとき、ターゲットトランザクションのローカル認証に合格せず、データノード機器は協調ノード機器にAbortメッセージを携えている認証結果を返信する。該Abortメッセージはグローバルアボートを始めることに用いられる。協調ノード機器にターゲットトランザクションの認証結果を返信する過程は協調ノード機器にローカル認証フィードバックメッセージlvmを送信する過程とみなしてもよく、ターゲットトランザクションの認証結果がAbortメッセージを携えている認証結果である場合については、ローカル認証フィードバックメッセージlvmにおけるIsAbortフィールドは1に等しく、すなわちlvm.IsAbort=1とする。
第4論理ライフサイクルのタイムスタンプ下限が第4論理ライフサイクルのタイムスタンプ上限よりも小さいことに応答して、第4論理ライフサイクルが有効であることが説明され、このような場合に、ローカル書き込みセットに対応する各書き込み対象のデータ項目の読み取りトランザクション関連情報及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定する。第5論理ライフサイクルとはローカル書き込みセットにおける各書き込み対象のデータ項目に対して読み書き競合認証を行う過程において更新して得られた論理ライフサイクルを指す。
1つの可能な実現形態において、1つの書き込み対象のデータ項目の読み取りトランザクション関連情報は該1つの書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプ、及び該1つの書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプのうちの少なくとも1つを含む。ここで、1つの書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプ(Rtsと記される)は該1つの書き込み対象のデータ項目を読み取った各読み取りトランザクションの論理コミットタイムスタンプにおける最大値を指示することに用いられ、1つの書き込み対象のデータ項目のターゲット読み取りトランザクションは該1つの書き込み対象のデータ項目に対応するローカル認証に合格するか、又はコミット段階にある読み取りトランザクションであり、ターゲット読み取りトランザクションの終了タイムスタンプはターゲット読み取りトランザクションの論理ライフサイクルのタイムスタンプ上限である。
例示的な実施例において、1つの書き込み対象のデータ項目のターゲット読み取りトランザクションは該1つの書き込み対象のデータ項目に対応するアクティブトランザクション集合におけるローカル認証に合格するか、又はコミット段階にある読み取りトランザクションである。該1つの書き込み対象のデータ項目に対応するアクティブトランザクション集合における各読み取りトランザクションのトランザクションステータスを検出することによって、該1つの書き込み対象のデータ項目のターゲット読み取りトランザクションを決定することができる。
1つの可能な実現形態において、1つの書き込み対象のデータ項目の読み取りトランザクション関連情報の3つの種類の異なる場合に、ローカル書き込みセットに対応する各書き込み対象のデータ項目の読み取りトランザクション関連情報及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定する過程も異なる。
場合1:1つの書き込み対象のデータ項目の読み取りトランザクション関連情報は該1つの書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプを含む。
このような場合1に、ローカル書き込みセットに対応する各書き込み対象のデータ項目の読み取りトランザクション関連情報及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定する過程としては、各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプ、及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定し、ここで、第5論理ライフサイクルのタイムスタンプ下限は各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプにおける最大値よりも大きい。
第4論理ライフサイクルは第5論理ライフサイクルを決定する前に、データノード機器のローカルトランザクションステータスリストにおいて維持されたターゲットトランザクションの最新の論理ライフサイクルである。1つの可能な実現形態において、各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプ、及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定する方式としては、各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプに基づいて第4論理ライフサイクルのタイムスタンプ下限を調整し、調整した後に得られた論理ライフサイクルを第5論理ライフサイクルとして用いる。
例示的には、各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプに基づいて第4論理ライフサイクルのタイムスタンプ下限を調整する方式としては、調整されたタイムスタンプ下限T.Bts=max(T.Bts,y.Rts+1)とし、ここで、括弧内のT.Btsは第4論理ライフサイクルのタイムスタンプ下限を表し、y.Rtsは各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプにおける最大値を表し、数値1は得られた第5論理ライフサイクルのタイムスタンプ下限が各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプにおける最大値よりも大きいことを確保することに用いられる。
いくつかの実施例において、データノード機器はローカル書き込みセットを受信した後に、先ずローカル書き込みセットに対応する各書き込み対象のデータ項目の書き込み対象のトランザクションWTがヌルであるか否かを検出し、ある該書き込み対象のデータ項目の書き込み対象のトランザクションWTがヌルではなければ、他のトランザクションが該書き込み対象のデータ項目を修正しており、且つ該トランザクションが既に認証段階に入ったことが説明される。このとき、ターゲットトランザクションをアボートして書き書き競合を除去する必要があり、すなわち協調ノード機器にAbortメッセージを携えている認証結果を返信する。各書き込み対象のデータ項目の書き込み対象のトランザクションWTがいずれもヌルであれば、ターゲットトランザクションのトランザクション識別子の値を各書き込み対象のデータ項目の書き込み対象のトランザクションWTに付与し、認証段階に入ったターゲットトランザクションが各書き込み対象のデータ項目を修正する必要があることが表される。実現では、ロックされていないCAS(Compare and Swap、比較と交換)技術を使用して書き込み対象のデータ項目yの書き込み対象のトランザクションWTに値を付与し、性能を向上させ、又は、先ず書き込み対象のデータ項目yの書き込み対象のトランザクションWTをロックし、他の並行トランザクションがyを並行修正することを防止し、次にロックされた書き込み対象のトランザクションWTに値を付与する。例示的には、書き込み対象のデータ項目y上にアドバイザリーロックを印加し、該アドバイザリーロックは書き込み対象のデータ項目yの書き込み対象のトランザクションWTに対する修正操作の相互排他を指示することに用いられる。
場合2:1つの書き込み対象のデータ項目の読み取りトランザクション関連情報は該1つの書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプを含む。
このような場合2に、ローカル書き込みセットに対応する各書き込み対象のデータ項目の読み取りトランザクション関連情報及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定する過程としては、各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプ、及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定し、ここで、第5論理ライフサイクルのタイムスタンプ下限は各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプにおける最大値よりも大きい。
1つの可能な実現形態において、各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプ、及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定する方式としては、各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプに基づいて第4論理ライフサイクルのタイムスタンプ下限を調整し、調整した後に得られた論理ライフサイクルを第5論理ライフサイクルとして用いる。例示的には、各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプに基づいて第4論理ライフサイクルのタイムスタンプ下限を調整する方式としては、調整されたタイムスタンプ下限T.Bts=max(T.Bts,T1.Ets+1)とし、ここで、括弧内のT.Btsは第4論理ライフサイクルのタイムスタンプ下限を表し、T1.Etsは各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプにおける最大値を表し、数値1は得られた第5論理ライフサイクルのタイムスタンプ下限が各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプにおける最大値よりも大きいことを確保することに用いられる。
説明する必要があるように、1つの書き込み対象のデータ項目のターゲット読み取りトランザクションの数は1つ又は複数である可能性があり、1つの書き込み対象のデータ項目のターゲット読み取りトランザクションの数が複数である場合については、上記T1.Etsとは全部の書き込み対象のデータ項目の全部のターゲット読み取りトランザクションの終了タイムスタンプにおける最大値を指す。
このような方式に基づいてターゲットトランザクションの書き込み操作の発生をターゲット読み取りトランザクションの読み取り操作の後に遅延させて、読み書き競合を回避することを可能にする。
場合3:1つの書き込み対象のデータ項目の読み取りトランザクション関連情報は該1つの書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプ、及び該1つの書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプを含む。
このような場合3に、ローカル書き込みセットに対応する各書き込み対象のデータ項目の読み取りトランザクション関連情報及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定する過程としては、各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプ、及び各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプに基づいて第4論理ライフサイクルを連続的に2回調整し、2回調整した後に得られた論理ライフサイクルをターゲットトランザクションの第5論理ライフサイクルとして用いる。本願の実施例は2回調整の前後順序を限定せず、例示的には、先ず各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプに基づいて第4論理ライフサイクルを調整し、次に各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプに基づいて1回調整した後に得られた論理ライフサイクルを調整する。もちろん、いくつかの実施例において、さらに先ず各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプに基づいて第4論理ライフサイクルを調整し、次に各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプに基づいて1回調整した後に得られた論理ライフサイクルを調整することができる。
例示的には、2回調整した後に得られた論理ライフサイクルを第5論理ライフサイクルとして用いる場合については、1回調整した後に論理ライフサイクルを得た後、シリアル化可能分離レベルであると、先ず得られた論理ライフサイクルのタイムスタンプ下限がタイムスタンプ上限よりも小さいか否かを認証し、イエスであれば、次回の調整を継続し、ノーであれば、直接ローカル認証が失敗するとみなされ、協調ノード機器にAbortメッセージを携えている認証結果を返信する。
第5論理ライフサイクルを得た後、第5論理ライフサイクルのタイムスタンプ下限が第5論理ライフサイクルのタイムスタンプ上限よりも小さいか否かを認証することによって、第5論理ライフサイクルが有効であるか否かを判断する。第5論理ライフサイクルが有効であることに応答して、認証に合格したことを指示することに用いられる認証結果をターゲットトランザクションの認証結果として用い、第5論理ライフサイクルが無効であることに応答して、認証に合格しなかったことを指示することに用いられる認証結果をターゲットトランザクションの認証結果として用いる。認証に合格したことを指示することに用いられる認証結果をターゲットトランザクションの認証結果として用いる場合については、データノード機器のローカル認証フィードバックメッセージlvmにおいてターゲットトランザクションのデータノード機器上で得られた最新の論理ライフサイクル(すなわち第5論理ライフサイクル)のタイムスタンプ下限Bts、及びタイムスタンプ上限Etsが記録される。例示的には、認証に合格しなかったことを指示することに用いられる認証結果はAbortメッセージを携えている認証結果である。
例示的な実施例において、第5論理ライフサイクルが有効であると判定した場合、ターゲットトランザクションのローカル認証に合格するとみなされ、データノード機器はローカルトランザクションステータスリストにおけるターゲットトランザクションのステータス情報を更新し、ターゲットトランザクションのトランザクションステータスをValidated(認証に合格する)に更新し、すなわち、T.Status=Validatedとする。例示的な実施例において、ターゲットトランザクションのローカル認証に合格すると判定した後、データノード機器は書き込み対象のデータ項目の更新値に基づき、書き込み対象のデータ項目の新たなバージョンデータを作成する。例示的な実施例において、作成された新たなバージョンデータに該新たなバージョンデータがグローバルにコミットされていないことを指示することに用いられる第1マークを設定する。第1マークを有する新たなバージョンデータは外部に対して不可視である。
説明する必要があるように、ターゲットトランザクションのデータノード機器におけるローカル認証に合格しなければ、データノード機器のローカルトランザクションステータスリストにおけるターゲットトランザクションのトランザクションステータスをAborted(アボート)に更新し、すなわち、T.Status=Abortedとする必要がある。
1つの可能な実現形態において、1つの書き込み対象のデータ項目のアクティブトランザクション集合において、ターゲット読み取りトランザクションを含むことに加えて、さらに動作している読み取りトランザクションを含み、ターゲットトランザクションの第5論理ライフサイクルに基づき動作している読み取りトランザクションの論理ライフサイクルを調整する必要があり、動作している読み取りトランザクションにターゲットトランザクションが新たに書き込んだデータを読ませず、それにより読み書き競合現象を回避し、トランザクションが正確に実行されることを確保する。例示的には、動作している読み取りトランザクションとはアクティブトランザクション集合におけるトランザクションステータスがRunning(動作している)のトランザクションを指す。動作している読み取りトランザクションの論理ライフサイクルを調整する方式としては、動作している読み取りトランザクションの論理ライフサイクルのタイムスタンプ上限をターゲットトランザクションの第5論理ライフサイクルのタイムスタンプ下限よりも小さくする。動作している読み取りトランザクションがT2であると仮定すると、更新方式としては、T2.Ets=min(T2.Ets,T.Bts-1)とする。ある動作している読み取りトランザクションの更新された論理ライフサイクルのタイムスタンプ下限がタイムスタンプ上限以上であると、該動作している読み取りトランザクションにアボートすべきであるように通知する。
上記トランザクション認証段階から分かるように、ターゲットトランザクションの認証過程において、通信は主に協調ノード機器と関連するデータノード機器との間で発生し、通信は主に、協調ノード機器が個々の関連するデータノード機器にトランザクション認証要求、及びローカル書き込みセットを送信するステップと、関連するデータノード機器が認証結果を協調ノード機器にフィードバックするステップと、を含む。従って、ターゲットトランザクションの認証段階では、m(mは1以上の整数である)がターゲットトランザクションTに関連するデータノード機器の数であると仮定すると、最大2m回の通信を行う必要があり、最大通信量はm×(トランザクション認証要求メッセージのサイズ+認証結果メッセージのサイズ)+グローバル書き込みセットのサイズとして表されてもよい。
ステップ208において、協調ノード機器はデータノード機器から返信されたターゲットトランザクションの認証結果に基づいて、ターゲットトランザクションの処理命令を決定し、データノード機器に処理命令を送信し、処理命令はコミット命令、又はアボート命令である。
協調ノード機器はデータノード機器から返信された認証結果を受信した後、受信した認証結果に基づきターゲットトランザクションがグローバル認証に合格するか否かを判断し、更にターゲットトランザクションの処理命令を決定し、データノード機器に処理命令を送信する。ここで、処理命令はコミット命令、又はアボート命令である。
1つの可能な実現形態において、データノード機器の数は1つ又は複数であり、データノード機器の数が複数である場合、個々のデータノード機器はいずれも1つの認証結果を返信する。
データノード機器の数が少なくとも2つである場合について、データノード機器から返信されたターゲットトランザクションの認証結果に基づいて、ターゲットトランザクションの処理命令を決定する過程としては、少なくとも2つのデータノード機器から返信された少なくとも2つの認証結果において認証に合格しなかったことを指示することに用いられる認証結果が存在することに応答して、アボート命令をターゲットトランザクションの処理命令として用いる。少なくとも2つのデータノード機器から返信された少なくとも2つの認証結果はいずれも認証に合格したことを指示することに応答して、少なくとも2つの認証結果が携えている論理ライフサイクルの共通部分をターゲット論理ライフサイクルとして用いて、ターゲット論理ライフサイクルが有効であることに応答して、コミット命令をターゲットトランザクションの処理命令として用いて、ターゲット論理ライフサイクルが無効であることに応答して、アボート命令をターゲットトランザクションの処理命令として用いる。
例示的な実施例において、認証に合格しなかったことを指示することに用いられる認証結果はAbortメッセージを携えている認証結果であり、ある認証結果がAbortメッセージを携えているのではなく、論理ライフサイクル(すなわちステップ207において決定された第5論理ライフサイクル)を携えていれば、該認証結果は認証に合格したことを指示する。つまり、協調ノード機器は受信された認証結果に基づきターゲットトランザクションがグローバル認証に合格することを可能にするか否かを判断する過程において、受信された認証結果においてAbortメッセージを携えている少なくとも1つの認証結果が存在し、すなわちIsAbortフィールドが1に等しいlvmが存在すると、ターゲットトランザクションが全部のローカル認証に合格しないことを表明し、ターゲットトランザクションのグローバル認証に合格せず、ターゲットトランザクションがグローバルアボートを行う必要がある。このような場合に、アボート命令をターゲットトランザクションの処理命令として用いる。協調ノード機器は第1トランザクションステータスリストにおけるターゲットトランザクションのグローバルトランザクションステータスをGaborting(グローバルにアボートしている)に更新する。協調ノード機器はデータノード機器にアボート命令を送信して、データノード機器にローカルアボートを行うように通知する。例示的には、処理命令はコミット/アボートメッセージcoarmの書き込みによって送信され、処理命令がアボート命令である場合、coarmにおけるIsAbortフィールドは1に等しく、すなわちcoarm.IsAbort=1とする。
受信された認証結果においてAbortメッセージを携えている認証結果が存在しないか、又は受信された認証結果がいずれも論理ライフサイクルを携えていれば、ターゲットトランザクションが全部のローカル認証に合格することが説明される。このような場合に、協調ノード機器は受信された各認証結果が携えている論理ライフサイクルの共通部分を計算して、ターゲット論理ライフサイクルを得る。ターゲット論理ライフサイクルのタイムスタンプ下限がターゲット論理ライフサイクルのタイムスタンプ上限以上であれば、ターゲット論理ライフサイクルが無効であることが説明され、ターゲットトランザクションのグローバル認証に合格しなかったと判定し、ターゲットトランザクションがグローバルアボートを行う必要があり、協調ノード機器はアボート命令をターゲットトランザクションの処理命令として用いる。この他、協調ノード機器はさらに第1トランザクションステータスリストにおけるターゲットトランザクションのグローバルトランザクションステータスをGaborting(グローバルにアボートしている)に更新し、協調ノード機器はデータノード機器にアボート命令を送信して、データノード機器にローカルアボートを行うように通知する。
ターゲット論理ライフサイクルのタイムスタンプ下限が、ターゲット論理ライフサイクルのタイムスタンプ上限よりも小さければ、ターゲット論理ライフサイクルが有効であることが説明され、ターゲットトランザクションのグローバル認証に合格したと判定し、協調ノード機器はターゲット論理ライフサイクルから1つのタイムスタンプをランダムに選択してターゲットトランザクションの論理コミットタイムスタンプCtsに値を付与し、例えば、ターゲット論理ライフサイクルのタイムスタンプ下限をターゲットトランザクションの論理コミットタイムスタンプとして選択する。
論理コミットタイムスタンプを決定した後、協調ノード機器は第1トランザクションステータスリストにおけるターゲットトランザクションTの論理ライフサイクルのタイムスタンプ下限、及び論理ライフサイクルのタイムスタンプ上限をいずれも論理コミットタイムスタンプに更新し、すなわち、T.Bts=T.Ets=T.Ctsとする。この他、第1トランザクションステータスリストにおけるターゲットトランザクションのグローバルトランザクションステータスをGcommitted(グローバル認証に合格する)に更新し、グローバルタイムスタンプ生成クラスタがターゲットトランザクションにグローバルコミットタイムスタンプを割り当てるように要求し、第1トランザクションステータスリストにおけるターゲットトランザクションのグローバルコミットタイムスタンプGtsフィールドにおいて記録する。この他、協調ノード機器はコミット命令をターゲットトランザクションの処理命令として用い、データノード機器にコミット命令を送信して、データノード機器にターゲットトランザクションをコミットするように通知する。例示的には、処理命令がコミット/アボートメッセージcoarmの書き込みによって送信される場合については、処理命令がコミット命令である場合、coarmにおけるIsAbortフィールドは0に等しく、すなわちcoarm.IsAbort=0とし、coarmにおけるCts、及びGtsフィールドにおいてそれぞれターゲットトランザクションの論理コミットタイムスタンプ、及びターゲットトランザクションのグローバルコミットタイムスタンプが記録される。
ステップ209において、データノード機器は協調ノード機器から送信されたターゲットトランザクションの処理命令を受信したことに応答して、処理命令を実行し、処理命令はコミット命令、又はアボート命令である。
データノード機器は処理命令を受信した後、処理命令を実行する。データノード機器が処理命令を実行する段階はトランザクションコミット、又はアボート操作終了段階である。
処理命令がコミット命令である場合、ターゲットトランザクションのグローバル認証に合格し、コミット段階に入ることが説明され、すなわちターゲットトランザクションのデータに対する更新をデータベースにおいて永続化し、かついくつかの後続のクリーンアップ作業を行う。例示的な実施例において、データノード機器は協調ノード機器から送信されたコミット命令を受信した後に、以下の操作A~操作Eを実行することができる。
操作A:ターゲットトランザクションのローカル読み取りセットに対応する個々のデータ項目xに対しては、データ項目xの最大読み取りトランザクションタイムスタンプRtsを修正し、データ項目xの最大読み取りトランザクションタイムスタンプRtsをターゲットトランザクションの論理コミットタイムスタンプCtsよりも大きく又は等しくし、すなわち、x.Rts=max(x.Rts,T.Cts)とし、ターゲットトランザクションのトランザクション識別子TIDを該データ項目xのアクティブトランザクションリストRTlistから削除する。
操作B:ターゲットトランザクションのローカル書き込みセットに対応する個々のデータ項目yに対しては、以下の操作を実行する。a)データ項目yのオリジナルの作成タイムスタンプWtsをターゲットトランザクションの論理コミットタイムスタンプT.Ctsに修正する。b)データ項目yの最大読み取りトランザクションタイムスタンプをオリジナルの最大読み取りトランザクションタイムスタンプとターゲットトランザクションの論理コミットタイムスタンプにおける最大値に更新し、すなわち、y.Rts=max(y.Rts,T.Cts)とする。c)データ項目yをデータベースにおいて永続化し、且つデータ項目yのマークを第1マークから第2マークに修正し、第2マークは外部に対して可視であることを指示することに用いられる。d)データ項目yのアクティブトランザクションリストRTlistのコンテンツをクリアする。e)データ項目yの書き込み対象のトランザクションWTのコンテンツをクリアする。
操作C:ターゲットトランザクションのローカル読み取りセット及びローカル書き込みセットをクリアする。
操作D:ローカルトランザクションステータスリストにおけるターゲットトランザクションの論理ライフサイクルのタイムスタンプ下限、及びタイムスタンプ上限をいずれもターゲットトランザクションの論理コミットタイムスタンプに更新し、すなわち、T.Bts=T.Ets=T.Ctsとする。ローカルトランザクションステータスリストにおけるターゲットトランザクションのトランザクションステータスをCommitted(コミットが完了する)に更新する。説明する必要があるように、このとき、ローカルトランザクションステータスリストは、トランザクションの一致性を確保することに用いられ、グローバルトランザクションステータスの同期に関する必要がない。
操作E:協調ノード機器にコミットに成功したACK(Acknowledge Character、確認文字)を返信する。
協調ノード機器は全部のデータノード機器から返信されたコミットに成功したACKを受信した後、第1トランザクションステータスリストにおけるターゲットトランザクションのグローバルトランザクションステータスをGcommitted(グローバルコミットが完了する)に修正し、次に協調ノード機器はデータノード機器にステータス情報クリーンアップ命令を送信し、データノード機器にローカルトランザクションステータスリストからターゲットトランザクションのステータス情報を削除させる。
処理命令がアボート命令である場合、ターゲットトランザクションのグローバル認証に合格しないことが説明され、グローバルアボート段階に入る必要があり、すなわちターゲットトランザクションをアボートし、かつ相応なクリーンアップ作業を行う。例示的には、クリーンアップ作業のコンテンツは、ターゲットトランザクションのトランザクション識別子TIDをターゲットトランザクションのローカル読み取りセットに対応する個々のデータ項目xのアクティブトランザクションリストRTlistから削除することと、ターゲットトランザクションのローカル書き込みセットに対応する個々のデータ項目yに対応する新たな作成データをクリーンアップし、且つデータ項目yの書き込み対象のトランザクションWTのコンテンツをクリアすることと、ターゲットトランザクションのローカル読み取りセット及びローカル書き込みセットをクリアすることと、ローカルトランザクションステータスリストにおけるターゲットトランザクションのトランザクションステータスをAborted(アボートが完了する)に更新することと、協調ノード機器にアボートが完了したACKを返信することと、を含む。
協調ノード機器は全部のデータノード機器から返信されたアボートが完了したACKを受信した後、第1トランザクションステータスリストにおけるターゲットトランザクションのグローバルトランザクションステータスをGaborted(グローバルアボートが完了する)に修正し、次に協調ノード機器はデータノード機器にステータス情報クリーンアップ命令を送信し、データノード機器にローカルトランザクションステータスリストからターゲットトランザクションのステータス情報を削除させる。1つの可能な実現形態において、協調ノード機器はデータノード機器にステータス情報クリーンアップ命令を一括して送信して、通信回数を減少させる。
上記内容から明らかなように、ターゲットトランザクションのコミット/アボート段階では、通信は主に協調ノード機器と関連するデータノード機器との間で発生し、通信は主に、協調ノード機器が個々の関連するデータノード機器にコミット/アボート命令を送信するステップと、個々の関連するデータノード機器が協調ノード機器に相応なコミット/アボート完了メッセージ(ACK)を送信するステップと、を含む。従って、コミット/アボート段階では、最大2m回の通信を行い、通信量のサイズはm×(コミット/アボート命令メッセージのサイズ+コミット/アボート完了メッセージのサイズ)であり、ここでm(mは1以上の整数である)はターゲットトランザクションTに関連するデータノード機器の数である。
説明する必要があるように、本願の実施例はターゲットトランザクションが読み書き操作に関することを例として紹介したが、本願の実施例はこれに限定されず、ターゲットトランザクションが読み取り操作のみに関するか、又は書き込み操作のみに関する場合については、依然として本願の実施例が提供するトランザクション処理方法に基づきトランザクションに対する処理を実現することを可能にするが、本願の実施例は詳細な説明を省略する。
上記ステップ201~ステップ209に基づいてトランザクションを処理する過程はトランザクションの分散化処理を実現し、並行トランザクション間の競合操作に起因するデータ異常の問題を解決することを可能にする。実現原理から見ると、本願の実施例が提供するトランザクション処理方法は主にOCC(Optimistic Concurrency Control、楽観的並行性制御)のアルゴリズムフレームワークを応用し、DTA(Dynamic Timestamp Allocation、動的割り当てタイムスタンプ)アルゴリズムを組み合わせて、ネットワークで伝送されたトランザクションデータ情報を減少させ、分散型トランザクションの認証効率を向上させ、分散型トランザクションの並行処理能力を高める。この他、さらにMVCC(Mutil-Version Concurrency Control、マルチバージョン並行性制御)を組み合わせてロックされていないデータ読み書きを実現し、それにより局所ノード機器の並行処理能力を高める。ここで、DTAアルゴリズムはTO(Timestamp Ordering、タイムスタンプオーダリング)アルゴリズムに属し、トランザクションの論理ライフサイクルのタイムスタンプ下限、及びタイムスタンプ上限を動的に調整することができる。
本願の実施例が提供する方法はデータ記憶フォーマットに影響されず、本願の実施例における分散型データベースシステムはキー値型のデータ記憶フォーマット(KVデータ記憶フォーマット)(たとえば、HBaseデータベースシステムにおけるデータ記憶フォーマット)をサポートするだけでなく、セグメントページ型のデータ記憶フォーマット(たとえば、PostgreSQL及びMsSQL/InnoDBデータベースシステムにおけるデータ記憶フォーマット)をサポートする。
例示的な実施例において、セグメントページ型のデータ記憶フォーマットに対しては、ノード機器内にデータバッファ領域を確立し、共有された記憶システムから伝送されたデータをバッファし、それによりデータを次回取得する速度を加速させ、バッファフォーマットは下層のデータ記憶フォーマットと一致するように保持される。共有された記憶システムから伝送されたデータは、ローカルのデータバッファ領域にバッファされ、ローカルデータバッファ領域がいっぱいになるか、又はダーティデータを共有された記憶システムにフラッシュバックする必要があるか、又はバッファが無効になる(たとえば、他のノード機器上で同様のデータが修正される)ときまで、トランザクションが終了してもクリーンアップされない。
トランザクションがコミットされる前に、個々のノード機器は共有された記憶システムにトランザクションログ(たとえば、WALログ)を算出し、トランザクションログは共有された記憶システムにLSN値を請求し、該値はグローバルで一意的で且つ逓増する1つの値である。異なるデータ記憶フォーマットでは、トランザクション処理過程において生じたトランザクションログは異なるフォーマットを有する。例示的には、データ記憶フォーマットがKVデータ記憶フォーマットである場合、トランザクションログのフォーマットは図3に示される。
データベースシステムによって維持された大規模なテーブルで分割された各エリア(Region)は1つのログファイルを共有し、単一のエリアはログにおいて時間順序に応じて記憶されるが、複数のエリアは完全に時間順序に応じたものではない可能性がある。個々のログの最小ユニットはログキー(HLogKey)及びログ編集(WALEdit)の2つの部分からなる。ここで、HLogKeyはシーケンス番号(sequenceid)、タイムスタンプ(timestamp)、クラスタ番号(cluster ids)、エリア名(region name)及びテーブル名(table name)などからなり、WALEditは一連のキー値ペア(Key Value)からなり、1行におけるすべての列(すなわちすべてのKey Value)に対する更新操作はいずれも同一のWALEditオブジェクトにおいて含まれ、これは主に1行複数列に書き込むときの原子性を実現するためである。sequenceidは、1つの記憶レベルの自己増加シーケンス番号であり、エリアのデータ復旧及び期限切れログのクリアはいずれもそれに依存し、例示的には、sequenceidとはトランザクションログのLSN値を指す。
例示的には、データ記憶フォーマットがセグメントページ型のデータ記憶フォーマットである場合、トランザクションログのフォーマットは図4に示される。個々のRegionは1つのログファイルを共有し、単一のRegionはログにおいて時間順序に応じて記憶され、且つ複数のRegionは完全に時間順序に応じたものではない可能性がある。個々のログの最小ユニットはHLogkey及びWALEditの2つの部分からなるのではなく、1つのログレコード(XLog Record)からなる。
XLog Recordは2つの部分で構成され、第1部分はヘッダ情報であり、サイズが固定され(たとえば、24B(Bytes、バイト)、対応する構造体はXLogRecordであり、第2部分はログレコードデータ(XLog Record data)である。
XLog Recordは記憶されたデータコンテンツに応じて分割され、主に以下の3つの種類に分けられる。
第1種類:Record for backup block(バックアップブロックレコード):full-write-page(全書き込みページ)を記憶するblock(ブロック)であり、このようなタイプのレコードはページ部分の書き込みの問題を解決するためである。checkpoint(検出ポイント)が完了した後にデータページを1回目に修正し、この変更を記録してトランザクションログファイルに書き込むときにページ全体に書き込む(相応な初期化パラメータを設定する必要があり、デフォルトで開いている)。
第2種類:Record for tuple data block(タプルデータブロックレコード):ページにおけるタプル変更を記憶することに用いられる。
第3種類:Record for Checkpoint(チェックポイントレコード):checkpointが発生した場合、トランザクションログファイルにおいてcheckpoint情報(ここでRedo point(やり直しポイント)を含む)を記録する。
XLog Record dataは実際のデータを記憶する場所であり、以下の4つの部分からなる。
第1部分:0-N個のXLogRecordBlockHeader(ログレコードブロックヘッダ)であり、各々のXLogRecordBlockHeaderは1つのblock data(ブロックデータ)に対応する。BKPBLOCK_HAS_IMAGEマークを設定すると、XLogRecordBlockHeader構造体の後にXLogRecordBlockImageHeader構造体が続き、BKPBLOCK_HAS_HOLE&BKPIMAGE_IS_COMPRESSEDマークを設定すると、XLogRecordBlockHeader構造体の後にXLogRecordBlockCompressHeader構造体が続き、BKPBLOCK_SAME_RELマークを設定しなければ、XLogRecordBlockHeader構造体の後にRelFileNodeが続く。例示的には、XLogRecordBlockHeader構造体の後にさらにBlockNumber(ブロック番号)が続いてもよい。
第2部分:XLogRecordDataHeader[Short|Long](ログレコードデータヘッダ[ショート|ロング])であり、データのサイズ<256 Bytesとすると、Shortフォーマットを使用し、そうでなければ、Longフォーマットを使用する。
第3部分:block data(ブロックデータ):full-write-page data(全書き込みページデータ)及びtuple data(タプルデータ)。full-write-page dataに対しては、圧縮をイネーブルにすると、データが圧縮記憶され、圧縮された後に該pageに関連するメタデータをXLogRecordBlockCompressHeader(ログレコードブロック圧縮ヘッダ)に記憶する。
第4部分:main data(主要データ):checkpointなどのログデータを記録する。
例示的には、XLog Recordは以下のように定義される。
ヘッダ情報(固定サイズのXLogRecord構造体)
XLogRecordBlockHeader 構造体
XLogRecordBlockHeader 構造体
...
XLogRecordDataHeader[Short|Long] 構造体
block data
block data
...
main data
1つの可能な実現形態において、データ記憶フォーマットがセグメントページ型のデータ記憶フォーマットである場合については、並行トランザクションが異なるノード機器(ES)上で処理され、且つ同一のページ上の異なるデータ項目を修正する場合、ページレベルの競合が発生してデータ上書きの問題を引き起こすようになる。たとえば、トランザクションTaはノード機器ES-1上でX=2のデータ項目を修正し、トランザクションTbはノード機器ES-2上でX=3のデータ項目を修正し、X=2とX=3のデータ項目は同一のページ(page)上にあり、このとき、トランザクション処理メカニズムは、並行に動作され、トランザクションを同時実行し、トランザクションレベルでデータ異常が存在しない。しかし、ページレベルでは、ES-1とES-2のどちらでフラッシュアウトされたトランザクションログを選ぶべきであるかという選択が存在し、これは同一の物理ページに対する修正が両立できないという問題の出現をもたらす。
セグメントページ型のデータ記憶フォーマットをサポートするトランザクションログにおいて、1つのセグメントページ型のリスト(list)が増加され、本セグメントログにおけるページのアドレス(たとえば、ファイル番号、テーブルスペース番号、ファイルにおける相対オフセットなど)及び個々のページ上で書き込み操作を実行しているトランザクション識別子がマーキングされる。トランザクションログが最下位層に共有された記憶システムにフラッシュアウトされる場合、認証機器はすべての並行トランザクションの共有された記憶システムのトランザクションにおけるlistにコミットされたページが重なるか否かをチェックする。もし重なっていれば、並行トランザクションが同じページを書き込んだことが表明され(書き込むのが同じデータ項目であれば、トランザクション認証段階では、トランザクション競合が存在すると検出しかつ既にアボートによって競合を解消している)、書き込むのが同じページ上の異なるデータ項目であり、このときにページレベルの競合が存在し、データ上書きイベントが発生し、そのうちの1つのノード機器ESに対応するトランザクションをアボートする必要があり、対応するトランザクションがアボートされたノード機器ESのトランザクションログをフラッシュアウトしなくなり、問題の発生を回避する。
例示的な実施例において、上記ページレベルの競合認証を実行する主体は分散型データベースシステムにおける認証機器である。該認証機器はいずれかのノード機器と同一の物理マシン上にあってもよく、独立した機器であってもよく、本願の実施例はこれを限定しない。
本願の実施例が提供するトランザクション処理方法に基づいて、分散型データベースシステムが分散型トランザクションをサポートするだけでなく、グローバルで一致性のあるマルチ読み取りを達成することを可能にし、分散化トランザクション処理技術によって性能にも配慮することを可能にする。良好なトランザクション属性特徴付きのグローバルで一致性のあるマルチ読み取り及び一致性のあるマルチ書き込み能力を備える。本願の実施例が提供するトランザクション処理方法に基づいて、share-diskアーキテクチャに基づく分散型データベースシステム、たとえば有名なNoSQL(Non-relational SQL、一般的に非リレーショナルデータベースを指す)下でのHBaseデータベースシステムに、分散化された分散型トランザクション処理手段を提供できることにより、HBaseと類似するデータベースシステムはエリア間、ノード間の高効率なトランザクション処理能力を備える。
本願の実施例においては、各ノード機器のそれぞれに対応するトランザクション割り当て指標に基づきターゲットトランザクションを協調処理することに用いられる協調ノード機器を決定し、トランザクションの割り当て過程はトランザクションに関するデータ項目を考慮する必要がなく、データ項目の分布状況を考慮する必要もない。このような方式に基づいて、個々のノード機器はいずれも分散化された機器としてトランザクションを協調処理することを可能にすることにより、トランザクションをノード間で処理することを可能にし、トランザクションの処理効率を向上させることに有利であり、トランザクション処理の信頼性が比較的高く、データベースシステムのシステム性能を高めることに有利である。
本願の実施例はトランザクション処理システムを提供し、該トランザクション処理システムは協調ノード機器と、データノード機器とを含み、協調ノード機器は同一の記憶システムを共有する少なくとも2つのノード機器のうちターゲットトランザクションを協調処理することに用いられるノード機器であり、協調ノード機器は少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標に基づき決定され、データノード機器は少なくとも2つのノード機器のうちターゲットトランザクションの処理に関与することに用いられるノード機器であり、
ここで、協調ノード機器は、ターゲットトランザクションのトランザクション情報を取得することと、ターゲットトランザクションのトランザクション情報に基づいて、データノード機器にデータ読み取り要求を送信することと、に用いられ、
データノード機器は、協調ノード機器から送信されたデータ読み取り要求に基づいて、データ読み取り結果を取得し、データ読み取り結果を協調ノード機器に返信することに用いられ、
協調ノード機器はさらに、データノード機器から返信されたデータ読み取り結果がトランザクション認証条件を満たすことに応答して、データノード機器にトランザクション認証要求、及びローカル書き込みセットを送信することに用いられ、
データノード機器はさらに、協調ノード機器から送信されたトランザクション認証要求、及びローカル書き込みセットに基づいて、ターゲットトランザクションの認証結果を取得し、ターゲットトランザクションの認証結果を協調ノード機器に返信することに用いられ、
協調ノード機器はさらに、データノード機器から返信されたターゲットトランザクションの認証結果に基づいて、ターゲットトランザクションの処理命令を決定し、データノード機器に処理命令を送信することに用いられ、処理命令はコミット命令、又はアボート命令であり、
データノード機器はさらに、協調ノード機器から送信されたターゲットトランザクションの処理命令を受信したことに応答して、処理命令を実行することに用いられる。
1つの可能な実現形態において、データ読み取り結果は第2論理ライフサイクルを携えており、第2論理ライフサイクルはデータノード機器によってデータ読み取り要求が携えているターゲットトランザクションの第1論理ライフサイクルに基づき決定され、第1論理ライフサイクルはタイムスタンプ下限、及びタイムスタンプ上限で構成され、協調ノード機器はさらに、第1論理ライフサイクルのタイムスタンプ下限と第2論理ライフサイクルのタイムスタンプ下限における最大値をターゲットトランザクションの第3論理ライフサイクルのタイムスタンプ下限として用いることと、第1論理ライフサイクルのタイムスタンプ上限と第2論理ライフサイクルのタイムスタンプ上限における最小値をターゲットトランザクションの第3論理ライフサイクルのタイムスタンプ上限として用いることと、第3論理ライフサイクルが有効であることに応答して、データノード機器に第3論理ライフサイクルを携えているトランザクション認証要求を送信することであって、第3論理ライフサイクルが有効であることは、第3論理ライフサイクルのタイムスタンプ下限が第3論理ライフサイクルのタイムスタンプ上限よりも小さいことを指示することに用いられる、ことと、に用いられる。
1つの可能な実現形態において、データノード機器の数は少なくとも2つであり、協調ノード機器はさらに、少なくとも2つのデータノード機器から返信された少なくとも2つの認証結果において認証に合格しなかったことを指示することに用いられる認証結果が存在することに応答して、アボート命令をターゲットトランザクションの処理命令として用いることと、少なくとも2つのデータノード機器から返信された少なくとも2つの認証結果はいずれも認証に合格したことを指示することに応答して、少なくとも2つの認証結果が携えている論理ライフサイクルの共通部分をターゲット論理ライフサイクルとして用いることと、ターゲット論理ライフサイクルが有効であることに応答して、コミット命令をターゲットトランザクションの処理命令として用いることと、ターゲット論理ライフサイクルが無効であることに応答して、アボート命令をターゲットトランザクションの処理命令として用いることと、に用いられる。
1つの可能な実現形態において、データ読み取り要求はターゲットトランザクションの第1論理ライフサイクルを携えており、第1論理ライフサイクルはタイムスタンプ下限、及びタイムスタンプ上限で構成され、データノード機器は、第1論理ライフサイクルに基づいて、データ読み取り要求によって指示された読み取り対象のデータ項目の可視バージョンデータを決定することと、可視バージョンデータの作成タイムスタンプ、及び第1論理ライフサイクルに基づいて、ターゲットトランザクションの第2論理ライフサイクルを決定することと、第2論理ライフサイクル、及び可視バージョンデータを携えている結果をデータ読み取り結果として用いることと、に用いられる。
1つの可能な実現形態において、トランザクション認証要求はターゲットトランザクションの第3論理ライフサイクルを携えており、第3論理ライフサイクルは協調ノード機器によって第1論理ライフサイクル、及び第2論理ライフサイクルに基づいて決定された有効論理ライフサイクルであり、データノード機器はさらに、第3論理ライフサイクルのタイムスタンプ下限と第2論理ライフサイクルのタイムスタンプ下限における最大値をターゲットトランザクションの第4論理ライフサイクルのタイムスタンプ下限として用いることと、第3論理ライフサイクルのタイムスタンプ上限と第2論理ライフサイクルのタイムスタンプ上限における最小値をターゲットトランザクションの第4論理ライフサイクルのタイムスタンプ上限として用いることと、第4論理ライフサイクルが有効であることに応答して、ローカル書き込みセットに対応する各書き込み対象のデータ項目の読み取りトランザクション関連情報及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定することと、第5論理ライフサイクルが有効であることに応答して、認証に合格したことを指示することに用いられる認証結果をターゲットトランザクションの認証結果として用いることと、第5論理ライフサイクルが無効であることに応答して、認証に合格しなかったことを指示することに用いられる認証結果をターゲットトランザクションの認証結果として用いることと、に用いられる。
1つの可能な実現形態において、1つの書き込み対象のデータ項目の読み取りトランザクション関連情報は1つの書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプを含み、1つの書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプは、1つの書き込み対象のデータ項目を読み取った各読み取りトランザクションの論理コミットタイムスタンプにおける最大値を指示することに用いられ、データノード機器はさらに、各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプ、及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定することに用いられ、第5論理ライフサイクルのタイムスタンプ下限は各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプにおける最大値よりも大きい。
1つの可能な実現形態において、1つの書き込み対象のデータ項目の読み取りトランザクション関連情報は1つの書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプを含み、ターゲット読み取りトランザクションはローカル認証に合格するか、又はコミット段階にある読み取りトランザクションであり、ターゲット読み取りトランザクションの終了タイムスタンプはターゲット読み取りトランザクションの論理ライフサイクルのタイムスタンプ上限であり、データノード機器はさらに、各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプ、及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定することに用いられ、第5論理ライフサイクルのタイムスタンプ下限は各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプにおける最大値よりも大きい。
上記実施例が提供するシステムは方法実施例と同一の構想に属し、その具体的な実現過程については、詳しくは方法実施例を参照すればよいため、ここでは詳細な説明を省略する。
図5に参照されるように、本願の実施例はトランザクション処理装置を提供し、該装置は、
ターゲットトランザクションの割り当て要求に応答して、同一の記憶システムを共有する少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標を決定することに用いられる第1決定ユニット501であって、1つのノード機器に対応するトランザクション割り当て指標は該1つのノード機器に新たなトランザクションを割り当てるマッチング度を指示することに用いられる、第1決定ユニット501と、
少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標に基づいて、少なくとも2つのノード機器のうちターゲットトランザクションの協調ノード機器を決定し、協調ノード機器によってターゲットトランザクションを協調処理することに用いられる第2決定ユニット502と、を含む。
1つの可能な実現形態において、第1決定ユニット501は、トランザクション割り当てモードを決定することであって、トランザクション割り当てモードはトランザクションのビジー度に基づく割り当て、機器のビジー度に基づく割り当て、及びハイブリッドのビジー度に基づく割り当てのうちのいずれか1つを含む、ことと、トランザクション割り当てモードによって指示された決定方式に基づき、少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標を決定することと、に用いられる。
1つの可能な実現形態において、トランザクション割り当てモードはハイブリッドのビジー度に基づく割り当てを含み、第1決定ユニット501はさらに、第1ノード機器のトランザクション処理数、第1ノード機器の機器リソース使用率、トランザクション処理数の重み、機器リソース使用率の重み、及び重み調節パラメータに基づいて、第1ノード機器に対応するトランザクション割り当て指標を決定することに用いられ、第1ノード機器は少なくとも2つのノード機器のうちのいずれか1つのノード機器である。
1つの可能な実現形態において、該装置は、
協調ノード機器の機器識別情報を割り当て要求を発した端末に送信することに用いられる送信ユニットであって、端末は協調ノード機器の機器識別情報に基づき、ターゲットトランザクションのトランザクション情報を協調ノード機器に送信し、協調ノード機器によってトランザクション情報に基づいてターゲットトランザクションを協調処理することに用いられる、送信ユニットをさらに含む。
1つの可能な実現形態において、分散型データベースシステムはキー値型のデータ記憶フォーマットとセグメントページ型のデータ記憶フォーマットをサポートする。
本願の実施例において、各ノード機器のそれぞれに対応するトランザクション割り当て指標に基づきターゲットトランザクションを協調処理することに用いられる協調ノード機器を決定し、トランザクションの割り当て過程はトランザクションに関するデータ項目を考慮する必要がなく、データ項目の分布状況を考慮する必要もない。このような方式に基づいて、個々のノード機器はいずれも分散化された機器としてトランザクションを協調処理することを可能にすることにより、トランザクションをノード間で処理することを可能にし、トランザクションの処理効率を向上させることに有利であり、トランザクション処理の信頼性が比較的高く、データベースシステムのシステム性能を高めることに有利である。
図6に参照されるように、本願の実施例はトランザクション処理装置を提供し、該装置は、
ターゲットトランザクションのトランザクション情報を取得することに用いられる取得ユニット601と、
ターゲットトランザクションのトランザクション情報に基づいて、データノード機器にデータ読み取り要求を送信することに用いられる第1送信ユニット602であって、データノード機器は同一の記憶システムを共有する少なくとも2つのノード機器のうちターゲットトランザクションの処理に関与することに用いられるノード機器である、第1送信ユニット602と、
データノード機器から返信されたデータ読み取り結果がトランザクション認証条件を満たすことに応答して、データノード機器にトランザクション認証要求、及びローカル書き込みセットを送信することに用いられる第2送信ユニット603と、
データノード機器から返信されたターゲットトランザクションの認証結果に基づいて、ターゲットトランザクションの処理命令を決定することに用いられる決定ユニット604と、
データノード機器に処理命令を送信することに用いられる第3送信ユニット605であって、処理命令はコミット命令、又はアボート命令であり、データノード機器は処理命令を実行することに用いられる、第3送信ユニット605と、を含む。
1つの可能な実現形態において、データ読み取り結果は第2論理ライフサイクルを携えており、第2論理ライフサイクルはデータノード機器によってデータ読み取り要求が携えているターゲットトランザクションの第1論理ライフサイクルに基づき決定され、第1論理ライフサイクルはタイムスタンプ下限、及びタイムスタンプ上限で構成され、第2送信ユニット603は、第1論理ライフサイクルのタイムスタンプ下限と第2論理ライフサイクルのタイムスタンプ下限における最大値をターゲットトランザクションの第3論理ライフサイクルのタイムスタンプ下限として用いることと、第1論理ライフサイクルのタイムスタンプ上限と第2論理ライフサイクルのタイムスタンプ上限における最小値をターゲットトランザクションの第3論理ライフサイクルのタイムスタンプ上限として用いることと、第3論理ライフサイクルが有効であることに応答して、データノード機器に第3論理ライフサイクルを携えているトランザクション認証要求を送信することであって、第3論理ライフサイクルが有効であることは、第3論理ライフサイクルのタイムスタンプ下限が第3論理ライフサイクルのタイムスタンプ上限よりも小さいことを指示することに用いられる、ことと、に用いられる。
1つの可能な実現形態において、データノード機器の数は少なくとも2つであり、決定ユニット604は、少なくとも2つのデータノード機器から返信された少なくとも2つの認証結果において認証に合格しなかったことを指示することに用いられる認証結果が存在することに応答して、アボート命令をターゲットトランザクションの処理命令として用いることと、少なくとも2つのデータノード機器から返信された少なくとも2つの認証結果はいずれも認証に合格したことを指示することに応答して、少なくとも2つの認証結果を携えている論理ライフサイクルの共通部分をターゲット論理ライフサイクルとして用いることと、ターゲット論理ライフサイクルが有効であることに応答して、コミット命令をターゲットトランザクションの処理命令として用いることと、ターゲット論理ライフサイクルが無効であることに応答して、アボート命令をターゲットトランザクションの処理命令として用いることと、に用いられる。
本願の実施例において、各ノード機器のそれぞれに対応するトランザクション割り当て指標に基づきターゲットトランザクションを協調処理することに用いられる協調ノード機器を決定し、トランザクションの割り当て過程はトランザクションに関するデータ項目を考慮する必要がなく、データ項目の分布状況を考慮する必要もない。このような方式に基づいて、個々のノード機器はいずれも分散化された機器としてトランザクションを協調処理することを可能にすることにより、トランザクションをノード間で処理することを可能にし、トランザクションの処理効率を向上させることに有利であり、トランザクション処理の信頼性が比較的高く、データベースシステムのシステム性能を高めることに有利である。
図7に参照されるように、本願の実施例はトランザクション処理装置を提供し、該装置は、
協調ノード機器から送信されたデータ読み取り要求に基づいて、データ読み取り結果を取得することに用いられる第1取得ユニット701であって、協調ノード機器は同一の記憶システムを共有する少なくとも2つのノード機器のうちターゲットトランザクションを協調処理することに用いられるノード機器であり、協調ノード機器は少なくとも2つのノード機器のそれぞれに対応するトランザクション割り当て指標に基づき決定される、第1取得ユニット701と、
データ読み取り結果を協調ノード機器に返信することに用いられる返信ユニット702と、
協調ノード機器から送信されたトランザクション認証要求、及びローカル書き込みセットに基づいて、ターゲットトランザクションの認証結果を取得することに用いられる第2取得ユニット703と、
協調ノード機器から送信されたターゲットトランザクションの処理命令を受信したことに応答して、処理命令を実行することに用いられる実行ユニット704であって、処理命令はコミット命令、又はアボート命令である、実行ユニット704と、を含み、
返信ユニット702はさらに、ターゲットトランザクションの認証結果を協調ノード機器に返信することに用いられる。
1つの可能な実現形態において、データ読み取り要求はターゲットトランザクションの第1論理ライフサイクルを携えており、第1論理ライフサイクルはタイムスタンプ下限、及びタイムスタンプ上限で構成され、第1取得ユニット701は、第1論理ライフサイクルに基づいて、データ読み取り要求によって指示された読み取り対象のデータ項目の可視バージョンデータを決定することと、可視バージョンデータの作成タイムスタンプ、及び第1論理ライフサイクルに基づいて、ターゲットトランザクションの第2論理ライフサイクルを決定することと、第2論理ライフサイクル、及び可視バージョンデータを携えている結果をデータ読み取り結果として用いることと、に用いられる。
1つの可能な実現形態において、トランザクション認証要求はターゲットトランザクションの第3論理ライフサイクルを携えており、第3論理ライフサイクルは協調ノード機器によって第1論理ライフサイクル、及び第2論理ライフサイクルに基づいて決定された有効論理ライフサイクルであり、第2取得ユニット703は、第3論理ライフサイクルのタイムスタンプ下限と第2論理ライフサイクルのタイムスタンプ下限における最大値をターゲットトランザクションの第4論理ライフサイクルのタイムスタンプ下限として用いること、第3論理ライフサイクルのタイムスタンプ上限と第2論理ライフサイクルのタイムスタンプ上限における最小値をターゲットトランザクションの第4論理ライフサイクルのタイムスタンプ上限として用いることと、第4論理ライフサイクルが有効であることに応答して、ローカル書き込みセットに対応する各書き込み対象のデータ項目の読み取りトランザクション関連情報及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定することと、第5論理ライフサイクルが有効であることに応答して、認証に合格したことを指示することに用いられる認証結果をターゲットトランザクションの認証結果として用いることと、第5論理ライフサイクルが無効であることに応答して、認証に合格しなかったことを指示することに用いられる認証結果をターゲットトランザクションの認証結果として用いることと、に用いられる。
1つの可能な実現形態において、1つの書き込み対象のデータ項目の読み取りトランザクション関連情報は該1つの書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプを含み、該1つの書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプは、該1つの書き込み対象のデータ項目を読み取った各読み取りトランザクションの論理コミットタイムスタンプにおける最大値を指示することに用いられ、第2取得ユニット703はさらに、各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプ、及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定することに用いられ、第5論理ライフサイクルのタイムスタンプ下限は各書き込み対象のデータ項目の最大読み取りトランザクションタイムスタンプにおける最大値よりも大きい。
1つの可能な実現形態において、1つの書き込み対象のデータ項目の読み取りトランザクション関連情報は該1つの書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプを含み、ターゲット読み取りトランザクションはローカル認証に合格するか、又はコミット段階にある読み取りトランザクションであり、ターゲット読み取りトランザクションの終了タイムスタンプはターゲット読み取りトランザクションの論理ライフサイクルのタイムスタンプ上限であり、第2取得ユニット703はさらに、各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプ、及び第4論理ライフサイクルに基づいて、ターゲットトランザクションの第5論理ライフサイクルを決定することに用いられ、第5論理ライフサイクルのタイムスタンプ下限は各書き込み対象のデータ項目のターゲット読み取りトランザクションの終了タイムスタンプにおける最大値よりも大きい。
本願の実施例において、各ノード機器のそれぞれに対応するトランザクション割り当て指標に基づきターゲットトランザクションを協調処理することに用いられる協調ノード機器を決定し、トランザクションの割り当て過程はトランザクションに関するデータ項目を考慮する必要がなく、データ項目の分布状況を考慮する必要もない。このような方式に基づいて、個々のノード機器はいずれも分散化された機器としてトランザクションを協調処理することを可能にすることにより、トランザクションをノード間で処理することを可能にし、トランザクションの処理効率を向上させることに有利であり、トランザクション処理の信頼性が比較的高く、データベースシステムのシステム性能を高めることに有利である。
説明する必要があるように、上記実施例が提供する装置はその機能を実現する場合、上記各機能ユニットの分割のみを例として説明したが、実際の応用において、必要に基づき上記機能を異なる機能ユニットに割り当てて完了させることができ、すなわち機器の内部構造を異なる機能ユニットに分割して、以上記述された全部又は一部の機能を完了させる。また、上記実施例が提供する装置は方法実施例と同一の構想に属し、その具体的な実現過程について、詳しくは方法実施例を参照すればよく、ここでは詳細な説明を省略する。
図8は本願の実施例が提供するコンピュータ機器の構造模式図であり、該コンピュータ機器は配置又は性能が異なるため比較的大きく異なってもよく、1つ又は複数のプロセッサ(Central Processing Units、CPU)801と、1つ又は複数のメモリ802とを含んでもよく、ここで、該1つ又は複数のメモリ802において少なくとも1つのコンピュータプログラムが記憶され、該少なくとも1つのコンピュータプログラムは該1つ又は複数のプロセッサ801によってロードされて実行され、コンピュータ機器に上記各方法実施例が提供するトランザクション処理方法を実現させる。もちろん、該コンピュータ機器はさらに、入出力を行うように、有線又は無線ネットワークインタフェース、キーボード及び入出力インタフェースなどの部材を有してもよく、該コンピュータ機器はさらに機器の機能を実現することに用いられる他の部材を含んでもよく、ここでは詳細な説明を省略する。
例示的な実施例において、非一時的コンピュータ可読記憶媒体をさらに提供し、該非一時的コンピュータ可読記憶媒体において少なくとも1つのコンピュータプログラムが記憶され、該少なくとも1つのコンピュータプログラムはコンピュータ機器のプロセッサによってロードされて実行され、コンピュータに上記いずれか1つのトランザクション処理方法を実現させる。
1つの可能な実現形態において、上記非一時的コンピュータ可読記憶媒体は読み取り専用メモリ(Read-Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、読み取り専用光ディスク(Compact Disc Read-Only Memory、CD-ROM)、磁気テープ、フロッピーディスク及び光データ記憶機器などであってもよい。
例示的な実施例において、コンピュータプログラム製品、又はコンピュータプログラムをさらに提供し、該コンピュータプログラム製品、又はコンピュータプログラムはコンピュータ命令を含み、該コンピュータ命令はコンピュータ可読記憶媒体に記憶される。コンピュータ機器のプロセッサはコンピュータ可読記憶媒体から該コンピュータ命令を読み取り、プロセッサは該コンピュータ命令を実行することにより、該コンピュータ機器が上記いずれか1つのトランザクション処理方法を実行する。
理解すべきであるように、本願における用語「少なくとも1つ」とは、1つ又は複数を指し、「複数」又は「少なくとも2つ」の意味はいずれも2つ又は2つ以上を指す。「及び/又は」は、関連対象の関連関係を記述するためのものであり、3種の関係が存在することを表すことができ、例えば、A及び/又はBは、Aが単独で存在する、AとBが同時に存在する、Bが単独で存在するという3種の状況を表すことができる。文字「/」は、一般的に前後の関連オブジェクトが「又は」の関係であることを表す。
以上は本願の例示的な実施例に過ぎず、本願を制限することに用いられるものではなく、本願の精神及び原則内で行われた任意の修正、等価置換、改良などは、いずれも本願の保護範囲内に含まれるべきである。