(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024049305
(43)【公開日】2024-04-09
(54)【発明の名称】ブロックチェーンに基づくデータ高速処理装置及び方法
(51)【国際特許分類】
G06F 16/901 20190101AFI20240402BHJP
G06F 16/182 20190101ALI20240402BHJP
G06F 16/28 20190101ALI20240402BHJP
【FI】
G06F16/901
G06F16/182
G06F16/28
【審査請求】有
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023069824
(22)【出願日】2023-04-21
(31)【優先権主張番号】10-2022-0123759
(32)【優先日】2022-09-28
(33)【優先権主張国・地域又は機関】KR
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
2.MySQL
3.Oracle
(71)【出願人】
【識別番号】523133797
【氏名又は名称】ケイフォーセキュリティ カンパニー リミテッド
(74)【代理人】
【識別番号】100130111
【弁理士】
【氏名又は名称】新保 斉
(72)【発明者】
【氏名】パク、ギョン チョル
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175CA09
5B175KA06
(57)【要約】
【課題】 ブロックチェーンシステムに性能を極大化させるための資料構造を活用してデータを処理することから、データが増加しても性能効率に影響が出ないブロックチェーンに基づくデータ高速処理装置及び方法を提供すること。
【解決手段】 データ処理技術に関し、詳細には、ブロックチェーンシステムにおいてデータを処理するときに、性能を極大化可能な資料構造型方式により管理するブロックチェーンに基づくデータ高速処理装置及び方法に関する。<キーKey>:<バリューvalue>を格納するとき、最終的なバリューvalueはログ構造マージ(LSM:Log Structured Merge)木資料構造型方式により格納し、格納するときに用いるキーKeyは、B+木資料構造型として別途に格納して格納性能及び参照(読み込み)性能を従来の方式よりも改善することができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ブロックチェーンに基づくデータ高速処理装置において、
<キー>:<バリュー>のペアのうちのキーを管理するキー管理部と、
<キー>:<バリュー>のペアのうちのバリューを管理するバリュー管理部と、
を含む
ことを特徴とするブロックチェーンに基づくデータ高速処理装置。
【請求項2】
前記キーは、
B+木(B+ Tree)資料構造型ファイルに格納する
請求項1に記載のブロックチェーンに基づくデータ高速処理装置。
【請求項3】
索引(IX)をB+木(B+ Tree)資料構造型ファイルに格納する
請求項1に記載のブロックチェーンに基づくデータ高速処理装置。
【請求項4】
前記索引(IX)は、
前記キーに対応するバリューの位置情報を含む
請求項3に記載のブロックチェーンに基づくデータ高速処理装置。
【請求項5】
ブロックチェーンに基づくデータ高速処理装置が初期化をする方法において、
駆動のためのコンフィグレーション情報を読み込むステップと、
アクティブ(Active)状態のWALファイルの有無を確認するステップと、
不変(Immutable)状態のWALファイルの有無を確認するステップと、
フラッシュ(Flush)チャンネルを駆動するステップと、を含む
ことを特徴とするブロックチェーンに基づくデータ高速処理方法。
【請求項6】
WALファイル情報を活用して、MEMTableを生成する
請求項5に記載のブロックチェーンに基づくデータ高速処理装置。
【請求項7】
前記MEMTableが満杯になると、新たなWALファイルを生成する
請求項6に記載のブロックチェーンに基づくデータ高速処理装置。
【請求項8】
周期的なフラッシュ(Flush)を通じて、不変(Immutable)状態に対応するバリューログ(Value Log)ファイルを生成し、バリューインデックス(Value Index)ファイルをアップデートする
請求項5に記載のブロックチェーンに基づくデータ高速処理方法。
【請求項9】
請求項5に記載のブロックチェーンに基づくデータ高速処理方法を実行する
ことを特徴とするコンピューターにて読み取り可能な記録媒体に記録されたコンピュータープログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理技術に関し、より詳細には、ブロックチェーンシステムにおいてデータを処理するときに、性能を極大化可能な資料構造型方式により管理するブロックチェーンに基づくデータ高速処理装置及び方法に関する。
【背景技術】
【0002】
ブロックチェーンシステムが利用するデータベースは、既存のシステムにおいて活用されていたリレーショナルデータベース管理システム(RDBMS)ではなく、K-V(Key-Value)データベースと呼ばれるLevelDBである。
【0003】
LevelDBとは、KeyとValueを1つのペアにして速やかに格納及び参照できるように作成されたデータベースのことをいう。
【0004】
ブロックチェーンシステムにLevelDBを適用すれば、ブロックIDをKeyに設定し、valueに当たる値については、ブロックIDに当たるブロック情報値を指定することになる。したがって、ブロックIDに基づいて速やかにブロックチェーンに格納されたブロック値を参照することが可能になるのである。
【0005】
K-V(Key-Value)データベースは、K-Vのペアをファイルに格納するとき、木(ツリー)型の資料構造型として格納することになり、ほぼすべてのLevelDBにおいては、普遍的に頻繁に用いられるB+木(B+ Tree)の形式でデータを積んで格納する。
【0006】
B+木資料構造型は、Windowsオペレーティングシステム(OS)のファイルシステムのみならず、MySQL/Oracleなどの商用リレーショナルデータベース管理システムの資料格納構造として普遍的に頻繁に用いられる構造のものであって、効率よく多くのデータを格納できる方式であると言われている。
【0007】
しかしながら、格納性能(速度)と参照性能(読み込み速度)を考慮したとき、格納されるデータの数が増加すれば増加するほど、性能効率がO(nlogn)に低下すると言われている。
【0008】
ブロックチェーンのデータは、削除をせずに専ら追加専用(append-only)演算のみを行うため、ブロックが増加すれば増加するほど、LevelDBの性能は低下せざるを得ないと認められ、LevelDBがB+木資料構造型方式によりブロックを積むため、性能効率はB+木の効率(格納時にO(logN)、読み込み時にO(logN))に正比例して急減すると判断することができる。
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は、ブロックチェーンシステムに性能を極大化させるための資料構造を活用してデータを処理することから、データが増加しても性能効率に影響が出ないブロックチェーンに基づくデータ高速処理装置及び方法を提供する。
【0010】
本発明が解決しようとする技術的課題は、上述した技術的課題に何ら制限されるものではなく、言及されていない他の技術的課題は、次の記載から本発明が属する技術分野において通常の知識を有する者にとって明らかである。
【課題を解決するための手段】
【0011】
本発明の一態様によれば、ブロックチェーンに基づくデータ高速処理装置を提供する。
【0012】
本発明の一実施形態によるブロックチェーンに基づくデータ高速処理装置は、<キー>:<バリュー>のペアのうちのキーを管理するキー管理部と、<キー>:<バリュー>のペアのうちのバリューを管理するバリュー管理部と、を含んでいてもよい。
【0013】
本発明の他の態様によれば、ブロックチェーンに基づくデータ高速処理方法及びこれを実行するコンピュータープログラムを提供する。
【0014】
本発明の一実施形態によるブロックチェーンに基づくデータ高速処理方法及びこれを実行するコンピュータープログラムは、駆動のためのコンフィグレーション情報を読み込むステップと、アクティブ(Active)状態のWALファイルの有無を確認するステップと、不変(Immutable)状態のWALファイルの有無を確認するステップと、フラッシュ(Flush)チャンネルを駆動するステップと、を含んでいてもよい。
【発明の効果】
【0015】
本発明の実施形態によれば、<キーKey>:<バリューvalue>を格納するとき、最終的なバリューvalueはログ構造マージ(LSM:Log Structured Merge)木資料構造型方式により格納し、格納するときに用いるキーKeyは、B+木資料構造型として別途に格納して格納性能及び参照(読み込み)性能を従来の方式よりも改善することができる。
【0016】
本発明の効果は、上記の効果に何ら限定されることはなく、本発明の詳細な説明の欄または特許請求の範囲に記載の発明の構成から推論可能なあらゆる効果を網羅する。
【図面の簡単な説明】
【0017】
【
図1】本発明の一実施形態によるブロックチェーンに基づくデータ高速処理装置を説明するための図。
【
図2】本発明の一実施形態によるブロックチェーンに基づくデータ高速処理装置を説明するための図。
【
図3】本発明の一実施形態によるブロックチェーンに基づくデータ高速処理方法及び構造図を示す例示図。
【
図4】本発明の一実施形態によるブロックチェーンに基づくデータ高速処理方法及び構造図を示す例示図。
【
図5】本発明の一実施形態によるブロックチェーンに基づくデータ高速処理方法及び構造図を示す例示図。
【
図6】本発明の一実施形態によるブロックチェーンに基づくデータ高速処理方法及び構造図を示す例示図。
【
図7】本発明の一実施形態によるブロックチェーンに基づくデータ高速処理方法及び構造図を示す例示図。
【
図8】本発明の一実施形態によるブロックチェーンに基づくデータ高速処理方法及び構造図を示す例示図。
【発明を実施するための形態】
【0018】
本発明は、様々な変更を加えることができ、種々の実施形態を有することができるので、特定の実施形態を図面に例示し、発明の詳細な説明の欄において詳しく説明する。しかし、これは、本発明を特定の実施形態に対して限定しようとするものではなく、本発明の思想及び技術範囲に含まれるあらゆる変更、均等物ないし代替物を含む。本発明について説明するに当たって、本発明と関わる公知の技術についての具体的な説明が本発明の要旨を余計に曖昧にする虞があると認められる場合にはその詳細な説明を省略する。なお、この明細書及び特許請求の範囲において用いられる単数の表現は、文脈からみて明らかに他の意味を有さない限り、一般的に「一つ以上」を意味する。
【0019】
以下、添付図面に基づいて、本発明の好適な実施形態について詳しく説明する。添付図面に基づいて説明するに当たって、同一のまたは対応する構成要素には、同一の図面符号を付し、これについての重複する説明は省略する。
【0020】
ブロックチェーンシステムは、既存のシステムにおいて活用されていたリレーショナルデータベース管理システム(RDBMS)ではなく、キーKeyとバリューValueとを<キーKey>:<バリューvalue>の1つのペアにして速やかに格納及び参照できるように作成されたキー-バリュー(Key-Value)データベースを適用して利用する。キー-バリュー(Key-Value)データベースは、<キーKey>:<バリューvalue>のペアを格納するとき、普遍的にB+木の資料構造の形式でデータを格納する。
【0021】
本発明の実施形態によるブロックチェーンに基づくデータ高速処理装置10は、ブロックチェーンシステムにおいてキー-バリュー(Key-Value)を格納するとき、最終的なバリューvalueはログ構造マージ(LSM:Log Structured Merge)木資料構造型方式により格納し、格納するときに用いるキーKeyは、B+木資料構造型として別途に格納して格納性能及び参照(読み込み)性能を従来の方式よりも改善することができる。
【0022】
図1及び
図2は、本発明の一実施形態によるブロックチェーンに基づくデータ高速処理装置を説明するための図である。
【0023】
図1を参照すると、ブロックチェーンに基づくデータ高速処理装置10は、キー管理部100及びバリュー管理部200を含んでいてもよい。
【0024】
キー管理部100は、<キーKey>:<バリューvalue>のペアのうちのキーKeyを管理することができる。キー管理部100は、キーKeyをB+木資料構造型として格納することができる。キー管理部100は、キーKeyに対する速やかな検索のためにダイレクトキーインデックス(DKI:Direct Key Index)ファイルにキーKeyと索引Internal indeX, IXを登録(格納)することができる。キー管理部100は、<キーKey>:<バリューvalue>を読み込む過程において、<キーKey>に対する索引internal indeX, IXを速やかに検索することができる。
【0025】
バリュー管理部200は、<キーKey>:<バリューvalue>のペアのうちのバリューValueを管理することができる。
【0026】
バリュー管理部200は、バリューValueをログ構造マージ(LSM:Log Structured Merge)木資料構造型方式により格納することができる。例えば、バリュー管理部200は、バリューValueをValue Logファイルに格納することができる。
【0027】
ブロックチェーンに基づくデータ高速処理装置10は、<キーKey>:<索引Internal indeX, IX>をDKIファイルに登録することができる。例えば、DKIファイルは、B+木資料構造型方式のものであってもよい。
【0028】
ブロックチェーンに基づくデータ高速処理装置10は、<索引Internal indeX, IX>をValue Indexファイルに登録することができる。例えば、Value Indexファイルは、B+木資料構造型方式のものであってもよい。
【0029】
ブロックチェーンに基づくデータ高速処理装置10は、<バリューvalue>をValue Logファイルに格納することができる。例えば、Value Logファイルは、ログ構造マージ(LSM:Log Structured Merge)木資料構造型方式によるLogファイルであってもよい。
【0030】
ブロックチェーンに基づくデータ高速処理装置10は、入力されたキーKeyを用いて、DKIファイルから索引IX情報を探し出し、索引IX情報を用いて、Value Indexファイルからバリューvalueの位置情報を探し出し、バリューvalueの位置情報を用いて、Value Logファイルからバリューvalueの位置情報を照会することができる。
【0031】
ブロックチェーンに基づくデータ高速処理装置10は、バリューValueを照会するために、キーKeyを入力すれば、B+木ファイル構造のDKIファイル(Direct Key Index File)からキーKeyを探し出す。ブロックチェーンに基づくデータ高速処理装置10は、Logファイルから検索されたキーKeyに対応するバリューvalueの位置情報(Fid, Offset, EntrySize)を取得することができる。ブロックチェーンに基づくデータ高速処理装置10は、取得したFid(file id)に相当するLogファイルを探し出し、当該Logファイルにおいて定められた方式のオフセットOffsetを計算した後、エントリーサイズEntrySizeに見合う分のデータを読み込むと、当該データ構造の中にあるバリューValueを照会することができる。
【0032】
図2を参照すると、ブロックチェーンに基づくデータ高速処理装置10は、DKIファイル(Direct Key Index File)に<キーKey>:<索引Internal indeX, IX>を登録し、<キーKey>:<バリューvalue>の読み込み過程においてキーKeyに対する索引Internal indeX, IXを読み込んで速やかにバリューValueを照会することができる。例えば、索引Internal indeX, IXは、キーKeyに対応するバリューvalueの位置情報(Fid, Offset, EnteySize)を含んでいてもよい。
【0033】
ブロックチェーンに基づくデータ高速処理装置10は、<キーKey>:<バリューvalue>の書き込み/読み込みを処理する過程において、アクティブ(Active)、不変(Immutable)、及びフラッシュト(Flushed)の状態のうちのいずれか一つに情報を保持することができる。ブロックチェーンに基づくデータ高速処理装置10は、<キーKey>:<バリューvalue>の書き込み/読み込みを処理する過程において、同じデータをログ先行書き込み(WAL)ファイルとメモリー(MEMTable)の上に重複して格納し、かつ、保持することができる。
【0034】
ブロックチェーンに基づくデータ高速処理装置10は、アクティブ(Active)状態のMEMTableとWALファイルを一定のサイズに設定して、リアルタイム入力値<索引Internal indeX, IX>:<バリューvalue>の書き込み/読み込みに用いることができる。
【0035】
ブロックチェーンに基づくデータ高速処理装置10は、アクティブ(Active)状態のMEMTableの設定サイズが上限に達する(あるいは、フルになる、満杯になる、いっぱいになる)と、MEMTableとWALファイルを不変(Immutable)のMEMTableに登録し、不変(Immutable)の状態に設定する。
【0036】
ブロックチェーンに基づくデータ高速処理装置10は、不変(Immutable)状態のMEMTableとWALファイルを非同期的にValue IndexファイルとValue Logファイルとしてデータを移した後、削除することができる。
【0037】
ブロックチェーンに基づくデータ高速処理装置10は、フラッシュト(Flushed)状態であるValue LogファイルにはバリューValueを格納し、バリューValueの検索情報であるエントリーEntryを索引IXとともにValue Indexファイルに格納することができる。
【0038】
図3から
図8は、本発明の一実施形態によるブロックチェーンに基づくデータ高速処理方法及び構造図を示す例示図である。後述する各過程は、ブロックチェーンに基づくデータ高速処理装置を構成する各機能部が行う過程であるが、本発明についての簡潔かつ明確な説明のために、各ステップの主体をブロックチェーンに基づくデータ高速処理装置とまとめて称することにする。
【0039】
図3を参照すると、ブロックチェーンに基づくデータ高速処理装置10は、ブロックチェーンシステムの駆動のための初期化作業を行うことができる。
【0040】
ステップS310において、ブロックチェーンに基づくデータ高速処理装置10は、ブロックチェーンシステムの駆動のためのコンフィグレーション情報を読み込む。
【0041】
ステップS320において、ブロックチェーンに基づくデータ高速処理装置10は、アクティブ(Active)状態のWALファイルの有無を把握することができる。ブロックチェーンに基づくデータ高速処理装置10は、アクティブ(Active)状態のWALファイルがある場合、アクティブ(Active)状態のWALファイル情報を活用して、アクティブ(Active)状態のMEMTableを生成することができる。ブロックチェーンに基づくデータ高速処理装置10は、アクティブ(Active)状態のWALファイルがない場合、ステップS330を行う。
【0042】
ステップS330において、ブロックチェーンに基づくデータ高速処理装置10は、不変(Immutable)状態のWALファイルの有無を確認することができる。ブロックチェーンに基づくデータ高速処理装置10は、不変(Immutable)状態のWALファイルがある場合、不変(Immutable)状態のWALファイル情報を活用して、不変(Immutable)状態のMEMTableを生成することができる。ブロックチェーンに基づくデータ高速処理装置10は、不変(Immutable)状態のWALファイルがない場合、ステップS340を行う。
【0043】
ステップS340において、ブロックチェーンに基づくデータ高速処理装置10は、Flushチャンネルを駆動することができる。
【0044】
図4を参照すると、ブロックチェーンに基づくデータ高速処理装置10は、キーKeyをDKIファイル(Direct Key Index File)に格納することができる。例えば、ブロックチェーンに基づくデータ高速処理装置10は、[DID]:[BlockHeight]情報をDKIファイル(Direct Key Index File)に格納することができる。
【0045】
ブロックチェーンに基づくデータ高速処理装置10は、システムの駆動に際して、アクティブ(Active)状態のWALファイル情報を用いて、Active MEMTableを生成することができる。
【0046】
ブロックチェーンに基づくデータ高速処理装置10は、アクティブ(Active)状態のWALファイルとMEMTableを一定のサイズに見合う分だけ設定して、リアルタイムにて入力値<索引Internal indeX,IX>:<バリューvalue>の書き込み/読み込みに用いることができる。
【0047】
ブロックチェーンに基づくデータ高速処理装置10は、アクティブ(Active)状態のMEMTableの設定サイズが上限に達すると(あるいは、フルになると、満杯になると、いっぱいになると)、不変(Immutable)状態に切り換え、新たなアクティブ(Active)状態のWALファイル生成し、WALファイル情報を用いて、新たなActive MEMTableを生成することができる。
【0048】
ブロックチェーンに基づくデータ高速処理装置10は、同じデータ[BlockHeight]:[Block]をファイル(WALファイル)とメモリー(MEMTable)の上に重複して格納し、かつ、保持することができる。
【0049】
ブロックチェーンに基づくデータ高速処理装置10は、システムの駆動に際して、不変(Immutable)状態のWALファイル情報を用いて、Immutable MEMTableを生成することができる。
【0050】
ブロックチェーンに基づくデータ高速処理装置10は、周期的なフラッシュ(Flush)を通じて、不変(Immutable)状態に対応するValue Logファイルを生成し、Value Indexファイルをアップデートすることができる。
【0051】
ブロックチェーンに基づくデータ高速処理装置10は、フラッシュト(Flushed)状態のValue Logファイルにはバリューvalueが格納され、バリューValueの検索情報であるエントリーEntryを索引IXとともにValue Indexファイルに格納することができる。
【0052】
ブロックチェーンに基づくデータ高速処理装置10は、B+木資料構造型であるValue Indexファイルにブロックのメタ情報[BlockHeight]:[METAINFO]を格納することができる。例えば、メタ情報([METAINFO]={Fid, Offset, EntrySize})は、Value Logファイル(Fid)内のブロックの物理的な格納位置(Offset, EntrySize)情報であってもよい。
【0053】
ブロックチェーンに基づくデータ高速処理装置10は、非同期的に不変(Immutable)状態のMEMTableとWALファイルをValue IndexファイルとValue Logファイルとしてデータを移した後、削除することができる。
【0054】
図5は、本発明の一実施形態によるブロックチェーンに基づくデータ高速処理装置10がデータを格納(Put)する方法を説明する図である。
【0055】
ここで、Put、Write、Saveはいずれも同じ意味で解釈して、「データをファイルに格納する」と表現することにする。
【0056】
図5を参照すると、ステップS510において、ブロックチェーンに基づくデータ高速処理装置10は、<キーKey>:<索引IX>をDKIファイル(Direct Key Index File)に格納(write)することができる。
【0057】
ステップS520において、ブロックチェーンに基づくデータ高速処理装置10は、<索引IX>:<バリューValue>をMEMTable/WALに格納(Put)する。
【0058】
ステップS530において、ブロックチェーンに基づくデータ高速処理装置10は、Active MEMTableが満杯(full)になったか否かを判断することができる。格納(write)できるスペースがあれば、ブロックチェーンに基づくデータ高速処理装置10は、ステップS540を行う。
【0059】
ステップS540において、ブロックチェーンに基づくデータ高速処理装置10は、<索引IX>:<バリューValue>をActive WALファイルに格納(write)する。
【0060】
ステップS550において、ブロックチェーンに基づくデータ高速処理装置10は、<索引IX>:<バリューValue>をActive MEMTableに格納(write)する。
【0061】
ステップS530において、Active MEMTableが満杯になって格納できるスペースがなければ、ブロックチェーンに基づくデータ高速処理装置10は、ステップS560を行う。
【0062】
ステップS560において、ブロックチェーンに基づくデータ高速処理装置10は、新たなMEMTableで処理するか否かを判断して、新たなMEMTableが必要であれば、ステップS5610を行うことができる。
【0063】
ステップS5610において、ブロックチェーンに基づくデータ高速処理装置10は、MEMTableの状態をアクティブ(Active)から不変(Immutable)に切り換えてImmutable MEMTableプール(pool)に追加することができる。
【0064】
ステップS5620において、ブロックチェーンに基づくデータ高速処理装置10は、WALファイルの状態もまた不変(Immutable)状態に切り換えてImmutable WALファイルと明記することができる。
【0065】
ステップS5630において、ブロックチェーンに基づくデータ高速処理装置10は、新たなActive WALファイルを生成することができる。
【0066】
ステップS5640において、ブロックチェーンに基づくデータ高速処理装置10は、新たなActive MEMTableを生成することができる。
【0067】
また、ブロックチェーンに基づくデータ高速処理装置10は、ステップS630とステップS640を同時に行うことができる。
【0068】
ブロックチェーンに基づくデータ高速処理装置10は、新たなActive MEMTble及びWALファイルを生成した後、各ファイルに情報を格納するステップ(S540)を行うことができる。
【0069】
ステップS560において、新たなMEMTableが不要である場合、ステップS570を行うことができる。
【0070】
ステップS570において、ブロックチェーンに基づくデータ高速処理装置10は、ImmutableにFlushチャンネルを伝送することができる。
【0071】
ブロックチェーンに基づくデータ高速処理装置10は、ステップS580において、FlushチャンネルへのMEMTableの伝送有無を確認し、ステップS5810において、MEMTableの受信有無を確認することができる。
【0072】
ステップS5810において、MEMTableが受信された場合、ブロックチェーンに基づくデータ高速処理装置10は、ステップS5820において、バリューValueをValue Logファイルに格納(write)することができる。
【0073】
ステップS5830において、ブロックチェーンに基づくデータ高速処理装置10は、<索引IX>:<バリューValue>をValue Indexファイルに格納(write)することができる。
【0074】
ステップS5840において、ブロックチェーンに基づくデータ高速処理装置10は、Immutable MEMTableとImmutable WALファイルを削除することができる。
【0075】
図6は、本発明の一実施形態により、ブロックチェーンに基づくデータ高速処理装置10がデータを格納(Put)する構造図の例示である。
【0076】
ブロックチェーンに基づくデータ高速処理装置10は、キーKeyをDKIファイル(Direct Key Index File)に格納することができる。例えば、ブロックチェーンに基づくデータ高速処理装置10は、[DID]:[BlockHeight]情報をDKIファイル(Direct Key Index File)に格納することができる。
【0077】
ブロックチェーンに基づくデータ高速処理装置10は、同じデータ[BlockHeight]:[Block]をファイル(WALファイル)とメモリーの上(MEMTable)に重複格納し、かつ、保持することができる。
【0078】
ブロックチェーンに基づくデータ高速処理装置10は、MEMTableの状態をアクティブ(Active)から不変(Immutable)に切り換えてImmutable MEMTableプール(pool)に追加することができる。
【0079】
ブロックチェーンに基づくデータ高速処理装置10は、WALファイルの状態もまた不変(Immutable)状態に切り換えてImmutable WALファイルと明記することができる。
【0080】
ブロックチェーンに基づくデータ高速処理装置10は、周期的なフラッシュ(Flush)を通じて不変(Immutable)状態に対応するValue Logファイルを生成し、Value Indexファイルをアップデートすることができる。
【0081】
ブロックチェーンに基づくデータ高速処理装置10は、フラッシュト(Flushed)状態のValue Logファイルにはバリューvalueが格納され、バリューvalueの検索情報であるエントリーEntryを索引Internal indeX, IXとともにValue Indexファイルに格納することができる。
【0082】
ブロックチェーンに基づくデータ高速処理装置10は、B+木資料構造型であるValue Indexファイルにブロックのメタ情報[BlockHeight]:[METAINFO]を格納することができる。例えば、情報([METAINFO]={Fid, Offset, EntrySize})は、Value Logファイル(Fid)内のブロックの物理的な格納位置(Offset, EntrySize)情報である。
【0083】
図7は、本発明の一実施形態によるブロックチェーンに基づくデータ高速処理装置10がデータを読み込む(Read)ための方法を説明する図である。
【0084】
図7を参照すると、ブロックチェーンに基づくデータ高速処理装置10は、キーKeyを入力値として<キーKey>:<バリューvalue>のペアに対応するバリューValueを照会(Get)することができる。
【0085】
ステップS710において、ブロックチェーンに基づくデータ高速処理装置10は、DKIファイルから入力されたキーKeyの索引IXを探し出す。
【0086】
ステップS710において、ブロックチェーンに基づくデータ高速処理装置10は、索引IXがなければ、バリューValueを探し出すことができないため、誤りであると判断して終了する。ブロックチェーンに基づくデータ高速処理装置10は、入力されたキーKeyに対応する索引IXがある場合、ステップS730を行う。
【0087】
ステップS730において、ブロックチェーンに基づくデータ高速処理装置10は、アクティブ(Active)状態のMEMTableとWALファイルに<索引IX>がある場合、<索引IX>:<バリューvalue>を読み込むことができる。ブロックチェーンに基づくデータ高速処理装置10は、アクティブ(Active)状態のMEMTableとWALファイルに索引IXがない場合、ステップS740を行う。
【0088】
ステップS740において、ブロックチェーンに基づくデータ高速処理装置10は、不変(Immutable)状態のMEMTableとWALファイルに<索引IX>がある場合、<索引IX>:<バリューvalue>を読み込むことができる。ブロックチェーンに基づくデータ高速処理装置10は、不変(Immutable)状態のMEMTableとWALファイルに<索引IX>がない場合、ステップS750を行う。
【0089】
ステップS750において、ブロックチェーンに基づくデータ高速処理装置10は、Value Indexファイルに索引IXがある場合、Value Logファイルから索引IXに対応するバリューValueを読み込むことができる。
【0090】
図8を参照すると、ブロックチェーンに基づくデータ高速処理装置10は、B+木ファイルであるDKIファイルからキーKeyを探し出し、キーKeyに対応するバリューvalueの位置情報(Fid, Offset, EntrySize)をValue Indexファイルから取得することができる。ブロックチェーンに基づくデータ高速処理装置10は、取得した位置情報Fidに相当するLogファイルをValue Logファイルから探し出して、当該ファイルから定められた方式のオフセットOffsetを計算した後、エントリーサイズEntrySizeに見合う分のデータを読み込むと、当該データ構造の中にある入力されたキーKeyに対応するバリューValueを照会することができる。
【0091】
上述したブロックチェーンに基づくデータ高速処理方法は、コンピューターにて読み取り可能な媒体の上にコンピューターにて読み取り可能なコードにより実現され得る。上記のコンピューターにて読み取り可能な記録媒体は、例えば、移動型記録媒体(コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイディスク、ユニバーサルシリアルバス(USB)記憶装置、移動式ハードディスク)であり得、固定式記録媒体(リードオンリーメモリ(ROM:read-onlymemory)、ランダムアクセスメモリ(RAM:randomaccessmemory)、パソコン内蔵型ハードディスク)であり得る。前記コンピューターにて読み取り可能な記録媒体に記録された前記コンピュータープログラムは、インターネットなどのネットワークを介して他のコンピューティング装置に伝送されて前記他のコンピューティング装置にインストールされてもよく、これにより、前記他のコンピューティング装置において使用可能になる。
【0092】
以上において、本発明の実施形態を構成するすべての構成要素が一つに結合されたり、結合されて動作したりすると説明されたとして、本発明が必ずしもこのような実施形態に限定されるとは限らない。すなわち、本発明の目的範囲内であれば、そのすべての構成要素が一つ以上に選択的に結合して動作することもできる。
【0093】
図中、動作が特定の順序に従って示されているが、必ず動作が図示の特定の順序に従って、または順次的な順序に従って実行されなければならないものと、あるいは、すべての図示の動作が実行されてはじめて所望の結果が得られるものではない。特定の状況においては、マルチタスキング及び並列処理が有利になることもある。さらに、上述した実施形態において様々な構成の分離は、そのような分離が必ず必要ではなく、説明されたプログラムコンポネント及びシステムは、一般に、単一のソフトウェア製品として一緒に統合されるということや、多数のソフトウェア製品としてパッケージできる。
【0094】
以上、本発明についてその実施形態を中心として述べたきた。本発明が属する技術分野において通常の知識を有する者であれば、本発明が、本発明の本質的な特性を逸脱しない範囲内において変形された形態として実現され得る。よって、開示された実施形態は、限定的な視点ではなく、説明的な視点において考慮される。本発明の範囲は、前述した説明ではなく、特許請求の範囲に開示されており、それと同等の範囲内にあるあらゆる相違点は本発明に含まれている。
【符号の説明】
【0095】
10 ブロックチェーンに基づくデータ高速処理装置
100 キー管理部
200 バリュー管理部