JP2022539678A - グローバルユニークインデックスを実現する方法および装置 - Google Patents

グローバルユニークインデックスを実現する方法および装置 Download PDF

Info

Publication number
JP2022539678A
JP2022539678A JP2021574896A JP2021574896A JP2022539678A JP 2022539678 A JP2022539678 A JP 2022539678A JP 2021574896 A JP2021574896 A JP 2021574896A JP 2021574896 A JP2021574896 A JP 2021574896A JP 2022539678 A JP2022539678 A JP 2022539678A
Authority
JP
Japan
Prior art keywords
sql statement
unique index
sql
field
global unique
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021574896A
Other languages
English (en)
Inventor
沈揚
兪義方
盧勤元
戚晨
呂達
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Publication of JP2022539678A publication Critical patent/JP2022539678A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24522Translation of natural language queries to structured queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Figure 2022539678000001
【課題】本願は、グローバルユニークインデックスを実現する方法および装置を開示する。
【解決手段】分散データベースに適用され、方法の一つとしては、構造化クエリ言語SQL要求を受信した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出することと、前記競合検出SQLステートメントを各データベースノードに発行して実行することと、前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較することと、前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記SQL要求の元のSQLステートメントを処理した後に、各データベースノードに発行して実行することと、を含む。
【選択図】図1

Description

関連出願の相互参照
本願は、出願番号が201910561595.0であり、出願日が2019年6月26日である中国特許出願に基づいて提出され、この中国特許出願についての優先権を主張するものであり、この中国特許出願の開示全体は、援用により本願に組み込まれるものとする。
本願は、データベース分野に関するが、これに限らず、より詳しくはグローバルユニークインデックスを実現する方法および装置に関する。
分散データベースは複数のデータベースノードを含み、各データベースノードは互いに独立しており、単一のデータベースノードは、そのデータベース内のユニークインデックスの一意性を保証できるが、全てのデータベースノードを分散データベースに組み上げると、分散データベース内のユニークインデックスの一意性を保証できない。現在の分散データベースにおけるユニークインデックスの一意性は、通常、トラフィックプレインにより保証され、すなわち、競合(コンフリクト)の原因となるデータを修正あるいは挿入することはない。こうすることで、トラフィックの複雑さを増やすため、分散データベースの利用性は高くない。トラフィックエラーによって競合してしまうと、分散データベースもデータの正確性を保証できない。
そこで、本願の実施例は、分散データベースに適用されるグローバルユニークインデックスを実現する方法であって、構造化クエリ言語SQL要求を受信した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出することと、前記競合検出SQLステートメントを各データベースノードに発行して実行することと、前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較することと、前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記SQL要求の元のSQLステートメントを処理した後に、各データベースノードに発行して実行することと、を含むグローバルユニークインデックスを実現する方法を提供する。
本願の実施例は、分散データベースに適用されるグローバルユニークインデックスを実現する方法であって、構造化クエリ言語SQL要求を受信した後、前記SQL要求の元のSQLステートメントを処理して各データベースノードに発行して実行することと、前記元のSQLステートメントの実行結果を取得した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出することと、前記競合検出SQLステートメントを各データベースノードに発行して実行することと、前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較することと、前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記元のSQLステートメントの実行結果を送信することと、を含むグローバルユニークインデックスを実現する方法をさらに提供する。
本願の実施例は、グローバルユニークインデックスを実現する装置をさらに提供し、分散データベースに適用されており、構造化クエリ言語SQL要求を受信した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出するための第1取得ユニットと、前記競合検出SQLステートメントを各データベースノードに発行して実行するための第1発行ユニットと、前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較するための第2取得ユニットと、前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記SQL要求の元のSQLステートメントを処理した後に、各データベースノードに発行して実行するための第2発行ユニットと、を備える。
本願の実施例は、グローバルユニークインデックスを実現する装置をさらに提供し、分散データベースに適用されており、構造化クエリ言語SQL要求を受信した後、前記SQL要求の元のSQLステートメントを処理して各データベースノードに発行して実行するための第1発行ユニットと、前記元のSQLステートメントの実行結果を取得した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出するための第1取得ユニットと、前記競合検出SQLステートメントを各データベースノードに発行して実行するための第2発行ユニットと、前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較するための第2取得ユニットと、前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記元のSQLステートメントの実行結果を送信するための送信ユニットと、を備える。
本願の実施例は、グローバルユニークインデックスを実現する装置をさらに提供し、この装置は分散データベースに適用され、メモリと、プロセッサと、前記メモリに格納され且つ前記プロセッサ上で実行可能なコンピュータプログラムと、を含み、前記コンピュータプログラムが前記プロセッサによって実行されるとき、上記のいずれかに記載のグローバルユニークインデックスを実現する方法が実現される。
本願の実施例は、コンピュータ読み取り可能な記憶媒体をさらに提供し、前記コンピュータ読み取り可能な記憶媒体には、情報処理プログラムが記憶されており、前記情報処理プログラムがプロセッサによって実行されるとき、上記のいずれかに記載のグローバルユニークインデックスを実現する方法の手順が実現される。
本願の他の特徴および利点は、後述する明細書で述べられ、且つ、部分的に明細書から明らかになったり、本願を実施することにより明らかになったりする。本願の目的および他の利点は、明細書、特許請求の範囲および図面で特定される構成により実現および取得することができる。
添付図面は、本願の技術案をさらに理解するために使用され、明細書の一部を構成し、本願の実施例とともに本願の技術案を解釈するためのものであり、本願の技術案に対する制限を構成するものではない。
図1は、本願の一実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。 図2は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。 図3は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。 図4は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。 図5は、本願の一実施例に係る分散データベースのシステムアーキテクチャの概略図である。 図6は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。 図7は、本願の別の実施例に係る分散データベースのシステムアーキテクチャの概略図である。 図8は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。 図9は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。 図10は、本願の一実施例に係るグローバルユニークインデックスを実現する装置の構成を示す図である。 図11は、本願の別の実施例に係るグローバルユニークインデックスを実現する装置の構成を示す図である。
本願の目的、技術案および利点をより明確にするために、以下、図面を参照しながら、本願の実施例について詳細に説明する。なお、コンフリクトしない場合、本願における実施例及び実施例における特徴は、互いに任意に組み合わせることができる。
添付図面のフローチャートに示されるステップは、例えば、一群のコンピュータが命令を実行可能なコンピュータシステムにおいて実行されてもよい。そして、フローチャートには、論理的な順序が示されているが、ある場合には、示されたステップや記述のステップが、これとは異なる順序で実行されてもよい。
分散データベースシステムは、クライアント、ミドルウェア、及びデータベースクラスタを含む。このうち、ミドルウェアは、主に、クライアントから送信されたSQL(構造化クエリ言語:Structured Query Language)アクセス要求の受信、SQLの解析と最適化、SQL結果の集計、および分散トランザクションの制御を行うためのものである。データベースクラスタは、実際にデータを格納し、アトミックSQL操作およびローカルトランザクション制御を実行するために用いられ、各データベースクラスタは、複数のデータストレージノードからなり、データは、一定のルールに従って分割されて各ストレージノードに格納される。分散データベースのテーブルは、配信属性(Distribution properties)と分散ノードの2つの概念を有し、異なる配信属性に応じて、テーブルをコピーテーブルと、ハッシュhashテーブルと、カラムlistテーブルと、エリアrangeテーブルとに分けることができ、分散ノードは、データテーブルがどのストレージノードに分布しているかを指す。
既存の分散データベースは、単一のノード上のユニークインデックスが競合しないことしか保証できず、グローバルに保証することはできない。分散データベースのグローバルユニークインデックス機能を実現するために、現在のところ関連解決策がない場合、本願実施例は、グローバルユニークインデックスを実現する方法および装置を提案する。以下、いくつかの実施例により、本願実施例が提供する技術案について詳細に説明する。
図1は、本願の一実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。図1に示すように、この方法は、以下のステップを含む。
ステップ101:構造化クエリ言語SQL要求を受信した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出する。
ステップ102:前記競合検出SQLステートメントを各データベースノードに発行して実行する。
ステップ103:前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較する。
ステップ104:前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記SQL要求の元のSQLステートメントを処理した後に、各データベースノードに発行して実行する。
そのうち、前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、前記SQL要求がinsert挿入要求である場合、前記insert要求のinsertフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとinsertフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがinsertフィールド値と等しいことであることと、前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとupdateフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しいことであることと、を含み、ここで、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルする。
そのうち、前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールド、updateフィールド値および新規追加フィールドをアセンブルして、前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しく、新規追加フィールドがupdateフィールド値と等しいことであることを含み、ここで、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルし、前記新規追加フィールドは、データベーステーブルに追加されるフィールドの個数とタイプがグローバルユニークインデックスフィールドと同じフィールドである。
そのうち、前記競合検出SQLステートメントの実行結果が前記期待値よりも大きい場合、データのロールバックが行われる。
図2は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。図2に示すように、この方法は、以下のステップを含む。
ステップ201:構造化クエリ言語SQL要求を受信した後、前記SQL要求の元のSQLステートメントを処理して各データベースノードに発行して実行する。
ステップ202:前記元のSQLステートメントの実行結果を取得した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出する。
ステップ203:前記競合検出SQLステートメントを各データベースノードに発行して実行する。
ステップ204:前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較する。
ステップ205:前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記元のSQLステートメントの実行結果を送信する。
そのうち、前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、前記SQL要求がinsert挿入要求である場合、前記insert要求のinsertフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとinsertフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがinsertフィールド値と等しいことであることと、前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとupdateフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しいことであることと、を含み、ここで、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルする。
そのうち、前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールド、updateフィールド値および新規追加フィールドをアセンブルして、前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しく、新規追加フィールドがupdateフィールド値と等しいことであることを含み、ここで、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルし、前記新規追加フィールドは、データベーステーブルに追加されるフィールドの個数とタイプがグローバルユニークインデックスフィールドと同じフィールドである。
そのうち、前記競合検出SQLステートメントの実行結果が前記期待値よりも大きい場合、データのロールバックが行われる。
図3は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。図3に示すように、この方法は、以下のステップを含む。
ステップ301:分散データベースミドルウェアがSQL要求を受信した後、競合検出SQLステートメントをアセンブルし、期待値を算出する。
ここで、updateステートメントの期待値は1に固定されており、insertステートメントの期待値はinsertレコード数であり、例えば、insert into t1 values(1、1)、(2、2)ステートメントは、t1テーブルに2つのデータが挿入されており、selectの期待値は2である。
ステップ302:競合検出SQLステートメントを各データベースノードに発行して実行する。
ステップ303:前記競合検出SQLステートメントの実行結果を取得し、それを前記期待値と比較する。
前記競合検出SQLステートメントの実行結果が期待値以下であれば、ステップ304~305を実行し、前記競合検出SQLステートメントの実行結果が期待値よりも大きければ、ステップ306を実行する。
ステップ304:受信されたSQLステートメントを解析し、配信条件に応じてSQLステートメントを分割し、分割したSQLステートメントを各データベースノードに発行して実行する。
そのうち、このステップは、従来技術における様々な分割および送信ソリューションであり得る。
ステップ305:前記SQLステートメントの実行結果を取得し、実行に成功すると、前記SQLステートメントの実行結果を送信する。
ステップ306:データをロールバックし、実行に失敗した。
図4は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。図4に示すように、この方法は、以下のステップを含む。
ステップ401:分散データベースミドルウェアがSQL要求を受信した後、受信されたSQLステートメントを解析し、配信条件に応じてSQLステートメントを分割し、分割したSQLステートメントを各データベースノードに発行して実行する。
そのうち、このステップは、従来技術における様々な分割および送信ソリューションであり得る。
ステップ402:前記SQLステートメントの実行結果を取得し、実行に成功し、かつSQLステートメントがグローバルユニークインデックスを含むと、競合検出SQLステートメントをアセンブルし、期待値を算出する。
ステップ403:競合検出SQLステートメントを各データベースノードに発行して実行する。
ステップ404:前記競合検出SQLステートメントの実行結果を取得し、それを前記期待値と比較する。
ステップ405:前記競合検出SQLステートメントの実行結果が期待値以下であると、実行に成功し、前記SQLステートメントの実行結果を送信する。
ステップ406:前記競合検出SQLステートメントの実行結果が期待値よりも大きいと、データをロールバックし、実行に失敗した。
本実施例が提供する技術案では、分散データベースミドルウェアにより競合検出を行い、データがグローバルに一意であるか否かを判定する。具体的には、SQLステートメントは、分散データベースミドルウェアによって処理された後、異なるデータベースノードに発せられて実行され、データベースノードは、単一ノードのデータが競合しないことを保証することしかできず、グローバルな一意性を保証することはできない。ミドルウェアは、競合検出を行うために、データベースノードに競合検出SQLステートメントを発行して実行し、競合検出SQL実行結果の判定により、ユニークインデックスフィールドが競合したか否かを特定する。競合しなければ、SQLの実行は成功し、競合すれば、SQLの実行は失敗する。
本願の別の実施例では、挿入insert、更新updateなどのグローバルユニークインデックスの競合を引き起こす可能性のあるSQLステートメントに関し、すなわち、上記実施例における競合検出SQLステートメントは、二種類に分けることができる。
1.クライアントから送信されたSQLステートメントがupdateステートメントである場合、updateステートメントのグローバルユニークインデックスフィールドをアセンブルし、一つのグローバルユニークインデックスは、一つの競合検出selectステートメントをアセンブルし、selectのwhere条件は、グローバルユニークインデックスフィールドがupdateのフィールド値と等しいことである。
例えば、updateフロー:select l from テーブル名 where ユニークインデックスフィールドl=更新後の値 and ユニークインデックスフィールド=更新後の値...and ユニークインデックスフィールドn=更新後の値。
クライアントから送信されたSQLステートメントがinsertステートメントである場合、insertステートメントのグローバルユニークインデックスフィールドをアセンブルし、一つのグローバルユニークインデックスは、一つの競合検出selectステートメントをアセンブルし、selectのwhere条件は、グローバルユニークインデックスフィールドがselectのフィールド値と等しいことである。
例えば、insertフロー:select l from テーブル名 where(ユニークインデックスフィールドl=挿入後の値1 and ユニークインデックスフィールド2=挿入後の値1...and ユニークインデックスフィールドn=挿入後の値1)or(ユニークインデックスフィールドl=挿入後の値2 and ユニークインデックスフィールド2=挿入後の値2...and ユニークインデックスフィールドn=挿入後の値2)...or(ユニークインデックスフィールドl=挿入後の値n and ユニークインデックスフィールド2=挿入後の値n...and ユニークインデックスフィールドn=挿入後の値n)。
2.データをロールバックすることによる新たな競合を防ぐために、操作するテーブルにおいてフィールドを新規に追加し、新規追加フィールドの個数とタイプは、グローバルユニークインデックスフィールドと同じである。updateの場合、更新されたグローバルインデックスの値をまず新規追加フィールドに記録し、その後、グローバルユニークインデックスフィールドを更新する。競合検出の際には、グローバルユニークインデックスフィールドと新規追加フィールドの値を同時に照会する。
例えば、updateフロー:select 1 from テーブル名 where(ユニークインデックスフィールドl=更新後の値 and ユニークインデックスフィールド=更新後の値...and ユニークインデックスフィールドn=更新後の値)or(新規追加フィールドl=更新後の値 and 新規追加フィールド2=更新後の値...and 新規追加フィールドn=更新後の値)。
図6は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。
本実施例は、図5に示す分散データベースシステムに適用される。図5に示すように、分散データベースミドルウェアは、クライアントから送信された元のSQLステートメントを取得し、解析、分割などの操作を行ってから、各データベースノードに発行して実行し、各データベースノードは、実行結果をミドルウェアに返し、ミドルウェアは、updateフィールドまたはinsertフィールドにグローバルユニークインデックスが含まれているか否かを判定し、条件を満たすと、競合検出のselectステートメントをアセンブルし、selectステートメントを各データベースノードに発行して実行し、各データベースノードは、競合検出selectステートメントの実行結果をミドルウェアに返し、ミドルウェアは、競合したか否かを判定し、競合していれば、データのロールバックを行い、実行に失敗し、競合していなければ、実行に成功し、実行結果をクライアントへ返す。
本実施例において、ミドルウェアが受信した元のSQLステートメントは、Updateステートメントである。
具体的には、図6に示すように、この方法は、以下のステップを含む。
ステップ601:SQLステートメントを解析して発行する。
例えば、ミドルウェアは、クライアントのSQL要求を受信した後、元のSQLステートメントを処理して各データベースノードに発行して実行し、それから、実行結果を判定し、元のSQLステートメントの実行に成功した後、ステップ602を実行し、そうでなければ、実行に失敗した。
ステップ602:updateフィールドにグローバルユニークインデックスフィールドが含まれているか否かを判定する。
updateフィールドにグローバルユニークインデックスフィールドが含まれていれば、ステップ603を実行し、含まれていなければ、そのまま実行成功とし、すなわち実行結果をクライアントへ返す。
ステップ603:更新されたフィールドに、あるグローバルユニークインデックスの全てのフィールドが含まれているか否かを判定する。含まれていれば、ステップ604を実行し、全てのフィールドを含むことができなければ、一つのselectステートメントを先に実行して、含まれていないフィールドのデータベースでの値を照会した後、ステップ604を実行する。
ステップ604:競合検出selectステートメントをアセンブルし、期待値を算出する。
そのうち、一つのグローバルユニークインデックスに一つのselectステートメントをアセンブルし、各selectステートメントの期待値は、1である。
ステップ605:SQLステートメント、つまり競合検出selectステートメントを各データベースノードに発行して実行する。
ステップ606:競合検出selectステートメントの実行結果を判定し、実行結果が期待値以下であれば、データが競合しなく、実行に成功し、実行結果が期待値よりも大きければ、データが競合し、データのロールバックを行い、実行に失敗する。
本実施例が提供する技術案は、分散データベースミドルウェアによって元のSQLを処理し、配信ルールに従って各データベースノードに発行して実行し、競合検出によりデータの一意性を判定することで、ユニークインデックスの正確性及び利用可能性を保証するものである。
本願の別の実施例において、本実施例は図7に示す分散データベースシステムに適用される。図7に示すように、分散データベースミドルウェアは、クライアントから送信された元のSQLステートメントを取得し、元のSQLステートメントに基づいて競合検出SQLステートメントをアセンブルし、競合検出SQLステートメントを各データベースノードに発行して実行し、競合検出selectステートメントの実行結果を判定し、データが競合すれば、すなわち競合検出selectステートメントの実行結果が期待値よりも大きければ、実行に失敗し、データが競合しなければ、すなわち競合検出selectステートメントの実行結果が期待値以下であれば、処理後のSQLステートメントをデータベースノードに発行して実行する。例えば、先の実施例との違いは、ステップ602~606を先に実行し、データが競合しない場合にステップ601を実行するようにしてもよいことである。このように、競合検出は早期に行うことができ、元のSQLステートメントが実行される前に競合検出SQLステートメントを発行し、競合すると、実行が失敗し、競合しないと、元のSQLステートメントを引き続き発行して実行する。
図8は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。
本実施例は、図5に示す分散データベースシステムに適用される。図5に示すように、分散データベースミドルウェアは、クライアントから送信された元のSQLステートメントを取得し、解析、分割などの操作を行ってから、各データベースノードに発行して実行し、各データベースノードは、実行結果をミドルウェアに返し、ミドルウェアは、updateフィールドまたはinsertフィールドにグローバルユニークインデックスが含まれているか否かを判定し、条件を満たすと、競合検出のselectステートメントをアセンブルし、selectステートメントを各データベースノードに発行して実行し、各データベースノードは、競合検出selectステートメントの実行結果をミドルウェアに返し、ミドルウェアは、競合したか否かを判定し、競合していれば、データのロールバックを行い、実行に失敗し、競合していなければ、実行に成功し、実行結果をクライアントへ返す。
本実施例において、ミドルウェアが受信した元のSQLステートメントは、Insertステートメントである。
図8に示すように、この方法は、以下のステップを含む。
ステップ801:SQLステートメントを解析して発行する。
例えば、ミドルウェアは、クライアントのSQL要求を受信した後、元のSQLステートメントを処理して各データベースノードに発行して実行し、それから、実行結果を判定し、元のSQLステートメントの実行に成功した後、ステップ802を実行し、そうでなければ、実行に失敗した。
ステップ802:insertテーブルにグローバルユニークインデックスがあるか否かを判定する。
グローバルユニークインデックスがあれば、競合検出を行う必要があり、ステップ803を実行し、なければ、そのまま実行成功とする。
ステップ803:競合検出selectステートメントをアセンブルし、期待値を算出する。
そのうち、一つのグローバルユニークインデックスに一つのselectステートメントをアセンブルし、各selectステートメントの期待値は、insertレコード数である。
ステップ804:SQLステートメント、つまり競合検出selectステートメントを各データベースノードに発行して実行する。
ステップ805:競合検出selectステートメントの実行結果を判定し、実行結果数が期待値以下であれば、データが競合しなく、実行に成功し、実行結果数が期待値よりも大きければ、データが競合し、データのロールバックを行い、実行に失敗する。
本実施例が提供する技術案は、分散データベースミドルウェアによって元のSQLを処理し、配信ルールに従って各データベースノードに発行して実行し、競合検出によりデータの一意性を判定することで、ユニークインデックスの正確性及び利用可能性を保証するものである。
本願の別の実施例において、本実施例は図7に示す分散データベースシステムに適用される。図7に示すように、分散データベースミドルウェアは、クライアントから送信された元のSQLステートメントを取得し、元のSQLステートメントに基づいて競合検出SQLステートメントをアセンブルし、競合検出SQLステートメントを各データベースノードに発行して実行し、競合検出selectステートメントの実行結果を判定し、データが競合すれば、すなわち競合検出selectステートメントの実行結果が期待値よりも大きければ、実行に失敗し、データが競合しなければ、すなわち競合検出selectステートメントの実行結果が期待値以下であれば、処理後のSQLステートメントをデータベースノードに発行して実行する。例えば、先の実施例との違いは、ステップ802~805を先に実行し、データが競合しない場合にステップ801を実行するようにしてもよいことである。このように、競合検出は早期に行うことができ、元のSQLステートメントが実行される前に競合検出SQLステートメントを発行し、競合すると、実行が失敗し、競合しないと、元のSQLステートメントを引き続き発行して実行する。
図9は、本願の別の実施例に係るグローバルユニークインデックスを実現する方法のフローチャートである。
本実施例は、図5に示す分散データベースシステムに適用される。図5に示すように、分散データベースミドルウェアは、クライアントから送信された元のSQLステートメントを取得し、解析、分割などの操作を行ってから、各データベースノードに発行して実行し、各データベースノードは、実行結果をミドルウェアに返し、ミドルウェアは、updateフィールドまたはinsertフィールドにグローバルユニークインデックスが含まれているか否かを判定し、条件を満たすと、競合検出のselectステートメントをアセンブルし、selectステートメントを各データベースノードに発行して実行し、各データベースノードは、競合検出selectステートメントの実行結果をミドルウェアに返し、ミドルウェアは、競合したか否かを判定し、競合していれば、データのロールバックを行い、実行に失敗し、競合していなければ、実行に成功し、実行結果をクライアントへ返す。
本実施例において、ミドルウェアが受信した元のSQLステートメントは、Updateステートメントであり、且つ、更新テーブルには新規追加フィールドが含まれる。
図9に示すように、この方法は、以下のステップを含む。
ステップ901:updateフィールドにグローバルユニークインデックスフィールドが含まれているか否かを判定する。
ステップ902:updateフィールドにグローバルユニークインデックスフィールドが含まれていれば、一つのselectステートメントを先に実行して、グローバルユニークインデックスフィールドの更新前の値を照会する。
ステップ903:テーブル中のグローバルインデックスに対応する新規追加フィールドを更新し、新規追加フィールドの値は、グローバルユニークインデックスフィールドの更新前の値である。
ステップ904:SQLステートメントを解析して発行する。
例えば、ミドルウェアは、クライアントのSQL要求を受信した後、元のSQLステートメントを処理して各データベースノードに発行して実行し、それから、実行結果を判定し、元のSQLステートメントの実行に成功した後、ステップ905を実行し、そうでなければ、実行に失敗した。
ステップ905:競合検出selectステートメントをアセンブルし、期待値を算出する。
そのうち、一つのグローバルユニークインデックスに一つのselectステートメントをアセンブルし、各selectステートメントの期待値は、1である。
ステップ906:競合検出selectステートメントを各データベースノードに発行して実行する。
ステップ907:実行結果を判定し、照会結果数が期待値以下であれば、データが競合しなく、実行に成功し、照会結果数が期待値よりも大きければ、データが競合し、データのロールバックを行い、実行に失敗する。
本願の別の実施例において、本実施例は図7に示す分散データベースシステムに適用される。図7に示すように、分散データベースミドルウェアは、クライアントから送信された元のSQLステートメントを取得し、元のSQLステートメントに基づいて競合検出SQLステートメントをアセンブルし、競合検出SQLステートメントを各データベースノードに発行して実行し、競合検出selectステートメントの実行結果を判定し、データが競合すれば、すなわち競合検出selectステートメントの実行結果が期待値よりも大きければ、実行に失敗し、データが競合しなければ、すなわち競合検出selectステートメントの実行結果が期待値以下であれば、処理後のSQLステートメントをデータベースノードに発行して実行する。例えば、先の実施例との違いは、ステップ905~907を先に実行し、データが競合しない場合にステップ901を実行するようにしてもよいことである。このように、競合検出は早期に行うことができ、元のSQLステートメントが実行される前に競合検出SQLステートメントを発行し、競合すると、実行が失敗し、競合しないと、元のSQLステートメントを引き続き発行して実行する。
図10は、本願の一実施例に係るグローバルユニークインデックスを実現する装置の構成を示す図である。この装置は、分散データベースに適用され、図10に示すように、構造化クエリ言語SQL要求を受信した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出するための第1取得ユニットと、前記競合検出SQLステートメントを各データベースノードに発行して実行するための第1発行ユニットと、前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較するための第2取得ユニットと、前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記SQL要求の元のSQLステートメントを処理した後に、各データベースノードに発行して実行するための第2発行ユニットと、を備える。
前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、前記SQL要求がinsert挿入要求である場合、前記insert要求のinsertフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとinsertフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがinsertフィールド値と等しいことであることと、前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとupdateフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しいことであることと、を含み、ここで、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルする。
そのうち、前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールド、updateフィールド値および新規追加フィールドをアセンブルして、前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しく、新規追加フィールドがupdateフィールド値と等しいことであることを含み、ここで、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルし、前記新規追加フィールドは、データベーステーブルに追加されるフィールドの個数とタイプがグローバルユニークインデックスフィールドと同じフィールドである。
そのうち、この装置は、前記競合検出SQLステートメントの実行結果が前記期待値よりも大きいと、データのロールバックを行うロールバックユニットをさらに備える。
図11は、本願の別の実施例に係るグローバルユニークインデックスを実現する装置の構成を示す図である。この装置は、分散データベースに適用され、図11に示すように、構造化クエリ言語SQL要求を受信した後、前記SQL要求の元のSQLステートメントを処理して各データベースノードに発行して実行するための第1発行ユニットと、前記元のSQLステートメントの実行結果を取得した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出するための第1取得ユニットと、前記競合検出SQLステートメントを各データベースノードに発行して実行するための第2発行ユニットと、前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較するための第2取得ユニットと、前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記元のSQLステートメントの実行結果を送信するための送信ユニットと、を備える。
そのうち、前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、前記SQL要求がinsert挿入要求である場合、前記insert要求のinsertフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとinsertフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがinsertフィールド値と等しいことであることと、前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとupdateフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しいことであることと、を含み、ここで、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルする。
そのうち、前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールド、updateフィールド値および新規追加フィールドをアセンブルして、前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しく、新規追加フィールドがupdateフィールド値と等しいことであることを含み、ここで、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルし、前記新規追加フィールドは、データベーステーブルに追加されるフィールドの個数とタイプがグローバルユニークインデックスフィールドと同じフィールドである。
そのうち、この装置は、前記競合検出SQLステートメントの実行結果が前記期待値よりも大きいと、データのロールバックを行うロールバックユニットをさらに備える。
本願実施例は、グローバルユニークインデックスを実現する装置をさらに提供し、この装置は分散データベースに適用され、メモリと、プロセッサと、前記メモリに格納され且つ前記プロセッサ上で実行可能なコンピュータプログラムと、を含み、前記コンピュータプログラムが前記プロセッサによって実行されるとき、上記のいずれかに記載のグローバルユニークインデックスを実現する方法が実現される。
本願実施例は、コンピュータ読み取り可能な記憶媒体をさらに提供し、前記コンピュータ読み取り可能な記憶媒体には、情報処理プログラムが記憶されており、前記情報処理プログラムがプロセッサによって実行されるとき、上記のいずれかに記載のグローバルユニークインデックスを実現する方法の手順が実現される。
当業者であれば、上述した方法の全部または一部の手順、システム、装置における機能モジュール/ユニットは、ソフトウェア、ファームウェア、ハードウェア、及びこれらの組み合わせとして実施され得ることを理解できる。ハードウエア実施形態では、上記の説明で言及された機能モジュール/ユニット間の区分けは、必ずしも物理コンポーネントの区分けに対応するわけではない。例えば、一つの物理コンポーネントは複数の機能を有してもよく、あるいは、一つの機能又はステップは、複数の物理コンポーネントが協働して実行されてもよい。一部のコンポーネント又は全てのコンポーネントは、デジタルシグナルプロセッサまたはマイクロプロセッサなどのプロセッサによって実行されるソフトウェアとして、またはハードウェアとして、または特定用途向け集積回路などの集積回路として実施され得る。このようなソフトウェアは、コンピュータ読取可能な媒体に配布されてもよく、コンピュータ読取可能な媒体は、コンピュータ記憶媒体(または非一時的媒体)および通信媒体(または一時的媒体)を含むことができる。当業者にとって周知のように、コンピュータ記憶媒体という用語は、情報(コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、その他のデータなど)を記憶するための任意の方法又は技術で実施される揮発性及び不揮発性、リムーバブルメディア、及び非リムーバブルメディアを含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、その他のメモリ技術、CD-ROM、デジタル多機能ディスク(DVD)、その他の光ディスク格納、マガジン、磁気テープ、ディスク格納、その他の磁気格納装置、または所望の情報を格納し、コンピュータにアクセス可能な任意のその他のメディアを含むが、これらに限らない。また、当業者にとって周知のように、通信媒体は通常、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、あるいはキャリアやその他の伝送メカニズムなどの変調データ信号に含まれる他のデータを含み、かつ任意の情報配信媒体を含むことができる。
ステップ907:実行結果を判定し、実行結果が期待値以下であれば、データが競合しなく、実行に成功し、実行結果が期待値よりも大きければ、データが競合し、データのロールバックを行い、実行に失敗する。

Claims (10)

  1. 分散データベースに適用されるグローバルユニークインデックスを実現する方法において、
    構造化クエリ言語SQL要求を受信した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出することと、
    前記競合検出SQLステートメントを各データベースノードに発行して実行することと、
    前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較することと、
    前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記SQL要求の元のSQLステートメントを処理した後に、各データベースノードに発行して実行することと、
    を含む、
    ことを特徴とするグローバルユニークインデックスを実現する方法。
  2. 前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、
    前記SQL要求がinsert挿入要求である場合、前記insert要求のinsertフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとinsertフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがinsertフィールド値と等しいことであることと、
    前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとupdateフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しいことであることと、を含み、
    そのうち、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルする、
    ことを特徴とする請求項1に記載の方法。
  3. 前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、
    前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールド、updateフィールド値および新規追加フィールドをアセンブルして、前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しく、新規追加フィールドがupdateフィールド値と等しいことであることを含み、
    そのうち、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルし、前記新規追加フィールドは、データベーステーブルに追加されるフィールドの個数とタイプがグローバルユニークインデックスフィールドと同じフィールドである、
    ことを特徴とする請求項1に記載の方法。
  4. 分散データベースに適用されるグローバルユニークインデックスを実現する方法において、
    構造化クエリ言語SQL要求を受信した後、前記SQL要求の元のSQLステートメントを処理して各データベースノードに発行して実行することと、
    前記元のSQLステートメントの実行結果を取得した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出することと、
    前記競合検出SQLステートメントを各データベースノードに発行して実行することと、
    前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較することと、
    前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記元のSQLステートメントの実行結果を送信することと、
    を含む、
    ことを特徴とするグローバルユニークインデックスを実現する方法。
  5. 前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、
    前記SQL要求がinsert挿入要求である場合、前記insert要求のinsertフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとinsertフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがinsertフィールド値と等しいことであることと、
    前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールドとupdateフィールド値をアセンブルして前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しいことであることと、を含み、
    そのうち、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルする、
    ことを特徴とする請求項4に記載の方法。
  6. 前記の前記SQL要求に対応する競合検出SQLステートメントを取得することは、
    前記SQL要求がupdate更新要求である場合、前記update要求のupdateフィールドにグローバルユニークインデックスが含まれるか否かを判定し、含まれると、グローバルユニークインデックスフィールド、updateフィールド値および新規追加フィールドをアセンブルして、前記競合検出SQLステートメントを形成し、前記競合検出SQLステートメントのwhere条件は、グローバルユニークインデックスフィールドがupdateフィールド値と等しく、新規追加フィールドがupdateフィールド値と等しいことであることを含み、
    そのうち、一つのグローバルユニークインデックスは、一つの競合検出SQLステートメントをアセンブルし、前記新規追加フィールドは、データベーステーブルに追加されるフィールドの個数とタイプがグローバルユニークインデックスフィールドと同じフィールドである、
    ことを特徴とする請求項4に記載の方法。
  7. 分散データベースに適用されており、
    構造化クエリ言語SQL要求を受信した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出するための第1取得ユニットと、
    前記競合検出SQLステートメントを各データベースノードに発行して実行するための第1発行ユニットと、
    前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較するための第2取得ユニットと、
    前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記SQL要求の元のSQLステートメントを処理した後に、各データベースノードに発行して実行するための第2発行ユニットと、
    を備える、ことを特徴とするグローバルユニークインデックスを実現する装置。
  8. 分散データベースに適用されており、
    構造化クエリ言語SQL要求を受信した後、前記SQL要求の元のSQLステートメントを処理して各データベースノードに発行して実行するための第1発行ユニットと、
    前記元のSQLステートメントの実行結果を取得した後、前記SQL要求に対応する競合検出SQLステートメントを取得し、期待値を算出するための第1取得ユニットと、
    前記競合検出SQLステートメントを各データベースノードに発行して実行するための第2発行ユニットと、
    前記競合検出SQLステートメントの実行結果を取得し、前記競合検出SQLステートメントの実行結果と前記期待値とを比較するための第2取得ユニットと、
    前記競合検出SQLステートメントの実行結果が前記期待値以下の場合、前記元のSQLステートメントの実行結果を送信するための送信ユニットと、
    を備える、ことを特徴とするグローバルユニークインデックスを実現する装置。
  9. 分散データベースに適用されており、
    メモリと、プロセッサと、前記メモリに格納され且つ前記プロセッサ上で実行可能なコンピュータプログラムと、を含み、
    前記コンピュータプログラムが前記プロセッサによって実行されるとき、請求項1~6のいずれかに記載のグローバルユニークインデックスを実現する方法が実現される、
    ことを特徴とするローバルユニークインデックスを実現する装置。
  10. コンピュータ読み取り可能な記憶媒体であって、
    前記コンピュータ読み取り可能な記憶媒体には、情報処理プログラムが記憶されており、
    前記情報処理プログラムがプロセッサによって実行されるとき、請求項1~6のいずれかに記載のグローバルユニークインデックスを実現する方法の手順が実現される、
    ことを特徴とするコンピュータ読み取り可能な記憶媒体。
JP2021574896A 2019-06-26 2020-03-31 グローバルユニークインデックスを実現する方法および装置 Pending JP2022539678A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201910561595.0A CN112148725B (zh) 2019-06-26 2019-06-26 一种实现全局唯一索引的方法及装置
CN201910561595.0 2019-06-26
PCT/CN2020/082488 WO2020258965A1 (zh) 2019-06-26 2020-03-31 一种实现全局唯一索引的方法及装置

Publications (1)

Publication Number Publication Date
JP2022539678A true JP2022539678A (ja) 2022-09-13

Family

ID=73869914

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021574896A Pending JP2022539678A (ja) 2019-06-26 2020-03-31 グローバルユニークインデックスを実現する方法および装置

Country Status (6)

Country Link
US (1) US11880367B2 (ja)
EP (1) EP3989078A4 (ja)
JP (1) JP2022539678A (ja)
KR (1) KR20220020985A (ja)
CN (1) CN112148725B (ja)
WO (1) WO2020258965A1 (ja)

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589346B2 (en) * 2011-04-26 2013-11-19 Oracle International Corporation Techniques for combining statement level, procedural, and row level replication
CA2382712A1 (en) * 2002-04-19 2003-10-19 Ibm Canada Limited-Ibm Canada Limitee Detection and prevention of writing conflicts within nested query statements
CN101377775A (zh) * 2007-08-29 2009-03-04 中兴通讯股份有限公司 一种内存数据库中构造冲突数据索引的方法
CN103810212B (zh) * 2012-11-14 2017-05-24 阿里巴巴集团控股有限公司 一种数据库索引的自动创建方法及系统
CN103942234A (zh) * 2013-01-21 2014-07-23 中国电信股份有限公司 对多个异构数据库操作的方法、中间件装置及系统
US20140279944A1 (en) * 2013-03-15 2014-09-18 University Of Southern California Sql query to trigger translation for maintaining consistency of cache augmented sql systems
CN104111937A (zh) * 2013-04-18 2014-10-22 中兴通讯股份有限公司 主、备数据库及其数据一致性检测、修复方法和装置
US10127261B2 (en) * 2013-12-31 2018-11-13 Dassault Systems Enovia Corporation Methods and systems for resolving conflicts in hierarchically-referenced data
US10521449B1 (en) * 2014-12-17 2019-12-31 Amazon Technologies, Inc. Cross-region replication architecture
CN105868210B (zh) * 2015-01-21 2019-07-19 阿里巴巴集团控股有限公司 一种分布式数据库中唯一索引的创建方法和装置
CN106547781B (zh) * 2015-09-21 2021-06-11 南京中兴新软件有限责任公司 一种实现分布式事务的方法、装置及数据库服务器
US10133767B1 (en) * 2015-09-28 2018-11-20 Amazon Technologies, Inc. Materialization strategies in journal-based databases
CN105677915A (zh) * 2016-02-29 2016-06-15 浪潮通用软件有限公司 一种基于引擎的分布式业务数据存取方法
CN106383860A (zh) * 2016-08-31 2017-02-08 无锡雅座在线科技发展有限公司 数据查询方法及装置

Also Published As

Publication number Publication date
KR20220020985A (ko) 2022-02-21
CN112148725A (zh) 2020-12-29
CN112148725B (zh) 2022-12-06
WO2020258965A1 (zh) 2020-12-30
EP3989078A1 (en) 2022-04-27
EP3989078A4 (en) 2022-08-10
US11880367B2 (en) 2024-01-23
US20220245152A1 (en) 2022-08-04

Similar Documents

Publication Publication Date Title
CN111159252B (zh) 事务执行方法、装置、计算机设备及存储介质
US9747356B2 (en) Eager replication of uncommitted transactions
US9589041B2 (en) Client and server integration for replicating data
US8341132B2 (en) System and method for applying deltas in a version control system
CN111190935B (zh) 数据读取方法、装置、计算机设备及存储介质
CN111522631A (zh) 分布式事务处理方法、装置、服务器及介质
CN110727693A (zh) 访问异构数据库的方法、装置、设备、插件及存储介质
CN112789606A (zh) 数据重分布方法、装置及系统
CN109783578B (zh) 数据读取方法、装置、电子设备以及存储介质
US20180300147A1 (en) Database Operating Method and Apparatus
CN112115012A (zh) 分布式数据库的事务监控方法及装置、系统、存储介质
CN112613993A (zh) 交易数据处理方法、装置、计算机设备和存储介质
CN113495872A (zh) 分布式数据库中的事务处理方法及系统
US20090100082A1 (en) Replication and mapping mechanism for recreating memory durations
US10896096B2 (en) Temporal logical transactions
CN114564500A (zh) 在区块链系统中实现结构化数据存储和查询的方法和系统
CN113761052A (zh) 数据库同步方法和装置
JP2022539678A (ja) グローバルユニークインデックスを実現する方法および装置
WO2023124242A1 (zh) 事务执行方法、装置、设备和存储介质
CN111240891A (zh) 基于数据库多表间数据一致性的数据恢复方法及装置
US10216590B2 (en) Communication control determination of storing state based on a requested data operation and a schema of a table that stores therein data to be operated by the data operation
CN113010495B (zh) 一种数据库优化方法及装置
US11372838B2 (en) Parallel processing of changes in a distributed system
CN114637759B (zh) 数据查询方法、电子设备、存储介质
US11907217B2 (en) Database object validation for reusing captured query plans

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211228

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211227

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20220913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230221

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230720

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230801

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231130

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20231211

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20231222