JP7036665B2 - データ管理方法およびデータ管理システム - Google Patents

データ管理方法およびデータ管理システム Download PDF

Info

Publication number
JP7036665B2
JP7036665B2 JP2018097972A JP2018097972A JP7036665B2 JP 7036665 B2 JP7036665 B2 JP 7036665B2 JP 2018097972 A JP2018097972 A JP 2018097972A JP 2018097972 A JP2018097972 A JP 2018097972A JP 7036665 B2 JP7036665 B2 JP 7036665B2
Authority
JP
Japan
Prior art keywords
data
server
data acquisition
demand
processing
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
JP2018097972A
Other languages
English (en)
Other versions
JP2019204216A5 (ja
JP2019204216A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2018097972A priority Critical patent/JP7036665B2/ja
Priority to US16/395,480 priority patent/US11093484B2/en
Publication of JP2019204216A publication Critical patent/JP2019204216A/ja
Publication of JP2019204216A5 publication Critical patent/JP2019204216A5/ja
Application granted granted Critical
Publication of JP7036665B2 publication Critical patent/JP7036665B2/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
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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
    • 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
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ブロックチェーンシステムのデータ管理方法に関する。
複数のサーバでネットワークを構成し、論理的に同一のデータを各サーバが保持しあうブロックチェーンシステムにおいて、新たなサーバをブロックチェーンネットワークに参加させ、トランザクション処理可能な状態とするには、新規サーバが事前にネットワーク上の全てのデータを取得することが必要となる。
しかし、ネットワーク上のデータが大容量である場合、全てのデータの取得が完了するまでに時間を要する。急な負荷上昇時のスケールアウト時には、新規サーバをトランザクション処理可能な状態で迅速に追加する必要がある。そのため、新規サーバがデータの取得に要する時間を短縮することが不可欠である。
分散コンピューティングシステムにおけるデータのリストア時間を短縮する方法としては、例えば、特許文献1が知られている。特許文献1では、新たなサーバが全データ(全ファイル)を予め取得するのではなく、アクセスがあったタイミングでオンデマンドに、ストレージシステムが既存サーバから該当データを取得する技術が開示されている。
特表2013-532314号公報
しかしながら、特許文献1に記載の技術は、ストレージ装置にてファイル単位でのオンデマンドデータ取得を行うため、ブロックチェーンシステムのように、各サーバがブロックチェーンシステムにとって論理的に同一のデータを保持するが、ファイル単位では異なるデータを保持する場合は利用することができない。
ブロックチェーンシステムにとって同一のデータであっても、ブロックチェーンシステムを構成する複数のサーバが異なるファイルシステムを利用する場合、ファイルレベルでは異なるデータの場合があるため、特許文献1に記載の技術をそのまま適用することはできない、という問題があった。
また、複数のサーバからファイルレベルでオンデマンドのデータ取得を行うと、前記特許文献1ではデータのコミットが完了しているか否かに関わらずリストアが進行するため、データの整合性が失われてしまう場合があった。
そこで本発明は、上記問題点に鑑みてなされたもので、ブロックチェーンシステムにおいて、新規サーバの追加を高速化し、可用性を向上させることを目的とする。
本発明は、データを格納する記憶部と、プロセッサ上で稼働して前記データを処理する処理部とを各々有する複数のサーバを用い、前記複数のサーバの記憶部に分散して格納した処理対象情報を、前記複数のサーバがトランザクション要求を受けて処理するデータ管理方法において、前記サーバの記憶は、前記処理対象情報を有する第1のデータと、前記トランザクション要求に基づいて前記処理対象情報を処理したトランザクション処理履歴情報を含む第2のデータと、を格納しており、前記第1のデータ及び第2のデータには、関連するトランザクションが異なる複数のデータが含まれており、前記サーバには、第1のサーバと、複数の第2のサーバとが含まれており、前記複数の第2のサーバは、前記第1のデータ及び第2のデータを同期させて保持しており、前記トランザクション要求を受信した第1のサーバは、前記トランザクション要求にかかる第1のデータを少なくとも1つの前記第2のサーバの前記記憶部から読み出し、前記トランザクション要求を処理して処理結果を前記トランザクション要求の要求元に返信し、トランザクション処理履歴情報を含む第2のデータと処理結果を反映した前記第1のデータとを自サーバに格納するとともに、当該処理を第2のサーバの前記第1のデータに反映させるための第2のデータを前記第2のサーバに送り、前記第1のサーバは、前記第1のデータを保持する第2のサーバをオンデマンドデータ取得元サーバとして設定し、前記オンデマンドデータ取得元サーバは、前記第1のサーバをコミット同期サーバとして設定しており、前記第1のデータについての更新を反映させる第2のデータを前記第1のサーバに送信し、前記第1のサーバは、前記第1のデータの読み出しでは、前記オンデマンドデータ取得元サーバにより同期されている第1のデータを自サーバの記憶部で検索し、前記自サーバの記憶部で取得できない場合にオンデマンドデータ取得元サーバの記憶部から前記第1のデータを取得する。
本発明によれば、複数のサーバが論理的に同一のデータを保持するブロックチェーンシステムにおいて、トランザクション処理可能な新規サーバの追加を高速化し、可用性を向上させることができる。
本発明の実施例1を示し、本発明を適用したブロックチェーンシステムの概要を示すブロック図である。 本発明の実施例1を示し、ブロックチェーンシステムの構成の一例を示すブロック図である。 本発明の実施例1を示し、ブロックチェーンプログラムの内部構成を示すブロック図である。 本発明の実施例1を示し、稼働モードフラグ情報の構成を示す図である。 本発明の実施例1を示し、データベースアクセスインタフェースの一例を示す図である。 本発明の実施例1を示し、ブロックチェーンプログラムのトランザクション処理の一例を示すフローチャートである。 本発明の実施例1を示し、ブロックデータの構成の一例を示す図である。 本発明の実施例1を示し、オンデマンドデータ取得処理の一例を示すフローチャートである。 本発明の実施例1を示し、ブロックデータ確定取得処理の一例を示すフローチャートである。 本発明の実施例1を示し、バージョン判定処理の一例を示すフローチャートである。 本発明の実施例1を示し、ブロックデータバックグラウンド取得処理の一例を示すフローチャートである。 本発明の実施例1を示し、オンデマンドデータ取得の初期化処理の一例を示すフローチャートである。 本発明の実施例1を示し、保持データ管理情報の構成を示す図である。 本発明の実施例1を示し、オンデマンドデータ取得進捗管理情報の構成を示す図である。 本発明の実施例2を示し、オンデマンドデータ取得の初期化処理の一例を示すフローチャートの前半部である。 本発明の実施例2を示し、オンデマンドデータ取得の初期化処理の一例を示すフローチャートの後半部である。 本発明の実施例2を示し、稼働モードフラグ情報の構成を示す図である。 本発明の実施例3を示し、ブロック確定処理の一例を示すフローチャートである。 本発明の実施例3を示し、オンデマンドデータ取得の初期化処理の一例を示すフローチャートの前半部である。 本発明の実施例3を示し、オンデマンドデータ取得の初期化処理の一例を示すフローチャートの後半部である。 本発明の実施例3を示し、オンデマンドデータ取得処理の一例を示すフローチャートである。
以下、本発明の実施形態を添付図面に基づいて説明する。
図1は、本発明の実施例1のブロックチェーンシステムの概要を示すブロック図である。図示の例では、既存のサーバ220-1とクライアント200で構成されたブロックチェーンシステムに、新たなサーバ220-2を追加する例を示す。サーバ220-1とサーバ220-2は、同様に構成されて、ブロックチェーンプログラム300がそれぞれ稼働する。ブロックチェーンプログラム300は、スマートコントラクト310と、オンデマンドデータ取得モジュール340と、データベース285を含む。
まず、クライアント200が、トランザクション要求を、新規追加したサーバ220-2上のブロックチェーンプログラム300に発行する。次に、新規追加したサーバ220-2上のブロックチェーンプログラム300は、スマートコントラクト310を実行し、ブロックチェーンシステムに参加してクライアント200から要求された処理(例えば、契約や情報の更新)を実行する。オンデマンドデータ取得モジュール340は、スマートコントラクト310からデータベース285へのアクセスをフックする。
なお、図2では、オンデマンドデータ取得モジュール340がデータベース285へのアクセスをフックする例を示すが、後述の処理では、トランザクション処理モジュール320がデータベース285へのアクセスをフックして、オンデマンドデータ取得モジュール340に実行させる。
すなわち、スマートコントラクト310からデータベース285へのアクセスのフックは、トランザクション処理モジュール320またはオンデマンドデータ取得モジュール340のいずれか一方で実施すればよい。
オンデマンドデータ取得モジュール340は、上記フックしたアクセスについて、取得要求を受けたアクセス先データ(図中データ2)が自サーバ220-2上に存在するか否かを判定する。アクセスするデータが存在しない場合、新規のサーバ220-2上のオンデマンドデータ取得モジュール340は、スマートコントラクト310から取得要求を受けたデータの取得要求を、既存のサーバ220-1上のオンデマンドデータ取得モジュール340に送信する。
既存のサーバ220-1上のオンデマンドデータ取得モジュール340は、データの取得要求を受信すると、要求されたデータをデータベース285内のブロックチェーンデータ290から取得し、新規のサーバ220-2上のオンデマンドデータ取得モジュール340にデータを渡す(オンデマンドデータ取得処理)。
新規のサーバ220-2上のオンデマンドデータ取得モジュール340は、受け取ったデータを必要に応じて自身のデータベース285のブロックチェーンデータ290に格納したのち、スマートコントラクト310にデータを渡す。
上記処理によって、新規に追加されたサーバ220-2は、オンデマンドデータ取得モジュール340を介して既存のサーバ220-1からスマートコントラクト310で利用するデータをオンデマンドで取得することができる。すなわち、追加されたサーバ220-2のオンデマンドデータ取得モジュール340は、既存のサーバ220-1のファイルシステムやデータベースの種類に関わらず、ブロックチェーンシステムのスマートコントラクト310で利用するデータを取得することが可能となる。
図2は、本発明の実施例1に係るブロックチェーンシステムの概略構成を示すブロック図である。ブロックチェーンシステムは、1つ以上のクライアント200と、ネットワーク210を介してクライアント200と接続された1つ以上のサーバ220-1~220-nと、管理端末225と、を含む計算機システムである。なお、以下ではサーバ220-1~220-nを個々に特定しない場合には、「-」以降を省略した符号「220」を使用する。他の構成要素の符号についても同様である。また、図示の例では、サーバ220-2を新規に追加したサーバとした例を示す。
クライアント200は、1つ以上のサーバ220が提供するブロックチェーンサービスを利用するために使用する計算機である。クライアント200では、ブロックチェーンサービスを利用するためのクライアントプログラムが稼働する。クライアントプログラムをサーバ220で稼働させることで、クライアント200とサーバ220を兼用してもよい。また、クライアントプログラムを管理端末225で稼働させることで、クライアント200と管理端末225とを兼用してもよい。
ネットワーク210は、クライアント200と、サーバ220と、を相互に接続するネットワークである。ネットワーク210は、例えば、WAN(Wide Area Network)、LAN(Local Area Network)、インターネット、SAN(Storage Area Network)、公衆回線、または専用回線などである。
サーバ220は、クライアント200に対してブロックチェーンサービスを提供する計算機である。サーバ220は、メモリ270に格納されたプログラムを実行するCPU240と、クライアント200との通信に使用するネットワークインタフェース250と、ディスクドライブ(記憶部)280と、ディスクドライブ280への入出力を制御するディスクコントローラ260と、プログラムやデータを格納するメモリ270と、を搭載し、それらを内部的な通信路(例えば、バス215)によって接続している計算機である。なお、サーバ220は、仮想マシンで構成されてもよい。
サーバ220のメモリ270には、プログラムやデータが格納される。例えば、メモリ270には、ブロックチェーンプログラム300と、データベース285を管理するデータベースプログラム295が格納される。本実施例1は、ブロックチェーンサービスを提供する主体が、例としてブロックチェーンプログラム300であることを前提に説明する。
ブロックチェーンプログラム300は、クライアント200に対して、他のサーバ220におけるブロックチェーンプログラム300と協調してスマートコントラクトをサービスし、クライアント200から受信したトランザクション要求に基づいてスマートコントラクトを実行する。
ディスクコントローラ260は、メモリ270に格納された各種プログラムの入出力要求に基づいて、ディスクドライブ280のデータを例えばブロック単位で入出力する。
ディスクドライブ280は、メモリ270に格納された各種プログラムが読み書きするデータを格納するための記憶装置である。本実施例1において、ディスクドライブ280には、ブロックチェーンデータ290が格納される。ブロックチェーンデータ290は、データベースプログラム295を利用して、Key-Value形式に構造化されたフォーマットでデータベース285に格納されてもよい。
管理端末225は、ブロックチェーンシステムの管理者が、ブロックチェーンプログラム300の設定を変更するとき等に利用される。管理端末225は、サーバ220と同様のモジュール(CPU240、ネットワークインタフェース250、ディスクコントローラ260、ディスクドライブ280、メモリ270、バス215)を含む計算機である。
管理端末225では管理用プログラムが実行され、ブロックチェーンシステムの管理者は管理用プログラムを使用することで、ブロックチェーンプログラム300の設定を変更する。
図3は、ブロックチェーンプログラム300の機能構成を示すブロック図である。ブロックチェーンプログラム300は、スマートコントラクト(スマートコントラクト処理部)310と、トランザクション処理モジュール320と、ブロック受信モジュール330と、オンデマンドデータ取得モジュール(オンデマンドデータ取得部)340と、バックグラウンド取得モジュール350と、データベースアクセスモジュール360と、保持データ管理情報1300と、オンデマンドデータ取得進捗管理情報370と、稼働モードフラグ情報400と、を含む。
スマートコントラクト310は、サーバ220のCPU240によって実行される。スマートコントラクト310は、例えば、仮想通貨や証券といった金融資産の取引を処理するためのプログラムである。なお、スマートコントラクト310は複数種存在してもよい。
トランザクション処理モジュール320は、クライアント200からのトランザクション要求を契機として、サーバ220のCPU240によって実行される。トランザクション処理モジュール320は、クライアント200からトランザクション要求を受信し、当該トランザクション要求内容に基づいて対応するスマートコントラクト310を実行する。さらに、トランザクション処理モジュール320は、実行結果をサーバ220に分配し、確定した上で、クライアント200にトランザクション処理結果を応答する。
ブロック受信モジュール330は、他のサーバ220のトランザクション処理モジュール320が送信するブロックデータを受信し、データベースにブロックデータと、当該ブロックデータに含まれるトランザクションの実行結果をコミットする。これによって、ブロックチェーンデータ290が更新される。
オンデマンドデータ取得モジュール340は、スマートコントラクト310のデータベースアクセスを契機としてサーバ220のCPU240にて実行される。オンデマンドデータ取得モジュール340は、スマートコントラクト310が必要とするデータ(Key/Value)を、自サーバ220が保持しているか否かを判定し、保持していない場合は既存のサーバ220-1上のオンデマンドデータ取得モジュール340にデータの取得要求を送信し、既存のサーバ220-1から必要なデータを取得する。
バックグラウンド取得モジュール350は、タイマなどでバックグラウンド取得処理(図11のS1100)を所定の周期で実行する。バックグラウンド取得モジュール350は、サーバ220自身が保持していないブロックデータを、他のサーバ220から取得する。なお、バックグラウンドでのブロックデータの取得は、実施してもしなくてもよい。
バックグラウンドでのブロックデータの取得を実施することで、最終的に、新規のサーバ220-2は既存のサーバ220-1と同様の全データを保持することができる。ブロックデータ700は、ブロックチェーンデータへの処理の履歴を格納しているので、これを用いて過去のブロックチェーンデータを作成することができるからである。一方で、全データが不要な場合は実施しなくてもよい。
また、バックグラウンド取得処理の実施の有無(稼働モードフラグ情報400におけるバックグラウンド取得モードC450)や、タイマの間隔はブロックチェーンシステム管理者が管理端末225を利用して設定することができる。
データベースアクセスモジュール360は、スマートコントラクト310が、データベース285に読み書きする際に利用するものである。データベースアクセスモジュール360は、スマートコントラクト310がデータベースにアクセスするための統一的なインタフェースを提供する。そのため、スマートコントラクト310はデータベースの種別の違い等を意識せずにデータベース285へのアクセスが可能となる。
保持データ管理情報1300は、オンデマンドデータ取得によりどのKeyが取得済みであるかを管理するためのテーブルである。このテーブルは、オンデマンドデータ取得処理が実施されると、オンデマンドデータ取得モジュール340により更新される。
オンデマンドデータ取得進捗管理情報1400は、オンデマンドデータ取得を開始したときの最新ブロックデータのブロック番号や、バックグラウンド取得モジュール350がどの番号のブロックデータまでを取得したか否かの管理を行うための情報で、メモリ270またはディスクドライブ280上に格納される。オンデマンドデータ取得進捗管理情報1400は、バックグラウンド取得モジュール350のバックグラウンド取得処理の終了判定(図11のステップS1150)で利用される。
スマートコントラクト310と、トランザクション処理モジュール320と、ブロック受信モジュール330と、オンデマンドデータ取得モジュール340と、バックグラウンド取得モジュール350と、データベースアクセスモジュール360の各機能部はブロックチェーンプログラム300の要素としてメモリ202にロードされる。
CPU240は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、CPU240は、トランザクション処理プログラムに従って処理することでトランザクション処理モジュール320として機能する。他のプログラムについても同様である。さらに、CPU240は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機および計算機システムは、これらの機能部を含む装置およびシステムである。
制御部110の各機能を実現するプログラム、テーブル等の情報は、ディスクドライブ280や不揮発性半導体メモリ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
図4は、稼働モードフラグ情報400の構成を示す図である。稼働モードフラグ情報400は、オンデマンドデータ取得を実施するか否かや、オンデマンドデータの取得元や、コミット同期を実施するかどうかや、バックグラウンド取得を実施するかどうかや、バックグラウンド取得の取得元などを格納する。
稼働モードフラグ情報400は、メモリ270またはディスクドライブ280上に格納される。稼働モードフラグ情報400は、オンデマンドデータ取得モードC410と、オンデマンドデータ取得元C420と、コミット同期モードC430とコミット同期先C440と、バックグラウンド取得モードC450と、バックグラウンドデータ取得元C460と、から構成される。
オンデマンドデータ取得モードC410は、オンデマンドデータ取得モジュール340が、オンデマンドデータ取得処理を行うべきか否かを示し、ブロックチェーンシステム管理者が、管理端末225を利用して値を変更する。オンデマンドデータ取得モードC410は、オンデマンドデータ取得処理を実行する場合には「true」が設定され、実行しない場合には「false」が設定される。
オンデマンドデータ取得元C420は、オンデマンドデータ取得モジュール340が、どのサーバ220からオンデマンドデータ取得処理を行うかを示す情報である。本実施例1では、サーバ220のIPアドレスとポート番号の組み合わせでデータを取得する計算機を特定する例を示す。
オンデマンドデータ取得モジュール340は、オンデマンドデータ取得モードC410と、オンデマンドデータ取得元C420とを利用し、オンデマンドデータ取得処理の実施の有無の判定と、オンデマンドデータ取得元の特定を行う。
コミット同期モードC430は、ブロックチェーンプログラム300が、ブロックデータのコミット時に、他サーバ220にブロックデータを同期的に送信するか否かを指定するものである。ブロックデータを同期的に送信する場合には「true」が設定され、送信しない場合には「false」が設定される。
コミット同期先C440は、ブロックチェーンプログラム300のブロックデータコミット時に、どのサーバ220にブロックデータを同期的に送信するかを指定するものである。本実施例1では、サーバ220のIPアドレスとポート番号の組み合わせでブロックデータを送信する計算機を特定する。
バックグラウンド取得モードC450は、バックグラウンド取得モジュール350が、バックグラウンド取得処理を実施するかを指定する。バックグラウンド取得処理を実施する場合には「true」が設定され、実施しない場合には「false」が設定される。
バックグラウンドデータ取得元C460は、バックグラウンド取得モジュール350が、どのサーバ220からブロックデータを取得するかを指定する。バックグラウンドデータ取得元C460には、ブロックデータを取得するサーバ220のIPアドレスとポート番号が格納される。
図5は、データベースアクセスインタフェース500の一例を示す図である。データベースアクセスインタフェース500は、データベースアクセスモジュール360で管理され、スマートコントラクト310がデータベース285へアクセスする際のインタフェースである。スマートコントラクト310は、データベースアクセスインタフェース500を利用してデータベース285にデータの入出力を行う。
インタフェース名C510は各インタフェースの名前である。インタフェース種別C520は各インタフェースがどのような入力を受け付けるかによりインタフェースを分類するもので、例えば、単一のKeyのみを入力に取るものは「単一Keyクエリ」が設定され、2つのKeyを入力に受け取り、それらが始点と終点を表す場合は「範囲Keyクエリ」が設定され、入力に正規表現などの任意の文字列を受け付けるものは「リッチクエリ」が設定される。
入力C530は各インタフェースが入力に受け付ける値の種類が設定される。例えば、インタフェース名C510=「Get」は、入力に単一のKeyを受け付ける。この他に、「Value」や「Startkey」および「Endkey」や「QueryString」などが設定される。
出力C540は、各インタフェースの出力内容である。例えば、インタフェース名C510=「GetRange」は、複数のKeyと、複数のValueと、処理結果が成功か失敗かを示すResultとを出力する。
図6は、ブロックチェーンプログラム300のトランザクション処理モジュール320が実行するトランザクション処理の詳細を説明するためのフローチャートの一例である。トランザクション処理は、ブロックチェーンプログラム300がクライアント200からのトランザクション要求を受け付けたことを契機に実行される。
まず、ブロックチェーンプログラム300のトランザクション処理モジュール320は、クライアント200からトランザクション要求を受信する(S610)。トランザクション要求には、スマートコントラクト310の実行時に指定するパラメータが含まれる。
次に、トランザクション処理モジュール320は、トランザクション要求で指定されたスマートコントラクト310を実行する(S620)。スマートコントラクト310は、トランザクション要求を実行するために必要なブロックチェーンデータ290を取得するアクセス(アクセス要求)をデータベース285へ発行する。
トランザクション処理モジュール320は、データベースアクセスモジュール360を利用するスマートコントラクト310からデータベース285へのアクセスを全てフックする(S630)。
上記フックしたデータベース285へのアクセスについて、トランザクション処理モジュール320は、オンデマンドデータ取得モジュール340を実行させて、既存のサーバ220からデータの取得または自身のサーバ220のデータベース285が保持するデータ(ブロックチェーンデータ290)の読み込みを実施させる(S800)。
スマートコントラクト310は、オンデマンドデータ取得モジュール340が取得したデータでトランザクション要求に対応する処理を実行する。ここで、スマートコントラクト310の実行結果、すなわち、戻り値やブロックチェーンデータ290に反映するデータは、合意形成処理で使用するためメモリ270に退避しておく。
そして、トランザクション処理モジュール320は、合意形成処理を実施する(S640)。合意形成処理は、複数のサーバ220間で同一のトランザクションの実行結果をコミットするために行われる。例えば、トランザクション処理モジュール320は、Practical Byzantine Fault Tolelanceプロトコルを利用し、複数のサーバ220が同一のトランザクションの実行結果を生成することを保証する。
次に、トランザクション処理モジュール320は、前記ステップS640で合意形成したトランザクションの実行結果を元に、トランザクションの実行結果を含むブロックデータ700を生成し、他のサーバ220に生成したブロックデータを配信する(S650)。
そして、トランザクション処理モジュール320は、スマートコントラクト310の実行結果をブロックチェーンデータ290に書き込む(S900)。
最後に、トランザクション処理モジュール320は、トランザクション要求に対する応答をクライアント200に送信する(S660)。
以上の処理により、オンデマンドデータ取得モジュール340が、スマートコントラクト310からデータベース285へのアクセスを全てフックし、自サーバ220または他のサーバ220のデータベースから必要なデータを取得することで、ブロックチェーンシステムに参加するサーバ220のファイルシステムやデータベースの種類が異なる場合でも、確実にデータを取得することが可能となる。そして、オンデマンドデータ取得モジュール340は取得したデータをスマートコントラクト310に渡すことで、トランザクション処理を円滑に実施することができる。
図7は、トランザクション実行結果が格納されるブロックデータ700の構成要素の一例を示した図である。
ブロックデータ700は、1つまたは複数のトランザクション実行結果から生成され、ブロックチェーンプログラム300がこのブロックデータをコミットする(S900)ことで、トランザクションの実行結果がデータベース285に格納される。
ブロックデータ700は、読み書き対象Key C710と、読み書き種別C720と、Value C730と、ブロック番号C740と、トランザクション番号C750を1つのエントリに含み、さらにハッシュ値C760を含む。
読み書き対象key C710は、各トランザクションがデータベース285のどのKeyに対して読み書きしたかを示す。読み書き種別C720は、読み書き対象KeyC 710のKeyに対して、読み込みを行ったのか書き込みを行ったのかを示す。Value C730は、読み書き対象Key C710のKeyについて読み込んだ値もしくは書き込んだ値を示す。
ブロック番号C740は、このトランザクションの実行結果が含まれるブロックの番号を示す。ブロック番号は一意な数値であり、例えば、新たなブロックデータ700をブロックチェーンプログラム300が生成するとき、前回のブロックデータ700のブロック番号C740よりも1つ大きなブロック番号C740を採用する。なお、1つのブロックデータ700において、このブロック番号C740は全て同一の値を保持する。トランザクション番号C750は、このブロックにおいて、トランザクションが何番目のものであるかを示す。
ハッシュ値C760には、当該ブロックデータの値と前回のブロックのハッシュ値から生成されたハッシュ値が格納される。新規サーバは、オンデマンドデータ取得の初期化時に、最新のブロックデータ700を取得している。それを用いて、次のブロックデータのためのハッシュ値を生成することができる。
図8は、オンデマンドデータ取得モジュール340が実行する、オンデマンドデータ取得処理の詳細を説明するためのフローチャートの一例である。この処理は、図6のステップS800で行われる。
スマートコントラクト310のデータベース285に対するアクセスをブロックチェーンプログラム300上のトランザクション処理モジュール320がフックすると、トランザクション処理モジュール320はオンデマンドデータ取得モジュール340を利用してオンデマンドデータ取得処理を実施する。
なお、トランザクション処理モジュール320は、フックした情報に基づいてオンデマンドデータ取得モジュール340に、インタフェース名C510とその入力C530の情報を渡す。
まず、オンデマンドデータ取得モジュール340は、データベース285へのアクセス種別が読み込みであるか書き込みであるかを判定する(S801)。オンデマンドデータ取得モジュール340は、読み込みアクセスであった場合、ステップS802へ進み、書き込みであればステップS809に進む。
次に、ステップS802で、オンデマンドデータ取得モジュール340は、自身を実行中のブロックチェーンプログラム300がオンデマンドデータ取得モードで稼働中であるか否かを判定する(S802)。オンデマンドデータ取得モジュール340は、ブロックチェーンプログラム300がオンデマンドデータ取得モードで実行されている場合には、ステップS803に進み、そうでない場合にはステップS808へ進む。
ステップS808ではオンデマンドデータ取得モードでないので、オンデマンドデータ取得モジュール340は要求されたKeyに対するValueを、自身を実行中のサーバ220上のデータベース285から読み込む。
一方、ステップS803ではオンデマンドデータ取得モードなので、オンデマンドデータ取得モジュール340は、次に、データベース285へのアクセスに利用するインタフェース種別C520が単一Keyクエリまたは範囲Keyクエリであるかを判定する(S803)。
単一Keyクエリまたは範囲Keyクエリである場合、ステップS804に進んで、オンデマンドデータ取得モジュール340は、スマートコントラクト310がどのKeyのValueを必要としているのか判定可能である。
そのため、オンデマンドデータ取得モジュール340は、単一Keyクエリまたは範囲Keyクエリである場合、必要とするKeyのValueを自サーバ220のデータベース285が保持しているか否かを、保持データ管理情報1300を参照して判定する(S804)。
オンデマンドデータ取得モジュール340は、自サーバ220のデータベース285にアクセス対象のデータが格納されていれば、ステップS808へ進んで、当該データをデータベース285から読み込みを行う。自サーバ220にアクセス対象のデータが存在しない場合、オンデマンドデータ取得モジュール340は、ステップS805に進んで、インタフェース名C510とその入力C530の情報を加えて、稼働モードフラグ情報400のオンデマンドデータ取得元C420に記されたサーバ220に対して、オンデマンドデータ取得要求を送信する。
オンデマンドデータ取得要求を受信した他のサーバ220上のオンデマンドデータ取得モジュール340は、受け取ったインタフェース名C510とその入力C530の情報を元にデータベース285へのアクセスを行い、アクセス対象のデータを取得してオンデマンドデータ取得要求の結果として送信する(S806)。
オンデマンドデータ取得モジュール340は、他のサーバ220からオンデマンドデータ取得要求の結果を受信すると(S807)、保持データ管理情報1300を更新する(S812)。
上記ステップS803の判定にて、データベース285へのアクセスに利用するインタフェース種別C520が単一Keyクエリまたは範囲Keyクエリでない場合、オンデマンドデータ取得モジュール340は、ステップS810に進んで、既存のサーバ220にクエリの実行要求を送信する(S810)。
クエリ実行要求を受け取った既存のサーバ220は、当該クエリを実行し、クエリの結果を送信する。オンデマンドデータ取得モジュール340は、結果を受け取ると(S811)、ステップS807の処理は実施せずに、データ取得結果をスマートコントラクト310に返して保持データ管理情報1300を更新する(S812)。上記ステップS807の処理を実施しないのは、単一Keyクエリまたは範囲Keyクエリでない場合、オンデマンドデータ取得モジュール340は、スマートコントラクト310がどのKeyのValueを必要としているのか判定できず、保持データ管理情報1300を更新できないためである。
なお、ステップS801にて、書き込みアクセスであった場合は、書き込み処理(S809)と、保持データ管理情報1300への書き込んだKeyの登録を行い(S807)、書き込み完了の応答をスマートコントラクト310へ返す(S812)。
上記処理により、オンデマンドデータ取得モジュール340は、データベース285へのアクセスが読み込みで、自サーバ220にアクセス対象のデータがない場合には、他のサーバ220にデータ取得要求またはクエリ実行要求を送信することで、当該データを取得してスマートコントラクト310へ渡すことができる。
また、オンデマンドデータ取得モジュール340は、クエリの種別毎に処理を分けて既存のサーバ220-1に処理を依頼することで、いずれのKeyを必要とするのか判断できないデータベース285に固有のクエリは全て既存のサーバ220-1に処理を依頼することで、正確な実行結果を得ることができる。
図9は、ブロックチェーンプログラム300のトランザクション処理モジュール320がブロックデータ700をデータベース285にコミットするときに実行するブロック確定処理の詳細を説明するためのフローチャートの一例である。この処理は、図6のステップS900で行われる。
まず、ブロックチェーンプログラム300は、稼働モードフラグ情報400を参照してコミット同期モードC430が「true」であるか否かを取得し、自サーバ220がコミット同期モードで稼働中か否かを判定する(S910)。
コミット同期モードで稼働中の場合、ブロックチェーンプログラム300は、自身がコミット処理中のブロックデータ700を、稼働モードフラグ情報400のコミット同期先C440で指定されたサーバ220に送信し、応答を待つ(S920)。なお、ブロックデータ700を受信したサーバ220は、ブロック確定処理(S900)のステップS930以降を実施した後に、ブロック確定処理完了通知の応答を返す。これにより、既存のサーバ220-1は、ブロックチェーンデータ290の更新内容を、新規のサーバ220にも同期的に反映させることができる。したがって、ブロックチェーンシステムはブロックチェーンデータ290の整合性を保証することができる。
次に、ブロックチェーンプログラム300は、このブロック確定処理が、バックグラウンド取得処理(図11のS1100)によるものか否かを判定する(S930)。バックグラウンド取得処理によるものである場合は、ステップS940に進み、そうでない場合にはステップS950に進む。
ステップS940では、ブロックチェーンプログラム300が、ブロックデータ700の読み書き種別C720が書き込みである全てのトランザクションの実行結果について、ステップS1000の処理を繰り返して実行する。
ステップS1000では、ブロックチェーンプログラム300が、書き込もうとする値がデータベース285に存在する値よりも古いものでないかを判定する。この処理については図10で詳述する。なお、バックグラウンド取得によるブロックデータ受信処理は最新のブロックデータ700ではなく、過去の古いブロックデータ700を取得する。そのため、バックグラウンド取得により得たブロックデータ700に含まれるトランザクションの実行結果において一部のKeyは既に取得済みである場合があり、その際はステップS1000にて、該当Keyを書き込み対象外とする必要がある。
そして、書き込み対象外とならなかったKeyについて、ブロックチェーンプログラム300は、そのValue C730とブロック番号C740とトランザクション番号C750とをデータベース285にコミットする(S950)。
次に、ブロックチェーンプログラム300は、自身がオンデマンドデータ取得モード情報で稼働中かを、稼働モードフラグ情報400を参照してオンデマンドデータ取得モードC410を参照して「true」であるか否かに基づいて判定する(S960)。オンデマンドデータ取得モードで稼働中の場合はステップS970へ進み、そうでない場合には処理を終了する。
ステップS970では、ブロックチェーンプログラム300が、上記ステップS950にてデータベース285にコミットした全ての書き込み対象のKeyについて、ステップS980の処理を繰り返して実行する。
ステップS980では、ブロックチェーンプログラム300が、保持データ管理情報1300に各Keyを追加して、該当Keyを既に取得済みであるという情報を格納する(S980)。
上記処理により、生成されたブロックデータ700の確定処理と、データベース285のコミット処理が完了する。
図10は、ブロックチェーンプログラム300が実行するブロックデータ確定処理における、書き込みデータのバージョン判定処理の詳細を説明するためのフローチャートの一例である。この処理は図9のステップS1000で行われる。
ブロックチェーンプログラム300は、ブロックデータ700のコミット時に、ブロックデータ700中の、読み書き種別C720が「書き込み」の各トランザクションの実行結果において、データベース285に既に格納されている値と、書き込みデータのバージョンの比較を行う。
まず、ブロックチェーンプログラム300は、トランザクションの実行結果のKey(C710)に対応するデータを、データベース285から取得する(S1001)。
次に、ブロックチェーンプログラム300は、トランザクションの実行結果のブロックデータ700からブロック番号C740とトランザクション番号C750を取得し、データベース285から取得したデータのブロック番号C740とトランザクション番号C750とを、比較する(S1002)。
なお、ブロックチェーンプログラム300は、ブロックデータ700中のトランザクションの実行結果をデータベース285に格納するとき、ブロック番号C740及びトランザクション番号C750を、Value C730を格納するため、前記ステップS1002の比較によるバージョンの判定処理が可能である。
トランザクションの実行結果のほうがデータベース285中のデータより新しいデータである場合、更新が必要である応答を返し(S1003)、データベース285中のデータより古いデータであれば更新不要を返す(S1004)。
上記処理によって、ブロックチェーンプログラム300は、データベース285のデータに古いトランザクションの実行結果が上書きされるのを防ぐことができる。
図11は、ブロックチェーンプログラム300のバックグラウンド取得モジュール350が実行するブロックデータバックグラウンド取得処理の詳細を説明するためのフローチャートの一例である。
ブロックデータバックグラウンド取得処理は、タイマ等であらかじめ定められたスケジュールに基づいて実行される。まず、バックグラウンド取得モジュール350は、自身がバックグラウンド取得モードで稼働中か否かを、稼働モードフラグ情報400のバックグラウンド取得モードC450を元に判定する(S1110)。
バックグラウンド取得モードで稼働中の場合、ステップS1120へ進んで、バックグラウンド取得モジュール350は、稼働モードフラグ情報400のバックグラウンドデータ取得元C460で指定されたいずれかの他サーバ220に、ブロックデータ700の送信要求を、要求するブロックデータのブロック番号を加えて送信する(S1020)。
なお、バックグラウンド取得モジュール350が要求するブロック番号は、図14に示すオンデマンドデータ取得進捗管理情報1400のバックグラウンド取得による取得済み最新ブロック番号C1410の値よりも「1」だけ大きなものを選択し、古いブロック番号から順番にバックグラウンドで取得する。
なお、バックグラウンド取得処理による取得済み最新ブロック番号C1410の初期値を、オンデマンドデータ取得開始時ブロック番号C1420と同じ値とし、さらに毎回「1」だけ小さなものを選択することで、新しいブロック番号から順番に取得するようにしてもよい。
バックグラウンド取得モジュール350から、ブロック送信要求を受け取ったサーバ220は、要求されたブロック番号のブロックデータ700を返送する。次に、バックグラウンド取得モジュール350は、送信要求したブロックデータ700を受信(S1130)した後、そのブロックデータ700をブロック確定処理によってコミットする(S900)。なお、ブロック確定処理は、上述の図9のフローチャートで行われる。
次に、バックグラウンド取得モジュール350は、オンデマンドデータ取得進捗管理情報1400のバックグラウンド取得による取得済み最新ブロック番号C1410の値を、ステップS900でコミットしたブロック番号で更新する(S1140)。
次に、バックグラウンド取得モジュール350は、オンデマンドデータ取得進捗管理情報1400のバックグラウンド取得による取得済み最新ブロック番号C1410の値と、オンデマンドデータ取得開始時ブロック番号C1420の値とを比較する(S1150)。
取得済み最新ブロック番号C1410とオンデマンドデータ取得開始時ブロック番号C1420の値が同一であった場合、ステップS1160の処理へ進み、同一でない場合には処理を終了する。
ステップS1160では、バックグラウンド取得モジュール350が、全てのバックグラウンド取得処理が完了したとみなし、以後はオンデマンドデータ取得処理のためのコミット同期処理(図9のステップS920)が不要であるため、バックグラウンド取得モジュール350は、コミット同期終了依頼を、稼働モードフラグ情報400のオンデマンドデータ取得元C420で指定されたサーバ220に送信する(S1160)。
なお、コミット同期終了依頼を受信したサーバ220上のブロックチェーンプログラム300は、稼働モードフラグ情報400のコミット同期モードC430を「false」に設定し、コミット同期の処理を以後実施しないようにする。
次に、バックグラウンド取得処理も以後不要のため、バックグラウンド取得モジュール350は稼働モードフラグ情報400のバックグラウンド取得モードC450を「false」に設定し、バックグラウンド取得モードでの稼働を終了する(S1170)。
上記処理によって、ブロックチェーンシステムに追加されたサーバ220は、所定の周期毎にバックグラウンド取得処理を実行して、既存のサーバ220が既に処理したブロックデータ700を蓄積することができる。
図12は、オンデマンドデータ取得初期化処理(S1200)の一例を示すフローチャートである。ブロックチェーンプログラム300が、ブロックチェーンシステム管理者などが管理端末225を利用してブロックチェーンプログラム300の設定変更を実施したことを契機として、ブロックチェーンプログラム300がオンデマンドデータ取得処理のための初期化処理を行う。
まず、新規のサーバ220-2上のブロックチェーンプログラム300は、稼働モードフラグ情報400で所定の既存のサーバ220-1にコミット同期依頼を送信する(S1201)。
既存のサーバ220-1上のブロックチェーンプログラム300は、コミット同期依頼を受信すると(S1202)、稼働モードフラグ情報400のコミット同期モードC430を「true」に設定し、コミット同期モードフラグをセットする(S1203)。なお、このとき、既存のサーバ220-1では、稼働モードフラグ情報400のコミット同期先C440に、コミット同期依頼を送信した新規のサーバ220-2の情報を格納する。以後、既存のサーバ220-1のブロックチェーンプログラム300は、ブロックデータ700のコミット時に、コミットするブロックデータ700を、ステップS1201にてコミット同期依頼を送信したブロックチェーンプログラム300にも同期的に送信する(図9のステップS910、S920)。
次に、既存のサーバ220-1のブロックチェーンプログラム300はコミット同期準備完了通知と、ブロックチェーンプログラム300が保持する最新のブロックデータ700とを送信する(S1204)。
コミット同期依頼を送信した新規のサーバ220-2のブロックチェーンプログラム300がコミット同期準備完了通知を受け付けると(S1205)、稼働モードフラグ情報400のオンデマンドデータ取得モードC410を「true」に設定し、オンデマンドデータ取得モードフラグをセットする(S1206)。なお、このとき、稼働モードフラグ情報400のオンデマンドデータ取得元C420に、ステップS1201でコミット同期開始依頼を送信した既存のサーバ220-1の情報を格納する。
次に、ステップS1204にて既存のサーバ220-1上のブロックチェーンプログラム300が送信した最新のブロックデータ700のブロックを、新規のサーバ220-2のブロックチェーンプログラム300はブロック確定処理によりデータベース285にコミットする(S900)。
次に、新規のサーバ220-2では、ステップS1204にて既存のサーバ220-1上のブロックチェーンプログラム300が送信した最新のブロックデータ700のブロック番号を、オンデマンドデータ取得進捗管理情報1400のオンデマンドデータ取得開始時ブロック番号C1420の値にセットする(S1208)。この値は、バックグラウンド取得処理の終了判定時(S1150)に利用される。
さらに、上記のステップS900とステップS1204の処理により、新規のサーバ220-2のブロックチェーンプログラム300は、受け取ったブロックデータ700と、このブロックデータ700よりも古い全てのブロックデータ700を仮想的に保持していることとなる。
すなわち、新規のサーバ220-2では、オンデマンドデータ取得初期化処理時に、既存のサーバ220-1から受け取ったブロックデータ700をコミットし、さらに、オンデマンドデータ取得開始時ブロック番号C1420を更新することで、このブロックデータ700よりも古い全てのブロックデータ700を仮想的に保持することができる。換言すれば、新規のサーバ220-2では、オンデマンドデータ取得開始時ブロック番号C1420を最古のブロック番号として扱うことができる。
図13は、オンデマンド取得処理により取得済みであるKeyの一覧を管理し、オンデマンドデータ取得モジュール340がオンデマンドデータ取得処理の要否を判定するための保持データ管理情報1300の構成例である。
保持データ管理情報1300は、ブロックチェーンプログラム300がメモリ270上に保持するが、ディスクドライブ280上に格納してもよい。保持データ管理情報1300のデータは、インタフェース種別C1310と、開始Key C1320と、終了Key C1330と、から構成される。
インタフェース種別C1310は、このデータが、どのインタフェース種別における取得済みKeyを示すものであるかを判断するためのものである。開始Key C1320は、前記インタフェース種別C1310が単一Keyクエリである場合、取得済みのKeyを、範囲Keyクエリの場合、範囲の開始Keyを示す。終了Key C1330は、前記インタフェース種別C1310が範囲Keyクエリの場合、範囲の終了Keyを示す。
図14は、ブロックチェーンプログラム300上のオンデマンドデータ取得モジュール340が保持する、オンデマンドデータ取得進捗管理情報1400の構成例である。オンデマンドデータ取得進捗管理情報1400は、バックグラウンド取得モジュール350がバックグラウンド取得の終了判定に利用するための管理情報である。
オンデマンドデータ取得進捗管理情報1400は、ブロックチェーンプログラム300がメモリ270上に保持するが、ディスクドライブ280上に格納してもよい。オンデマンドデータ取得進捗管理情報1400は、バックグラウンド取得による取得済み最新ブロック番号C1410と、オンデマンドデータ取得開始時ブロック番号C1420と、を含む。
バックグラウンドによる取得済み最新ブロック番号C1410は、初期値は0であり、バックグラウンド取得モジュール350がブロックデータを受信した際に更新する。オンデマンドデータ取得開始時ブロック番号C1420は、オンデマンドデータ取得初期化処理(S1200)において、ブロックチェーンプログラム300が設定する。
以上、本実施例1によれば、ブロックチェーンシステムにて新たに追加したサーバ220-2は、ブロックチェーンデータ290を、事前に全て取得するのではなく、ブロックチェーンプログラム300内のオンデマンドデータ取得モジュール340により既存のサーバ220-1からオンデマンドに取得する。
そのため、既存のブロックチェーンデータ290が大容量であっても、新たに追加したサーバ220-2上のブロックチェーンプログラム300は、迅速にトランザクション処理を開始できる。なお、ブロックチェーンプログラム300内にてオンデマンドデータ取得処理を実施するため、ブロックチェーンデータ290の整合性が損なわれることはない。
加えて、既存のサーバ220-1が自身のブロックチェーンデータ290を更新する際には、新規のサーバ220-2にも更新する内容を同期的に反映させる。オンデマンドデータ取得モジュール340はスマートコントラクト310からデータベース285へのアクセスインタフェースが複数種類あることを考慮してオンデマンドデータ取得処理を行うため、トランザクションの実行結果の整合性が損なわれることはない。
なお、上記実施例1では、ディスクドライブ280にブロックチェーンデータ290を保持するデータベース285を格納する例を示したが、これに限定されるものではなく、サーバ220に接続されたストレージ装置にデータベース285を格納するようにしてもよい。また、データベース285をKey-Value形式で構成する例を示したが、これに限定されるものではなく、リレーショナル形式などを採用してもよい。
以下、図面を用いて本発明の実施例2を詳細に説明する。なお、以下の説明では実施例1との差分のみを示す。
実施例1では、オンデマンドデータ取得元のサーバ220は固定の1つである必要があった。コミット同期処理(図9のステップS920)により、新規のサーバ220-2と既存のサーバ220-1は、オンデマンドデータ取得開始時ブロック番号C1420以降のブロックデータ700を常に同期した状態で保持している。
しかし、新規のサーバ220-2が、別の既存のサーバ220-nに対して再度コミット同期依頼を送信(図12のステップS1201)するとき、実施例1の処理では、新規のサーバ220-2と既存のサーバ220-nがどのブロックデータ700を保持しているのかを考慮していない。このため、コミット同期処理が正常に行われず、新規のサーバ220-2側でブロックデータ700の欠損が生じる恐れがある。
例えば、新規のサーバ220-2がブロック番号10番までのブロックデータ700を保持しており、既存のサーバ220-nがブロック番号12番までのブロックデータを保持している状態で、オンデマンドデータ取得初期化処理S1200(図12)を実施すると、既存のサーバ220-nはブロック番号13番からのブロックデータ700を新規のサーバ220-2にコミット同期するため、新規のサーバ220-2はブロック番号11番および12番のブロックデータを受け取り損ねてしまう。
そこで、本実施例2では、オンデマンドデータ取得初期化処理にて、新規のサーバ220-2と既存のサーバ220-1が所持するブロック番号を考慮したコミット同期開始処理を実施する。
図15および図16は、オンデマンドデータ取得初期化処理(S1500)を詳細に説明するためのフローチャートの一例である。本処理は前記実施例1の図12と同様に実施されるが、ステップS1501からステップS1507の処理が前記実施例1とは相違する。
まず、新規のサーバ220-2のブロックチェーンプログラム300は、自身が保持するブロックデータ700の最新ブロック番号の情報を加えて、既存のサーバ220-1のブロックチェーンプログラム300に、コミット同期開始依頼を送信する(S1501)。
既存のサーバ220-1のブロックチェーンプログラム300が、コミット同期開始依頼を受信すると、新規のサーバ220-2が保持するブロックデータ700の最新ブロック番号と、既存のサーバ220-1が保持するブロックデータの最新ブロック番号C1410とを比較する(S1502)。
新規のサーバ220-2のほうがより新しいブロックデータ700を保持している場合、既存のサーバ220-1上のブロックチェーンプログラム300は、自身が保持していないが新規のサーバ220-2が保持している新しいブロックデータ700の全てについて(S1503)、任意の他のサーバ220-nより取得し(S1504)、ブロック確定処理を実施する(S900)。
また、新規のサーバ220-2が保持するブロックデータ700の最新ブロック番号と、既存のサーバ220-1が保持するブロックデータ700の最新ブロック番号とを比較(S1505)する。
既存のサーバ220-1のほうがより新しいブロックデータを保持している場合、既存のサーバ220-1上のブロックチェーンプログラム300は、自身が保持しているが新規のサーバ220-2が保持していない新しいブロックデータ全てについて(S1506)、新規のサーバ220-2上のブロックチェーンプログラム300にブロックデータ700を送信する(S1507)。
新規のサーバ220-2上のブロックチェーンプログラム300は、ブロックデータを受信すると、そのブロックデータの確定処理をする(S900)。その後の処理(S1250~S1208)は、実施例1と同様である。
新規のサーバ220-2について、オンデマンドデータ取得元を変更する場合、ブロックチェーンシステムの管理者は、稼働モードフラグ情報400のオンデマンドデータ取得元C420を別のサーバ220の情報に書き換え、図15および図16に示したオンデマンドデータ取得初期化処理S1500を再度実行させる。
そして、新規のサーバ220-2のブロックチェーンプログラム300が変更前と異なるサーバ220-nに対してコミット同期開始以来処理を送信することで、異なるサーバ220-nからのコミット同期が開始され、オンデマンドデータ取得処理を行えるようになる。
以上、本実施例2によれば、ブロックチェーンシステムにて新たに追加したサーバ220-2は、ブロックチェーンデータ290を、事前に全て取得するのではなく、ブロックチェーンプログラム300内のオンデマンドデータ取得モジュール340により既存のサーバ220-1からオンデマンドに取得する。このとき、オンデマンドデータ取得元サーバ220-1を後から変更可能であるため、特定のサーバ220に負荷が集中し続けることはない。
また、上記実施例2では、オンデマンドデータ取得元サーバを変更可能とするため、オンデマンドデータ取得処理時に、新規のサーバ220-2のブロックチェーンプログラム300と、既存のサーバ220-1のブロックチェーンプログラム300で、保持するブロックデータ700のバージョン(ブロック番号)を比較し、両者のバージョンを先に合わせることで、新規のサーバ220-2が以前に別の既存のサーバ220-nからオンデマンドデータ取得処理を実施していたとしても、当該データを損なうことなく、新たな既存のサーバ220-1からオンデマンドデータ取得処理を実施することができる。
以下、図面を用いて本発明の実施例3を詳細に説明する。なお、以下の説明では、実施例2との差分のみを示す。
本実施例3は前記実施例2とは異なり、オンデマンドデータ取得元のサーバ220を同時に複数設定可能とすることで、複数のサーバ220から並列的にオンデマンドデータ取得を行う。これにより、特定のサーバ220に負荷が偏ることなく、オンデマンドデータ取得処理を行うことが可能となる。
図17は、実施例3における、稼働モードフラグ情報1700の構成図である。本実施例3では、前記実施例1の図4に示した稼働モードフラグ情報400に代わって稼働モードフラグ情報1700を使用する。
稼働モードフラグ情報1700は、実施例1、2における稼働モードフラグ情報400(図4)とは、オンデマンドデータ取得元C1710と、コミット同期先C1720が異なる。
本実施例3の稼働モードフラグ情報1700のオンデマンドデータ取得元C1710およびコミット同期先C1720は、複数のサーバ220の情報を設定可能である。ブロックチェーンシステムの管理者などが、管理端末225を利用してオンデマンドデータ取得元C1710に所定の個数のサーバ220の情報を設定する。
図18は、実施例3における、ブロックチェーンプログラム300が実行するブロックデータ確定処理の詳細を説明するためのフローチャートの一例である。なお、前記実施例1、2におけるブロックデータ確定処理(図9)とは、ステップS1810およびステップS1820が異なる。
まず、ブロックチェーンプログラム300は、稼働モードフラグ情報400のコミット同期モードC430が「true」であるか否かを取得し、自身がコミット同期モードで稼働中かを判定する(S910)。
自身がコミット同期モードで稼働中の場合、ブロックチェーンプログラム300は、稼働モードフラグ情報1700のコミット同期先C1720で指定された全てのサーバ220について(S1810)、自身がコミット処理中のブロックデータ700を送信し、応答を待つ(S1820)。
なお、ブロックデータ700を受信したサーバ220は、ブロック確定処理のステップS930以降を実施したのち、ブロック確定処理完了通知の応答を送信元のサーバ220に返す。なお、ブロックチェーンプログラム300は、コミット同期先C1720の全てのサーバ220についてステップS1820の処理が完了するとステップS930に進む。
ステップS930以降は前記実施例1と同様であり、ブロックデータ700の確定処理と、データベース285のコミット処理が完了する。
図19、図20は、実施例3における、オンデマンドデータ取得初期化処理を詳細に説明するためのフローチャートの一例である。本処理の流れは実施例2の図15と同様であるが、ステップS1901およびステップS2001が異なる。
まず、新規のサーバ220-2のブロックチェーンプログラム300は、自身が保持するブロックデータ700の最新ブロック番号の値および稼働モードフラグ情報1700のオンデマンドデータ取得元C1710の値を加えて、稼働モードフラグ情報1700のオンデマンドデータ取得元C1710で指定された全ての既存のサーバ220のブロックチェーンプログラム300に、コミット同期開始依頼を送信する(S1901)。
その後の処理は前記実施例2の図15と同様であるが、既存のサーバ220-1のブロックチェーンプログラム300は、ステップS2001にて、コミット同期モードフラグをセットするだけではなく、ステップS1901で新規のサーバ220-2が送信した稼働モードフラグ情報1700のオンデマンドデータ取得元C1710の値を、稼働モードフラグ情報1700のコミット同期先C1720に書き込む。
これにより、ブロック確定処理におけるコミット同期処理にて、これら複数のサーバ220の全てに対して同期的にブロックデータ確定依頼が送信され、コミット処理を行うサーバ220と、稼働モードフラグ情報1700のコミット同期先C1720に設定されたサーバ220とで、ブロックチェーンデータ290が同期された状態となる。その後の処理は、実施例2における図15と同様である。
図21は、実施例3における、オンデマンドデータ処理を詳細に説明するためのフローの一例である。処理の流れは実施例1の図8と同様であるが、ステップS2101からステップS2103が前記実施例1と相違する。
ステップS2101にて、オンデマンドデータ取得モジュール340は、既存のサーバ220-1からオンデマンドデータ取得処理を行う。そのとき、オンデマンドデータ取得モジュール340は、例えば、稼働モードフラグ情報1700のオンデマンドデータ取得元C1710のサーバ情報の中から、ランダムまたはラウンドロビンで1つのサーバ220を選択し、選択されたサーバ220にデータ取得要求を送信する。
あるいは、データベース285へのアクセスに利用するインタフェース種別C520が範囲Keyクエリのとき、オンデマンドデータ取得モジュール340は、範囲Keyクエリで取得する範囲を等分し、稼働モードフラグ情報1700のオンデマンドデータ取得元C1710で指定されたサーバ220の全てに対してデータ取得要求を送信してもよい。
そして、オンデマンドデータ取得モジュール340は、ステップS2102にて、全てのサーバ220からの応答を待ち、ブロックデータ700の取得結果を統合する。ステップS2103においても、オンデマンドデータ取得モジュール340は、例えば、稼働モードフラグ情報1700のオンデマンドデータ取得元C1710のサーバ情報の中から、ランダムまたはラウンドロビンで1つのサーバ220つを選択し、選択されたサーバ220にデータ取得要求を送信する。
以上、本実施例3によれば、ブロックチェーンシステムにて新たに追加したサーバ220-2は、ブロックチェーンデータ290を、事前に全て取得するのではなく、ブロックチェーンプログラム300内のオンデマンドデータ取得モジュール340により既存のサーバ220からオンデマンドに取得する。このとき、オンデマンドデータ取得元のサーバ220を複数設定可能であるため、特定のサーバ220に負荷が集中することはない。
以上のように、本実施例3では、オンデマンドデータ取得元C1710に複数のサーバ220の情報を登録しておくことで、オンデマンドデータ取得時に、複数のサーバから並列的にブロックデータ700の取得処理を実行したり、複数のサーバ220をラウンドロビン(連続的)で切り替えてブロックデータ700の取得処理を実行することが可能となる。
<まとめ>
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
また、上記の各構成、機能、処理部、および処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、および機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
200 クライアント
220-1~220-n サーバ
290 ブロックチェーンデータ
300 ブロックチェーンプログラム
310 スマートコントラクト
320 トランザクション処理モジュール
340 オンデマンドデータ取得モジュール
700 ブロックデータ
1400 オンデマンドデータ取得進捗管理情報

Claims (10)

  1. データを格納する記憶部と、プロセッサ上で稼働して前記データを処理する処理部とを各々有する複数のサーバを用い、
    前記複数のサーバの記憶部に分散して格納した処理対象情報を、前記複数のサーバがトランザクション要求を受けて処理するデータ管理方法において、
    前記サーバの記憶は、
    前記処理対象情報を有する第1のデータと、
    前記トランザクション要求に基づいて前記処理対象情報を処理したトランザクション処理履歴情報を含む第2のデータと、
    を格納しており、
    前記第1のデータ及び第2のデータには、関連するトランザクションが異なる複数のデータが含まれており、
    前記サーバには、第1のサーバと、複数の第2のサーバとが含まれており、
    前記複数の第2のサーバは、前記第1のデータ及び第2のデータを同期させて保持しており、
    前記トランザクション要求を受信した第1のサーバは、前記トランザクション要求にかかる第1のデータを少なくとも1つの前記第2のサーバの前記記憶部から読み出し、前記トランザクション要求を処理して処理結果を前記トランザクション要求の要求元に返信し、トランザクション処理履歴情報を含む第2のデータと処理結果を反映した前記第1のデータとを自サーバに格納するとともに、当該処理を第2のサーバの前記第1のデータに反映させるための第2のデータを前記第2のサーバに送り、
    前記第1のサーバは、
    前記第1のデータを保持する第2のサーバをオンデマンドデータ取得元サーバとして設定し、
    前記オンデマンドデータ取得元サーバは、前記第1のサーバをコミット同期サーバとして設定しており、前記第1のデータについての更新を反映させる第2のデータを前記第1のサーバに送信し、
    前記第1のサーバは、前記第1のデータの読み出しでは、前記オンデマンドデータ取得元サーバにより同期されている第1のデータを自サーバの記憶部で検索し、前記自サーバの記憶部で取得できない場合にオンデマンドデータ取得元サーバの記憶部から前記第1のデータを取得する
    データ管理方法。
  2. 請求項1において、
    前記第1のサーバは、新規に追加されたサーバであることを特徴とするデータ管理方法。
  3. 請求項1において、
    前記トランザクション要求にかかるクエリが、前記第1のデータを特定した第1のクエリを含む場合に、前記第1のデータを自サーバの記憶部で検索し、前記1のクエリとは異なる第2のクエリを含む場合には、前記オンデマンドデータ取得元サーバの記憶部から前記第1のデータを取得する
    データ管理方法。
  4. 請求項1において、
    前記第1のサーバは、前記第2のデータを保持する第2のサーバをバックグラウンドデータ取得サーバとして設定し、前記バックグラウンドデータ取得サーバから前記第2のデータを取得し、
    前記オンデマンドデータ取得元サーバから取得する前記第2のデータのトランザクションは、前記自サーバの有する第1のデータにかかるトランザクションより新しく、
    前記バックグラウンドデータ取得サーバから取得する前記第2のデータのトランザクションは、前記自サーバの有する第1のデータにかかるトランザクションより古い、
    データ管理方法。
  5. 請求項4において、
    前記バックグラウンドデータ取得サーバから取得した第2のデータに基づいて、前記第1のデータを作成する
    データ管理方法。
  6. 請求項5において、
    前記第2のデータには、ブロック番号が付されており、
    前記自サーバは、前記ブロック番号に基づいて、受信した前記第2のデータを前記第1のデータへの反映要否を判断する
    データ管理方法。
  7. 請求項1において、
    前記第2のデータには、前記第2のデータ同士の関係を示すハッシュ値が含まれており、
    前記トランザクション要求の処理を開始する前に、前記第1のサーバは第2のサーバから前記第2のデータを取得しており、
    前記第1のサーバは、前記処理の開始後に、前記処理のトランザクション処理履歴情報と、前記第2のデータから作成したハッシュ値を作成して前記第2のサーバに送る
    データ管理方法。
  8. 請求項1において、
    前記第2のデータには、ブロック番号が付されており、
    前記第1のサーバは、保有する第2のデータのブロック番号を前記オンデマンドデータ取得元サーバに送信し、
    前記オンデマンドデータ取得元サーバは、受信した前記ブロック番号に基づいて第2のデータを選択して前記第1のサーバに送信する
    データ管理方法。
  9. 請求項1において、
    前記第1のサーバは、
    前記第1のデータを保持する少なくとも1つの第2のサーバをオンデマンドデータ取得元サーバとして設定し、
    複数の前記2のサーバは、前記第1のサーバをコミット同期サーバとして設定しており、前記第1のデータについての更新を反映させる第2のデータを前記第1のサーバに送信する
    データ管理方法。
  10. データを格納する記憶部と、プロセッサ上で稼働して前記データを処理する処理部とを各々有する複数のサーバを用い、
    前記複数のサーバの記憶部に分散して格納した処理対象情報を、前記複数のサーバがトランザクション要求を受けて処理するデータ管理システムにおいて、
    前記サーバの記憶は、
    前記処理対象情報を有する第1のデータと、
    前記トランザクション要求に基づいて前記処理対象情報を処理したトランザクション処理履歴情報を含む第2のデータと、
    を格納しており、
    前記第1のデータ及び第2のデータには、関連するトランザクションが異なる複数のデータが含まれており、
    前記サーバには、第1のサーバと、複数の第2のサーバとが含まれており、
    前記複数の第2のサーバは、前記第1のデータ及び第2のデータを同期させて保持しており、
    前記トランザクション要求を受信した第1のサーバは、前記トランザクション要求にかかる第1のデータを少なくとも1つの前記第2のサーバの前記記憶部から読み出し、前記トランザクション要求を処理して処理結果を前記トランザクション要求の要求元に返信し、トランザクション処理履歴情報を含む第2のデータと処理結果を反映した前記第1のデータとを自サーバに格納するとともに、当該処理を第2のサーバの前記第1のデータに反映させるための第2のデータを前記第2のサーバに送り、
    前記第1のサーバは、
    前記第1のデータを保持する第2のサーバをオンデマンドデータ取得元サーバとして設定し、
    前記オンデマンドデータ取得元サーバは、前記第1のサーバをコミット同期サーバとして設定しており、前記第1のデータについての更新を反映させる第2のデータを前記第1のサーバに送信し、
    前記第1のサーバは、前記第1のデータの読み出しでは、前記オンデマンドデータ取得元サーバにより同期されている第1のデータを自サーバの記憶部で検索し、前記自サーバの記憶部で取得できない場合にオンデマンドデータ取得元サーバの記憶部から前記第1のデータを取得する
    データ管理システム。
JP2018097972A 2018-05-22 2018-05-22 データ管理方法およびデータ管理システム Active JP7036665B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018097972A JP7036665B2 (ja) 2018-05-22 2018-05-22 データ管理方法およびデータ管理システム
US16/395,480 US11093484B2 (en) 2018-05-22 2019-04-26 Data management method and data management system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018097972A JP7036665B2 (ja) 2018-05-22 2018-05-22 データ管理方法およびデータ管理システム

Publications (3)

Publication Number Publication Date
JP2019204216A JP2019204216A (ja) 2019-11-28
JP2019204216A5 JP2019204216A5 (ja) 2021-06-17
JP7036665B2 true JP7036665B2 (ja) 2022-03-15

Family

ID=68614580

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018097972A Active JP7036665B2 (ja) 2018-05-22 2018-05-22 データ管理方法およびデータ管理システム

Country Status (2)

Country Link
US (1) US11093484B2 (ja)
JP (1) JP7036665B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10861008B2 (en) 2018-12-21 2020-12-08 Capital One Services, Llc System and method for optimizing cryptocurrency transactions
US10637644B1 (en) * 2018-12-21 2020-04-28 Capital One Services, Llc System and method for authorizing transactions in an authorized member network
US20200233866A1 (en) * 2019-08-30 2020-07-23 Alibaba Group Holding Limited Blockchain transaction query method and system
JP7354781B2 (ja) 2019-11-11 2023-10-03 株式会社デンソー 回転電機の製造方法
CN112988804A (zh) * 2019-12-12 2021-06-18 陕西西部资信股份有限公司 数据传输方法及***
US20230370279A1 (en) * 2020-08-27 2023-11-16 Nec Corporation Terminal device, data management device, management system, processing method, and non-transitory computer-readable medium storing a program
CN112306645B (zh) * 2020-12-24 2021-05-04 北京百度网讯科技有限公司 以太坊虚拟机的事务处理方法、装置、设备和介质
CN112286643B (zh) * 2020-12-24 2021-04-20 北京百度网讯科技有限公司 以太坊虚拟机的事务处理方法、装置、设备和介质
CN114124958A (zh) * 2021-11-26 2022-03-01 智昌科技集团股份有限公司 一种分布式数据采集***运行方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007063944A1 (ja) 2005-11-30 2007-06-07 International Business Machines Corporation 無停止トランザクション処理システム
JP2013065104A (ja) 2011-09-15 2013-04-11 Toshiba Corp 負荷分散システム、データアクセス装置、及び負荷分散方法
JP2015014929A (ja) 2013-07-05 2015-01-22 日本電信電話株式会社 マスタサーバ、情報同期方法、および、情報同期プログラム
JP2017091149A (ja) 2015-11-09 2017-05-25 日本電信電話株式会社 ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9043637B2 (en) 2010-12-14 2015-05-26 Hitachi, Ltd. Failure recovery method in information processing system and information processing system
SG11201802541QA (en) * 2015-09-29 2018-04-27 Soracom Inc Control apparatus for gateway in mobile communication system
US10733602B2 (en) * 2016-09-29 2020-08-04 Microsoft Technology Licensing, Llc. Heartbeats and consensus in verifiable outsourced ledgers
US10262053B2 (en) * 2016-12-22 2019-04-16 Palantir Technologies Inc. Systems and methods for data replication synchronization
CN110537346B (zh) * 2017-03-06 2023-03-24 诺基亚技术有限公司 安全去中心化域名***
US10579368B2 (en) * 2017-03-10 2020-03-03 Salesforce.Com, Inc. Blockchain version control systems
CN107196900B (zh) * 2017-03-24 2020-04-24 创新先进技术有限公司 一种共识校验的方法及装置
US10554649B1 (en) * 2017-05-22 2020-02-04 State Farm Mutual Automobile Insurance Company Systems and methods for blockchain validation of user identity and authority
US10565192B2 (en) * 2017-08-01 2020-02-18 International Business Machines Corporation Optimizing queries and other retrieve operations in a blockchain
US10915641B2 (en) * 2017-10-30 2021-02-09 Pricewaterhousecoopers Llp Implementation of continuous real-time validation of distributed data storage systems
US11429967B2 (en) * 2018-03-13 2022-08-30 Nec Corporation Mechanism for efficient validation of finality proof in lightweight distributed ledger clients
WO2019202393A1 (en) * 2018-04-16 2019-10-24 Slock.It Gmbh Trustless statelessincentivized remote node network using minimal verification clients
US20190354518A1 (en) * 2018-05-01 2019-11-21 Michael Zochowski Chain mesh network for decentralized transaction systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007063944A1 (ja) 2005-11-30 2007-06-07 International Business Machines Corporation 無停止トランザクション処理システム
JP2013065104A (ja) 2011-09-15 2013-04-11 Toshiba Corp 負荷分散システム、データアクセス装置、及び負荷分散方法
JP2015014929A (ja) 2013-07-05 2015-01-22 日本電信電話株式会社 マスタサーバ、情報同期方法、および、情報同期プログラム
JP2017091149A (ja) 2015-11-09 2017-05-25 日本電信電話株式会社 ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム

Also Published As

Publication number Publication date
US20190361874A1 (en) 2019-11-28
US11093484B2 (en) 2021-08-17
JP2019204216A (ja) 2019-11-28

Similar Documents

Publication Publication Date Title
JP7036665B2 (ja) データ管理方法およびデータ管理システム
US10157108B2 (en) Multi-way, zero-copy, passive transaction log collection in distributed transaction systems
US10296371B2 (en) Passive two-phase commit system for high-performance distributed transaction execution
Almeida et al. ChainReaction: a causal+ consistent datastore based on chain replication
US11061884B2 (en) Method and system to accelerate transaction commit using non-volatile memory
Du et al. Clock-si: Snapshot isolation for partitioned data stores using loosely synchronized clocks
US20160292249A1 (en) Dynamic replica failure detection and healing
US20100169456A1 (en) Information processing system and load sharing method
WO2019231690A1 (en) Distributed transactions in cloud storage with hierarchical namespace
Zawirski et al. SwiftCloud: Fault-tolerant geo-replication integrated all the way to the client machine
TW201229795A (en) Web service patterns for globally distributed service fabric
US11032156B1 (en) Crash-consistent multi-volume backup generation
CN110895484A (zh) 任务调度方法及装置
CN110895487B (zh) 分布式任务调度***
US11627122B2 (en) Inter-system linking method and node
US9984139B1 (en) Publish session framework for datastore operation records
US20210073198A1 (en) Using persistent memory and remote direct memory access to reduce write latency for database logging
GB2537446A (en) Database management system and method
US20140089260A1 (en) Workload transitioning in an in-memory data grid
CN110895483A (zh) 任务恢复方法及装置
Liu et al. Leader set selection for low-latency geo-replicated state machine
CN110895488A (zh) 任务调度方法及装置
US20230333945A1 (en) Scalable Low-Loss Disaster Recovery for Data Stores
Shi et al. Cheap and available state machine replication
JP2021529379A (ja) 検索サーバの集中型ストレージ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210430

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211028

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: 20220222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220303

R150 Certificate of patent or registration of utility model

Ref document number: 7036665

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150