JP7044447B2 - ブロックチェーン内のデータベース・ハッシュコードの遅延更新 - Google Patents

ブロックチェーン内のデータベース・ハッシュコードの遅延更新 Download PDF

Info

Publication number
JP7044447B2
JP7044447B2 JP2020506334A JP2020506334A JP7044447B2 JP 7044447 B2 JP7044447 B2 JP 7044447B2 JP 2020506334 A JP2020506334 A JP 2020506334A JP 2020506334 A JP2020506334 A JP 2020506334A JP 7044447 B2 JP7044447 B2 JP 7044447B2
Authority
JP
Japan
Prior art keywords
database
blockchain
update
data item
update query
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.)
Active
Application number
JP2020506334A
Other languages
English (en)
Other versions
JP2020531949A (ja
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020531949A publication Critical patent/JP2020531949A/ja
Application granted granted Critical
Publication of JP7044447B2 publication Critical patent/JP7044447B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • G06F16/2386Bulk updating 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/23Updating
    • 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/235Update request formulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明はブロックチェーンに関し、より詳細には、ブロックチェーン内のデータベースの更新に関する。
近年、ブロックチェーンに関して、さまざまな更新技術が開示されている。ブロックチェーン技術では、1つのブロックチェーンがネットワーク上で形成されるように、複数のブロックがチェーンのように互いに結合される。1つのブロックは、複数のトランザクション、および直前のブロック内のトランザクションのハッシュ値を含むことがある。トランザクションが、データベースを更新するための不可分の一連のプロセスを指すことに、注意する。さらに、ブロックに含まれるトランザクションは、正しい/正確なトランザクションであると見なされる。
データベースを更新するためのブロック・システムは、複数のノードを含むことがある。各ノードは、トランザクションを逐次的に処理することがある。特定のトランザクションにおいて(例えば、特定の会社の在庫を分割するために)多くのデータ項目が変更される場合、特定のトランザクション内のデータ項目の変更(更新)がすべてデータベースに適用されるまで、その後のトランザクションのプロセスが開始されないことがある。言い換えると、トランザクションが多数のデータ項目を変更する場合、データベースの状態の再計算の費用が高くなる。
本発明の実施形態によれば、ブロックをブロックチェーンに追加するようにブロックチェーン・システム内のデータベースを更新するためのコンピュータ実装方法が提供される。この方法は、データベースを更新するための更新クエリを受信したときに、更新クエリをデータ項目としてデータベースに追加することを含む。この方法は、データベースに格納されたデータ項目に基づいてハッシュ値を計算することを含む。格納されたデータ項目は、更新クエリの追加されたデータ項目を含む。この方法は、ハッシュ値を使用して新しいブロックをブロックチェーンに追加することを含む。この方法は、データベースを更新することに関連する待ち時間を短縮できる。
上記の方法は、データベースをコピーすることによって第2のデータベースを生成することと、更新クエリの追加されたデータ項目に従って第2のデータベースを更新することと、更新された第2のデータベースに格納されたデータ項目に基づいて第2のハッシュ値を計算することと、第2のハッシュ値を使用して新しいブロックをブロックチェーンに追加することとをさらに含んでよい。この方法は、第2のデータベースを使用して、データベースを更新することに関連する待ち時間を短縮できる。
実施形態によれば、ブロックチェーン内のデータベースを更新するためのコンピュータ実装方法が提供される。ブロックチェーンは、ブロックチェーン・システムに含まれている複数のノード間で共有されてよい。それらのノードは、ネットワークを介して互いに接続されてよい。それらのノードは、データベースの更新に従って、ブロックチェーンに追加されるブロックを生成してよい。各ノードは、データベースを更新するための更新クエリを受信したときに、通常の更新を使用して更新クエリをデータベースに適用するか、または遅延更新を使用して更新クエリをデータベースに適用するかを決定する。各ノードが、通常の更新を使用して更新クエリをデータベースに適用することを決定した場合、更新クエリに従ってデータベースが更新されてよく、更新されたデータベースに基づいて通常のハッシュ値が計算されてよく、通常のハッシュ値を使用して新しいブロックがブロックチェーンに追加されてよい。各ノードが、遅延更新を使用して更新クエリをデータベースに適用することを決定した場合、データベースをコピーすることによって、第2のデータベースが生成されてよい。その結果、更新クエリがデータベースのデータ項目としてデータベースに追加されてよく、データ項目として更新クエリが追加されるデータベースに基づいて遅延ハッシュ値(deferred hash value)が計算されてよく、遅延ハッシュ値を使用して新しいブロックがブロックチェーンに追加されてよく、データベースに追加された更新クエリのデータ項目に従って、第2のデータベースが更新されてよい。既定の数のブロックがブロックチェーンに追加されるときに、データベースが第2のデータベースに置き換えられてよい。置き換えられるデータベースに基づいて、置き換えられるハッシュ値が計算されてよく、置き換えられるハッシュ値を使用して新しいブロックがブロックチェーンに追加されてよい。この方法は、データベースを更新することに関連する待ち時間を短縮できる。
上記の方法では、各ノードが第2の更新クエリを受信し、通常の更新を使用して第2の更新クエリをデータベースに適用することを決定した場合、更新クエリに従って第2のデータベースを更新する前に、更新クエリおよび第2の更新クエリをデータベースに適用することによって、データベースが更新されてよい。更新クエリおよび第2の更新クエリを使用して更新されたデータベースに基づいて、更新されたハッシュ値が計算されてよく、更新クエリおよび第2の更新クエリを第2のデータベースに適用することによって、第2のデータベースが更新されてよい。この方法は、第2の更新クエリに関してデータベースを更新することに関連する待ち時間を短縮できる。
実施形態では、ブロックをブロックチェーンに追加するようにブロックチェーン・システム内のデータベースを更新するためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、プログラム命令が具現化されているコンピュータ可読記憶媒体を含む。プログラム命令は、コンピュータによって実行可能であり、コンピュータに、データベースを更新するための更新クエリの受信時に更新クエリをデータ項目としてデータベースに追加することを含む方法を実行させてよい。この方法は、データベースに格納されたデータ項目に基づいてハッシュ値を計算することを含む。格納されたデータ項目は、更新クエリの追加されたデータ項目を含む。この方法は、ハッシュ値を使用して新しいブロックをブロックチェーンに追加することを含む。この方法は、データベースを更新することに関連する待ち時間を短縮できる。
上記の方法は、データベースをコピーすることによって第2のデータベースを生成することと、更新クエリの追加されたデータ項目に従って第2のデータベースを更新することと、更新された第2のデータベースに格納されたデータ項目に基づいて第2のハッシュ値を計算することと、第2のハッシュ値を使用して新しいブロックをブロックチェーンに追加することとをさらに含んでよい。この方法は、第2のデータベースを使用して、データベースを更新することに関連する待ち時間を短縮できる。
実施形態によれば、ブロックチェーン・システムがブロックをブロックチェーンに追加するためのデバイスが提供される。このデバイスは、ブロックをブロックチェーンに追加するように更新されるデータベースを含む。このデバイスは、データベースを更新するための更新クエリを受信したときに、更新クエリをデータ項目としてデータベースに追加するための、更新クエリ追加部を含む。このデバイスは、データベースに格納されたデータ項目に基づいてハッシュ値を計算するための、計算部を含む。格納されたデータ項目は、更新クエリの追加されたデータ項目を含む。このデバイスは、ハッシュ値を使用して新しいブロックをブロックチェーンに追加するための、ブロック追加部を含む。このデバイスは、データベースを更新することに関連する待ち時間を短縮できる。
上記のデバイスは、データベースをコピーすることによって第2のデータベースを生成するための生成部と、更新クエリの追加されたデータ項目に従って第2のデータベースを更新するための更新部とを、さらに含んでよい。このデバイスでは、計算部は、更新された第2のデータベースに格納されたデータ項目に基づいて第2のハッシュ値を計算してよく、ブロック追加部は、第2のハッシュ値を使用して新しいブロックをブロックチェーンに追加してよい。このデバイスは、第2のデータベースを使用して、データベースを更新することに関連する待ち時間を短縮できる。
ここで、添付の図面を単に例として参照し、本発明の実施形態について説明する。
実施形態によるブロックチェーン・システムのブロック図である。 実施形態によるブロックチェーンを更新するためのプロセスを示す図である。 実施形態によるブロックチェーンを更新するためのプロセスを示す図である。 実施形態によるブロックチェーンを更新するためのプロセスを示す図である。 実施形態によるブロックチェーンを更新するためのプロセスを示す図である。 実施形態によるブロックチェーンを更新するためのプロセスを示す図である。 実施形態によるブロックチェーンを更新するためのプロセスを示す図である。 実施形態によるマスター・テーブルを更新するためのプロセスのフローチャートである。 実施形態によるバックグラウンド・テーブルを更新するためのプロセスのフローチャートである。 実施形態によるデータ項目の値をバックグラウンド・テーブルに追加するためのプロセスのフローチャートである。 実施形態によるマスター・テーブルおよびバックグラウンド・テーブル内のデータ項目の値を更新するためのプロセスのフローチャートである。 実施形態による、フィルタを適用し、マスター・テーブルをバックグラウンド・テーブルに置き換えるためのプロセスのフローチャートである。 実施形態による重い更新を適用するプロセスのフローチャートである。 実施形態によるノードのハードウェア構成の例を示す図である。
以下では、添付の図面を参照して本開示の実施形態について詳細に説明する。
本開示が以下の実施形態に限定されるよう意図されておらず、本開示が、本開示の範囲内でさまざまな変更を伴って実装されてよいということに注意する。さらに、本明細書において使用される図面は、例示を目的としており、実際の寸法を示していないことがある。
図1は、実施形態によるブロックチェーン・システム100のブロック図を示している。ブロックチェーン・システム100は、ネットワーク105を介して互いに接続された複数のノード(例えば、デバイス)101を含んでよい。各ノード101は、メイン処理部111、バックグラウンド処理部113、ハッシュ・コード・カリキュレータ115、およびストレージ117を含んでよい。
メイン処理部111は、本明細書に記載されているように、データベースを更新し、ブロックをブロックチェーンに追加するためのクエリ(例えば、更新クエリ)を受信してよい。
バックグラウンド処理部113は、フィルタ253(図2を参照)に従って、バックグラウンド・テーブル261に対するプロセス(例えば、図2を参照して説明されるプロセス)を実行する。バックグラウンド処理部113は、請求される更新部の例である。
ハッシュ・コード・カリキュレータ115は、ブロックチェーン内のブロックに含まれるトランザクションのハッシュ・コード(例えば、ハッシュ値)を計算して設定する。ハッシュ・コード・カリキュレータ115は、請求される計算部の例である。
ストレージ117は、ブロックチェーンに関連付けられたデータを格納してよい。
実施形態例のブロックチェーン・システム100では、各ノード101が、それ自身のデータベース(例えば、後で説明されるマスター・テーブル251)をそれ自身のストレージ117に含んでよく、他のノードと同じ順序でトランザクションを実行してよい。これによって、ノード101が各データベースを同じ状態で維持できるようにする。さらに、各ノード101は、ハッシュ・カリキュレータ115を介して、各トランザクションの実行用のデータベースの状態に基づいてハッシュ・コードを計算してよい。ノード101内の異なるハッシュ・コードを見つけることによって、ノード101のビザンチン故障が検出されることがある。
実施形態例では、ハッシュ・コードの計算のオーバーヘッドを減らすために、ストレージ117がデータ項目を、ツリー・ノード(例えば、ルート・ノードおよび複数の葉ノード、ならびにそれらを接続するエッジ)を含んでいるツリー構造に格納する。ハッシュ・コード・カリキュレータ115は、ツリー構造内のハッシュ・コードを計算してよい。より詳細には、データ項目が変更された場合、変更された項目(例えば、葉ノード)からルート・ノードまでのノードのみが計算/再計算される。
遅延更新では、データ項目がデータベースから読み取られるときに、そのデータ項目に適用されていない更新が適用される。つまり、更新クエリが怠惰に評価されるということである。しかし、ブロックチェーン技術では、トランザクションが終了したときに、更新されたデータ項目が読み取られ、データベースのハッシュ・コードを計算する。すなわち、すべての更新クエリをデータ項目に直ちに適用する必要がある。
実施形態例では、各ノード101が、遅延更新およびバックグラウンド更新(例えば、並列化された更新)の両方を実行してよい。言い換えると、各ノード101は、変更をデータ項目に適用し、ハッシュ・コードをバックグラウンドで再計算してよい。すべてのノード101が、ブロックチェーン内の特定のブロックから使用できる新しい(例えば、変更された)データ項目および新しいハッシュ・コードを作成する(後述される)。
図2~7は、実施形態例に従うブロックチェーン201の更新プロセスの例である。図1および2~7を参照して、ブロックチェーン201の更新プロセスの例が説明される。
実施形態例では、メイン処理部111が、受信されたクエリに基づいて、マスター・テーブル251を更新するプロセスを実行する。例えば、クエリは、マスター・テーブル251内のデータ項目を変更する。マスター・テーブル251は、ストレージ117に格納されたデータベースを表すか、またはストレージに格納されたデータベースに含まれてよい。言い換えると、マスター・テーブル251は、メイン処理部111によって処理されるデータであってよい。メイン処理部111は、受信されたクエリを解析する。すなわち、メイン処理部111は、受信されたクエリの特性を評価し、ブロック211をブロックチェーン201に追加する。マスター・テーブル251は、請求されるデータベースの例である。
評価(例えば、解析)の結果に基づいて、メイン処理部111は、対象のクエリが重い更新を要求するかどうかを判定してよい。重い更新とは、相対的に重い計算を必要とする更新(例えば、計算/再計算)のことを指す。例えば、重い更新は、マスター・テーブル251内の複数のデータ項目の更新を必要とする。重い更新を要求しないクエリは、請求される別の更新クエリの例である。
メイン処理部111は、解析の評価に基づいてフィルタ253を生成してよい。より詳細には、メイン処理部111は、対象のクエリが重い更新を要求する場合にフィルタ253を生成してよい。フィルタ253は、データ項目(例えば、マスター・テーブル251に含まれる値)に対する計算を定義してよい。さらに、メイン処理部111およびバックグラウンド処理部113は、フィルタ253に従って計算を実行してよい。メイン処理部111が、重い更新を要求する複数のクエリを受信した場合、メイン処理部111が複数のフィルタ253を生成してよいということに注意する。
メイン処理部111は、解析の評価に基づいてバックグラウンド・テーブル261を生成してもよい。バックグラウンド・テーブル261は、マスター・テーブル251のコピーであってよい。言い換えると、バックグラウンド・テーブル261は、バックグラウンド処理部113によって処理されるデータであってよい。バックグラウンド・テーブル261は、第2のデータベースの例である。
メイン処理部111は、解析の結果に基づいて、数値Nも決定する。数値Nは、新しいブロックをブロックチェーン201に追加するためのタイミング変数を表す。数値Nがクエリの1つまたは複数の特性に基づいて決定論的に指定されるということに注意する。
メイン処理部111は、請求されるクエリ追加部、ブロック追加部、生成部、置換部、決定部、または更新部、あるいはその組み合わせの例である。
前述したように、各ノード101は、変更をデータ項目に適用し、ハッシュ・コードをバックグラウンドで計算/再計算してよい。より詳細には、トランザクション(例えば、クエリ)が重い更新を要求する場合、メイン処理部111が、データ項目を直ちに更新する代わりに、フィルタ253をデータ項目としてマスター・テーブル251に追加する。ハッシュ・コード・カリキュレータ115は、フィルタ253を含むマスター・テーブル251に基づいてハッシュ・コードを計算/再計算し、その後、マスター・テーブル251のコピーを作成して、バックグラウンド・テーブル261を作成する。コピーオンライト手法を使用した論理的コピーが適用されてよい。バックグラウンド・テーブル261がフィルタ253を含まなくてよいということに注意する。
トランザクションのバックグラウンド処理では、ノード101が、異なるスレッドを使用して重い更新をバックグラウンド・テーブル261に適用してよい。
ブロックチェーン201内の特定のブロックで、マスター・テーブル251がバックグラウンド・テーブル261に置き換えられてよい。すべてのノード101が、ブロックチェーン201の同じ位置でマスター・テーブル251を置き換えるということに注意する。特定のブロックは、重い更新のブロックからNブロック離れている第Nのブロックであってよい。このプロセスは、請求される遅延更新の例である。
すべてのノード101が中央処理装置(CPU)91(図14の説明において説明されている)を含んでいるということに注意する。実施形態例は、各ノード101のCPU使用率が低く、重い更新がめったに発生しないということを仮定する。
以下では、ブロックチェーン201の更新プロセスについて詳細に説明する。この例は、マスター・テーブル251が、各オーナーが所有している局所的な在庫量を考慮して、さまざまなフランチャイズ・オーナーを含む複数の異なる会社にサービスを提供する物流倉庫または製造施設を管理するために使用されてよいということを仮定する。ただし、マスター・テーブル251は、任意の種類のデータ項目を表してよく、この例は、本開示の範囲を在庫管理に限定するよう意図されておらず、本開示の範囲を他のどの方法に限定することも意図されていない。この例は、トランザクション1(Tx1)、トランザクション2(Tx2)、およびトランザクション3(Tx3)に従って、この順序でマスター・テーブル251が連続的に更新されることをさらに仮定する。トランザクション2は重い更新であると仮定され、一方、トランザクション1、3は重い更新でないと仮定される。
図2に示されているように、ブロックチェーン201はブロック211および212を含んでよい。ブロック211および212で、いわゆるキー・バリュー型データストア(KVS)を使用してデータが格納されてよい。実施形態では、マスター・テーブル251は、データ列「id」、「company」、「amount」、および「owner」を含んでよい。さらに、マスター・テーブル251は、id1、id2、id3、およびid4のデータ項目(例えば、行、エントリ)を含んでいる。例えば、「id=1」のデータ項目は、「company=A」、「amount=1000」、および「owner=Sachi」を表している。
マスター・テーブル251は、最初に、トランザクション1(Tx1)(INSERT VALUES (5, C, 100, Kou))に従って更新されてよい。メイン処理部111は、id5のデータ項目をマスター・テーブル251に挿入する(矢印A1を参照)。次に、ハッシュ・コード・カリキュレータ115は、更新されたマスター・テーブル251のハッシュ・コードを計算して、ハッシュ・コードh1を取得する。メイン処理部111は、取得されたハッシュ・コードh1を含んでいるブロック213をブロックチェーン201に追加してよい(A2を参照)。このプロセスは、請求される通常の更新の例である。ハッシュ・コードh1は、請求される追加されないハッシュ・コードまたは通常のハッシュ・コードの例である。
図3に示されているように、トランザクション2(Tx2)(UPDATE amount SET amount*10 WHERE company = ‘A’)に従って、マスター・テーブル251が更新されてよい。メイン処理部111は、この時点では、トランザクション2が重い更新であるため、トランザクション2に従って計算を実行しなくてよい。言い換えると、メイン処理部111は、マスター・テーブル251のデータ項目を直ちに変更しなくてよい。マスター・テーブル251のデータ項目を変更する代わりに、メイン処理部111は、トランザクション2(例えば、受信されたクエリ)の属性に基づいてフィルタ253を生成してよい。次に、ハッシュ・コード・カリキュレータ115は、フィルタ253と共にマスター・テーブル251のハッシュ・コードを計算して、ハッシュ・コードh2を取得してよい。メイン処理部111は、取得されたハッシュ・コードh2を含んでいるブロック214をブロックチェーン201に追加してよい(B1を参照)。ハッシュ・コードh2は、請求される遅延ハッシュ・コード(deferred hash code)の例である。
この実施形態例では、ハッシュ・コード・カリキュレータ115がクエリと共にマスター・テーブル251のハッシュ・コードを計算できるように、重い更新(例えば、受信されたクエリTx2)が、マスター・テーブル251に添付されたデータ項目(例えば、エントリ)として扱われる。
次に、バックグラウンド処理部113は、マスター・テーブル251に従って、バックグラウンド・テーブル261を生成してよい(矢印B2を参照)。この実施形態例では、バックグラウンド・テーブル261は、マスター・テーブル251のスナップショットである。さらに、バックグラウンド・テーブル261は、マスター・テーブル251のデータ列に加えて、「applied」列262を含んでいる。「applied」列262は、フィルタ253が対象のデータ項目に適用されたかどうかを表す。フィルタ253が対象のデータ項目に適用された場合、「applied」列262内の対応するセルに、「1」が配置される。
図4に示されているように、バックグラウンド処理部113は、重い更新をバックグラウンド・テーブル261の各行に適用する(矢印C1、C2を参照)。言い換えると、フィルタ253が、段階的にバックグラウンド・テーブル261に適用される。例えば、バックグラウンド・テーブル261内のid1のデータ項目が、フィルタ253を使用して更新される。「id=1」のデータ項目が「company=A」のデータを表しているため、クエリTx2の命令が「id=1」の行に適用される。「id=1」の行(例えば、データ項目)で、「amount」が「1000」から「10000」に変更されており、この値は、クエリTx2において指定されているように、「1000」に「10」を掛けることによって得られる。さらに、「1」がデータ項目「id=1」の「applied」列262に配置されており、これによって、クエリTx2がこのデータ項目に適用されたことを示す。
図5に示されているように、重い更新がバックグラウンド・テーブル261に適用されている間に、トランザクション3「Tx3: SELECT amount WHERE id = 3 and UPDATE owner SET ‘Take’ where id = 3」が開始してよい。この時点では、フィルタ253がバックグラウンド・テーブル261の「id=3」のデータ項目に適用されていないことに注意する。バックグラウンド処理部113は、フィルタ253およびバックグラウンド・テーブル261内の「id=3」のデータ項目の値(例えば、「amount=200」)を取得して、フィルタ253を「id=3」のデータ項目の値に適用する。この例では、バックグラウンド処理部113は、フィルタ253を「id=3」に適用して、結果として「amount=2000」を取得する。
図6に示されているように、メイン処理部111は、バックグラウンド処理部113によって得られた結果に従ってマスター・テーブル251を更新し、トランザクション3に従ってownerを「Yoshi」から「Take」に変更してよい(矢印E1を参照)。同様に、バックグラウンド処理部113は、この結果に従ってバックグラウンド・テーブル261を更新し、ownerを変更してよい(矢印E2を参照)。言い換えると、フィルタ253に従って、更新がマスター・テーブル251およびバックグラウンド・テーブル261の両方に適用される。次に、ハッシュ・コード・カリキュレータ115は、更新されたマスター・テーブル251のハッシュ・コードを計算して、ハッシュ・コードh3を取得してよい。メイン処理部111は、取得されたハッシュ・コードh3を含んでいるブロック215をブロックチェーン201に追加してよい(E3を参照)。ハッシュ・コードh3は、請求される更新されたハッシュ・コードの例である。
図7に示されているように、マスター・テーブル251に対する特定の更新の実行時に、メイン処理部111はブロック216をブロックチェーン201に追加してよい。ハッシュ・コードh2を含んでいるブロック214からN個のブロックがブロックチェーン201に追加された場合、メイン処理部111は、マスター・テーブル251をバックグラウンド・テーブル261に置き換えてよい。次に、ハッシュ・コード・カリキュレータ115は、更新されたマスター・テーブル251のハッシュ・コードを計算して、ハッシュ・コードhn’を取得してよい。メイン処理部111は、取得されたハッシュ・コードhn’を含んでいるブロック217をブロックチェーン201に追加してよい(矢印F1を参照)。ハッシュ・コードhn’は、請求される第2のハッシュ・コードまたは置き換えられるハッシュ・コードの例である。
図1を参照して前述したように、ブロックチェーン・システム100は、複数のノード101を含んでいる。すべてのノード101またはノード101のうちの少なくとも一部が、ブロック217を共通のタイミングで(例えば、同時に、または並行して)追加する。言い換えると、ノード101は、同じトリガーに基づいてブロックチェーン201を更新する。共通のタイミングは、請求される既定のタイミングの例である。
図8は、マスター・テーブル251を更新するためのプロセスのフローチャートである。メイン処理部111が、受信されたクエリが重い更新を要求するということを決定した場合に、このプロセスが開始してよい。
メイン処理部111は、最初に301で、重い更新クエリ用のフィルタ(例えば、図3~6のフィルタ253)を作成する。次に、メイン処理部111は、302で、フィルタ(例えば、図3~6のフィルタ253)をマスター・テーブル(例えば、図2~7のマスター・テーブル)に追加する。次に、ハッシュ・コード・カリキュレータ115は、303で、マスター・テーブル(例えば、図2~7のマスター・テーブル)およびフィルタ(例えば、図3~6のフィルタ253)を使用してハッシュ・コードhを計算する(例えば、再計算または更新する)。
図9は、バックグラウンド・テーブル(例えば、図3~6のバックグラウンド・テーブル)を更新するためのプロセスのフローチャートである。メイン処理部111がフィルタ(例えば、図3~6のフィルタ253)を生成し、バックグラウンド処理部113がバックグラウンド・テーブル(例えば、図3~6のバックグラウンド・テーブル)を生成する場合に、このプロセスが開始するということに注意する。
バックグラウンド処理部113は、最初に401で、フィルタを取得する。次に、バックグラウンド処理部113は、402で、フィルタがバックグラウンド・テーブル内のすべてのデータ項目に適用されたかどうかを判定する。フィルタがすべてのデータ項目に適用されていない場合、バックグラウンド処理部113が、403で、フィルタに従って更新されていないデータ項目の値を取得する。次に、バックグラウンド処理部113は、404で、フィルタの属性に従って取得された値を更新する。次に、バックグラウンド処理部113は、405で、更新された値を使用してバックグラウンド・テーブル261を更新する。402でフィルタがすべてのデータ項目に適用された場合、ハッシュ・コード・カリキュレータ115が、406でバックグラウンド・テーブルのハッシュ・コードh’を計算する。次に、バックグラウンド処理部113は、407で、マスター・テーブルがバックグラウンド・テーブルに置き換えられるまで待機する。
図10は、バックグラウンド・テーブル内のデータ項目の値を取得するためのプロセスのフローチャートである。フィルタがバックグラウンド・テーブルに適用されている間に、メイン処理部111がバックグラウンド・テーブルの値を取得するためのクエリを受信した場合に、このプロセスが開始してよいということに、注意する。言い換えると、複数のフィルタがマスター・テーブルに同時に添付された場合に、このプロセスが開始してよい。
バックグラウンド処理部113は、最初に501で、マスター・テーブルに添付されたフィルタをすべて取得する。次に、バックグラウンド処理部113は、502で、フィルタに従ってバックグラウンド・テーブルからデータ項目の値を取得する。バックグラウンド処理部113は、503で、適用されていないフィルタが存在するかどうかを判定してよい。適用されていないフィルタとは、バックグラウンド・テーブルに適用されていないフィルタのことを指す。503で、適用されていないフィルタが存在するということが決定された場合、バックグラウンド処理部113は、504で、適用されていないフィルタに従ってバックグラウンド・テーブル内のデータ項目の値を更新する。次に、バックグラウンド処理部113は、505で、更新された値を使用してバックグラウンド・テーブルを更新する。バックグラウンド処理部113は、506で値を返す。
図11は、マスター・テーブルおよびそれに関連するバックグラウンド・テーブル内のデータ項目の値を更新するためのプロセスのフローチャートである。このプロセスは、フィルタがバックグラウンド・テーブルに適用されている間に、メイン処理部111がマスター・テーブルの値を更新するためのクエリを受信した場合に、開始してよい。
メイン処理部111は、最初に601で、マスター・テーブルの値を更新する。次に、ハッシュ・コード・カリキュレータ115は、602で、マスター・テーブルのハッシュ・コードhを計算する。次に、バックグラウンド処理部113は、603で、バックグラウンド・テーブルの値を更新する。次に、ハッシュ・コード・カリキュレータ115は、604で、必要に応じてバックグラウンド・テーブルのハッシュ・コードh’を計算する。
図12は、ブロック(例えば、図7のブロック217)を追加する前のプロセスのフローチャートである。第Nのブロックがブロックチェーンに追加される場合にこのプロセスが開始するということに注意する(図7の説明を参照)。
メイン処理部111は、最初に701で、第Nのブロックがブロックチェーンに追加される前に、フィルタがバックグラウンド・テーブルに適用されたかどうかを判定する。701で、フィルタが適用されたということが決定された場合、メイン処理部111は、702で、バックグラウンド・テーブル内のデータ項目の値がすべて更新されるまで待機する。次に、メイン処理部111は、703で、マスター・テーブルをバックグラウンド・テーブルに置き換える。次に、ハッシュ・コード・カリキュレータ115は、704で、ハッシュ・コードhをハッシュ・コードh’に置き換える。
図13を参照して、本発明の代替の実施形態について説明する。この代替の実施形態は、バックグラウンド処理部113がフィルタに従って計算を実行している(例えば、バックグラウンド処理部113が、前のクエリに従って前の重い更新をバックグラウンドで実行している)間に、メイン処理部111がクエリ(例えば、第2のクエリ)を受信するということを仮定する。
メイン処理部111は、最初に801で、第2のクエリを受信する。次に、メイン処理部111は、802で、受信されたクエリ(例えば、第2のクエリ)が重い更新を要求するかどうかを判定する。802で、受信されたクエリが重い更新を要求するということが決定された場合、メイン処理部111が、803で第2のフィルタを作成する。次に、メイン処理部111は、804で、バックグラウンド処理部113が前の重い更新をバックグラウンドで実行しているかどうかを判定する。804で、バックグラウンド処理部113が前の重い更新をバックグラウンドで実行しているということが決定された場合、バックグラウンド処理部113が、805で、前の重い更新が終了するまで待機する。806で、バックグラウンド処理部113が開始して、その後の重い更新(例えば、第2のクエリの更新)をバックグラウンドで実行する。
本開示の代替の実施形態として、マスター・テーブルおよびバックグラウンド・テーブルが、重い更新が適用された行を除く行を共有してよい。言い換えると、メイン処理部111は、コピーオンライト手法を使用してバックグラウンド・テーブルを生成してよい。
図14を参照すると、実施形態例に従ってノード101(例えば、図1のノード101)のハードウェア構成の例が示されている。図に示されているように、ノードは、プロセッサの一例として機能する中央処理装置(CPU)91と、マザーボード(M/B)チップ・セット93を介してCPU91に接続され、メモリの一例として機能するメイン・メモリ92と、同じM/Bチップ・セット93を介してCPU91に接続されたディスプレイ・ドライバ94とを含んでよい。ネットワーク・インターフェイス96、磁気ディスク・デバイス97、音声ドライバ98、またはキーボード/マウス99、あるいはその組み合わせも、ブリッジ回路95を介してM/Bチップ・セット93に接続される。
図14では、さまざまな階層的要素がバスを介して接続されている。例えば、CPU91とM/Bチップ・セット93、およびM/Bチップ・セット93とメイン・メモリ92が、CPUのバスを介してそれぞれ接続されている。また、M/Bチップ・セット93およびディスプレイ・ドライバ94が、アクセラレーテッド・グラフィックス・ポート(AGP)を介して接続されてよい。しかし、ディスプレイ・ドライバ94がPCI Express互換ビデオ・カードを含んでいる場合、M/Bチップ・セット93およびビデオ・カードは、PCI Express(PCIe)バスを介して接続される。また、ネットワーク・インターフェイス96がブリッジ回路95に接続されている場合、例えば、PCI Expressが接続に使用されてよい。磁気ディスク・デバイス97をブリッジ回路95に接続するために、シリアルATA(AT attachment)、並列伝送ATA、またはPCI(peripheral components interconnect)が使用されてよい。キーボード/マウス99をブリッジ回路95に接続するために、ユニバーサル・シリアル・バス(USB)が使用されてよい。
メイン・メモリ92に格納されたプログラムを実行するCPU91は、図1のメイン処理部111、または図1のバックグラウンド処理部113、または図1のハッシュ・コード・カリキュレータ115、あるいはその組み合わせとして機能してよい。メイン・メモリ92および磁気ディスク・デバイス97は、図1のストレージ117として機能してよい。
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限定されない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
本発明の態様は、本明細書において、本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを生成すべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ上、その他のプログラム可能な装置上、またはるその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
100 ブロックチェーン・システム
101 ノード
105 ネットワーク
111 メイン処理部
113 バックグラウンド処理部
115 ハッシュ・コード・カリキュレータ
117 ストレージ

Claims (9)

  1. ブロックをブロックチェーンに追加するようにブロックチェーン・システム内の第1のデータベースを更新するためのコンピュータ実装方法であって、
    前記第1のデータベースを更新するための第1の更新クエリを受信したときに、前記第1の更新クエリをデータ項目として前記第1のデータベースに追加することと、
    前記第1のデータベースに格納されたデータ項目に基づいて第1のハッシュ値を計算することであって、前記格納されたデータ項目が前記第1の更新クエリの前記追加されたデータ項目を含んでいる、前記計算することと、
    前記第1のハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    前記第1のデータベースをコピーすることによって第2のデータベースを生成することと、
    前記第1の更新クエリの前記追加されたデータ項目に従って前記第2のデータベースを更新することと、
    前記更新された第2のデータベースに格納されたデータ項目に基づいて第2のハッシュ値を計算することと、
    前記第2のハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    を含んでいる、コンピュータ実装方法。
  2. 既定のタイミングで前記第1のデータベースを前記第2のデータベースに置き換えることをさらに含んでいる、請求項に記載のコンピュータ実装方法。
  3. 既定の数のブロックが前記ブロックチェーンに追加されるときに、前記第1のデータベースを前記第2のデータベースに置き換えることをさらに含んでいる、請求項に記載のコンピュータ実装方法。
  4. ブロックをブロックチェーンに追加するようにブロックチェーン・システム内の第1のデータベースを更新するためのコンピュータ実装方法であって、
    前記第1のデータベースを更新するための第1の更新クエリを受信したときに、前記第1の更新クエリをデータ項目として前記第1のデータベースに追加することと、
    前記第1のデータベースに格納されたデータ項目に基づいて第1のハッシュ値を計算することであって、前記格納されたデータ項目が前記第1の更新クエリの前記追加されたデータ項目を含んでいる、前記計算することと、
    前記第1のハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    を含み、
    前記ブロックチェーン・システムが、ネットワークを介して互いに接続された複数のノードを備えており、
    前記ノードの各々が前記第1のデータベースおよび第2のデータベースを備えており、前記第2のデータベースが前記第1のデータベースのコピーであり、
    既定の数のブロックが前記ブロックチェーンに追加されるときに、前記第1のデータベースが前記第2のデータベースに置き換えられる、
    ンピュータ実装方法。
  5. ブロックをブロックチェーンに追加するようにブロックチェーン・システム内の第1のデータベースを更新するためのコンピュータ実装方法であって、
    前記第1のデータベースを更新するための第1の更新クエリを受信したときに、前記第1の更新クエリをデータ項目として前記第1のデータベースに追加することと、
    前記第1のデータベースに格納されたデータ項目に基づいて第1のハッシュ値を計算することであって、前記格納されたデータ項目が前記第1の更新クエリの前記追加されたデータ項目を含んでいる、前記計算することと、
    前記第1のハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    を含み、
    第2の更新クエリの属性に従って、前記第2の更新クエリを前記データ項目として前記データベースに追加しないということを決定することと、
    前記第2の更新クエリに従って前記第1のデータベースを更新することと、
    前記第2の更新クエリに従って、前記更新された第1のデータベースに基づいて、追加されないハッシュ値を計算することと、
    前記追加されないハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    をさらに含んでいる、
    ンピュータ実装方法。
  6. ブロックをブロックチェーンに追加するようにブロックチェーン・システム内の第1のデータベースを更新するためのコンピュータ・プログラムであって、コンピュータに、
    前記第1のデータベースを更新するための第1の更新クエリを受信したときに、前記第1の更新クエリをデータ項目として前記第1のデータベースに追加することと、
    前記第1のデータベースに格納されたデータ項目に基づいて第1のハッシュ値を計算することであって、前記格納されたデータ項目が前記第1の更新クエリの前記追加されたデータ項目を含んでいる、前記計算することと、
    前記第1のハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    前記第1のデータベースをコピーすることによって第2のデータベースを生成することと、
    前記第1の更新クエリの前記追加されたデータ項目に従って前記第2のデータベースを更新することと、
    前記更新された第2のデータベースに格納されたデータ項目に基づいて第2のハッシュ値を計算することと、
    前記第2のハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    を実行させる、コンピュータ・プログラム。
  7. ブロックチェーン・システムがブロックをブロックチェーンに追加するためのシステムであって、
    プログラム命令が格納されたメモリと、
    前記メモリと通信するプロセッサと
    を備えており、前記システムが方法を実行するように構成されており、前記方法が、
    前記第1のデータベースを更新するための第1の更新クエリを受信したときに、前記第1の更新クエリをデータ項目として前記第1のデータベースに追加することと、
    前記第1のデータベースに格納されたデータ項目に基づいて第1のハッシュ値を計算することであって、前記格納されたデータ項目が前記第1の更新クエリの前記追加されたデータ項目を含んでいる、前記計算することと、
    前記第1のハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    前記第1のデータベースをコピーすることによって第2のデータベースを生成することと、
    前記第1の更新クエリの前記追加されたデータ項目に従って前記第2のデータベースを更新することと、
    前記更新された第2のデータベースに格納されたデータ項目に基づいて第2のハッシュ値を計算することと、
    前記第2のハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    を含んでいる、システム。
  8. ブロックチェーン内の第1のデータベースを更新するためのコンピュータ・プログラムであって、前記ブロックチェーンが、ブロックチェーン・システムに含まれる複数のノードによって共有され、前記ノードがネットワークを介して互いに接続されており、前記ノードが、前記第1のデータベースの第1の更新に従って前記ブロックチェーンに追加されるブロックを生成し、前記ノードの各々が、前記第1のデータベースを更新するための第1の更新クエリを受信したときに、通常の更新を使用して前記第1の更新クエリを前記第1のデータベースに適用するか、または遅延更新を使用して前記第1の更新クエリを前記第1のデータベースに適用するかを決定し、前記コンピュータ・プログラムが、コンピュータに、
    各ノードが、前記通常の更新を使用して前記第1の更新クエリを前記データベースに適用するということを決定した場合、
    前記第1の更新クエリに従って前記第1のデータベースを更新することと、
    前記更新されたデータベースに基づいて通常のハッシュ値を計算することと、
    前記通常のハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    を実行させ、
    各ノードが、前記遅延更新を使用して前記第1の更新クエリを前記第1のデータベースに適用するということを決定した場合、
    前記第1のデータベースをコピーすることによって第2のデータベースを生成することと、
    前記第1の更新クエリを前記第1のデータベースのデータ項目として前記データベースに追加することと、
    前記第1の更新クエリが前記データ項目として追加される前記データベースに基づいて、遅延ハッシュ値を計算することと、
    前記遅延ハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと、
    前記第1のデータベースに追加された前記第1の更新クエリの前記データ項目に従って前記第2のデータベースを更新することと、
    既定の数のブロックが前記ブロックチェーンに追加されるときに、前記第1のデータベースを前記第2のデータベースに置き換えることと、
    前記置き換えられるデータベースに基づいて置き換えられるハッシュ値を計算することと、
    前記置き換えられるハッシュ値を使用して新しいブロックを前記ブロックチェーンに追加することと
    を実行させる、コンピュータ・プログラム。
  9. 各ノードが第2の更新クエリを受信し、前記通常の更新を使用して前記第2の更新クエリを前記第1のデータベースに適用することを決定し、前記コンピュータに、
    前記第1の更新クエリに従って前記第2のデータベースを更新する前に、前記第1の更新クエリおよび前記第2の更新クエリを前記第1のデータベースに適用することによって、前記第1のデータベースを更新することと、
    前記第1の更新クエリおよび前記第2の更新クエリを使用して更新された前記第1のデータベースに基づいて、更新されたハッシュ値を計算することと、
    前記第1の更新クエリおよび前記第2の更新クエリを前記第2のデータベースに適用することによって前記第2のデータベースを更新することと
    をさらに実行させる、請求項に記載のコンピュータ・プログラム。
JP2020506334A 2017-08-11 2017-12-18 ブロックチェーン内のデータベース・ハッシュコードの遅延更新 Active JP7044447B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/674,629 2017-08-11
US15/674,629 US10877962B2 (en) 2017-08-11 2017-08-11 Deferred update of database hashcode in blockchain
PCT/EP2017/083289 WO2019029834A1 (en) 2017-08-11 2017-12-18 DIFFERENT UPDATING OF A DATABASE HASH CODE IN A BLOCK CHAIN

Publications (2)

Publication Number Publication Date
JP2020531949A JP2020531949A (ja) 2020-11-05
JP7044447B2 true JP7044447B2 (ja) 2022-03-30

Family

ID=61027666

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020506334A Active JP7044447B2 (ja) 2017-08-11 2017-12-18 ブロックチェーン内のデータベース・ハッシュコードの遅延更新

Country Status (6)

Country Link
US (1) US10877962B2 (ja)
JP (1) JP7044447B2 (ja)
CN (1) CN110998558B (ja)
DE (1) DE112017007656T5 (ja)
GB (1) GB2579934A (ja)
WO (1) WO2019029834A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884810B1 (en) * 2017-11-16 2021-01-05 Amazon Technologies, Inc. Workload management using blockchain-based transaction deferrals
CN110827008B (zh) * 2018-08-08 2023-07-18 华为技术有限公司 一种区块链节点和交易方法
US11120024B2 (en) * 2018-11-01 2021-09-14 Sap Se Dual-stack architecture that integrates relational database with blockchain
EP3742367A1 (en) * 2019-05-21 2020-11-25 Obook Inc. Method for determining information integrity and computer system using the same
JP7398786B2 (ja) * 2019-11-10 2023-12-15 株式会社アドダイス 検査システム及び検査方法
US11838400B2 (en) * 2019-11-19 2023-12-05 International Business Machines Corporation Image encoding for blockchain
US11558180B2 (en) 2020-01-20 2023-01-17 International Business Machines Corporation Key-value store with blockchain properties
CN111796845B (zh) * 2020-07-03 2022-05-24 杭州复杂美科技有限公司 数据库升级方法、状态数据查询方法、设备和存储介质
CN111984616B (zh) * 2020-08-04 2023-08-01 中国人民银行数字货币研究所 一种更新共享文件的方法、装置和系统
CN112052141B (zh) * 2020-09-02 2022-04-01 平安科技(深圳)有限公司 数据分片校验方法、装置、计算机设备及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090319797A1 (en) 2006-09-15 2009-12-24 Toernqvist Anders Method and computer system for ensuring authenticity of an electronic transaction
JP2013186557A (ja) 2012-03-06 2013-09-19 Nec Corp データベースの非同期レプリケーション方式
JP2014170352A (ja) 2013-03-04 2014-09-18 Nec Corp 情報システムおよびデータベース復旧方法
WO2016117032A1 (ja) 2015-01-20 2016-07-28 株式会社日立製作所 データベースシステム、計算機システム、及び、データベース管理方法
JP2016208347A (ja) 2015-04-24 2016-12-08 国立大学法人 筑波大学 著作物保護支援装置
US20160365978A1 (en) 2015-06-11 2016-12-15 PeerNova, Inc. Making cryptographic claims about stored data using an anchoring system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418094B2 (en) 2008-02-13 2016-08-16 Oracle International Corporation Method and apparatus for performing multi-stage table updates
US20100114832A1 (en) * 2008-10-31 2010-05-06 Lillibridge Mark D Forensic snapshot
CN103577407B (zh) * 2012-07-19 2016-10-12 国际商业机器公司 用于分布式数据库的查询方法及查询装置
US9507810B2 (en) 2013-12-10 2016-11-29 Sap Se Updating database schemas in a zero-downtime environment
US11037400B2 (en) 2014-09-18 2021-06-15 Igt Uk Interactive Limited Methods and apparatus for facilitating online search for up-to-date available sports betting opportunities
US9830342B2 (en) 2014-11-20 2017-11-28 International Business Machines Corporation Optimizing database deduplication
US10089489B2 (en) * 2015-06-02 2018-10-02 ALTR Solutions, Inc. Transparent client application to arbitrate data storage between mutable and immutable data repositories
US11562353B2 (en) 2015-11-24 2023-01-24 Mastercard International Incorporated Method and system for gross settlement by use of an opaque blockchain
WO2017136527A1 (en) * 2016-02-05 2017-08-10 Manifold Technology, Inc. Blockchain-enhanced database
US10339014B2 (en) * 2016-09-28 2019-07-02 Mcafee, Llc Query optimized distributed ledger system
US10360191B2 (en) * 2016-10-07 2019-07-23 International Business Machines Corporation Establishing overlay trust consensus for blockchain trust validation system
CN106815530B (zh) * 2016-12-26 2020-04-24 北京爱接力科技发展有限公司 数据存证方法、数据校验方法及装置
US10360149B2 (en) * 2017-03-10 2019-07-23 Oracle International Corporation Data structure store in persistent memory

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090319797A1 (en) 2006-09-15 2009-12-24 Toernqvist Anders Method and computer system for ensuring authenticity of an electronic transaction
JP2013186557A (ja) 2012-03-06 2013-09-19 Nec Corp データベースの非同期レプリケーション方式
JP2014170352A (ja) 2013-03-04 2014-09-18 Nec Corp 情報システムおよびデータベース復旧方法
WO2016117032A1 (ja) 2015-01-20 2016-07-28 株式会社日立製作所 データベースシステム、計算機システム、及び、データベース管理方法
JP2016208347A (ja) 2015-04-24 2016-12-08 国立大学法人 筑波大学 著作物保護支援装置
US20160365978A1 (en) 2015-06-11 2016-12-15 PeerNova, Inc. Making cryptographic claims about stored data using an anchoring system

Also Published As

Publication number Publication date
GB2579934A (en) 2020-07-08
WO2019029834A1 (en) 2019-02-14
CN110998558B (zh) 2023-09-19
GB202002740D0 (en) 2020-04-15
JP2020531949A (ja) 2020-11-05
US10877962B2 (en) 2020-12-29
CN110998558A (zh) 2020-04-10
US20190050402A1 (en) 2019-02-14
DE112017007656T5 (de) 2020-03-19

Similar Documents

Publication Publication Date Title
JP7044447B2 (ja) ブロックチェーン内のデータベース・ハッシュコードの遅延更新
JP7093599B2 (ja) ブロックチェーンにおけるスナップショットを管理する方法、コンピュータ・プログラム、スナップショット・ノード、オーディタ・ノードおよびシステム
US10764030B2 (en) Reduction in storage usage in distributed databases
US10127275B2 (en) Mapping query operations in database systems to hardware based query accelerators
CN105745622B (zh) 便于形成定制的虚拟盘的计算系统架构
US20140012810A1 (en) Method and apparatus for processing database data in distributed database system
US20170109364A1 (en) File Management in a Storage System
US9824133B1 (en) Cloud analytics marketplace
US20200151095A1 (en) Asynchronous update of metadata tracks in response to a cache hit generated via an i/o operation over a bus interface
US10977098B2 (en) Automatically deploying hardware accelerators based on requests from users
CN105302536A (zh) MapReduce应用的相关参数的配置方法和装置
JP2014235749A (ja) ライブ更新
US10936403B2 (en) Symmetry management in multiprocessor systems
US8006238B2 (en) Workload partitioning in a parallel system with hetergeneous alignment constraints
US10565202B2 (en) Data write/import performance in a database through distributed memory
US20160266806A1 (en) Optimization of the copying of change recorded data by using spare flash capacity
WO2022152085A1 (en) Applying changes in a target database system
KR102416336B1 (ko) 블록체인을 관리하기 위한 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체
US20120166728A1 (en) Systems and methods for performing parallel multi-level data computations
US9092472B1 (en) Data merge based on logical segregation
US10747626B2 (en) Method and technique of achieving extraordinarily high insert throughput
US9792352B1 (en) Modeling and persisting multiple related states of data
US11741063B2 (en) Deleting and inserting rows in fully homomorphically encrypted databases using queues
JPWO2018042637A1 (ja) 学習データ処理装置および方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200420

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200624

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210727

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20210916

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211025

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220308

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20220309

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220314

R150 Certificate of patent or registration of utility model

Ref document number: 7044447

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150