IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッドの特許一覧

特許7397928分散データベースのグローバルセカンダリインデックス方法及びその装置
<>
  • 特許-分散データベースのグローバルセカンダリインデックス方法及びその装置 図1
  • 特許-分散データベースのグローバルセカンダリインデックス方法及びその装置 図2
  • 特許-分散データベースのグローバルセカンダリインデックス方法及びその装置 図3
  • 特許-分散データベースのグローバルセカンダリインデックス方法及びその装置 図4
  • 特許-分散データベースのグローバルセカンダリインデックス方法及びその装置 図5
  • 特許-分散データベースのグローバルセカンダリインデックス方法及びその装置 図6
  • 特許-分散データベースのグローバルセカンダリインデックス方法及びその装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-05
(45)【発行日】2023-12-13
(54)【発明の名称】分散データベースのグローバルセカンダリインデックス方法及びその装置
(51)【国際特許分類】
   G06F 16/27 20190101AFI20231206BHJP
【FI】
G06F16/27
【請求項の数】 15
(21)【出願番号】P 2022128211
(22)【出願日】2022-08-10
(65)【公開番号】P2022160666
(43)【公開日】2022-10-19
【審査請求日】2022-08-10
(31)【優先権主張番号】202111124021.0
(32)【優先日】2021-09-24
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】110000578
【氏名又は名称】名古屋国際弁理士法人
(72)【発明者】
【氏名】ツァオ ビョウ
(72)【発明者】
【氏名】ワン モン
(72)【発明者】
【氏名】ヤン ヨンチャン
【審査官】玉木 宏治
(56)【参考文献】
【文献】米国特許第10853182(US,B1)
【文献】米国特許出願公開第2020/0250210(US,A1)
【文献】米国特許出願公開第2015/0331910(US,A1)
【文献】米国特許出願公開第2009/0210429(US,A1)
【文献】中国特許出願公開第111221814(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
分散データベースのグローバルセカンダリインデックス方法であって、
受信したデータベース書き込み要求に応答して、書き込み対象の元データを取得し、前記元データを前記分散データベースに書き込むステップと、
前記分散データベースに書き込まれた元データに対してグローバルセカンダリインデックス処理を行って、グローバルセカンダリインデックスデータを取得するステップであって、前記グローバルセカンダリインデックス処理は、前記分散データベース内に書き込まれた元データのインデックスを非同期で作成することを含むステップと、
前記グローバルセカンダリインデックスデータと前記分散データベース内のデータテーブルの主キーとを対応付けさせたグローバルセカンダリインデックステーブルを作成し、非同期処理方式に基づいて前記グローバルセカンダリインデックステーブルをインデックスシャードに書き込むステップと、を含む、分散データベースのグローバルセカンダリインデックス方法。
【請求項2】
前記元データを前記分散データベースに書き込む前記ステップは、
前記元データをデータバッファキューに書き込むステップと、
前記データバッファキューをストレージノードに送信してデータ永続化処理を行うステップと、
前記ストレージノードから返されたデータ永続化処理結果を受信し、前記データ永続化処理結果を前記データベース書き込み要求のイニシエータに送信するステップと、を含む、請求項1に記載の分散データベースのグローバルセカンダリインデックス方法。
【請求項3】
非同期処理方式に基づいて前記グローバルセカンダリインデックステーブルをインデックスシャードに書き込む前記ステップは、
非同期処理方式に基づいて、前記グローバルセカンダリインデックステーブルをバッチごとにインデックスシャードに書き込むステップを含む、請求項1に記載の分散データベースのグローバルセカンダリインデックス方法。
【請求項4】
前記グローバルセカンダリインデックステーブルがバッチごとに前記インデックスシャードに書き込まれる時、現在のバッチで書き込まれたグローバルセカンダリインデックステーブルのインデックス値を分散合意アルゴリズムのRaftログに記録するステップをさらに含む、請求項3に記載の分散データベースのグローバルセカンダリインデックス方法。
【請求項5】
前記インデックス値は、前記現在のバッチの最後の、前記インデックスシャードに書き込まれたグローバルセカンダリインデックステーブルのインデックス値である、請求項4に記載の分散データベースのグローバルセカンダリインデックス方法。
【請求項6】
前記インデックスシャードの障害回復に応答して、前記Raftログから、対象時間に新たに記録されたグローバルセカンダリインデックステーブルの対象インデックス値を取得するステップであって、前記対象時間が、前記インデックスシャードに障害が発生する前の時間であるステップと、
前記対象インデックス値に基づいて、前記インデックスシャードに障害が発生している間に正常に書き込まれなかったグローバルセカンダリインデックステーブルを決定するステップと、
前記正常に書き込まれなかったグローバルセカンダリインデックステーブルを前記インデックスシャードに再度に書き込むステップと、をさらに含む、請求項4に記載の分散データベースのグローバルセカンダリインデックス方法。
【請求項7】
分散データベースのグローバルセカンダリインデックス装置であって、
受信したデータベース書き込み要求に応答して、書き込み対象の元データを取得し、前記元データを前記分散データベースに書き込むための元データ書き込みモジュールと、
前記分散データベースに書き込まれた元データに対してグローバルセカンダリインデックス処理を行って、グローバルセカンダリインデックスデータを取得するように構成されるインデックス処理モジュールであって、前記グローバルセカンダリインデックス処理は、前記分散データベース内に書き込まれた元データのインデックスを非同期で作成することを含むインデックス処理モジュールと、
前記グローバルセカンダリインデックスデータと前記分散データベース内のデータテーブルの主キーとを対応付けさせたグローバルセカンダリインデックステーブルを作成し、非同期処理方式に基づいて前記グローバルセカンダリインデックステーブルをインデックスシャードに書き込むように構成されるインデックステーブル作成モジュールと、を含む、分散データベースのグローバルセカンダリインデックス装置。
【請求項8】
前記元データ書き込みモジュールは、具体的には、
前記元データをデータバッファキューに書き込み、
前記データバッファキューをストレージノードに送信してデータ永続化処理を行い、
前記ストレージノードから返されたデータ永続化処理結果を受信し、前記データ永続化処理結果を前記データベース書き込み要求のイニシエータに送信するように構成される、請求項7に記載の分散データベースのグローバルセカンダリインデックス装置。
【請求項9】
前記インデックステーブル作成モジュールは、具体的には、
非同期処理方式に基づいて、前記グローバルセカンダリインデックステーブルをバッチごとにインデックスシャードに書き込むように構成される、請求項7に記載の分散データベースのグローバルセカンダリインデックス装置。
【請求項10】
前記グローバルセカンダリインデックステーブルがバッチごとに前記インデックスシャードに書き込まれる時、現在のバッチで書き込まれたグローバルセカンダリインデックステーブルのインデックス値を分散合意アルゴリズムのRaftログに記録するように構成されるログ記録モジュールをさらに含む、請求項9に記載の分散データベースのグローバルセカンダリインデックス装置。
【請求項11】
前記インデックス値は、前記現在のバッチの最後の、前記インデックスシャードに書き込まれたグローバルセカンダリインデックステーブルのインデックス値である、請求項10に記載の分散データベースのグローバルセカンダリインデックス装置。
【請求項12】
前記インデックスシャードの障害回復に応答して、前記Raftログから、対象時間に新たに記録されたグローバルセカンダリインデックステーブルの対象インデックス値を取得するように構成される取得モジュールであって、前記対象時間が、前記インデックスシャードに障害が発生する前の時間である取得モジュールをさらに含み、
前記インデックステーブル作成モジュールはさらに、前記対象インデックス値に基づいて、前記インデックスシャードに障害が発生している間に正常に書き込まれなかったグローバルセカンダリインデックステーブルを決定し、前記正常に書き込まれなかったグローバルセカンダリインデックステーブルを前記インデックスシャードに再度に書き込むように構成される、請求項10又は11に記載の分散データベースのグローバルセカンダリインデックス装置。
【請求項13】
コンピュータ機器であって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサと通信可能に接続されるメモリと、を含み、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶されており、前記命令が前記少なくとも1つのプロセッサによって実行される場合、前記少なくとも1つのプロセッサが請求項1~6のいずれか1項に記載の分散データベースのグローバルセカンダリインデックス方法を実行できる、コンピュータ機器。
【請求項14】
コンピュータに請求項1~6のいずれか1項に記載の分散データベースのグローバルセカンダリインデックス方法を実行させるためのコンピュータ命令を記憶した、非一時的コンピュータ読み取り可能な記憶媒体。
【請求項15】
プロセッサによって実行される場合、請求項1~6のいずれか1項に記載の分散データベースのグローバルセカンダリインデックス方法を実現する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願はコンピュータ技術分野に関し、具体的には、クラウドコンピューティング及びクラウドデータベース分野などに関し、特に分散データベースのグローバルセカンダリインデックス方法及びその装置に関する。
【背景技術】
【0002】
ビッグデータ時代では、データは幾何学的に増加し、大量のデータは毎日数TB(Terabyte、テラバイト)さらには数PB(Petabytes、ペタバイト)の量で増加している。クラウド上のオブジェクトストレージシステムは大量ストレージという課題を解決し、そのうち、オブジェクトストレージのメタデータは分散データベース内に格納されている。関連技術における分散データベースは通常、分散トランザクションに基づいてグローバルセカンダリインデックスを実現している。
【0003】
しかしながら、上記グローバルセカンダリインデックスには以下の課題が存在する。インデックスが存在するため、主キーとインデックスの原子性を確保するために分散トランザクションフローがトリガーされ、しかしながら、分散トランザクションのコストは非常に高い。例えば、一回のトランザクション書き込みは通常、7回のRPC(Remote Procedure Call、遠隔手続き呼び出し)、7回のRaft(分散合意アルゴリズム)log(ログ)書き込み及び7回のRocksdb(キー値)書き込みが必要であるため、インデックス書き込みのコストは非常に高い。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本出願は、分散データベースのグローバルセカンダリインデックス方法及び分散データベースのグローバルセカンダリインデックス装置を提供する。
【課題を解決するための手段】
【0005】
本出願の第1の態様によれば、
受信したデータベース書き込み要求に応答して、書き込み対象の元データを取得し、前記元データを前記分散データベースに書き込むステップと、
前記分散データベースに書き込まれた元データに対してグローバルセカンダリインデックス処理を行って、グローバルセカンダリインデックスデータを取得するステップと、
前記グローバルセカンダリインデックスデータと前記分散データベース内のデータテーブルの主キーとを対応付けさせたグローバルセカンダリインデックステーブルを作成し、非同期処理方式に基づいて前記グローバルセカンダリインデックステーブルをインデックスシャードに書き込むステップと、を含む、分散データベースのグローバルセカンダリインデックス方法が提供される。
【0006】
本出願の第2の態様によれば、
受信したデータベース書き込み要求に応答して、書き込み対象の元データを取得し、前記元データを前記分散データベースに書き込むように構成される元データ書き込みモジュールと、
前記分散データベースに書き込まれた元データに対してグローバルセカンダリインデックス処理を行って、グローバルセカンダリインデックスデータを取得するように構成されるインデックス処理モジュールと、
前記グローバルセカンダリインデックスデータと前記分散データベース内のデータテーブルの主キーとを対応付けさせたグローバルセカンダリインデックステーブルを作成し、非同期処理方式に基づいて前記グローバルセカンダリインデックステーブルをインデックスシャードに書き込むように構成されるインデックステーブル作成モジュールと、を含む、分散データベースのグローバルセカンダリインデックス装置が提供される。
【0007】
本出願の第3の態様によれば、コンピュータ機器であって、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサと通信可能に接続されるメモリと、を含み、前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶されており、前記命令が前記少なくとも1つのプロセッサによって実行される場合、前記少なくとも1つのプロセッサが上記第1の態様に記載の分散データベースのグローバルセカンダリインデックス方法を実行できるコンピュータ機器が提供される。
【0008】
本出願の第4の態様によれば、コンピュータに上記第1の態様に記載の分散データベースのグローバルセカンダリインデックス方法を実行させるためのコンピュータ命令を記憶した、非一時的コンピュータ読み取り可能な記憶媒体が提供される。
【0009】
本出願の第5の態様によれば、プロセッサによって実行される場合、上記第1の態様に記載の分散データベースのグローバルセカンダリインデックス方法を実現する、コンピュータプログラムが提供される。
【発明の効果】
【0010】
本出願の技術案によれば、セカンダリインデックスシーンにおける書き込みスループットを大幅に向上させることができ、書き込み遅延をさらに低減することができる。
【0011】
なお、この概要部分で説明された内容は、本出願の実施例の肝心又は重要な特徴を特定するものではなく、本出願の範囲を限定するものでもない。本出願の他の特徴は以下の明細書によって分かり易くなる。
【図面の簡単な説明】
【0012】
図面は本解決案をよりよく理解するためのものであり、本出願を限定するものではない。
図1】従来技術における分散データベースのグローバルセカンダリインデックスフローの概略図である。
図2】本出願の実施例に係る分散データベースのグローバルセカンダリインデックス方法のフローチャートである。
図3】本出願の実施例の分散データベースのグローバルセカンダリインデックスフローの概略図である。
図4】本出願の実施例に係る別の分散データベースのグローバルセカンダリインデックス方法のフローチャートである。
図5】本出願の実施例に係る分散データベースのグローバルセカンダリインデックス装置の構成ブロック図である。
図6】本出願の実施例に係る他の分散データベースのグローバルセカンダリインデックス装置の構成ブロック図である。
図7】本出願の実施例の分散データベースのグローバルセカンダリインデックス方法を実現するための電子機器のブロック図である。
【発明を実施するための形態】
【0013】
以下、図面を参照しながら本出願の例示的な実施例を説明し、理解を助けるためにその中には本出願の実施例の様々な詳細が含まれており、これらの内容を単に例示するものと見なされるべきである。したがって、当業者であれば、本出願の範囲及び精神から逸脱しない限り、ここで説明された実施例に対して様々な変更と修正を行うことができることを認識されたい。同様に、明確かつ簡潔にするために、以下の説明では、公知機能及び構成に関する説明を省略する。
【0014】
なお、本出願の技術案では、関わるユーザ個人情報の取得、記憶及び適用などは、いずれも関連する法規制の規定に従っており、公序良俗に反しない。
【0015】
ビッグデータ時代では、データは幾何学的に増加し、大量のデータは毎日数TB(Terabyte、テラバイト)さらには数PB(Petabytes、ペタバイト)の量で増加してる。クラウド上のオブジェクトストレージシステムは大量のストレージという課題を解決し、オブジェクトストレージのメタデータは分散データベース内に格納されている。関連技術における分散データベースは通常、分散トランザクションに基づいてグローバルセカンダリインデックスを実現してる。図1に示すように、2PCに基づいてグローバルセカンダリインデックスを実現する具体的なフローは図1の(1)~(9)を含む。(1)~(9)の具体的なフローは以下のとおりである。
【0016】
(1)クライアント(client)はinsert(挿入)要求をシステム内のいずれかのコーディネータ(coordinator)に送信する。コーディネータは当該要求を受信した後に、SQL(Structured Query Language、構造化照会言語)ステートメントに対して、字句解析と構文解析を行って、1つのtransaction(トランザクション)を構築する。次にトランザクションフローに従って、挿入する値をシステムに書き込むことができる。
【0017】
(2)このステップから、トランザクションの二つの段階のプロセスを実行する。まず、TS(分散トランザクション内の1つのミドルウェア)にアクセスして今回のトランザクションのstart timestamp(開始タイムスタンプ)を取得する。
【0018】
(3)このステップでは、トランザクションの参加者(BE)から、txn meta(データのメタデータ)を記憶する1つのノード(BE1)を選択し、コーディネータはtxn metaをBE1に書き込む。
【0019】
(4)このステップでは、データのprewrite(プリライト)を行う。書き込むデータを対応するBEに送信し、intent(データを伝送するためのツール)として永続化する。インデックスが存在するため、intentを2回書き込む必要があり、例えば、1回はbase(データ)を書き込み、1回はindex(インデックス)を書き込む。
【0020】
(5)TSにアクセスして今回のトランザクションのcommit timestamp(コミットタイムスタンプ)を取得する。
【0021】
(6)ステップ(5)では、すべてのintentが正常に書き込まれた後、トランザクションをコミットすることができ、BE1にcommit txn(データをコミットする)命令を送信し、txn metaの状態をcommitted(コミット済み)に設定する。この時点では、トランザクション状態が決定されている。
【0022】
(7)トランザクション状態が決定された後、clientにinsertの結果を返すことができる。
【0023】
(8)トランザクションがコミットされた後、BEはバックグラウンドの非同期resolve(決定)を開始することができる。トランザクション状態に基づいてintentを対応するvalue(値)に修正する。
【0024】
(9)すべてのintentが正常にresolveされた後、txn metaが役に立たなくなり、ここでtxn metaが削除される。この時点では、1つのトランザクションのすべての処理が終了する。
【0025】
以上の説明から分かるように、関連技術における分散データベースは、分散トランザクションに基づいてグローバルセカンダリインデックスを実現している。しかしながら、このようなグローバルセカンダリインデックスの方式には以下の課題が存在する。インデックスが存在するため、主キーとインデックスの原子性を確保するために分散トランザクションフローがトリガーされ、しかしながら、分散トランザクションのコストは非常に高い。例えば、一回のトランザクション書き込みは通常、7回のRPC(Remote Procedure Call、遠隔手続き呼び出し)、7回のRaft(分散合意アルゴリズム)log(ログ)書き込み及び7回のRocksdb(キー値)書き込みが必要であるため、インデックス書き込みのコストは非常に高い。
【0026】
上記課題に基づいて、本出願は分散データベースのグローバルセカンダリインデックス方法及び分散データベースのグローバルセカンダリインデックス装置を提供する。なお、本出願の技術案は、インデックス書き込みの原子性の確保を必要としないビジネスシーンに適用することができる。選択可能に、本出願は主に分散トランザクションフローを実行する必要のないシステムのほとんどのサービスの要求を対象としており、ユーザはインデックス書き込みの原子性の確保を必要とせず、主キーが書き込まれた後に、時間レベルのインデックス表示を確保すればよく、このビジネス特性に基づいて、本出願は非同期グローバルセカンダリインデックスという解決案を提案した。以下、本出願の実施例に係る分散データベースのグローバルセカンダリインデックス方法及び分散データベースのグローバルセカンダリインデックス装置を図面を参照しながら説明する。
【0027】
図2は本出願の実施例に係る分散データベースのグローバルセカンダリインデックス方法のフローチャートである。なお、本出願の実施例に係る分散データベースのグローバルセカンダリインデックス方法は、本出願の実施例に係る分散データベースのグローバルセカンダリインデックス装置に適用することができ、当該グローバルセカンダリインデックス装置はコンピュータ機器に配置することができる。
【0028】
図2に示すように、当該分散データベースのグローバルセカンダリインデックス方法は、少なくともステップ201~ステップ203を含むことができるが、これらに限定されない。
【0029】
ステップ201では、受信したデータベース書き込み要求に応答して、書き込み対象の元データを取得し、元データを分散データベースに書き込む。
【0030】
本出願の実施例では、当該データベース書き込み要求はテーブル作成ステートメントであってもよい。当該テーブル作成ステートメントはSQLステートメントで構成されてもよい。又は、当該データベース書き込み要求は他のステートメントであってもよいが、本出願はこれについて具体的に限定しない。
【0031】
例えば、データベース書き込み要求をテーブル作成SQLステートメントとする場合を例とし、クライアントから送信されたテーブル作成SQLステートメントを受信すると、当該テーブル作成SQLステートメントに対して字句解析及び構文解析を行い、書き込む元データを決定し、データソースから元データをロードして書き込み対象の元データを取得し、当該元データを分散データベースに書き込むことができる。本出願の実施例では、当該元データは主キーデータとして理解することができる。
【0032】
本出願のいくつかの実施例では、書き込み対象の元データを取得した後、当該書き込み対象の元データをデータバッファキューに書き込み、当該データバッファキューをストレージノードに送信してデータ永続化処理を行い、ストレージノードから返されたデータ永続化処理結果を受信し、データ永続化処理結果をデータベース書き込み要求のイニシエータに送信することができる。言い換えれば、クライアントのデータベース書き込み要求を受信すると、書き込み対象の元データを分散データベースに書き込んで永続化処理を行い、結果をクライアントに返すことができる。
【0033】
ステップ202では、分散データベースに書き込まれた元データに対してグローバルセカンダリインデックス処理を行って、グローバルセカンダリインデックスデータを取得する。
【0034】
選択可能に、書き込み対象の元データを分散データベースに書き込む時、分散データベースに書き込まれた元データのインデックスを作成する。なお、本出願の実施例は、インデックス書き込みの原子性を確保する必要のないビジネスシーンに適用し、即ち、このビジネスシーンではインデックス書き込みの原子性を確保する必要がなく、主キーが書き込まれた後、時間レベルのインデックス表示を確保すればよく、例えば、一時間以内にインデックスを作成し書き込めばよい。当該ビジネスシーンの特性に基づいて、本出願の実施例は、書き込み対象の元データを分散データベースに書き込む時、分散データベース内に書き込まれたこれらの元データのインデックスを非同期で作成する非同期グローバルセカンダリインデックスを提案した。
【0035】
ステップ203では、グローバルセカンダリインデックスデータと分散データベース内のデータテーブルの主キーとを対応付けさせたグローバルセカンダリインデックステーブルを作成し、非同期処理方式に基づいてグローバルセカンダリインデックステーブルをインデックスシャードに書き込む。
【0036】
選択可能に、グローバルセカンダリインデックスデータを得た後に、当該グローバルセカンダリインデックスデータと分散データベース内のデータテーブルの主キーとを対応付けさせたグローバルセカンダリインデックステーブルを作成し、非同期処理方式に基づいて、グローバルセカンダリインデックステーブルをバッチごとにインデックスシャードに書き込むことができる。例えば、1バッチで1000個のグローバルセカンダリインデックステーブルをまとめてインデックスシャードに書き込むことができる。
【0037】
例えば、図3に示すように、(1)クライアント(client)からのデータベース書き込み要求を受信した後、書き込み対象の元データをデータバッファキューに書き込む。(2)データバッファキューをストレージノードに送信してデータ永続化処理を行う。(3)ストレージノードから返されたデータ永続化処理結果を受信し、データ永続化処理結果をデータベース書き込み要求のイニシエータに送信する。(4)分散データベースに書き込まれた元データに対してグローバルセカンダリインデックス処理を行って、グローバルセカンダリインデックスデータを取得し、グローバルセカンダリインデックスデータと分散データベース内のデータテーブルの主キーとを対応付けさせたグローバルセカンダリインデックステーブルを非同期で作成し、非同期処理方式に基づいてグローバルセカンダリインデックステーブルをインデックスシャードに書き込む。以上により、本出願によって提供される非同期セカンダリインデックス方法では、合計で2回のRPC、2回のRaft log書き込み、及び2回のRocksdb書き込みが必要であり、その中で、クライアント遅延を招くのは合計で1回のRPC、1回のRaft log書き込み、及び1回のRocksdb書き込みであり、従来技術におけるセカンダリインデックスフローに比べて、5回のRPC、5のRaft log書き込み、及び5回のRocksdb書き込みを減少させることができ、つまり、本出願は遅延をさらに低減できるとともに、書き込みスループットを大幅に向上させることができる。
【0038】
本出願の実施例の分散データベースのグローバルセカンダリインデックス方法によれば、受信したデータベース書き込み要求から、書き込み対象の元データを取得し、元データを分散データベースに書き込み、元データが分散データベースに書き込まれた後、グローバルセカンダリインデックスを非同期で作成することにより、セカンダリインデックスのシーンにおける書き込みスループットを大幅に向上させることができ、書き込み遅延をさらに低減することができる。
【0039】
インデックスデータが失われることなく再利用可能であることを確保し、かつインデックスデータの完全性を確保するために、選択可能に、本出願のいくつかの実施例では、図2に示す実施例をもとに、図4に示すように、当該分散データベースのグローバルセカンダリインデックス方法は以下のステップをさらに含んでもよい。
【0040】
ステップ401では、グローバルセカンダリインデックステーブルがバッチごとにインデックスシャードに書き込まれるとき、現在のバッチで書き込まれたグローバルセカンダリインデックステーブルのインデックス値を分散合意アルゴリズムのRaftログに記録する。
【0041】
本出願の実施例では、インデックス値は、現在のバッチの最後の、インデックスシャードに書き込まれたグローバルセカンダリインデックステーブルのインデックス値である。
【0042】
例えば、1バッチで1000個のグローバルセカンダリインデックステーブルがインデックスシャードに書き込まれる場合を例とすると、1バッチ目の1000個のグローバルセカンダリインデックステーブルがインデックスシャードに書き込まれる時、当該1バッチ目の最後の、インデックスシャードに書き込まれたグローバルセカンダリインデックステーブルのインデックス値(例えば1000である)をRaftログに記録することができ、2バッチ目の1000個のグローバルセカンダリインデックステーブルがインデックスシャードに書き込まれる時、当該2バッチ目の最後の、インデックスシャードに書き込まれたグローバルセカンダリインデックステーブルのインデックス値(例えば2000である)をRaftログに記録することができ、…以下は同様に行う。
【0043】
つまり、グローバルセカンダリインデックステーブルがバッチごとにインデックスシャードに書き込まれる時、現在のバッチで書き込まれたグローバルセカンダリインデックステーブルのインデックス値をチェックし、チェックされた現在のインデックス値をRaftログに記録することができ、即ち、グローバルセカンダリインデックステーブルをバッチごとにインデックスシャードに送信する時、各バッチの最後に送信されたグローバルセカンダリインデックステーブルのインデックス値を定期的にチェックし記録することができ、これにより、インデックスシャードの障害回復時に、Raftログに記録されているインデックス値に基づいて障害前の書き込み対象のインデックスを見つけることができ、データが失われることなく再利用可能であることを確保することができる。
【0044】
選択可能に、本出願のいくつかの実施例では、図4に示すように、当該分散データベースのグローバルセカンダリインデックス方法は以下のステップをさらに含んでもよい。
【0045】
ステップ402では、インデックスシャードの障害回復に応答して、Raftログから、対象時間に新たに記録されたグローバルセカンダリインデックステーブルの対象インデックス値を取得し、対象時間はインデックスシャードに障害が発生する前の時間である。
【0046】
選択可能に、インデックスシャードに障害が発生しそして回復した時、Raftログから、当該インデックスシャードに障害が発生する前の時間内に最新に記録されたグローバルセカンダリインデックステーブルの対象インデックス値を取得することができる。
【0047】
ステップ403では、対象インデックス値に基づいて、インデックスシャードに障害が発生している間に正常に書き込まれなかったグローバルセカンダリインデックステーブルを決定する。
【0048】
ステップ404では、正常に書き込まれなかったグローバルセカンダリインデックステーブルをインデックスシャードに再度に書き込む。
【0049】
即ち、インデックスシャードに障害が発生して回復した時、当該インデックスシャードに障害が発生する前の正常に書き込まれなかったグローバルセカンダリインデックステーブルをインデックスシャードに再度に書き込むことができ、これにより、インデックスデータが失われることなく再利用可能であることを確保し、インデックスデータの完全性を確保することができる。
【0050】
図5は本出願の実施例に係る分散データベースのグローバルセカンダリインデックス装置の構成ブロック図である。図5に示すように、当該分散データベースのグローバルセカンダリインデックス装置は、元データ書き込みモジュール501、インデックス処理モジュール502及びインデックステーブル作成モジュール503を含むことができる。
【0051】
具体的に、元データ書き込みモジュール501は、受信したデータベース書き込み要求に応答して、書き込み対象の元データを取得し、前記元データを前記分散データベースに書き込むように構成される。一例として、元データ書き込みモジュール501は、前記元データをデータバッファキューに書き込み、前記データバッファキューをストレージノードに送信してデータ永続化処理を行い、前記ストレージノードから返されたデータ永続化処理結果を受信し、前記データ永続化処理結果を前記データベース書き込み要求のイニシエータに送信するように構成される。
【0052】
インデックス処理モジュール502は、前記分散データベースに書き込まれた元データに対してグローバルセカンダリインデックス処理を行って、グローバルセカンダリインデックスデータを取得するように構成される。
【0053】
インデックステーブル作成モジュール503は、前記グローバルセカンダリインデックスデータと前記分散データベース内のデータテーブルの主キーとを対応付けさせたグローバルセカンダリインデックステーブルを作成し、非同期処理方式に基づいて前記グローバルセカンダリインデックステーブルをインデックスシャードに書き込むように構成される。一例として、インデックステーブル作成モジュール503は非同期処理方式に基づいて、前記グローバルセカンダリインデックステーブルをバッチごとにインデックスシャードに書き込む。
【0054】
選択可能に、本出願のいくつかの実施例では、図5に示す実施例をもとに、図6に示すように、当該分散データベースのグローバルセカンダリインデックス装置はログ記録モジュール604をさらに含むことができる。ログ記録モジュール604は、前記グローバルセカンダリインデックステーブルがバッチごとに前記インデックスシャードに書き込まれる時、現在のバッチで書き込まれたグローバルセカンダリインデックステーブルのインデックス値を分散合意アルゴリズムのRaftログに記録するように構成される。インデックス値は、前記現在のバッチの最後の、前記インデックスシャードに書き込まれたグローバルセカンダリインデックステーブルのインデックス値である。
【0055】
本出願のいくつかの実施例では、図6に示すように、当該分散データベースのグローバルセカンダリインデックス装置は取得モジュール605をさらに含むことができる。取得モジュール605は、前記インデックスシャードの障害回復に応答して、前記Raftログから、対象時間に新たに記録されたグローバルセカンダリインデックステーブルの対象インデックス値を取得するように構成され、前記対象時間が、前記インデックスシャードに障害が発生する前の時間である。
【0056】
本出願の実施例では、インデックステーブル作成モジュール603はさらに、前記対象インデックス値に基づいて、前記インデックスシャードに障害が発生している間に正常に書き込まれなかったグローバルセカンダリインデックステーブルを決定し、前記正常に書き込まれなかったグローバルセカンダリインデックステーブルを前記インデックスシャードに再度に書き込むように構成される。
【0057】
図6における601~603及び図5における501~503は同じ機能及び構成を有する。
【0058】
上記実施例における装置について、各モジュールが操作を実行する具体的な形態は、当該方法に関連する実施例において詳しく説明されたため、ここでは詳しい説明を省略する。
【0059】
本出願の実施例に係る分散データベースのグローバルセカンダリインデックス装置は、受信したデータベース書き込み要求から、書き込み対象の元データを取得し、元データを分散データベースに書き込み、即ち、元データが分散データベースに書き込まれた後、グローバルセカンダリインデックスを非同期で作成し、セカンダリインデックスのシーンにおける書き込みスループットを大幅に向上させることができ、書き込み遅延をさらに低減することができる。
【0060】
本出願の実施例によれば、本出願はコンピュータ機器及び読み取り可能な記憶媒体をさらに提供する。
【0061】
図7に示すように、本出願の実施例に係る分散データベースのグローバルセカンダリインデックス方法を実現するためのコンピュータ機器のブロック図である。コンピュータ機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、及び他の適切なコンピュータなど、様々な形態のデジタルコンピュータを表すことを目的とする。コンピュータ機器は、パーソナルデジタルプロセッサ、携帯電話、スマートフォン、ウェアラブルデバイス、他の類似するコンピューティングデバイスなどの様々な形態のモバイル装置を表すこともできる。本明細書で示されるコンポーネント、それらの接続と関係、及びそれらの機能は単なる例であり、本明細書で説明された及び/又は求められた本出願の実現を限定しようとしていない。
【0062】
図7に示すように、当該コンピュータ機器は、1つ又は複数のプロセッサ701と、メモリ702と、各コンポーネントを接続するための、高速インターフェース及び低速インターフェースを含むインターフェースと、を含む。各コンポーネントは異なるバスを介して互いに接続され、かつ共有マザーボードに取り付けられたり、必要に応じて他の方式で取り付けられたりすることができる。プロセッサは、外部入力/出力装置(例えば、インターフェースに結合される表示デバイス)にGUIのグラフィック情報を表示するようにメモリ内又はメモリ上に記憶される命令を含むコンピュータ機器内で実行される命令を処理することができる。他の実施形態では、必要があれば、複数のプロセッサ及び/又は複数のバスを複数のメモリとともに使用することができる。同様に、複数のコンピュータ機器を接続してもよく、各デバイスは必要な操作の一部を提供する(例えば、サーバアレイ、1組のブレードサーバ、又はマルチプロセッサシステムとして)。図7では、1つのプロセッサ701を例とする。
【0063】
メモリ702は本出願によって提供される非一時的コンピュータ読み取り可能な記憶媒体である。前記メモリには、本出願に係る分散データベースのグローバルセカンダリインデックス方法を前記少なくとも1つのプロセッサに実行させるように、少なくとも1つのプロセッサによって実行可能な命令が記憶されている。本出願の非一時的コンピュータ読み取り可能な記憶媒体はコンピュータ命令を記憶し、当該コンピュータ命令は、本出願に係る分散データベースのグローバルセカンダリインデックス方法をコンピュータに実行させる。
【0064】
メモリ702は非一時的コンピュータ読み取り可能な記憶媒体として、本出願の実施例に記載の分散データベースのグローバルセカンダリインデックス方法に対応するプログラム命令/モジュールなど、非一時的ソフトウェアプログラム、非一時的コンピュータによって実行可能なプログラム及びモジュールを記憶するために使用することができる。プロセッサ701は、メモリ702に記憶される非一時的ソフトウェアプログラム、命令及びモジュールを実行することにより、サーバの様々な機能アプリケーション及びデータ処理を実行し、即ち上記方法実施例における分散データベースのグローバルセカンダリインデックス方法を実現する。
【0065】
メモリ702はプログラム記録エリア及びデータ記録エリアを含むことができ、プログラム記憶エリアはオペレーティングシステム、少なくとも1つの機能に必要なアプリケーションプログラムを記憶することができ、データ記憶エリアは分散データベースのグローバルセカンダリインデックス方法を実現するように構成されるコンピュータ機器を使用することによって作成されたデータなどを記憶することができる。また、メモリ702は高速ランダムアクセスメモリを含むことができ、少なくとも1つの磁気ディスクストレージデバイス、フラッシュデバイス、又は他の非一時的ソリッドステートストレージデバイスなど、非一時的メモリをさらに含むことができる。いくつかの実施例では、メモリ702は選択可能に、プロセッサ701に対して遠隔に配置されたメモリを含み、これらの遠隔メモリはネットワークを介して、分散データベースのグローバルセカンダリインデックス方法を実現するように構成されるコンピュータ機器に接続することができる。上記ネットワークの実際の例はインターネット、イントラネット、ローカルエリアネットワーク、移動体通信ネットワーク及びその組み合せを含むが、これらに限定されない。
【0066】
分散データベースのグローバルセカンダリインデックス方法を実現するように構成されるコンピュータ機器は入力装置703及び出力装置704をさらに含んでも良い。プロセッサ701、メモリ702、入力装置703及び出力装置704はバス又は他の方式で接続することができ、図7ではバスによる接続を例とする。
【0067】
タッチスクリーン、キーパッド、マウス、トラックパッド、タッチパッド、インジケーターロッド、1つ又は複数のマウスボタン、トラックボール、ジョイスティックなどの入力装置703は、入力されたデジタル又は文字情報を受信し、及びコンピュータ機器のユーザ設定と機能制御に関わるキー信号入力を生成することができる。出力装置704は、ディスプレイデバイス、補助照明装置(例えば、LED)、及び触覚フィードバックデバイス(例えば、振動モータ)などを含むことができる。当該ディスプレイデバイスは、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ及びプラズマディスプレイを含むことができる。一部の実施形態では、ディスプレイデバイスはタッチスクリーンであってもよい。
【0068】
ここで説明されたシステム及び技術の様々な実施形態はデジタル電子回路システム、集積回路システム、特定用途向けASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組み合せで実現することができる。これらの様々な実施形態は、1つ又は複数のコンピュータプログラムで実施されてもよく、当該1つ又は複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラム可能なシステムで実行及び/又は解釈することができ、当該プログラマブルプロセッサは、特定用途向け又は汎用プログラマブルプロセッサであってもよく、ストレージシステム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、データ及び命令を当該ストレージシステム、当該少なくとも1つの入力装置、及び当該少なくとも1つの出力装置に伝送することができる。
【0069】
これらのコンピューティングプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも呼ばれる)はプログラマブルプロセッサの機械命令を含み、高度なプロセス及び/又はオブジェクト指向プログラミング言語、及び/又はアセンブリ/機械語を用いてこれらのコンピューティングプログラムを実施することができる。本明細書で使用されたように、「機械読み取り可能な媒体」及び「コンピュータ読み取り可能な媒体」という用語は、機械命令及び/又はデータをプログラマブルプロセッサに提供する如何なるコンピュータプログラム製品、デバイス、及び/又は装置(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械読み取り可能な信号とされる機械命令を受信する機械読み取り可能な媒体を含む。「機械読み取り可能な信号」という用語は、機械命令及び/又はデータをプログラマブルプロセッサに提供する如何なる信号を指す。
【0070】
ユーザとのインタラクションを提供するために、ここで説明されたシステム及び技術をコンピュータ上で実施することができ、当該コンピュータは、ユーザに情報を表示するためのディスプレイ装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)、並びにキーボードとポインティングデバイス(例えば、マウス又はトラックボール)を有し、ユーザは、当該キーボード及び当該ポインティングデバイスを介して入力をコンピュータに提供することができる。他の種類の装置も、ユーザとのインタラクションを提供することができ、例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形式(音響入力と、音声入力または、触覚入力とを含む)でユーザからの入力を受信することができる。
【0071】
ここで説明されるシステム及び技術は、バックエンドコンポーネントを含むコンピューティングシステム(例えば、データサーバとして)、又はミドルウェアコンポーネントを含むコンピューティングシステム(例えば、アプリケーションサーバ)、又はフロントエンドコンポーネントを含むコンピューティングシステム(例えば、グラフィカルユーザインタフェース又はウェブブラウザを有するユーザコンピュータ、ユーザは、当該グラフィカルユーザインタフェース又は当該ウェブブラウザによってここで説明されたシステム及び技術の実施形態とインタラクションを行う)、又はこのようなバックエンドコンポーネントと、ミドルウェアコンポーネントと、フロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムで実施することができる。任意の形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によってシステムのコンポーネントを互に接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、及びブロックチェーンネットワークを含む。
【0072】
コンピュータシステムは、クライアントとサーバを含むことができる。クライアントとサーバは、一般に、互いに離れており、通常に通信ネットワークを介してインタラクションする。対応するコンピュータ上で実行され、かつ互いにクライアント-サーバ関係を有するコンピュータプログラムによってクライアントとサーバとの関係が生成される。サーバは、クラウドコンピューティングサーバ又はクラウドホストとも呼ばれるクラウドサーバであってもよく、クラウドコンピューティングサービスシステムにおけるホスト製品の1つであり、従来の物理ホストとVPSサービス(「Virtual Private Server」、又は「VPS」と略す)に存在する管理の難易度が高く、ビジネスの拡張性が弱いという欠陥を解決した。サーバは分散システムのサーバであってもよく、又はブロックチェーンと組み合わせたサーバであってもよい。
【0073】
なお、以上に示す様々な形態のフローを用いて、ステップを並べ替え、追加又は削除できることを理解されたい。例えば、本出願に記載されている各ステップは、本出願で開示された技術案の所望の結果を実現できれば、並列的に実行されてもよいし、順次実行されてもよく、異なる順序で実行されてもよいが、本明細書では限定されない。
【0074】
上記具体的な実施形態は、本出願の保護範囲を限定するものではない。当業者であれば、設計要件や他の要因に応じて、様々な修正、組み合せ、一部の組み合せ及び置換を行うことができることを理解されたい。本出願の趣旨及び原則内で行われた修正、同等の置換及び改良などは、いずれも本出願の保護範囲内に含まれるべきである。
図1
図2
図3
図4
図5
図6
図7