(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-03
(45)【発行日】2024-06-11
(54)【発明の名称】データベースのトランザクション処理方法、データベースのトランザクション処理装置、サーバ、及びコンピュータプログラム
(51)【国際特許分類】
G06F 16/27 20190101AFI20240604BHJP
G06F 16/23 20190101ALI20240604BHJP
【FI】
G06F16/27
G06F16/23
(21)【出願番号】P 2022555830
(86)(22)【出願日】2021-05-28
(86)【国際出願番号】 CN2021096691
(87)【国際公開番号】W WO2021249207
(87)【国際公開日】2021-12-16
【審査請求日】2022-09-15
(31)【優先権主張番号】202010520559.2
(32)【優先日】2020-06-10
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】517392436
【氏名又は名称】▲騰▼▲訊▼科技(深▲セン▼)有限公司
【氏名又は名称原語表記】TENCENT TECHNOLOGY (SHENZHEN) COMPANY LIMITED
【住所又は居所原語表記】35/F,Tencent Building,Kejizhongyi Road,Midwest District of Hi-tech Park,Nanshan District, Shenzhen,Guangdong 518057,CHINA
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】卞 昊穹
(72)【発明者】
【氏名】叶 盛
(72)【発明者】
【氏名】雷 ▲海▼林
(72)【発明者】
【氏名】▲孫▼ 康
(72)【発明者】
【氏名】李 ▲海▼翔
(72)【発明者】
【氏名】潘 安群
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】米国特許出願公開第2018/0322156(US,A1)
【文献】特開平03-091076(JP,A)
【文献】特開平02-058165(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10-16/29
(57)【特許請求の範囲】
【請求項1】
分散型データベースシステムのワークノードが実行する、データベースのトランザクション処理方法であって、
ターゲットトランザクションを開始するときに、前記ターゲットトランザクションのトランザクションタイムスタンプと、前記分散型データベースシステムの現在のグローバル最新バージョン情報とを取得するステップであって、前記ターゲットトランザクションには、ターゲットデータオブジェクトに対する少なくとも1つの操作文が含まれ、前記グローバル最新バージョン情報は、前記分散型データベースシステムに記憶されている各メタデータのうち、最も新しく生成されたメタデータのバージョン情報であ
り、前記トランザクションタイムスタンプは、前記ターゲットトランザクションの開始時に、グローバルタイムスタンプマネージャによって現在の時間情報に基づいて生成された値であり、前記グローバルタイムスタンプマネージャは、前記分散型データベースシステムに記憶されている前記各メタデータの前記バージョン情報および前記ターゲットトランザクションの前記トランザクションタイムスタンプを生成するよう構成されている、ステップと、
前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定し、前記トランザクションタイムスタンプに基づいて前記ターゲットトランザクションのアクセス対象のユーザデータを決定するステップと、
前記ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、前記アクセス対象のユーザデータに対して前記ターゲットトランザクションにおける操作文を実行するステップと、を含む、
方法。
【請求項2】
いずれか1つのデータオブジェクトのメタデータに対する変更指示を受け付け、前記変更指示に基づいて該データオブジェクトの変更後のメタデータを生成するステップと、
グローバルメタデータストアに前記変更後のメタデータを提出するステップと、
前記変更後のメタデータの提出が成功すると、前記グローバル最新バージョン情報を前記変更後のメタデータのバージョン情報に更新するステップと、をさらに含む、請求項1に記載の方法。
【請求項3】
グローバルメタデータストアに前記変更後のメタデータを提出する前記ステップの前に、
前記変更後のメタデータを生成すると、グローバルタイムスタンプマネージャに第1タイムスタンプ割り当て要求を送信するステップと、
前記第1タイムスタンプ割り当て要求に応じて前記グローバルタイムスタンプマネージャから返信されたタイムスタンプを受信し、該タイムスタンプを前記変更後のメタデータのバージョン情報として決定するステップと、をさらに含む、
請求項2に記載の方法。
【請求項4】
前記グローバル最新バージョン情報は、
前記グローバルタイムスタンプマネージャに記憶されており、前記グローバル最新バージョン情報を前記変更後のメタデータのバージョン情報に更新することは、
前記グローバルタイムスタンプマネージャに提出成功通知を送信することにより、前記グローバルタイムスタンプマネージャが、前記提出成功通知に基づいて、記憶されている前記グローバル最新バージョン情報を前記変更後のメタデータのバージョン情報に更新するようにするステップを含む、
請求項2に記載の方法。
【請求項5】
前記ワークノードのローカルキャッシュには、データオブジェクトのローカル最新メタデータのバージョン情報が記憶されており、前記方法は、
前記変更後のメタデータの提出が成功すると、前記変更後のメタデータをローカルキャッシュに書き込むステップと、
前記ローカルキャッシュにおいて、メタデータが変更されたデータオブジェクトのローカル最新メタデータのバージョン情報を前記変更後のメタデータのバージョン情報に更新するステップと、をさらに含む、
請求項2乃至4のいずれか1項に記載の方法。
【請求項6】
前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定することは、
前記現在のグローバル最新バージョン情報に基づいて前記分散型データベースシステムのグローバルメタデータストアにおけるアクセス対象のメタデータを決定し、決定された前記アクセス対象のメタデータの中から前記ターゲットデータオブジェクトの最新バージョンのメタデータを検索するステップであって、前記アクセス対象のメタデータは、グローバルメタデータストアにおける、バージョン情報が前記現在のグローバル最新バージョン情報以下であるメタデータである、ステップを含む、
請求項1乃至4のいずれか1項に記載の方法。
【請求項7】
前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定することは、
ローカルキャッシュから前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を取得するステップと、
前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、前記現在のグローバル最新バージョン情報とが同じであるか否かを比較するステップと、
前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、前記現在のグローバル最新バージョン情報とが同じである場合、前記ローカルキャッシュに記憶されているメタデータの中から、前記ターゲットデータオブジェクトのローカル最新メタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして取得するステップと、を含む、
請求項1乃至4のいずれか1項に記載の方法。
【請求項8】
前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定することは、
前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、前記現在のグローバル最新バージョン情報とが同じではない場合、前記ローカルキャッシュ及びグローバルメタデータストアに記憶されている、前記ターゲットデータオブジェクトの各バージョンのメタデータの中から、ターゲットメタデータが存在するか否かを検索するステップであって、検索されるターゲットメタデータのバージョン情報が、前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報より新しく、且つ前記現在のグローバル最新バージョン情報より新しくない、ステップと、
ターゲットメタデータが存在する場合、検索された前記ターゲットメタデータのうち、バージョン情報が最も新しいターゲットメタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして決定するステップと、をさらに含む、
請求項7に記載の方法。
【請求項9】
検索された前記ターゲットメタデータのうち、バージョン情報が最も新しいターゲットメタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして決定する前記ステップの後に、
バージョン情報が最も新しい前記ターゲットメタデータを前記ローカルキャッシュに更新するステップと、
前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を、バージョン情報が最も新しい前記ターゲットメタデータに対応するバージョン情報に更新するステップと、をさらに含む、
請求項8に記載の方法。
【請求項10】
前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定することは、
前記ターゲットメタデータが存在しない場合、前記ターゲットデータオブジェクトのローカル最新メタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして決定するステップをさらに含む、
請求項8に記載の方法。
【請求項11】
ターゲットメタデータが存在しない場合、前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を前記現在のグローバル最新バージョン情報に更新するステップをさらに含む、
請求項10に記載の方法。
【請求項12】
前記グローバル最新バージョン情報は、前記分散型データベースシステムのグローバルタイムスタンプマネージャに記憶されており、前記ターゲットトランザクションのトランザクションタイムスタンプと、前記分散型データベースシステムの現在のグローバル最新バージョン情報とを取得する前記ステップは、
前記ターゲットトランザクションに対応する第2タイムスタンプ割り当て要求を前記グローバルタイムスタンプマネージャに送信するステップと、
前記第2タイムスタンプ割り当て要求に応じて前記グローバルタイムスタンプマネージャから返信された応答情報を受信するステップであって、該応答情報には、前記ターゲットトランザクションのトランザクションタイムスタンプと、前記現在のグローバル最新バージョン情報とが含まれる、ステップと、を含む、
請求項1乃至4のいずれか1項に記載の方法。
【請求項13】
前記ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、前記アクセス対象のユーザデータに対して前記ターゲットトランザクションにおける操作文を実行する前記ステップは、
前記ターゲットデータオブジェクトの最新バージョンのスキーマ情報に基づいて、前記ターゲットトランザクションにおける操作文を解析するステップと、
解析結果に基づいて前記アクセス対象のユーザデータを処理するステップと、を含む、
請求項1乃至4のいずれか1項に記載の方法。
【請求項14】
データベースのトランザクション処理装置であって、分散型データベースシステムのワークノードに適用され、
前記ワークノードがターゲットトランザクションを開始するときに、前記ターゲットトランザクションのトランザクションタイムスタンプと、前記分散型データベースシステムの現在のグローバル最新バージョン情報とを取得する取得モジュールであって、前記ターゲットトランザクションには、ターゲットデータオブジェクトに対する少なくとも1つの操作文が含まれ、前記グローバル最新バージョン情報は、前記分散型データベースシステムに記憶されている各メタデータのうち、最も新しく生成されたメタデータのバージョン情報であ
り、前記トランザクションタイムスタンプは、前記ターゲットトランザクションの開始時に、グローバルタイムスタンプマネージャによって現在の時間情報に基づいて生成された値であり、前記グローバルタイムスタンプマネージャは、前記分散型データベースシステムに記憶されている前記各メタデータの前記バージョン情報および前記ターゲットトランザクションの前記トランザクションタイムスタンプを生成するよう構成されている、取得モジュールと、
前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定し、前記トランザクションタイムスタンプに基づいて前記ターゲットトランザクションのアクセス対象のユーザデータを決定する決定モジュールと、
前記ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、前記アクセス対象のユーザデータに対して前記ターゲットトランザクションにおける操作文を実行するトランザクション処理モジュールと、を含む、
装置。
【請求項15】
サーバであって、
1つ又は複数のプロセッサと、
メモリと、
1つ又は複数のプログラムと、を備え、
前記1つ又は複数のプログラムは、前記メモリに記憶され、前記1つ又は複数のプロセッサによって実行され、請求項1乃至13のいずれか1項に記載の方法を実行させるように構成される、
サーバ。
【請求項16】
請求項1乃至13のいずれか1項に記載の方法をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2020年6月10日に中国特許庁に提出された、出願番号が第202010520559.2号であり、発明の名称が「データベースのトランザクション処理方法、装置、及びサーバ」である、中国特許出願に基づく優先権を主張し、その全ての内容が、参照することにより本願に組み込まれている。
本願は、データベースの技術分野に関し、特にデータベースのトランザクション処理方法、装置、サーバ、及び記憶媒体に関する。
【背景技術】
【0002】
メタデータ(metadata)は、データを記述するためのデータである。例えば、データベースにおけるデータオブジェクトの組織及び構造を記述するためのデータは、1種のメタデータと見なすことができる。分散型データベースシステムは、グローバルメタデータストアと、複数のワークノードとを含む。グローバルメタデータストアには、システム内の全てのメタデータを含むグローバルメタデータ情報がメンテナンスされる。各ワークノードのローカルキャッシュには、グローバルメタデータ情報の一部又は全部が記憶される。
【発明の概要】
【発明が解決しようとする課題】
【0003】
ワークノードは、データオブジェクトに対するトランザクション又は操作文を実行する前に、通常、当該データオブジェクトのメタデータに基づいて何らかの処理を行う必要がある。ワークノードは、そのメタデータを、まず、ローカルキャッシュから取得し、取得に失敗した場合に、グローバルメタデータストアから取得する。そこで、各ワークノードにキャッシュされたメタデータの整合性を確保することが重要となる。
【課題を解決するための手段】
【0004】
本願の実施例は、分散型データベースシステムのワークノードに適用される、データベースのトランザクション処理方法を提供する。該方法は、ターゲットトランザクションを開始するときに、ターゲットトランザクションのトランザクションタイムスタンプと、分散型データベースシステムの現在のグローバル最新バージョン情報とを取得するステップであって、ターゲットトランザクションには、ターゲットデータオブジェクトに対する少なくとも1つの操作文が含まれ、グローバル最新バージョン情報は、分散型データベースシステムに記憶されている各メタデータのうち、最も新しく生成されたメタデータのバージョン情報である、ステップと、現在のグローバル最新バージョン情報に基づいてターゲットデータオブジェクトの最新バージョンのメタデータを決定し、トランザクションタイムスタンプに基づいてターゲットトランザクションのアクセス対象のユーザデータを決定するステップと、ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、アクセス対象のユーザデータに対してターゲットトランザクションにおける操作文を実行するステップと、を含む。
【0005】
本願の実施例は、分散型データベースシステムのワークノードに適用される、データベースのトランザクション処理装置を提供する。該装置は、取得モジュールと、決定モジュールと、トランザクション処理モジュールと、を含む。取得モジュールは、ワークノードがターゲットトランザクションを開始するときに、ターゲットトランザクションのトランザクションタイムスタンプと、前記分散型データベースシステムの現在のグローバル最新バージョン情報とを取得する。前記ターゲットトランザクションには、ターゲットデータオブジェクトに対する少なくとも1つの操作文が含まれ、前記グローバル最新バージョン情報は、前記分散型データベースシステムに記憶されている各メタデータのうち、最も新しく生成されたメタデータのバージョン情報である。決定モジュールは、現在のグローバル最新バージョン情報に基づいてターゲットデータオブジェクトの最新バージョンのメタデータを決定し、トランザクションタイムスタンプに基づいてターゲットトランザクションのアクセス対象のユーザデータを決定する。トランザクション処理モジュールは、ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、アクセス対象のユーザデータに対してターゲットトランザクションにおける操作文を実行する。
【0006】
本願の実施例で提供される、データベースのトランザクション処理装置は、変更モジュールをさらに含む。変更モジュールは、いずれか1つのデータオブジェクトのメタデータに対する変更指示を受け付け、変更指示に基づいて該データオブジェクトの変更後のメタデータを生成し、グローバルメタデータストアに変更後のメタデータを提出し、変更後のメタデータの提出が成功すると、グローバル最新バージョン情報を変更後のメタデータのバージョン情報に更新する。
【0007】
本願の実施例で提供される、データベースのトランザクション処理装置において、変更モジュールは、さらに、グローバルメタデータストアに変更後のメタデータを提出する前に、変更後のメタデータを生成すると、グローバルタイムスタンプマネージャに第1タイムスタンプ割り当て要求を送信し、第1タイムスタンプ割り当て要求に応じてグローバルタイムスタンプマネージャから返信されたタイムスタンプを受信し、該タイムスタンプを変更後のメタデータのバージョン情報として決定する。
【0008】
本願の実施例で提供される、データベースのトランザクション処理装置において、グローバル最新バージョン情報は、グローバルタイムスタンプマネージャに記憶されており、変更モジュールがグローバル最新バージョン情報を変更後のメタデータのバージョン情報に更新する方式は、グローバルタイムスタンプマネージャに提出成功通知を送信することにより、グローバルタイムスタンプマネージャが、前記提出成功通知に基づいて、記憶されているグローバル最新バージョン情報を変更後のメタデータのバージョン情報に更新するようにする、ことである。
【0009】
本願の実施例で提供される、データベースのトランザクション処理装置において、ワークノードのローカルキャッシュには、データオブジェクトのローカル最新メタデータのバージョン情報が記憶されており、変更モジュールは、さらに、変更後のメタデータの提出が成功すると、変更後のメタデータをローカルキャッシュに書き込み、ローカルキャッシュにおいて、メタデータが変更されたデータオブジェクトのローカル最新メタデータのバージョン情報を変更後のメタデータのバージョン情報に更新する。
【0010】
本願の実施例で提供される、データベースのトランザクション処理装置において、決定モジュールが現在のグローバル最新バージョン情報に基づいてターゲットデータオブジェクトの最新バージョンのメタデータを決定する方式は、ローカルキャッシュからターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を取得し、ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、現在のグローバル最新バージョン情報とが同じであるか否かを比較し、ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、現在のグローバル最新バージョン情報とが同じである場合、ローカルキャッシュに記憶されているメタデータの中から、ターゲットデータオブジェクトのローカル最新メタデータをターゲットデータオブジェクトの最新バージョンのメタデータとして取得する、ことである。
【0011】
本願の実施例で提供される、データベースのトランザクション処理装置において、決定モジュールが現在のグローバル最新バージョン情報に基づいてターゲットデータオブジェクトの最新バージョンのメタデータを決定する方式は、ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、現在のグローバル最新バージョン情報とが同じではない場合、ローカルキャッシュ及びグローバルメタデータストアに記憶されている、ターゲットデータオブジェクトの各バージョンのメタデータの中から、ターゲットメタデータが存在するか否かを検索し、検索されるターゲットメタデータのバージョン情報が、ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報より新しく、且つ現在のグローバル最新バージョン情報より新しくなく、ターゲットメタデータが存在する場合、検索された前記ターゲットメタデータのうち、バージョン情報が最も新しいターゲットメタデータをターゲットデータオブジェクトの最新バージョンのメタデータとして決定する、ことである。
【0012】
本願の実施例で提供される、データベースのトランザクション処理装置において、決定モジュールは、さらに、バージョン情報が最も新しいターゲットメタデータをターゲットデータオブジェクトの最新バージョンのメタデータとして決定した後に、バージョン情報が最も新しいターゲットメタデータをローカルキャッシュに更新し、ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を、バージョン情報が最も新しいターゲットメタデータに対応するバージョン情報に更新する。
【0013】
本願の実施例で提供される、データベースのトランザクション処理装置において、決定モジュールが現在のグローバル最新バージョン情報に基づいてターゲットデータオブジェクトの最新バージョンのメタデータを決定する方式は、前記ターゲットメタデータが存在しない場合、ターゲットデータオブジェクトのローカル最新メタデータをターゲットデータオブジェクトの最新バージョンのメタデータとして決定し、ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を現在のグローバル最新バージョン情報に更新する、ことである。
【0014】
本願の実施例で提供される、データベースのトランザクション処理装置において、グローバル最新バージョン情報は、前記分散型データベースシステムのグローバルタイムスタンプマネージャに記憶されており、取得モジュールが、ターゲットトランザクションのトランザクションタイムスタンプと、分散型データベースシステムの現在のグローバル最新バージョン情報とを取得する方式は、ターゲットトランザクションに対応する第2タイムスタンプ割り当て要求をグローバルタイムスタンプマネージャに送信し、第2タイムスタンプ割り当て要求に応じてグローバルタイムスタンプマネージャから返信された応答情報を受信し、該応答情報には、ターゲットトランザクションのトランザクションタイムスタンプと、現在のグローバル最新バージョン情報とが含まれる、ことである。
【0015】
本願の実施例で提供される、データベースのトランザクション処理装置において、トランザクション処理モジュールが、ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、アクセス対象のユーザデータに対してターゲットトランザクションにおける操作文を実行する方式は、ターゲットデータオブジェクトの最新バージョンのスキーマ情報に基づいて、ターゲットトランザクションにおける操作文を解析し、解析結果に基づいてアクセス対象のユーザデータを処理する、ことである。
【0016】
他の態様で、本願の実施例は、1つ又は複数のプロセッサと、メモリと、1つ又は複数のプログラムと、を備えるサーバを提供する。前記1つ又は複数のプログラムは、メモリに記憶され、前記1つ又は複数のプロセッサによって実行され、上記の方法を実行させるように構成される。
【0017】
他の態様で、本願の実施例は、プログラムコードを記憶したコンピュータ可読記憶媒体を提供する。該プログラムコードは、プロセッサによって呼び出されて、上記の方法を実行させることが可能である。
【0018】
本願の実施例の構成をより明確に説明するために、以下に、実施例の説明に必要な図面を簡単に紹介する。明らかに、以下の説明における図面は本願のいくつかの実施例を示しているに過ぎず、当業者であれば、創造的な労働をすることなく、これらの図面から他の図面を得ることもできる。
【図面の簡単な説明】
【0019】
【
図1】本願の実施例で提供される分散型データベースシステムのアーキテクチャの模式図である。
【
図2】本願の実施例で提供されるデータベースのトランザクション処理方法のフローの模式図である。
【
図3】
図2に示されたステップS201のサブステップの模式図である。
【
図4】本願の実施例で提供されるデータベースのトランザクション処理方法の他のフローの模式図である。
【
図5】本願の実施例で提供されるデータベースのトランザクション処理方法の別のフローの模式図である。
【
図6】
図2に示されたステップS202のサブステップの模式図である。
【
図7】本願の実施例で提供されるデータベースのトランザクション処理方法のさらに他のフローの模式図である。
【
図8】本願の実施例で提供されるデータベースのトランザクション処理方法の具体例におけるインタラクティブなフローチャートである。
【
図9】本願の実施例で提供されるデータベースのトランザクション処理方法の他の具体例におけるインタラクティブなフローチャートである。
【
図10】本願の実施例で提供されるデータベースのトランザクション処理方法の別の具体例におけるインタラクティブなフローチャートである。
【
図11】本願の実施例で提供されるデータベースのトランザクション処理方法のさらに他の具体例におけるインタラクティブなフローチャートである。
【
図12】本願の実施例で提供されるデータベースのトランザクション処理装置のブロック図である。
【
図13】本願の実施例によるデータベースのトランザクション処理方法を実行するための本願の実施例のサーバのブロック図である。
【
図14】本願の実施例によるデータベースのトランザクション処理方法を実現するプログラムコードを保存又は持参するための本願の実施例の記憶ユニットである。
【発明を実施するための形態】
【0020】
当業者が本願の構成をより良く理解できるように、以下、本願の実施例の図面を参照しながら、本願の実施例の構成を明確かつ完全に説明する。
【0021】
図1を参照する。
図1は、本願の実施例で提供される分散型データベースシステム10のアーキテクチャの模式図である。分散型データベースシステム10は、分散型ストレージシステム200と、グローバルメタデータストア300と、グローバルタイムスタンプマネージャ(GTM:Global Timestamp Manager)400と、少なくとも2つのワークノード(例えば、
図1に示すワークノード110、120、及び130)と、を含む。
【0022】
そのうち、分散型ストレージシステム200は、ユーザデータを記憶するための複数の物理ストレージノード(例えば、ストレージサーバ、ホストなど)を含んでもよい。分散型ストレージシステム200は、複数のデータストア(DS:Data Store)ノードをさらに含んでもよく、各DSノードそれぞれは、前記複数の物理ストレージノードで構成されるストレージリソースプールにおける一部のストレージリソースに対応し、該一部のストレージリソースに記憶されているユーザデータを管理する。
【0023】
ワークノードは、計算ノード(CN:Computation Node)と呼ばれてもよく、データベースユーザ(user)が提出したトランザクション要求、及びトランザクションにおける操作文を受け付けて実行するためのプロセスである。ここでのデータベースユーザは、分散型データベースシステムにおけるデータベースオブジェクトと理解してもよく、ユーザオブジェクトと呼んでもよく、ユーザ登録情報とユーザデータとの間の接続ブリッジと見なすことができる。
【0024】
本願の実施例において、分散型データベースシステム10は、記憶と計算が分離されるアーキテクチャを採用する場合、ワークノードとDSノードは、通常、異なるプロセスである。分散型データベースシステム10は、記憶と計算が分離されるアーキテクチャを採用しない場合、ワークノードとDSノードは、単に論理的なモジュールであり、実際には、同一のプロセスに属することができる。
【0025】
上記のワークノード及びDSノードは、分散型ストレージシステム200における物理ストレージノード上で実行されてもよいし、分散型ストレージシステム200以外の他の物理サーバ上で実行されてもよい。本願の実施例は、これを限定しない。
【0026】
グローバルメタデータストアには、分散型データベースシステム10における全てのメタデータが記憶されており、各メタデータそれぞれは、少なくとも2つのバージョンがあってもよい。各ワークノードは、いずれもローカルキャッシュを有する。例えば、ワークノード110はローカルキャッシュ111、ワークノード120はローカルキャッシュ121、ワークノード130はローカルキャッシュ131を有する。ここでのローカルは、ワークノードが位置する物理機器と理解してもよい。これに対応して、ワークノードのローカルキャッシュは、ワークノードが位置する物理サーバ上の記憶空間であってもよく、該記憶空間は、ワークノードが分散型データベースシステム10のグローバルメタデータ情報の一部又は全部をキャッシュするために用いることができる。本願の実施例において、グローバルメタデータストアは、例えば、グローバルデータ辞書(GDD:Global Data Dictionary)であってもよく、ワークノードのローカルキャッシュは、データ辞書キャッシュ(DDC:Data Dictionary Cache)であってもよい。
【0027】
データベースシステムにおいて、一般的なメタデータの1つは、スキーマ(schema)情報である。schema情報とは、データベースシステムにおけるデータ全体の論理構造及び特徴の記述情報であり、データベースユーザの論理データビューと理解してもよい。データベースシステムにおいて、各データオブジェクトそれぞれは、対応するschemaオブジェクトを有してもよく、ここでのschemaオブジェクトは、一定のデータ構造に従ってデータオブジェクトのschema情報を組み合わせた集合と理解してもよい。
【0028】
データオブジェクトとは、データベースシステムに記憶されているデータである。データベースシステムのタイプが異なることに伴い、データオブジェクトも異なる。例えば、いくつかのデータベースシステムは、データテーブル(Data Table)を記憶の基本オブジェクトとするため、これらのデータベースシステムにおけるデータオブジェクトは、データテーブルと理解してもよい。また、例えば、いくつかのデータベースシステムは、文書(Document)を記憶の基本オブジェクトとするため、これらのデータベースシステムにおけるデータオブジェクトは、文書と理解してもよい。データテーブルのschemaオブジェクトを例にすると、その中には、通常、データテーブルの定義情報、例えば、テーブル名、テーブルタイプ、テーブル内の属性名、属性タイプ、インデックス(index)、データ制約などが含まれる。
【0029】
メタデータがschema情報である場合を例にすると、分散型データベースシステム10において、ワークノードは、データオブジェクトに対していかなるデータ照会及びデータ操作を行う前にも、通常、まず、該データオブジェクトのschemaオブジェクトにアクセスすることにより、前記データ照会及びデータ操作のターゲットデータが存在するか否かを決定する必要がある。例えば、ワークノード110は、テーブルt1から列C1のデータを削除しようとする場合、テーブルt1のschemaオブジェクトにアクセスすることにより、テーブルt1に列C1が存在するか否かを検査する必要がある。詳細には、ワークノード101は、まず、ローカルキャッシュ111からテーブルt1のschemaオブジェクトを検索し、ローカルキャッシュ111からテーブルt1のschemaオブジェクトが検索されなかった場合、グローバルメタデータストア300からテーブルt1のschemaオブジェクトを検索することにより、該schemaオブジェクトに基づいて、テーブルt1に列C1が存在するか否かを検査する。テーブルt1に列C1が存在することが検査により決定されると、テーブルt1から列C1のデータを削除する操作を実行する。
【0030】
ここから分かるように、あるワークノードが、あるデータオブジェクトO1のschemaオブジェクトを変更した後、他のワークノードが該変更をタイムリーに知ることができない場合、他のワークノードがデータオブジェクトO1に対してデータベースのトランザクション又は操作文を実行するときにアクセスするschemaオブジェクトは、依然としてデータオブジェクトO1の変更前のschemaオブジェクトである可能性がある。これにより、データベースのトランザクション又は操作文の処理に異常が発生することを招く可能性がある。つまり、あるワークノードがデータオブジェクトのメタデータを変更した後、他のワークノードが該メタデータの変更をタイムリーに知ることが難しく、各ワークノードがトランザクションを処理するときに使用するメタデータの不一致を招きやすく、トランザクション処理の異常が発生してしまう。
【0031】
本願の実施例において、トランザクションは、データベースシステムにおけるユーザデータに対する1つ又は複数の操作文(例えば、追加、削除、照会、又は変更を行うための操作文)で構成される論理作業単位である。トランザクションは、通常、ACID特性を有する。ACIDは、それぞれ、Atomicity(不可分性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)の略語である。そのうち、不可分性とは、トランザクションが分割不可な作業単位であることを意味し、トランザクションにおける操作文が指示する操作は、いずれも発生するか、又は、いずれも発生しない。一貫性とは、トランザクション前後のデータの完全性を一貫して保持する必要があることを意味し、トランザクションでデータベースシステムをある正確な状態から他の正確な状態に変換させると理解してもよい。ここでの正確な状態は、データベースシステム内のデータが所定の制約条件を満たす状態と理解してもよい。独立性とは、複数のユーザがデータベースシステムに並行にアクセスするとき、データベースシステムが各ユーザに対して開始するトランザクションは互いに干渉しないことを意味する。永続性とは、トランザクションが一旦コミット(commit)されると、該トランザクションによるデータベースシステム内のデータへの変更が永続的となることを意味する。
上述した、メタデータの変更を各ワークノードがタイムリーに知ることができない場合に発生する異常は、様々であり得る。
【0032】
一例では、分散型データベースシステム10において、現在のテーブルt1のschemaオブジェクトにV1及びV2という2つのバージョンがあるとする。この場合、ワークノード110は、テーブルt1のschemaオブジェクトを変更した。例えば、ワークノード110は、テーブルt1の列C1を削除した後、テーブルt1のschemaオブジェクトから、列C1に基づいて作成されたインデックスを削除した。このようにして、テーブルt1の新しいバージョンのschemaオブジェクト、即ち、V3バージョンのschemaオブジェクトが生成される。V3バージョンのschemaオブジェクトがまだワークノード120に同期されていない場合に、ワークノード120は、トランザクションT1を開始した。トランザクションT1は、テーブルt1がどの列を有するかを照会する操作文1と、テーブルt1に1行のデータを書き込む操作文2と、テーブルt1に1行のデータをさらに書き込む操作文3との3つの操作文をこの順に含む。トランザクションT1における操作文2が実行された後に、V3バージョンのschemaオブジェクトがワークノード120に同期されるのであれば、以下の状況が発生する。即ち、ワークノード120は、トランザクションT1における操作文1及び操作文2を処理する過程で、アクセスしたテーブルt1のschemaオブジェクトが、V2バージョンのものであり、その中に列C1のインデックスが存在し、トランザクションT1の操作文3を処理する過程で、アクセスしたテーブルt1のschemaオブジェクトが、V3バージョンのものであり、その中に列C1のインデックスが存在しない。つまり、同一のトランザクションの処理過程でメタデータの不一致が発生する。
【0033】
分散型データベースシステムにおけるワークノードは、並行トランザクションの独立性を保持するために、スナップショットアイソレーション技術を用いてトランザクションを処理することが多い。スナップショットアイソレーションの基本的な考え方は、データ項目の追加、削除、変更が発生するときにデータ項目の新しいバージョンを作成し、現在の時間に基づいて該新しいバージョンにタイムスタンプをバージョン情報(例えば、バージョン番号)として割り当てる。ここでのタイムスタンプは、通常、タイムスタンプ関数で現在の時間を処理した数値であり、時間の経過と共にしだいに増えることができる。ワークノードは、いずれか1つのトランザクションの操作文を実行するときに、該トランザクションのトランザクションタイムスタンプを利用してユーザデータスナップショット(snapshot)を取得することができ、このユーザデータスナップショットのバージョン情報は、即ち、該トランザクションタイムスタンプである。バージョン情報がユーザデータスナップショットのバージョン情報以下であるユーザデータのみが、該トランザクションにとって見えるものであり、即ち、該トランザクションのアクセス対象のユーザデータ(「該トランザクションがアクセスすべきユーザデータ」とも呼ぶ)とすることができる。
【0034】
上記の例において、ワークノード120が操作文1及び操作文2を実行する過程で、アクセス対象のユーザデータのうち、テーブルt1には、列C1のデータが含まれないが、そのアクセスしたV2バージョンのschemaオブジェクトには、列C1のインデックスが存在する。言い換えれば、メタデータの変更を各ワークノードがタイムリーに知ることができない場合、同一のトランザクション又は操作文は、ユーザデータとメタデータに対するアイソレーションレベルが異なる。さらに言い換えれば、ワークノードがトランザクション又は操作文の処理過程で見ることができるユーザデータとメタデータは、対応しない可能性がある。これにより、最終的な処理結果にエラーが発生する可能性がある。
【0035】
そこで、ワークノードがデータオブジェクトのメタデータを変更した後、その変更を他のワークノードがタイムリーに知ることを可能にすることが非常に重要である。これに基づき、いくつかの実施形態において、分散型データベースシステムは、2フェーズコミット(2PC:Two-phase Commit)などのトランザクションコミットプロトコルに基づく方式で、schemaオブジェクトの変更及び同期を実現する。
【0036】
詳細には、ワークノードは、schemaオブジェクトの変更を特殊なトランザクションとし、schema変更トランザクションを開始するワークノードをトランザクションコミットのコーディネータとし、schemaオブジェクトを同期的に変更する必要がある他のワークノードをschema変更トランザクションの参加者としてもよい。この構成を採用する前提として、分散型データベースシステムにおける他の全てのノード(即ち、参加者)を知り、且つそれらを接続することができ、コーディネータ及び各参加者は、いずれも、トランザクションコミットプロトコルの使用に供するために、各自のノード状態をメンテナンスしてログを記録する必要がある。つまり、このような方式では、ワークノードは、状態がなければならない。そして、schema変更及び同期の過程で、システムから退出するか又はシステムに加入するワークノードが存在してはならない。そうでなければ、変更及び同期が失敗してしまう。
【0037】
しかしながら、現在の分散型データベースの分野では、より優れたスケーラビリティ及びコストパフォーマンスを達成するために、アーキテクチャ設計の面で、記憶と計算が分離されるアーキテクチャ、及びステートレスワークノードを採用することが多い。このような分散型データベースシステムにおいて、ステートレスワークノードは、データ記憶層に非結合であり、ユーザからのデータ操作要求を受け付け、データ操作要求に基づいて記憶層からデータにアクセスして処理タスクを実行することのみを担当する。ステートレスワークノード自体は、いかなる永続的なデータ及び状態も記憶しない。そして、ステートレスワークノードは、障害、運用保守、容量拡大や容量縮小などの原因で、随時に退出又は新規追加することができる。そのため、2フェーズコミットなどのトランザクションコミットプロトコルに基づくメタデータ変更及び同期の方式は、通常、このような分散型データベースシステムに適用しない。
【0038】
他の実施形態において、定期方式でschemaオブジェクトの変更及び同期を実現することができる。詳細には、schemaオブジェクトの変更を行うワークノードは、変更されたschemaオブジェクトをグローバルメタデータストアに書き込むことができ、他の各ワークノードがグローバルメタデータストアからschemaオブジェクトを定期的に読み取ることにより、同期を実現する。
【0039】
さらに他の実施形態において、リース契約及び中間状態に基づく方式で、schemaオブジェクトに対する変更を実現することができる。この方式では、各ワークノード上のschemaオブジェクトは、schemaオブジェクトの状態(ここでは、「schema状態」と呼ぶ)の1つと見なされ、schemaオブジェクトに対する変更及び同期は、schema状態に対する変更及び同期と見なすことができる。例えば、テーブルt1のschemaオブジェクトに対して行われた変更が、ある列のインデックスを追加するものであれば、インデックスが追加されていないschemaオブジェクトは、absent状態と見なすことができるが、インデックスが追加されているschemaオブジェクトは、public状態と見なすことができる。
【0040】
リース契約メカニズムによれば、各schema状態は、いずれも、リース期間(lease)があり、各ワークノードは、リース契約の終了(即ち、リース期間の満了)前に契約を継続しなければならない。ワークノードは、契約を継続する際に、グローバルメタデータストアに新たなschema状態が存在するか否かを検査する必要があり、グローバルメタデータストアに新たなschema状態が存在する場合、この新たな状態をローカルキャッシュにロードする必要がある。あるワークノードは、障害又は異常状況で契約を継続することができない場合、データベースユーザにサービスを提供しなくなる。リース契約メカニズムによれば、ユーザにサービスを提供できるいかなるワークノードも、1つのリース期間内で、最も新しいschema状態を取得できることが保証される。異なるワークノードが、ある時刻に異なるschema状態を保有することでデータの不一致を招くことを防止するために、このような方式では、schemaの中間状態が採用される。schemaの中間状態は、特定のタイプ(例えば、削除、挿入、更新など)の操作文のみに対して有効である。このような方式を採用すれば、上記の例では、ワークノード上のschemaオブジェクトがpublic状態にある場合にのみ、ワークノード上のテーブルt1のschemaオブジェクトに追加されたインデックスが外部から見えるが、ワークノード上のschemaオブジェクトがabsent状態又は他の中間状態にある場合には、前記追加されたインデックスが存在しないか又は外部から見えない。
【0041】
ここから分かるように、上述した定期方式、リース契約及び中間状態に基づく方式では、あるワークノードがschemaオブジェクトを変更した後、他の各ワークノードは、いずれも、一定時間後にのみ、変更後のschemaオブジェクトを同期することができ、即ち、変更後のメタデータをタイムリーに知ることができない。これにより、上記に説明した、同期がちょうどトランザクション実行中に発生するため、同一のトランザクションに属する異なる操作文で見えるschema情報が異なり、又は、同一のトランザクションで見えるユーザデータとschema情報が対応しないことが発生する可能性がある。
【0042】
これに基づき、本願の実施例は、ターゲットトランザクションの開始前に変更されたメタデータを、該メタデータを使用する必要があるワークノードがタイムリーに知ることを確保できるデータベースのトランザクション処理方法、装置、及びサーバを提供している。以下、その内容について述べる。
【0043】
図2を参照する。
図2は、本願の実施例で提供されるデータベース
のトランザクション処理方法のフローの模式図である。該方法は、
図1に示すいずれか1つのワークノードに適用することができる。以下に詳述する。
【0044】
S201では、ターゲットトランザクションを開始するときに、前記ターゲットトランザクションのトランザクションタイムスタンプと、分散型データベースシステムの現在のグローバル最新バージョン情報とを取得し、前記ターゲットトランザクションには、ターゲットデータオブジェクトに対する少なくとも1つの操作文が含まれ、前記グローバル最新バージョン情報は、前記分散型データベースシステムに記憶されている各メタデータのうち、最も新しく生成されたメタデータのバージョン情報である。
【0045】
ここで、ターゲットトランザクションを開始することは、ターゲットトランザクションの実行が開始されることを指してもよい。各トランザクションそれぞれのトランザクションタイムスタンプは、該トランザクションの開始時にグローバルタイムスタンプマネージャ400が現在の時間情報に基づいて生成した数値であってよい。例えば、トランザクションの開始時に、タイムスタンプ関数で現在の時間情報を処理することにより、関数値を取得してもよい。該関数値は、該トランザクションのトランザクションタイムスタンプとしてもよい。いくつかの実施例において、タイムスタンプ関数は、通常、単調増加するものである。これに対応して、トランザクションのトランザクションタイムスタンプも、トランザクションの開始時間が増加するにつれて増加する。
【0046】
本実施例において、ワークノードは、いずれか1つのデータオブジェクトのいずれか1つのバージョンのメタデータを取得すると、該メタデータにバージョン情報を割り当てることをグローバルタイムスタンプマネージャ400に要求してもよい。詳細には、メタデータのバージョン情報も、グローバルタイムスタンプマネージャ400がタイムスタンプ関数で現在の時間情報を処理して生成した数値であってもよい。本実施例において、グローバルタイムスタンプマネージャ400は、メタデータのバージョン情報と、トランザクションのトランザクションタイムスタンプとを同一のタイムスタンプ関数で生成してもよい。この場合、メタデータのバージョン情報と、トランザクションのトランザクションタイムスタンプとは、同一のタイムスタンプ系列に属する。グローバルタイムスタンプマネージャ400は、メタデータのバージョン情報と、トランザクションのトランザクションタイムスタンプとを異なるタイムスタンプ関数で生成してもよい。この場合、メタデータのバージョン情報と、トランザクションのトランザクションタイムスタンプとは、異なるタイムスタンプ系列に属する。本実施例は、これを限定しない。
【0047】
メタデータのバージョン情報が、時間情報に基づいて生成されたタイムスタンプである場合、同一のメタデータのバージョン情報の間に時間的順序が存在し、異なるメタデータのバージョン情報の間にも時間的順序が存在する。
【0048】
例えば、分散型データベースシステム10にメタデータmd1とmd2が存在し、そのうち、メタデータmd1は、それぞれV11とV12である2つのバージョンがあり、メタデータmd2は、V21とV22の2つのバージョンがある。この場合、V11、V12、V21、V22の間に時間的順序があり、該時間的順序は、V11、V12、V21、及びV22の間の大きさの順序によって表すことができる。タイムスタンプ関数が単調増加関数である場合、メタデータは、バージョン情報が大きいほど、生成時間が遅く、データが新しい。以下、特に説明されない限り、タイムスタンプ関数が単調増加する場合を例に説明する。
【0049】
そうすると、分散型データベースシステム10に記憶されている全てのメタデータのバージョン情報のうち、1つの最大のバージョン情報が必ず存在し、このバージョン情報を有するメタデータが、最も新しく生成されたメタデータである。例えば、分散型データベースシステム10にメタデータmd1及びmd2のみが記憶されている場合、V22が最大のバージョン情報であれば、バージョン情報がV22であるメタデータmd2が、最も新しく生成されたメタデータである。
【0050】
グローバルタイムスタンプマネージャ400には、グローバル最新バージョン情報が記憶されてもよく、前記グローバル最新バージョン情報は、即ち、分散型データベースシステム10の全てのメタデータのうち、最も新しく生成されたメタデータ(例えば、上記の例におけるバージョン情報がV22であるメタデータmd2)のバージョン情報である。したがって、分散型データベースシステム10のグローバル最新バージョン情報は、システム10内のメタデータの変更に伴って変化する。システム10において新たなメタデータが生成されると、グローバル最新バージョン情報が更新される。これに対応して、S201に記載された現在のグローバル最新バージョン情報は、ワークノードがターゲットトランザクションを開始するときにグローバルタイムスタンプマネージャから取得したグローバル最新バージョン情報を指し、ターゲットトランザクションの開始時刻前に分散型データベースシステム10内で生成された最新メタデータのバージョン情報を示す。
【0051】
S202では、前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定し、前記トランザクションタイムスタンプに基づいて前記ターゲットトランザクションのアクセス対象のユーザデータを決定する。
【0052】
本実施例において、ワークノードは、S201で取得されたグローバル最新バージョン情報、即ち、前記現在のグローバル最新バージョン情報に基づいて、グローバルメタデータストア300にアクセスすることにより、メタデータスナップショットを取得してもよい。このようにすると、バージョン情報が前記現在のグローバル最新バージョン情報以下であるメタデータをアクセス対象のメタデータとしたことに相当する。そして、ワークノードは、アクセス対象のメタデータの中から、ターゲットデータオブジェクトの最新バージョンのメタデータ、即ち、ターゲットデータオブジェクトの各バージョンのメタデータのうち、バージョン情報が最大となるものを検索することができる。
【0053】
また、ワークノードは、さらに、ターゲットトランザクションのトランザクションタイムスタンプでユーザデータスナップショットを作成してもよい。これにより、ターゲットトランザクションで見えるユーザデータ、即ち、バージョン情報がトランザクションタイムスタンプ以下であるユーザデータを決定することができる。決定されたターゲットトランザクションで見えるユーザデータは、即ち、前記アクセス対象のユーザデータであり、つまり、ターゲットトランザクションを処理する過程でアクセス可能なユーザデータである。
【0054】
S203では、前記ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、前記アクセス対象のユーザデータに対して前記ターゲットトランザクションにおける操作文を実行する。
【0055】
実施過程で、ワークノードは、ターゲットデータオブジェクトの最新バージョンのメタデータ(例えば、schema情報)にアクセスし、ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、ターゲットトランザクションにおける操作文を解析し、解析結果に基づいてアクセス対象のユーザデータを処理してもよい。ここでの解析は、例えば、ターゲットトランザクションにおける操作文の処理対象(例えば、データテーブル、データテーブルにおける行、列、主キーなど)が存在するか否かなどを検査することであってもよい。解析結果、操作文の処理対象が存在する場合、該操作文を実行し続けることができる。
【0056】
図2に示すフローによれば、分散型データベースシステムにおける任意のメタデータの変更は、いずれもグローバル
最新バージョン情報の更新をトリガすることができるが、ワークノードは、ターゲットトランザクションを開始するときに、現在のグローバル最新バージョン情報に基づいてターゲットデータオブジェクトの最新バージョンのメタデータを決定する。したがって、ターゲットトランザクションの開始前に変更されたメタデータをワークノードがタイムリーに知ることを確保することができる。言い換えれば、ターゲットトランザクションの開始前にメタデータの変更が発生し、ワークノードがターゲットトランザクションの実行中にちょうど該メタデータを使用する必要がある場合、本発明によって、ワークノードがターゲットトランザクションの実行過程全体で変更後のメタデータを使用することを確保することができる。
【0057】
さらに、本発明は、ワークノードがターゲットトランザクションの実行過程全体で変更後のメタデータを使用することを確保することができるため、同一のトランザクションの異なる操作文を実行する過程でアクセスするメタデータが一致しない状況を回避する。また、本発明において、ワークノードが最初に取得したのは変更後のメタデータであり、前述した例における、メタデータの変更をタイムリーに見ることができないことによる、同一のトランザクションで見えるユーザデータとメタデータが対応しないという問題を回避する。
【0058】
図2及び
図3を併せて参照する。以下、
図2に示すフローをさらに述べる。詳細には、S201における前記ターゲットトランザクションのトランザクションタイムスタンプと、前記分散型データベースシステムの現在のグローバル最新バージョン情報とを取得するステップは、
図3に示すフローによって実現することができる。
S201-1では、ターゲットトランザクションに対応する第2タイムスタンプ割り当て要求をグローバルタイムスタンプマネージャに送信する。
【0059】
ここで、第2タイムスタンプ割り当て要求は、あるトランザクションに対して送信されたタイムスタンプ割り当て要求を指し、該トランザクションにトランザクションタイムスタンプを割り当てることをグローバルタイムスタンプマネージャ400に要求するためのものである。理解できるものとして、ここでの第2タイムスタンプ割り当て要求は、後述する第1タイムスタンプ割り当て要求と区別するためだけであり、「第1」、「第2」によってタイムスタンプ要求の重要性を制限するものではない。
【0060】
S201-2では、第2タイムスタンプ割り当て要求に応じてグローバルタイムスタンプマネージャから返信された応答情報を受信し、該応答情報には、ターゲットトランザクションのトランザクションタイムスタンプと、前記現在のグローバル最新バージョン情報とが含まれる。
【0061】
本実施例において、グローバルタイムスタンプマネージャ400は、第2タイムスタンプ割り当て要求を受信すると、現在の時間情報に基づいてタイムスタンプをトランザクションタイムスタンプとして生成し、現在のグローバル最新バージョン情報を取得して、第2タイムスタンプ割り当て要求に対応する応答情報に充填し、該応答情報をワークノードに送信してもよい。説明すべきものとして、トランザクションタイムスタンプの生成と、現在のグローバル最新バージョン情報の取得との2つの操作は、不可分性を有し、言い換えれば、この2つの操作は、いずれも発生するか、又はいずれも発生しない。実施過程では、この2つの操作に対してアトミックロックを設定する方式で、その不可分性を実現してもよい。もちろん、他の方式で前記2つの操作の不可分性を実現してもよい。本実施例は、これを限定しない。
【0062】
図3に示すフローによれば、ターゲットトランザクションのトランザクションタイムスタンプと、現在のグローバル最新バージョン情報とが基本的に同一の時点に対応することを確保することができる。これに対応して、トランザクションタイムスタンプに基づいて決定されたアクセス対象のユーザデータと、現在のグローバル最新バージョン情報に基づいて決定されたターゲットデータオブジェクトの最新バージョンのメタデータとは、互いに対応するバージョンである。
【0063】
本実施例において、グローバルタイムスタンプマネージャ400がメンテナンスするグローバル最新バージョン情報は、
図4に示すフローによって更新することができる。
【0064】
S401では、いずれか1つのデータオブジェクトのメタデータに対する変更指示を受け付け、前記変更指示に基づいて該データオブジェクトの変更後のメタデータを生成する。
【0065】
ここでの変更指示は、メタデータを変化させることが可能な任意の指示、例えば、追加、削除、変更などの操作を実現するための指示であってもよい。変更指示は、ユーザ又はデータベース管理者により入力されてもよいし、データオブジェクトに対する操作によってトリガされてもよい。本実施例は、これを限定しない。
【0066】
分散型データベースシステム10における各ワークノードは、いずれか1つのデータオブジェクトのメタデータに対する変更指示を受け付けると、該データオブジェクトの現在バージョンのメタデータに対してスナップショットを作成してもよい。該スナップショットのバージョン情報は、現在の時間情報に基づいて生成されたタイムスタンプであってもよい。そして、該データオブジェクトのメタデータに対して変更指示を実行することにより、該データオブジェクトの新しいバージョンのメタデータ、即ち、前記変更後のメタデータを取得する。
【0067】
このとき、前記変更後のメタデータにバージョン情報を割り当てることをグローバルタイムスタンプマネージャ400に要求してもよい。これに基づき、本実施例で提供されるデータベースのトランザクション処理方法は、
図5に示すステップをさらに含んでもよい。
S501では、変更後のメタデータを生成すると、グローバルタイムスタンプマネージャに第1タイムスタンプ割り当て要求を送信する。
【0068】
S502では、前記第1タイムスタンプ割り当て要求に応じて前記グローバルタイムスタンプマネージャから返信されたタイムスタンプを受信し、該タイムスタンプを前記変更後のメタデータのバージョン情報として決定する。
【0069】
本実施例において、第1タイムスタンプ割り当て要求は、メタデータに対して送信されたタイムスタンプ割り当て要求を指し、第1タイムスタンプ割り当て要求に応じて返信されたタイムスタンプは、メタデータのバージョン情報である。
【0070】
グローバルタイムスタンプマネージャ400は、ワークノードから送信された第1タイムスタンプ割り当て要求を受信すると、現在の時間情報に基づいてタイムスタンプを生成し、タイムスタンプを第1タイムスタンプ割り当て要求に対応する応答情報に付してワークノードに返信してもよい。ワークノードは、該応答情報を受信し、該応答情報におけるタイムスタンプを抽出し、抽出されたタイムスタンプを前記変更後のメタデータのバージョン情報として決定する。
S402では、グローバルメタデータストアに前記変更後のメタデータを提出する。
【0071】
本実施例において、
図5に示すステップは、S402の前に実行してもよい。実施過程で、ワークノードは、グローバルメタデータストア300に変更後のメタデータ及びそのバージョン情報を一括して提出してもよい。変更後のメタデータ及びそのバージョン情報は、グローバルメタデータストア300に書き込まれる。書き込みが成功すると、グローバルメタデータストア300は、提出確認情報を返信してもよい。このとき、変更後のメタデータ及びそのバージョン情報は、グローバルメタデータストア300に永続的に記憶されている。
S403では、前記変更後のメタデータの提出が成功すると、前記グローバル最新バージョン情報を前記変更後のメタデータのバージョン情報に更新する。
【0072】
ワークノードは、グローバルメタデータストア300から返信された提出確認情報を受信すると、前記変更後のメタデータの提出が成功したと考えられる。したがって、ワークノードは、グローバルメタデータストア300から返信された提出確認情報を受信すると、グローバルタイムスタンプマネージャ400に提出成功通知を送信してもよい。例示的に、提出成功通知には、変更後のメタデータのバージョン情報が含まれてもよい。これにより、グローバルタイムスタンプマネージャ400は、受信された提出成功通知に基づいて、それに記憶されているグローバル最新バージョン情報を前記変更後のメタデータのバージョン情報に修正することが可能になる。
【0073】
詳細には、グローバルタイムスタンプマネージャ400は、提出成功通知を受信すると、提出成功通知に付されている変更後のメタデータのバージョン情報に基づいて、該バージョン情報を有するメタデータがグローバルメタデータストア300に成功に提出されたことを決定することができ、さらに、記憶されているグローバル最新バージョン情報を、提出成功通知に付されている該バージョン情報、即ち、変更後のメタデータのバージョン情報に更新することができる。
【0074】
本実施例において、変更後のメタデータの提出が成功しない場合、ワークノードは、S402を繰り返して実行してもよい。理解できるものとして、ワークノードは、メタデータの変更を行う過程で永続的なログ又はタスクキューをメンテナンスし、前記永続的なログ又はタスクキューには、メタデータの変更進捗が記録される。メタデータの変更過程で、メタデータの変更を実行するワークノードに障害が発生すると、該ワークノード又は他のワークノードは、障害回復後に、前記永続的なログ又はタスクキューに基づいて、変更後のメタデータの提出が成功するまでメタデータの変更を実行し続けてもよい。
【0075】
本実施例において、グローバル最新バージョン情報は、1つの変数と理解してもよいが、グローバル最新バージョン情報に対する更新は、該変数の値に対する更新と理解してもよい。本明細書では、後述する他の変数と区別するために、グローバル最新バージョン情報を第1変数と呼んでもよい。
【0076】
図4に示すフローによれば、グローバルタイムスタンプマネージャ400に記憶されているグローバル最新バージョン情報は、分散型データベースシステム10における最も新しく生成されたメタデータのバージョン情報であることを確保することができる。
【0077】
説明の便宜上、ここでは、ターゲットトランザクションの対象となるターゲットデータオブジェクトを第1データオブジェクトとして約束する。上述したように、いかなるワークノードのメタデータに対する変更も、グローバルタイムスタンプマネージャ400におけるグローバル最新バージョン情報の更新をトリガする。そのため、ターゲットトランザクションの開始前に、ターゲットデータオブジェクトについて、新しいバージョンのメタデータが生成されていないか、新しいバージョンのメタデータが、ターゲットトランザクションを開始したワークノードのローカルキャッシュに同期されている場合が存在する可能性がある。この場合、ワークノードのローカルキャッシュにおけるターゲットデータオブジェクトの最新メタデータは、既に、ターゲットデータオブジェクトの分散型データベースシステム10における最新メタデータとなっている。このとき、ワークノードは、S202を実行する過程で、グローバルメタデータストア300にアクセスする必要はない。
【0078】
そのため、ワークノードによるグローバルメタデータストア300への不必要なアクセスを回避し、ネットワークIO(入力/出力:Input/Output)回数を減少させ、ネットワーク帯域幅の占有を減少させ、システム性能を向上させるために、本実施例では、
図6に示すフローによって、
図2に示すS202を実現することができる。
S202-1では、ローカルキャッシュからターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を取得する。
【0079】
ここで、ローカルキャッシュとは、ターゲットトランザクションを開始するワークノードのローカルキャッシュである。各ワークノードのローカルキャッシュには、各データオブジェクトのローカル最新メタデータのバージョン情報がメンテナンスされてもよい。ここで記述したローカル最新メタデータのバージョン情報は、1つの変数と理解してもよく、ここでは第2変数と呼ばれる。第2変数の値は、更新可能なものである。各ワークノードのローカルキャッシュには、各データオブジェクトそれぞれに対応する第2変数が存在する。
【0080】
例えば、ワークノード120のローカルキャッシュ121には、分散型データベースシステム10における各データオブジェクトの第2変数が存在し、第2変数の値は、該データオブジェクトのローカルキャッシュ121における最新メタデータのバージョン情報を示す。該データオブジェクトがデータテーブルt1である場合を例にすると、ローカルキャッシュ121には、データテーブルt1の各バージョンのメタデータが記憶されており、データテーブルt1のローカルキャッシュ121における第2変数の値が示すのは、前記各バージョンのメタデータのバージョン情報のうち、最も新しいものである。
【0081】
本実施例で提供されるデータベースのトランザクション処理方法を、
図1に示すワークノード120に適用する場合を例として、ワークノード120がトランザクションT2を開始し、トランザクションT2には、データテーブルt2に対する少なくとも1つの操作文が含まれるとすると、トランザクションT2は、ターゲットトランザクションと見なすことができ、ワークノード
120は、ターゲットトランザクションT2を開始して処理するためのノードと見なすことができ、データテーブルt2は、ターゲットデータオブジェクト(又は、第1データオブジェクト)と見なすことができ、ワークノード120のローカルキャッシュ121は、S202-1におけるローカルキャッシュと見なすことができる。
【0082】
実施過程において、ワークノード120は、ローカルキャッシュ121からデータテーブルt2の第2変数を検索することにより、該第2変数の現在値を取得することができる。該現在値は、即ち、データテーブルt2のローカルキャッシュ121における最新メタデータのバージョン情報である。
【0083】
S202-2では、前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、前記現在のグローバル最新バージョン情報とが同じであるか否かを比較する。「はい」の場合、S202-3を実行し、「いいえ」の場合、S202-4を実行してもよい。
【0084】
S202-3では、前記ローカルキャッシュに記憶されているメタデータの中から、前記ターゲットデータオブジェクトのローカル最新メタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして取得する。
【0085】
本実施例では、ローカルキャッシュにおけるターゲットデータオブジェクトのローカル最新メタデータがターゲットデータオブジェクトのグローバル最新メタデータであるか否かを決定するために、S202-1で取得されたターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、S201で取得された前記現在のグローバル最新バージョン情報とを比較してもよい。
【0086】
両者が同じである場合は、ローカルキャッシュにおけるターゲットデータオブジェクトのローカル最新メタデータが、即ち、分散型データベースシステム10におけるグローバル最新メタデータであることを示し、グローバルメタデータストア300にアクセスする必要がなく、ローカルキャッシュから該ローカル最新メタデータを直接取得することができる。
【0087】
S202-4では、前記ローカルキャッシュ及び前記グローバルメタデータストアに記憶されている、前記ターゲットデータオブジェクトの各バージョンのメタデータの中から、ターゲットメタデータが存在するか否かを検索し、検索されるターゲットメタデータのバージョン情報が、前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報より新しく、且つ前記現在のグローバル最新バージョン情報より新しくない。「はい」の場合、S202-5を実行してもよく、「いいえ」の場合、S202-6を実行してもよい。
【0088】
S202-5では、検索された前記ターゲットメタデータのうち、バージョン情報が最も新しいターゲットメタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして決定する。
【0089】
ローカルキャッシュにおけるターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、前記現在のグローバル最新バージョン情報とが同じではない場合は、ターゲットトランザクションの開始前に1回又は複数回のメタデータ変更が発生し、前記1回又は複数回のメタデータ変更によってグローバル最新バージョン情報の更新がトリガされ、前記1回又は複数回のメタデータ変更にターゲットデータオブジェクトのメタデータ変更が存在する可能性があり、存在しない可能性もあることを示す。
【0090】
前記1回又は複数回のメタデータ変更にターゲットデータオブジェクトのメタデータ変更が存在する場合、ローカルキャッシュ又はグローバルメタデータストア300には、ターゲットメタデータ、即ち、バージョン情報が第1データオブジェクトのローカル最新メタデータのバージョン情報と前記現在のグローバル最新バージョン情報との間にあるメタデータが必ず存在する。その理由として、グローバル最新バージョン情報の更新は、その変更後のメタデータがグローバルメタデータストア300に成功に提出された後に実行されるため、現在のグローバル最新バージョン情報を有するメタデータ、及びその前のバージョン情報を有するメタデータは、いずれもグローバルメタデータストア300に書き込まれており、検索されることができる。
【0091】
ターゲットデータオブジェクトの各バージョンのメタデータのうち、バージョン情報が最も新しいターゲットメタデータは、最後の変更により生成されたものであり、即ち、ターゲットデータオブジェクトの分散型データベースシステム10における最新バージョンのメタデータである。これに対応して、ワークノードは、ローカルキャッシュにターゲットデータオブジェクトの最新バージョンのメタデータが記憶されるように、バージョン情報が最も新しいターゲットメタデータをローカルキャッシュに更新し、ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を、そのバージョン情報が最も新しいターゲットメタデータのバージョン情報(即ち、ターゲットデータオブジェクトの最新バージョンのメタデータのバージョン情報)に更新してもよい。
【0092】
S202-6では、前記ターゲットデータオブジェクトのローカル最新メタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして決定する。
【0093】
上記1回又は複数回のメタデータの変更にターゲットデータオブジェクトのメタデータの変更が存在しない場合、ターゲットデータオブジェクトのローカル最新メタデータは、既に、ターゲットデータオブジェクトの分散型データベースシステム10における最新バージョンのメタデータとなっている。言い換えれば、ローカルキャッシュ又はグローバルメタデータストア300に記憶されている、ターゲットデータオブジェクトのメタデータには、ターゲットメタデータが存在しない。そのため、ワークノードは、S202-4でターゲットメタデータが検索されなかった場合、直接にターゲットデータオブジェクトのローカル最新メタデータをターゲットデータオブジェクトの最新バージョンのメタデータとすることができる。
【0094】
理解できるものとして、S202、S202-3、S202-5、及びS202-6に記載のターゲットデータオブジェクトの最新バージョンのメタデータは、いずれも、ターゲットデータオブジェクトの分散型データベースシステム10全体における最新バージョンのメタデータを意味する。
【0095】
本実施例において、S202-6を実行した後、ワークノードは、ローカルキャッシュにおけるターゲットデータオブジェクトのローカル最新メタデータのバージョン情報(即ち、第2変数の値)を現在のグローバル最新バージョン情報(即ち、第1変数の現在値)に更新してもよい。
【0096】
また、本実施例では、変更後のメタデータは、グローバルメタデータストア300に書き込む必要があることに加えて、各ワークノードに同期する必要もある。ここで、変更後のメタデータを生成したワークノードは、
図7に示すフローによって、その変更後のメタデータを同期してもよい。これに対応して、変更後のメタデータを生成したワークノードは、メタデータが変更されたデータオブジェクトの第2変数を更新してもよい。以下に詳述する。
S701では、変更後のメタデータの提出が成功すると、前記変更後のメタデータをローカルキャッシュに書き込む。
【0097】
実施過程において、ワークノードは、グローバルメタデータストア300に変更後のメタデータを提出して、グローバルメタデータストア300から返信された提出確認情報を受信すると、変更後のメタデータをローカルキャッシュに書き込んでもよい。
【0098】
S702では、前記ローカルキャッシュにおいて、メタデータが変更されたデータオブジェクトのローカル最新メタデータのバージョン情報を前記変更後のメタデータのバージョン情報に更新する。
【0099】
ここで、メタデータが変更されたデータオブジェクトとは、前記変更後のメタデータが属するデータオブジェクトである。ワークノードは、変更後のメタデータをローカルキャッシュに成功に書き込んだ後、その変更後のメタデータが属するデータオブジェクトのローカル最新メタデータのバージョン情報(即ち、第2変数の値)をその変更後のメタデータのバージョン情報に修正してもよい。
【0100】
当業者に本発明をより明確に理解させるために、以下、
図1に示すシナリオを参照しながら、いくつかの具体的な例を提供して、本実施例で提供されるデータベースのトランザクション処理方法を詳細に述べる。
【0101】
初期状態で、分散型データベースシステム10にテーブルt1、t2、及びt3が存在し、そのうち、データテーブルt1のメタデータは、バージョンV10のスキーマ(schema)オブジェクトO1であり、データテーブルt2のメタデータは、バージョンV20のschemaオブジェクトO2であり、データテーブルt3のメタデータは、バージョンV30のschemaオブジェクトO3であると仮定する。
【0102】
グローバルメタデータストア300には、バージョンV10のschemaオブジェクトO1、バージョンV20のschemaオブジェクトO2、及びバージョンV30のschemaオブジェクトO3が記憶されている。また、グローバルメタデータストア300には、第1変数であるグローバル最大スキーマバージョン番号(GLSV:global largest schema version)がメンテナンスされている。GLSVの現在値は、V20である。これは、分散型データベースシステム10において、現在の最大バージョン情報がV20であり、即ち、最新バージョン情報がV20であることを示す。
【0103】
ローカルキャッシュ111、121、及び131のいずれにも、バージョンV10のschemaオブジェクトO1、バージョンV20のschemaオブジェクトO2、及びバージョンV30のschemaオブジェクトO3がキャッシュされており、データテーブルt1に対応する第2変数である等価グローバルスキーマバージョン番号-1(EGSV-1:equivalent global schema version-1)、データテーブルt2に対応する第2変数であるEGSV-2、及びデータテーブルt3に対応する第2変数であるEGSV-3がメンテナンスされている。そのうち、EGSV-1の現在値は、V10であり、EGSV-2の現在値は、V20であり、EGSV-3の現在値はV30である。
【0104】
一例において、本実施例で提供されるデータベースのトランザクション処理方法のフローは、
図8に示すフローを含んでもよい。
S1では、ワークノード110が、データテーブルt1のschemaオブジェクトO1に対する変更指示を受け付け、変更指示に基づいて変更後のschemaオブジェクトO1を生成する。
S2では、ワークノード110が、グローバルタイムスタンプマネージャ400に第1タイムスタンプ割り当て要求r1を送信する。
S3では、グローバルタイムスタンプマネージャ400が、現在の時間情報に基づいてタイムスタンプV11を生成する。
S4では、グローバルタイムスタンプマネージャ400が、ワークノード110にタイムスタンプV11を送信する。
【0105】
S5では、ワークノード110が、タイムスタンプV11を変更後のschemaオブジェクトO1のバージョン情報とすることにより、バージョンV11のschemaオブジェクトO1を取得する。
S6では、ワークノード110が、グローバルメタデータストア300にバージョンV11のschemaオブジェクトO1を提出する。
【0106】
S7では、グローバルメタデータストア300が、バージョンV11のschemaオブジェクトO1を記憶した後、提出確認情報をワークノード110に返信する。
【0107】
S8では、ワークノード110が、提出確認情報を受信すると、バージョン情報V11が付されている通知をグローバルタイムスタンプマネージャ400に送信する。
S9では、グローバルタイムスタンプマネージャ400が、通知に基づいてGLSVの現在値をV11に更新する。
【0108】
S10では、ワークノード110が、提出確認情報を受信すると、バージョンV11のschemaオブジェクトO1をローカルキャッシュ111に書き込み、ローカルキャッシュ111におけるEGSV-1の現在値をV11に更新する。
そのうち、S8とS10は、並列に実行してもよい。
このとき、ワークノード110は、データテーブルt1に対する操作文が含まれるトランザクションT1を開始すると、以下のフローに従って処理してもよい。
【0109】
S11では、ワークノード110が、トランザクションT1を開始するときに、グローバルタイムスタンプマネージャ400に第2タイムスタンプ割り当て要求r2を送信する。理解できるものとして、ここでのトランザクションT1は、即ち、ターゲットトランザクションである。
【0110】
S12では、グローバルタイムスタンプマネージャ400が、r2を受信し、現在の時間情報に基づいてタイムスタンプV40を生成し、GLSVの現在値V11を取得し、V40とV11を、r2に対応する応答情報に充填する。
S13では、グローバルタイムスタンプマネージャ400が、r2に対応する応答情報をワークノード110に返信する。
【0111】
S14では、ワークノード110が、ローカルキャッシュ111からEGSV-1の現在値V11を取得し、EGSV-1の現在値V11と、GLSVの現在値V11とが同じであると決定し、ローカルキャッシュ111からバージョン情報がV11であるschemaオブジェクトO1を取得する。
【0112】
S15では、ワークノード110が、V40をトランザクションT1のトランザクションタイムスタンプとし、V40に基づいてユーザデータスナップショットを取得し、バージョン情報がV40以下であるユーザデータをトランザクションT1のアクセス対象のユーザデータdata1として決定する。
【0113】
S16では、バージョンV11のschemaオブジェクトO1に基づいてトランザクションT1における操作文を解析し、解析結果に基づいて、data1に対してトランザクションT1における操作文を実行する。
【0114】
他の例において、S9が実行された後、S10が実行されていないときにワークノード110が起動される場合、本実施例で提供されるデータベースのトランザクション処理方法は、まず、S11~S13に従って処理してもよく、S13の後に、
図9に示すフローに従って処理してもよい。
【0115】
S17では、ワークノード110が、ローカルキャッシュ111からEGSV-1の現在値V10を取得し、EGSV-1の現在値V10と、GLSVの現在値V11とが同じではないと決定し、ローカルキャッシュ111及びグローバルメタデータストア300に記憶されているschemaオブジェクトO1の中から、バージョン情報がV10よりも大きく且つV11以下であるschemaオブジェクトO1(即ち、ターゲットメタデータ)を検索する。
【0116】
S18では、グローバルメタデータストア300からバージョンV11のschemaオブジェクトO1が検索されたため、ワークノード110が、それを最新バージョンのschemaオブジェクトO1として決定し、バージョンV11のschemaオブジェクトO1をローカルキャッシュ111に同期し、ローカルキャッシュ111におけるEGSV-1の現在値をV11に更新する。
【0117】
S19では、ワークノード110が、トランザクションタイムスタンプV40に基づいて、ユーザデータスナップショットを取得し、バージョン情報がV40以下であるユーザデータをトランザクションT1のアクセス対象のユーザデータdata1として決定する。
【0118】
S20では、ワークノード110が、バージョンV11のschemaオブジェクトO1に基づいてトランザクションT1における操作文を解析し、解析結果に基づいて、data1に対してトランザクションT1における操作文を実行する。
【0119】
上記の例を基にして、ワークノード110は、時刻2にデータテーブルt2のschemaオブジェクトO2に対する変更指示を受け付けると、上記のS1~S10の類似フローに従って処理してもよい。前記処理を完了すると、グローバルメタデータストア300には、新しいバージョン(V21)のschemaオブジェクトO2が追加され、GLSVの現在値はV21である。ワークノード110のローカルキャッシュ111には、バージョンV21のschemaオブジェクトO2が追加され、ローカルキャッシュ111におけるEGSV-2の現在値はV21である。一方、ワークノード120及び130には、バージョンV21のschemaオブジェクトO2が存在せず、ローカルキャッシュ121及び131におけるEGSV-2の現在値は、依然としてV20である。
【0120】
このとき、ワークノード120がトランザクションT2を開始し、トランザクションT2には、データテーブルt2に対する操作文が含まれるとする。この場合、本実施例で提供されるデータベースのトランザクション処理方法は、
図10に示すフローに従って処理してもよい。
【0121】
S21では、ワークノード120が、トランザクションT2を開始するときに、グローバルタイムスタンプマネージャ400に第2タイムスタンプ割り当て要求r3を送信する。ここでのトランザクションT2は、ターゲットトランザクションと見なすことができる。
【0122】
S22では、グローバルタイムスタンプマネージャ400が、r3を受信し、現在の時間情報に基づいてタイムスタンプV41を生成し、GLSVの現在値V21を取得し、V41とV21を、r3に対応する応答情報に充填する。
S23では、グローバルタイムスタンプマネージャ400が、応答情報をワークノード120に返信する。
【0123】
S24では、ワークノード120が、ローカルキャッシュ121からEGSV-2の現在値V20を取得し、EGSV-2の現在値V20と、GLSVの現在値V21とが同じではないと決定し、ローカルキャッシュ121及びグローバルメタデータストア300に記憶されているschemaオブジェクトO2の中から、バージョン情報がV20よりも大きく且つV21以下であるschemaオブジェクトO2(即ち、ターゲットメタデータ)を検索する。
【0124】
S25では、グローバルメタデータストア300からバージョンV21のschemaオブジェクトO2が検索されたため、ワークノード120が、それを最新バージョンのschemaオブジェクトO2として決定し、バージョンV21のschemaオブジェクトO2をローカルキャッシュ121に同期し、ローカルキャッシュ121におけるEGSV-2の現在値をV21に更新する。
【0125】
S26では、ワークノード120が、トランザクションタイムスタンプV41に基づいてトランザクションT2のアクセス対象のユーザデータdata2を決定し、バージョンV21のschemaオブジェクトO2に基づいてトランザクションT2における操作文を解析し、解析結果に基づいて、data2に対してトランザクションT2における操作文を実行する。
【0126】
上記の例を基にして、ワークノード130は、時刻3にトランザクションT3を開始し、トランザクションT3には、データテーブルT3に対する操作文が含まれるとすると、本実施例で提供されるデータベースのトランザクション処理方法は、
図11に示すフローに従って処理してもよい。
【0127】
S27では、ワークノード130が、トランザクションT3を開始するときに、グローバルタイムスタンプマネージャ400に第2タイムスタンプ割り当て要求r4を送信する。ここでのトランザクションT3は、ターゲットトランザクションと見なすことができる。
【0128】
S28では、グローバルタイムスタンプマネージャ400が、r4を受信し、現在の時間情報に基づいてタイムスタンプV42を生成し、GLSVの現在値V21を取得し、V42とV21を、r4に対応する応答情報に充填する。
S29では、グローバルタイムスタンプマネージャ400が、該応答情報をワークノード130に返信する。
【0129】
S30では、ワークノード130が、ローカルキャッシュ131からEGSV-3の現在値V30を取得し、EGSV-3の現在値V30と、GLSVの現在値V21とが同じではないと決定し、ローカルキャッシュ131及びグローバルメタデータストア300に記憶されているschemaオブジェクトO3の中から、バージョン情報がV30よりも大きく且つV21以下であるschemaオブジェクトO3(即ち、ターゲットメタデータ)を検索する。
【0130】
S31では、ターゲットメタデータが検索されなかったため、ワークノード130が、バージョンV30のschemaオブジェクトO3を最新バージョンのschemaオブジェクトO3として決定し、ローカルキャッシュ131におけるEGSV-3の現在値をV21に更新する。
【0131】
S32では、ワークノード130が、トランザクションタイムスタンプV42に基づいてトランザクションT3のアクセス対象のユーザデータdata3を決定し、バージョンV21のschemaオブジェクトO3(即ち、バージョンV30のschemaオブジェクトO3)に基づいてトランザクションT3における操作文を解析し、解析結果に基づいて、data3に対してトランザクションT3における操作文を実行する。
【0132】
本願で提供される構成では、分散型データベースシステムにグローバル最新バージョン情報がメンテナンスされる。該グローバル最新バージョン情報は、システムの全てのメタデータのうち、バージョン情報が最も新しいメタデータのバージョン情報を指す。ワークノードは、ターゲットデータオブジェクトに対するターゲットトランザクションを開始するときに、トランザクションタイムスタンプと、現在のグローバル最新バージョン情報とを取得することができ、これにより、現在のグローバル最新バージョン情報に基づいてターゲットデータオブジェクトの最新バージョンのメタデータを決定し、トランザクションタイムスタンプに基づいてターゲットトランザクションで見えるユーザデータをアクセス対象のユーザデータとして決定し、ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、ターゲットトランザクションのアクセス対象のユーザデータに対してターゲットトランザクションにおける操作文を実行する。分散型データベースシステムにおけるいかなるメタデータに対する変更もグローバルバージョン情報の更新をトリガすることができ、ワークノードが、ターゲットトランザクションを開始するときに、現在のグローバルバージョン情報に基づいてターゲットデータオブジェクトの最新バージョンのメタデータを決定するため、ターゲットトランザクションの開始前に変更されたメタデータが、タイムリーに、該メタデータを使用する必要があるワークノードにとって見えるようになれることを確保することができる。また、本願の構成は、マルチバージョン同時実行制御をサポートした主流のデータベース管理システムにおける実現及び適用が容易であり、著しい余計な性能オーバーヘッドがなく、分散型データベースシステムの可用性及び拡張性に影響を与えない。
【0133】
図12を参照する。
図12は、本願の実施例で提供されるデータベースのトランザクション処理装置1200の構成ブロック図である。該装置1200は、取得モジュール1210と、決定モジュール1220と、トランザクション処理モジュール1230と、を含んでもよい。
【0134】
そのうち、取得モジュール1210は、前記ワークノードがターゲットトランザクションを開始するときに、前記ターゲットトランザクションのトランザクションタイムスタンプと、前記分散型データベースシステムの現在のグローバル最新バージョン情報とを取得し、前記ターゲットトランザクションには、ターゲットデータオブジェクトに対する少なくとも1つの操作文が含まれ、前記グローバル最新バージョン情報は、前記分散型データベースシステムに記憶されている各メタデータのうち、最も新しく生成されたメタデータのバージョン情報である。
【0135】
決定モジュール1220は、前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定し、前記トランザクションタイムスタンプに基づいて前記ターゲットトランザクションのアクセス対象のユーザデータを決定する。
【0136】
トランザクション処理モジュール1230は、前記ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、前記アクセス対象のユーザデータに対して前記ターゲットトランザクションにおける操作文を実行する。
【0137】
前記装置1200は、変更モジュールをさらに含んでもよい。変更モジュールは、いずれか1つのデータオブジェクトのメタデータに対する変更指示を受け付け、前記変更指示に基づいて該データオブジェクトの変更後のメタデータを生成し、グローバルメタデータストアに前記変更後のメタデータを提出し、前記変更後のメタデータの提出が成功すると、前記グローバル最新バージョン情報を前記変更後のメタデータのバージョン情報に更新する。
【0138】
前記変更モジュールは、前記変更後のメタデータを生成すると、グローバルタイムスタンプマネージャに第1タイムスタンプ割り当て要求を送信し、前記第1タイムスタンプ割り当て要求に応じて前記グローバルタイムスタンプマネージャから返信されたタイムスタンプを受信し、該タイムスタンプを前記変更後のメタデータのバージョン情報として決定することに用いることもできる。
【0139】
ワークノードのローカルキャッシュには、データオブジェクトのローカル最新メタデータのバージョン情報が記憶されている。前記変更モジュールは、前記変更後のメタデータの提出が成功すると、前記変更後のメタデータをローカルキャッシュに書き込み、前記ローカルキャッシュにおいて、メタデータが変更されたデータオブジェクトのローカル最新メタデータのバージョン情報を前記変更後のメタデータのバージョン情報に更新することに用いることもできる。
【0140】
前記決定モジュール1220が前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定する方式は、ローカルキャッシュから前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を取得し、前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、前記現在のグローバル最新バージョン情報とが同じであるか否かを比較し、前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、前記現在のグローバル最新バージョン情報とが同じである場合、前記ローカルキャッシュに記憶されているメタデータの中から、前記ターゲットデータオブジェクトのローカル最新メタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして取得する、ことであってよい。
【0141】
前記決定モジュール1220が前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定する方式は、前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報と、前記現在のグローバル最新バージョン情報とが同じではない場合、前記ローカルキャッシュ及び前記グローバルメタデータストアに記憶されている、前記ターゲットデータオブジェクトの各バージョンのメタデータの中から、ターゲットメタデータが存在するか否かを検索し、検索されるターゲットメタデータのバージョン情報が、前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報より新しく、且つ前記現在のグローバル最新バージョン情報より新しくなく、ターゲットメタデータが存在する場合、検索された前記ターゲットメタデータのうち、バージョン情報が最も新しいターゲットメタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして決定する、ことであってもよい。
【0142】
前記決定モジュール1220は、検索された前記ターゲットメタデータのうち、バージョン情報が最も新しいターゲットメタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして決定した後に、バージョン情報が最も新しい前記ターゲットメタデータを前記ローカルキャッシュに更新し、前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を、バージョン情報が最も新しい前記ターゲットメタデータに対応するバージョン情報に更新することに用いることもできる。
【0143】
前記決定モジュール1220が前記現在のグローバル最新バージョン情報に基づいて前記ターゲットデータオブジェクトの最新バージョンのメタデータを決定する方式は、前記ターゲットメタデータが存在しない場合、前記ターゲットデータオブジェクトのローカル最新メタデータを前記ターゲットデータオブジェクトの最新バージョンのメタデータとして決定し、前記ターゲットデータオブジェクトのローカル最新メタデータのバージョン情報を前記現在のグローバル最新バージョン情報に更新する、ことであってもよい。
【0144】
グローバル最新バージョン情報は、前記分散型データベースシステムのグローバルタイムスタンプマネージャに記憶されている。取得モジュール1210が前記ターゲットトランザクションのトランザクションタイムスタンプと、前記分散型データベースシステムの現在のグローバル最新バージョン情報とを取得する方式は、前記ターゲットトランザクションに対応する第2タイムスタンプ割り当て要求を前記グローバルタイムスタンプマネージャに送信し、前記第2タイムスタンプ割り当て要求に応じて前記グローバルタイムスタンプマネージャから返信された応答情報を受信し、該応答情報には、前記ターゲットトランザクションのトランザクションタイムスタンプと、前記現在のグローバル最新バージョン情報とが含まれる、ことであってよい。
【0145】
トランザクション処理モジュール1230が前記ターゲットデータオブジェクトの最新バージョンのメタデータに基づいて、前記アクセス対象のユーザデータに対して前記ターゲットトランザクションにおける操作文を実行する方式は、前記ターゲットデータオブジェクトの最新バージョンのスキーマ情報に基づいて、前記ターゲットトランザクションにおける操作文を解析し、解析結果に基づいて前記アクセス対象のユーザデータを処理する、ことであってよい。
【0146】
当業者が明確に理解できるように、記述の利便性及び簡潔性のために、以上に記述された装置及びモジュールの具体的な動作過程は、前述した方法の実施例における対応する過程を参照すればよい。ここでは、これ以上の説明を省略する。
【0147】
本願で提供されるいくつかの実施例では、示され又は検討されるモジュール間の相互結合、又は直接結合、又は通信接続は、いくつかのインタフェースを介したものであってもよく、装置又はモジュールの間接結合又は通信接続は、電気的、機械的、又は他の形式であってもよい。
【0148】
また、本発明の各実施例における各機能モジュールを1つの処理モジュールに統合してもよいし、各モジュールそれぞれが個別に物理的に存在するようにしてもよいし、2つ以上のモジュールを1つのモジュールに統合してもよい。上述した統合されたモジュールは、ハードウェアの形で実現されてもよいし、ソフトウェア機能モジュールの形で実現されてもよい。
【0149】
図13を参照する。
図13は、本願の実施例で提供されるサーバ1300の構成ブロック図である。該サーバ1300は、上述したワークノードが位置するサーバであってもよく、独立したサーバ、又は複数の物理サーバで構成されたサーバクラスタであってもよいし、クラウドコンピューティング、ビッグデータや人工知能プラットフォームなどのベースクラウドコンピューティングサービスを実行するためのクラウドサーバであってもよい。本願におけるサーバ1300は、1つ又は複数のプロセッサ1310、1つ又は複数のメモリ1320、及び1つ又は複数のアプリケーションプログラムを含んでもよい。そのうち、1つ又は複数のアプリケーションプログラムは、メモリ1320に記憶され、1つ又は複数のプロセッサ1310によって実行されるように構成されてもよい。1つ又は複数の
アプリケーションプログラムは、前述した方法の実施例で説明された方法を実行させるように構成される。
【0150】
プロセッサ1310は、1つ又は複数の処理コアを含んでもよい。プロセッサ1310は、各種のインタフェース及び回線を利用してサーバ1300全体内の各部分を接続し、メモリ1320に記憶された命令、プログラム、コードセット、又は命令セットを実行又は遂行して、メモリ1320に記憶されたデータを呼び出すことにより、サーバ1300の各種の機能を実行してデータを処理する。任意選択的に、プロセッサ1310は、デジタル信号プロセッサ(DSP:Digital Signal Processor)、フィールドプログラマブルゲートアレイ(FPGA:Field-Programmable Gate Array)、プログラマブルロジックアレイ(PLA:Programmable Logic Array)のうちの少なくとも1つのハードウェアの形で実現されてもよい。プロセッサ1310には、中央処理装置(CPU:Central Processing Unit)、グラフィック処理ユニット(GPU:Graphics Processing Unit)、モデムなどのうちの1つ又は複数の組み合わせが組み込まれてもよい。そのうち、CPUは、主に、オペレーティングシステム、ユーザインタフェース、及びアプリケーションプログラムなどを処理し、GPUは、表示内容のレンダリング及び描画を担当し、モデムは、無線通信を処理する。理解できるものとして、上記モデムは、プロセッサ1310に組み込まれずに、単独の通信チップによって実現されてもよい。
【0151】
メモリ1320は、ランダムアクセスメモリ(RAM:Random Access Memory)を含んでもよいし、読み出し専用メモリ(ROM:Read-Only Memory)を含んでもよい。メモリ1320は、プログラム記憶領域及びデータ記憶領域を含んでもよい。そのうち、プログラム記憶領域には、オペレーティングシステムを実現するための命令、少なくとも1つの機能を実現するための命令(例えば、タッチ機能、音響再生機能、画像再生機能など)、上記の各方法の実施例を実現するための命令などを記憶してもよい。データ記憶領域には、サーバ1300が使用中に作成したデータ(例えば、メタデータ)などを記憶してもよい。
【0152】
図14を参照する。
図14は、本願の実施例で提供されるコンピュータ可読記憶媒体の構成ブロック図である。該コンピュータ可読
記憶媒体1400には、プログラムコードが記憶され、前記プログラムコードは、プロセッサにより呼び出されて、上述した方法の実施例で説明された方法を実行させることが可能である。
【0153】
コンピュータ可読記憶媒体1400は、フラッシュメモリ、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、EPROM、ハードディスク、又はROMのような電子メモリであってもよい。いくつかの実施例において、コンピュータ可読記憶媒体1400は、非一時的なコンピュータ可読記憶媒体(non-transitory computer-readable storage medium)を含む。コンピュータ可読記憶媒体1400は、上述した方法の任意の方法ステップを実行させるプログラムコード1410の記憶スペースを有する。これらのプログラムコードは、1つ又は複数のコンピュータプログラム製品から読み出されたり、1つ又は複数のコンピュータプログラム製品に書き込まれたりすることができる。プログラムコード1410は、例えば、適当な形式で圧縮されてもよい。
【0154】
最後に説明すべきものとして、上記の実施例は、本願の構成を説明するためのものに過ぎず、それを限定するものではない。前述した実施例を参照して本願を詳細に説明したが、当業者であれば理解すべきものとして、前述した各実施例に記載された構成を修正し、又はその中の一部の技術的特徴の均等置換えを行うことができ、これらの修正又は置換えにより、該当する構成の本質が本願の各実施例の構成の精神及び範囲から逸脱することはない。
【符号の説明】
【0155】
10 分散型データベースシステム
110 ワークノード
120 ワークノード
130 ワークノード
200 分散型ストレージシステム
300 グローバルメタデータストア
400 グローバルタイムスタンプマネージャ
1200 トランザクション処理装置
1210 取得モジュール
1220 決定モジュール
1230 トランザクション処理モジュール
1300 サーバ
1310 プロセッサ
1320 メモリ
1400 コンピュータ可読記憶媒体
1410 プログラムコード