JP2023546249A - トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム - Google Patents

トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム Download PDF

Info

Publication number
JP2023546249A
JP2023546249A JP2023524479A JP2023524479A JP2023546249A JP 2023546249 A JP2023546249 A JP 2023546249A JP 2023524479 A JP2023524479 A JP 2023524479A JP 2023524479 A JP2023524479 A JP 2023524479A JP 2023546249 A JP2023546249 A JP 2023546249A
Authority
JP
Japan
Prior art keywords
transaction
logical
target transaction
start time
target
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.)
Pending
Application number
JP2023524479A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Publication of JP2023546249A publication Critical patent/JP2023546249A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/2315Optimistic concurrency control
    • G06F16/2322Optimistic concurrency control using timestamps
    • 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/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Abstract

トランザクション処理方法、装置、コンピュータ機器及び記憶媒体であって、データベースの技術分野に関する。方法は、目標トランザクションの読み書き操作に応答して、目標トランザクションの読み取り集合と書き込み集合を取得するステップ(401)と、目標トランザクションの検証命令に応答して、目標トランザクションの論理的な開始時刻と論理的なコミット時刻を決定するステップ(402)と、論理的な開始時刻と論理的なコミット時刻が目標トランザクションの並行整合性レベルにマッチングする場合に、書き込み集合に基づき論理的な開始時刻を更新するステップ(403)と、更新された後の論理的な開始時刻が論理的なコミット時刻以下である場合に、目標トランザクションをコミットするステップ(404)と、を含む。

Description

本願はデータベースの技術分野に関し、特にトランザクション処理方法、装置、コンピュータ機器及び記憶媒体に関する。
本願は、2021年1月28日に提出した、出願番号が第202110115847.4号、発明の名称が「トランザクション処理方法、装置、コンピュータ機器及び記憶媒体」である中国特許出願の優先権を主張し、その全内容は引用により本願に組み込まれている。
データ処理技術はトランザクションのセマンティクスを必要とし、且つ関係データベースのACIDの4つの特性を借用することで、システムのトランザクション特性を保証し、電子取引のニーズを満たす。ここで、Aが原子性、Cが整合性、Iが隔離性、Dが耐久性である。すなわち、電子取引類の操作はこの4つの特性によって取引の安全性及び確実性を保証する必要がある。
分散型トランザクション処理技術は、同様にトランザクションのACIDの4つの特性を満たす必要があり、ACIDの4つの特性を満たすために、データ処理技術は複数種の技術を必要とする。ここで最も重要なのはデータの整合性及び隔離性である。ここで、データの整合性はデータの正確性の問題を決定し、隔離性は並行システムの性能の問題を決定する。トランザクションの整合性の実現とは、つまり、トランザクション並行操作がデータ項目においてデータ異常をもたらすか否かを発見し、解決し、且つデータ異常の問題を如何に解消するかということであり、これは主に4種類のデータ異常と隔離レベル、データベースのトランザクション処理技術における並行アクセス制御技術等に依存する。
本願の実施例はトランザクション処理方法、装置、コンピュータ機器及び記憶媒体を提供する。
一態様は、トランザクション処理方法を提供し、該方法は、
目標トランザクションの読み書き操作に応答して、前記目標トランザクションの読み取り集合と書き込み集合を取得するステップと、
前記目標トランザクションの検証命令に応答して、前記目標トランザクションの論理的な開始時刻と論理的なコミット時刻を決定するステップと、
前記論理的な開始時刻と前記論理的なコミット時刻が前記目標トランザクションの並行整合性レベルにマッチングすることに応答して、前記書き込み集合に基づき前記論理的な開始時刻を更新するステップと、
更新された後の論理的な開始時刻が前記論理的なコミット時刻以下であることに応答して、前記目標トランザクションをコミットするステップと、を含む。
一態様は、トランザクション処理装置を提供し、該装置は、取得モジュールと、決定モジュールと、更新モジュールと、コミットモジュールとを含み、
前記取得モジュールは、目標トランザクションの読み書き操作に応答して、前記目標トランザクションの読み取り集合と書き込み集合を取得することに用いられ、
前記決定モジュールは、前記目標トランザクションの検証命令に応答して、前記目標トランザクションの論理的な開始時刻と論理的なコミット時刻を決定することに用いられ、
前記更新モジュールは、前記論理的な開始時刻と前記論理的なコミット時刻が前記目標トランザクションの並行整合性レベルにマッチングすることに応答して、前記書き込み集合に基づき前記論理的な開始時刻を更新することに用いられ、
前記コミットモジュールは、更新された後の論理的な開始時刻が前記論理的なコミット時刻以下であることに応答して、前記目標トランザクションをコミットすることに用いられる。
一態様は、コンピュータ機器を提供し、該コンピュータ機器は1つ又は複数のプロセッサと1つ又は複数のメモリとを含み、該1つ又は複数のメモリには少なくとも1つのコンピュータプログラムが記憶され、該少なくとも1つのコンピュータプログラムは該1つ又は複数のプロセッサによってロードされ、且つ実行され、前記可能な実現形態のいずれか1つのトランザクション処理方法を実現する。
一態様は、記憶媒体を提供し、該記憶媒体には少なくとも1つのコンピュータプログラムが記憶され、該少なくとも1つのコンピュータプログラムはプロセッサによってロードされ、且つ実行され、前記可能な実現形態のいずれか1つのトランザクション処理方法を実現する。
一態様は、コンピュータプログラム製品又はコンピュータプログラムを提供し、前記コンピュータプログラム製品又は前記コンピュータプログラムは1つ又は複数のプログラムコードを含み、前記1つ又は複数のプログラムコードがコンピュータ読み取り可能記憶媒体に記憶される。コンピュータ機器の1つ又は複数のプロセッサはコンピュータ読み取り可能記憶媒体から前記1つ又は複数のプログラムコードを読み取ることができ、前記1つ又は複数のプロセッサは前記1つ又は複数のプログラムコードを実行し、コンピュータ機器に前記可能な実施形態のいずれか1つのトランザクション処理方法を実行させる。
本願の実施例により提供されるトランザクション処理方法の実施環境の模式図である。 本願の実施例により提供されるHTACシステムのアーキテクチャの模式図である。 本願の実施例により提供される線形化レベルの進化原理図である。 本願の実施例により提供されるトランザクション処理方法のフローチャートである。 本願の実施例により提供されるトランザクション処理方法のインタラクションのフローチャートである。 本願の実施例により提供されるトランザクション処理装置の構造模式図である。 本願の実施例により提供されるコンピュータ機器の構造模式図である。 本願の実施例により提供されるコンピュータ機器の構造模式図である。
本願の目的、技術的解決手段及び利点をより明瞭にするために、以下で、図面を組み合わせて本願の実施形態をさらに詳細に記述する。
本願における用語「第1」、「第2」等の語句は作用、及び機能が基本的に同じである同じ項目、又は類似した項目に対して区別することに用いられ、理解すべきものとして、「第1」、「第2」、「第n」の間には論理的、又は時系列的な依存関係がなく、数と実行順序に対しても限定を行わない。
本願における用語「少なくとも1つ」とは1つ又は複数を指し、「複数」の意味は2つ又は2つ以上を指し、例えば、複数の第1位置とは2つ又は2つ以上の第1位置を指す。
本願の実施例を紹介する前に、いくつかのクラウド技術分野における基本概念を導入する必要がある。
クラウド技術(Cloud Technology):ワイドエリアネットワーク又はローカルエリアネットワークにおいてハードウェア、ソフトウェア、ネットワーク等の一連のリソースを統一して、データの計算、記憶、処理及び共有を実現する1種のホスティング技術を指す。すなわち、クラウドコンピューティングビジネスモデルに基づき応用されるネットワーク技術、情報技術、統合技術、管理プラットフォーム技術、アプリケーション技術等の総称であり、リソースプールを構成することで、必要に応じて使用され、自由で便利である。クラウドコンピューティング技術はクラウド技術分野の重要なサポートとなり得る。技術ネットワークシステムのバックグラウンドサービスは大量の計算、記憶リソースを必要とし、例えば、ビデオウエブサイト、画像類ウエブサイト又はより多くのポータルサイトが挙げられる。インターネット産業の急速な発展及び応用に伴って、将来、各物品には全てそれ自身の識別マークが存在する可能性があるが、全てバックグラウンドシステムに伝送して論理処理を行う必要があり、異なる程度のレベルのデータは個別に処理されることになるため、各種の産業データはすべて強いシステムを後ろ盾としてサポートされる必要があるが、いずれもクラウドコンピューティングによって実現できる。
クラウド記憶(Cloud Storage)は、クラウドコンピューティングの概念から拡張して発展した1つの新しい概念であり、分散型クラウド記憶システム(以下、記憶システムと略称される)とはクラスターアプリケーション、グリッド技術及び分散記憶ファイルシステム等の機能によって、ネットワークにおける大量の各種の異なるタイプの記憶機器(記憶機器は記憶ノードとも称される)を、アプリケーションソフトウェア又はアプリケーションインタフェースによってまとめて協働させ、共同で外部にデータ記憶及びビジネスアクセス機能を提供する1つの記憶システムを指す。
データベース(Database):簡単に言えば、1種の電子化されたファイルキャビネットと見なすことができる、すなわち、電子ファイルを記憶する場所であり、ユーザーがファイルにおけるデータに対して新規追加、問い合わせ、更新、削除等の操作を行うことをサポートする。いわゆる「データベース」とは、所定の方式で一体に記憶され、複数のユーザーと共有することができ、できるだけ小さい冗長度を有し、アプリケーションプログラムと互いに独立したデータ集合である。
データの全状態(Full State):データベースシステムにおけるデータ項目に対して、状態属性の違いに基づき、3種類の状態(現在状態、遷移状態及び履歴状態)に分けられ、該3種類の状態は「データの全状態」と総称され、全状態のデータと略称される。全状態のデータにおける各異なる状態の属性は、そのライフサイクル軌跡におけるデータの存在する状態を識別することに用いられる。
1.現在状態(Current State):最新バージョンのデータ項目であり、現在段階に位置するデータ項目である。
2.履歴状態(Historical State):データ項目の履歴上の1つの状態であり、その値が古い値であり、現在値ではない。選択可能に、複数の履歴状態のデータ項目は同一の主キー識別子に対応し、該主キー識別子を有する各データ項目の状態移行の過程を反映する。履歴状態にあるデータ項目は、読み取り専用であり修正又は削除はできない。
3.遷移状態(Transitional State):現在状態のデータ項目ではなく、履歴状態のデータ項目でもなく、現在状態から履歴状態に変換する過程にあり、この遷移状態にあるデータは半減データとも称される。
選択可能に、異なるデータ項目は同じ主キー識別子(Primary Key、PK)を有し、このとき、同じ主キー識別子を有する各データ項目は1つの全状態のデータ集合を構成し、該全状態のデータ集合内の各データ項目は本質的に全状態のデータを示すことに用いられる。つまり、該主キー識別子を有する初期データ項目に対して複数回修正(又は削除)を行う過程において、修正(又は削除)の時刻が異なることにより生じた複数の異なるバージョンであり、すなわち1つの全状態のデータ集合を構成する。1つの全状態のデータ集合において、あるデータ項目が現在状態にあり、あるデータ項目が遷移状態にあり、あるデータ項目が履歴状態にある。ここでの全状態のデータ集合とは、1つの抽象的で仮想的な集合概念を指し、同一の全状態のデータ集合内の各データ項目は異なる物理マシンに分散的に記憶することができる。選択可能に、データベースシステムが各データ項目を記憶する時に、ポインタを採用して同一の主キー識別子に対応する各データ項目を時系列に応じてリンクし、全状態のデータのライフサイクル軌跡の問い合わせを便利にする。
データ項目の可視性:データ項目の可視要否(データ項目の可視性)はトランザクションに対するものであり、あるデータ項目はいくつかのトランザクションに対しては可視であるが、いくつかのトランザクションに対しては不可視である可能性がある。本願の実施例では、データベースシステムの並行整合性レベルを提案し、且つこれをもとに異なる並行整合性レベルに対しては、異なるトランザクション並行制御識別アルゴリズムを提供し、上記アルゴリズムは後で詳細に説明され、ここで詳細に説明しない。
本願の実施例に係るデータベースシステムは、スタンドアロンのデータベースシステム、トランザクションを主とするスタンドアロンのデータベースシステム、分析型を主とするがトランザクション処理能力を必要とするスタンドアロンのデータベースシステム、例えばNoSQL(Non-relational SQL、非リレーショナルデータベースを広義に指す)体系、又は分散型データベースシステム、分散型ビッグデータ処理システム等を含むがこれらに限定されない。
データベースシステムにおいて、少なくとも1つのノード機器を含み、各ノード機器のデータベースにおいて複数のデータテーブルが記憶され、各データテーブルは1つ又は複数のデータ項目(変数バージョンとも称される)を記憶することに用いられる。ここで、ノード機器のデータベースは任意の1つのタイプの分散型データベースであり、リレーショナルデータベース又は非リレーショナルデータベースのうちの少なくとも1つを含み、例えば、SQL(Structured Query Language、構造化問い合わせ言語)データベース、NoSQL、NewSQL(各種の新規な拡張可能/高性能データベースを広義に指す)等であり、本願の実施例はデータベースのタイプに対して具体的な限定を行わない。
いくつかの実施例では、本願の実施例は1種のブロックチェーン技術に基づいたデータベースシステム(以下、「ブロックチェーンシステム」と略称される)に応用される。上記ブロックチェーンシステムは本質的に1種の非集中化された分散型データベースシステムに属し、コンセンサスアルゴリズムを採用してブロックチェーン上の異なるノード機器に記載される台帳データの整合を保持し、パスワードアルゴリズムにより異なるノード機器間の台帳データの暗号化転送及び改ざん不可能を保証し、スクリプトシステムにより台帳機能を拡張し、ネットワークルーティングにより異なるノード機器間の相互な接続を行う。
ブロックチェーンシステムにおいては、1つ又は複数のブロックチェーンが含まれる。ブロックチェーンは暗号学的方法を使用して関連付けて生じる一連のデータブロックであり、各々のデータブロックには一ロットのネットワーク取引の情報が含まれ、その情報の有効性(偽造防止)を検証し及び次の1つのブロックを生成することに用いられる。
ブロックチェーンシステムにおいて、ノード機器間はピアツーピア(Peer To Peer、P2P)ネットワークを構成し、P2Pプロトコルは伝送制御プロトコル(Transmission Control Protocol、TCP)プロトコルの上に実行される1つのアプリケーション層プロトコルである。ブロックチェーンシステムにおいて、任意の1つのノード機器は以下の機能を備える。(A)ルーティング:ノード機器が有する基本的な機能であり、ノード機器間の通信をサポートすることに用いられる。(B)アプリケーション:ブロックチェーンにおいて配備され、実際のビジネスニーズに基づいて特定のビジネスを実現し、機能の実現に関連するデータを記録して台帳データを形成し、台帳データにおいてデジタル署名が運ばれることでデータソースを示し、台帳データをブロックチェーンシステムにおけるその他のノード機器に送信することにより、その他のノード機器が台帳データソース及び完全性の検証に成功した場合、台帳データを一時ブロックに追加することに用いられる。ここで、アプリケーションが実現するビジネスは財布、共有台帳、スマートコントラクト等を含む。(C)ブロックチェーン:一連の先後の時間順序に応じて相互につなげられたブロックを含み、新しいブロックが一旦ブロックチェーンに加えられると除去できなくなり、ブロックにはブロックチェーンシステムにおけるノード機器がコミットした台帳データが記録される。
いくつかの実施例では、各ブロックには、本ブロックの取引記録を記憶するハッシュ値(本ブロックのハッシュ値)及び前ブロックのハッシュ値が含まれ、各ブロックはハッシュ値により接続されてブロックチェーンを形成する。選択可能に、ブロックにはさらに、ブロック生成時のタイムスタンプ等の情報が含まれている。
本願の実施例を紹介する前に、データベースシステムにおけるトランザクション並行制御の正確程度が、整合性と隔離性により記述されるため、以下、整合性と隔離性に対して解釈説明を行う。
1.隔離性
トランザクション隔離レベルは、ある種類のデータ異常を避けることができるか否かにより定義され、係る可能性のあるデータ異常は以下を含む。A、ダーティリード:1つのトランザクションがもう1つのトランザクションがコミットされていないデータ項目を読み取ったことを指す。B、ノンリピータブルリード:1つのトランザクションが同一のデータ項目を2回繰り返し読み取ったが異なる結果を得たことを指す。C、ファントムリード:トランザクションが操作過程において2回の述語問い合わせ(範囲問い合わせ)を行い、2回目の問い合わせの結果が1回目の問い合わせの結果において出現しないデータ項目を含むか、又は1回目の問い合わせの結果において出現したデータ項目が欠けることを指す。
上記3種類のデータ異常を解決することができることに基づき、データベース国際規格ANSI(American National Standards Institute、米国国家規格協会)SQLは4種類の隔離レベルを提案することで、上記3種類の知られているデータ異常に対して区別を行い、その目的は、あるいくつかのデータ異常の存在を許可する場合にトランザクションの処理効率を向上させることである。
この4種類の隔離レベルはそれぞれ以下を含む。a、リード・アンコミッテッド:上記のような3種類のデータ異常の発生を許可する。b、リード・コミッテッド:ダーティリードの発生を許可しない。c、リピータブルリード:ダーティリード、ノンリピータブルリードの発生を許可しない。d、直列化可能:上記のような3種類のデータ異常はいずれも発生してはならない。
この4種類の隔離レベルはいずれもダーティライト異常の発生を許可しないことを理解することができ、ダーティライト異常とは2つのコミットされていないトランザクションが同一のデータ項目を修正したことを指す。ANSI SQLが規格を制定する際に知られているデータ異常の種類は多くはなく、後続に新しいデータ異常が絶えず発見されている。上記のいくつの種類のデータ異常に加えて、現在、知られているデータ異常はさらに、ロストアップデート異常、読み取り半順序異常、書き込み半順序異常、読み書き半順序異常、鋸波書き込み半順序異常、直列並行現象(Serial-Concurrent-Phenomenon)異常、交差現象(Cross-Phenomenon)異常、因果紛失異常、因果反転異常、古い読み取り異常、将来読み取り異常等を含む。
2.整合性
データベース技術において、「整合性」という単語は2つの意味を表現し、そのうちの1つ目はトランザクションの整合性を指し、そのうちの2つ目は分散型整合性を指す。
データベースのトランザクション整合性の定義は以下のとおりである。トランザクションの操作下で、データベースのデータ状態が1つの整合された状態からもう1つの整合された状態に遷移することである。上記「整合された状態」とは、データベースシステムが予め定義したいくつかの規則を満たすデータ状態を指し、例えば、これらの規則は制約、カスケード、トリガー及び三者間の任意の組み合わせ(データの論理セマンティクスに属する)を含み、書き込み半順序異常が違反するものは特定のデータ間の制約であり、ここでの制約はユーザーセマンティクスが限定したデータの整合性に属する。
データベースのトランザクション処理技術における並行アクセス制御技術は、トランザクション並行操作がデータ項目においてデータ異常をもたらすことがあるか否かを発見し、解決し、且つデータ異常の問題を如何に解消するかということを目的としている。ANSI SQLは4種類のデータ異常及び隔離レベルを提案しており、各種の並行アクセス制御アルゴリズムも発展しており、例えば、ブロックに基づいた並行アクセス制御技術、タイムスタンプに基づいた並行アクセス制御技術、MVCC(Mutil-Version Concurrency Control、マルチバージョン並行制御)に基づいた並行アクセス制御技術、OCC(Optimistic Concurrency Control、楽観的並行制御)に基づいた並行アクセス制御技術等である。
データベースの分散型整合性の定義は以下のとおりである。分散型整合性は共有データオブジェクトの操作整合性とも称され、データベースシステム全体に対するシステムレベルの意味である。データがデータベースシステムにおいて整合を保持することを保証するためには、さらにデータベースシステムが2つの特性にマッチングする必要があることを指し、1つは直列化可能性(Serializability)、もう1つは回復可能性(Recoverability)である。直列化可能性は、すなわち、上記の隔離性において定義された直列化可能の隔離レベルであり、直列化可能性はデータが並行操作により改悪されないように保証し、回復可能性とは、既にコミットされたトランザクションがロールバックされたトランザクションが書き込んだデータを読み取っていないことを指し(ダーティリード異常が発生しないことを指す)、回復可能性はトランザクションがロールバックされた後にデータが前の整合状態に戻ることを保証する。ロールバックされたトランザクションはデータの整合性に対して影響をもたらすことがなく、データベースシステムの整合性状態が回復可能である。
特に、分散型データベースシステム(しかし、オブジェクトを更新する内部メモリシステムや分散型記憶等の類似する問題を備えるシステムを排除しない)において、共有オブジェクトに基づいた操作は、分散型環境下における各種の操作間のデータ項目上での読み書きソートのセマンティクス問題を解決することを目的としている。例えば、各種の強弱の程度の異なる整合性モデルに関し、整合性の比較的強いモデルとして線形整合性、順序整合性等が挙げられ、整合性の比較的弱いモデルとして原子整合性、スナップショット整合性、因果整合性等が挙げられる。
上記2つの側面はいずれも整合性の概念に関するが、それぞれ異なる範疇に属する。前者のトランザクション整合性は、データベース範疇内に検討されたトランザクションに関連する、データ異常を如何に回避するかの整合性であり、後者の分散型整合性は、並行操作範疇内に検討された並行操作、非並行操作に関連する、操作間のセマンティクスの連続を如何に保証するかの整合性である。分散型データベースシステムにおいて、この2つの側面の整合性が相まって、且つ一体に結合され、1つの一意的な結合次元に達することができ、厳密な直列化可能(Strict Serializability、Strong-1SR)と称される。
上記2種の整合性に対してそれぞれ分析を行うと、トランザクション整合性の側面においては、その体系は単一であり、セマンティクスが強烈で、柔軟性が不十分であり、且つデータベースシステム全体は1種類の整合性レベルを有することしかできず、アプリケーション層において異なる整合性要件を有する実際のビジネスニーズを満たすのが困難である。この他、この種類の整合性の要件が非常に厳密で、線形整合性(Linearizability)のReal-Time(リアルタイム)メカニズムを満たす必要があるため、システムの並行度が比較的低く、性能が比較的悪い。分散型整合性の側面においては、それはトランザクション整合性と分散型整合性との間の体系を切り離し、両者間の関連付け関係を効果的に確立することができず、本質的に依然として厳密な直列化可能という1つの単一結合次元しか関連付け関係を確立することができない。この他、整合性モデルは、トランザクション整合性と分散型整合性を効果的、且つ全面的で一体に統一することができず、従って、理論体系は完備せず、実践価値に乏しい。
関連技術において、トランザクション整合性の実現とは、トランザクション並行操作がデータ項目においてデータ異常をもたらすか否かを発見して、解決し、且つデータ異常の問題を如何に解消するかということを指し、主に上記4種類のデータ異常及び隔離レベル、データベースのトランザクション処理技術における並行アクセス制御技術等に依存し、例えば、ブロックに基づいた並行アクセス制御技術、タイムスタンプソートに基づいた並行アクセス制御技術、マルチバージョン並行制御(Multi-Version Concurrency Control、MVCC)に基づいた並行アクセス制御技術及び動作制御センター(Operation Control Center、OCC)に基づいた並行アクセス制御技術等である。これらの技術はデータ異常が出現しないことを保証する、すなわちトランザクションの直列化可能スケジューリングを満たす必要があり、それによりデータの正確性を保証する。
上記に記載のトランザクション整合性は、データベース範疇内に定義されたトランザクションに関連する、データ異常を如何に回避するかの整合性である。データベース分野範囲内の直列化可能の技術、複数種の並行アクセス制御技術はトランザクション整合性に関連する問題のみを解決し、その他の整合性問題(例えば、共有データオブジェクトの整合性問題)を解決することができず、それによって、直列化可能の技術により、一部の異常問題を検出することができない。つまり、直列化可能の要件を部分的に満たすが、まだ異常を備えているトランザクションが存在し、直列化可能スケジューリング技術で検出できない、つまり、トランザクション整合性下及びその他の整合性(例えば、共有データオブジェクトの整合性)下でのデータ異常の問題を識別できず、システムに対する状態検出の正確率が低い。
これに鑑みて、本願の実施例は、並行整合性モデルに関し、複数種の整合性レベルの並行アクセス制御アルゴリズムを確立することができ、ユーザー並行操作がデータオブジェクトにおいて複数種の強弱の程度の異なる整合性セマンティクスを満たすことを効率的に確保することができ、異なるタイプのユーザーの正確性、性能に対するニーズに適している。この他、分散型システム下における複数種の整合性レベルを系統的に提案し、理論体系を完全にすることができ、且つ各種の整合性レベルの実現アルゴリズム、及び一部のレベルに対して非集中化を行うことを可能にし得ることに関するアルゴリズム規則を対応して提案する。さらに複数種の整合性が同一のシステムに共存する基本規則及び実現技術(すなわち、同一のシステム内の異なるトランザクションが同じ又は異なる整合性レベルを有する)を提案し、分散型システム下における複数種の整合性レベルの重要な難題を検討、定義及び具体的に実現する。言い換えれば、整合性に対して強弱の程度に応じて格付けを行った後、タイムスタンプソートの方式を用いて、複数種の整合性に対してタイムスタンプソート検出を行い(すなわち、論理的な開始時刻、論理的なコミット時刻が整合性レベルがマッチングするか否かを判断する)、関連技術におけるループ(トランザクションの依存関係ループを指す)の検出に消費される時間を省くことができ、トランザクションの処理効率を向上させることができる。
図1は、本願の実施例により提供されるトランザクション処理方法の実施環境の模式図である。図1に参照されるように、本願の実施例は分散型データベースシステムに適用され、該システムはゲートウェイサーバ101、グローバルタイムスタンプ生成クラスター102及び分散型記憶クラスター103を含み、分散型記憶クラスター103において、データノード機器と協調ノード機器とが含まれる。
ここで、ゲートウェイサーバ101は、外部の読み書き要求を受信し、且つ読み書き要求に対応する読み書きトランザクションを分散型記憶クラスター103に配信することに用いられる。例えば、ユーザーが端末上のアプリケーションクライアント端末にログインした後、アプリケーションクライアント端末をトリガーして読み書き要求を生成し、分散型データベースシステムが提供したAPI(Application Programming Interface、アプリケーションプログラムプログラミングインタフェース)を呼び出して該読み書き要求をゲートウェイサーバ101に送信し、例えば、該APIはMySQL API(1種のリレーショナルデータベースシステムが提供したAPI)である。
選択可能に、上記端末はスマートフォン、タブレットコンピュータ、ノートパソコン、デスクトップコンピュータ、スマートスピーカ、スマートウォッチ等であるが、これらに限定されない。ここで、端末及びゲートウェイサーバ101は有線又は無線通信の方式で直接又は間接的な接続を行うことができ、本願はここで制限しない。
いくつかの実施例では、該ゲートウェイサーバ101と、分散型記憶クラスター103における任意の1つのデータノード機器又は任意の1つの協調ノード機器とは同一の物理マシンに合併され、つまり、あるデータノード機器又は協調ノード機器をゲートウェイサーバ101として機能させる。
グローバルタイムスタンプ生成クラスター102は、グローバルトランザクションのグローバルタイムスタンプを生成することに用いられ、該グローバルタイムスタンプは少なくとも論理的な開始時刻Btsと論理的なコミット時刻Etsとを含み、該グローバルトランザクションは分散型トランザクションとも称され、複数のデータノード機器に関するトランザクションを指す。例えば、グローバル読み取りトランザクションは複数のデータノード機器上に記憶されるデータに対する読み取りに関し、また、例えば、グローバル書き込みトランザクションは複数のデータノード機器上のデータに対する書き込みに関する。グローバルタイムスタンプ生成クラスター102は論理的に1つの単一ポイントとして見なされるが、いくつかの実施例では、1マスター3スレーブのアーキテクチャによってより高い可用性を有するサービスを提供し、クラスターの形式を採用して該グローバルタイムスタンプの生成を実現し、単一ポイントの故障を防止することができる、つまり、単一ポイントのボトルネックの問題を避ける。
選択可能に、グローバルタイムスタンプは、分散型データベースシステムにおいてグローバルに一意的で、且つ単調に逓増する1つのタイムスタンプ識別子であり、各トランザクションのグローバルコミットの順序をマークすることに用いることができ、これによりトランザクション間の実時間上の先後関係(トランザクションの全順序関係)を反映する。グローバルタイムスタンプは、物理クロック、論理クロック、ハイブリッド物理クロック又はハイブリッド論理クロック(Hybrid Logical Clock、HLC)のうちの少なくとも1つを採用し、本願の実施例においてはグローバルタイムスタンプのタイプに対して具体的な限定を行わない。
1つの例示的なシーンにおいて、グローバルタイムスタンプは1つのトランザクションの論理的な開始時刻Btsと論理的なコミット時刻Etsとを含み、グローバルタイムスタンプはハイブリッド物理クロックの方式を採用して生成され、8バイトで構成される。ここで、前の44ビットは物理タイムスタンプの値(すなわち、Unixタイムスタンプであり、ミリ秒までの精度であり、グローバルなシステム時間を識別し、符号Gtsで示される)である。このように合計244個の符号なし整数を示すことができ、従って理論的には全部で約244/(1000*60*60*24*365)=557.8年の物理タイムスタンプを示すことができる。ここで、後の20ビットはあるミリ秒内に単調に逓増するカウントであり、このように、1ミリ秒当たりに220個(約100万個であり、単一ノード内のグローバル時点上の相対時間を識別し、符号Ltsで示される)のカウントがある。上記データ構造に基づき、スタンドアロン(任意の1つのデータノード機器)のトランザクションスループットが10w/sであれば、理論的には1万個のノード機器を含む分散型記憶クラスター103をサポートする。同時に、グローバルタイムスタンプの数はシステムが理論的にサポート可能なトランザクション総数を表し、上記データ構造に基づき、理論的には、システムは(244-1)*220個のトランザクションをサポートする。
説明する必要がある点として、ここで1種のグローバルタイムスタンプの定義方法を例示的に説明するに過ぎず、ビジネスニーズの違いに基づいて、グローバルタイムスタンプのビット数に対して拡張することにより、より多くのノード数、トランザクション処理数に対するサポートを満たす。例えば、実際の需要に基づいて、単一のトランザクションの論理的な開始時刻Btsと論理的なコミット時刻Etsは8バイトよりも大きいデータで構成され、例えば、10バイトで構成される等のように調整することで、Ltsを増加させてより多くの並行トランザクション数に対処する。本願の実施例はグローバルタイムスタンプの定義方法に対して具体的な限定を行わない。
いくつかの実施例では、該グローバルタイムスタンプ生成クラスター102は物理的に独立しており、又は、ゲートウェイサーバ101又は分散型記憶クラスター103と一体に合併される。
ここで、分散型記憶クラスター103はデータノード機器と協調ノード機器とを含み、各協調ノード機器は少なくとも1つのデータノード機器と対応し、データノード機器と協調ノード機器の区分は異なるトランザクションに対するものである。あるグローバルトランザクションを例とすると、グローバルトランザクションの開始ノードが協調ノード機器と称され、グローバルトランザクションに関するその他のノード機器がデータノード機器と称され、データノード機器又は協調ノード機器の数量が1つ又は複数である。本願の実施例は分散型記憶クラスター103におけるデータノード機器又は協調ノード機器の数量に対して具体的な限定を行わない。
選択可能に、該システムにおいてXA(eXtended Architecture、X/Open組織的分散型トランザクション規範)/2PC(Two-Phase Commit、2フェーズコミット)技術を採用してノード間のトランザクション(グローバルトランザクション)をサポートし、ノード間の書き込み操作時のデータの原子性と整合性を保証する。このとき、協調ノード機器は2PCアルゴリズムにおける協調者として機能することに用いられ、該協調ノード機器と対応する各データノード機器は2PCアルゴリズムにおける関与者として機能することに用いられる。
選択可能に、各データノード機器又は協調ノード機器はスタンドアロン機器であり、又はマスタースタンバイ構造(すなわち、シングルマスターマルチスタンバイクラスター)を採用する。図1に示すように、ノード機器(データノード機器又は協調ノード機器)が1マスター2スタンバイクラスターであることを例として模式的に説明すると、各ノード機器には、1つのマスター機と2つのスタンバイ機とが含まれる。選択可能に、各マスター機又はスタンバイ機には全てエージェント(Agent)機器が対応して配置される。エージェント機器はマスター機又はスタンバイ機と物理的に独立しており、又は、エージェント機器はマスター機又はスタンバイ機における1つのエージェントモジュールとして用いられる。ノード機器1を例とすると、ノード機器1は1つのマスターデータベース及びエージェント機器(マスターdatabase+agentであり、マスターDB+agentと略称される)を含み、この他、2つのスタンバイデータベース及びエージェント機器(スタンバイdatabase+agentであり、スタンバイDB+agentと略称される)をさらに含む。
1つの例示的なシーンにおいて、各ノード機器と対応するマスター機又はスタンバイ機のデータベースインスタンス集合は1つのSET(集合)と称される。例えば、あるノード機器がスタンドアロン機器であると仮定すると、該ノード機器のSETは該スタンドアロン機器のデータベースインスタンスのみであり、あるノード機器が1マスター2スタンバイクラスターであると仮定すると、該ノード機器のSETはマスター機のデータベースインスタンスと2つのスタンバイ機のデータベースインスタンスとの集合である。このとき、クラウドデータベースの強同期技術に基づき、マスター機のデータとスタンバイ機の複製データとの間の整合性を保証する。選択可能に、各SETは線形的な容量拡張を行うことで、ビッグデータシーン下でのビジネス処理ニーズに対処し、例えば、金融ビジネスのシーンの下で、グローバルトランザクションは通常SET間の振込を指す。
上記の図1は、1種類の分散型データベースシステムのアーキテクチャ図のみを提供する。分散型データベースシステム全体は、共同で維持された1つの論理的な大規模テーブルと見なすことができ、この大規模テーブルにおいて記憶されるデータは主キーにより分散型記憶クラスター103における各ノード機器に分散しており、各ノード機器上に記憶されるデータはその他のノード機器から独立しており、それによりノード機器の論理的な大規模テーブルに対する水平分割を実現する。上記システムにおいては、各データベースにおける各データテーブルを水平分割した後に分散的な記憶を行うことができるため、このようなシステムは「データベース分割テーブル分割」を有するアーキテクチャとも見なされる。
本願の実施例により提供されるトランザクション処理方法は、上記のデータベース分割テーブル分割のアーキテクチャを採用した分散型システムに適用され、例えば、該分散型システムは分散型トランザクション型データベースシステム又は分散型リレーショナルデータベースシステムである。この他、本願の実施例により提供されるトランザクション処理方法は任意のその他のアーキテクチャの分散型システム又はスタンドアロンデータベースシステムにも適用され、分散型システムにとって、分散型トランザクション処理能力を必要とし、且つトランザクション処理効率を向上させて異なるユーザーの異なるシーンでの応用ニーズに対処するためには、さらに豊かで柔軟な並行整合性レベルを提供する必要がある。
いくつかの実施例では、上記ゲートウェイサーバ101、グローバルタイムスタンプ生成クラスター102及び分散型記憶クラスター103で構成される分散型データベースシステムは、ユーザー端末にデータサービスを提供する1種のサーバと見なされる。該サーバは独立した物理サーバであるか、又は複数の物理サーバで構成されるサーバクラスター又は分散型システムであり、又はクラウドサービス、クラウドデータベース、クラウドコンピューティング、クラウド関数、クラウド記憶、ネットワークサービス、クラウド通信、ミドルウェアサービス、ドメイン名サービス、セキュリティサービス、CDN(Content Delivery Network、コンテンツ配信ネットワーク)及びビッグデータと人工知能プラットフォーム等の基本的なクラウドコンピューティングサービスを提供するクラウドサーバである。
いくつかの実施例では、上記分散型データベースシステムはHTAC(Hybrid Transaction/Analytical Cluster、ハイブリッドトランザクション/分析クラスター)システムである。図2は、本願の実施例により提供される1種のHTACシステムのアーキテクチャの模式図であり、図2に参照されるように、HTACシステム内には、TP(Transaction Processing、トランザクション処理)クラスター201とAP(Analytical Processing、分析処理)クラスター202とが含まれる。
TPクラスター201はトランザクション処理サービスを提供することに用いられ、TPクラスター201において複数のTPノード機器が含まれ、トランザクション処理過程において、各TPノード機器は現在状態のデータを処理することに用いられる。ここで、各TPノード機器は、スタンドアロン機器又はシングルマスターマルチスタンバイクラスターであり、本願の実施例はTPノード機器のタイプに対して具体的な限定を行わない。
APクラスター202は、履歴状態のデータを記憶し、且つ履歴状態のデータの問い合わせ及び分析サービスを提供することに用いられる。選択可能に、APクラスター202は、上記実施環境におけるグローバルタイムスタンプ生成クラスター102と分散型記憶クラスター103とを含む。分散型記憶クラスター103において複数のAPノード機器が含まれ、各APノード機器はスタンドアロン機器又はシングルマスターマルチスタンバイクラスターであり、本願の実施例はAPノード機器のタイプに対して具体的な限定を行わない。
上記アーキテクチャにおいて、各TPノード機器と対応するマスター機又はスタンバイ機のデータベースインスタンス集合は1つのSET(集合)と称される。例えば、あるTPノード機器がスタンドアロン機器であれば、該TPノード機器のSETは該スタンドアロン機器のデータベースインスタンスのみであり、該TPノード機器が1マスター2スタンバイクラスターであれば、該TPノード機器のSETはマスター機のデータベースインスタンスと2つのスタンバイ機のデータベースインスタンスとの集合である。このとき、クラウドデータベース(Cloud Database)の強同期技術に基づき、マスター機のデータとスタンバイ機の複製データとの間の整合性を保証する。選択可能に、各SETは線形的な容量拡張を行うことで、ビッグデータのシーン下でのビジネス処理ニーズに対処することができる。
選択可能に、各APノード機器はローカルデータベースにおいてTPクラスター201で生じた履歴状態のデータを記憶し、又は記憶インタフェースにより分散型ファイルシステム203にアクセスし、それにより該分散型ファイルシステム203によってTPクラスター201で生じた履歴状態のデータに対して無期限記憶の機能を提供する。該分散型ファイルシステム203は、HDFS(Hadoop Distributed File System、Hadoop分散型ファイルシステム)、Ceph(1種のLinux(登録商標)システム下での分散型ファイルシステム)、Alluxio(1種の内部メモリに基づいた分散型ファイルシステム)等を含むがこれらに限定されない。
いくつかの実施例では、該複数のTPノード機器がトランザクション処理サービスを提供するため、任意の1つのトランザクションのコミットが完了すると、新しい現在状態のデータを生成すると同時に、該現在状態のデータと対応する履歴状態のデータも生成するようになり、履歴状態のデータは比較的大きい記憶空間を占有するようになる。また履歴状態のデータが保存価値を有するため、該複数のTPノード機器は予め定義された履歴状態のデータ移行戦略により、生じた履歴状態のデータをAPクラスター202に原子的に移行する。APクラスター202における各APノード機器は、ローカルアクチュエータ(Local Executor、LE)に基づき履歴状態のデータのダンプを実現し、且つ毎回のデータ移行のメタ情報をメタデータ(Metadata、MD)マネージャに登録することにより、APクラスター202がMDマネージャに基づき格納されたデータのメタ情報を統計することを便利にする。
いくつかの実施例では、ユーザーはSQLルーティング(Structured Query Language Router、SQL Router、SRと略称される)層において提供される問い合わせステートメント、問い合わせ操作のセマンティクス及びメタデータに基づき、ルーティングはTPクラスター201又はAPクラスター202内に記憶される任意の1つのデータを問い合わせており、TPクラスター201は主に現在状態のデータに対する問い合わせサービスを提供し、APクラスター202は主に履歴状態のデータに対する問い合わせサービスを提供する。
選択可能に、HTACシステムにおいて、TPクラスター201とAPクラスター202の前には、それぞれ上記実施例におけるゲートウェイサーバ101が配置される。
上記HTACシステムは1種の分散型データベースシステムの例示的な説明であり、1種の分散型トランザクション型データベースシステムの例示的な説明でもあり、分散型トランザクション処理の能力を必要とし、且つ共有データ上の整合性モデルを必要とする。上記HTACシステム上に本願の実施例により提供されるトランザクション処理方法を用いると、より多くの、より効率的なデータ異常の識別を実現し、効率的な直列化可能の隔離レベルを実現することができ、それによりHTACシステムが複数種のビジネスシーンに適することができるようになる。例えば、厳密な直列化可能レベルを使用するときに、金融分野に非常に良好に適用することができ、データの信頼性を保証するが、現在、主流の分散型データベースシステムはいずれもこの整合性レベルを効率的に提供することができない。また、例えば、比較的弱い整合性レベルを使用するときに、インターネットシーンに非常に良好に適用することができ、それによりリアルタイムな高並行性データベースサービスを提供し、インターネットユーザーに良好な製品体験を提供する。この他、さらにより多くの、より効率的な共有データ整合性モデルを実現することができ、且つ分散型環境において、例えば因果紛失、因果反転、古い読み取り、将来読み取り等のような各種の不整合性の問題を回避することができる。さらに、正確性を保証するうえに、システム性能を大幅に高めることができるが、その理由は以下のとおりである。(a)マルチレベルの並行整合性レベルが提供されているため、異なるレベルは異なる正確性表現及び性能表現を有する。(b)対応するレベル下での並行アクセス制御アルゴリズムが提供されているため、非集中化を基礎として、単一ポイント性能のボトルネックをなくす。(c)異なる並行アクセス制御アルゴリズムはそれぞれ異なる実現方式を有し、効率構造アルゴリズムに取り組むことで、アルゴリズムをより効率的にする。さらに、スタンドアロンデータベースシステムに対して、本願の実施例に関する並行レベルの「順序整合性」と「直列化可能」が直列化可能理論の最適化に対しても極めて有益である(従来の直列化可能の技術は並行トランザクションに対するセッションの因果関係の影響を全く考慮していない)。以上より、このトランザクション処理方法及び関連する理論はユーザーデータの正確性、ユーザーアプリケーションセマンティクスの精度を効果的に保証することができ、且つよりよいシステム性能を有し、すなわち、製品の技術含有量を高め、技術的障壁及び競争力、技術的影響力を高めることができ、非常に強い現実的な意義を有する。
本願の実施例を紹介する前に、先ずデータベースシステムに関連するいくつかの基本用語及び符号表現に対して紹介を行う。
トランザクション:トランザクションはデータベース管理システムが操作を実行する過程における1つの論理単位であり、1つの限られたデータベース操作シーケンスで構成され、データベースシステムの操作の最も小さい実行単位である。1つのシステムの内部において、各操作系列の単位は1つのトランザクションと称され、単一の操作も1つのトランザクションと称される。
変数:トランザクションはデータベース関係システムにおける1つのデータ単位であり、変数はデータベース操作の作用者(又は操作オブジェクトと言う)であり、1つの変数は複数の変数バージョン(以下では「バージョン」とも略称される)を含む。トランザクションが変数に対して更新を行うたびに、新しい変数バージョンが追加されるようになる。選択可能に、変数の各変数バージョンが自然数をバージョン番号識別子とし、バージョン番号が大きいほど、変数バージョンが新しいことを示す。
操作:1つのデータベース操作は、操作タイプ、トランザクション、及び変数バージョンの3つの部分で構成され、ここで、操作タイプは読み取り(R)及び書き込み(W)の2種を含む。例えば、トランザクションTは変数xに対して更新を行い、変数xの新しいバージョンiを生成し、上記読み取り操作がW(x)と記され、また例えば、トランザクションTが変数xのバージョンiの値を読み取り、上記書き込み操作がR(x)と記される。
トランザクションデータ集合:データ集合は複数個の変数バージョンで構成される集合であり、且つ集合における各変数が多くとも1つのバージョンのみを含み、データ集合DS(T)={x,y,z,...|x、y、zが変数であり、i、j、kがバージョン番号である}と記される。
データベースシステムにおける各トランザクションは、2つのトランザクションデータ集合を有し、それぞれトランザクションの書き込み集合とトランザクションの読み取り集合であり、その意味は以下のとおりである。書き込み集合DS(T)はトランザクションTが書き込んだ新しいデータバージョンを記憶することに用いられ、読み取り集合DS(T)はトランザクションTが読み取ったデータバージョンを記憶することに用いられる。
上記基礎の上で、トランザクション間の関連付け関係は2種に分けられ、1つが関連トランザクションであり、もう1つが非関連トランザクションである。関連トランザクションはまたオブジェクトライフサイクル重複関連及び因果関連を含む。非関連トランザクションとは関連トランザクションの定義を満たさないその他のトランザクションを指す。
ここで、オブジェクトライフサイクル重複関連トランザクションとは、2つのトランザクションが共通のデータオブジェクトを操作する必要があり、且つ重複時間が存在することを指す。関連トランザクションは2種に細分化される。第1種は直接並行トランザクションであり、トランザクションTとTの実行時間が重複し、且つ半順序関係により共通のデータ項目を操作したものを指す。第2種は間接並行トランザクションであり、トランザクションTとTが直接並行トランザクションであり、トランザクションTとTが直接並行トランザクションであり、しかしトランザクションTとTが直接並行トランザクションの2つの条件のいずれかを満たさないか又は全て満たさない場合、トランザクションTとTが間接並行トランザクションであることを指す。
ここで、因果関連トランザクションとは、実行時間が重複しないが、同一のプロセス/セッションに発生する場合、又は同一の共有データオブジェクトに対して、トランザクションTが先に書き込み、トランザクションTが後でTが書き込んだ値を読み取る状況が存在すれば、トランザクションTとTとの間に因果関係が存在することを指す。上記2種の場合を満たすトランザクションが因果関連トランザクションと称される。
ここで、非関連トランザクションとは、トランザクションTとTが前述した2種の関係(オブジェクトライフサイクル重複関連又は因果関連)を満たさない場合、互いに非関連トランザクションであることを指す。
本願の実施例における並行整合性レベルは、半順序関係を満たすか否かの検出に関するため、並行整合性レベルを紹介する前に、半順序関係に対して説明を行う必要がある。共有される操作データ項目に基づき定義された半順序関係は並行半順序関係(Concurrent Partial Order、CPO)、因果半順序関係(Program Order、PO)、及び類似因果半順序関係(Similar Program Order、SPO)に区分され、以下、それぞれ説明を行う。
1.共有される操作データ項目上において、並行トランザクション範囲内の半順序関係に対して定義を行い、以下の4種の並行半順序関係を含む。
(1-1)RW半順序(読み書き半順序関係):トランザクションTがデータ項目Xのバージョンxを読み取り、トランザクションTがデータ項目Xのバージョンxを書き込んだ場合、トランザクションTとトランザクションTが半順序関係を構成し、(T->T|X)と示される。
(1-2)WR半順序(書き読み半順序関係):トランザクションTがデータ項目Xのバージョンxを書き込み、トランザクションTがデータ項目Xのバージョンxを読み取った場合、トランザクションTとトランザクションTが半順序関係を構成し、(T->T|X)と示される。
(1-3)WW半順序(並行書き込み半順序関係):トランザクションTがデータ項目Xのバージョンxを書き込み、トランザクションTがデータ項目Xのバージョンxを書き込んだ場合、トランザクションTとトランザクションTが半順序関係を構成し、(T->T|X)と示される。
(1-4)WRA半順序(逆方向半順序関係):トランザクションTがデータ項目Xのバージョンxを書き込み、トランザクションTがデータ項目Xのバージョンxを読み取る。その後、トランザクションTはロールバック操作が発生し、それにより、該ロールバック操作はトランザクションTの読み取り操作に対して1つの取り消しの半順序関係を生成する。該半順序関係はトランザクションTが発して、且つトランザクションTに向けるものであり、従ってトランザクションTとトランザクションTとの間に、1つの逆方向の半順序関係が構成され、(T->T|X)と示される。
2.共有される操作データ項目上において、因果関連トランザクション範囲内の半順序関係に対して定義し、以下の3種の因果半順序関係を含む。
(2-1)RCW半順序(半順序関係無し):トランザクションTがデータ項目Xを読み取り、且つ先にコミットされ、その後トランザクションTがデータ項目Xを書き込み、前者が後者に対して影響を構成しないので、トランザクションTとトランザクションTとの間は半順序関係を備えない。
(2-2)WCR半順序(因果書き読み半順序関係):トランザクションTがデータ項目Xを書き込み、且つ先にコミットされ、その後、データ項目Xを読み取るトランザクションTが発生する。トランザクションTが読み取ったのは先にコミットされたトランザクションTが書き込んだ値であることに違いないので、トランザクションTとトランザクションTとの間は因果関係を有し、且つトランザクションTが因であり、トランザクションTが果である。トランザクションTとトランザクションTは同一のプロセスにあれば、トランザクションTとトランザクションTとの間は1つのプロセスにおける因果半順序関係を構成すると判定し、(T->T|X)と示される。
(2-3)WCW半順序(因果書き込み半順序関係):トランザクションTがデータ項目Xのバージョンxを書き込み、且つコミットを行い、その後、トランザクションTがデータ項目Xのバージョンxを書き込み、バージョンに変化が発生している。トランザクションTとトランザクションTが同一のプロセスにあれば、トランザクションTとトランザクションTとの間は1つのプロセスにおける因果半順序関係を構成すると判定し、(T->T|X)と示される。
3.共有される操作データ項目上において、類似因果関連トランザクション範囲内の半順序関係に対して定義し、以下の2種の類似因果半順序関係を含む。
(3-1)類似因果書き読み半順序関係:トランザクションTがデータ項目Xを書き込み、且つ先にコミットされ、その後、データ項目Xを読み取るトランザクションTが発生する。トランザクションTが読み取ったのは先にコミットされたトランザクションTが書き込んだ値であるので、トランザクションTとトランザクションTとの間は因果関係を有し、且つトランザクションTが因であり、トランザクションTが果である。トランザクションTとトランザクションTが異なるプロセスにあれば、トランザクションTとトランザクションTとの間は異なるプロセスにおける因果半順序関係を構成すると判定し、(T->T|X)と示される。
(3-2)類似因果書き込み半順序関係:トランザクションTがデータ項目Xのバージョンxを書き込み、且つコミットを行い、その後、トランザクションTがデータ項目Xのバージョンxを書き込み、バージョンに変化が発生している。トランザクションTとトランザクションTは同一のプロセスにあれば、トランザクションTとトランザクションTとの間は1つのプロセスにおける因果半順序関係を構成すると判定し、(T->T|X)と示される。
上記の隔離性と整合性の概念に対する記述に基づき、隔離レベルという単語はデータベースシステムの並行アクセス制御技術に由来する。しかし、隔離レベルは限られたデータ異常(例えば、ANSI SQL標準で限定した3種類の異常)アクセスを基礎として定義を行うだけであり、その他の様々な異常検出に対する感度を欠いている。本願の実施例に関する並行整合性レベルは、「並行レベル」と略称される。
並行レベル:データベースにおけるすべてのタイプのトランザクション(直接並行トランザクション、間接並行トランザクション、因果関連トランザクション、非関連トランザクション)のデータ項目上での挙動に対してレベル区分を行い、強から弱に、以下の複数種の互いに異なる並行整合性レベルを定義する。注意する必要がある点として、並行整合性レベルはトランザクションを単位として定義を行ったものであり、システムを単位として定義を行ったものではなく、すなわち、同一のデータベースシステム内に、異なるトランザクションが異なる並行整合性レベルを満たすことが許可される。
並行整合性レベルにおいて、各トランザクションは少なくとも2つのグローバルタイムスタンプに関し、1つはトランザクションの論理的な開始時刻Bts(Begin Time Stample、開始タイムスタンプ値)であり、もう1つはトランザクションの論理的なコミット時刻Ets(End Time Stample、コミットタイムスタンプ値)である。ここで、ロールバックされるトランザクションのEts値はNULLとして設定される。この他、各セッション(Session)は全て本セッション上に発生した、既に完了した最新のトランザクションのタイムスタンプ値を示す1つのNewts、すなわち、最新の完了済トランザクションのタイムスタンプNewtsを維持するようになり、これは半順序関係(順序整合性)を確保することに用いられる。以下、9種の並行整合性レベルに対して定義を行う。
1)直列化(Serialization Consistency):すべてのトランザクションが1つの論理的なシステム内部において全て直列にキューイングして実行される。ここで、システム内には1つ又は複数の実行可能ノードが存在し、すなわち、スタンドアロンシステム及び分散型システムに適用される。スタンドアロンシステム内にはシングルプロセッサとマルチプロセッサをサポートすることができ、直列化レベルは最も強い整合性レベルであり、任意のデータ異常、不整合が発生することが許可されない。
2)厳密化(Strict Serializability Consistency):すなわち、厳密な直列化可能である。すべてのトランザクションにおいて、書き込みトランザクションが直列に実行されるが、しかし、読み取り専用トランザクションと非読み取り専用トランザクションの並行実行が許可される。1つの読み取り専用トランザクションに対しては、「Time Travel(タイムトラベル)」イベントの発生が許可されず、言い換えれば、現在の時刻から最新データを読み取り、「古い読み取り、将来読み取り」という2種の不整合のデータ異常の発生が許可されない。厳密化レベルは「因果紛失、因果反転」という2種の不整合のデータ異常の発生も許可されない。
説明する必要がある点として、上記Time Travelイベントとは、1つのトランザクションTは前にコミットが既に完了した少なくとも1つのトランザクションのBtsを跨いで古いデータ(データの古いバージョン)に対して読み取りを行うと、Time Travelイベントの発生と称される。コミットが既に完了した任意の1つのトランザクションのBtsを跨がずにデータを取得すれば、Time Travelイベントの発生ではなく、読み取ったデータがコミットが既に完了した最新のトランザクションのデータバージョンであり、且つ該トランザクションのBtsが本トランザクションのBtsよりも早ければ、近似Time Travelイベントの発生と称される。
上記のような幾つかの種類のイベントを定義することで、トランザクションの並行読み取りに基づいて、並行トランザクションの書き込み操作の結果を読み取らずに、読み取り専用トランザクションのBtsを前に移すだけで、並行トランザクションにトランザクションを単位としてデータ読み取りを行わせる。
3)線形化(Linearizability Serializability Consistency):すなわち、線形直列化可能である。すべてのトランザクションは全て並行実行可能であり、しかし、並行実行されるトランザクションに対して、トランザクション間の読み書き関係がReal-Timeの要件を満たす必要があり、且つ任意のデータ異常がないことを保証する必要がある。Real-Time条件は、「因果紛失、因果反転、古い読み取り」という3種類の不整合のデータ異常が存在する可能性がないことを確保するが、将来読み取りのような不整合のデータ異常の発生を許可する。
しかし、直列化可能の要件に対しては、1つのトランザクションの読み取り操作に対して、「近似Time Travel」操作を行う、すなわち、現在の時刻(本トランザクションのBts)から最新データを読み取り、「将来読み取り」の発生を不可能にする。また、直列化可能の要件の下で、データ異常が存在するか否かを検出する必要がある。
従って、線形化レベルはデータ読み取りの側面において厳密化レベルと類似するが、並行度はやや高いこととなる。
4)順序化(Sequential Serializability Consistency):すなわち、順序直列化可能である。1つのセッション内において、結果値が安定的であり、古い読み取りの発生が許可されず、並行トランザクション間は、直列化可能の要件を満たす。
5)直列化可能(Serializability Consistency):1つのセッション内において、結果値が不安定であり、古い読み取りが発生する可能性がある。並行トランザクション間は、直列化可能の要件を満たす。直列化可能レベルは順序化レベルに比べて、同一のsessionにおける半順序関係の制限を取り除く。本定義は従来の直列化可能の定義にマッチングする。
6)因果リピータブルリード(Causal Repeatable Read Consistency):因果関係を考慮したリピータブルリードであり、1つのシステム内において、因果関係を満たすが、並行トランザクション間が直列化可能を満たすことを求めず、すなわち、データ異常が存在する可能性があり、「因果紛失、因果反転、古い読み取り、将来読み取り」等の各種の不整合性のデータ異常が存在する可能性もある。しかし、書き込み半順序、読み書き半順序のタイプのデータ異常の発生を許可しない。
7)リピータブルリード(Repeatable Read Consistency):因果関係を考慮しないリピータブルリードである。書き込み半順序、読み書き半順序のタイプのデータ異常の発生を許可しない。
8)リード・コミッテッド(Read Committed Consistency):因果関係を考慮しないリード・コミッテッドである。読み取り半順序、書き込み半順序のタイプのデータ異常の発生を許可する。
9)リード・アンコミッテッド読み書き(Read Uncommitted Consistency):最も弱い整合性レベルであり、任意のデータ異常、不整合が全て発生する可能性がある。
表1は、上記の幾つかの種類の並行整合性レベル間の関係を示しており、異なる並行レベル間の違い、及び繋がりをより顕著に区分する。ここで「重複」とは、現在の並行レベルが2つのトランザクションの論理的な時間区間の重複を許可することを指し、「非重複」とは、現在の並行レベルが2つのトランザクションの論理的な時間区間の重複を許可しないことを指す。
整合性の強弱の程度の観点に応じて9種類の並行整合性レベルを4類に分ける。区別の観点は、グローバルな整合性保持能力を有するか否かということであり、もしも有すれば、強い整合性の並行レベルに属し、もし有さなければ弱い整合性の並行レベルに属する。第1類は強い整合性レベルであり、直列化、厳密化、線形化、及び順序化が該当し、第2類は、中間型レベルであり、直列化可能が該当する。該レベルは、並行トランザクションの間のみでグローバルな保証を有する。第3類は、弱い整合性レベルであり、因果リピータブルリード、リピータブルリード、及びリード・コミッテッドが該当し、第4類は、ゼロ整合性レベルであり、リード・アンコミッテッド読み書きが該当し、該レベルは任意の整合性保証を有しない。
本願の実施例に関するトランザクション処理方法は、すべての並行レベルに適しており、以下、クロックに基づいた異なる強弱の程度の並行レベルアルゴリズムを紹介する。ここで、グローバルクロック(すなわち、グローバルタイムスタンプ)は1つの論理的な概念であり、データベースシステム全体に統一した単調逓増値を提供する。選択可能に、グローバルクロックは1つのグローバルな物理クロックであるか、又は、グローバルクロックは1つのグローバルな論理クロックである。
いくつかの実施例では、Truetime(実時間)メカニズムを利用して非集中化された分散型クロックを構築するか、又は、複数の冗長ノード(例えば、Paxos/Raft等の整合性プロトコルで構造されるクラスター)のマスタースタンバイシステムで統一して提供されるか、又は、正確な同期メカニズムとコラボレーションノードログアウトメカニズムを有するアルゴリズムに基づきグローバルクロックを構築するが、本願の実施例はグローバルクロックの構築方式に対して具体的な限定を行わない。
グローバルクロックに対して比較を行う際に、2つのトランザクションTとTが存在すると仮定し、T.bts.gts<T.bts.gts OR (T.bts.gts=T.bts.gts AND T.bts.lts<T.bts.lts)の場合に、T.bts<T.btsと考えられる。つまり、HLCクロックを例とすると、8つのバイトで構成され、Btsは前部分のGtsと後部分のLtsとを含み、2つのトランザクションのBtsが大きさを比較する際に、Gtsを優先的に比較し、Gtsが同じであるときにLtsをさらに比較する。
説明する必要がある点として、各トランザクションのコミットに成功した後に、コーディネータ(すなわち、協調ノード機器)上のLtsに対して逓増操作を行う必要があり、且つ各セッションのNewtsに対して逓増を行い、このようにしてのみ、システムの因果順序の逓増を保証できる。
以下、上記の9種の並行レベルに対する定義を基礎として、クロックに基づいた9種の並行レベルアルゴリズムを紹介する。
I)直列化:任意の2つのトランザクションTとTは、T.ets<T.btsを満たす必要があり、TをTよりも先に発生させて完了させる。Bts、Etsの値がグローバルクロックから取得される。
II)厳密化:任意の2つの並行した書き込みトランザクションTとTは、T.ets<T.btsを満たす必要があり、TをTよりも先に発生させて完了させる。並行トランザクションでなければ、T.ets<T.btsの制限を受けない。
この他、読み取り専用トランザクションTは、完了していないTトランザクションと並行させることができ、すなわちT.bts<T.btsである。TがTと並行トランザクションであれば、読み取るのは、Tが書き込んだデータであり、Tが書き込んだが完了していないデータではない(最新データを読み取ることを確保する)。ここでは、実際には「近似Time Travel」イベントが発生している。
この他、TとTのBts、Etsの値が、グローバルクロックから取得される。Tが分散型トランザクションであれば、そのBtsはグローバルクロックから取得される必要があり、Tが局所トランザクション(単一ノードトランザクション)であれば、そのBtsはノード上のクロックから取得できるが、ノードクロックはグローバルクロックと同期更新を保持する必要がある。
この他、1つのトランザクションの読み取り操作は、本トランザクションよりも先にコミットされた将来のデータ項目値を読み取ることができず、すなわち、T.bts<T.btsであれば、R(X)≠W(X)である。すなわち、将来読み取りをサポートしない。
III)線形化:任意の2つの書き込みトランザクションTとTは、T.ets<T.btsを満たす必要がないが、並行トランザクションであれば、直列化可能の検証を行う必要がある。この点は厳密化レベルの定義との違いである。その他の読み取り専用トランザクションに対する条件、クロック取得方式は厳密化レベルと同じであり、線形化レベルは同様に将来読み取りをサポートしない。
IV)順序化:任意のタイプのトランザクションは全て並行又は並列実行可能である。並行トランザクションであれば、直列化可能の検証を行う必要がある。
この他、同一のセッション内に由来する任意の2つのトランザクションP(T)=P(T)であり、P()がプロセスを表し、各トランザクションのEts値は、必ず逓増する必要があり、すなわちT.ets<T.btsである。
この他、分散型トランザクションのBts、Etsは、グローバルクロック又はハイブリッド論理クロックに由来し、局所トランザクションのBts、Etsは本ノードのクロックに由来し得るがクロック間の因果関係を具現する必要がある。すなわち、2つのプロセスPとPは、Pが因でありPが果である関係を有すれば、PのクロックはPのクロックに基づいて調整を行う必要があり、調整後のPのクロックがPのクロックよりも大きくなるようにする。
この他、順序化レベルは古い読み取り、将来読み取りの発生を許可し、因果紛失、因果反転を許可する。
この他、順序化レベルは半順序関係を考慮した直列化可能に相当する。
V)直列化可能:順序化レベルと同様であるが、半順序関係の直列化可能に対する影響を考慮しない。従来の直列化可能スケジューリング技術と等価である。
VI)因果リピータブルリード:任意の因果関係を有する2つのトランザクションTとTでは、2つのプロセスPとPはPが因でありPが果である関係を有すれば、PのクロックはPのクロックに基づいて調整を行う必要があり、調整後のPのクロックがPのクロックよりも大きくなるようにする。ここで、上記PO関係、CPO関係、SPO関係の定義に基づいてトランザクションTとTが因果関係を有するか否かを判断する。
この他、本トランザクションはデータを読み取る際に、本トランザクションのBtsによって確立されたスナップショットで読み取りを行う。
この他、因果リピータブルリードレベルは直列化可能を検証する必要がないが、但し読み取り半順序異常がないことを保証する必要があり、しかし、書き込み半順序、読み書き半順序の種別のデータ異常を発見することができない。
VII)リピータブルリード:因果関係を考慮せず、その他は因果リピータブルリードレベルと同様である。
VIII)リード・コミッテッド:因果関係を考慮しないリード・コミッテッドである。将来読み取りの発生を許可し、すなわち、任意の2つのトランザクション、すなわち、T.bts<T.btsにするが、T.ets<T.etsであれば、TはTが書き込んだデータ項目W(X)=R(X)を読み取ることができる。これは「Time travel」イベントが発生したことを表す。
この他、読み取り半順序、書き込み半順序のタイプのデータ異常の発生を許可する。
IX)リード・アンコミッテッド読み書き:最も弱い整合性レベルであり、任意のデータ異常、不整合は全て発生する可能性がある。リード・アンコミッテッド読み書きレベルは任意の制限がなく、データ異常の検証を行わず、不整合の制限を行わない。
上記クロックに基づいた並行レベルアルゴリズムが分散型データベースシステムに適用される場合、システム内の異なるノード間が同期時刻校正を必要とするときに、システムはNTP(Network Time Protocol、ネットワーク時間プロトコル)に類似するアルゴリズムを採用して周期的な時刻校正を行う。この他、因果イベントが発生するときに、原因イベントが所在するノードの時間は結果イベントが所在するノードに対して時刻校正を行う。この他、あるトランザクションの並行レベルが直列化可能レベル以上であると仮定すると、グローバルタイムスタンプを取得する際に、得られたグローバルタイムスタンプを利用してローカルノードのタイムスタンプに対して時刻校正を行う。この他、時刻校正されるノードに対して、時刻校正は少なくとも本ノードのクロック値に単調逓増の属性を保持させる必要がある。
いくつかの実施例では、2つのノード機器は時刻校正の過程において、ノード機器間が相互に通信するメッセージパケットにおいて、ローカルノードの最新タイムスタンプメッセージを別の1つの時刻校正対象のメッセージ受信側に伝達し、メッセージ受信側は情報を受信した後に、メッセージパケットのタイムスタンプ値がローカルクロックのタイムスタンプ値よりも大きければ、ローカルクロックを修正する。
以下、本願の実施例は線形化レベルの一意性に対する証明過程をさらに提供し、業界では、線形化レベルに対して、Linearizability(線形化)レベル、Linearizability-Regular(通常の線形化)レベル及びLinearizability-Safe(安全線形化)レベルという3種のタイプを有する。3種のタイプのそれぞれの詳細な定義が以下のとおりであり、上記3種のタイプの線形化レベルはトランザクション整合性と融合した後、1種のレベルしか存在できない。
Linearizability(線形化)レベルの定義は以下の[数1]の通りである。
(ここで、Fは読み取り/書き込み操作の戻り値を取得することに用いられる1つの関数を示し、SingleOrderは単一のグローバル順序を示し、RealTimeはリアルタイムメカニズムを示し、RValは整合性条件を満たす戻り値を示し、Hは一連の履歴操作を示し、H’は1つのHが存在することを示し、opは現在のトランザクションの読み取り/書き込み操作を示し、arはHの全順序関係を示し、visは読み取り/書き込み操作の可視性を示し、rbはHの半順序関係を示し、op.ovalは読み取り/書き込み操作の戻り値を示し、[数2]は戻り値が得られたがユーザーに返信していない時刻を示す。)
Linearizability-Regular(通常の線形化)レベルとLinearizability-Safe(安全線形化)レベルの定義は以下の[数3]の通りである。
(ここで、Fは読み取り/書き込み操作の戻り値を取得することに用いられる1つの関数を示し、SingleOrderは単一のグローバル順序を示し、RealTimeWritesはリアルタイム書き込みメカニズムを示し、RValは整合性条件を満たす戻り値を示し、SeqRValは任意の操作opに存在し並行時に属する履歴結果が空集合であると操作の戻り値が操作の所在するコンテキスト関数内に属することを推定できることを示し、rbはHの半順序関係を示し、wrは書き込み操作を示し、opは現在のトランザクションの読み取り/書き込み操作を示し、arはHの全順序関係を示し、Hは一連の履歴操作を示し、Concurは並行操作を示し、op.ovalは読み取り/書き込み操作の戻り値を示し、cxtはコンテキストを示し、Aはデータオブジェクトを示す。)
図3は、本願の実施例により提供される線形化レベルの進化原理図である。300に示すように、P、P、PはそれぞれA、B、Cの3つのプロセスを示し、読み書きが並行して実行される(左から右にReal-Timeに応じて推進される)。変数xは0に初期化される。PはLinearizabilityレベルのセマンティクスに応じて読み取り、xが0又は1であることが許可される。Linearizability-Regularレベルのセマンティクスに応じてxが0、1又は2であることが許可される。Linearizability-Safeレベルのセマンティクスに応じて読み取り、xが任意の値である。
以下、背理法を使用してトランザクションの作用下において、図3におけるPが書き込んだ値2を読み取ることができず、すなわち、複数種の線形整合性がトランザクションの定義において存在することができないことを証明する。図3における各操作は、全て1つのトランザクションと見なされる。トランザクションの特性に基づいて、回復可能性(Recoverable、すなわち、リード・コミッテッドを保証する必要がある)を満たす必要がある。PのRead操作がWrite(2)を読み取ることができると仮定すると、そのP-read-ets<P-write(2)-etsであり、すなわち、Pのトランザクションが実行される時刻にPの2番目のトランザクションがまだ完了しておらず、データベースにおいて回復可能性を満たさず、従ってPはPが書き込んだ値2を読み取ることができず、Pのwrite(1)又はwrite(0)のみを読み取ることができる。従って、トランザクション型データベースにおいて、回復可能性の影響により、Linearizability-RegularレベルとLinearizability-Safeレベルの整合性の効能は線形整合性と等価である。
上記各並行レベルの定義に基づき、本願の実施例により提供されるデータベースにおける並行レベルは、異なる並行トランザクションにおいて独自に設定できる。すなわち、単一のトランザクションのみに対しては有効であり、すなわち複数種の並行レベルは並行トランザクションにおいて共存する。言い換えれば、並行レベルはトランザクションを単位として独立して決定されるものであり、システム内に異なるトランザクションに対して同じ又は異なる並行レベルを配置することがサポートされる。「隔離性」のセマンティクスは本トランザクションにある隔離レベル下で該隔離レベルを保持させるセマンティクスであり、これにより、隔離性は本トランザクションに関連付けられたセマンティクスを有し、その他のトランザクションと無関係である。
並行整合性モデルの複数種の整合性レベルは、3つの観点から区別できる。
システムの観点:各種の整合性が1つのシステム内部にあり、同時に異なるトランザクションが異なる並行整合性レベルにあることを保持し、それによりシステムは複数の整合性状態を同時に備える。これにより、システムが「分断」状態にあり、このため、システムの観点から並行整合性モデルの複数種の整合性レベルのセマンティクスを定義することができない。
ユーザーの観点:異なるユーザーのトランザクション実行について、異なるユーザーについて言えば、それが操作するオブジェクトは該ユーザーについて言えば、1種の整合された視点を保持し、実現可能な方式である。この種類の方式は「隔離レベル」のセマンティクスに類似し、すなわち、並行整合性モデルの複数種の整合性レベルをユーザーの観点に応じて局所化し、従って該観点から並行整合性モデルの複数種の整合性レベルを定義し、並行整合性モデルの複数種の整合性レベルを並行トランザクションにおいて共存させる。
システムに基づいたユーザーの観点:同一の期間内に、システム側面において「分断」状態にないことを保持する必要があると同時に、ユーザーの観点の整合性を満たす必要があり、この状況は1つのジレンマである。システムレベルのパラメータpmodelを利用して段階的な整合性を定義し、前述した定義された強弱レベルに応じて、整合性レベルを有効化するアルゴリズムを以下のように与えられる。
強整合性が有効である:強整合性レベルのみを含み、このとき、グローバルクロックがグローバルな整合性を保証する必要があり、従って、強整合性レベル下での各レベルのみが同一の期間内に共存できる。
非強整合性が有効である:強整合性レベルを除くその他のレベルであり、直列化可能及びより弱いその他のレベルを含み、グローバルクロックに依存しないので、各レベルが同一の期間内に共存する。
pmodel=UM、すなわちユーザーモードを定義し、並行整合性モデルのすべての整合性レベルを強制的に共存させるが、実質的に不整合の問題が存在する。
pmodel=SFM、すなわち強ハイブリッドモードを定義し、強整合性レベル下での各レベルが同一の期間内に共存することを許可し、pmodel=WFM、すなわち弱ハイブリッドモードを定義し、直列化及びより弱いその他のレベルの共存を許可する。
上記のシステムレベルのパラメータpmodelに対する定義により、データベースシステム内に共存する1種の並行整合性レベルを提供することができ、並行整合性モデルのマルチレベルの整合性レベルが本トランザクションに関連付けられたセマンティクスを備え、それにより並行トランザクションにおいて共存できる。
図4は、本願の実施例により提供されるトランザクション処理方法のフローチャートである。図4に参照されるように、該実施例はデータベースシステムに適用され、該データベースシステムはスタンドアロンシステム又は分散型システムを含み、本願の実施例はスタンドアロンシステムのノード機器を例として説明を行い、該実施例は下記内容を含む。
401:ノード機器は目標トランザクションの読み書き操作に応答して、該目標トランザクションの読み取り集合と書き込み集合を取得する。
ここで、目標トランザクションはグローバルトランザクション又は局所トランザクションであり、本願の実施例は目標トランザクションが局所トランザクションであることを例として説明を行う。
いくつかの実施例では、ノード機器が端末とセッション(Session)を確立し、該セッションは該目標トランザクションを処理することに用いられ、ノード機器は端末が送信した目標トランザクションの実行要求を受信し、該実行要求に応答して、目標トランザクションの読み書き操作を実行し、且つ該目標トランザクションの読み取り集合と書き込み集合を取得する。ここで、該読み取り集合は目標トランザクションに対して可視である読み取り対象のデータ項目を記憶することに用いられる。換言すれば、目標トランザクションの読み取り操作に関する可視データ項目は目標トランザクションの読み取り集合を構成し、該書き込み集合は該目標トランザクションの書き込み対象のデータ項目を記憶することに用いられる。換言すれば、目標トランザクションの書き込み操作に関するデータ項目は目標トランザクションの書き込み集合を構成する。
選択可能に、端末はユーザーと対応する任意の1つの電子機器であり、スマートフォン、タブレットコンピュータ、ノートパソコン、デスクトップコンピュータ、スマートスピーカ又はスマートウォッチのうちの少なくとも1つを含むがこれらに限定されず、本願の実施例は端末のタイプに対して具体的な限定を行わない。
選択可能に、端末上にアプリケーションクライアント端末がインストールされ、該アプリケーションクライアント端末はデータサービスを提供できる任意の1つのクライアント端末である。例えば、該アプリケーションクライアント端末は支払いアプリケーションクライアント端末、フードデリバリーアプリケーションクライアント端末、タクシー用アプリケーションクライアント端末又はソーシャルアプリケーションクライアント端末のうちの少なくとも1つを含むが、本願の実施例はアプリケーションクライアント端末のタイプに対して具体的な限定を行わない。
いくつかの実施例では、セッション確立の段階で、端末上のアプリケーションクライアント端末は下記方式でノード機器とセッションを確立する。アプリケーションクライアント端末は目標トランザクションTの実行要求を発し、メタ情報システムは現在のクライアント端末が既にノード機器とセッションを確立したか否かを検査し、セッションを既に確立した場合、現在の既に確立されたセッションを多重化し、セッションを確立していない場合、該ノード機器は該アプリケーションクライアント端末とセッション関係を確立する。
402:ノード機器は該目標トランザクションの検証命令に応答して、該目標トランザクションの論理的な開始時刻と論理的なコミット時刻を決定する。
いくつかの実施例では、目標トランザクションの実行が終了した後に、目標トランザクションの検証段階に入り、ノード機器は目標トランザクションの検証命令に応答して、目標トランザクションのトランザクション状態リスト中から論理的な開始時刻Btsと論理的なコミット時刻Etsを読み取る。前述した実施環境において各トランザクションが2つのグローバルクロックに関することを既に紹介しており、すなわち論理的な開始時刻Btsと論理的なコミット時刻Etsはいずれもグローバルタイムスタンプに属し、グローバルタイムスタンプ生成クラスターによってグローバルタイムスタンプを生成することができる。グローバルタイムスタンプは物理クロック、論理クロック、ハイブリッド物理クロック又はハイブリッド論理クロックのうちの少なくとも1つを採用するが、本願の実施例はグローバルタイムスタンプのタイプに対して具体的な限定を行わない。ここで、該論理的な開始時刻Btsは目標トランザクションが論理的に実行を開始するグローバルクロックを特徴付け、論理的なコミット時刻Etsは目標トランザクションが論理的にコミットを開始するグローバルクロックを特徴付け、目標トランザクションの初期化段階において、論理的な開始時刻Btsを0に初期化し、論理的なコミット時刻Etsを+∞に初期化する。目標トランザクションの実行に伴って、協調ノード機器、データノード機器等はいずれも論理的な開始時刻Bts又は論理的なコミット時刻Etsに対して値を改めて割り当てる(すなわち、トランザクション状態リストにおいてタイムスタンプの値を修正する)可能性を生じ、それにより、最終的に、検証命令によりトリガーされた検証段階において、論理的な開始時刻Btsと論理的なコミット時刻Etsは初期値ではなくなる。
いくつかの実施例では、該検証段階において、ノード機器は目標トランザクションの論理的な開始時刻Btsと論理的なコミット時刻Etsが目標トランザクションの並行整合性レベルを満たすか否かを検証する必要がある。ここで、並行整合性レベルとは、トランザクションを単位とし、且つ並行トランザクションをサポートする整合性隔離レベルを指し、並行整合性レベルはデータベースにおけるすべてのタイプのトランザクションのデータ項目上での挙動に対してレベル区分を行い、同一のデータベースシステム内において、異なるトランザクションが異なる並行整合性レベルを満たすことを許可し、以下、各レベルの検証過程に対して説明を行う。
i)直列化
ノード機器は、該並行整合性レベルが直列化の場合に、該目標トランザクションTの並行トランザクションTを取得する。該目標トランザクションの論理的なコミット時刻が該並行トランザクションの論理的な開始時刻よりも小さく(T.ets<T.bts)、又は該目標トランザクションの論理的な開始時刻が該並行トランザクションの論理的なコミット時刻よりも大きい(T.ets<Ti.bts)場合に、該目標トランザクションが属するセッションの最新の完了済トランザクションのタイムスタンプNewtsを取得する。該目標トランザクションの論理的なコミット時刻が該最新の完了済トランザクションのタイムスタンプ以上である(T.ets≦Newts)場合に、該並行整合性レベルにマッチングすると判定する。
直列化レベルにおいて、任意の2つのトランザクションは全て直列にキューイングして実行されることを満たす必要があるため、ノード機器は目標トランザクションのすべての並行トランザクション(ゼロ、1つ又は複数である可能性がある)を問い合わせる必要がある。並行トランザクションがなければ、直接検証をパスし、ステップ403を実行し、少なくとも1つの並行トランザクションが存在すれば、目標トランザクションと各並行トランザクションとの間がいずれも直列に実行できることを検証する必要がある。論理的な開始時刻と論理的なコミット時刻は1つの論理的な時間区間を構成できるため、直列に実行できるか否かを検証することは、目標トランザクションと各並行トランザクションの論理的な時間区間との間に共通集合が存在するか否かを検証することに相当する。目標トランザクションとすべての並行トランザクションの論理的な時間区間との間にいずれも共通集合が存在しなければ、検証をパスし、ステップ403を実行し、目標トランザクションと任意の1つの並行トランザクションの論理的な時間区間との間に共通集合が存在すれば、目標トランザクションをロールバックする。
ii)厳密化
ノード機器は、該並行整合性レベルが厳密化であり、且つ該目標トランザクションが書き込みトランザクションである場合に、該目標トランザクションTの並行書き込みトランザクションTを取得する。該目標トランザクションの論理的なコミット時刻が該並行書き込みトランザクションの論理的な開始時刻よりも小さい(T.ets<T.bts)、又は該目標トランザクションの論理的な開始時刻が該並行書き込みトランザクションの論理的なコミット時刻よりも大きい(T.ets<T.bts)場合に、該並行書き込みトランザクションの並行読み取り専用トランザクションTを取得する。該並行読み取り専用トランザクションの論理的な開始時刻が該並行書き込みトランザクションの論理的な開始時刻よりも大きい(T.bts<T.bts)場合に、該目標トランザクションが属するセッションの最新の完了済トランザクションのタイムスタンプNewtsを取得する。該目標トランザクションの論理的なコミット時刻が該最新の完了済トランザクションのタイムスタンプ以上である(T.ets≦Newts)場合に、該並行整合性レベルにマッチングすると判定する。
厳密化レベルにおいて、任意の2つの並行した書き込みトランザクションは直列実行を保持する必要があるため、目標トランザクションが書き込みトランザクションであれば、目標トランザクションのすべての並行書き込みトランザクションを問い合わせ、且つ2つの並行した書き込みトランザクション間が直列実行を保持することを検証するだけでよい。この他、さらにその並行書き込みトランザクションの並行読み取り専用トランザクションによって、目標トランザクションの間接並行トランザクションを取得する必要があり、それにより、クロック検証に基づき将来読み取り異常の発生を回避することができる。
iii)線形化
ノード機器は、該並行整合性レベルが線形化であり、且つ該目標トランザクションが書き込みトランザクションである場合に、該目標トランザクションTの並行書き込みトランザクションTを取得する。該目標トランザクションと該並行書き込みトランザクションが直列化可能の検証をパスした場合に、該並行書き込みトランザクションの並行読み取り専用トランザクションTを取得し、該並行読み取り専用トランザクションの論理的な開始時刻が該並行書き込みトランザクションの論理的な開始時刻よりも大きい(T.bts<T.bts)場合に、該目標トランザクションが属するセッションの最新の完了済トランザクションのタイムスタンプNewtsを取得する。該目標トランザクションの論理的なコミット時刻が該最新の完了済トランザクションのタイムスタンプ以上である(T.ets≦Newts)場合に、該並行整合性レベルにマッチングすると判定する。
線形化レベルにおいて、任意の2つの書き込みトランザクション間が直列実行を必要としないが、並行書き込みトランザクション間が直列化可能を検証する必要があるため、目標トランザクションが書き込みトランザクションであるときに、目標トランザクションが並行書き込みトランザクションと直列化可能を満たすか否かを検証するだけでよい。その他のステップは厳密化レベルに類似しており、ここで繰り返して説明しない。
iv)順序化
ノード機器は、該並行整合性レベルが順序化である場合に、該目標トランザクションTの並行トランザクションTを取得する。該目標トランザクションと該並行トランザクションが直列化可能の検証をパスした場合に、該目標トランザクションと同一のセッションに属する第1トランザクションTを決定し、該目標トランザクションの論理的なコミット時刻が該第1トランザクションの論理的な開始時刻よりも小さい(T.ets<T.bts)場合に、該セッションの最新の完了済トランザクションのタイムスタンプNewtsを取得する。該目標トランザクションの論理的なコミット時刻が該最新の完了済トランザクションのタイムスタンプ以上である(T.ets≦Newts)場合に、該並行整合性レベルにマッチングすると判定し、ここで、該目標トランザクションが該第1トランザクションと因果関係を有する場合に、該因果関係における結果トランザクションの論理的な開始時刻を更新し、更新された後の結果トランザクションの論理的な開始時刻を原因トランザクションの論理的なコミット時刻よりも大きくする。
順序化レベルにおいて、任意のタイプのトランザクションは全て並行又は並列実行可能であるため、並行トランザクションに対して直列化可能の検証を行うだけでよいが、順序化レベルにおいて、さらに同一のセッション内におけるトランザクションが逓増を保持することを付加的に保証する必要があり、すなわち、半順序関係を考慮した直列化可能を実現できる。
v)直列化可能
ノード機器は、該並行整合性レベルが直列化可能である場合に、該目標トランザクションTの並行トランザクションTを取得する。該目標トランザクションと該並行トランザクションが直列化可能の検証をパスした場合に、該目標トランザクションと同一のセッションに属する第1トランザクションTを決定し、該目標トランザクションの論理的なコミット時刻が該第1トランザクションの論理的な開始時刻よりも小さく、且つ該論理的な開始時刻が該論理的なコミット時刻以下である(T.ets<T.bts、且つT.bts<T.ets)場合に、該並行整合性レベルにマッチングすると判定する。
直列化可能レベルは順序化レベルと同様であるが、半順序関係は考慮せず、ここで繰り返して説明しない。
vi)因果リピータブルリード
ノード機器は、該並行整合性レベルが因果リピータブルリードである場合に、該目標トランザクションTと因果関係を有し、且つ該目標トランザクションを因とする結果トランザクションTを取得し、該結果トランザクションの論理的な開始時刻を更新し、更新された後の結果トランザクションの論理的な開始時刻を該目標トランザクションの論理的なコミット時刻よりも大きくし(T.ets<T.bts)、該並行整合性レベルにマッチングすると判定する。
リピータブルリードレベルにおいては、直列化可能を検証する必要がないが、因果関係を有する任意の2つのトランザクションを順序付けすることを保証する必要があり、従って目標トランザクションのクロックに基づいて、結果トランザクションのクロックに対して調整を行う必要があり、それにより読み取り半順序異常が存在しないことを確保する。
vii)リピータブルリード、リード・コミッテッド及びリード・アンコミッテッド
ノード機器は、該並行整合性レベルがリピータブルリード、リード・コミッテッド又はリード・アンコミッテッド読み書きである場合に、該並行整合性レベルにマッチングすると判定する。
リピータブルリード、リード・コミッテッド及びリード・アンコミッテッドにおいては、半順序関係を考慮する必要がなく、直列化可能の検証を行う必要もないため、下記ステップ403を直接実行すればよい。
403:ノード機器は、該論理的な開始時刻と該論理的なコミット時刻が該目標トランザクションの並行整合性レベルにマッチングすることに応答して、該書き込み集合に基づき該論理的な開始時刻を更新する。
上記ステップ403は、すなわち、ノード機器が、該論理的な開始時刻と該論理的なコミット時刻が該目標トランザクションの並行整合性レベルにマッチングする場合に、該書き込み集合に基づき該論理的な開始時刻を更新することである。
いくつかの実施例では、ノード機器は、該書き込み集合における少なくとも1つのデータ項目の少なくとも1つの書き込み対象のトランザクション情報WTを取得する。該少なくとも1つの書き込み対象のトランザクション情報WTは、それぞれ該少なくとも1つのデータ項目を現在修正しているトランザクションを識別することに用いられる。該少なくとも1つの書き込み対象のトランザクション情報WTがいずれも空であることに応答して、該論理的な開始時刻を調整し、該少なくとも1つの書き込み対象のトランザクション情報WTのうちのいずれかの書き込み対象のトランザクション情報WTが空でないことに応答して、該目標トランザクションをロールバックする。
言い換えれば、ノード機器は、該書き込み集合における各データ項目の書き込み対象のトランザクション情報WTを取得し、該書き込み対象のトランザクション情報WTは該データ項目を現在修正しているトランザクションを識別することに用いられる。各データ項目の書き込み対象のトランザクション情報WTがいずれも空である場合に、該論理的な開始時刻を更新し、データ項目の書き込み対象のトランザクション情報WTのいずれかが空でない場合に、該目標トランザクションをロールバックする。
いくつかの実施例では、すべてのデータ項目の書き込み対象のトランザクション情報WTがいずれも空であるときに、ノード機器は論理的な開始時刻に対して以下の更新操作を行う。該少なくとも1つのデータ項目のうちの各データ項目に対して、該データ項目の書き込み対象のトランザクション情報を該目標トランザクションのトランザクション識別子として取得し、該論理的な開始時刻を該データ項目の最大の読み取りトランザクションタイムスタンプよりも大きく更新する。言い換えれば、該論理的な開始時刻を更新し、更新された後の論理的な開始時刻を該データ項目の最大の読み取りトランザクションタイムスタンプよりも大きくする。換言すれば、該データ項目の最大の読み取りトランザクションタイムスタンプよりも大きいクロック値を使用して該論理的な開始時刻に対して値を割り当て、該最大の読み取りトランザクションタイムスタンプは、該データ項目を読み取ったトランザクションの論理的なコミット時刻のうちの最大値を示すことに用いられ、更新された後の論理的な開始時刻と該論理的なコミット時刻が該目標トランザクションの並行整合性レベルにマッチングする場合に、アクティブトランザクション集合に基づき該論理的な開始時刻を調整する。言い換えれば、アクティブトランザクション集合に基づき、既に1回更新された論理的な開始時刻に対して再び更新を行う。換言すれば、既に1回値を割り当てられた論理的な開始時刻に対して新しい値を再び割り当て、該アクティブトランザクション集合は既に実行が開始されたがコミットが完了していないトランザクションを識別することに用いられ、更新された後の論理的な開始時刻と該論理的なコミット時刻が該目標トランザクションの並行整合性レベルにマッチングしない場合に、該目標トランザクションをロールバックする。
いくつかの実施例では、書き込み集合における各々のデータ項目yに対して、ノード機器はデータ項目yの書き込み対象のトランザクション情報WTが空であるか否かを確認する。データ項目yの書き込み対象のトランザクション情報WTが空でなければ、データ項目yを現在修正しているその他のトランザクションが存在し、且つ該その他のトランザクションが既に検証段階に入ったことを意味する。このときに、目標トランザクションTiをロールバックし書き込み・書き込み競合を解消し、そうでない場合、データ項目yの書き込み対象のトランザクション情報WTが空であれば、先ずデータ項目yの書き込み対象のトランザクション情報WTに対してロックをかけ、その他の並行トランザクションがデータ項目yを並行修正することを防止し、例えば、データ項目yに対して推奨ロックをかける。このように、データ項目yの書き込み対象のトランザクション情報WTに対する修正操作のみを排他的にすることができ、データ項目yに対する読み取り専用操作が正常に実行することができる。
いくつかの実施例では、ロックをかけることが終了した後に、ノード機器はデータ項目yの書き込み対象のトランザクション情報WTを目標トランザクションTのトランザクション識別子T.TIDに更新する、言い換えれば、目標トランザクションTのトランザクション識別子T.TIDの値をデータ項目yの書き込み対象のトランザクション情報WTに割り当て、続いて、T.btsをデータ項目yの最大の読み取りトランザクションタイムスタンプRtsよりも大きく更新する。言い換えれば、目標トランザクションの論理的な開始時刻T.btsを更新し、更新された後の論理的な開始時刻をデータ項目yの最大の読み取りトランザクションタイムスタンプRtsよりも大きくする。換言すれば、データ項目yの最大の読み取りトランザクションタイムスタンプRtsよりも大きいクロック値を使用して該論理的な開始時刻に対して値を割り当て、ここで、Rtsは該データ項目yを読み取ったすべてのトランザクションの論理的なコミット時刻のうちの最大値を記録し、例えば、T.bts=max(T.bts,y.cts+1)にし、ここで、Ctsとは該データ項目yを生成するトランザクションの最終的な論理的なコミット時刻を指す。上記の過程においては、論理的な開始時刻を調整することにより読み書き競合を解消することができる。
いくつかの実施例では、ノード機器はロック無しのCAS(Compare And Swap、比較と交換)技術を使用してデータ項目yの書き込み対象のトランザクション情報WTに対して値を割り当て、システム性能を向上させる。
いくつかの実施例では、該アクティブトランザクション集合は、第1トランザクション集合及び第2トランザクション集合を含み、該第1トランザクション集合はコミット中状態又は検証パス状態にあるトランザクションを識別することに用いられ、該第2トランザクション集合は動作中状態にあるトランザクションを識別することに用いられる。これを基礎として、ノード機器は、アクティブトランザクション集合に基づき該論理的な開始時刻を更新する際に、下記方式を利用する。該論理的な開始時刻を該第1トランザクション集合における最大の論理的なコミット時刻よりも大きく更新し、言い換えれば、該論理的な開始時刻を更新し、更新された後の論理的な開始時刻を該第1トランザクション集合における最大の論理的なコミット時刻よりも大きくする。換言すれば、該第1トランザクション集合における最大の論理的なコミット時刻よりも大きいクロック値を使用して該論理的な開始時刻に対して値を割り当て、更新された後の論理的な開始時刻が該論理的なコミット時刻以下である場合に、該第2トランザクション集合におけるトランザクションの論理的なコミット時刻を該更新された後の論理的な開始時刻よりも小さく調整する。言い換えれば、該第2トランザクション集合におけるトランザクションの論理的なコミット時刻を更新し、更新された後の該トランザクションの論理的なコミット時刻を該更新された後の目標トランザクションの論理的な開始時刻よりも小さくする。換言すれば、該更新された後の目標トランザクションの論理的な開始時刻よりも小さいクロック値を使用して該第2トランザクション集合におけるトランザクションの論理的なコミット時刻に対して値を割り当て、該更新された後の該論理的な開始時刻が該論理的なコミット時刻よりも大きい場合に、該目標トランザクションをロールバックする。
いくつかの実施例では、ノード機器は既にコミット中状態又は検証パス状態にあるすべての第1トランザクション集合Tを取得し、目標トランザクションTの論理的な開始時刻T.btsを調整し、それをTにおける各トランザクションのT.etsよりも大きくし、すなわち、T.bts=max(T.bts,T.ets+1)にする。続いて、ノード機器は動作中状態にあるすべての第2トランザクション集合Tを取得し、Tにおける各トランザクションのT.etsを調整し、それを目標トランザクションTの論理的な開始時刻T.btsよりも小さくし、すなわち、T.ets=min(T.ets,T.bts-1)にする。
上記過程において、第1トランザクション集合により、本トランザクションの書き込みと、既に完了したその他のトランザクションで過去に発生した読み取りとの間の読み書き競合を解消することができ、本トランザクションの書き込み操作の発生が読み取りを既に完了したトランザクションの読み取り操作の後に繰り下げられる。第2トランザクション集合により、本トランザクションの書き込みと、現在行っているその他のトランザクションの読み取りとの間の読み書き競合を解消することができ、その他のトランザクションは本トランザクションが書き込んだデータを読み取ることができないようにする。
いくつかの実施例では、該第2トランザクション集合における任意の1つのトランザクションの論理的な開始時刻が、更新された後の該論理的なコミット時刻よりも大きい場合に、該トランザクションをロールバックする。つまり、目標トランザクションを検証する際に、調整後の第2トランザクション集合において論理的な時間区間が正当ではないトランザクションを検出した場合、第2トランザクション集合におけるこのトランザクションを同時に直ちにロールバックし、システム性能をさらに高めることができる。
404:ノード機器は更新された後の論理的な開始時刻が該論理的なコミット時刻以下であることに応答して、該目標トランザクションをコミットする。
上記ステップ404は、すなわち、ノード機器が、更新された後の論理的な開始時刻が該論理的なコミット時刻以下である場合に、該目標トランザクションをコミットすることである。
いくつかの実施例では、目標トランザクションのコミット段階で、ノード機器は目標トランザクションの書き込み集合におけるデータをディスクに書き込み、且つデータベースにおいて永続化し、読み取り集合における各データ項目xに対して、データ項目xの最大の読み取りトランザクションタイムスタンプRtsを修正し、それをT.cts以上にし、すなわち、x.rts=max(x.rts,T.cts)にする。ここで、T.ctsとは、複数回の調整(又は値割り当て、更新と称される)を経た後に最終的にコミットする時の目標トランザクションの論理的なコミット時刻を指す。次に、データ項目xのアクティブトランザクション集合RTlist(x)中からそれ自体のトランザクションTを削除し、書き込み集合における各データ項目yに対して、yの新しいバージョンのwtsとrtsを更新し、先ず新しいバージョンのwts=T.ctsにし、次に、新しいバージョンのrts=max(x.rtx,T.cts)にし、新しいバージョンをデータベースにおいて永続化し、且つFlag(1つのパラメータ)を修正する。続いて、データ項目yのアクティブトランザクション集合RTlist(y)をクリアし、データ項目yの書き込み対象のトランザクション情報WTをクリアする。ここでwtsはyの新しいバージョンの作成タイムスタンプであり、rtsはyの新しいバージョンの最大の読み取りトランザクションタイムスタンプである。
いくつかの実施例では、ノード機器は目標トランザクションTの読み取り集合と書き込み集合をクリアし、且つLocalTS(ローカルトランザクション状態リスト)におけるTのBts=T.ctsを更新し、且つ目標トランザクションTのトランザクション状態をコミット済み状態(Committed)にする。
上記すべての選択可能な技術的解決手段は、任意の組み合わせを採用して本開示の選択可能な実施例を形成することができるが、ここで1つずつ繰り返して説明しない。
本願の実施例により提供される方法は、目標トランザクションの実行段階で、目標トランザクションの読み書き集合を取得し、検証段階で、目標トランザクションの論理的な開始時刻と論理的なコミット時刻に基づき、目標トランザクションがそれ自体の並行整合性レベルにマッチングするか否かを検証し、且つ所定の戦略に基づき論理的な開始時刻を動的に更新する。最終的に更新された後の論理的な開始時刻と論理的なコミット時刻が正当である場合に、それ自体の並行整合性レベルに許可されないデータ異常が発生することがないようにし、さらに目標トランザクションをコミットし、システム全体内の異なるトランザクションを異なる並行整合性レベルに対応させることができ、データ異常検出の正確度を大幅に高め、トランザクション処理効率及びデータベースシステムの性能を向上させる。
上記実施例において、スタンドアロンシステムのみを例として並行制御アクセスアルゴリズムに対していくつかの基本的な紹介を行う。本願の実施例では、1種の非集中化された分散型システムを例とし、各種の並行レベルの並行アクセス制御アルゴリズムを詳述する。
先ず、非集中化アルゴリズムを紹介する。
トランザクション処理の過程において、集中化されたコンポーネントは2種類を含み、1種はクロック生成器であり、もう1種はトランザクションコーディネータである。
クロック生成器:すなわち前述したグローバルクロックであり、すなわちグローバルタイムスタンプ生成クラスターである。対応的に、局所クロックは一種の非集中化されたコンポーネントである。
トランザクションコーディネータ:トランザクション検証段階で、分散型トランザクションがトランザクション整合性にマッチングするか否かに対して直列化可能又はデータ異常無しの検証を行う必要があり、従って1つのトランザクションコーディネータ、すなわち、協調ノード機器、協調者に依存する。
非集中化のアルゴリズムとは、集中化されたコンポーネントにできるだけ依存せずにアルゴリズム過程の推し進めを実現することを指す。
表2は、並行整合性モデルに基づいた非集中化アルゴリズムの特徴及び実現を示し、表2に示される。
非集中化のアルゴリズム過程は、主に以下の4つの段階に分けられる。
段階1:トランザクションがBtsの取得を開始するトランザクションスナップショット確立段階であり、強整合性レベル、中間型整合性レベルに対して、すべてグローバルの観点でデータ読み取りの視点を確立する必要があり、従って目標トランザクションのBtsはグローバルクロックから取得される必要がある。選択可能に、上記記実施環境に関するグローバルタイムスタンプ生成クラスターのようなグローバルクロックは、1つの集中化されたコンポーネントであり、選択可能に、グローバルトランザクションはTruetimeメカニズムを採用して1つの非集中化されたコンポーネントを構成する。
段階2:トランザクションがデータ項目に対して読み書きを実行するトランザクションのセマンティクス実現操作段階であり、集中化するか否かの作業に関しない。
段階3:トランザクションコミット前のトランザクション正当性の検証段階であり、この点で、非集中化の検証方式を用い、TO(Timestamp Ordering、タイムスタンプソート)アルゴリズムのDTA(Dynamic Timestamp Allocation、動的タイムスタンプ分配)アルゴリズムを利用して、非集中化されたトランザクション検証技術を実現する。
段階4:トランザクションコミット又はロールバック操作の仕上げ段階であり、トランザクションのコミット操作は、強整合性レベル、中間型整合性レベルに対して、全てグローバルの観点でデータ項目上にトランザクションのグローバルコミットタイムスタンプを確立する必要がある。その他の整合性レベルは、局所タイムスタンプの取得のみを必要とする(分散型トランザクションに対して、トランザクションコーディネータから局所タイムスタンプを取得し、局所トランザクションに対して、局所ノードから局所タイムスタンプを取得する)。
以下、上記非集中化アルゴリズムに関する4つの段階に応じてそれぞれ分散型システム内における並行整合性モデルに基づいたトランザクション処理プロセスを検討する。
(1)トランザクションがBtsの取得を開始するトランザクションスナップショット確立段階
目標トランザクションTはクライアント端末Clientによって協調ノード機器(すなわち、コーディネータ)上に送信される。目標トランザクションTは協調ノード機器において初期化を完了し、初期化は以下の幾つかのステップを含む。
先ず、協調ノード機器は目標トランザクションTに1つのグローバルで一意的なトランザクション識別子TID(すなわち、トランザクション番号)を分配する。該TIDによってトランザクションがある特定のセッションに由来することを決定することを示し、分散型システムにおいて、この点によりあるいくつかのトランザクションが同一のセッションに由来するトランザクションであるか否かを識別する(すなわち半順序関係の状況を識別する)。
いくつかの実施例では、「TID」を利用して「トランザクションが同一のセッションに由来するか否か」を示す方法は非常に多くあり、例えば、1つの128bitのTIDの前96bitでセッションを示し、又はセッションを1つの中心ノードに集中的に登録し、次に中心ノードにおける一意的な番号等を統一する。
次に、協調ノード機器はトランザクション状態リストにおいて目標トランザクションTの状態を記録し、例えば、目標トランザクションTのStatus状態をGrunningにし、BtsとEtsをそれぞれ0と+∞に初期化する。
(2)トランザクションがデータ項目に対して読み書きを実行するトランザクションのセマンティクス実現操作段階
目標トランザクションTは協調ノード機器上に初期化を完了した後、その実行段階を開始する。
読み取り段階で、目標トランザクションTは実行論理に応じて所要のデータ項目を読み取り、且つ読み取ったデータ項目を、目標トランザクションTのローカル内部メモリ、すなわち協調ノード機器のローカル内部メモリに更新して書き込む。目標トランザクションTがデータ項目xを読み取る必要があるときに、以下のステップを実行する。
2.1:目標トランザクションTの協調ノード機器は、データ項目xが所在するデータノード機器RM(リソースマネージャ、トランザクションの関与者、すなわちサブトランザクションの実行者)にデータ項目xの読み取りを要求するデータ読み取り要求メッセージReadRequestMessage(rrqmと略称される)を送信する必要があり、rrqmの4つのフィールドの値はそれぞれ以下の2.1.1~2.1.4のように示される。
2.1.1:TIDであり、目標トランザクションTのTIDである。
2.1.2:Btsであり、直列化可能レベルの上のレベルであれば、協調ノード機器がグローバルクロックからタイムスタンプ値を取得し、そうでない場合、目標トランザクションTの協調ノード機器上でのBtsであり、直列化可能及びより弱いレベルについて言えば、協調ノード機器上のHLC(ハイブリッド論理クロック)が決定した時間値である。いくつかの実施例では、直列化可能及びより弱いレベルがグローバルクロックを使用して実現されるが、メッセージ同期効率の要因を考慮して、本願の実施例はHLCクロックを採用する方式を例として説明する。しかし、これは本願の実施例が直列化可能及びより弱いレベルに対してグローバルクロックの使用を完全に否定することを表すものではない。
2.1.3:Etsであり、クロック取得方式はBtsに類似するため、ここで繰り返して説明しない。
2.1.4:ReadPlanであり、目標トランザクションTがデータ項目xを読み取る問い合わせ計画である。
2.2:データ項目xが所在するデータノード機器RMは、メッセージrrqmを受信した後に、先後順序に応じて以下のステップを実行する。
2.2.1:RMは、ローカルのLocalTS(ローカルトランザクション状態テーブル)において目標トランザクションTの情報が含まれるか否かを検査し、LocalTSが目標トランザクションTの情報を含まなければ、その上に目標トランザクションTの情報を初期化する。すなわち、LocalTSにおいて1つの記録を挿入し、値がそれぞれrrqm.TID、rrqm.Bts、rrqm.Ets及びrrqm.Runningであり、LocalTSが目標トランザクションTの情報を含む。すなわち、目標トランザクションTがデータ項目xを読み取る前に、さらに該RM上のその他のデータ項目にアクセスしたことがあれば、目標トランザクションTの情報を更新し、T.Bts=max(T.Bts,rrqm.Bts)、T.Ets=min(T.Ets,rrqm.Ets)にする。すなわち、LocalTSにおける目標トランザクションTのBtsを既存値とrrqmにおけるキャリーオーバー値との間の最大値に更新し、Etsを既存値とrrqmにおけるキャリーオーバー値との間の最小値に更新する。
2.2.2:RMはT.BtsがT.Ets以下であるか否かを検査し、T.Bts≦T.Etsであれば、データ項目xの読み取りを続け、そうでない場合、すなわちT.Bts>T.Etsの場合、LocalTSにおける目標トランザクションTの状態をAbortedに更新する。すなわちT.Status=Abortedであり、且つTの協調ノード機器にロールバックAbortメッセージを返信し、すなわち、目標トランザクションTのhost RM(協調ノード機器)に読み取り要求フィードバックメッセージ rrpmを送信し、読み取り要求フィードバックメッセージ rrpmにおけるIsAbortフィールドを1にし、すなわちrrpm.IsAbort=1であり、目標トランザクションTをロールバックすることを示す。
2.2.3:RMは目標トランザクションTの[Bts,Ets]という論理的な時間区間に応じて、データ項目xのバージョン状態集合中から適切な可視バージョンを見つけ、すなわち目標トランザクションTに対して可視である目標データ項目を問い合わせる。データ項目xの目標データ項目を探すには、先ずコミットした最新のデータバージョン(最新バージョンと略称される)から検査を開始すべきである。T.etsが最新バージョンのwtsよりも大きければ、該最新バージョンが目標データ項目である。そうでない場合、目標データ項目ではなく、最新バージョンの前の1つのバージョンを検索する必要があり、このように類推しつつ、T.ets>wtsを満たす1番目のデータバージョンx.vを見つけるまで停止し、データバージョンx.vを目標データ項目として取得し、ここでwtsがx.vの作成タイムスタンプである。
2.2.4:RMは目標データ項目x.vを見つけた後、目標トランザクションTのBtsを修正し、T.Bts>x.v.wtsにする必要があり、それにより書き読み異常を解消し、また、見つけたバージョンがxの最新バージョンであれば、以下のいくつかのステップの操作を実行する必要がある。先ず、x.vに対応する書き込み対象のトランザクション情報WT(WTは現在修正しているx、且つ検証をパスしたトランザクションのトランザクション識別子を記録する)が空であるか否かを検査し、x.vに対応するWTが空でなければ(値がTID1であり、TID1に対応するトランザクションがTであると仮定する)、目標トランザクションTのEtsを調整し、それがT.Ets<T.Btsを満たすようにし、それにより読み書き競合を解消する。次に、目標トランザクションTのトランザクション識別子T.TIDをx.vのアクティブトランザクション集合RTlistに追加し、最終的に、xを目標トランザクションTのローカル読み取り集合に追加する。
2.2.5:RMは目標トランザクションTの協調ノード機器に読み取り要求フィードバックメッセージReadReplyMessage(rrpmと略称される)を返信する。ここでrrpmのBtsとEtsはそれぞれ現在のRM上のトランザクションTの論理タイムスタンプの上限及び下限を記録し、Valueは読み取られるデータ項目の値を記録する。
2.3:目標トランザクションTの協調ノード機器はRMの読み取り要求フィードバックメッセージrrpmを受信した後に以下のような処理を順に行う。
2.3.1:協調ノード機器は受信されたメッセージがAbortメッセージであるか否かを検査する。すなわちrrpm.IsAbortsが1に等しいか否かを検査し、そうである場合、rrpm.IsAbort=1であり、グローバルロールバック段階に入り、そうでない場合、rrpm.IsAbort≠1であり、ステップ2.3.2を実行し続ける。
2.3.2:協調ノード機器はトランザクション状態リストにおける目標トランザクションTの状態を更新し、目標トランザクションTのT.Bts=max(T.Bts,rrpm.Bts)、T.Ets=min(T.Ets,rrpm.Ets)を更新し、すなわち、目標トランザクションTのBtsが既存値とrrpmにおけるキャリーオーバー値との間の最大値に更新され、Etsを既存値とrrpmにおけるキャリーオーバー値との間の最小値に更新する。
2.3.3:協調ノード機器はトランザクション状態リストにおけるT.BtsがT.Etsよりも大きいか否かを検査し、そうである場合、T.Bts>T.Etsであり、グローバルロールバック段階に入り、そうでない場合、T.Bts≦T.Etsであり、トランザクションの実行を続ける。
説明する必要がある点として、協調ノード機器はトランザクションTをロールバックすることを決めると、トランザクション状態リストにおける目標トランザクションTの状態をGabortingに修正し、関連するサブノード(目標トランザクションTに関連するすべてのRM)に局所ロールバックを実行することを通知する必要がある。
分析から明らかなように、目標トランザクションTの読み取り段階で、通信は主に目標トランザクションTの協調ノード機器と関連するサブRMとの間に発生する。目標トランザクションTはデータを読み取るのに1回成功するごとに2回の通信を必要とし、目標トランザクションTの協調ノード機器はデータ読み取り要求情報rrqmを関連するサブRM上に送信し、関連するサブRMは読み取り要求フィードバック情報rrpmを協調ノード機器上に送信する。従って、読み取り段階は最大で2n回の通信を行い、最大通信量はn×(要求メッセージrrqmの大きさ+応答メッセージrrpmの大きさ)であり、ここでnは遠隔読み取りの回数である。
いくつかの実施例では、目標トランザクションTがある関連するサブRMの複数のデータ項目を必要とするときに、これらのデータ項目のデータ読み取り要求情報rrqmをパケット化して送信し、これらのデータを一括して読み取ることが可能になり、それにより通信回数を節約することができる。
目標トランザクションTが読み取り段階で所要のデータの読み取りを終了し、且つローカル内部メモリに更新して書き込んだ後に検証段階に入る。
(3)トランザクションコミッ前のトランザクション正当性の検証段階
検証段階で、目標トランザクションTはそれ自体とその他のトランザクションとの間に競合が存在するか否かを検証し、且つ検証段階の結果に基づいて最終的に目標トランザクションTをコミットするかロールバックするかを決める。目標トランザクションTの検証過程は以下の内容を含む。
3.1:目標トランザクションTの協調ノード機器はトランザクション状態リストにおける目標トランザクションTの状態をGvalidatingに修正し、且つ目標トランザクションTに関する各関連するサブRMに検証要求メッセージ(ValidateRequestMessage、vrmと略称される)を送信し、vrmにおけるBtsとEtsはそれぞれ目標トランザクションTのトランザクション状態リストにおけるトランザクション論理タイムスタンプの上限及び下限を記録する。選択可能に、検証要求メッセージvrmとともにRMに送信されるものはさらにRMのローカル書き込み集合を含む。
3.2:目標トランザクションTに関する各関連するサブRMは検証要求メッセージvrmを受信した後、ローカル検証操作を実行し、ローカル検証操作は以下のステップを順に実行する必要がある。
3.2.1:RMはLocalTSにおける目標トランザクションTのT.Bts=max(T.Bts,vrm.Bts)、T.Ets=min(T.Ets,vrm.Ets)を更新し、すなわち、目標トランザクションTのBtsを既存値とvrmにおけるキャリーオーバー値との間の最大値に更新し、Etsを既存値とvrmにおけるキャリーオーバー値との間の最小値に更新する。注意する必要がある点として、ここでは、更新されるものはローカルトランザクション状態テーブルにおけるトランザクションの論理タイムスタンプ情報であり、トランザクション並行アクセス制御に用いられ、すなわち、トランザクションの整合性を保証することに用いられる。
3.2.2:RMは各レベルの並行整合性レベルの定義及びデータベースシステムの現在のpmodel値の設定状況に基づいて、各種の並行整合性レベル下での目標トランザクションTのbtsとets値に対して検査を行う。いくつかの実施例では、並行整合性レベルが直列化可能よりも強ければ、トランザクションのbtsが本セッションのnewtsよりも小さくてはならないことを検証する必要があり、小さければ、目標トランザクションTをロールバックする必要がある。例えば、順序整合性が半順序関係に求められる因果整合条件にマッチングしないからである。いくつかの実施例では、並行整合性レベルが直列化可能に等しければ、T.BtsがT.Etsよりも大きいか否かを検査し、そうである場合、T.Bts>T.Etsであり、検証が失敗し、目標トランザクションTの協調ノード機器にAbortメッセージを返信する(さらにグローバルロールバックを引き起こす)。すなわち、ローカル検証フィードバックメッセージlvmを送信し、ここでlvm.IsAbort=1であり、そうでない場合、T.Bts≦T.Etsであり、並行整合性レベルにマッチングすることを説明し、次のステップの検証に入る。
3.2.3:RMは書き込み集合における各々のデータ項目yを見つけ、次にデータ項目yの書き込み対象のトランザクション情報WTが空であるか否かを確認する。データ項目yの書き込み対象のトランザクション情報WTが空でなければ、その他のトランザクションがデータ項目yを現在修正しており、且つ該その他のトランザクションが既に検証段階に入ったことを意味し、目標トランザクションTをロールバックして書き込み・書き込み競合を解消する必要があり、すなわち、目標トランザクションTの協調ノード機器にAbortメッセージを送信する。そうでない場合、データ項目yの書き込み対象のトランザクション情報WTが空であり、次のステップの操作を続け、例えば、データ項目yの書き込み対象のトランザクション情報WTにロックをかけることで、その他の並行トランザクションがデータ項目yを並行修正することを防止する。選択可能に、RMはデータ項目上に推奨ロックをかけ、データ項目yの書き込み対象のトランザクション情報WTに対する修正操作のみを排他的にする。
3.2.4:RMは書き込み集合における各データ項目yの書き込み対象のトランザクション情報WTをT.TIDに更新し(検証段階に入った目標トランザクションTがデータ項目yを修正しようとすることを示す)、且つローカルトランザクション状態テーブルにおける目標トランザクションTの論理的な開始時刻を調整し、それをデータ項目yの最大の読み取りトランザクションタイムスタンプrtsよりも大きくし、すなわちT.Bts=max(T.Bts,y.cts+1)にし、読み書き競合の解消を便利にする。選択可能に、RMはロック無しのCAS技術を使用してデータ項目yの書き込み対象のトランザクション情報WTに値を割り当て、それによりシステム性能を向上させ、又は、ロックをかけた後にデータ項目yの書き込み対象のトランザクション情報WTに対して値を割り当てる。本願では検索ボックスはWTにロックをかけるか否かに対して具体的な限定を行わない。
3.2.5:RMは各レベルの並行整合性レベルの定義及びデータベースシステムの現在のpmodel値の設定状況に基づいて、各種の並行整合性レベル下での目標トランザクションTのbtsとets値に対して検査を行う。いくつかの実施例では、並行整合性レベルが直列化可能よりも強ければ、トランザクションのbtsが本セッションのnewtsよりも小さくてはならないことを検証する必要がある。トランザクションのbtsが本セッションのnewtsよりも小さければ、目標トランザクションTをロールバックする必要があり、例えば、順序整合性が半順序関係に求められる因果整合条件にマッチングしないからである。いくつかの実施例では、並行整合性レベルが直列化可能に等しければ、T.BtsがT.Etsよりも大きいか否かを検査し、そうである場合、T.Bts>T.Etsであり、検証が失敗し、目標トランザクションTの協調ノード機器にAbortメッセージを返信し(さらにグローバルロールバックを引き起こす)、すなわち、ローカル検証フィードバックメッセージlvmを送信する。ここでlvm.IsAbort=1であり、そうでない場合、T.Bts≦T.Etsであり、これは並行整合性レベルにマッチングすることを意味し、次のステップの検証に入る。
3.2.6:RMは書き込み集合における各データ項目yに対して、目標トランザクションT又はアクティブトランザクション集合RTlistにおけるトランザクションのタイムスタンプを調整することで、読み書き競合を解消する。調整規則は下記の2種の場合を含む。
場合1:本トランザクションの書き込み、既に完了したその他のトランザクションで過去に発生した読み取りについて、本トランザクションの書き込み操作の発生を読み取りが既に完了したトランザクションの読み取り操作の後に繰り下げる。
いくつかの実施例では、RMは既にコミット中状態又はローカル検証パス状態にあるすべてのトランザクションT(第1トランザクション集合)を見つけ、目標トランザクションT自体の論理的な開始時刻を調整し、それをTにおける各トランザクションのEtsよりも大きくし、すなわちT.Bts=max(T.Bts,T.Ets+1)である。
T.Btsを調整した後、RMは目標トランザクションTの論理的な時間区間が依然として正当であるか否かを再び検査する。目標トランザクションTの論理的な時間区間が正当ではなければ、Abortメッセージを返信し、そうでない場合、目標トランザクションTの論理的な時間区間が正当であり、Tのローカルトランザクション状態をValidatedに更新し、すなわちT.Status=Validatedであり、且つ次のステップの調整に入る。説明する必要がある点として、論理的な時間区間が正当であるか否かを検出することは、論理的な開始時刻T.Btsが論理的なコミット時刻T.Ets以下であれば、論理的な時間区間が正当であり、そうでない場合、論理的な開始時刻T.Btsが論理的なコミット時刻T.Etsよりも大きければ、論理的な時間区間が正当ではない。
場合2:本トランザクションの書き込み、現在行っているその他のトランザクションの読み取りについて、その他のトランザクションは本トランザクションが書き込んだデータを読み取ることができないようにする。
いくつかの実施例では、RMはRunning状態にあるすべてのトランザクションT(第2トランザクション集合)を見つけ、Tにおける各トランザクションの論理的な時間区間を調整し、その論理的なコミット時刻を目標トランザクションTのBtsよりも小さくする。すなわちT.Ets=min(T.Ets,T.Bts-1)である。
いくつかの実施例では、論理的な時間区間の調整を経た後、TにおいてあるトランザクションのBts>Etsが存在すれば、Tにおけるこのトランザクションをグローバルロールバックすることを通知することができる。
3.2.7:RMは目標トランザクションTが既にローカル検証をパスしたと決定し、データ項目yの更新値に基づいて、yの新しいバージョンを作成する。但し、flag(1つのパラメータ)を設定する必要があり、新しいバージョンがグローバルコミットされないことを示す。
3.2.8:RMはTの協調ノード機器にTのローカル検証フィードバックメッセージlvmを返信する。ここでlvmのBtsとEtsはそれぞれトランザクションTのローカルRM上での論理タイムスタンプの上限及び下限を記録する。ここで、注意する必要がある点として、目標トランザクションTのローカル検証が失敗すれば、LocalTSにおける目標トランザクションTの状態をAbortedに更新する必要があり、すなわちT.Status=Abortedである。
3.3:Tの協調ノード機器はすべてのRMのローカル検証フィードバックメッセージlvmを受信した後、受信されたメッセージに基づいて目標トランザクションTがグローバル検証をパスできるか否かを決め、それは主に以下の幾つかの種類の場合に分けられる。
3.3.1:IsAbortフィールドが1に等しいlvmを含むのであれば、目標トランザクションTが全部のローカル検証をパスしないことを表し、協調ノード機器は目標トランザクションTをグローバルロールバックすることを決め、同時にトランザクション状態リストにおける目標トランザクションTの状態をGabortingに更新し、すべてのサブノードRMにローカルロールバックを完了することを通知する。すなわち、関連するRMに書き込みコミット/ロールバックメッセージcoarmを送信し、ここでcoarm.IsAbort=1である。
3.3.2:そうでない場合、すべてのRMが返信したlvmにおけるIsAbortフィールドがいずれも0に等しく、協調ノード機器は受信されたすべての目標トランザクションTの論理的な時間区間の共通集合を求めて、1つの新しいグローバルの論理的な区間[T.Bts,T.Ets]を得る。T.Bts>T.Etsであれば、トランザクションをグローバルロールバックすることを決め、トランザクション状態リストにおける目標トランザクションTの状態をGabortingに更新し、且つすべてのサブノードにロールバックを完了することを通知し、そうでない場合、T.Bts≦T.Etsであり、次のステップに入る。
3.3.3:協調ノード機器はTが検証をパスすることを決定し、且つグローバルの論理的な区間[T.Bts,T.Ets]から1つの時点をTの最終コミットタイムスタンプとしてランダムに選択し、ctsに値を割り当てる。例えば、1つのT.BtsをTの論理的なコミットタイムスタンプとして選択する。
3.3.4:協調ノード機器はトランザクション状態リストにおけるT.Bts=T.Ets=T.ctsを更新し、トランザクション状態リストにおけるトランザクションの状態をGcommittingに更新する。いくつかの実施例では、このとき、協調ノード機器はさらに、グローバルトランザクション状態をGcommittedと記し、同時にグローバルタイムスタンプ生成クラスターに最終グローバルタイムスタンプの分配を要求し、グローバルトランザクション状態のGtsフィールド中に記録する。
3.3.5:協調ノード機器は関連するRMにコミットを完了することを通知し、すなわち、関連するRMに書き込みコミット/ロールバックメッセージcoarmを送信する。ここでcoarm.IsAbort=0であり、coarm.Ctsとcoarm.Gtsはそれぞれトランザクションの最終コミットタイムスタンプと最終グローバルタイムスタンプを記録する。
分析から明らかなように、目標トランザクションTの検証段階で、通信は主に目標トランザクションTの協調ノード機器と関連するサブRMとの間に発生する。通信は主に以下の2つのステップを含む。目標トランザクションTの協調ノード機器は各関連するサブRMに検証要求メッセージvrm及びRMのローカル書き込み集合を送信し、各関連するサブRMはローカル検証フィードバックメッセージlvmを目標トランザクションTの協調ノード機器に送信する。
従って、検証段階で最大で2m回の通信を必要とし、通信量の大きさはm×(要求検証メッセージの大きさ+検証フィードバックメッセージの大きさ)+グローバル書き込み集合の大きさであり、ここでmはTに関連するサブRMの個数である。
(4)トランザクションコミット又はロールバック操作の仕上げ段階
該仕上げ段階で、目標トランザクションTは検証段階の検証結果に基づいて、書き込みコミットを実行するかロールバックを実行するかを選択する。
4.1:目標トランザクションTが検証をパスすれば、書き込みコミット段階に入り、すなわち、目標トランザクションTのデータに対する更新をデータベースにおいて永続化し、且ついくつかの後続のクレンジング作業を行う。ローカルRMは書き込みコミット段階で以下のような操作を実行する必要がある。
4.1.1:RMは読み取り集合における各読み取り対象のデータ項目xに対して、xのrtsを修正し、それをT.cts以上にし、すなわち、x.rtx=max(x.rtx,T.cts)であり、RTlist(x)中から自分を削除する。
4.1.2:RMは書き込み集合における各書き込み対象のデータ項目yに対して、yの新しいバージョンのwtsとrtsを更新する。ここでwts=T.ctsにし、rts=max(x.rtx,T.cts)にし、yをデータベースにおいて永続化し、且つflag(1つのパラメータ)を修正し、yのRTlistリストの内容をクリアし、yのWTの内容をクリアする。
4.1.3:RMは目標トランザクションTのローカル読み取り集合と書き込み集合をクリアする。
4.1.4:RMはLocalTSにおけるTのBts=T.ctsを更新し、及び状態をcommittedに更新する(このとき、ローカルトランザクション状態テーブルは、トランザクションの整合性のみに用いられ、グローバルトランザクション状態の同期に関しない)。
4.1.5:RMは目標トランザクションTの協調ノード機器にコミット完了に成功したACK(Acknowledge Character、確認文字)を返信する。
選択可能に、目標トランザクションTの協調ノード機器は、すべてのRMがコミットを完了したACKを受信した後、グローバルトランザクション状態をGcommittedに修正する。そして各RMにローカルトランザクション状態テーブル中から目標トランザクションTの状態をクレンジングすることを通知する。
4.2:目標トランザクションTが検証をパスしなければ、グローバルロールバック段階に入る。すなわち、目標トランザクションTをロールバックし、且つ相応なクレンジング作業を行い、クレンジング作業は以下の内容を含む。
4.2.1:RMは読み取り集合における各読み取り対象のデータ項目xに対して、RTlist(x)中から目標トランザクションTを削除する。
4.2.2:RMは書き込み集合における各書き込み対象のデータ項目yに対して、新しく作成されたバージョンyをクレンジングし、且つyの書き込み対象のトランザクション情報WTの内容をクリアする。
4.2.3:RMは目標トランザクションTのローカル読み取り集合と書き込み集合をクリアする。
4.2.4:RMは目標トランザクションTのローカルトランザクション状態をAbortedに更新する。
4.2.5:RMは目標トランザクションTの協調ノード機器にロールバックを完了したACKを返信する。
選択可能に、目標トランザクションTの協調ノード機器は、すべてのRMがロールバックを完了したACKを受信した後、グローバルトランザクション状態をGabortedに修正する。且つ各RMにocalTS中から目標トランザクションTの状態をクレンジングすることを通知する。
分析から明らかなように、トランザクションTのコミット/ロールバック段階で、通信は主に目標トランザクションTの協調ノード機器と関連するサブRMとの間に発生し、通信は主に以下の2つのステップを含む。目標トランザクションTの協調ノード機器は各関連するサブRMにコミット/ロールバック要求メッセージcoarmを送信し、各関連するサブRMは協調ノード機器にコミット/ロールバック完了応答メッセージACKを送信する。
従って、コミット/ロールバック段階は最大で2m回の通信を行い、通信量の大きさはm×(コミット/ロールバック要求メッセージの大きさ+コミット/ロールバック要求メッセージの大きさ)であり、ここでmはトランザクションTに関連するサブRMの個数である。
いくつかの実施例では、協調ノード機器はRMにクレンジングメッセージを一括して送信することで通信回数を減少する。
上記すべての選択可能な技術的解決手段は、任意の組み合わせを採用して本開示の選択可能な実施例を形成することができるが、ここで1つずつ繰り返して説明しない。
本願の実施例では、TOアルゴリズムにおけるDTA技術を利用して、トランザクションの論理的な開始時刻と論理的なコミット時刻を初期化した後、異なる状況に基づいてその論理的な開始時刻又は論理的なコミット時刻を動的に調整し、且つMVCC、DTA及びOCC技術をハイブリッドして、並行整合性モデルの複数種の整合性に対して、トランザクション並行アクセス制御を行う。ここで、主にOCCのアルゴリズムフレームワークを応用し、且つDTAと組み合わせてネットワークで伝送されるトランザクションデータ情報を減少させ、且つ分散型トランザクションの検証効率を向上させ、それにより分散型トランザクションの並行処理能力を高める。MVCCと組み合わせてロック無しのデータ読み書きを実現し、それにより局所ノードの並行処理能力を高める。
表3は2つのトランザクションTとTの直列化可能レベル及びより強い程度の整合性レベルでの実現差異を示し、すなわち、DTAに基づいたトランザクション協調者検証段階の非集中化アルゴリズムを提供する。本願の実施例は完備した複数種の整合性の計算フレームワークを定義し、完備された全面的な整合性レベル、整合性強弱分類方法、及び整合性が共存する計算環境及び方式を含む。各種の整合性の実現技術によって並行整合性モデル体系が完備されて充実し、BtsとEtsのトランザクションの属性の定義に基づいて分散型整合性とトランザクション整合性の発現方式を融合させ、且つ分散型整合性とトランザクション整合性のアルゴリズムを一体に有機的に統一し、トランザクション理論を分散型システム中に移行させることができる。
図5は、本願の実施例により提供されるトランザクション処理方法のインタラクションのフローチャートであり、図5に参照されるように、上記複数種の並行レベルの並行アクセス制御アルゴリズムを基礎として、分散型システム下で協調ノード機器がデータノード機器と如何にインタラクションして目標トランザクションを実行するかの過程を提供している。
ステップ501において、端末は協調ノード機器と目標トランザクションを処理することに用いられるセッションを確立する。
ステップ502において、協調ノード機器は目標トランザクションに対して初期化を行う。
選択可能に、協調ノード機器は目標トランザクションに対してトランザクション識別子を分配し、且つトランザクション状態リストにおいてトランザクション状態StatusをGrunningにし、目標トランザクションのT.Btsを0に初期化し、目標トランザクションのT.Etsを+∞に初期化する。
上記ステップ501~502は、すなわち、目標トランザクションのスナップショットを確立する段階であり、ここでは繰り返して説明しない。
ステップ503において、協調ノード機器はデータノード機器に目標トランザクションのデータ読み取り要求メッセージrrqmを送信する。
選択可能に、協調ノード機器はアプリケーションクライアント端末が開始した要求に基づき、SQLを最適化し、且つ目標トランザクションの物理実行計画を生成し、実行計画を分解し、それぞれ目標トランザクションに関するデータノード機器に送信する。データノード機器の数量は1つ又は複数である。本願の実施例において、データノード機器の数量に対して具体的な限定を行わない。
選択可能に、データ読み取り要求メッセージrrqmは、TID(トランザクション識別子)、Bts(論理的な開始時刻)、Ets(論理的なコミット時刻)、及びReadPlan(問い合わせ計画)という4つのフィールドを含む。
ステップ504において、データノード機器は該データ読み取り要求メッセージrrqmに応答して、目標トランザクションに対して可視である目標データ項目を問い合わせ、協調ノード機器に目標トランザクションの読み取り要求フィードバックメッセージrrpmを返信する。
選択可能に、データノード機器は目標トランザクションTの情報をローカルトランザクション状態テーブルLocalTS中に維持し、論理的な時間区間[T.Bts,T.Ets]に対して正当性検証を行う。検証をパスした後、読み取り対象の各データ項目の最新バージョンから開始し、作成タイムスタンプがT.Etsよりも小さい最初のデータバージョン(すなわち、目標データ項目)を検索し得て、且つ目標データ項目の作成タイムスタンプに基づいてT.Btsを修正して読み書き競合と書き読み異常を解消し、協調ノード機器に読み取り要求フィードバックメッセージrrpmを返信する。
上記ステップ503~504は、すなわち、目標トランザクションのセマンティクス実現操作段階であり、ここでは繰り返して説明しない。
ステップ505において、協調ノード機器はデータノード機器が返信した読み取り要求フィードバックメッセージrrpmを要約し、データノード機器に目標トランザクションの検証要求メッセージvrmを送信する。
選択可能に、協調ノード機器は各読み取り要求フィードバックメッセージrrpmを要約した後、IsAbortsフィールドが1であるか否かをトラバーサルする。1であるとグローバルロールバック段階に入り、そうでない場合、目標トランザクションのBtsとEtsを更新した後に論理的な時間区間の正当性を再び検証し、検証をパスした場合、検証要求メッセージvrm(すなわち、検証命令)を送信し、トランザクション検証段階に入る。
ステップ506において、データノード機器は該検証要求メッセージvrmに応答して、目標トランザクションに対して競合検証を行い、協調ノード機器に目標トランザクションのローカル検証フィードバックメッセージlvmを返信する。
選択可能に、データノード機器は目標トランザクションTの論理的な時間区間[T.Bts,T.Ets]に対して正当性検証を再び行い、検証をパスした後、該論理的な時間区間が並行整合性レベルの条件を満たすか否かをさらに検証する。検証をパスした後、目標トランザクションTの書き込み集合に基づいて、目標トランザクションTのBtsを更新し、書き込み・書き込み競合と読み書き競合を解消し、さらに更新された後の論理的な時間区間がまだ正当であるか否かを検証する。正当であれば、協調ノード機器にローカル検証フィードバックメッセージlvmを返信する。
ステップ507において、協調ノード機器はデータノード機器のローカル検証フィードバックメッセージlvmを要約し、目標トランザクションのグローバル検証結果を決定する。
選択可能に、協調ノード機器は各ローカル検証フィードバックメッセージlvmを要約した後、IsAbortsフィールドが1であるか否かをトラバーサルする。1であれば、グローバルロールバック段階に入り、そうでない場合、目標トランザクションのBtsとEtsを更新した後に論理的な時間区間の正当性を再び検証する。検証をパスした場合、コミット命令を送信し、グローバルコミット段階に入り、そうでない場合、ロールバック命令を送信し、グローバルロールバック段階に入る。
上記ステップ505~507は、すなわち、トランザクション正当性の検証段階であり、ここでは繰り返して説明しない。
ステップ508において、協調ノード機器はグローバル検証結果が検証パスであることに応答して、データノード機器に目標トランザクションのコミット命令を送信する。
ステップ509において、データノード機器は該コミット命令に応答して、目標トランザクションをコミットする。
上記ステップ508~509は、すなわち、トランザクションコミット段階であり、ここでは繰り返して説明しない。
本願の実施例では、TOアルゴリズムにおけるDTA技術を利用して、目標トランザクションのBtsとEtsを初期化した後、異なる状況に基づいてそのBts又はEtsを動的に調整し、且つMVCC、DTA及びOCC技術をハイブリッドして、並行整合性モデルの複数種の整合性に対して、トランザクション並行アクセス制御を行う。主にOCCのアルゴリズムフレームワークを応用し、且つDTAと組み合わせてネットワークで伝送されるトランザクションデータ情報を減少させ、且つ分散型トランザクションの検証効率を向上させ、それにより分散型トランザクションの並行処理能力を高める。MVCCと組み合わせてロック無しのデータ読み書きを実現し、それにより局所ノードの並行処理能力を高める。
図6は、本願の実施例により提供されるトランザクション処理装置の構造模式図であり、図6に参照されるように、該装置は、取得モジュール601と、決定モジュール602と、更新モジュール603と、コミットモジュール604とを含み、
取得モジュール601は、目標トランザクションの読み書き操作に応答して、該目標トランザクションの読み取り集合と書き込み集合を取得することに用いられ、
決定モジュール602は、該目標トランザクションの検証命令に応答して、該目標トランザクションの論理的な開始時刻と論理的なコミット時刻を決定することに用いられ、
更新モジュール603は、該論理的な開始時刻と該論理的なコミット時刻が該目標トランザクションの並行整合性レベルにマッチングする場合に、該書き込み集合に基づき該論理的な開始時刻を更新することに用いられ、
コミットモジュール604は、更新された後の論理的な開始時刻が該論理的なコミット時刻以下である場合に、該目標トランザクションをコミットすることに用いられる。
本願の実施例により提供される装置は、目標トランザクションの実行段階で、目標トランザクションの読み書き集合を取得し、検証段階で、目標トランザクションの論理的な開始時刻と論理的なコミット時刻に基づき、目標トランザクションがそれ自体の並行整合性レベルにマッチングするか否かを検証し、且つ所定の戦略に基づき論理的な開始時刻を動的に更新する。最終的に更新された後の論理的な開始時刻と論理的なコミット時刻が正当である場合に、それ自体の並行整合性レベルに許可されないデータ異常が発生することがないようにし、さらに目標トランザクションをコミットし、システム全体内の異なるトランザクションを異なる並行整合性レベルに対応させることができ、データ異常検出の正確度を大幅に高め、トランザクション処理効率及びデータベースシステムの性能を向上させる。
1種の可能な実施形態では、図6の装置の構成に基づき、該更新モジュール603は取得サブモジュールと、調整サブモジュールと、ロールバックサブモジュールとを含み、
取得サブモジュールは、該書き込み集合における各データ項目の書き込み対象のトランザクション情報を取得することに用いられ、該書き込み対象のトランザクション情報は、該データ項目を現在修正しているトランザクションを識別することに用いられ、
調整サブモジュールは、各該書き込み対象のトランザクション情報がいずれも空である場合に、該論理的な開始時刻を更新することに用いられ、
ロールバックサブモジュールは、該書き込み対象のトランザクション情報のいずれかが空でない場合に、該目標トランザクションをロールバックすることに用いられる。
1種の可能な実施形態では、図6の装置の構成に基づき、該調整サブモジュールは、取得ユニットと、更新ユニットと、調整ユニットとを含み、
取得ユニットは、該書き込み対象のトランザクション情報を該目標トランザクションのトランザクション識別子として取得することに用いられ、
更新ユニットは、該論理的な開始時刻を更新し、更新された後の論理的な開始時刻を該データ項目の最大の読み取りトランザクションタイムスタンプよりも大きくすることに用いられ、該最大の読み取りトランザクションタイムスタンプは、該データ項目を読み取ったトランザクションの論理的なコミット時刻のうちの最大値を示すことに用いられ、
調整ユニットは、更新された後の論理的な開始時刻と該論理的なコミット時刻が該目標トランザクションの並行整合性レベルにマッチングする場合に、アクティブトランザクション集合に基づき該論理的な開始時刻を更新することに用いられ、該アクティブトランザクション集合は既に実行が開始されたがコミットが完了していないトランザクションを識別することに用いられ、
該ロールバックサブモジュールは、さらに、更新された後の論理的な開始時刻と該論理的なコミット時刻が該目標トランザクションの並行整合性レベルにマッチングしない場合に、該目標トランザクションをロールバックすることに用いられる。
1種の可能な実施形態では、該アクティブトランザクション集合は第1トランザクション集合及び第2トランザクション集合を含み、該第1トランザクション集合はコミット中状態又は検証パス状態にあるトランザクションを識別することに用いられ、該第2トランザクション集合は動作中状態にあるトランザクションを識別することに用いられ、
該調整ユニットは、該論理的な開始時刻を更新し、更新された後の論理的な開始時刻を該第1トランザクション集合における最大の論理的なコミット時刻よりも大きくし、更新された後の論理的な開始時刻が該論理的なコミット時刻以下である場合に、該第2トランザクション集合におけるトランザクションの論理的なコミット時刻を更新し、更新された後の論理的なコミット時刻を該更新された後の論理的な開始時刻よりも小さくすることに用いられ、
該ロールバックサブモジュールは、さらに、該更新された後の該論理的な開始時刻が該論理的なコミット時刻よりも大きい場合に、該目標トランザクションをロールバックすることに用いられる。
1種の可能な実施形態では、該ロールバックサブモジュールはさらに、
該第2トランザクション集合における任意の1つのトランザクションの論理的な開始時刻が更新された後の該論理的なコミット時刻よりも大きい場合に、該トランザクションをロールバックすることに用いられる。
1種の可能な実施形態では、図6の装置の構成に基づき、該装置はさらに取得判定モジュールを含み、
取得判定モジュールは、該並行整合性レベルが直列化の場合に、該目標トランザクションの並行トランザクションを取得し、該目標トランザクションの論理的なコミット時刻が該並行トランザクションの論理的な開始時刻よりも小さい、又は該目標トランザクションの論理的な開始時刻が該並行トランザクションの論理的なコミット時刻よりも大きい場合に、該目標トランザクションが属するセッションの最新の完了済トランザクションのタイムスタンプを取得し、該目標トランザクションの論理的なコミット時刻が該最新の完了済トランザクションのタイムスタンプ以上である場合に、該並行整合性レベルにマッチングすると判定することに用いられる。
1種の可能な実施形態では、図6の装置の構成に基づき、該装置はさらに取得判定モジュールを含み、
取得判定モジュールは、該並行整合性レベルが厳密化であり、且つ該目標トランザクションが書き込みトランザクションである場合に、該目標トランザクションの並行書き込みトランザクションを取得し、該目標トランザクションの論理的なコミット時刻が該並行書き込みトランザクションの論理的な開始時刻よりも小さい、又は該目標トランザクションの論理的な開始時刻が該並行書き込みトランザクションの論理的なコミット時刻よりも大きい場合に、該並行書き込みトランザクションの並行読み取り専用トランザクションを取得し、該並行読み取り専用トランザクションの論理的な開始時刻が該並行書き込みトランザクションの論理的な開始時刻よりも大きい場合に、該目標トランザクションが属するセッションの最新の完了済トランザクションのタイムスタンプを取得し、該目標トランザクションの論理的なコミット時刻が該最新の完了済トランザクションのタイムスタンプ以上である場合に、該並行整合性レベルにマッチングすると判定することに用いられる。
1種の可能な実施形態では、図6の装置の構成に基づき、該装置はさらに取得判定モジュールを含み、
取得判定モジュールは、該並行整合性レベルが線形化であり、且つ該目標トランザクションが書き込みトランザクションである場合に、該目標トランザクションの並行書き込みトランザクションを取得し、該目標トランザクションと該並行書き込みトランザクションが直列化可能の検証をパスした場合に、該並行書き込みトランザクションの並行読み取り専用トランザクションを取得し、該並行読み取り専用トランザクションの論理的な開始時刻が該並行書き込みトランザクションの論理的な開始時刻よりも大きい場合に、該目標トランザクションが属するセッションの最新の完了済トランザクションのタイムスタンプを取得し、該目標トランザクションの論理的なコミット時刻が該最新の完了済トランザクションのタイムスタンプ以上である場合に、該並行整合性レベルにマッチングすると判定することに用いられる。
1種の可能な実施形態では、図6の装置の構成に基づき、該装置はさらに取得判定モジュールを含み、
取得判定モジュールは、該並行整合性レベルが順序化である場合に、該目標トランザクションの並行トランザクションを取得し、該目標トランザクションと該並行トランザクションが直列化可能の検証をパスした場合に、該目標トランザクションと同一のセッションに属する第1トランザクションを決定し、該目標トランザクションの論理的なコミット時刻が該第1トランザクションの論理的な開始時刻よりも小さい場合に、該セッションの最新の完了済トランザクションのタイムスタンプを取得し、該目標トランザクションの論理的なコミット時刻が該最新の完了済トランザクションのタイムスタンプ以上である場合に、該並行整合性レベルにマッチングすると判定することに用いられ、ここで、該目標トランザクションが該第1トランザクションと因果関係を有する場合に、該因果関係における結果トランザクションの論理的な開始時刻を更新し、更新された後の結果トランザクションの論理的な開始時刻を原因トランザクションの論理的なコミット時刻よりも大きくする。
1種の可能な実施形態では、図6の装置の構成に基づき、該装置はさらに取得判定モジュールを含み、
取得判定モジュールは、該並行整合性レベルが直列化可能である場合に、該目標トランザクションの並行トランザクションを取得し、該目標トランザクションと該並行トランザクションが直列化可能の検証をパスした場合に、該目標トランザクションと同一のセッションに属する第1トランザクションを決定し、該目標トランザクションの論理的なコミット時刻が該第1トランザクションの論理的な開始時刻よりも小さく、且つ該論理的な開始時刻が該論理的なコミット時刻以下である場合に、該並行整合性レベルにマッチングすると判定することに用いられる。
1種の可能な実施形態では、図6の装置の構成に基づき、該装置はさらに取得判定モジュールを含み、
取得判定モジュールは、該並行整合性レベルが因果リピータブルリードである場合に、該目標トランザクションと因果関係を有し、且つ該目標トランザクションを因とする結果トランザクションを取得し、該結果トランザクションの論理的な開始時刻を更新し、更新された後の結果トランザクションの論理的な開始時刻を該目標トランザクションの論理的なコミット時刻よりも大きくし、該並行整合性レベルにマッチングすると判定することに用いられる。
1種の可能な実施形態では、図6の装置の構成に基づき、該装置はさらに取得判定モジュールを含み、
取得判定モジュールは、該並行整合性レベルがリピータブルリード、リード・コミッテッド又はリード・アンコミッテッド読み書きである場合に、該並行整合性レベルにマッチングすると判定することに用いられる。
上記すべての選択可能な技術的解決手段は、任意の組み合わせを採用して本開示の選択可能な実施例を形成することができ、ここで1つずつ繰り返して説明しない。
説明する必要がある点として、上記実施例により提供されるトランザクション処理装置は、トランザクションを処理する際に、単に上記各機能モジュールの区分を例示して説明を行ったが、実際の応用においては、必要に応じて上記機能を異なる機能モジュールに分配して完了させることができ、すなわち、コンピュータ機器の内部構造を異なる機能モジュールに区分し、それにより以上に記述される全部又は一部の機能を完了させることができる。また、上記実施例により提供されるトランザクション処理装置はトランザクション処理方法の実施例と同一の発想に属し、その具体的な実現過程について詳しくはトランザクション処理方法の実施例を参照できるため、ここで繰り返して説明しない。
図7は、本願の実施例により提供されるコンピュータ機器の構造模式図である。図7に参照されるように、コンピュータ機器が端末700であることを例として説明を行うと、選択可能に、該端末700の機器タイプは、スマートフォン、タブレットコンピュータ、MP3プレーヤー(Moving Picture Experts Group Audio Layer III、MEPGオーディオレイヤ3)、MP4(Moving Picture Experts Group Audio Layer IV、MEPGオーディオレイヤ4)プレーヤー、ノートパソコン又はデスクトップパソコンを含む。端末700は更にユーザー機器、携帯型端末、ラップトップ型端末、デスクトップ型端末等のその他の名称と称される可能性がある。
通常、端末700は、プロセッサ701とメモリ702とを含んでいる。
選択可能に、プロセッサ701は1つ又は複数の処理コアを含み、例えば4コアプロセッサ、8コアプロセッサ等である。選択可能に、プロセッサ701はDSP(Digital Signal Processing、デジタル信号処理)、FPGA(Field-Programmable Gate Array、フィールドプログラマブルゲートアレイ)、及びPLA(Programmable Logic Array、プログラマブルロジックアレイ)のうちの少なくとも1種のハードウェア形式を採用して実現される。いくつかの実施例では、プロセッサ701はメインプロセッサ及びコプロセッサを含み、メインプロセッサはウェイクアップ状態下でのデータに対して処理を行うことに用いられるプロセッサであり、CPU(Central Processing Unit、中央プロセッサ)とも称され、コプロセッサは、待機状態下でのデータに対して処理を行うことに用いられる低消費電力プロセッサである。いくつかの実施例では、プロセッサ701にはGPU(Graphics Processing Unit、グラフィックスプロセッサ)が集積され、GPUはディスプレイスクリーンに表示される必要がある内容のレンダリング及び描画を担うことに用いられる。いくつかの実施例では、プロセッサ701はさらにAI(Artificial Intelligence、人工知能)プロセッサを含み、該AIプロセッサは機械学習に関連する計算操作を処理することに用いられる。
いくつかの実施例では、メモリ702は1つ又は複数のコンピュータ読み取り可能記憶媒体を含み、選択可能に、該コンピュータ読み取り可能記憶媒体は非一時的なものである。選択可能に、メモリ702はさらに高速ランダムアクセスメモリ、及び不揮発性メモリを含み、例えば1つ又は複数の磁気ディスク記憶機器、フラッシュ記憶機器である。いくつかの実施例では、メモリ702における非一時的なコンピュータ読み取り可能記憶媒体は少なくとも1つのプログラムコードを記憶することに用いられ、該少なくとも1つのプログラムコードはプロセッサ701により実行されて本願における各実施例により提供されるトランザクション処理方法を実現することに用いられる。
いくつかの実施例では、端末700は選択可能にディスプレイスクリーン703を含んでいる。
ディスプレイスクリーン703はUI(User Interface、ユーザーインターフェース)を表示することに用いられる。選択可能に、該UIは図形、テキスト、アイコン、ビデオ及びそれらの任意の組み合わせを含む。ディスプレイスクリーン703がタッチディスプレイスクリーンである場合に、ディスプレイスクリーン703はさらに、ディスプレイスクリーン703の表面又は表面上方でのタッチ信号を収集する能力を有する。該タッチ信号は制御信号としてプロセッサ701に入力して処理を行うことができる。選択可能に、ディスプレイスクリーン703はさらに仮想ボタン及び/又は仮想キーボード(ソフトボタン及び/又はソフトキーボードとも称される)を提供することに用いられる。いくつかの実施例では、ディスプレイスクリーン703は1つであり、端末700のフロントパネルに設置され、別のいくつかの実施例では、ディスプレイスクリーン703は少なくとも2つであり、それぞれ端末700の異なる表面に設置され又は折り畳み設計となっており、さらに別のいくつかの実施例では、ディスプレイスクリーン703はフレキシブルディスプレイスクリーンであり、端末700の湾曲表面上又は折り畳み面上に設置される。ひいては、選択可能に、ディスプレイスクリーン703は矩形ではない不規則な図形、すなわち、異形スクリーンとして設置される。選択可能に、ディスプレイスクリーン703はLCD(Liquid Crystal Display、液晶ディスプレイスクリーン)、OLED(Organic Light-Emitting Diode、有機発光ダイオード)等の材質を採用して製造される。
当業者が理解できるように、図7において示される構造は端末700に対する限定を構成せず、図示よりも多い又は少ないコンポーネントを含んでもよく、又はあるいくつかのコンポーネントを組み合わせてもよく、又は異なるコンポーネントを採用して配置してもよい。
図8は、本願の実施例により提供されるコンピュータ機器の構造模式図であり、該コンピュータ機器800は配置又は性能が異なるので比較大きな差異が生じ得る。該コンピュータ機器800は1つ又は1つ以上のプロセッサ(Central Processing Units、CPU)801と1つ又は1つ以上のメモリ802とを含み、ここで、該メモリ802には、少なくとも1つのコンピュータプログラムが記憶され、該少なくとも1つのコンピュータプログラムは該1つ又は1つ以上のプロセッサ801によってロードされ、且つ実行され、上記各実施例により提供されるトランザクション処理方法を実現する。選択可能に、該コンピュータ機器800はさらに有線又は無線ネットワークインタフェース、キーボード及び入力出力インタフェース等の部材をさらに有し、入力出力を行うことを便利にし、該コンピュータ機器800はさらに機器の機能を実現することに用いられるその他の部材を含み、ここで繰り返し説明しない。
例示的な実施例において、コンピュータ読み取り可能記憶媒体をさらに提供する。例えば、少なくとも1つのコンピュータプログラムを含むメモリであり、上記少なくとも1つのコンピュータプログラムは、端末におけるプロセッサによって実行され、上記各実施例におけるトランザクション処理方法を完了させることができる。例えば、該コンピュータ読み取り可能記憶媒体はROM(Read-Only Memory、読み取り専用メモリ)、RAM(Random-Access Memory、ランダムアクセスメモリ)、CD-ROM(Compact Disc Read-Only Memory、読み取り専用光ディスク)、磁気テープ、フロッピーディスク及び光データ記憶機器等を含む。
例示的な実施例において、コンピュータプログラム製品又はコンピュータプログラムをさらに提供し、1つ又は複数のプログラムコードを含み、該1つ又は複数のプログラムコードがコンピュータ読み取り可能記憶媒体に記憶される。コンピュータ機器の1つ又は複数のプロセッサはコンピュータ読み取り可能記憶媒体から該1つ又は複数のプログラムコードを読み取ることができ、該1つ又は複数のプロセッサは該1つ又は複数のプログラムコードを実行して、コンピュータ機器に実行させて上記実施例におけるトランザクション処理方法を完了させることができる。
当業者が理解できるように、上記実施例の全部又は一部のステップの実現がハードウェアによって完了することができ、プログラムによって関連ハードウェアに命令を出して完了させることもでき、選択可能に、該プログラムが1種のコンピュータ読み取り可能記憶媒体に記憶され、選択可能に、上記に言及される記憶媒体は読み取り専用メモリ、磁気ディスク又は光ディスク等である。
以上の内容は本願の選択可能な実施例に過ぎず、本願を制限するためのものではなく、本願の精神や原則内に行ったすべての修正、同等置換、改良等は、いずれも本願の保護範囲内に含まれるべきである。
101 ゲートウェイサーバ
102 グローバルタイムスタンプ生成クラスター
103 分散型記憶クラスター
201 TPクラスター
202 APクラスター
203 分散型ファイルシステム
601 取得モジュール
602 決定モジュール
603 更新モジュール
604 コミットモジュール
700 端末
701 プロセッサ
702 メモリ
703 ディスプレイスクリーン
800 コンピュータ機器
801 プロセッサ
802 メモリ

Claims (15)

  1. コンピュータ機器により実行されるトランザクション処理方法であって、前記方法は、
    目標トランザクションの読み書き操作に応答して、目標トランザクションの読み取り集合と書き込み集合を取得するステップと、
    前記目標トランザクションの検証命令に応答して、前記目標トランザクションの論理的な開始時刻と論理的なコミット時刻を決定するステップと、
    前記論理的な開始時刻と前記論理的なコミット時刻が前記目標トランザクションの並行整合性レベルにマッチングする場合に、前記書き込み集合に基づき前記論理的な開始時刻を更新するステップと、
    更新された後の論理的な開始時刻が前記論理的なコミット時刻以下である場合に、前記目標トランザクションをコミットするステップと、を含む、トランザクション処理方法。
  2. 前記書き込み集合に基づき前記論理的な開始時刻を更新する前記ステップは、
    前記書き込み集合における各データ項目の書き込み対象のトランザクション情報を取得するステップであって、前記書き込み対象のトランザクション情報は前記データ項目を現在修正しているトランザクションを識別することに用いられる、ステップと、
    各前記書き込み対象のトランザクション情報がいずれも空である場合に、前記論理的な開始時刻を更新するステップと、
    前記書き込み対象のトランザクション情報のいずれかが空でない場合に、前記目標トランザクションをロールバックするステップと、を含む、請求項1に記載の方法。
  3. 前記論理的な開始時刻を更新する前記ステップは、
    前記書き込み対象のトランザクション情報を前記目標トランザクションのトランザクション識別子として取得するステップと、
    前記論理的な開始時刻を更新し、更新された後の論理的な開始時刻を前記データ項目の最大の読み取りトランザクションタイムスタンプよりも大きくするステップであって、前記最大の読み取りトランザクションタイムスタンプは、前記データ項目を読み取ったトランザクションの論理的なコミット時刻のうちの最大値を示すことに用いられる、ステップと、
    更新された後の論理的な開始時刻と前記論理的なコミット時刻が前記目標トランザクションの並行整合性レベルにマッチングする場合に、アクティブトランザクション集合に基づき前記論理的な開始時刻を更新するステップであって、前記アクティブトランザクション集合は、実行が開始されたがコミットが完了していないトランザクションを識別することに用いられる、ステップと、
    更新された後の論理的な開始時刻と前記論理的なコミット時刻が前記目標トランザクションの並行整合性レベルにマッチングしない場合に、前記目標トランザクションをロールバックするステップと、を含む、請求項2に記載の方法。
  4. 前記アクティブトランザクション集合は第1トランザクション集合及び第2トランザクション集合を含み、前記第1トランザクション集合はコミット中状態又は検証パス状態にあるトランザクションを識別することに用いられ、前記第2トランザクション集合は動作中状態にあるトランザクションを識別することに用いられ、
    アクティブトランザクション集合に基づき前記論理的な開始時刻を更新する前記ステップは、
    前記論理的な開始時刻を更新し、更新された後の論理的な開始時刻を前記第1トランザクション集合における最大の論理的なコミット時刻よりも大きくするステップと、
    更新された後の論理的な開始時刻が前記論理的なコミット時刻以下である場合に、前記第2トランザクション集合におけるトランザクションの論理的なコミット時刻を更新し、更新された後の論理的なコミット時刻を前記更新された後の論理的な開始時刻よりも小さくするステップと、
    更新された後の論理的な開始時刻が前記論理的なコミット時刻よりも大きい場合に、前記目標トランザクションをロールバックするステップと、を含む、請求項3に記載の方法。
  5. 前記方法はさらに、
    前記第2トランザクション集合における任意の1つのトランザクションの論理的な開始時刻が更新された後の論理的なコミット時刻よりも大きい場合に、前記トランザクションをロールバックするステップを含む、請求項4に記載の方法。
  6. 前記方法はさらに、
    前記並行整合性レベルが直列化の場合に、前記目標トランザクションの並行トランザクションを取得するステップと、
    前記目標トランザクションの論理的なコミット時刻が前記並行トランザクションの論理的な開始時刻よりも小さい、又は前記目標トランザクションの論理的な開始時刻が前記並行トランザクションの論理的なコミット時刻よりも大きい場合に、前記目標トランザクションが属するセッションの最新の完了済トランザクションのタイムスタンプを取得するステップと、
    前記目標トランザクションの論理的なコミット時刻が前記最新の完了済トランザクションのタイムスタンプ以上である場合に、前記並行整合性レベルにマッチングすると判定するステップと、を含む、請求項1に記載の方法。
  7. 前記方法はさらに、
    前記並行整合性レベルが厳密化であり、且つ前記目標トランザクションが書き込みトランザクションである場合に、前記目標トランザクションの並行書き込みトランザクションを取得するステップと、
    前記目標トランザクションの論理的なコミット時刻が前記並行書き込みトランザクションの論理的な開始時刻よりも小さい、又は前記目標トランザクションの論理的な開始時刻が前記並行書き込みトランザクションの論理的なコミット時刻よりも大きい場合に、前記並行書き込みトランザクションの並行読み取り専用トランザクションを取得するステップと、
    前記並行読み取り専用トランザクションの論理的な開始時刻が前記並行書き込みトランザクションの論理的な開始時刻よりも大きい場合に、前記目標トランザクションが属するセッションの最新の完了済トランザクションのタイムスタンプを取得するステップと、
    前記目標トランザクションの論理的なコミット時刻が前記最新の完了済トランザクションのタイムスタンプ以上である場合に、前記並行整合性レベルにマッチングすると判定するステップと、を含む、請求項1に記載の方法。
  8. 前記方法はさらに、
    前記並行整合性レベルが線形化であり、且つ前記目標トランザクションが書き込みトランザクションである場合に、前記目標トランザクションの並行書き込みトランザクションを取得するステップと、
    前記目標トランザクションと前記並行書き込みトランザクションが直列化可能の検証をパスした場合に、前記並行書き込みトランザクションの並行読み取り専用トランザクションを取得するステップと、
    前記並行読み取り専用トランザクションの論理的な開始時刻が前記並行書き込みトランザクションの論理的な開始時刻よりも大きい場合に、前記目標トランザクションが属するセッションの最新の完了済トランザクションのタイムスタンプを取得するステップと、
    前記目標トランザクションの論理的なコミット時刻が前記最新の完了済トランザクションのタイムスタンプ以上である場合に、前記並行整合性レベルにマッチングすると判定するステップと、を含む、請求項1に記載の方法。
  9. 前記方法はさらに、
    前記並行整合性レベルが順序化である場合に、前記目標トランザクションの並行トランザクションを取得するステップと、
    前記目標トランザクションと前記並行トランザクションが直列化可能の検証をパスした場合に、前記目標トランザクションと同一のセッションに属する第1トランザクションを決定するステップと、
    前記目標トランザクションの論理的なコミット時刻が前記第1トランザクションの論理的な開始時刻よりも小さい場合に、前記セッションの最新の完了済トランザクションのタイムスタンプを取得するステップと、
    前記目標トランザクションの論理的なコミット時刻が前記最新の完了済トランザクションのタイムスタンプ以上である場合に、前記並行整合性レベルにマッチングすると判定するステップと、を含み、
    前記目標トランザクションが前記第1トランザクションと因果関係を有する場合に、前記因果関係における結果トランザクションの論理的な開始時刻を更新し、更新された後の結果トランザクションの論理的な開始時刻を原因トランザクションの論理的なコミット時刻よりも大きくする、請求項1に記載の方法。
  10. 前記方法はさらに、
    前記並行整合性レベルが直列化可能である場合に、前記目標トランザクションの並行トランザクションを取得するステップと、
    前記目標トランザクションと前記並行トランザクションが直列化可能の検証をパスした場合に、前記目標トランザクションと同一のセッションに属する第1トランザクションを決定するステップと、
    前記目標トランザクションの論理的なコミット時刻が前記第1トランザクションの論理的な開始時刻よりも小さく、且つ前記論理的な開始時刻が前記論理的なコミット時刻以下である場合に、前記並行整合性レベルにマッチングすると判定するステップと、を含む、請求項1に記載の方法。
  11. 前記方法はさらに、
    前記並行整合性レベルが因果リピータブルリードである場合に、前記目標トランザクションと因果関係を有し、且つ前記目標トランザクションを因とする結果トランザクションを取得するステップと、
    前記結果トランザクションの論理的な開始時刻を更新し、更新された後の結果トランザクションの論理的な開始時刻を前記目標トランザクションの論理的なコミット時刻よりも大きくし、前記並行整合性レベルにマッチングすると判定するステップと、を含む、請求項1に記載の方法。
  12. 前記方法はさらに、
    前記並行整合性レベルがリピータブルリード、リード・コミッテッド又はリード・アンコミッテッド読み書きである場合に、前記並行整合性レベルにマッチングすると判定するステップを含む、請求項1に記載の方法。
  13. トランザクション処理装置であって、前記装置は、取得モジュールと、決定モジュールと、更新モジュールと、コミットモジュールとを含み、
    前記取得モジュールは、目標トランザクションの読み書き操作に応答して、前記目標トランザクションの読み取り集合と書き込み集合を取得することに用いられ、
    前記決定モジュールは、前記目標トランザクションの検証命令に応答して、前記目標トランザクションの論理的な開始時刻と論理的なコミット時刻を決定することに用いられ、
    前記更新モジュールは、前記論理的な開始時刻と前記論理的なコミット時刻が前記目標トランザクションの並行整合性レベルにマッチングする場合に、前記書き込み集合に基づき前記論理的な開始時刻を更新することに用いられ、
    コミットモジュールは、更新された後の論理的な開始時刻が前記論理的なコミット時刻以下である場合に、前記目標トランザクションをコミットすることに用いられる、トランザクション処理装置。
  14. コンピュータ機器であって、前記コンピュータ機器は1つ又は複数のプロセッサ及び1つ又は複数のメモリを含み、前記1つ又は複数のメモリには少なくとも1つのコンピュータプログラムが記憶されており、前記少なくとも1つのコンピュータプログラムは前記1つ又は複数のプロセッサによってロードされ、且つ実行され、請求項1~請求項12のいずれか1項に記載のトランザクション処理方法を実現する、コンピュータ機器。
  15. 記憶媒体であって、前記記憶媒体には少なくとも1つのコンピュータプログラムが記憶され、前記少なくとも1つのコンピュータプログラムはプロセッサによってロードされ、且つ実行され、請求項1~請求項12のいずれか1項に記載のトランザクション処理方法を実現する、記憶媒体。
JP2023524479A 2021-01-28 2022-01-24 トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム Pending JP2023546249A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202110115847.4 2021-01-28
CN202110115847.4A CN112463311B (zh) 2021-01-28 2021-01-28 事务处理方法、装置、计算机设备及存储介质
PCT/CN2022/073455 WO2022161308A1 (zh) 2021-01-28 2022-01-24 事务处理方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
JP2023546249A true JP2023546249A (ja) 2023-11-01

Family

ID=74802820

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023524479A Pending JP2023546249A (ja) 2021-01-28 2022-01-24 トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム

Country Status (5)

Country Link
US (1) US20230100223A1 (ja)
EP (1) EP4254183A1 (ja)
JP (1) JP2023546249A (ja)
CN (1) CN112463311B (ja)
WO (1) WO2022161308A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463311B (zh) * 2021-01-28 2021-06-08 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质
CN113010920B (zh) * 2021-04-01 2022-07-12 浙江永旗区块链科技有限公司 一种区块链数据安全防护系统及其防护方法
CN113569083B (zh) * 2021-06-17 2023-11-03 南京大学 基于数据溯源模型的智能音箱本地端数字取证系统及方法
CN113419823B (zh) * 2021-06-22 2023-07-18 东北大学 一种适用于高并发事务的联盟链系统及其设计方法
CN113722052B (zh) * 2021-08-23 2024-02-20 华中科技大学 一种基于数据双版本的非易失内存更新方法
CN115113994B (zh) * 2021-08-30 2023-06-20 腾讯科技(深圳)有限公司 请求处理方法、装置、计算设备及存储介质
CN113448738B (zh) * 2021-08-31 2021-11-12 成都派沃特科技股份有限公司 服务器可用度调整方法、装置、设备及存储介质
CN115114344B (zh) * 2021-11-05 2023-06-23 腾讯科技(深圳)有限公司 事务处理方法、装置、计算设备及存储介质
CN114401125B (zh) * 2021-12-29 2023-07-25 张海滨 满足因果序的共识方法、装置、系统及计算机存储介质
CN115292335A (zh) * 2022-05-07 2022-11-04 北京大学 事务处理方法、装置及电子设备
CN115271736B (zh) * 2022-07-11 2023-06-16 中电金信软件有限公司 验证事务一致性的方法、装置、设备及存储介质
CN114996244B (zh) * 2022-07-18 2022-10-28 北京博华信智科技股份有限公司 实时数据库系统的控制方法、装置、设备及存储介质
CN116932603A (zh) * 2023-08-03 2023-10-24 上海沄熹科技有限公司 一种基于有向图的高性能事务并发复制方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9230000B1 (en) * 2012-06-04 2016-01-05 Google Inc. Pipelining Paxos state machines
US9652491B2 (en) * 2013-04-15 2017-05-16 International Business Machines Corporation Out-of-order execution of strictly-ordered transactional workloads
CN110196760B (zh) * 2018-07-12 2023-04-18 腾讯科技(深圳)有限公司 分布式事务一致性实现方法及装置
CN109977171B (zh) * 2019-02-02 2023-04-28 中国人民大学 一种保证事务一致性和线性一致性的分布式系统和方法
CN111159252B (zh) * 2019-12-27 2022-10-21 腾讯科技(深圳)有限公司 事务执行方法、装置、计算机设备及存储介质
CN111259071B (zh) * 2020-01-04 2022-08-05 浙江科技学院 一种分布式数据库系统中的并发访问控制方法
CN111338766B (zh) * 2020-03-12 2022-10-25 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质
CN111597015B (zh) * 2020-04-27 2023-01-06 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质
CN111459920B (zh) * 2020-05-15 2021-01-15 北京谷数科技股份有限公司 基于虚拟全局时钟同步的多版本并发控制方法及系统
CN111736964B (zh) * 2020-07-02 2021-08-06 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质
CN112463311B (zh) * 2021-01-28 2021-06-08 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
US20230100223A1 (en) 2023-03-30
EP4254183A1 (en) 2023-10-04
CN112463311B (zh) 2021-06-08
WO2022161308A1 (zh) 2022-08-04
CN112463311A (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
JP2023546249A (ja) トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム
CN111338766B (zh) 事务处理方法、装置、计算机设备及存储介质
Bailis et al. Scalable atomic visibility with RAMP transactions
US11520770B2 (en) System and method for providing high availability data
Baker et al. Megastore: Providing scalable, highly available storage for interactive services.
CN111143389B (zh) 事务执行方法、装置、计算机设备及存储介质
US11288002B2 (en) System and method for providing high availability data
Bailis et al. Highly available transactions: virtues and limitations (extended version)
CN111597015B (zh) 事务处理方法、装置、计算机设备及存储介质
US20150032694A1 (en) Scalable Coordination Aware Static Partitioning For Database Replication
EP3891621A1 (en) System and method for augmenting database applications with blockchain technology
US11947524B2 (en) Transaction processing method and apparatus, computer device, and storage medium
US9922086B1 (en) Consistent query of local indexes
US10147042B2 (en) Synchronization for context-aware complex event processing
CN111444027B (zh) 事务处理方法、装置、计算机设备及存储介质
Nawab et al. Message Futures: Fast Commitment of Transactions in Multi-datacenter Environments.
JP2023541298A (ja) トランザクション処理方法、システム、装置、機器、及びプログラム
US20200192888A1 (en) Distributed trust data storage system
CN115098229A (zh) 事务处理方法、装置、节点设备及存储介质
Pankowski Consistency and availability of Data in replicated NoSQL databases
US11789971B1 (en) Adding replicas to a multi-leader replica group for a data set
WO2022242401A1 (zh) 一种数据库系统的事务处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品
US11789922B1 (en) Admitting for performance ordered operations of atomic transactions across a distributed database
Sapate et al. Survey on comparative analysis of database replication techniques
Pankowski Lorq: A system for replicated NoSQL data based on consensus quorum

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230420

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230420

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240229

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240325