(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-10-11
(54)【発明の名称】ブロックチェーンデータ処理の方法、装置、機器及び可読記憶媒体
(51)【国際特許分類】
G06F 16/22 20190101AFI20221003BHJP
G06F 16/182 20190101ALI20221003BHJP
【FI】
G06F16/22
G06F16/182
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022507639
(86)(22)【出願日】2020-05-12
(85)【翻訳文提出日】2022-02-04
(86)【国際出願番号】 CN2020089803
(87)【国際公開番号】W WO2021051830
(87)【国際公開日】2021-03-25
(31)【優先権主張番号】201910878095.X
(32)【優先日】2019-09-17
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】522021952
【氏名又は名称】京▲東▼科技信息技▲術▼有限公司
(74)【代理人】
【識別番号】100167689
【氏名又は名称】松本 征二
(72)【発明者】
【氏名】邵珠光
(72)【発明者】
【氏名】▲張▼爽
(72)【発明者】
【氏名】▲趙▼光▲偉▼
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175KA08
(57)【要約】
本発明はブロックチェーンデータ処理の方法、装置、機器及び可読記憶媒体を提供する。本発明の方法は、リレーショナルデータベースにデータ種別情報テーブルを予め記憶することにより、全てのデータ種別の記憶情報を記憶するために用いられ、記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含む。それによりリレーショナルデータベースにおけるテーブルとブロックチェーンにおけるサービスデータとのマッピングを実現する。Key-Valueデータを記憶する必要があるときに、Valueのデータ種別を決定する。データ種別情報テーブルに基づいて、Valueのデータ種別に対応するターゲットテーブルを決定して、Key-Valueデータをターゲットテーブルに書き込み、リレーショナルデータベースに基づいてブロックチェーンデータを記憶することを実現でき、アプリケーション層サービスシステムがリレーショナルデータベースに基づいたデータクエリをサポートし、クエリ効率を向上させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、前記Valueのデータ種別を決定することと、
データ種別情報テーブルに基づいて、前記Valueのデータ種別に対応するターゲットテーブルを決定することであって、ここで前記データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、前記データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含むことと、
データ種別情報テーブルに基づいて、前記Key-Valueデータを前記ターゲットテーブルに書き込むことと、を含む、
ことを特徴とするブロックチェーンデータ処理の方法。
【請求項2】
前記Valueは、データ種別、データフォーマット、フィールド数及びValue値を含み、
データ種別情報テーブルに基づいて、前記Valueのデータ種別に対応するターゲットテーブルを決定することは、
前記データ種別情報テーブルに前記Valueのデータ種別が存在するか否かを判断することと、
前記データ種別情報テーブルに前記Valueのデータ種別が存在する場合、前記データ種別情報テーブルから前記Valueのデータ種別の記憶情報を取得することと、
前記Valueのデータ種別の記憶情報に基づいて、前記Valueにおけるデータフォーマット及びフィールド数が前記記憶情報におけるデータフォーマット及びフィールド数と一致するか否かを判断することと、
前記Valueにおけるデータフォーマット及びフィールド数が前記記憶情報におけるデータフォーマット及びフィールド数といずれも一致すれば、前記データ種別情報テーブルから前記Valueのデータ種別に対応するターゲットテーブルを取得することと、を含む、
ことを特徴とする請求項1に記載のブロックチェーンデータ処理の方法。
【請求項3】
前記データ種別情報テーブルに前記Valueのデータ種別が存在するか否かを判断した後、
前記データ種別情報テーブルに前記Valueのデータ種別が存在しないと、前記Valueのデータ種別のフィールド数とマッチングする新しいテーブルを取得し、ターゲットテーブルとすることと、
前記新しいテーブルに基づいて前記データ種別情報テーブルにおける前記Valueのデータ種別の記憶情報を更新することと、をさらに含む、
ことを特徴とする請求項2に記載のブロックチェーンデータ処理の方法。
【請求項4】
前記Valueのデータ種別の記憶情報に基づいて、前記Valueにおけるデータフォーマット及びフィールド数が前記記憶情報におけるデータフォーマット及びフィールド数と一致するか否かを判断した後、
前記Valueのデータフォーマットが前記記憶情報におけるデータフォーマットと一致しないと、又は前記Valueのフィールド数が前記記憶情報におけるフィールド数と一致しないと、前記Valueのデータ種別のフィールド数とマッチングする新しいテーブルを取得し、ターゲットテーブルとすることと、
前記新しいテーブルに基づいて前記データ種別情報テーブルにおける前記Valueのデータ種別の記憶情報を更新することと、をさらに含む、
ことを特徴とする請求項2に記載のブロックチェーンデータ処理の方法。
【請求項5】
前記記憶情報におけるデータフォーマット及びフィールド数とマッチングする新しいテーブルを取得し、ターゲットテーブルとした後、
前記ターゲットテーブルの現在の状態を決定し、前記ターゲットテーブルの現在の状態は書込可能状態及び書込不可能状態を含むことと、
前記ターゲットテーブルが書込不可能状態であると、前記Valueのデータ種別のフィールド数とマッチングする新しいテーブルを取得し、ターゲットテーブルとして、前記新しいテーブルに基づいて前記データ種別情報テーブルにおける前記Valueのデータ種別の記憶情報を更新することと、
前記ターゲットテーブルが書込可能状態であると、データ種別情報テーブルに基づいて前記Key-Valueデータを前記ターゲットテーブルに書き込むステップを実行することと、をさらに含む、
ことを特徴とする請求項3に記載のブロックチェーンデータ処理の方法。
【請求項6】
前記ターゲットテーブルの現在の状態を決定する前に、
前記ターゲットテーブルの行数が予め設定された閾値に達するか否かを検出することと、
前記ターゲットテーブルの行数が予め設定された閾値に達すると、前記ターゲットテーブルの状態を書込不可能状態に更新することと、をさらに含む、
ことを特徴とする請求項5に記載のブロックチェーンデータ処理の方法。
【請求項7】
データ種別情報テーブルに基づいて、前記Key-Valueデータを前記ターゲットテーブルに書き込むことは、
前記Key-ValueデータのKeyを前記ターゲットテーブルの指定フィールドに書き込むことと、
前記Valueのデータ種別の記憶情報に基づいて、前記Valueのサービスフィールドの値を前記ターゲットテーブルにおける対応するテーブルフィールドに書き込むことと、を含む、
ことを特徴とする請求項1~6のいずれか一項に記載のブロックチェーンデータ処理の方法。
【請求項8】
前記方法は、
ブロックチェーンシステムのデータクエリ要求に応答して、クエリ対象としてのデータのKey、データ種別及びサービスフィールドを取得することと、
前記クエリ対象としてのデータのデータ種別に基づいて、前記データ種別情報テーブルをクエリし、前記クエリ対象としてのデータのデータ種別に対応するテーブルを決定することと、
前記クエリ対象としてのデータのKey及びサービスフィールドに基づいて、前記クエリ対象としてのデータのデータ種別に対応するテーブルをクエリし、クエリ結果を得ることと、をさらに含む、
ことを特徴とする請求項1~6のいずれか一項に記載のブロックチェーンデータ処理の方法。
【請求項9】
前記クエリ結果を得た後、
前記クエリ対象としてのデータのデータ種別のValueのデータフォーマットに基づいて、前記クエリ結果をValueとしてパッケージ化することをさらに含む、
ことを特徴とする請求項8に記載のブロックチェーンデータ処理の方法。
【請求項10】
ブロックチェーンシステムのデータクエリ要求に応答し、クエリ語句を取得することと、
前記クエリ語句を分析し、クエリ対象としてのデータのデータ種別及びサービスフィールドを決定することと、
クエリ対象としてのデータのデータ種別の記憶情報に基づいて、前記クエリ語句におけるデータ種別を対応するテーブル名称に置き換え、前記クエリ語句におけるサービスフィールドを対応するテーブルフィールドに置き換え、新しいクエリ語句を生成することと、
前記新しいクエリ語句を実行し、クエリ結果を得ることと、を含む、
ことを特徴とする請求項1~6のいずれか一項に記載のブロックチェーンデータ処理の方法。
【請求項11】
クエリ結果を得た後、
前記クエリ対象としてのデータのデータ種別のValueのデータフォーマットに基づいて、前記クエリ結果をKey-Valueデータとしてパッケージ化することをさらに含む、
ことを特徴とする請求項10に記載のブロックチェーンデータ処理の方法。
【請求項12】
Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、前記Valueのデータ種別を決定するためのデータ分析モジュールと、
データ種別情報テーブルに基づいて、前記Valueのデータ種別に対応するターゲットテーブルを決定するためのデータ書込モジュールであって、ここで前記データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、前記データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含むデータ書込モジュールとを含み、
前記データ書込モジュールはさらに、データ種別情報テーブルに基づいて、前記Key-Valueデータを前記ターゲットテーブルに書き込むために用いられる、
ことを特徴とするブロックチェーンデータ処理の装置。
【請求項13】
前記装置はさらに第1のデータクエリモジュールを含み、前記第1のデータクエリモジュールは、
ブロックチェーンシステムのデータクエリ要求に応答して、クエリ対象としてのデータのKey、データ種別及びサービスフィールドを取得することと、
前記クエリ対象としてのデータのデータ種別に基づいて、データ種別情報テーブルをクエリし、前記クエリ対象としてのデータのデータ種別に対応するテーブルを決定することと、
前記クエリ対象としてのデータのKey及びサービスフィールドに基づいて、前記クエリ対象としてのデータのデータ種別に対応するテーブルをクエリし、クエリ結果を得ることと、のために用いられる、
ことを特徴とする請求項12に記載のブロックチェーンデータ処理の装置。
【請求項14】
前記装置はさらに第2のデータクエリモジュールを含み、前記第2のデータクエリモジュールは、
ブロックチェーンシステムのデータクエリ要求に応答し、クエリ語句を取得することと、
前記クエリ語句を分析し、クエリ対象としてのデータのデータ種別及びサービスフィールドを決定することと、
クエリ対象としてのデータのデータ種別の記憶情報に基づいて、前記クエリ語句におけるデータ種別を対応するテーブル名称に置き換え、前記クエリ語句におけるサービスフィールドを対応するテーブルフィールドに置き換え、新しいクエリ語句を生成することと、
前記新しいクエリ語句を実行し、クエリ結果を得ることと、のために用いられる、
ことを特徴とする請求項12に記載のブロックチェーンデータ処理の装置。
【請求項15】
プロセッサ、メモリ、及び前記メモリに記憶されて前記プロセッサで実行可能なコンピュータプログラムを含み、
前記プロセッサは前記コンピュータプログラムを動作するときに、請求項1~11のいずれか一項に記載のブロックチェーンデータ処理の方法を実現する、
ことを特徴とするコンピューティング機器。
【請求項16】
コンピュータ可読記憶媒体であって、前記コンピュータ可読記憶媒体にコンピュータプログラムが記憶され、前記コンピュータプログラムがプロセッサによって実行されるときに請求項1~11のいずれか一項に記載のブロックチェーンデータ処理の方法を実現する、
ことを特徴とするコンピュータ可読記憶媒体。
【請求項17】
命令を動作するチップであって、前記チップはメモリ、プロセッサを含み、前記メモリにコード及びデータが記憶され、前記メモリは前記プロセッサに結合され、前記プロセッサは前記メモリにおけるコードを実行することにより前記チップが請求項1~11のいずれか一項に記載のブロックチェーンデータ処理の方法を実行するために用いられる、
ことを特徴とするチップ。
【請求項18】
命令を含むプログラム製品であって、前記プログラム製品がコンピュータで実行されるときに、前記コンピュータに請求項1~11のいずれか一項に記載のブロックチェーンデータ処理の方法を実行させる、
ことを特徴とするプログラム製品。
【請求項19】
コンピュータプログラムであって、前記コンピュータプログラムがプロセッサにより実行されるときに、請求項1~11のいずれか一項に記載のブロックチェーンデータ処理の方法を実行するために用いられる、
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はブロックチェーンの技術分野に関し、特にブロックチェーンデータ処理の方法、装置、機器及び可読記憶媒体に関する。
【背景技術】
【0002】
ブロックチェーン技術の発展に伴い、ますます多くのデータは、ブロックチェーンを使用して記憶、対話され始める。ブロックチェーン技術において、データをブロックの形成で時間優先順位に従って1つずつ生成し重畳してチェーンデータ構造を形成し、各ブロックには対応する時間に発生した取引情報が記録される。
【0003】
ブロックチェーンでデータを記憶する構造の不確実性のため、大部分のブロックチェーンシステムにおけるデータは、Key-Value記憶モデルを採用し、キー値ペアの形式でされる。しかし、現在大部分のサービスシステムのアプリケーション層のマスタロジックはリレーショナルデータベースに基づいてデータ処理を行い、ブロックチェーンが使用するKey-Value記憶モデルと異なり、それによりブロックチェーンのデータはアプリケーション層に適用されることができない。従来のブロックチェーンは一部の特定条件に対するクエリ又は複雑なロジックのクエリをサポートせず、クエリ効率が低い。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、従来のブロックチェーンが一部の特定条件に対するクエリ又は複雑なロジックのクエリをサポートせず、クエリ効率が低く、かつアプリケーション層に適用できないという問題を解決するためのブロックチェーンデータ処理の方法、装置、機器及び可読記憶媒体を提供する。
【課題を解決するための手段】
【0005】
本発明の1つの態様はブロックチェーンデータ処理の方法を提供し、
Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、前記Valueのデータ種別を決定することと、
データ種別情報テーブルに基づいて、前記Valueのデータ種別に対応するターゲットテーブルを決定することであって、ここで、前記データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、前記データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含むことと、
データ種別情報テーブルに基づいて、前記Key-Valueデータを前記ターゲットテーブルに書き込むことと、を含む。
【0006】
本発明の他の1つの態様はブロックチェーンデータ処理の装置を提供し、
Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、前記Valueのデータ種別を決定するためのデータ分析モジュールと、
データ種別情報テーブルに基づいて、前記Valueのデータ種別に対応するターゲットテーブルを決定するためのデータ書込モジュールであって、ここで、前記データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、前記データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含むデータ書込モジュールと、を含み、
前記データ書込モジュールはさらに、データ種別情報テーブルに基づいて、前記Key-Valueデータを前記ターゲットテーブルに書き込むために用いられる。
【0007】
本発明の他の1つの態様はコンピューティング機器を提供し、
プロセッサ、メモリ、及び前記メモリに記憶されて前記プロセッサで実行可能なコンピュータプログラムを含み、
ここで、前記プロセッサは前記コンピュータプログラムを実行する場合に上記に記載のブロックチェーンデータ処理の方法を実現する。
【0008】
本発明の他の態様はコンピュータ可読記憶媒体を提供することであり、前記コンピュータ可読記憶媒体にコンピュータプログラムが記憶され、前記コンピュータプログラムがプロセッサで実行されるときに上記に記載のブロックチェーンデータ処理の方法を実現する。
【0009】
本発明の他の態様は命令を動作するチップを提供することであり、前記チップはメモリ、プロセッサを含み、前記メモリにはコード及びデータが記憶され、前記メモリは前記プロセッサに結合され、前記プロセッサは前記メモリにおけるコードを実行することにより前記チップが上記ブロックチェーンデータ処理の方法のステップを実行するために用いられる。
【0010】
本発明の他の様態は命令を含むプログラム製品を提供することであり、前記プログラム製品がコンピュータで実行されるときに、前記コンピュータに上記ブロックチェーンデータ処理の方法のステップを実行させる。
【0011】
本発明の他の様態はコンピュータプログラムを提供することであり、前記コンピュータプログラムがプロセッサにより実行されるときに、上記ブロックチェーンデータ処理の方法のステップを実行するために用いられる。
【発明の効果】
【0012】
本発明に係るブロックチェーンデータ処理の方法、装置、機器及び可読記憶媒体は、リレーショナルデータベースにデータ種別情報テーブルを予め記憶し、データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、前記データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含む。それによりリレーショナルデータベースにおけるテーブルとブロックチェーンにおけるサービスデータとのマッピングを実現する。Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、前記Valueのデータ種別を決定する。データ種別情報テーブルに基づいて、前記Valueのデータ種別に対応するターゲットテーブルを決定する。データ種別情報テーブルに基づいて、前記Key-Valueデータを前記ターゲットテーブルに書き込み、リレーショナルデータベースに基づいてブロックチェーンデータを記憶することを実現でき、アプリケーション層サービスシステムがリレーショナルデータベースに基づいたデータクエリをサポートし、クエリ効率を向上させる。
【図面の簡単な説明】
【0013】
【
図1】本発明の実施例1に係るブロックチェーンデータ処理の方法のフローチャートである。
【
図2】本発明の実施例2に係るブロックチェーンデータ処理の方法のフローチャートである。
【
図3】本発明の実施例3に係るブロックチェーンデータ処理の方法のフローチャートである。
【
図4】本発明の実施例4に係るブロックチェーンデータ処理の方法のフローチャートである。
【
図5】本発明の実施例5に係るブロックチェーンデータ処理の装置の模式的な構成図である。
【
図6】本発明の実施例6に係るブロックチェーンデータ処理の装置の模式的な構成図である。
【
図7】本発明の実施例7に係るコンピューティング機器の模式的な構成図である。 上記図面により、本発明の明確な実施例を示し、後により詳細に説明する。これらの図面及び文字記述はいかなる方式で本発明の構想の範囲を限定するものではなく、特定の実施例を参照することにより当業者に対して本発明の概念を説明する。
【発明を実施するための形態】
【0014】
ここで例示的な実施例を詳細に説明し、その例は図面に表れる。以下の説明は図面に関するときに、特に示さない限り、異なる図面における同じ数字は同じ又は類似する要素を示す。以下の例示的な実施例に記載された実施形態は本発明と一致する全ての実施形態を示すものではない。逆に、それらは添付の特許請求の範囲に詳細に説明された、本発明のいくつかの態様と一致する装置及び方法の例である。
【0015】
本発明に係る用語「第1」、「第2」等は単に説明の目的のために用いられ、相対的な重要性を指示するか又は暗示すること、指示された技術的特徴の数を暗黙的に明示することと理解することができない。以下の各実施例の説明において、特に具体的な限定がない限り、「複数」の意味は2つ以上である。
【0016】
本発明は具体的にはブロックチェーンシステムに応用され、ブロックチェーンシステムにおいて、データはKey-Value記憶モデルを採用し、キー値ペアの形式で記憶される。本実施例において、リレーショナルデータベースを採用してデータを記憶し、データベース操作のAPIインタフェースを介して、ブロックチェーンシステムのデータ記憶とリレーショナルデータベースとを統合し、ブロックチェーンシステムには1つのKey-Valueデータを記憶する必要があるときに、Key-Valueデータを統合してリレーショナルデータベースに記憶し、かつリレーショナルデータベースにおけるブロックチェーンデータのクエリをサポートする。
【0017】
本実施例に係るブロックチェーンデータ処理の方法について、1つの応用シーンは、ブロックチェーンシステムがKey-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、Valueのデータ種別を決定し、データ種別情報テーブルに基づいて、Valueのデータ種別に対応するターゲットテーブルを決定し、データ種別情報テーブルに基づいて、Key-Valueデータをターゲットテーブルに書き込むことである。
【0018】
他の応用シーンは以下のとおりである。ブロックチェーンシステムがデータをクエリする必要があるときに、指定されたKey、データ種別及びサービスフィールドを採用してデータをクエリするときに、クエリ対象としてのデータのKey、データ種別及びサービスフィールドを取得する。クエリ対象としてのデータのデータ種別に基づいて、データ種別情報テーブルをクエリし、クエリ対象としてのデータのデータ種別に対応する第2の目標テーブルを決定する。クエリ対象としてのデータのKeyデータ及サービスフィールドに基づいて、第2の目標テーブルをクエリし、クエリ結果を得る。
【0019】
他の応用シーンは以下のとおりである。ブロックチェーンシステムがデータをクエリする必要があるときに、クエリ語句を入力すること(例えばSQL言語など)を採用してデータをクエリするときに、クエリ語句を分析し、クエリ対象としてのデータのデータ種別及びサービスフィールドを決定する。クエリ対象としてのデータのデータ種別の記憶情報に基づいて、クエリ語句におけるデータ種別を対応するテーブル名称に置き換え、クエリ語句におけるサービスフィールドを対応するテーブルフィールドに置き換え、新しいクエリ語句を生成する。新しいクエリ語句を実行し、クエリ結果を得る。
【0020】
本実施例における方法はブロックチェーンシステムにおいてブロックチェーンデータ処理を行うコンピューティング機器に適用される。
【0021】
以下に具体的な実施例によって本発明の技術案及び本願の技術案が上記技術的問題をどのように解決するかについて詳細に説明する。以下のいくつかの具体的な実施例を相互に組み合わせることができ、同じ又は類似する概念又はプロセスに対していくつかの実施例では説明を省略する可能性がある。以下に図面を参照して、本発明の実施例を説明する。
【0022】
実施例1
図1は本願の実施例に係るデータ処理の方法のフローチャートである。本発明の実施例は、従来のブロックチェーンが一部の特定条件に対するクエリ又は複雑なロジックのクエリをサポートせず、クエリ効率が低いという問題について、ブロックチェーンデータ処理の方法を提供する。
【0023】
図1に示すように、当該方法の具体的なステップは以下のとおりである。
【0024】
ステップS101において、Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、Valueのデータ種別を決定する。
【0025】
一般的に、ブロックチェーンシステムにおいて以下の2種類の方式を採用してブロックチェーンデータをKey-Valueデータベースに書き込む。1つの種類の方式は、Put(Key,Value)であって、Key及びValueが特定されたものである。もう1つの方式は、Write(Value)であって、Valueが特定されたが、Keyが特定されないものである。
【0026】
本実施例において、Key-Value構造のブロックチェーンデータをリレーショナルデータベースに記憶させることができるように、ブロックチェーンデータのValueのフォーマットを予め定義し、ブロックチェーンシステムに生成されたKey-ValueデータにおけるValueがデータ種別、データフォーマット、フィールド数及びValue値を含むことを要求する。
【0027】
ここで、データ種別はValueのサービス分類を示し、即ちValueが対応する取引情報のサービス分類であり、リレーショナルデータベースのテーブル名にマッピングすることができる。
【0028】
データフォーマットは当該データ種別のValueのパターンを表し、例えば、JSONフォーマットであってもよく、又はデリミタで分類されたものであってもよい。また、同一のデータ種別は同一のデータフォーマットに対応し、同一のデータ種別に対して、異なるデータフォーマットを記憶することを許可せず、それによりシステム全体の複雑度を低減し、システムの安定性を保証する。
【0029】
フィールド数は当該データ種別のフィールドの数を表し、同一のデータ種別に対応して、同一のフィールド数を有し、同一のデータ種別に対して、複数の種類のフィールド数を設定することを許可しない。また、データ種別のフィールド数は現在の実際のValueのフィールド数以上に設定されてもよい。
【0030】
本実施例において、ブロックチェーンシステムにおいてKey-Valueデータを任意の方式で記憶する必要があるときに、Valueフォーマットに基づいてKey-ValueデータにおけるValueを分析し、Valueのデータ種別、データフォーマット、フィールド数及びValue値を決定することができる。
【0031】
ステップS102において、データ種別情報テーブルに基づいて、Valueのデータ種別に対応するターゲットテーブルを決定し、ここでデータ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含む。
【0032】
本実施例において、リレーショナルデータベースにデータ種別情報テーブルを予めメンテナンスし、当該データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられる。データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含む。ここで、あるデータ種別に対応するテーブルは1つ又は複数を有してもよい。
【0033】
例示的に、データ種別情報テーブルのテーブル構造は以下のテーブル1に示すとおりである。
【0034】
【0035】
ここで、サービスフィールド識別子はサービスフィールド名又はサービスフィールド順序番号などであってもよい。
【0036】
例えば、Person及びStudentという2種類のデータ種別があると仮定する。データ種別情報テーブルは以下のテーブル2に示すデータを含んでもよい。
【0037】
【0038】
テーブル2に示すデータによれば、IDが1及び2である2つの行のデータから分かるように、Personサービスデータはテーブルtd_000に記憶され、記憶されたデータフォーマットはJSONであり、そのJSONフォーマットにおけるname属性は1番目のサービスフィールド(サービスフィールド名が「name」である)であり、対応するテーブルフィールドはcolumn1であり、age属性は2番目のサービスフィールド(サービスフィールド名が「age」である)であり、対応するテーブルフィールドはcolumn2である。
【0039】
IDが3~5の3つの行のデータから分かるように、Studentサービスデータはテーブルtd_001に記憶され、記憶されたデータフォーマットは「SPLIT(,)」であり、カンマデリミタで分類されることを示す。その1番目のセグメントは1番目のサービスフィールド(順序が0である)であり、対応するテーブルフィールドはcolumn1であり、2番目のセグメントは2番目のサービスフィールド(順序が1である)であり、対応するテーブルフィールドはcolumn2である。これによって類推する。
【0040】
また、テーブルフィールドcolumn0はKeyを格納するために保留されてもよい。
【0041】
Valueのデータ種別を決定した後、当該ステップにおいて、Valueのデータ種別に基づいてデータ種別情報テーブルをクエリすることにより、Valueのデータ種別に対応するターゲットテーブルを決定する。
【0042】
ステップS103において、データ種別情報テーブルに基づいて、Key-Valueデータをターゲットテーブルに書き込む。
【0043】
Key-Valueデータを書き込むターゲットテーブルを決定した後、データ種別情報テーブルから当該Valueのデータ種別の記憶情報を取得し、当該Valueのデータ種別の記憶情報における当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットに基づいて、Key値及びValueにおける各サービスフィールドの値をターゲットテーブルの対応するテーブルフィールドに書き込む。
【0044】
例示的に、データ種別に対応するテーブルにおいて保留された指定フィールドを採用してKey値を記憶してもよい。
【0045】
本発明の実施例はリレーショナルデータベースにデータ種別情報テーブルを予め記憶し、データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含む。それによりリレーショナルデータベースにおけるテーブルとブロックチェーンにおけるサービスデータとのマッピングを実現する。Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、Valueのデータ種別を決定する。データ種別情報テーブルに基づいて、Valueのデータ種別に対応するターゲットテーブルを決定する。データ種別情報テーブルに基づいて、Key-Valueデータをターゲットテーブルに書き込み、リレーショナルデータベースに基づいてブロックチェーンデータを記憶することを実現でき、アプリケーション層サービスシステムがリレーショナルデータベースに基づいたデータクエリをサポートし、クエリ効率を向上させる。
【0046】
実施例2
図2は本発明の実施例2に係るブロックチェーンデータ処理の方法のフローチャートである。上記実施例1に基づいて、本実施例において、Valueはデータ種別、データフォーマット、フィールド数及びValue値を含む。データ種別情報テーブルに基づいて、Valueのデータ種別に対応するターゲットテーブルを決定することは、以下を含む。データ種別情報テーブルにはValueのデータ種別が存在するか否かを判定する。データ種別情報テーブルにはValueのデータ種別が存在する場合、データ種別情報テーブルからValueのデータ種別の記憶情報を取得する。Valueのデータ種別の記憶情報に基づいて、Valueにおけるデータフォーマット及びフィールド数が記憶情報におけるデータフォーマット及びフィールド数と一致するか否かを判定する。一致すれば、データ種別情報テーブルからValueのデータ種別に対応するターゲットテーブルを取得する。データ種別情報テーブルにValueのデータ種別が存在しないか、又はValueのデータフォーマット及びフィールド数が記憶情報におけるデータフォーマット及びフィールド数と一致しないと、記憶情報におけるデータフォーマット及びフィールド数とマッチングする新しいテーブルを取得し、ターゲットテーブルとする。新しいテーブルに基づいてデータ種別情報テーブルにおけるValueのデータ種別の記憶情報を更新する。
【0047】
図2に示すように、当該方法の具体的なステップは以下のとおりである。
【0048】
ステップS201において、Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、Valueのデータ種別を決定する。
【0049】
当該ステップは上記ステップS101と一致し、本実施例にここで説明を省略する。
【0050】
本実施例において、Valueのデータ種別を決定した後、ステップS202~S208により、データ種別情報テーブルに基づいてValueのデータ種別に対応するターゲットテーブルを決定する実施形態とする。
【0051】
選択的に、Key-ValueデータにおけるValueを分析するときに、まずKey-ValueデータにおけるValueがValueフォーマット要件を満たすか否かを判断することができる。ValueがValueフォーマット要件を満たさないときに、Key-Valueデータをリレーショナルデータベースに記憶することができず、データ書き込み異常のプロンプトを行うことができる。ValueがValueフォーマット要件を満たすと、後続のステップを実行し続ける。
【0052】
ステップS202において、データ種別情報テーブルにValueのデータ種別が存在するか否かを判断する。
【0053】
ここで、データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含む。
【0054】
また、データ種別情報テーブルに関する詳細な説明は上記ステップS102を参照し、本実施例はここで説明を省略する。
【0055】
本実施例において、まずはデータ種別情報テーブルにValueのデータ種別が存在するか否かを判断する。データ種別情報テーブルにValueのデータ種別が存在する場合、ステップS203を実行し、データ種別情報テーブルからValueのデータ種別の記憶情報を直接取得する。
【0056】
データ種別情報テーブルにValueのデータ種別が存在しなければ、ステップS207~S208を実行し、新しいテーブルをターゲットテーブルとして取得し、かつ新しいテーブルに基づいてデータ種別情報テーブルにおけるValueのデータ種別の記憶情報を更新する。
【0057】
ステップS203において、データ種別情報テーブルにValueのデータ種別が存在する場合、データ種別情報テーブルからValueのデータ種別の記憶情報を取得する。
【0058】
ステップS204において、Valueのデータ種別の記憶情報に基づいて、Valueにおけるデータフォーマット及びフィールド数が記憶情報におけるデータフォーマット及びフィールド数と一致するか否かを判断する。
【0059】
本実施例において、データ種別情報テーブルからValueのデータ種別の記憶情報を取得した後、記憶情報における当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び該データ種別のValueのデータフォーマットに基づいて、Valueにおけるデータフォーマットが記憶情報におけるデータフォーマットと一致するか否か、及びValueにおけるフィールド数が記憶情報におけるフィールド数と一致するか否かを判断する。
【0060】
Valueにおけるデータフォーマット及びフィールド数が記憶情報におけるデータフォーマット及びフィールド数といずれも一致すれば、ステップS205を実行し、データ種別情報テーブルからValueのデータ種別に対応するターゲットテーブルを取得する。
【0061】
Valueのデータフォーマットが記憶情報におけるデータフォーマットと一致しないと、又はValueのフィールド数が記憶情報におけるフィールド数と一致しないと、ステップS207~S208を実行し、新しいテーブルをターゲットテーブルとして取得し、かつ新しいテーブルに基づいてデータ種別情報テーブルにおけるValueのデータ種別の記憶情報を更新する。
【0062】
ステップS205において、Valueにおけるデータフォーマット及びフィールド数が記憶情報におけるデータフォーマット及びフィールド数といずれも一致すれば、データ種別情報テーブルからValueのデータ種別に対応するターゲットテーブルを取得する。
【0063】
ステップS206において、ターゲットテーブルの現在状態が書込可能状態であるか否かを判断する。
【0064】
本実施例において、各データ種別に対応するテーブルの状態を増加させ、テーブルに書き込むことができるか否かを説明するために用いられる。ここで、ターゲットテーブルの状態は書込可能状態及び書込不可能状態を含む。
【0065】
例示的に、リレーショナルデータベースに状態情報テーブルをメンテナンスすることができ、状態情報テーブルは各テーブルの状態を記憶することに用いられる。例えば、状態情報テーブルは少なくとも以下のようなフィールドを含む。テーブル名及びテーブル状態である。状態情報テーブルはさらにフィールド数を含んでもよい。
【0066】
本実施例において、初期に各データ種別に対応するテーブルは書込可能状態であると設定され、後続にテーブルに記憶されるデータ量の大きさに応じてテーブルの状態をリアルタイムに更新し、単一のテーブルが大きすぎることを防止し、クエリ効率を向上させることができる。
【0067】
例示的に、コンピューティング機器は各テーブルの行数が予め設定された閾値に達するか否かを検出する。あるテーブルの行数が予め設定された閾値に達すると、当該テーブルの状態を書込不可能状態に更新する。ここで、予め設定された閾値は当業者によって実際の応用シーン及び必要に応じて設定されてもよく、本実施例はここで具体的に限定しない。
【0068】
選択的に、コンピューティング機器は単独のスレッドにより所定計画に応じて各テーブルの状態を更新することができ、例えば、一定の時間ごとに一回更新し、定期的に更新し、リアルタイムに更新するなどであり、本実施例は各テーブルの状態を更新する所定計画を具体的に限定しない。
【0069】
また、各テーブルのデータ量に対する要求は非常に厳しいものではないため、ラッチロジックなどの複雑なロジック処理を追加する必要がない。
【0070】
データ種別情報テーブルからValueのデータ種別に対応するターゲットテーブルを取得した後、当該ステップにおいて、ターゲットテーブルの現在の状態を決定し、ターゲットテーブルが書込不可能状態であれば、実行ステップS207~S208を実行し、新しいテーブルをターゲットテーブルとして取得し、かつ新しいテーブルに基づいてデータ種別情報テーブルにおけるValueのデータ種別の記憶情報を更新する。
【0071】
ターゲットテーブルが書込可能状態であれば、ステップS209を実行し、データ種別情報テーブルに基づいてKey-Valueデータをターゲットテーブルに書き込む。
【0072】
ステップS207において、Valueのデータ種別のフィールド数とマッチングする新しいテーブルを取得し、ターゲットテーブルとする。
【0073】
1つの可能な実施形態として、Valueのデータ種別のフィールド数とマッチングする新しいテーブルを直接作成し、ターゲットテーブルとしてもよい。
【0074】
別の可能な実施形態として、指定されたフィールドの数を有する空テーブルを予め作成してもよく、ここで指定されたフィールドの数は使用頻度の高い1つ又は複数のフィールド数であってもよい。当該ステップにおいて、Valueのデータ種別のフィールド数に基づいて、Valueのデータ種別のフィールド数と一致する予め作成された空テーブルを直接取得し、ターゲットテーブルとする。このようにして、データを書き込むプロセスにおけるテーブル作成操作を節約することができ、データ書き込み効率を向上させることができる。
【0075】
例示的に、コンピューティング機器は遊休テーブル情報テーブルをメンテナンスすることができ、当該遊休テーブル情報テーブルは既に作成された空テーブルの情報を記憶するために用いられ、テーブル名及びその対応するフィールド数を少なくとも含み、さらにテーブル状態を含んでもよい。Valueのデータ種別のフィールド数に基づいて、遊休テーブル情報テーブルをクエリし、Valueのデータ種別のフィールド数と一致する予め作成された空テーブルが存在するか否かを決定する。存在すれば、Valueのデータ種別のフィールド数と一致する予め作成された空テーブルを直接取得し、存在しなければ、Valueのデータ種別のフィールド数に基づいて、記憶情報におけるフィールド数と一致するテーブルを新規作成し、ターゲットテーブルとする。
【0076】
また、存在しなければ、Valueのデータ種別のフィールド数に基づいて、Valueのデータ種別のフィールド数と一致するテーブルを新規作成した後、当該テーブルの状態を書込可能状態に設定して、当該テーブルの状態情報を状態情報テーブルに書き込む。
【0077】
選択的に、本実施例において、さらに遊休テーブル情報テーブルと状態情報テーブルを1つのテーブルに合併して記憶してもよく、本実施例はここで具体的に限定しない。
【0078】
ステップS208において、新しいテーブルに基づいてデータ種別情報テーブルにおけるValueのデータ種別の記憶情報を更新する。
【0079】
Valueのデータ種別のフィールド数とマッチングする新しいテーブルをターゲットテーブルとして取得した後、当該新しいテーブルの情報、新しいテーブルのテーブルフィールドとValueのサービスフィールドとのマッピング関係、及びValueのデータ種別に対応するデータフォーマットなどに基づいて、当該Valueのデータ種別の1つの記憶情報を生成して、データ種別情報テーブルに書き込み、新しいテーブルに基づいてデータ種別情報テーブルにおけるValueのデータ種別の記憶情報を更新する。
【0080】
ステップS209において、データ種別情報テーブルに基づいて、Key-Valueデータをターゲットテーブルに書き込む。
【0081】
本実施例において、データ種別に対応するテーブルにおいて保留された指定フィールドを採用してKey値を記憶してもよい。
【0082】
Valueのデータ種別に対応するターゲットテーブルを決定した後、データ種別情報テーブルにおける当該Valueのデータ種別に対応するValueのデータフォーマットに基づいて、当該Valueの各サービスフィールドの値を分析し、Valueのサービスフィールドの値をターゲットテーブルに対応するテーブルフィールドに書き込み、かつKey-ValueデータのKeyをターゲットテーブルの指定フィールドに書き込む。
【0083】
また、書き込み対象のデータがKeyを含まなければ、Valueのサービスフィールドの値をターゲットテーブルに対応するテーブルフィールドに書き込むだけでよい。
【0084】
本発明の実施例は、リレーショナルデータベースにデータ種別情報テーブルを予め記憶し、データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含む。それによりリレーショナルデータベースにおけるテーブルとブロックチェーンにおけるサービスデータとのマッピングを実現する。それによりリレーショナルデータベースにおけるテーブルの数を一定の範囲内にするように制御し、全体的にデータベースの性能を安定するように維持し、テーブルデータが多すぎることによりデータベースの性能が低下することを防止する。Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、Valueのデータ種別を決定する。データ種別情報テーブルに基づいて、Valueのデータ種別に対応するターゲットテーブルを決定する。データ種別情報テーブルに基づいて、Key-Valueデータをターゲットテーブルに書き込み、リレーショナルデータベースに基づいてブロックチェーンデータを記憶することを実現でき、アプリケーション層サービスシステムがリレーショナルデータベースに基づいたデータクエリをサポートし、クエリ効率を向上させる。さらに、テーブルにおけるデータ量の大きさに基づいてテーブルが書き込み可能な状態であるか否かを設定することにより、あるテーブルの行数が予め設定された閾値に達すると、当該テーブルの状態を書き込み不可能な状態に更新する。ターゲットテーブルが書き込み不可能な状態であると、記憶情報におけるフィールドの数とマッチングする新しいテーブルをターゲットテーブルとして取得し、単一のテーブルが大きすぎることを防止することができ、さらにクエリ効率を向上させる。
【0085】
実施例3
図3は本発明の実施例3に係るブロックチェーンデータ処理の方法のフローチャートである。上記実施例1又は実施例2に基づいて、本実施例において、クエリ対象としてのデータKey、データ種別及びサービスフィールドを既知する場合に、ブロックチェーンデータクエリの流れを例示的に説明する。
図3に示すように、当該方法の具体的なステップは以下のとおりである。
【0086】
ステップS301において、ブロックチェーンシステムのデータクエリ要求に応答し、クエリ対象としてのデータのKey、データ種類及びサービスフィールドを取得する。
【0087】
本実施例は以下の方式のデータクエリをサポートする。第1種類のクエリ方式は、指定されたKey及びデータ種別によって全てのフィールドをクエリし、QueryAll(Key,DataType)と表すことができ、ここでDataTypeがデータ種別を表すことである。第2種類のクエリ方式は、指定されたKey、データ種別及びサービスフィールドによってクエリし、QueryFields(Key,DataType,fields[])と表すことができ、ここで、DataTypeがデータ種別を表し、fields[]が指定された1つ又は複数のサービスフィールドを表すことである。
【0088】
ここで、第2種類のクエリ方式は第1種類のクエリ方式に対するもう一回のパッケージ化することであると考えられ、さらにQueryFields(Key,DataType,*)であることを表すことができ、ここでDataTypeはデータ種別を表し、「*」は全てのサービスフィールドをクエリすることを表す。
【0089】
本実施例において、コンピューティング機器はデータクエリ要求を受信する後、データクエリ要求におけるクエリ対象としてのデータのKey、データ種別及びサービスフィールドを抽出する。ここで、データクエリ要求はクエリ対象としてのデータのサービスフィールドを含まない可能性があり、この場合に全てのサービスフィールドの値をクエリする。
【0090】
ステップS302において、クエリ対象としてのデータのデータ種別に基づいて、データ種別情報テーブルをクエリし、クエリ対象としてのデータのデータ種別に対応するテーブルを決定する。
【0091】
データクエリ要求に指定されたデータ種別に基づいて、データ種別情報テーブルをクエリし、指定されたデータ種別に対応するテーブルを決定する。
【0092】
各テーブルに記憶されたデータ量に制限があるため、1つのデータ種別に対応するテーブルは1つ又は複数を有してもよい。
【0093】
ステップS303において、クエリ対象としてのデータのKey及びサービスフィールドに基づいて、クエリ対象としてのデータのデータ種別に対応するテーブルをクエリし、クエリ結果を得る。
【0094】
当該ステップにおいて、データクエリ要求に指定されたデータ種別に対応するテーブルを決定した後に、データクエリ要求に指定されたデータ種別の記憶情報における当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係に基づいて、クエリ対象としてのデータのサービスフィールドに対応するテーブルフィールドを取得する。そしてクエリ対象としてのデータのKey、及びクエリ対象としてのデータのサービスフィールドに対応するテーブルフィールドに基づいて、クエリ対象としてのデータのデータ種別に対応するテーブルをクエリし、クエリ結果を得る。
【0095】
例示的に、クエリ対象としてのデータのKey、クエリ対象としてのデータのサービスフィールドに対応するテーブルフィールド、及びクエリ対象としてのデータのデータ種別に対応するテーブルに基づいて、対応するクエリ語句を生成することができ、クエリ語句を実行することにより、クエリ結果を得る。ここでクエリ語句はSQL言語などであってもよい。
【0096】
ステップS304において、クエリ対象としてのデータのデータ種別のValueのデータフォーマットに基づいて、クエリ結果をValueとしてパッケージ化する。
【0097】
当該ステップは選択可能なステップであり、ステップS303でクエリ結果を得た後、クエリ結果をユーザに直接フィードバックし、又はステップS304によってクエリ結果をValueとしてパッケージ化した後、パッケージ化して得られたValueをユーザにフィードバックしてもよい。
【0098】
クエリ結果を得た後、クエリ対象としてのデータのデータ種別の記憶情報におけるValueのデータフォーマットに基づいて、クエリ結果をValueとしてパッケージ化することができる。
【0099】
例示的に、クエリ対象としてのデータのデータ種別の記憶情報におけるValueのデータフォーマットはJSONであると、クエリ結果をJSON文字列としてパッケージ化する。
【0100】
例示的に、クエリ対象としてのデータのデータ種別の記憶情報におけるValueのデータフォーマットはデリミタに応じて分類されると、デリミタによりクエリ結果をフォーマットされた文字列に組み立てる。
【0101】
本発明の実施例はリレーショナルデータベースにデータ種別情報テーブルを予め記憶し、データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含み、それによりリレーショナルデータベースにおけるテーブルとブロックチェーンにおけるサービスデータとのマッピングを実現し、リレーショナルデータベースに基づいてブロックチェーンデータを記憶することを実現することができ、ブロックチェーンシステムに応答するデータクエリ要求により、クエリ対象としてのデータのKey、データ種別及びサービスフィールドを取得し、クエリ対象としてのデータのデータ種別に基づいて、データ種別情報テーブルをクエリし、クエリ対象としてのデータのデータ種別に対応するテーブルを決定し、クエリ対象としてのデータのKey及びサービスフィールドに基づいて、クエリ対象としてのデータのデータ種別に対応するテーブルをクエリし、クエリ結果を得、リレーショナルデータベースに基づくデータクエリを実現し、クエリ効率を向上させる。
【0102】
実施例4
図4は本発明の実施例4に係るブロックチェーンデータ処理の方法のフローチャートである。上記実施例1~3のいずれかの実施例に基づいて、本実施例において、クエリ語句を既知する場合に、ブロックチェーンデータクエリのフローを例示的に説明する。
図4に示すように、当該方法の具体的なステップは以下のとおりである。
【0103】
ステップS401において、ブロックチェーンシステムのデータクエリ要求に応答し、クエリ語句を取得する。
【0104】
本実施例には、クエリ語句によってリレーショナルデータベースにおけるブロックチェーンデータをクエリすることがサポートされる。
【0105】
本実施例において、コンピューティング機器はデータクエリ要求を受信した後、データクエリ要求におけるクエリ語句を抽出する。ここでクエリ語句はSQL語句などであってもよい。
【0106】
ステップS402において、クエリ語句を分析し、クエリ対象としてのデータのデータ種別及びサービスフィールドを決定する。
【0107】
クエリ語句を分析することにより、クエリ語句におけるテーブル名を取得し、クエリ対象としてのデータのデータ種別を取得する。クエリ語句におけるクエリフィールドを取得し、クエリ対象としてのサービスフィールドを取得する。
【0108】
ステップS403において、クエリ対象としてのデータのデータ種別の記憶情報に基づいて、クエリ語句におけるデータ種別を対応するテーブル名称に置き換え、クエリ語句におけるサービスフィールドを対応するテーブルフィールドに置き換え、新しいクエリ語句を生成する。
【0109】
クエリ対象としてのデータのデータ種別とクエリ対象としてのサービスフィールドを決定した後、コンピューティング機器はデータ種別情報テーブルをクエリすることによって、クエリ対象としてのデータのデータ種別の記憶情報を決定する。記憶情報における当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係に基づいて、クエリ対象としてのデータのデータ種別に対応するテーブル、及びクエリ対象としてのサービスフィールドに対応するテーブルフィールドを決定する。クエリ語句におけるデータ種別を対応するテーブル名称に置き換え、クエリ語句におけるクエリ対象としてのサービスフィールドを対応するテーブルフィールドに置き換え、新しいクエリ語句を生成する。
【0110】
例示的に、クエリ対象としてのデータのデータ種別に対応するテーブルが複数あるときに、各テーブルに対して、クエリ語句におけるデータ種別を当該テーブルのテーブル名称に置き換え、クエリ語句におけるクエリ対象としてのサービスフィールドを対応するテーブルフィールドに置き換え、新しいクエリ語句を生成する。このようにして、複数の新しいクエリ語句を得ることができる。
【0111】
例示的に、クエリ対象としてのデータのデータ種別に対応するテーブルが複数あるときに、新しい連携クエリ語句を生成してもよい。
【0112】
ステップS404において、新しいクエリ語句を実行し、クエリ結果を得る。
【0113】
新しいクエリ語句が複数あるときに、それぞれ各新しいクエリ語句を実行し、各新しいクエリ語句に対応するクエリ結果を得、その後に各新しいクエリ語句に対応するクエリ結果をまとめて最終的なクエリ結果を得てもよい。
【0114】
ステップS405において、クエリ対象としてのデータのデータ種別のValueのデータフォーマットに基づいて、クエリ結果をKey-Valueデータとしてパッケージ化する。
【0115】
当該ステップは選択可能なステップであり、ステップS404でクエリ結果を得た後、クエリ結果をユーザに直接フィードバックし、又はステップS405によってクエリ結果をKey-Valueデータとしてパッケージ化した後、パッケージ化して得られたKey-Valueデータをユーザにフィードバックしてもよい。
【0116】
クエリ結果を得た後、クエリ対象としてのデータのデータ種別の記憶情報におけるValueのデータフォーマットに基づいて、クエリ結果をKey-Valueデータとしてパッケージ化することができる。
【0117】
例示的に、クエリ対象としてのデータのデータ種別の記憶情報におけるValueのデータフォーマットはJSONであると、クエリ結果におけるValueデータをJSON文字列としてパッケージ化する。
【0118】
例示的に、クエリ対象としてのデータのデータ種別の記憶情報におけるValueのデータフォーマットはデリミタに応じて分類されると、デリミタによりクエリ結果におけるValueデータをフォーマットされた文字列に組み立てる。
【0119】
本発明の実施例はリレーショナルデータベースにデータ種別情報テーブルを予め記憶し、データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含み、それによりリレーショナルデータベースにおけるテーブルとブロックチェーンにおけるサービスデータとのマッピングを実現し、リレーショナルデータベースに基づいてブロックチェーンデータを記憶することを実現することができ、ブロックチェーンシステムに応答するデータクエリ要求により、クエリ語句を取得し、クエリ語句を分析し、クエリ対象としてのデータのデータ種別及びサービスフィールドを決定し、クエリ対象としてのデータのデータ種別の記憶情報に基づいて、クエリ語句におけるデータ種別を対応するテーブル名称に置き換え、クエリ語句におけるサービスフィールドを対応するテーブルフィールドに置き換え、新しいクエリ語句を生成し、新しいクエリ語句を実行し、クエリ結果を得、リレーショナルデータベースに基づくデータクエリを実現し、クエリ効率を向上させる。
【0120】
実施例5
図5は本発明の実施例5に係るブロックチェーンデータ処理の装置の模式的な構成図である。本発明の実施例に係るブロックチェーンデータ処理の装置はブロックチェーンデータ処理の方法実施例に係る処理フローを実行することができる。
図5に示すように、当該ブロックチェーンデータ処理の装置50は、データ分析モジュール501及びデータ書込モジュール502を含む。
【0121】
具体的には、データ分析モジュール501はKey-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、Valueのデータ種別を決定するために用いられる。
【0122】
データ書込モジュール502はデータ種別情報テーブルに基づいて、Valueのデータ種別に対応するターゲットテーブルを決定するために用いられ、ここでデータ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含む。
【0123】
データ書込モジュール502はさらに、データ種別情報テーブルに基づいて、Key-Valueデータをターゲットテーブルに書き込むために用いられる。
【0124】
本発明の実施例に係る装置は具体的に上記実施例1に係る方法実施例を実行するために用いられ、具体的な機能はここで説明を省略する。
【0125】
本発明の実施例はリレーショナルデータベースにデータ種別情報テーブルを予め記憶し、データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含み、それによりリレーショナルデータベースにおけるテーブルとブロックチェーンにおけるサービスデータとのマッピングを実現し、Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、Valueのデータ種別を決定し、データ種別情報テーブルに基づいて、Valueのデータ種別に対応するターゲットテーブルを決定し、データ種別情報テーブルに基づいて、Key-Valueデータをターゲットテーブルに書き込み、リレーショナルデータベースに基づいてブロックチェーンデータを記憶することを実現でき、アプリケーション層サービスシステムがリレーショナルデータベースに基づいたデータクエリをサポートし、クエリ効率を向上させる。
【0126】
実施例6
図6は本発明の実施例6に係るブロックチェーンデータ処理の装置の模式的な構成図である。上記実施例5に基づいて、本実施例において、Valueはデータ種別、データフォーマット、フィールド数及びValue値を含む。データ書込モジュールはさらに、
データ種別情報テーブルにValueのデータ種別が存在するか否かを判定することと、データ種別情報テーブルにValueのデータ種別が存在する場合、データ種別情報テーブルからValueのデータ種別の記憶情報を取得することと、Valueのデータ種別の記憶情報に基づいて、Valueにおけるデータフォーマット及びフィールド数が記憶情報におけるデータフォーマット及びフィールド数と一致するか否かを判定することと、Valueにおけるデータフォーマット及びフィールド数が記憶情報におけるデータフォーマット及びフィールド数といずれも一致すれば、データ種別情報テーブルからValueのデータ種別に対応するターゲットテーブルを取得することと、のために用いられる。
【0127】
選択的に、データ書込モジュールはさらに、
データ種別情報テーブルにValueのデータ種別が存在しないと、記憶情報におけるデータフォーマット及びフィールド数とマッチングする新しいテーブルを取得し、ターゲットテーブルとすることと、新しいテーブルに基づいてデータ種別情報テーブルにおけるValueのデータ種別の記憶情報を更新することとのために用いられる。
【0128】
選択的に、データ書込モジュールはさらに、
Valueのデータフォーマットが記憶情報におけるデータフォーマットと一致しないと、又はValueのフィールド数が記憶情報におけるフィールド数と一致しないと、記憶情報におけるデータフォーマット及びフィールド数とマッチングする新しいテーブルを取得し、ターゲットテーブルとすることと、新しいテーブルに基づいてデータ種別情報テーブルにおけるValueのデータ種別の記憶情報を更新することと、のために用いられる。
【0129】
選択的に、データ書込モジュールはさらに、
ターゲットテーブルの現在の状態を決定することであって、ターゲットテーブルの状態は書込可能状態及び書込不可能状態を含むことと、ターゲットテーブルが書込不可能状態であると、記憶情報におけるフィールド数とマッチングする新しいテーブルを取得し、ターゲットテーブルとすることと、新しいテーブルに基づいてデータ種別情報テーブルにおけるValueのデータ種別の記憶情報を更新することと、ターゲットテーブルが書込可能状態であると、データ種別情報テーブルに基づいてKey-Valueデータをターゲットテーブルに書き込むステップを実行することと、のために用いられる。
【0130】
選択的に、データ書込モジュールはさらに、
ターゲットテーブルの行数が予め設定された閾値に達するか否かを検出することと、ターゲットテーブルの行数が予め設定された閾値に達すると、当該ターゲットテーブルの状態を書込不可能状態に更新することと、のために用いられる。
【0131】
選択的に、データ書込モジュールはさらに、
Key-ValueデータのKeyをターゲットテーブルの指定フィールドに書き込むことと、Valueのデータ種別の記憶情報に基づいて、Valueのサービスフィールドの値をターゲットテーブルにおける対応するテーブルフィールドに書き込むことと、のために用いられる。
【0132】
選択的に、
図6に示すように、ブロックチェーンデータ処理の装置50は、第1のデータクエリモジュール503をさらに含んでもよい。
【0133】
第1のデータクエリモジュール503は、
ブロックチェーンシステムのデータクエリ要求に応答して、クエリ対象としてのデータのKey、データ種別及びサービスフィールドを取得することと、クエリ対象としてのデータのデータ種別に基づいて、データ種別情報テーブルをクエリし、クエリ対象としてのデータのデータ種別に対応するテーブルを決定することと、クエリ対象としてのデータのKey及びサービスフィールドに基づいて、クエリ対象としてのデータのデータ種別に対応するテーブルをクエリし、クエリ結果を得ることと、のために用いられる。
【0134】
選択的に、第1のデータクエリモジュール503はさらに、
クエリ対象としてのデータのデータ種別のValueのデータフォーマットに基づいて、クエリ結果をValueとしてパッケージ化するために用いられる。
【0135】
選択的に、
図6に示すように、ブロックチェーンデータ処理の装置50はさらに、第2のデータクエリモジュール504を含んでもよい。
【0136】
第2のデータクエリモジュール504は、
ブロックチェーンシステムのデータクエリ要求に応答して、クエリ語句を取得することと、クエリ語句を分析し、クエリ対象としてのデータのデータ種別及びサービスフィールドを決定することと、クエリ対象としてのデータのデータ種別の記憶情報に基づいて、クエリ語句におけるデータ種別を対応するテーブル名称に置き換え、クエリ語句におけるサービスフィールドを対応するテーブルフィールドに置き換え、新しいクエリ語句を生成することと、新しいクエリ語句を実行し、クエリ結果を得ることと、のために用いられる。
【0137】
選択的に、第2のデータクエリモジュール504はさらに、
クエリ対象としてのデータのデータ種別のValueのデータフォーマットに基づいて、クエリ結果をKey-Valueデータとしてパッケージ化するために用いられる。
【0138】
本発明の実施例に係る装置は具体的に上記実施例2~4のいずれかの実施例に係る方法実施例を実行するために用いられ、具体的な機能はここで説明を省略する。
【0139】
本発明の実施例は、リレーショナルデータベースにデータ種別情報テーブルを予め記憶し、データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含む。それによりリレーショナルデータベースにおけるテーブルとブロックチェーンにおけるサービスデータとのマッピングを実現し、それによりリレーショナルデータベースにおけるテーブルの数を一定の範囲内にするように制御し、全体的にデータベースの性能を安定するように維持し、テーブルデータが多すぎることによりデータベースの性能が低下することを防止する。Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、Valueのデータ種別を決定する。データ種別情報テーブルに基づいて、Valueのデータ種別に対応するターゲットテーブルを決定する。データ種別情報テーブルに基づいて、Key-Valueデータをターゲットテーブルに書き込み、リレーショナルデータベースに基づいてブロックチェーンデータを記憶することを実現でき、アプリケーション層サービスシステムがリレーショナルデータベースに基づいたデータクエリをサポートし、クエリ効率を向上させる。さらに、テーブルにおけるデータ量の大きさに基づいてテーブルが書き込み可能な状態であるか否かを設定することにより、あるテーブルの行数が予め設定された閾値に達すると、当該テーブルの状態を書き込み不可能な状態に更新する。ターゲットテーブルが書き込み不可能な状態であると、記憶情報におけるフィールドの数とマッチングする新しいテーブルをターゲットテーブルとして取得し、単一のテーブルが大きすぎることを防止することができ、さらにクエリ効率を向上させる。
【0140】
実施例7
図7は本発明の実施例7に係るコンピューティング機器の模式的な構成図である。
図7に示すように、当該コンピューティング機器70は、プロセッサ701、メモリ702、及びメモリ702に記憶されてプロセッサ701で実行できるコンピュータプログラムを含む。
【0141】
ここで、プロセッサ701はコンピュータプログラムを実行する場合に上記いずれかの方法実施例に係るブロックチェーンデータ処理の方法を実現する。
【0142】
本発明の実施例は、リレーショナルデータベースにデータ種別情報テーブルを予め記憶し、データ種別情報テーブルは全てのデータ種別の記憶情報を記憶するために用いられ、データ種別の記憶情報は、当該データ種別に対応するテーブル、当該データ種別のValueのサービスフィールドと対応するテーブルにおけるテーブルフィールドとのマッピング関係、及び当該データ種別のValueのデータフォーマットを含む。それによりリレーショナルデータベースにおけるテーブルとブロックチェーンにおけるサービスデータとのマッピングを実現する。Key-Valueデータを記憶する必要があるときに、Key-ValueデータにおけるValueを分析し、Valueのデータ種別を決定する。データ種別情報テーブルに基づいて、Valueのデータ種別に対応するターゲットテーブルを決定する。データ種別情報テーブルに基づいて、Key-Valueデータをターゲットテーブルに書き込み、リレーショナルデータベースに基づいてブロックチェーンデータを記憶することを実現でき、アプリケーション層サービスシステムがリレーショナルデータベースに基づいたデータクエリをサポートし、クエリ効率を向上させる。
【0143】
また、本発明の実施例はコンピュータ可読記憶媒体をさらに提供し、コンピュータ可読記憶媒体にコンピュータプログラムが記憶され、コンピュータプログラムがプロセッサによって実行されるときに上記いずれかの方法実施例に係るブロックチェーンデータ処理の方法を実現する。
【0144】
また、本発明の実施例は命令を動作するチップをさらに提供し、前記チップはメモリ、プロセッサを含み、前記メモリにコード及びデータが記憶され、前記メモリは前記プロセッサに結合され、前記プロセッサは前記メモリにおけるコードを実行することにより前記チップが上記ブロックチェーンデータ処理の方法のステップを実行するために用いられる。
【0145】
また、本発明の実施例は命令を含むプログラム製品をさらに提供し、前記プログラム製品がコンピュータで実行されるときに、前記コンピュータに上記ブロックチェーンデータ処理の方法のステップを実行させる。
【0146】
また、本発明の実施例はコンピュータプログラムをさらに提供し、前記コンピュータプログラムがプロセッサにより実行されるときに、上記ブロックチェーンデータ処理の方法のステップを実行するために用いられる。
【0147】
本発明に係るいくつかの実施例において、開示された装置及び方法は、他の方式で実現されることができることを理解すべきである。例えば、以上に説明された装置実施例は模式的なものだけであり、例えば、前記ユニットの分割は、ロジック機能の分割のみであり、実際に実現されるときに別の分割方式を有してもよく、例えば複数のユニット又はアセンブリを結合するか又は他のシステムに集積することができ、又はいくつかの特徴を無視するか、又は実行しない。また、表示されるか又は議論される相互間の結合又は直接結合又は通信接続はいくつかのインタフェース、装置又はユニットによる間接的な結合又は通信接続であってもよく、電気的、機械的又は他の形式であってもよい。
【0148】
前記分離パーツとして説明されたユニットは物理的に分離されてもよく、又は物理的に分離されなくてもよく、ユニットとして表示された部材は物理ユニットであってもよく、物理ユニットでなくてもよく、つまり1つの場所に位置してもよく、又は複数のネットワークユニットに分布してもよい。実際の必要に応じてそのうちの一部又は全部のユニットを選択して本実施例の態様の目的を達成することができる。
【0149】
また、本発明の各実施例における各機能ユニットは1つの処理ユニットに集積されてもよく、各ユニットが単独で物理的に存在してもよく、2つ又は2つ以上のユニットが1つのユニットに集積されてもよい。上記集積されたユニットはハードウェアの形式で実現されてもよく、ハードウェアとソフトウェア機能ユニットの形式で実現されてもよい。
【0150】
上記ソフトウェア機能ユニットの形式で実現された集積されたユニットは、1つのコンピュータ可読記憶媒体に記憶されてもよい。上記ソフトウェア機能ユニットは1つの記憶媒体に記憶され、一台のコンピュータ機器(パーソナルコンピュータ、サーバ、又はネットワーク装置などであってもよい)又はプロセッサ(processor)が本発明の各実施例に記載の方法の一部のステップを実行するために用いられる複数の命令を含む。前述の記憶媒体は、Uディスク、リムーバブルハードディスク、読み出し専用メモリ(Read-Only Memory,ROM)、ランダムアクセスメモリ(Random Access Memory,RAM)、磁気ディスク又は光ディスクなどの様々なプログラムコードを記憶することができる媒体を含む。
【0151】
当業者であれば、説明の便宜上簡潔にするために、上記各機能モジュールの分割だけを例に挙げて説明し、実際の応用において、必要に応じて上記機能の割り当てを異なる機能モジュールにより完成してもよく、つまり装置の内部構造を異なる機能モジュールに分割することにより、以上に説明された全て又は一部の機能を完成する。上記説明された装置の具体的な動作過程は、前述の方法実施例における対応するプロセスを参照することができ、ここで説明を省略する。
【0152】
当業者であれば明細書考慮し、及びここで開示された発明を実践した後、本発明の他の実施形態を容易に想到できる。本発明は本発明の任意の変形、用途又は適応的な変化をカバーすることを目的とし、これらの変形、用途又は適応的な変化は本発明の一般的な原理に従って本発明に開示されない本技術分野における公知的な常識又は慣用されている技術手段を含む。明細書及び実施例は例示的なものと見なされ、本発明の真の範囲及び精神は以下の特許請求の範囲により指摘される。
【0153】
理解すべきこととして、本発明は上記に記載されかつ図面に示された正確な構造に限定されず、かつその範囲から逸脱することなく様々な修正及び変更を行うことができる。本発明の範囲は添付の特許請求の範囲によってのみ制限される。
【0154】
本願は2019年09月17日に中国特許局に出願され、出願番号は201910878095.Xであり、出願名称は「ブロックチェーンデータ処理の方法、装置、機器及び可読記憶媒体」の中国特許出願の優先権を主張し、その全ての内容は援用により本願に組み込まれる。
【国際調査報告】