(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-03
(45)【発行日】2024-10-11
(54)【発明の名称】オブジェクト処理方法、装置、及びコンピュータ機器
(51)【国際特許分類】
G06F 16/176 20190101AFI20241004BHJP
【FI】
G06F16/176 100
(21)【出願番号】P 2023523281
(86)(22)【出願日】2022-04-11
(86)【国際出願番号】 CN2022086091
(87)【国際公開番号】W WO2022242372
(87)【国際公開日】2022-11-24
【審査請求日】2023-04-17
(31)【優先権主張番号】202110547589.7
(32)【優先日】2021-05-19
(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)【発明者】
【氏名】叶 盛
【審査官】早川 学
(56)【参考文献】
【文献】特開2008-165370(JP,A)
【文献】米国特許出願公開第2014/0129531(US,A1)
【文献】中国特許出願公開第101184106(CN,A)
【文献】中国特許出願公開第111949315(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
コンピュータ機器により実行される、オブジェクト処理方法であって、前記方法は、
ターゲットオブジェクトについてのオブジェクトインタラクション要求を受信するステップと、
前記オブジェクトインタラクション要求に応答して、前記ターゲットオブジェクトについての現在の変更操作が属する現在の変更段階を取得するステップであって、前記現在の変更操作は複数の操作工程を含み、前記現在の変更操作は各前記操作工程に対応した競合操作タイプに従って複数の変更段階に分割され、前記競合操作タイプは前記操作工程に対応した競合操作のタイプである、ステップと、
前記オブジェクトインタラクション要求に対応したターゲット操作タイプ及び前記現在の変更段階に対応する現在の関連操作タイプに従って、前記オブジェクトインタラクション要求に対応する競合チェック結果を決定するステップであって、前記ターゲット操作タイプは、前記オブジェクトインタラクション要求により要求されたターゲットインタラクション操作のタイプである、ステップと、
前記競合チェック結果として競合が存在しないときに、前記オブジェクトインタラクション要求に従って前記ターゲットオブジェクトに対して前記ターゲットインタラクション操作を実行するステップと、を含む、ことを特徴とするオブジェクト処理方法。
【請求項2】
前記オブジェクトインタラクション要求に応答して、前記ターゲットオブジェクトについての現在の変更操作が属する現在の変更段階を取得する前記ステップは、
前記ターゲットオブジェクトについての前記現在の変更操作に対応した現在の操作工程を取得するステップと、
前記現在の操作工程に対応した変更段階を、前記ターゲットオブジェクトについての前記現在の変更操作が属する前記現在の変更段階として決定するステップであって、異なる前記競合操作タイプの連続操作工程は異なる前記変更段階に分割される、ステップと、を含む、ことを特徴とする請求項1に記載の方法。
【請求項3】
前記現在の変更操作に対して段階分割を行うステップは、
前記現在の変更操作に対応した現在の操作工程シーケンスを決定するステップであって、前記現在の操作工程シーケンスは操作順序に応じて配列された複数の前記操作工程を含む、ステップと、
前記現在の操作工程シーケンスにおける各前記操作工程に対応した前記競合操作タイプを決定するステップと、
前記操作工程に対応した前記競合操作タイプに従って前記現在の操作工程シーケンスを分割して、前記現在の変更操作に対応した複数の前記変更段階を得るステップであって、同じ競合操作タイプの連続操作工程は同じ前記変更段階に分割される、ステップと、を含む、ことを特徴とする請求項2に記載の方法。
【請求項4】
前記現在の関連操作タイプは現在の競合操作タイプを含み、
前記オブジェクトインタラクション要求に対応したターゲット操作タイプ及び前記現在の変更段階に対応する現在の関連操作タイプに従って、前記オブジェクトインタラクション要求に対応する競合チェック結果を決定する前記ステップは、
前記オブジェクトインタラクション要求から操作タイプ識別子を抽出し、抽出された前記操作タイプ識別子に従って前記オブジェクトインタラクション要求に対応するターゲット操作タイプを得るステップと、
前記ターゲット操作タイプと前記現在の競合操作タイプとを比較し、比較結果に従って前記現在の競合操作タイプが前記ターゲット操作タイプを含むと決定するときに、前記競合チェック結果として競合が存在すると決定するステップと、を含む、ことを特徴とする請求項1に記載の方法。
【請求項5】
前記現在の関連操作タイプは現在の並行操作タイプを含み、
前記オブジェクトインタラクション要求に対応したターゲット操作タイプ及び前記現在の変更段階に対応する現在の関連操作タイプに従って、前記オブジェクトインタラクション要求に対応する競合チェック結果を決定する前記ステップは、
前記オブジェクトインタラクション要求から操作タイプ識別子を抽出し、抽出された前記操作タイプ識別子に従って前記オブジェクトインタラクション要求に対応するターゲット操作タイプを得るステップと、
前記ターゲット操作タイプと前記現在の並行操作タイプとを比較し、比較結果に従って前記現在の並行操作タイプが前記ターゲット操作タイプを含まないと決定するときに、前記競合チェック結果として競合が存在すると決定するステップと、を含む、ことを特徴とする請求項1に記載の方法。
【請求項6】
前記方法は、
前記競合チェック結果として競合が存在するときに、前記オブジェクトインタラクション要求に従って前記ターゲットオブジェクトに対して前記ターゲットインタラクション操作を実行することを停止するステップをさらに含む、ことを特徴とする請求項1に記載の方法。
【請求項7】
前記オブジェクトインタラクション要求に従って前記ターゲットオブジェクトに対して前記ターゲットインタラクション操作を実行する前記ステップは、
前記ターゲットオブジェクトに対応する第1操作段階を決定するステップであって、前記第1操作段階は前記オブジェクトインタラクション要求に対応する次の操作段階である、ステップと、
前記第1操作段階に対応した段階優先度が優先実行条件を満たすときに、前記ターゲットオブジェクトについての操作ロッキング要求を送信するステップであって、前記操作ロッキング要求は、前記ターゲットオブジェクトとインタラクションを行っているコンピューティングノードをトリガして対応するオブジェクトロックをかけて、アンロッキングするまで前記ターゲットオブジェクトに対する現在の操作にロッキングすることに用いられる、ステップと、
前記操作ロッキング要求についてのロッキング応答情報を受信したと決定するときに、前記第1操作段階に対応した前記操作工程を実行するステップであって、前記ロッキング応答情報は、前記コンピューティングノードが前記オブジェクトロックをかけた後に返信する応答情報である、ステップと、を含む、ことを特徴とする請求項1に記載の方法。
【請求項8】
前記方法は、
前記ターゲットオブジェクトに対応する第2操作段階を決定するステップであって、前記第2操作段階は前記第1操作段階に対応する次の操作段階である、ステップと、
前記第2操作段階に対応した段階優先度が前記優先実行条件を満たすときに、前記操作ロッキング要求により要求されたオブジェクトロックを維持して、前記第2操作段階に対応した前記操作工程を実行するステップと、をさらに含む、ことを特徴とする請求項7に記載の方法。
【請求項9】
前記第1操作段階に対応した段階優先度が優先実行条件を満たすときに、前記ターゲットオブジェクトについての操作ロッキング要求を送信する前記ステップは、
前記第1操作段階に対応した操作内容の操作内容レベルを決定するステップと、
前記操作内容レベルがオブジェクトレベルであるときに、前記第1操作段階に対応した段階優先度が優先実行条件を満たすと決定し、前記ターゲットオブジェクトについての操作ロッキング要求を送信するステップと、を含む、ことを特徴とする請求項7に記載の方法。
【請求項10】
前記方法は、
前記オブジェクトインタラクション要求に対応したターゲットオブジェクトバージョン識別子を決定するステップと、
前記現在の変更操作に従って前記ターゲットオブジェクトを変更した後の、前記ターゲットオブジェクトに対応した現在のオブジェクトバージョン識別子を取得するステップと、
前記ターゲットオブジェクトバージョン識別子と前記現在のオブジェクトバージョン識別子とを比較し、比較が一致しないときに、前記オブジェクトインタラクション要求への応答を停止するステップと、をさらに含む、ことを特徴とする請求項1に記載の方法。
【請求項11】
前記現在の関連操作タイプは現在の並行操作タイプを含み、
前記オブジェクトインタラクション要求に対応したターゲット操作タイプ及び前記現在の変更段階に対応する現在の関連操作タイプに従って、前記オブジェクトインタラクション要求に対応する競合チェック結果を決定する前記ステップは、
前記現在の変更段階が操作阻止情報の書込段階であるときに、前記現在の変更段階に対応した現在の並行操作タイプを削除操作タイプとして決定するステップであって、前記操作阻止情報の書込段階は、前記現在の変更操作に従って前記ターゲットオブジェクトを変更した後の、前記ターゲットオブジェクトに対応した現在のオブジェクトバージョン識別子を書き込むことに用いられる、ステップと、
前記ターゲット操作タイプが前記削除操作タイプとマッチングしないときに、前記オブジェクトインタラクション要求に対応する競合チェック結果として競合が存在すると決定するステップと、を含む、ことを特徴とする請求項1に記載の方法。
【請求項12】
前記競合チェック結果として競合が存在しないときに、前記オブジェクトインタラクション要求に従って前記ターゲットオブジェクトに対して前記ターゲットインタラクション操作を実行する前記ステップは、
前記競合チェック結果として競合が存在しないときに、前記オブジェクトインタラクション要求に応答して、前記ターゲット操作タイプに対応したターゲット操作工程シーケンスを決定するステップと、
前記ターゲット操作工程シーケンスに応じて前記ターゲットオブジェクトに対して前記ターゲットインタラクション操作を実行するステップと、を含む、ことを特徴とする請求項
1に記載の方法。
【請求項13】
コンピュータ機器により実行される、オブジェクト処理装置であって、前記装置は、
ターゲットオブジェクトについてのオブジェクトインタラクション要求を受信することに用いられるインタラクション要求受信モジュールと、
前記オブジェクトインタラクション要求に応答して、前記ターゲットオブジェクトについての現在の変更操作が属する現在の変更段階を取得することに用いられる変更段階取得モジュールであって、前記現在の変更操作は複数の操作工程を含み、前記現在の変更操作は各前記操作工程に対応した競合操作タイプに従って複数の変更段階に分割され、前記競合操作タイプは前記操作工程に対応した競合操作のタイプである、変更段階取得モジュールと、
前記オブジェクトインタラクション要求に対応したターゲット操作タイプ及び前記現在の変更段階に対応する現在の関連操作タイプに従って、前記オブジェクトインタラクション要求に対応する競合チェック結果を決定することに用いられる競合チェックモジュールであって、前記ターゲット操作タイプは、前記オブジェクトインタラクション要求により要求されたターゲットインタラクション操作のタイプである、競合チェックモジュールと、
前記競合チェック結果として競合が存在しないときに、前記オブジェクトインタラクション要求に従って前記ターゲットオブジェクトに対して前記ターゲットインタラクション操作を実行することに用いられる操作実行モジュールと、を含む、ことを特徴とするオブジェクト処理装置。
【請求項14】
変更段階取得モジュールは、
前記ターゲットオブジェクトについての前記現在の変更操作に対応した現在の操作工程を取得することに用いられる操作工程取得サブモジュールと、
前記現在の操作工程に対応した変更段階を、前記ターゲットオブジェクトについての前記現在の変更操作が属する前記現在の変更段階として決定することに用いられる変更段階決定サブモジュールであって、異なる前記競合操作タイプの連続操作工程は異なる前記変更段階に分割される、変更段階決定サブモジュールと、をさらに含む、ことを特徴とする請求項13に記載の装置。
【請求項15】
メモリと、1つ又は複数のプロセッサと、を含み、前記メモリにコンピュータ読み取り可能な命令が記憶されるコンピュータ機器であって、前記1つ又は複数のプロセッサは前記コンピュータ読み取り可能な命令を実行するときに、請求項1~12のいずれか一項に記載の方法を実現する、ことを特徴とするコンピュータ機器。
【請求項16】
コンピュータプログラムであって、1つ又は複数のプロセッサにより実行されるときに、請求項1~12のいずれか一項に記載の方法を実現する、ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、ネットワークの技術分野に関し、特にオブジェクト処理方法、装置、コンピュータ機器及び記憶媒体に関する。
【0002】
本願は、2021年5月19日に中国特許庁に提出された、出願番号が第2021105475897号であり、発明の名称が「オブジェクト処理方法、装置、コンピュータ機器及び記憶媒体」である中国特許出願の優先権を主張し、その全部の内容は引用によって本願に組み込まれている。
【背景技術】
【0003】
ネットワークの技術分野では、データベースなどにおいて記録されているオブジェクトとインタラクションを行う必要があることが多い。例えば、場合によっては、データベースにおけるオブジェクトに対して変更操作を行う必要がある。
【0004】
従来技術において、強い同期の方式によってオブジェクトとのインタラクションを実現すること、すなわち、特定のコンピューティングノードが語句のインタラクションを集中して実行することを許可する。そのため、他のコンピューティングノードは集中して制御されたコンピューティングノードの実行結果を待ってはじめて後続の処理を行う必要がある。オブジェクトのインタラクション処理の効率低下をもたらしてしまう。
【0005】
説明する必要があるように、上記の背景技術部分に開示されている情報は、本願の背景に対する理解を強化することのみに用いられ、従って、当業者に知られている従来技術を構成しない情報を含み得る。
【発明の概要】
【発明が解決しようとする課題】
【0006】
これに基づいて、上記技術的課題について、オブジェクト処理方法、装置、コンピュータ機器及び記憶媒体を提供する必要がある。
【課題を解決するための手段】
【0007】
オブジェクト処理方法であって、コンピュータ機器により実行され、前記方法は、ターゲットオブジェクトについてのオブジェクトインタラクション要求を受信するステップと、前記オブジェクトインタラクション要求に応答して、前記ターゲットオブジェクトについての現在の変更操作が属する現在の変更段階を取得するステップであって、前記現在の変更操作は複数の操作工程を含み、前記現在の変更操作は各前記操作工程に対応した競合操作タイプに従って複数の変更段階に分割され、前記競合操作タイプは前記操作工程に対応した競合操作のタイプである、ステップと、前記オブジェクトインタラクション要求に対応したターゲット操作タイプ及び前記現在の変更段階に対応する現在の関連操作タイプに従って、前記オブジェクトインタラクション要求に対応する競合チェック結果を決定するステップであって、前記ターゲット操作タイプは、前記オブジェクトインタラクション要求により要求されたターゲットインタラクション操作のタイプである、ステップと、前記競合チェック結果として競合が存在しないときに、前記オブジェクトインタラクション要求に従って前記ターゲットオブジェクトに対して前記ターゲットインタラクション操作を実行するステップと、を含む。
【0008】
オブジェクト処理装置であって、コンピュータ機器により実行され、前記装置は、ターゲットオブジェクトについてのオブジェクトインタラクション要求を受信することに用いられるインタラクション要求受信モジュールと、前記オブジェクトインタラクション要求に応答して、前記ターゲットオブジェクトについての現在の変更操作が属する現在の変更段階を取得することに用いられる変更段階取得モジュールであって、前記現在の変更操作は複数の操作工程を含み、前記現在の変更操作は各前記操作工程に対応した競合操作タイプに従って複数の変更段階に分割され、前記競合操作タイプは前記操作工程に対応した競合操作のタイプである、変更段階取得モジュールと、前記オブジェクトインタラクション要求に対応したターゲット操作タイプ及び前記現在の変更段階に対応する現在の関連操作タイプに従って、前記オブジェクトインタラクション要求に対応する競合チェック結果を決定することに用いられる競合チェックモジュールであって、前記ターゲット操作タイプは、前記オブジェクトインタラクション要求により要求されたターゲットインタラクション操作のタイプである、競合チェックモジュールと、前記競合チェック結果として競合が存在しないときに、前記オブジェクトインタラクション要求に従って前記ターゲットオブジェクトに対して前記ターゲットインタラクション操作を実行することに用いられる操作実行モジュールと、を含む。
【0009】
コンピュータ機器であって、メモリと、1つ又は複数のプロセッサと、を含み、前記メモリにおいてコンピュータ読み取り可能な命令が記憶され、前記コンピュータ読み取り可能な命令が前記1つ又は複数のプロセッサにより実行されるときに、前記1つ又は複数のプロセッサに本願の各実施例に記載の方法におけるステップを実行させる。
【0010】
1つ又は複数のコンピュータ読み取り可能な記憶媒体であって、前記コンピュータ読み取り可能な記憶媒体においてコンピュータ読み取り可能な命令が記憶され、前記コンピュータ読み取り可能な命令が1つ又は複数のプロセッサにより実行されるときに、前記1つ又は複数のプロセッサに本願の各実施例に記載の方法におけるステップを実行させる。
【0011】
コンピュータプログラム製品であって、前記コンピュータプログラム製品はコンピュータ読み取り可能な命令を含み、前記コンピュータ読み取り可能な命令はコンピュータ読み取り可能な記憶媒体において記憶され、コンピュータ機器の1つ又は複数のプロセッサはコンピュータ読み取り可能な記憶媒体から該コンピュータ読み取り可能な命令を読み取り、1つ又は複数のプロセッサは該コンピュータ読み取り可能な命令を実行することで、前記コンピュータ機器に本願の各実施例に記載の方法におけるステップを実行させる。
【0012】
本願の1つ又は複数の実施例の細部は以下の図面及び記述において与えられている。本願の他の特徴、目的及び利点は明細書、図面及び特許請求の範囲から明らかになっている。
【0013】
本願の実施例における技術的手段をより明確に説明するために、以下、実施例の記述において使用される必要がある図面を簡単に紹介する。明らかなように、以下の記述における図面は本願のいくつかの実施例に過ぎず、当業者にとっては、創造的な労働を行わない前提において、これらの図面に従って他の図面を獲得することもできる。
【図面の簡単な説明】
【0014】
【
図1】1つの実施例におけるオブジェクト処理方法の応用環境図である。
【
図2】別の実施例におけるオブジェクト処理方法の応用環境図である。
【
図3】1つの実施例におけるオブジェクト処理方法のフローチャートである。
【
図4】1つの実施例における状態変換行列の模式図である。
【
図5】1つの実施例における変更操作のフローチャートである。
【
図6】別の実施例におけるオブジェクト処理方法のフローチャートである。
【
図7】1つの実施例における準備操作のフローチャートである。
【
図8】1つの実施例におけるエンディング操作のフローチャートである。
【
図9】1つの実施例におけるデータ定義言語文を実行するフローチャートである。
【
図10】1つの実施例におけるオブジェクト処理装置の構造ブロック図である。
【
図11】1つの実施例におけるコンピュータ機器の内部構造図である。
【発明を実施するための形態】
【0015】
本願の目的、技術的手段及び利点をより明確にするために、以下、図面及び実施例と併せて、本願をさらに詳細に説明する。理解すべきであるように、ここでは記述される具体的な実施例は本願を解釈するためのものに過ぎず、本願を限定することに用いられるものではない。
【0016】
本願が提供するオブジェクト処理方法は、
図1に示される応用環境において応用されてもよい。該応用環境においてサーバ102、第1端末104、第2端末106及びデータベース108が含まれる。ここで、第1端末104及び第2端末106はそれぞれネットワークを介してサーバ102と通信し、データベース108は各端末のデータを記憶することに用いられるデータベースであり、サーバ及び各端末とネットワーク通信を行うことができる。応用過程において、第1端末104は、データベース108におけるターゲットオブジェクトに対して現在の変更操作を実行し、現在の変更操作は複数の変更段階に対応し、第1端末104は各変更段階を実行するときに各々の変更段階の実行状態をサーバに送信する。第2端末106から送信されたターゲットオブジェクトについてのオブジェクトインタラクション要求を受信したときに、サーバ102は、第1端末104から送信された各変更段階の実行状態によって第1端末104の現在の変更操作に対応した現在の変更段階を取得し、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定し、競合チェック結果として競合が存在するときに、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行することを停止し、競合チェック結果として競合が存在しないときに、オブジェクトインタラクション要求に従ってターゲットオブジェクトに対してターゲットインタラクション操作を実行し、かつ競合チェック結果を第2端末106に送信する。ここで、サーバは独立した物理サーバであってもよく、複数の物理サーバで構成されるサーバクラスタ又は分散型システムであってもよく、クラウドサービス、クラウドデータベース、クラウドコンピューティング、クラウド関数、クラウドストレージ、ネットワークサービス、クラウド通信、ミドルウェアサービス、ドメイン名サービス、セキュリティサービス、CDN(Content Delivery Network、すなわちコンテンツ配信ネットワーク)、及びビッグデータや人工知能プラットフォームなどの基本的なクラウドコンピューティングサービスを提供するクラウドサーバであってもよい。端末(第1端末及び第2端末を含む)は、スマートフォン、タブレットパソコン、ノートパソコン、デスクトップコンピュータ、スマートスピーカー、及びスマートウォッチなどであってもよいが、これらに限定されない。端末及びサーバは、有線又は無線通信方式によって直接又は間接的に接続されてもよく、本願はここで制限しない。他の応用シーンにおいて、第1端末104と第2端末106とは1つの端末機器によって実現されてもよく、また、端末はサーバに置き換えられてもよい。いくつかの実施例において、ターゲットオブジェクトに対してインタラクションを行う端末は、コンピューティングエンジンノード(SQL Engine、コンピューティングノード又はノードと呼ばれてもよい)によって実現されてもよく、主にSQL(Structured Query Language、構造化照会言語)レイヤーのコンピューティング機能を完了する。説明する必要があるように、本願の実施例における複数は少なくとも2つであってもよい。
【0017】
本願が提供するオブジェクト処理方法は、
図2に示される応用環境において応用されてもよい。該応用環境において端末202、コンピューティングノードクラスタ204、及びデータベース206が含まれる。コンピューティングノードクラスタ204は少なくとも1つのコンピュータ機器を含んでもよく、コンピュータ機器はコンピューティングノードと呼ばれてもよく、これらのコンピューティングノードはサーバ又は割り込みによって実現されてもよい。また、コンピューティングノードクラスタ204における各コンピューティングノードはいずれも同一のオブジェクトに対してインタラクション権限を有してもよい。
図2において第1コンピューティングノード2042及び第2コンピューティングノード2044の2つのコンピューティングノードが示される。実際の応用シーンにおいて、より少ない又はより多い数のコンピューティングノードが含まれてもよい。ここで、第1コンピューティングノード2042及び第2コンピューティングノード2044はそれぞれネットワークを介してデータベース206と通信し、データベース206は各コンピューティングノードのデータを記憶することに用いられるデータベースである。応用過程において、第1コンピューティングノード2042はデータベース206におけるターゲットオブジェクトに対して現在の変更操作を実行し、現在の変更操作は複数の変更段階に対応し、第1コンピューティングノード2042は各変更段階を実行するときに各々の変更段階の実行状態をデータベース206に保存する。第2コンピューティングノード2044は、端末202から送信されたターゲットオブジェクトについてのオブジェクトインタラクション要求を受信したときに、データベースから第1コンピューティングノード2042の現在の変更操作における各変更段階の実行状態を取得し、実行状態に基づいて第1コンピューティングノード2042の現在の変更操作に対応した現在の変更段階を決定して取得し、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定する。ここで、ターゲット操作タイプは、オブジェクトインタラクション要求により要求されたターゲットインタラクション操作のタイプであり、競合チェック結果として競合が存在するときに、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行することを停止し、競合チェック結果として競合が存在しないときに、オブジェクトインタラクション要求に従ってターゲットオブジェクトに対してターゲットインタラクション操作を実行する。
【0018】
本願が提供する各実施例はクラウド技術(Cloud technology)に基づいて実現されてもよい。ここで、クラウド技術とは、ワイドエリアネットワーク又はローカルエリアネットワーク内でハードウェア、ソフトウェア、及びネットワークなどの一連のリソースを合わせて、データのコンピューティング、格納、処理及び共有を実現するホスティング技術を指す。クラウド技術は、クラウドコンピューティングビジネスモードに基づいて応用されるネットワーク技術、情報技術、統合技術、管理プラットフォーム技術、及びアプリケーション技術などの総称であり、リソースプールを形成することができ、必要に応じて使用し、柔軟で便利である。クラウドコンピューティング技術は重要なサポートになる。技術ネットワークシステムのバックグラウンドサービスには、たとえばビデオウェブサイト、ピクチャウェブサイト及びより多くのポータルウェブサイトなどの、大量のコンピューティング、及び記憶リソースが必要である。インターネット産業の高度な発展及び応用に伴い、将来、各々の物品にはいずれも独自の識別マークが存在する可能性があり、いずれもバックグラウンドシステムに伝送して論理処理を行う必要があり、異なるレベルのデータは別々に処理されるようになり、各種の産業データはいずれも強力なシステムサポートを必要とするため、クラウドコンピューティングによってのみ実現することができる。
【0019】
バックグラウンドサービスに必要な記憶リソースはデータベースによって実現されてもよい。ここで、データベース(Database)は、簡単に言えば、電子化されたファイルキャビネット-電子ファイルを記憶する場所と見なすことができ、ユーザはファイルにおけるデータに対して追加、照会、更新、及び削除などの操作を行うことができる。いわゆる「データベース」は、一定の方式で一緒に格納され、複数のユーザと共有でき、できるだけ小さな冗長度を有し、アプリケーションプログラムと互いに独立したデータ集合である。データベース管理システム(英語:Database Management System、DBMSと略称する)は、データベースを管理するために設計されたパソコンソフトウェアシステムであり、一般的に記憶、インターセプト、セキュリティ保障、及びバックアップなどの基本機能を有する。データベース管理システムは、例えばリレーショナル、及びXML(Extensible Markup Language、すなわち拡張可能マークアップ言語)など、それがサポートするデータベースモデルを根拠として分類され、又は、例えばサーバクラスタ、及び携帯電話など、サポートするコンピュータタイプを根拠として分類され、又は、例えばSQL、及びXQueryなど、使用する照会言語を根拠として分類され、又は、例えば最大規模、及び最高動作速度など、パフォーマンスインパルスの焦点を根拠として分類され、又は、他の分類方式で分類されてもよい。どの分類方式を使用するかにかかわらず、いくつかのDBMSはカテゴリを跨ることができ、例えば、複数の照会言語を同時にサポートする。
【0020】
本願により提供されたオブジェクト処理方法、装置、コンピュータ機器及び記憶媒体のように、各実施例の動作過程において生成されたデータはブロックチェーンに保存されてもよい。例えば、ターゲットオブジェクトの現在の変更操作が属する現在の変更段階はブロックチェーンにおいて記録され、オブジェクトインタラクション要求を受信したときに、端末又はサーバは、ブロックチェーンから現在の変更段階を取得し、現在の変更段階に対応する現在の関連操作タイプを決定し、ターゲット操作タイプ及び現在の関連操作タイプに従ってオブジェクトインタラクション要求に対応する競合チェック結果を決定し、競合が存在すると決定したときに、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行することを停止し、競合が存在しないと決定したときに、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行することを継続し、かつインタラクション操作過程における各段階の状態情報をブロックチェーンに記録し、また、競合チェック結果をブロックチェーンに記録することもできる。端末又はサーバは、ブロックチェーンからインタラクション操作過程における各段階の状態情報を取得することができる。同時に、動作過程において生成されたターゲット操作タイプ、現在の関連操作タイプ及び競合チェック結果などはいずれもブロックチェーンにおいて記録されてもよい。データをブロックチェーンに記録することによって、これらのデータが改ざんされることを防止し、これらのデータの記憶信頼性を確保し、さらにオブジェクト処理過程の信頼性を確保することができる。
【0021】
1つの実施例において、
図3に示すように、オブジェクト処理方法が提供され、コンピュータ機器に応用される。理解できる点として、コンピュータ機器はサーバであってもよく、端末であってもよい。本実施例は、該方法がサーバに応用されることを例に説明しており、理解できるように、該方法はさらに端末及びサーバを含むシステムに応用されてもよく、かつ端末とサーバとのインタラクションによって実現される。本実施例において、該方法は以下のステップS302~ステップS308を含む。
【0022】
S302:ターゲットオブジェクトについてのオブジェクトインタラクション要求を受信する。
【0023】
ここで、オブジェクトはネットワークインタラクションの対象となる主体であり、ネットワーク機器、ネットワーク機器におけるデータ、及びデータベースにおけるデータなどのうちの少なくとも1つであってもよい。ある実施例において、ターゲットオブジェクトはデータベースにおいて記憶されたデータ又はメタデータなどのうちの少なくとも1つであってもよい。ターゲットオブジェクトは具体的に、データベースにおけるSchema(メタデータの1つの抽象集合)であってもよく、例えば、データベースにおけるテーブル、列、インデックス、制約、記憶過程又は関数などの少なくとも1つである。さらには、ターゲットオブジェクトの数は少なくとも1つであってもよい。ターゲットオブジェクトが少なくとも2つあるときに、各ターゲットオブジェクトのために競合チェックをそれぞれ行うことができ、さらにオブジェクトインタラクション要求に従って各ターゲットオブジェクトに対してターゲットインタラクション操作を実行することを適宜に停止又は継続する。
【0024】
インタラクションは、ターゲットオブジェクトに対して変更又は照会などの操作のうちの少なくとも一種を行うことであってもよい。ここで、変更は、新規作成、修正、削除、挿入又は更新などのうちの少なくとも一種であってもよい。具体的には、テーブルに1列を挿入することは1回の変更操作と見なすことができ、2列を挿入することは2回の変更操作と見なすことができる。
【0025】
1つの実施例において、オブジェクトインタラクション要求はターゲットオブジェクトに対して特定のインタラクションを行う要求である。さらには、各オブジェクトインタラクション要求は少なくとも1つのオブジェクトインタラクション操作に対応してもよく、オブジェクトインタラクション要求を決定した後に、対応するオブジェクトインタラクション操作を決定して、ターゲットインタラクション操作を得ることができる。1つのオブジェクトインタラクション要求において少なくとも1つのターゲットインタラクション操作が対応してもよく、例えば、以下のオブジェクトインタラクション要求、すなわちalter table t add a int、add b intに対しては、対応するターゲットインタラクション操作はテーブルtにa及びbの2列を加えることであり、1列を加える各々の操作は1つのターゲットインタラクション操作と見なすことができる。インタラクションが変更操作であるときに、もしオブジェクトインタラクション要求を受信すれば、サーバはオブジェクトインタラクション要求に対応するターゲット変更操作を決定することができる。
【0026】
ターゲットオブジェクトがデータベースにおけるSchemaであることを例とすると、オブジェクトインタラクション操作は、DML(Data Manipulation Language、データ操作言語)、DDL(Data Definition Language、データ定義言語)又はDCL(Data Control Language、データ制御言語)などのうちの少なくとも1つであってもよい。ここで、DMLはselect、update、insert及びdeleteなどのコマンドであってもよく、この4つのコマンドはデータベース内のデータを操作するための言語である。DDLに関して、DDLのコマンドタイプはDMLよりも多く、主なコマンドはcreate、alter又はdropなどを有し、DDLは主にテーブル(table)の構造、データタイプ、テーブル間のリンク及び制約を定義し又は変えるなどの初期化作業に使われ、テーブルを確立するときに使用されることが多い。DCLはデータベース制御機能であり、データベースユーザ又は役割の権限を設定し又は改めるための文であり、grant、deny又はrevokeなどの文を含む。さらには、DML、DDL又はDCLなどの言語はデータベースにおけるオブジェクトを変更する操作であり、従って、オブジェクト変更操作と呼ばれてもよく、対応する要求はオブジェクト変更要求と呼ばれてもよい。また、オブジェクトインタラクション操作はさらに細分化されてもよく、例えば、alterはcopy(コピー)、inplace(置換)又はonline(オンライン)などの操作に細分化されてもよく、これらの操作は操作工程に基づいて複数の変更段階に分割されてもよい。さらには、オブジェクトインタラクション要求はサーバが受信した、端末から送信されたコマンド文であってもよく、例えば、サーバは端末から送信されたDDL文を受信し、該DDL文はオブジェクトインタラクション要求である。
【0027】
1つの実施例において、サーバは端末から送信されたターゲットオブジェクトについてのオブジェクトインタラクション要求を受信することができる。
【0028】
S304:オブジェクトインタラクション要求に応答して、ターゲットオブジェクトについての現在の変更操作が属する現在の変更段階を取得し、現在の変更操作は複数の操作工程を含み、現在の変更操作は各操作工程に対応した競合操作タイプに従って複数の変更段階に分割され、競合操作タイプは操作工程に対応した競合操作のタイプである。
【0029】
ここで、変更操作はターゲットオブジェクトを変更する操作であり、ターゲットオブジェクトの内容、及び構造などを変更する操作であってもよく、具体的に新規作成、修正、削除、挿入又は更新などのうちの少なくとも一種であってもよい。現在の変更操作は、オブジェクトインタラクション要求を受信したときに、特定のコンピューティングノードがターゲットオブジェクトに対して実行している変更操作であってもよく、オブジェクトインタラクション要求を受信した設定期間の前又は設定期間の後に特定のコンピューティングノードがターゲットオブジェクトに対して実行する変更操作であってもよい。変更操作は複数の変更段階を含む。ここで、変更段階はある変更操作を実行するために細分化された実行段階である。各変更段階は少なくとも1つの操作工程を含んでもよく、同一の変更段階内の各操作工程に対応する競合操作タイプは同じであり、すなわち、同一の変更段階の実行過程において、コンピューティングノードCがオブジェクトインタラクション要求を発することが発生したときに、サーバによる応答は一意的である。例えば、コンピューティングノードCをトリガしてロールバック又は継続実行を行う。1つの実施例において、現在の変更操作の実行優先度は、オブジェクトインタラクション要求に対応するターゲット操作よりも高く又はそれに等しくてもよく、更には、現在の変更操作の各変更段階の実行優先度はオブジェクトインタラクション要求に対応する各インタラクション段階よりも高く又はそれに等しくてもよい。更には、現在の変更段階は、オブジェクトインタラクション要求を受信したときに、特定のコンピューティングノードがターゲットオブジェクトに対して実行している変更段階であってもよく、オブジェクトインタラクション要求を受信した設定期間の前、又は設定期間の後に特定のコンピューティングノードがターゲットオブジェクトに対して実行する変更段階であってもよい。
【0030】
ここで、1つの操作は複数の操作工程を含んでもよく、すなわち1つの操作は複数の操作工程に分割して実行され、該操作に対応する複数の操作工程を実行することによって、該操作が達成しようとする機能を完了することができる。操作工程は操作に対応する操作ユニットであり、例えば1つの操作は、ハンドシェイク接続の確立、インタフェースアクセス、メタ情報の取得、メタ情報のチェック、状態識別子の更新、あるデータ記録の読み取り、データ記録の比較又はデータ記録の修正などのうちの少なくとも一種のステップを含んでもよい。これらの操作工程は一定のタイミングに応じて実行されて、対応する変更操作を完了する。更には、操作工程に対応した競合操作は操作工程と競合が存在するインタラクション操作であり、すなわち、もしある操作工程が競合操作と並行して動作するなら、ターゲットオブジェクトに対応する情報に情報混乱が発生する可能性がある。従って、サーバは操作工程が対応する競合操作と並行して動作することを防止すべきである。更には、競合操作タイプは操作工程に対応した競合操作のタイプである。ここで、競合操作は複数のタイプを含んでもよく、新規作成、修正、削除、挿入、更新又は照会などのうちの少なくとも一種であってもよい。
【0031】
1つの実施例において、ターゲットオブジェクトについての現在の変更操作は、ターゲットコンピューティングノードがターゲットオブジェクトに対して行う変更操作であってもよい。ここで、ターゲットコンピューティングノードは前述のサーバとは異なる他のコンピュータ機器であってもよい。
【0032】
1つの実施例において、現在の変更操作に対して変更段階分割を行う過程は、1、サーバにより一定の方式に応じて自動的に分割されてもよく、すなわち、サーバは自動的に競合操作タイプに従って現在の変更操作を複数の変更段階に分割し、2、予め人間により分割されてもよい。
【0033】
さらには、サーバが自動的に変更操作に対して変更段階を分割する状況に対しては、サーバは、各操作工程がコンピューティングノードクラスタにおける他のコンピューティングノードと並行して動作することができるか否かを決定できる。並行して動作することができないときに、競合が存在すると決定し、競合が発生し得るコンピューティングノードに対応する操作タイプを、操作工程に対応する競合操作タイプとして決定する。よりさらには、同じ競合操作タイプにおいて連続する操作工程を同一の変更段階に分割してもよく、異なる競合操作タイプにおける操作工程を異なる変更段階に分割してもよい。ここで、コンピューティングノードクラスタはコンピューティングノードで構成されるクラスタであり、これらのコンピューティングノードはターゲットオブジェクトとインタラクションを行うことができる。更には、ターゲットオブジェクトはターゲットデータベースにおけるオブジェクトであり、ターゲットデータベースはサーバに対応したデータベースであり、該データベースにアクセスすることができる端末及びサーバをコンピューティングノードとして決定し、これらのコンピューティングノードはコンピューティングノードクラスタを構成する。
【0034】
1つの実施例において、サーバは状態記録テーブルを設定することができ、状態記録テーブルはddl_job又はddl_jobsとして表されてもよい。該状態記録テーブルにはターゲットオブジェクトについての各変更操作における各変更段階の実行状態が記録され、各変更段階に対応する初期状態は未実行であってもよく、コンピューティングノードは1つの変更段階の実行を完了するたびに状態を未実行から実行済みに修正することができる。サーバはオブジェクトインタラクション要求を受信したときに、状態記録テーブルにアクセスして、現在の変更操作に対応するターゲット状態記録を位置決めし、変更段階の順序に応じて、ターゲット状態記録における1番目の未実行の変更段階を現在の変更段階として決定することができる。更には、現在の変更操作のある変更段階の実行が失敗したときに、状態記録テーブルから実行が完了した最新の変更段階の状態記録を取得し、さらに該状態記録に基づいて実行が失敗する前の変更段階に復元することができ、このときに、実行が失敗した変更段階を再び実行することができる。ここで、状態記録テーブルはサーバにおいて記憶されてもよく、現在の変更操作を実行するコンピューティングノードにおいて記憶されてもよく、サーバ及び各コンピューティングノードがいずれもアクセスできるデータベースにおいて記憶されてもよい。
【0035】
S306:オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定する。ターゲット操作タイプは、オブジェクトインタラクション要求により要求されたターゲットインタラクション操作のタイプである。
【0036】
1つの実施例において、現在の関連操作タイプは現在の競合操作タイプ、又は現在の並行操作タイプを含む。
【0037】
1つの実施例において、ターゲット操作タイプはターゲットインタラクション操作のタイプであり、新規作成、修正、削除、挿入、更新又は照会などのうちの少なくとも一種であってもよい。オブジェクトインタラクション要求に対応するターゲット操作タイプは少なくとも一種であってもよく、ターゲット操作タイプが少なくとも2種であるときに、各ターゲット操作タイプと現在の変更段階に対応する現在の関連操作タイプとをそれぞれ比較し、さらに競合チェック結果を得ることができる。
【0038】
1つの実施例において、現在の競合操作タイプは、現在の変更段階と同期して実行することが許可されない操作タイプであり、現在の並行操作タイプは、現在の変更段階と同期して実行することが許可される操作タイプであり、現在の競合操作タイプは少なくとも1つの競合操作タイプを含んでもよく、現在の並行操作タイプは少なくとも1つの並行操作タイプを含んでもよい。さらには、ターゲット操作タイプと現在の関連操作タイプとのマッチング性判断を行い、マッチング性判断の結果に従ってオブジェクトインタラクション要求に対応する競合チェック結果を得ることができる。具体的には、もし現在の競合操作タイプがターゲット操作タイプを含むなら、競合チェック結果として競合が存在すると決定し、もし現在の並行操作タイプがターゲット操作タイプを含むなら、競合チェック結果として競合が存在しないと決定する。ある実施例において、現在の競合操作タイプと現在の並行操作タイプとをともに現在の関連操作タイプとして決定してもよい。
【0039】
1つの実施例において、現在の競合操作タイプ及び現在の並行操作タイプは予め決定された各変更操作に対応する操作タイプ記録テーブルに従うものであってもよい。更には、操作タイプ記録テーブルは、競合操作タイプ記録テーブル及び並行操作タイプ記録テーブルを含んでもよい。よりさらには、サーバは、現在の変更操作を決定するときに、現在の変更操作に対応した競合操作タイプ記録テーブルを決定し、競合操作タイプ記録テーブルにおいて記録されている競合操作タイプを現在の競合操作タイプとして決定する。同様に、現在の並行操作タイプは予め決定された各変更操作の並行操作タイプ記録テーブルに従って決定されてもよい。サーバは、現在の変更操作を決定するときに、現在の変更操作に対応した並行操作タイプ記録テーブルを決定し、並行操作タイプ記録テーブルにおいて記録されている並行操作タイプを現在の並行操作タイプとして決定する。
【0040】
S308:競合チェック結果として競合が存在しないときに、オブジェクトインタラクション要求に従ってターゲットオブジェクトに対してターゲットインタラクション操作を実行する。
【0041】
具体的には、オブジェクトインタラクション要求がオブジェクト変更要求であるときに、ターゲットオブジェクトに対して対応するターゲット変更操作を実行する。例えば、DDL文を受信したときに、ターゲットオブジェクトに対して該DDL文に対応するコマンドを実行する。
【0042】
競合が存在しないときに、オブジェクトインタラクション要求に対応したターゲット操作タイプ、及び現在の変更段階に対応する現在の関連操作タイプを並行して動作させることが許可されることを意味し、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行することができる。
【0043】
1つの実施例において、競合チェック結果として競合が存在するときに、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行することを停止する。競合が存在するときに、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプを並行して動作させることが許可されないことを意味し、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行することを停止することができる。
【0044】
上記オブジェクト処理方法において、変更操作を変更段階に細分化することによって、各変更段階において競合チェックを行うことができる。競合が存在しない操作段階を並行して動作させることができ、同時に競合が存在する操作段階の動作を停止することができ、操作の原子性を確保することができ、変更操作による他のインタラクション操作への影響を大幅に低減させ、オブジェクトのインタラクション処理の効率を効果的に向上させることができる。また、現在の変更操作を変更段階に細分化することで、ターゲットインタラクション操作と現在の変更操作との間の比較を細かくし、ターゲットインタラクション操作は変更操作の全ての段階が完全に実行されるまで待つ必要がない。このような方式は生産環境に影響を与えることはなく、変更操作による他のインタラクション操作への影響を最大限に低減させることができ、オブジェクトインタラクション要求をトリガするユーザにとっては感知されない。
【0045】
1つの実施例において、ターゲットオブジェクトについての現在の変更操作が属する現在の変更段階を取得するステップは、ターゲットオブジェクトについての現在の変更操作に対応した現在の操作工程を取得するステップと、現在の操作工程に対応した変更段階を、ターゲットオブジェクトについての現在の変更操作が属する現在の変更段階として決定するステップであって、ここで、異なる競合操作タイプの連続操作工程は異なる変更段階に分割される、ステップと、を含む。
【0046】
ここで、現在の操作工程は、オブジェクトインタラクション要求を受信したときに、特定のコンピューティングノードがターゲットオブジェクトに対して実行している操作工程であってもよく、オブジェクトインタラクション要求を受信した設定期間の前又は設定期間の後に特定のコンピューティングノードがターゲットオブジェクトに対して実行する操作工程であってもよい。
【0047】
1つの実施例において、操作工程と変更段階との対応関係を予め設定してもよく、操作工程に対応する変更段階を即時に決定してもよい。サーバは、オブジェクトインタラクション要求を受信したときに、操作工程と変更段階との対応関係に従って現在の操作工程と対応する現在の変更段階を決定する。
【0048】
上記実施例において、現在の変更操作に対応した現在の操作工程に基づいて現在の変更段階を決定し、さらに現在の変更段階に基づいてオブジェクトインタラクション要求に対して競合チェックを行う。細かくされた操作工程によって正確な現在の変更段階を決定し、さらに確実な競合チェック結果を得ることができる。
【0049】
1つの実施例において、現在の変更操作に対して段階分割を行うステップは、現在の変更操作に対応した現在の操作工程シーケンスを決定するステップであって、現在の操作工程シーケンスは操作順序に応じて配列された複数の操作工程を含む、ステップと、現在の操作工程シーケンスにおける各操作工程に対応した競合操作タイプを決定するステップと、操作工程に対応した競合操作タイプに従って現在の操作工程シーケンスを分割して、現在の変更操作に対応した複数の変更段階を得るステップであって、ここで、同じ競合操作タイプの連続操作工程は同じ変更段階に分割される、ステップと、を含む。
【0050】
ここで、操作工程シーケンスは複数の操作工程が実行順序に応じて並んで得られたシーケンスである。実行順序が隣接する少なくとも2つの操作工程は連続する操作工程と見なすことができる。すなわち、隣接する操作工程に対しては、もし対応する競合操作タイプが異なるなら、異なる変更段階に分割される。
【0051】
1つの実施例において、変更操作は複数の操作工程を含む。新規作成操作を例とすると、新規作成操作は、1、メタ情報を取得するステップ、2、メタ情報をチェックするステップ、3、データ辞書に新しいテーブルデータを追加するステップであって、ここで、データ辞書はデータベースにおいて記憶されてもよい、ステップ、及び4、状態識別子を更新するステップなどの複数の連続する操作工程を含んでもよい。これらの操作工程は現在の操作工程シーケンスを構成する。各操作工程は実行過程において他のコンピューティングノードとのインタラクション操作には異なる競合状態が存在する可能性がある。例えば、別の操作が挿入操作であると仮定すると、挿入操作の各操作工程は新規作成操作におけるメタ情報の取得、メタ情報のチェック、及び状態識別子の更新の操作工程と並行して動作することができる。すなわち競合が存在しないが、挿入操作の各操作工程は新規作成操作における、データ辞書に新しいテーブルデータを追加する操作工程と並行して動作することができず、挿入操作をロールバックする必要があり、すなわち競合が存在する。更には、相互に連続する操作工程1及び2に対応する競合操作タイプは同じであり、従って、この2つの操作工程をメタ情報チェック段階として同一の変更段階に分割することができる。操作工程2及び3に対応する競合操作タイプは異なり、従って、この2つの操作工程を異なる変更段階に分割することができる。同時に、操作工程3及び4に対応する競合操作タイプは異なり、従って、この2つの操作工程を異なる変更段階に分割することができ、操作工程3及び4をデータ追加段階及び識別子更新段階にそれぞれ分割する。これにより、新規作成操作に対応する操作工程シーケンスはメタ情報チェック段階、データ追加段階及び識別子更新段階に分割される。変更操作の分割を実際に行う過程において、比較される操作の数はより多くてもよく、コンピューティングノードクラスタにおける、同一のオブジェクトに対して行われる全てのインタラクション操作であってもよい。
【0052】
上記実施例では、操作工程シーケンスにおける各操作工程に対応した競合操作タイプに従って変更操作に対して変更段階の分割を行って、同じ競合操作タイプの連続操作工程を同じ変更段階に分割し、異なる競合操作タイプの連続操作工程を異なる変更段階に分割し、操作工程に対応した競合操作タイプに基づいて変更段階の分割を正確に実現することができる。
【0053】
1つの実施例において、オブジェクトインタラクション要求に対応したターゲット操作タイプ、及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定するステップは、オブジェクトインタラクション要求から操作タイプ識別子を抽出し、抽出された操作タイプ識別子に従ってオブジェクトインタラクション要求に対応するターゲット操作タイプを得るステップと、ターゲット操作タイプと現在の競合操作タイプとを比較し、比較結果に従って現在の競合操作タイプがターゲット操作タイプを含むと決定するときに、競合チェック結果として競合が存在すると決定するステップと、を含む。
【0054】
ここで、コンピューティングノードは、オブジェクトインタラクション要求を送信するときにターゲット操作タイプのタイプ識別子を運ぶことができる。サーバは、オブジェクトインタラクション要求により運ばれた情報からタイプ識別子を抽出してターゲット操作タイプを得ることができる。
【0055】
1つの実施例において、もし現在の競合操作タイプが複数あれば、ターゲット操作タイプと現在の競合操作タイプとを1つずつ比較することができる。ターゲット操作タイプと一致する競合操作タイプが存在するときに、現在の競合操作タイプがターゲット操作タイプを含むと判定し、このときに、競合チェック結果として競合が存在すると決定する。ターゲット操作タイプと一致する競合操作タイプが存在しないときに、現在の競合操作タイプがターゲット操作タイプを含まないと判定し、このときに、競合チェック結果として競合が存在しないと決定する。
【0056】
上記実施例では、ターゲット操作タイプと現在の競合操作タイプとの比較結果に基づいて競合チェックを行い、さらに競合チェック結果を速やかに得て、オブジェクト処理の効率を効果的に向上させることができる。
【0057】
1つの実施例において、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定するステップは、オブジェクトインタラクション要求から操作タイプ識別子を抽出し、抽出された操作タイプ識別子に従ってオブジェクトインタラクション要求に対応するターゲット操作タイプを得るステップと、ターゲット操作タイプと現在の並行操作タイプとを比較し、比較結果に従って現在の並行操作タイプがターゲット操作タイプを含まないと決定するときに、競合チェック結果として競合が存在すると決定するステップと、を含む。
【0058】
1つの実施例において、もし現在の並行操作タイプが複数あれば、ターゲット操作タイプと現在の並行操作タイプとを1つずつ比較することができる。ターゲット操作タイプと一致する競合操作タイプが存在しないときに、現在の並行操作タイプがターゲット操作タイプを含まないと判定し、このときに、競合チェック結果として競合が存在すると決定し、同様に、ターゲット操作タイプと一致する競合操作タイプが存在するときに、現在の並行操作タイプがターゲット操作タイプを含むと判定し、このときに、競合チェック結果として競合が存在しないと決定する。
【0059】
上記実施例では、ターゲット操作タイプと現在の並行操作タイプとの比較結果に基づいて競合チェックを行い、さらに競合チェック結果を速やかに得て、オブジェクト処理の効率を効果的に向上させることができる。
【0060】
1つの実施例において、操作タイプ記録テーブルは状態変換行列によって実現されてもよく、該状態変換行列はターゲットオブジェクトの各状態間の変換可能性を記録することができ、もし変換できるなら、変換を許可すると記録し、もし変換できないなら、変換を許可しないと記録する。さらには、状態変換行列に従ってオブジェクトインタラクション要求に対応する競合チェック結果を決定することができる。ここで、ターゲットオブジェクトの状態は、ターゲットオブジェクトのデータ読み書き状態であってもよく、公開(public)、読み取り可能(read)、書き込み可能(write)、読み取り不可(no write)、書き込み不可(no read)、待ち(waiting)又は削除のみ(delete only)などのうちの少なくとも一種の状態であってもよい。ここで、公開とは、読み取り、書き込み及び削除操作を行うことができる状態を指す。
【0061】
1つの実施例において、各操作タイプは異なるターゲットオブジェクトの状態に対応してもよい。1つの実施例において、ターゲット操作タイプに従ってターゲットオブジェクトのターゲット状態を決定し、現在の変更操作の操作タイプに従ってターゲットオブジェクトの現在の状態を決定することができる。具体的には、もし現在の変更操作の実行が終わっていないなら、現在の状態は現在の変更操作を実行する前の状態であってもよく、もし現在の変更操作の実行が終わったなら、現在の状態は現在の変更操作を実行した後の状態であってもよい。また、ターゲット操作タイプのターゲットオブジェクトに対する予期状態をターゲットオブジェクトのターゲット状態として決定してもよい。
【0062】
1つの実施例において、各変更段階は状態に対応してもよく、現在の変更段階の実行状態に従ってターゲットオブジェクトの現在の状態を決定してもよく、具体的な過程は現在の変更操作に従って現在の状態を決定する上記過程を参照すればよく、ここでは再度詳細に説明しない。
【0063】
1つの実施例において、ターゲット操作タイプに従ってターゲットオブジェクトに対してインタラクションを行った後のターゲットオブジェクトに対応するターゲット状態を決定し、状態変換行列に基づいてターゲットオブジェクトを現在の状態からターゲット状態に変換することを許可すると決定するときに、競合チェック結果として競合が存在しないと決定し、さもなければ、オブジェクト変更要求に対応する競合チェック結果として競合が存在すると決定する。
【0064】
1つの実施例において、状態変換行列は
図4に示されてもよい。
図4には、列項目の状態を行項目の状態に変換することを許可するか否かが記録されており、ここで、フォームにおける矢印は変換方向を表し、Yは許可を表し、Nは不可を表す。1列目の1番目の状態を1行目の2番目の状態に変換することを例とすると、ターゲットオブジェクトの現在の状態は新規作成-公開であり、すなわち、現在の変更操作は新規作成操作であり、該新規作成操作の実行が終わるときに対応する状態は公開であり、ターゲットオブジェクトのターゲットオブジェクトは修正-公開である。すなわち、ターゲットインタラクション操作は修正操作であり、該修正操作の実行が終わるときに対応する状態は公開である。
図4における状態変換行列の情報を照会することによってこのような変換を行うことを許可すると決定する。従って、競合チェック結果として競合が存在しないと決定する。
【0065】
1つの実施例において、方法は、競合チェック結果として競合が存在するときに、オブジェクトインタラクション要求に従ってターゲットオブジェクトに対してターゲットインタラクション操作を実行することを停止するステップをさらに含む。
【0066】
競合が存在するときに、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプを並行して動作させることが許可されないことを意味し、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行することを停止することができる。
【0067】
1つの実施例において、競合が存在するときに、さらにロールバック操作を実行して、オブジェクトインタラクション要求を受信する前の状態に復元することができる。その後、現在の変更操作の実行状態をリアルタイムに監視することができ、もし現在の変更操作の実行が終われば、現在の変更操作がターゲットオブジェクトを変更した後の最新の状態を取得し、オブジェクトインタラクション要求に再び応答し、さらにターゲットオブジェクトの最新の状態に基づいてターゲットインタラクション操作を実行することができる。
【0068】
このような方式によって、インタラクション過程がターゲットオブジェクトの最新の状態に基づいて行われ、異なるコンピューティングノードにより取得されたターゲットオブジェクトの状態に差異が存在することを防止することができる。
【0069】
1つの実施例において、競合チェック結果として競合が存在しないときに、オブジェクトインタラクション要求に従ってターゲットオブジェクトに対してターゲットインタラクション操作を実行するステップは、競合チェック結果として競合が存在しないときに、オブジェクトインタラクション要求に応答して、ターゲット操作タイプに対応したターゲット操作工程シーケンスを決定するステップと、ターゲット操作工程シーケンスに応じてターゲットオブジェクトに対してターゲットインタラクション操作を実行するステップと、を含む。
【0070】
1つの実施例において、ステップシーケンス記録テーブルによって各種の操作タイプに対応する操作工程シーケンスを記録することができる。オブジェクトインタラクション要求を受信しかつ競合チェック結果として競合が存在しないと決定するときに、ターゲット操作タイプの操作タイプ識別子に基づいてステップシーケンス記録テーブルから操作タイプ識別子と対応する操作工程シーケンスを決定して、ターゲット操作工程シーケンスを得る。
【0071】
上記実施例では、ターゲット操作タイプに対応したターゲット操作工程シーケンスを決定し、さらにターゲット操作工程シーケンスに応じてターゲットオブジェクトに対してターゲットインタラクション操作を実行し、ターゲットオブジェクトに対してオブジェクトインタラクション要求によるターゲットインタラクション操作を実行し、オブジェクトインタラクション要求に対する確実な応答を確保することができる。
【0072】
1つの実施例において、ターゲット操作工程シーケンスに応じてターゲットオブジェクトに対してターゲットインタラクション操作を実行するステップは、ターゲットオブジェクトに対応する第1操作段階を決定するステップであって、第1操作段階はオブジェクトインタラクション要求に対応する次の操作段階である、ステップと、第1操作段階に対応した段階優先度が優先実行条件を満たすときに、ターゲットオブジェクトについての操作ロッキング要求を送信するステップと、操作ロッキング要求についてのロッキング応答情報を受信したと決定するときに、第1操作段階に対応した操作工程を実行するステップと、を含む。
【0073】
ここで、操作ロッキング要求は操作ロッキングをトリガして行う要求である。さらには、ターゲットオブジェクトとインタラクションを行っているコンピューティングノードに操作ロッキング要求を送信し、これらのコンピューティングノードをトリガして対応するオブジェクトロックをかけて、アンロッキングするまでターゲットオブジェクトに対する現在の操作にロッキングする。ロッキング応答情報はコンピューティングノードがオブジェクトロックをかけた後にサーバに返信する応答情報、すなわちロックの申請が成功したというフィードバックであってもよい。サーバはロッキング応答情報を受信したときに、対応するコンピューティングノードが対応するオブジェクトロックをかけたと判定することができる。
【0074】
1つの実施例において、第1操作段階に対応した段階優先度が優先実行条件を満たすか否かを決定する過程は、ターゲットオブジェクトに対してインタラクションを行う各インタラクション操作における各段階優先度を取得し、第1操作段階に対応した段階優先度と前述の各段階優先度とを比較し、第1操作段階に対応した段階優先度が最も高いときに、第1操作段階に対応した段階優先度が優先実行条件を満たすと決定することであってもよい。
【0075】
1つの実施例において、ターゲットオブジェクトについての操作ロッキング要求を送信するステップの実現過程は、コンピューティングノードクラスタにおける他のコンピューティングノードにターゲットオブジェクトについての操作ロッキング要求を送信することで、これらのコンピューティングノードがサーバにロッキング応答情報を返信することであってもよい。さらには、コンピューティングノードクラスタにおけるすべてのコンピューティングノードに操作ロッキング要求を送信してもよく、このときに、グローバルロックを申請すると見なすことができる。ある状況下で、コンピューティングノードクラスタにおける一部のコンピューティングノードに操作ロッキング要求を送信してもよく、このときに、局所ロックを申請すると見なすことができる。1つの実施例において、コンピューティングノードクラスタにおける他のコンピューティングノードにターゲットオブジェクトについての操作ロッキング要求を送信した後に、一部のコンピューティングノードのロッキング応答情報を受信したときに、第1操作段階に対応した操作工程を実行してもよく、すべてのコンピューティングノードのロッキング応答情報を受信したときに、第1操作段階に対応した操作工程を実行してもよい。
【0076】
さらには、ターゲット操作工程シーケンスに応じてターゲットオブジェクトに対してターゲットインタラクション操作を実行するステップは、ターゲットオブジェクトに対応する次の操作段階を決定して、第1操作段階を得るステップと、コンピューティングノードクラスタに操作ロッキング要求を送信することで、コンピューティングノードクラスタにおける各コンピューティングノードが操作ロッキング要求と互換性があるときにオブジェクトロックをかけかつロッキング応答情報を返信するステップと、コンピューティングノードクラスタにおける各コンピューティングノードから返信されたロッキング応答情報を受信したときに、第1操作段階を実行するステップと、第1操作段階の実行が終わったときにコンピューティングノードクラスタに操作アンロッキング要求を送信することで、コンピューティングノードクラスタにおける各コンピューティングノードがオブジェクトロックを解除しかつ継続して動作するステップと、オブジェクト変更要求に従ってターゲットオブジェクトを変更する次の変更段階を取得するステップに戻り、オブジェクト変更要求に対応する各操作変更段階の実行が終わるまで行うステップと、を含む。
【0077】
1つの実施例において、ターゲットインタラクション操作を複数の小さな操作段階に分けて実行するため、すべての操作段階に対してロックを申請しなくてもよく、制御する必要がある操作段階が開始するときにロックを申請し、各々の操作段階の実行が終わった後にロックを解放すればよい。具体的には、テーブルAにおけるデータがデータテーブルにおいて保管されており、あるオブジェクト変更操作に基づいてテーブルAを削除しようとすると、テーブルAがすでに削除されており、現在はデータテーブルにおけるテーブルAのデータを削除する過程に属しており、もしこのときに1つの同名テーブルを新規作成する変更操作を受信すれば、テーブルAがすでに削除されており、新規作成されるテーブル及び削除されたテーブルには競合が存在せず、データテーブルを削除する操作とも競合しないため、テーブルを新規作成する過程はロックを申請する必要がない。
【0078】
1つの実施例において、ターゲットインタラクション操作がDDL文であることを例とすると、コンピューティングノードクラスタ全体は外部に対して一体として表されてもよく、DDLが入る次の段階で他のDML文のロールバックをもたらすようになる可能性がある前に、サーバはグローバルロックを申請する必要があり、このときに、強い同期を行うことができる。グローバルロックを申請する具体的な過程は以下のとおりであってもよい。
1、サーバは、まず、コンピューティングノードクラスタのすべてのノードにロック申請の要求を送信し、かつ一定時間待ち、
2、サーバは、互換性がないロックをすでに持っていることをフィードバックする他のコンピューティングノードがあるか否かを検査し、もしあるなら、待ち、3に進み、もしロックを持っているフィードバックがない、又はロッキング応答情報を受信するなら、次の段階に進行させることができことを意味し、4に進み、
3、サーバは各コンピューティングノードのロッキング応答情報を待ち、
4、サーバはターゲットオブジェクトの状態を進行させる。状態を進行させるため、他のコンピューティングノードは、もし前の段階でフィードバックを送信しなければ、これによりロールバックが発生する可能性があるようになる。
5、サーバの実行が完了した後、フィードバックしたコンピューティングノードにロック解放メッセージを送信し、DDL文が完了するまで上記ステップを継続して繰り返す。
【0079】
上記実施例において、サーバは各操作段階でいずれも操作ロッキングを要求し、各操作段階を独立した操作ユニットとすることができ、さらに最小ユニットの競合チェックを実現し、コンピューティングノードの待ち過程をできるだけ減少させることができる。
【0080】
1つの実施例において、オブジェクト処理方法は、ターゲットオブジェクトに対応する第2操作段階を決定するステップであって、第2操作段階は第1操作段階に対応する次の操作段階である、ステップと、第2操作段階に対応した段階優先度が優先実行条件を満たすときに、操作ロッキング要求により要求されたオブジェクトロックを維持し、第2操作段階に対応した操作工程を実行するステップと、をさらに含む。
【0081】
上記実施例において、第1操作段階でロックをかけることを申請した後に、もし第2操作段階でやはりロックを申請するなら、第1操作段階で申請されたロックを解放せず、それによってロック申請操作を繰り返し行うことを防止し、オブジェクト処理の効率を効果的に向上させることができる。
【0082】
1つの実施例において、第1操作段階に対応した段階優先度が優先実行条件を満たすときに、ターゲットオブジェクトについての操作ロッキング要求を送信するステップは、第1操作段階に対応した操作内容の操作内容レベルを決定するステップと、操作内容レベルがオブジェクトレベルであるときに、第1操作段階に対応した段階優先度が優先実行条件を満たすと決定し、ターゲットオブジェクトについての操作ロッキング要求を送信するステップと、を含む。
【0083】
ここで、操作内容はインタラクション操作がターゲットオブジェクトに対して操作する内容であり、操作内容はオブジェクトレベルの内容であってもよく、データレベルの内容であってもよい。ターゲットオブジェクトがテーブルであることを例とすると、操作内容はオブジェクトレベルの内容、例えば、テーブルの構造、データタイプ、テーブル間のリンク及び制約などに対して行われる操作であってもよく、操作内容はデータレベルの内容、例えば、テーブルに1つの記録を挿入すること、及びテーブルにおけるある記録に対してデータ修正を行うことなどであってもよい。内容レベルのインタラクション操作によるターゲットオブジェクトへの影響程度は、データレベルのインタラクション操作によるターゲットオブジェクトへの影響程度よりも大きい。
【0084】
上記実施例では、操作内容レベルに基づいて操作段階に対応する段階優先度を決定し、さらに操作ロッキング要求を送信するか否かを決定する。内容レベルのインタラクション操作を優先的に実行することができ、データレベルのインタラクション操作を後から実行し、このようにデータレベルのインタラクション操作を実行した後に、内容レベルのインタラクション操作がデータレベルのインタラクション操作の影響を上書きして、無効操作が発生することを効果的に防止することができ、このような方式によってオブジェクト処理の効率を効果的に向上させることができる。
【0085】
1つの実施例において、第1操作段階に対応した段階優先度はターゲット操作タイプに従って決定されてもよく、ターゲット操作タイプがプリセットしたタイプ条件に合うと、ターゲットインタラクション操作の各操作段階に対応する段階優先度がいずれも優先実行条件を満たすと決定する。さらには、ターゲットインタラクション操作の操作内容レベルがオブジェクトレベルであれば、ターゲット操作タイプがプリセットしたタイプ条件に合うと判定し、かつターゲットインタラクション操作の各操作段階に対応する段階優先度がいずれも優先実行条件を満たすと決定する。具体的には、ターゲット操作タイプがDDL文に対応する操作タイプであるときに、ターゲットインタラクション操作の各操作段階に対応する段階優先度がいずれも優先実行条件を満たすと判定して決定し、すなわち、DDL文の実行はDMLなどの文よりも優先的である。
【0086】
1つの実施例において、オブジェクト処理方法は、オブジェクトインタラクション要求に対応したターゲットオブジェクトバージョン識別子を決定するステップと、現在の変更操作に従ってターゲットオブジェクトを変更した後の、ターゲットオブジェクトに対応した現在のオブジェクトバージョン識別子を取得するステップと、ターゲットオブジェクトバージョン識別子と現在のオブジェクトバージョン識別子とを比較し、比較が一致しないときに、オブジェクトインタラクション要求への応答を停止するステップと、をさらに含む。
【0087】
ここで、オブジェクトインタラクション要求においてターゲットオブジェクトのバージョン識別子が運ばれ、サーバはオブジェクトインタラクション要求を受信した後に、該要求により運ばれたターゲットオブジェクトのバージョン識別子を決定して、ターゲットオブジェクトバージョン識別子を得る。
【0088】
ここで、ターゲットオブジェクトはバージョン識別子に対応し、ターゲットオブジェクトを更新した後に、ターゲットオブジェクトのバージョン識別子が変化するようになり、例えば、ターゲットオブジェクトに対して1回の変更を行うたびに、ターゲットオブジェクトのバージョン識別子が+1になり、これによりターゲットオブジェクトに対応した現在のオブジェクトバージョン識別子を得ることができる。
【0089】
上記実施例において、ターゲットオブジェクトのバージョン識別子の比較によってオブジェクトインタラクション要求に応答するか否かを決定し、ターゲットオブジェクトバージョン識別子と現在のオブジェクトバージョン識別子との比較が一致するときにのみ、オブジェクトインタラクション要求に応答する。ターゲットオブジェクトに対して行われるインタラクション操作がいずれもターゲットオブジェクトの最新の状態で行われるようにすることができ、異なるコンピューティングノードにより取得されるターゲットオブジェクトの内容に差が存在することを防止し、コンピューティングノードクラスタにおけるすべてのコンピューティングノードのターゲットオブジェクトに対するデータ一致性を確保することができる。
【0090】
1つの実施例において、オブジェクトインタラクション要求はオブジェクト変更要求であり、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行するステップは、次のオブジェクト変更段階が情報チェック段階であるときに、オブジェクトインタラクション要求と対応するインタラクション基本情報を取得するステップと、インタラクション基本情報をチェックするステップと、インタラクション基本情報のチェックに合格したときに、ターゲットオブジェクトに対して状態変更を行うステップと、を含む。
【0091】
1つの実施例において、オブジェクトインタラクション要求はオブジェクト変更要求であり、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行するステップは、次のオブジェクト変更段階がバージョン識別子の書込段階であるときに、ターゲットオブジェクトに対して対応する状態変更操作を行うステップと、状態変更操作を行った後のターゲットオブジェクトに対応するターゲット状態バージョン識別子を取得するステップと、ターゲット状態バージョン識別子を記憶空間に書き込むことで、記憶空間における記憶ノードがターゲットオブジェクトについての新たなオブジェクトインタラクション要求を受信したときに、新たなオブジェクトインタラクション要求に運ばれた状態バージョン識別子を決定し、かつオブジェクトインタラクション要求に運ばれた状態バージョン識別子がターゲット状態バージョン識別子とマッチングしないときに、該新たなオブジェクトインタラクション要求への応答を停止するステップと、を含む。ここで、記憶ノードは記憶エンジンノード(TD Store)と呼ばれてもよく、記憶レイヤーに動作可能なコンピュータ機器であってもよく、主にトランザクション及び記憶機能を完了する。
【0092】
1つの実施例において、オブジェクトインタラクション要求はオブジェクト変更要求であり、オブジェクトインタラクション要求に従ってターゲットインタラクション操作を実行するステップは、次のオブジェクト変更段階が状態ブロードキャスト段階であるときに、ターゲットオブジェクトに対して対応する状態変更操作を行うステップと、状態変更操作に基づいて状態変更ブロードキャスト情報を生成するステップであって、状態変更ブロードキャスト情報は、コンピューティングノードクラスタにおける各コンピューティングノードが状態変更操作後のターゲットオブジェクトを取得するようにトリガすることに用いられる、ステップと、を含む。ここで、状態変更ブロードキャスト情報はターゲットオブジェクトの状態が変更するときに生成されたブロードキャスト情報である。各コンピューティングノードは状態変更ブロードキャスト情報を受信して、状態記録テーブルからターゲットオブジェクトに対応する最新の状態及び最新のバージョン情報を取得することができる。更には、状態変更ブロードキャスト情報はglobal schema version(グローバルオブジェクトバージョン識別子、GLSV)などによって表されてもよい。
【0093】
上記実施例において、異なる変更段階によってオブジェクト変更要求に応答し、これらの変更段階の実行前後順序は実際の状況に従って調整されてもよく、また、異なるターゲット操作タイプにおける変更段階の数及び順序は異なってもよい。このような方式によって、複数の独立した変更段階によってオブジェクト変更要求の応答を実現し、変更操作の原子化制御を確保することができる。
【0094】
1つの実施例において、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定するステップは、記憶空間から状態記録テーブルを取得するステップであって、状態記録テーブルは各オブジェクト変更操作に対応する状態情報を記録することに用いられる、ステップと、状態記録テーブルにおいて競合オブジェクト変更操作の状態情報が存在しないときに、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定するステップであって、競合オブジェクト変更操作はオブジェクトインタラクション要求と競合する変更操作である、ステップと、を含む。本実施例において行われる競合チェックはインタラクション操作間の競合チェックであると見なすことができ、第1段の競合チェックであると見なすことができる。
【0095】
1つの実施例において、オブジェクトインタラクション要求はオブジェクト変更要求であり、状態記録テーブルにおいて競合オブジェクト変更操作の状態情報が存在しないときに、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定するステップは、ターゲットオブジェクトのオブジェクト識別子を取得するステップと、オブジェクト識別子に基づいてクラスタ管理ノードにオブジェクト登録要求を送信することで、クラスタ管理ノードがオブジェクト登録要求に応答して、オブジェクト識別子に基づいて一意的な登録番号を生成するステップと、クラスタ管理ノードから送信された一意的な登録番号を取得したときに、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定するステップと、を含む。本実施例において行われる競合チェックはインタラクション操作内の競合チェックであると見なすことができ、第2段の競合チェックであると見なすことができる。
【0096】
1つの実施例において、現在の変更操作の各々の変更段階は操作タイプに対応してもよく、これらの操作タイプは予め設定されたターゲットオブジェクトの状態に基づいて決定されてもよく、例えば、delete-only状態における操作段階に対しては、操作タイプは削除操作タイプであってもよく、write状態における操作段階に対しては、操作タイプは書き込み操作タイプであってもよく、read状態における操作段階に対しては、操作タイプは読み取り操作タイプであってもよく、等々である。
【0097】
1つの実施例において、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定するステップは、現在の変更段階が操作阻止情報の書込段階であるときに、現在の変更段階に対応した現在の並行操作タイプを削除操作タイプとして決定するステップであって、操作阻止情報の書込段階は、現在の変更操作に従ってターゲットオブジェクトを変更した後の、ターゲットオブジェクトに対応した現在のオブジェクトバージョン識別子を書き込むことに用いられる、ステップと、ターゲット操作タイプが削除操作タイプとマッチングしないときに、オブジェクトインタラクション要求に対応する競合チェック結果として競合が存在すると決定するステップと、を含む。
【0098】
ここで、操作阻止情報の書込段階は操作阻止情報を記憶空間に書き込む段階であり、write fence(書き込みフェンス)段階と呼ばれてもよい。操作阻止情報は条件に合わない操作を阻止することに用いられる情報であってもよい。ここで、条件に合わない操作は、バージョン識別子がターゲットオブジェクトに対応した現在のオブジェクトバージョン識別子と一致しない操作であってもよい。
【0099】
ここで、削除操作タイプは削除操作を行うことができる操作タイプであり、具体的には、削除操作タイプはdelete-only状態における操作タイプであってもよい。さらには、ターゲット操作タイプが削除操作に対応するときにのみ、競合チェック結果として競合が存在しないと決定し、さもなければ、競合チェック結果として競合が存在すると決定する。
【0100】
1つの実施例において、Schemaには1つのバージョン番号が付けられるようになり、1つのインタラクション操作の実行が終わるたびに、Schemaのバージョン番号をデータとして記憶ノードに記憶することができる。write fence段階でバージョン番号に対して+1操作を行うことができる。
【0101】
1つの実施例において、もしあるSchemaについてのDDL文の実行が終わるなら、他のノードはブロードキャストされたグローバルオブジェクトバージョンに基づいてSchemaについてのDDL文の実行が終わったことを知ることができ、従って、ddl_jobによってSchemaの最新のバージョン番号及び最新の状態を取得することができる。DML文が1つのバージョン番号を付けてSchemaにアクセスするときに、もしこのバージョン番号がSchemaの現在のバージョン番号よりも小さければ、SchemaがDDL文を実行するプロセス中にあり且つ完了していないことを意味し、DML文をロールバックする必要がある。このような方式によって、Schemaに対してDDL文を実行する過程において、他の文がSchemaに対してインタラクションを行うことを効果的に防止することができる。
【0102】
上記実施例では、操作阻止情報の書込段階において、操作タイプのマッチング性判断に基づいて競合チェック結果を決定し、競合チェック結果の信頼性を効果的に確保することができる。
【0103】
1つの実施例において、現在の変更操作に対応する変更段階は
図5における502/504/506/508及び510に示されてもよい。
図5における各変更段階はいずれもそれぞれの状態に対応してもよく、サーバはオブジェクトインタラクション要求を受信した後に、オブジェクトインタラクション要求に対応するターゲット操作タイプと現在の変更段階の現在の並行操作タイプとのマッチング性判断を行い、もし両者がマッチングするなら、競合チェック結果として競合が存在しないと決定し、もし両者がマッチングしないなら、競合チェック結果として競合が存在すると決定する。管理ノードはクラスタ管理ノード(MC、management of cluster)と呼ばれてもよく、コンピュータ機器によって実現されて、クラスタ全体の必須な情報を管理することができる。
【0104】
さらには、現在の変更操作に対応する変更段階を以下のように詳細に説明する。
【0105】
1、DDL文を受信したときに、サーバは記憶ノードからデータ辞書を読み取り、それからメタ情報を取得し、かつメタ情報をチェックする。もしメタ情報のチェックが失敗するなら、オブジェクトインタラクション要求への応答の実行を終止する(ABORT)。
【0106】
2、もしメタ情報のチェックが成功するなら、サーバはSchemaの現在の状態及びターゲット状態を決定し、ローカルの記憶空間から状態変換行列を取得し、かつ状態変換行列に基づいて現在の状態をターゲット状態に変換することを許可するか否かを決定する。もし変換が許可されないなら、オブジェクトインタラクション要求への応答の実行を終止する(ABORT)。
【0107】
3、もし変換が許可されるなら、記憶ノードにwrite fenceを進行させて、Schemaのバージョン番号をデータとして記憶ノードに記憶する。もし進行が失敗するなら、オブジェクトインタラクション要求への応答の実行を終止する(ABORT)。
【0108】
4、もし進行が成功するなら、記憶ノードによってデータ辞書を更新する。もし更新が失敗するなら、オブジェクトインタラクション要求への応答の実行を終止する(ABORT)。
【0109】
5、もし更新が成功するなら、管理ノードにGLSVを進行させて、Schemaの文について実行された状態を他のコンピューティングに通知する。
【0110】
6、もしGLSVの進行が成功するなら、現在の変更操作の実行が成功する(SUCCESS)。
【0111】
1つの実施例において、オブジェクトインタラクション要求がオブジェクト変更要求であるときに、ターゲットオブジェクトに対するターゲット変更操作の前に、さらに準備操作を実行してもよく、ターゲットオブジェクトに対するターゲット変更操作の後に、さらにエンディング操作を実行してもよい。ターゲット変更操作がDDLに対応する操作であることを例とすると、準備操作はstart_ddl_jodと呼ばれてもよく、エンディング操作はend_ddl_jodと呼ばれてもよく、ターゲット変更操作はpush_ddl_jodと呼ばれてもよい。準備操作、ターゲット変更操作及びエンディング操作を一緒に実行する過程は
図6に示されてもよく、
図6は1つの実施例におけるオブジェクト処理方法のフローチャートである。具体的な実現過程は以下のとおりであってもよい。準備操作を実行し、もし準備操作の実行が成功するなら、開始が成功すると判定し、ネイティブDDLプロセスの実行過程に進む。ここで、第1ネイティブDDLプロセスは準備操作からオブジェクト変更操作までの間で実行される必要があるDDLプロセスであってもよい。第1ネイティブDDLプロセスの実行が終了するときに、オブジェクト変更操作の実行を開始し、もしオブジェクト変更操作の実行が成功すれば、推定が成功すると判定する。第2ネイティブDDLプロセスを継続して実行する。ここで、第2ネイティブDDLプロセスはオブジェクト変更操作からエンディング操作までの間で実行される必要があるDDLプロセスであってもよい。第2ネイティブDDLプロセスの実行が終了するときに、エンディング操作の実行を開始し、もしエンディング操作の実行が成功すれば、推定が成功すると判定し、プロセス全体を終了することができる。また、
図6に示すように、ある操作工程の実行が失敗するときに復元する必要があるか否かを判断することができ、もし復元する必要があるなら、復元プロセスを実行して実行が失敗する前の状態に復元し、オブジェクト変更操作の安定する動作を確保する。
【0112】
1つの実施例において、何らのタイプのDDLはいずれも実行を開始するときにddl recordを記録するようになり、すなわち、状態情報をddl_jobに記録する。このようにする目的は、システムにおいてあるDDLが実行されたことを明確にすることである。復元スレッドにとっては、ddl_jobはDDLのフィールドである。
【0113】
1つの実施例において、DMLがDDLと並列する過程においてデータの読み取り/書き込みが間違わないことを確保するために、DDLの実行プロセスにおいて具体的な状況に従ってメタデータ及びユーザデータの状態を連続的に調整する必要がある。たとえば、DROP TABLEがユーザデータの削除を確実に実行する前に、メタデータ状態をdelete-only状態に進行させるべきであり、それによって新しいトランザクションが削除されたユーザデータを読み取ることを防止する。分散型データベースにおいて、DDL状態を進行させる過程は、たとえばネットワーク磁気ディスクの異常などの何らの異常により中断される可能性がある。進行過程のいずれかのノードの失敗はいずれもDDLの実行が失敗することを意味する。このような状況で、バックグラウンドスレッドで復元する必要があり、復元する文はstart_ddl_jobに記録されたddl_jobであり、ddl_jobはDDLの進行状態に伴って連続的に更新され、ddl_jobのリアルタイム性は復元スレッドのために有効なフィールドを保留することができる。DDLの実行が終わるときに、DDLの実行メインプロセスに異常をスローするか否かに従ってddl_jobの保留又は削除を決める必要がある。ddl_jobの削除を決めるシーンで、すなわちDDLの実行が成功することが表され、さもなければ、バックグラウンド復元スレッドで二次判断を行う必要がある。
【0114】
具体的には、push ddl jobという機能はSchema状態を1つの状態から次の状態に進行させる全部の必須状態をカプセル化する。この機能の実行によって、1つのDDL変更の実行を数個の連続する小さな段階に分割して実行し、push_ddl_jobはDDL文の小さな段階の実行状態を進行させるために用いられ、DDLを段階的に実行する実施者であり、
図5に示すように、その主な機能は以下を含む。
【0115】
1、最新のデータ辞書情報に基づいてバージョン情報の修正を行い、データ辞書においてSchemaの状態及びバージョンを修正し、この過程はデータ辞書の通常の修正操作であってもよく、また、メタ情報をチェックすることをさらに含む。
【0116】
2、メタ情報のチェックが成功するときに、状態変換行列によってオブジェクト状態の変換が論理に合うか否かを検出し、許可された状態の間でのみ状態を進行させることができる。
【0117】
3、write fence段階を追加する/進行させる。
【0118】
4、データ辞書を更新する。
【0119】
5、バージョン識別子を進行させ、故障の復元のために進行情報を保存する。
【0120】
1つの実施例において、本願の実施例のオブジェクト変更操作はデータの非同期削除を実現することができ、例えば、あるコンピューティングノードがSchemaについての挿入操作を確実に実行するときに、別のコンピューティングノードはSchemaにおけるある記録をワンステップで削除することができる。DDL文におけるDROPクラスの操作に対しては瞬時に完了することができ、バックグラウンドスレッドはデータの削除を確保し、且つ実際の削除動作はDDL文と同一のコンピューティングノードで実行される必要がない。
【0121】
1つの実施例において、準備操作の具体的な実現プロセスは
図7に示されてもよい。start_ddl_jobはSQL Engineが1つのDDL文を実行する開始点であり、
図7に示すように、その主な機能は以下を含む。
【0122】
1、DDL同期構造を照会し、すなわちddl_jobを走査し、クラスタグローバルで現在のddlと競合する文を実行していないことを決定する。例えば、ALTER TABLE又はDROP TABLE文を実行し、それによって文実行結果に従って競合検出結果を得る。ここでは記憶レイヤーを利用して1回目の競合検出を行い、すなわちDDL間の並列制御を実現する。もしddl_jobの走査結果に基づいて競合が存在すると決定するなら、DDL文の実行を終止する(ABORT)。
【0123】
2、もしddl_jobの走査結果に基づいて競合がないと決定すれば、ターゲットオブジェクトのベーステーブル名で形成されたkey(キーワード)を取得し、かつ管理ノードで登録を行う。管理ノードは登録過程において2つの重複値の登録を許可せず、MCは登録が成功するときにデータ辞書ロック(dd.table lock)を出力するようになり、ここではクラスタ管理レイヤーを利用して2回目の競合検出を行い、すなわちDDL文間の並列制御を実現する。もしdd.table lockの取得が失敗し、すなわち、登録が失敗するなら、DDL文の実行を終止する(ABORT)。
【0124】
3、もしdd.table lockの取得が成功すれば、今回のddlの状態情報を状態記録テーブル(ddl_jobテーブル)に格納して、並列制御及び故障の復元を行う。もしddl_jobテーブルへの格納が失敗するなら、DDL文の実行を終止する(ABORT)。
【0125】
4、3において格納された記録の存在性を検査し、存在するときに、ddl_jobテーブルへの格納が成功することを意味し、管理ノードから状態ロック(jod_id lock、job-idロック)を取得して現在のDDLの実行状態を速やかに判断し、もし取得しないなら、DDLが正常なプロセスにおいて実行されている又はすでに他のノード上で復元されたことを意味する。もしjob-idロックの取得が失敗するなら、DDL文の実行を終止する(ABORT)。
【0126】
5、もしjob-idロックの取得が成功するなら、start_ddl_jobの実行が成功する(SUCCESS)。
【0127】
1つの実施例において、エンディング操作の具体的な実現プロセスは
図8に示されてもよい。具体的には、end_ddl_jobはDDLの実行を終了し、いくつかの後始末を行うために用いられ、具体的な実現プロセスを以下のように説明する。
【0128】
1、サーバは、ローカルでDDLの実行フィールドに従って、ddl_jobテーブルからDDL記録を除去する必要があるか否かを決断する。ここで、除去する必要があるか否かの根拠は、復元スレッドで復元する又は継続して実行する必要があるか否かであり、もし復元スレッドで復元する必要がある又は継続して実行する必要があるなら、除去しない。
【0129】
2、決断が成功するときに、管理ノードによってGLSVを進行させて(すなわち、オブジェクトバージョン識別子を進める)、Schemaについての文の実行が終了したことを他のコンピューティングに通知する。
【0130】
3、GLSVの進行が成功するときに、ロックの解放を実行し、すなわちrelease LOCKを実行し、管理ノードによって本DDLの実行プロセスにおいて申請された各種のグローバルロックを解放する。もしロック解放の実行が失敗するなら、バックグラウンドスレッドによって復元する。
【0131】
4、ロック解放の実行が成功するときに、内部メモリの解放を実行し、すなわちrelease memを実行して、相応な内部メモリを解放する。もし内部メモリ解放の実行が失敗するなら、バックグラウンドスレッドによって復元する。
【0132】
5、もし内部メモリ解放の実行が成功するなら、end_ddl_jobの実行が成功する(SUCCESS)。また、もしレガシータスクが完了していないなら、バックグラウンドスレッドによって復元する。
【0133】
説明する必要があるように、
図5、
図6、
図7及び
図8において分割された各段階は完全な操作段階として理解することができ、異なる操作タイプに必要な変更段階は適宜に削減することができ、例えば、削除操作は、データ辞書情報を追加で修正する必要がない。
【0134】
1つの実施例において、DDL同期構造を照会することによってDDL文の実行状況を取得することができる。以下の照会文「select * from information_schema.ddl_job where is_history= 1\G」によって得られた照会結果は以下のとおりであってもよい。
mysql> select * from information_schema.ddl_job where is_history=1\G
SCHEMA_NAME: d1
TABLE_NAME: #
TABLE_VERSION: 0
DDL_STATUS: 0
START_TIMESTAMP: 2021-04-07 19:14:14
LAST_TIMESTAMP: 2021-04-07 19:14:14
DDL_SQL: create database d1
INFO: {”exec_addr”:{”ip”:”127.0.0.1”,”port”:9025},”recov_addr”:{”ip”:”127.0.0.1”,”port”: 9025}}
【0135】
ここで、「SCHEMA_NAME」はターゲットオブジェクトの名称を表し、「TABLE_NAME」はターゲットオブジェクトにおけるあるテーブルの名称を表し、「TABLE_VERSION」はテーブルのバージョンを表し、「DDL_STATUS」はDDL文の実行状態を表し、「START_TIMESTAMP」はDDL文を実行する開始時間を表し、「LAST _TIMESTAMP」はDDL文を実行する終了時間を表し、「DDL_SQL」は実行しているDDL文であり、「INFO」は照会された情報を表し、exec_addrはDDLの実行のマシンアドレスを表し、ipは対応するIP(Internet Protocol、インターネット相互接続プロトコル)アドレスを表し、portは対応するネットワークインタフェースを表し、recov_addrはDDLの実行が完了するマシンのアドレスを表し、正常又は異常などの状態情報を含んでもよい。
【0136】
本願は応用シーンをさらに提供し、該応用シーンは上記オブジェクト処理方法を応用する。具体的には、該オブジェクト処理方法の該応用シーンでの応用は以下のとおりである。
【0137】
本願の実施例は分散型データベースシステム、及びコンピューティングと記憶とを分離したマルチライトデータベースクラスタシステムなどに応用できる。データ定義言語文(DDL文)を1回実行するプロセスは
図9に示される。
【0138】
まず、start_ddl_jod段階を実行する。次にpush_ddl_job段階を実行する。最後にend_ddl_job段階を実行する。push_ddl_job段階は、1、状態を進行させ、ユーザデータの視認性を確保し、2、ddlの進行情報を記録し、任意のノードで復元できることを確保するという機能を実現することに用いられる。end_ddl_job段階は情報保存などの後始末を実現することに用いられる。正常に終了する状況において、一時テーブルを整理する必要があるか否かに基づいて対応する状態記録を保留するか否かを決定し、また、ユーザデータの削除はバックグラウンドスレッドで実行される必要があり、すなわち、DDLスレッド(DDL thread)で実行される必要がある。
【0139】
図9に示すように、ある段階の実行が失敗するときに、失敗記録を生成し、かつ復元スレッドによって実行が失敗する前の状態を復元することができる。ここで、実行が失敗することは、プログラムの実行が失敗することであってもよく、電源が切れるなどの、システムが動作できない失敗状況であってもよい。さらには、復元スレッドで再び処理する必要がないときに、DDLスレッドは元の状態に戻り、かつ他のタスクを処理することができ、復元スレッドで処理する必要があるときに、復元スレッドによって対応する状態を復元し、復元スレッドはddl_jobにアクセスして実行が失敗する状態を取得し、さらに状態の復元を実現することができる。DDLの失敗によるデータ問題を心配する必要がなく、一旦DDLの実行が失敗すると、バックグラウンドスレッドは異常DDLを復元し、データの一致性状態を確保し得る。
【0140】
DDL文に対してはすべてのコンピューティングノードの強い同期が要求されず、すべてのコンピューティングノードは以下の方式によってあるコンピューティングノード上でDDL文の実行を行っていることを感知する。
【0141】
1、DDL文に対しては、クラスタ管理ノード及び記憶ノードによって同一のSchemaに対する変更文がまだ実行しているか否かを検証する。変更過程がタスクの形式で記憶ノードに記憶されるため、タスクを照会する過程は実際に検査過程を含む。また、記憶ノードのwrite fenceは記憶ノードがDDL過程において許可されない読み書き操作の実行を阻止することを確保し得る。
【0142】
2、DDL文における各々の小さな段階の完了に対しては、いずれも1つのクラスタレベルの変数を更新するようになり、クラスタの他のノードが新たなトランザクションを始めるときに、現在のschema変更がある段階に基づいて後続の実行の論理判断を行い、クラスタレベルの変数を獲得し得る。クラスタレベルの変数値に従ってSchema変更判断プロセスに進むか否かを決め、かつ、現在操作しているschemaにSchema変更が発生したか否か、どの変更が発生したか、現状ではSchemaが1つのどのような状態にあるか、この状態が現在の操作の実行を許可するか否かなどの内容を判断し、処理過程の実行が完了した後に、コンピューティングノードのSchemaも最新の状態に更新される。
【0143】
3、データ辞書において1つの論理テーブル、すなわち前述の実施例における状態記録テーブルを加えることができる。動作過程において、論理テーブルにおける状態を同期させることによって文をどのように実行するかを決定し、この論理テーブルはコンピューティングノードクラスタにおけるすべてのコンピューティングノードによりアクセスでき、従って、論理テーブルにおいて記録された状態はクラスタレベルの変数とすることができる。ここで、論理テーブルはddl_jobによって実現されてもよく、DDLの実行状態はSQL文の形式によってddl_jobを照会することができ、ddl_jobの記録によって現在のDDLの実行が終わったか否か、どのステップまで実行するかなどを判定する。また、論理テーブル及びデジタル辞書における同期構造は異なってもよい。
【0144】
4、他のノードがトランザクションの実行を開始するときに、対応するSchema変更が発生しないと仮定すると、実行過程において、Schema変更過程(Write fence)におけるSchema状態に対する永続的な更新によって、クラスタにおける各ノードが実行過程において古いバージョンのSchemaオブジェクトを使用して操作するため、もたらしたデータが一致しないという問題を防止することができる。データが記憶レイヤーに書き込まれるときにSchemaオブジェクトの現在のバージョンが操作バージョンと互換性があるか否かを判断する1つの論理を加えることでデータの読み書きを許可するか否かを決め、さらにデータの読み書きがいずれもデータの一致性及び完全性の問題を導入しないことを確保する。同時に複数の競合解決メカニズムをサポートする。
【0145】
また、DDLは優先され、すなわちDDLは常に実行状態を進行させることができ、他のDML文のトランザクションはある状態においてロールバックされるようになる。具体的には、他のDML文の実行過程においてDDL文を実行する必要があると、DDL文の実行が終わった後にこれらのDML文をロールバックする。
【0146】
従来技術において、分散型データベースのDDLを実現するときに、DDLのシリアル実行のみが実現され、且つ特定のノード上でのみDDLの実行が許可される。本実施例は、実行段階の細部を分割することによって、複数のノード上でDDL文を実行することを許可することができ、すなわち、任意のコンピューティングノード上でDDLを実行することができ、関係がないDDLが並行して実行することができ、マルチライトを実現する。
【0147】
上記実施例は、少なくとも以下の有益な効果を有する。
【0148】
1、DDL文の分散型データベースにおける実行表現はスタンドアロンMySQL(リレーショナルデータベース管理システム)によるDDL文の実行と基本的に一致することを確保することができる。
【0149】
2、DDLの実行をセグメント化し、同時に異なるコンピューティングノード間の処理オブジェクトバージョンが遅延できることを許可することによって、分散型システムがDDLを実行する過程における、DML文に対する影響を最大限に高める。従来のDDL文の実行を、変更前から変更後に直接変化するという元のモードから複数の連続して独立した小さなステップに変換して実行することで、クラスタにおける異なるコンピューティングノードは非同期方式によってSchema変更の状態を感知することができ、同時にコンピューティングレイヤーで読み書き操作をスタートするときに、記憶レイヤーは現在の操作オブジェクトのバージョン状態がクラスタSchemaの最新の状態に互いに合うか否かを判断するようになり、DDL変更に起因して読み書きトランザクションにデータの一致性問題が発生することを防止する。
【0150】
3、DDL文は段階的に実行され、他のノードは異なる段階に従ってタイムリーに感知することができ、且つDDLの現在の実行段階に従ってトランザクションを継続して実行/ロールバックするか否かを決めることができ、状態に対する精密な分割によってトランザクションのロールバックを最小限に減少させることができる。非ロックモードによって、クラスタにおける異なるコンピューティングノードに現在のシステムでDDL変更文が発生していることを感知させ、強い同期による実現と比べて、DDL文が実行されるときに他のコンピューティングノードに対する影響を最小限に低減させることができる。
【0151】
4、ユーザデータはwrite fenceにより保障され、バージョンを跨いだデータがセグメント化されたDDLの制限を突破しても、記憶レイヤーがwrite fenceによって発見し得ることを確保し、かつトランザクションのコミットを拒否し、データの読み取り/書き込みが間違わないことを確保する。
【0152】
5、ddl_jobによってグローバル制御構造を実現し、DDLの実行情報を追跡し、バックグラウンド復元スレッドはシステムテーブルをリアルタイムにモニタリングする。DDL文の分散型システムにおける実行が失敗するときに、メタデータが依然として正確で一致する1つの状態に復元してユーザにサービスを提供することができることを確保する。
【0153】
6、一旦DDL失敗のシーンが発生すると、バックグラウンドスレッドは実行情報に従って直ちにロールバック又は進行を行うことができ、分散型データベースシステム全体が別の一致性状態に入ることができることを確保し、かつ外部にサービスを提供する能力を復元する。
【0154】
理解すべきであるように、上記フローチャートにおける各ステップは矢印の指示に応じて順次表示されるが、これらのステップは必然的に矢印で指示された順序に応じて順次実行されるわけではない。本明細書において特に明記されない限り、これらのステップの実行には厳密な順序制限がなく、これらのステップは他の順序で実行されてもよい。そして、上記フローチャートにおける少なくとも一部のステップは複数のステップ又は複数の段階を含んでもよい。これらのステップ又は段階は必然的に同一の時刻で実行されるわけではなく、異なる時刻で実行されてもよい。これらのステップ又は段階の実行順序も必然的に順次行われるわけではなく、他のステップ又は他のステップのうちのステップ又は段階の少なくとも一部と順番に又は交互に実行されてもよい。
【0155】
上記実施例におけるオブジェクト処理方法と同じ思想に基づいて、本願はオブジェクト処理装置をさらに提供し、該装置は上記オブジェクト処理方法を実行することに用いられてもよい。説明を容易にするために、オブジェクト処理装置の実施例の構造模式図において、本願の実施例と関連する部分のみが示されている。当業者であれば理解できるように、図示される構造は装置に対する限定を構成せず、図示されるものよりも多い又は少ない部材を含んでもよく、又はある部材を組み合わせ、又は異なる部材を配置する。
【0156】
1つの実施例において、
図10に示すように、オブジェクト処理装置1000を提供し、該装置はソフトウェアモジュール又はハードウェアモジュール、又は両方の結合を採用してコンピュータ機器の一部となることができる。該装置は具体的に、インタラクション要求受信モジュール1002と、変更段階取得モジュール1004と、競合チェックモジュール1006と、操作実行モジュール1008と、を含み、ここで、
インタラクション要求受信モジュール1002は、ターゲットオブジェクトについてのオブジェクトインタラクション要求を受信することに用いられる。
【0157】
変更段階取得モジュール1004は、オブジェクトインタラクション要求に応答して、ターゲットオブジェクトについての現在の変更操作が属する現在の変更段階を取得することに用いられ、現在の変更操作は複数の操作工程を含み、現在の変更操作は各操作工程に対応した競合操作タイプに従って複数の変更段階に分割され、競合操作タイプは操作工程に対応した競合操作のタイプである。
【0158】
競合チェックモジュール1006は、オブジェクトインタラクション要求に対応したターゲット操作タイプ及び現在の変更段階に対応する現在の関連操作タイプに従って、オブジェクトインタラクション要求に対応する競合チェック結果を決定することに用いられ、ターゲット操作タイプは、オブジェクトインタラクション要求により要求されたターゲットインタラクション操作のタイプである。
【0159】
操作実行モジュール1008は、競合チェック結果として競合が存在しないときに、オブジェクトインタラクション要求に従ってターゲットオブジェクトに対してターゲットインタラクション操作を実行することに用いられる。
【0160】
上記オブジェクト処理装置において、変更操作を変更段階に細分化することによって、各変更段階において競合チェックを行うことができ、競合が存在しない操作段階を並行して動作させることができ、同時に競合が存在する操作段階の動作を停止することができ、変更操作による他のインタラクション操作への影響を大幅に低減させ、オブジェクトのインタラクション処理の効率を効果的に向上させることができる。
【0161】
1つの実施例において、変更段階取得モジュールは、ターゲットオブジェクトについての現在の変更操作に対応した現在の操作工程を取得することに用いられる操作工程取得サブモジュールと、現在の操作工程に対応した変更段階を、ターゲットオブジェクトについての現在の変更操作が属する現在の変更段階として決定することに用いられる変更段階決定サブモジュールであって、ここで、異なる競合操作タイプの連続操作工程は異なる変更段階に分割される、変更段階決定サブモジュールと、をさらに含む。
【0162】
1つの実施例において、オブジェクト処理装置は、現在の変更操作に対応した現在の操作工程シーケンスを決定することに用いられるステップシーケンス決定モジュールであって、現在の操作工程シーケンスは操作順序に応じて配列された複数の操作工程を含む、ステップシーケンス決定モジュールと、現在の操作工程シーケンスにおける各操作工程に対応した競合操作タイプを決定することに用いられる競合タイプ決定モジュールと、操作工程に対応した競合操作タイプに従って現在の操作工程シーケンスを分割して、現在の変更操作に対応した複数の変更段階を得ることに用いられるステップシーケンス分割モジュールであって、ここで、同じ競合操作タイプの連続操作工程は同じ変更段階に分割される、ステップシーケンス分割モジュールと、をさらに含む。
【0163】
1つの実施例において、現在の関連操作タイプは現在の競合操作タイプを含み、競合チェックモジュールは、オブジェクトインタラクション要求から操作タイプ識別子を抽出し、抽出された操作タイプ識別子に従ってオブジェクトインタラクション要求に対応するターゲット操作タイプを得ることに用いられる第1操作タイプ決定サブモジュールと、ターゲット操作タイプと現在の競合操作タイプとを比較し、比較結果に従って現在の競合操作タイプがターゲット操作タイプを含むと決定するときに、競合チェック結果として競合が存在すると決定することに用いられる第1競合チェックサブモジュールと、を含む。
【0164】
1つの実施例において、現在の関連操作タイプは現在の並行操作タイプを含み、競合チェックモジュールは、オブジェクトインタラクション要求から操作タイプ識別子を抽出し、抽出された操作タイプ識別子に従ってオブジェクトインタラクション要求に対応するターゲット操作タイプを得ることに用いられる第2操作タイプ決定サブモジュールと、ターゲット操作タイプと現在の並行操作タイプとを比較し、比較結果に従って現在の並行操作タイプがターゲット操作タイプを含まないと決定するときに、競合チェック結果として競合が存在すると決定することに用いられる第2競合チェックサブモジュールと、を含む。
【0165】
1つの実施例において、オブジェクト処理装置は、競合チェック結果として競合が存在するときに、オブジェクトインタラクション要求に従ってターゲットオブジェクトに対してターゲットインタラクション操作を実行することを停止することに用いられる操作停止モジュールをさらに含む。
【0166】
1つの実施例において、操作実行モジュールは、競合チェック結果として競合が存在しないときに、オブジェクトインタラクション要求に応答して、ターゲット操作タイプに対応したターゲット操作工程シーケンスを決定することに用いられるステップシーケンス決定サブモジュールと、ターゲット操作工程シーケンスに応じてターゲットオブジェクトに対してターゲットインタラクション操作を実行することに用いられるインタラクション操作実行サブモジュールと、を含む。
【0167】
1つの実施例において、インタラクション操作実行サブモジュールは、ターゲットオブジェクトに対応する第1操作段階を決定することに用いられる第1操作段階決定ユニットであって、第1操作段階はオブジェクトインタラクション要求に対応する次の操作段階である、第1操作段階決定ユニットと、第1操作段階に対応した段階優先度が優先実行条件を満たすときに、ターゲットオブジェクトについての操作ロッキング要求を送信することに用いられるロッキング要求送信ユニットであって、操作ロッキング要求は、ターゲットオブジェクトとインタラクションを行っているコンピューティングノードをトリガして対応するオブジェクトロックをかけて、アンロッキングするまでターゲットオブジェクトに対する現在の操作にロッキングすることに用いられる、ロッキング要求送信ユニットと、操作ロッキング要求についてのロッキング応答情報を受信したと決定するときに、第1操作段階に対応した操作工程を実行することに用いられる操作工程実行ユニットであって、ロッキング応答情報は、コンピューティングノードがオブジェクトロックをかけた後に返信する応答情報である、操作工程実行ユニットと、を含む。
【0168】
1つの実施例において、オブジェクト処理装置は、ターゲットオブジェクトに対応する第2操作段階を決定することに用いられる操作段階決定モジュールであって、第2操作段階は第1操作段階に対応する次の操作段階である、操作段階決定モジュールと、第2操作段階に対応した段階優先度が優先実行条件を満たすときに、操作ロッキング要求により要求されたオブジェクトロックを維持して、第2操作段階に対応した操作工程を実行することに用いられるオブジェクトロック維持モジュールと、をさらに含む。
【0169】
1つの実施例において、ロッキング要求送信サブモジュールは、第1操作段階に対応した操作内容の操作内容レベルを決定することに用いられる内容レベル決定ユニットと、操作内容レベルがオブジェクトレベルであるときに、第1操作段階に対応した段階優先度が優先実行条件を満たすと決定し、ターゲットオブジェクトについての操作ロッキング要求を送信することに用いられるロッキング要求送信ユニットと、を含む。
【0170】
1つの実施例において、オブジェクト処理装置は、オブジェクトインタラクション要求に対応したターゲットオブジェクトバージョン識別子を決定することに用いられるターゲットバージョン識別子決定モジュールと、現在の変更操作に従ってターゲットオブジェクトを変更した後の、ターゲットオブジェクトに対応した現在のオブジェクトバージョン識別子を取得することに用いられる現在バージョン識別子決定モジュールと、ターゲットオブジェクトバージョン識別子と現在のオブジェクトバージョン識別子とを比較し、比較が一致しないときに、オブジェクトインタラクション要求への応答を停止することに用いられるバージョン識別子比較モジュールと、をさらに含む。
【0171】
1つの実施例において、現在の関連操作タイプは現在の並行操作タイプを含み、競合チェックモジュールは、現在の変更段階が操作阻止情報の書込段階であるときに、現在の変更段階に対応した現在の並行操作タイプを削除操作タイプとして決定することに用いられる操作タイプ決定サブモジュールであって、操作阻止情報の書込段階は、現在の変更操作に従ってターゲットオブジェクトを変更した後の、ターゲットオブジェクトに対応した現在のオブジェクトバージョン識別子を書き込むことに用いられる、操作タイプ決定サブモジュールと、ターゲット操作タイプが削除操作タイプとマッチングしないときに、オブジェクトインタラクション要求に対応する競合チェック結果として競合が存在すると決定することに用いられる第3競合チェックサブモジュールと、を含む。
【0172】
オブジェクト処理装置に関しての具体的な限定は上記オブジェクト処理方法に対する限定を参照すればよく、ここでは再度詳細に説明しない。上記オブジェクト処理装置における各モジュールの全部又は一部はソフトウェア、ハードウェア及びそれらの組み合わせによって実現できる。上記各モジュールはハードウェアの形式でコンピュータ機器における1つ又は複数のプロセッサに埋め込まれる、又はそれから独立するようにしてもよく、ソフトウェアの形式でコンピュータ機器におけるメモリに記憶されてもよく、それによって1つ又は複数のプロセッサは以上の各モジュールに対応する操作を呼び出して実行する。
【0173】
1つの実施例において、コンピュータ機器を提供し、該コンピュータ機器はサーバであってもよく、その内部構造図は
図11に示されてもよい。該コンピュータ機器はシステムバスを介して接続された1つ又は複数のプロセッサ、メモリ及びネットワークインタフェースを含む。ここで、該コンピュータ機器の1つ又は複数のプロセッサはコンピューティング及び制御能力を提供することに用いられる。該コンピュータ機器のメモリは不揮発性記憶媒体、及び内部メモリを含む。該不揮発性記憶媒体にオペレーティングシステム、コンピュータ読み取り可能な命令及びデータベースが記憶される。該内部メモリは不揮発性記憶媒体におけるオペレーティングシステム及びコンピュータ読み取り可能な命令の動作に環境を提供する。該コンピュータ機器のデータベースは競合チェック結果などのデータを記憶することに用いられる。該コンピュータ機器のネットワークインタフェースはネットワークを介して外部の端末と接続通信することに用いられる。該コンピュータ読み取り可能な命令が1つ又は複数のプロセッサにより実行されるときにオブジェクト処理方法を実現する。
【0174】
当業者であれば理解できるように、
図11において示される構造は、本願の解決手段に関連する一部の構造のブロック図に過ぎず、本願の解決手段を応用するコンピュータ機器に対する限定を構成するものではなく、具体的なコンピュータ機器は、図面において示されるものよりも多い、又は少ない部材を含んでもよく、又はある部材を組み合わせ、又は異なる部材配置を有する。
【0175】
1つの実施例において、コンピュータ機器をさらに提供し、メモリと、1つ又は複数のプロセッサと、を含み、メモリにおいてコンピュータ読み取り可能な命令が記憶され、該1つ又は複数のプロセッサはコンピュータ読み取り可能な命令を実行するときに、上記各方法実施例におけるステップを実現する。
【0176】
1つの実施例において、1つ又は複数のコンピュータ読み取り可能な記憶媒体を提供し、コンピュータ読み取り可能な命令が記憶され、該コンピュータ読み取り可能な命令が1つ又は複数のプロセッサにより実行されるときに、上記各方法実施例におけるステップを実現する。
【0177】
1つの実施例において、コンピュータプログラム製品を提供し、該コンピュータプログラム製品はコンピュータ読み取り可能な命令を含み、該コンピュータ読み取り可能な命令はコンピュータ読み取り可能な記憶媒体において記憶される。コンピュータ機器の1つ又は複数のプロセッサはコンピュータ読み取り可能な記憶媒体から該コンピュータ読み取り可能な命令を読み取り、1つ又は複数のプロセッサは該コンピュータ読み取り可能な命令を実行することで、該コンピュータ機器に上記各方法実施例におけるステップを実行させる。
【0178】
当業者であれば理解できるように、上記実施例方法における全部又は一部のプロセスを実現することは、コンピュータ読み取り可能な命令によって関連するハードウェアに命令して完了させてもよく、上記コンピュータ読み取り可能な命令は1つの不揮発性コンピュータ読み取り可能な記憶媒体において記憶されてもよく、該コンピュータ読み取り可能な命令が実行されるときに、上記各方法の実施例のプロセスを含んでもよい。ここで、本願が提供する各実施例において使用されるメモリ、記憶、データベース又は他の媒体に対する何らの引用は、いずれも不揮発性及び揮発性メモリのうちの少なくとも一種を含んでもよい。不揮発性メモリは、読み取り専用メモリ(Read-Only Memory、ROM)、磁気テープ、フロッピーディスク、フラッシュメモリ又は光メモリなどを含んでもよい。揮発性メモリは、ランダムアクセスメモリ(Random Access Memory、RAM)又は外部キャッシュメモリを含んでもよい。非制限的な説明として、RAMは複数の形式のもの、たとえばスタティックランダムアクセスメモリ(Static Random Access Memory、SRAM)又はダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)などであってもよい。
【0179】
以上の実施例の各技術的特徴を任意に組み合わせることができ、記述を簡潔にするために、上記実施例における各技術的特徴のすべての可能な組み合わせをみな記述している訳ではないが、これらの技術的特徴の組み合わせに矛盾が存在しない限り、本明細書に記載された範囲であるとみなすべきである。
【0180】
上記の実施例は本願の複数の実施形態のみを表現し、その記述は比較的具体的で詳細であるが、それにより発明特許の範囲を制限するものとして理解されてはならない。なお、当業者にとっては、本願の構想から逸脱しない前提において、若干の変形及び改良を行うこともでき、これらはいずれも本願の保護範囲に属する。従って、本願特許の保護範囲は添付の請求項に準じるべきである。
【符号の説明】
【0181】
102 サーバ
104 第1端末
106 第2端末
108 データベース
202 端末
204 コンピューティングノードクラスタ
206 データベース
1000 オブジェクト処理装置
1002 インタラクション要求受信モジュール
1004 変更段階取得モジュール
1006 競合チェックモジュール
1008 操作実行モジュール
2042 第1コンピューティングノード
2044 第2コンピューティングノード