JP2023104400A - データ管理方法およびデータ管理プログラム - Google Patents
データ管理方法およびデータ管理プログラム Download PDFInfo
- Publication number
- JP2023104400A JP2023104400A JP2022005358A JP2022005358A JP2023104400A JP 2023104400 A JP2023104400 A JP 2023104400A JP 2022005358 A JP2022005358 A JP 2022005358A JP 2022005358 A JP2022005358 A JP 2022005358A JP 2023104400 A JP2023104400 A JP 2023104400A
- Authority
- JP
- Japan
- Prior art keywords
- state
- data management
- frequency
- management device
- data
- 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.)
- Pending
Links
- 238000013523 data management Methods 0.000 title claims abstract description 299
- 238000000034 method Methods 0.000 title claims description 144
- 238000012545 processing Methods 0.000 claims abstract description 185
- 238000011010 flushing procedure Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 31
- 238000005516 engineering process Methods 0.000 description 19
- 238000012423 maintenance Methods 0.000 description 16
- 238000007726 management method Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000001514 detection method Methods 0.000 description 11
- 230000004044 response Effects 0.000 description 4
- 230000001174 ascending effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000009396 hybridization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
- G06F16/2386—Bulk updating operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/173—Vehicle or other transportation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/465—Structured object, e.g. database record
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/603—Details of cache memory of operating mode, e.g. cache mode or local memory mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】データストアの格納構造をステート更新に応じて動的に最適化でき、データストアへのアクセスを高速化できること。【解決手段】データ管理装置100は、所定のデータ処理プログラムがデータ処理する際、KVS110へのアクセス頻度に基づき、アクセス頻度が高い高頻度ステート項目を一覧化した高頻度ステート項目一覧情報120を作成する。データ管理装置100は、KVS110に高頻度ステート項目の値を含むステート情報を書き込む際に、高頻度ステート項目一覧情報120を参照し、ステート情報が高頻度ステート項目に該当するか否かを判定し、ステート情報が高頻度ステート項目に該当すると判定した場合は、KVS110の1レコードに複数の高頻度ステート項目のステート情報をグループ化して書き込む。一方、ステート情報が高頻度ステート項目に該当しないと判定した場合は、KVS110の1レコードにステート情報を書き込む処理を行う。【選択図】図1
Description
本発明は、データ管理方法およびデータ管理プログラムに関する。
デジタルツインにより、実際に稼働している対象物を仮想空間上にモデルとして表現できる。例えば、対象物であるコネクテッドカーやスマートフォン等の実世界のIoTデバイスは、自分の位置や速度等のステート(状況)のステート情報をイベントメッセージに含めデータセンターへ送る。データセンターは、送られてきたイベントメッセージに含まれるステート情報から実世界の対象物(IoTデバイス)のデジタルツインを構築する。データセンターは、送られてきたイベントメッセージによりステート項目を更新し、ステート項目の更新に関連付けられたユーザロジックが処理プログラムを実行することで、イベント別の処理を実行する。
IoTデバイスは、ステートの更新時や定期的にステート情報を含むイベントメッセージをデータセンターに送る。イベントメッセージは、無限、無停止のイベントストリームであるため、データセンターはシステム停止することなく、かつ、膨大なイベントメッセージを受信可能にする必要がある。データセンターは、受信したイベントメッセージを、例えば、LSM-tree型のKVS等のデータストアでデータ管理する。LSM-treeはLog Structured Merge treeの略、KVSはKey Value Storeの略である。LSM-tree型のKVSは、データの読み込み(READ)が遅いが書き込み(WRITE)が速く、デジタルツインにおけるイベントメッセージのストリーム処理のステート管理に適している。
従来、デジタルツインのデータストアへのステート格納の方式1として、デジタルツインのステート項目毎に1エントリとして格納する方式がある。また、方式2として、デジタルツイン毎に全ステートを1エントリで纏める方式がある。
先行技術としては、例えば、ストリームデータを統計情報により絞り込み取得し、スキーマ定義からストリームデータ特性を管理する。そして、データレートによりリレーションデータのキャッシュを判断することで、リアルタイム処理を保ち外部データの複製量を減少させる技術がある。また、一意のデータのみを格納する重複除外を行い、キャッシュインデックスのエントリの更新でデータにアクセスする際のキャッシュ内のインデックス操作を減らし、フラッシュキャッシュのキャッシュインデックスへのアクセス回数を低減させる技術がある。また、制御メッセージの受信時にイベントの種別とプラグインとを対応付けて記憶しておき、イベントメッセージの受信時には、イベントの種別に対応するプラグインを実行することで、システムを停止させずにプログラムを更新する技術がある。
従来技術では、イベントメッセージのストリーム処理時間に費やされる大部分を、KVSに格納されたステートデータへのアクセスが占めるため、データ処理の処理性能向上が図れない。ここで、従来のステート格納の方式1では、多数の小さなステート項目にアクセスすると、都度READ待ちが発生し処理時間が長くなる問題が生じる。また、方式2では、利用頻度の低い大きなステート項目があると、このステート項目が利用頻度の高いステート項目と一緒に毎回読み書きされるため、I/Oやバックアップのコストが大きくなる問題が生じる。
また、デジタルツインでは、データストアへのステート格納が、実世界と直接繋がるシステムである。デジタルツインでは、実世界で起きた変化によってステートのアクセスパターンが動的に変わる。また、イベントメッセージを処理する処理ロジックの入れ替えも無停止で動的に実行される。このため、デジタルツインでは、ステートの格納構造を事前に最適化することができない制約がある。
一つの側面では、本発明は、データストアの格納構造をステート更新に応じて動的に最適化でき、データストアへのアクセスを高速化できることを目的とする。
本発明の一側面によれば、所定のデータ処理プログラムがデータ処理する際、データストアへのアクセス頻度に基づき、前記アクセス頻度が高い高頻度ステート項目を一覧化した高頻度ステート項目一覧情報を作成し、前記データストアに前記高頻度ステート項目の値を含むステート情報を書き込む際に、前記高頻度ステート項目一覧情報を参照し、前記ステート情報が前記高頻度ステート項目に該当するか否かを判定し、前記ステート情報が前記高頻度ステート項目に該当すると判定された場合には、前記データストアの1レコードに複数の前記高頻度ステート項目の前記ステート情報をグループ化して書き込み、前記ステート情報が前記高頻度ステート項目に該当しないと判定された場合には、前記データストアの1レコードに前記ステート情報を書き込む、処理をコンピュータが実行するデータ管理方法およびデータ管理プログラムが提案される。
本発明の一態様によれば、データストアの格納構造をステート更新に応じて動的に最適化でき、データストアへのアクセスを高速化できるという効果を奏する。
以下に図面を参照して、開示のデータ管理方法およびデータ管理プログラムの実施の形態を詳細に説明する。
(実施の形態にかかるデータ管理方法の一実施例)
図1は、実施の形態にかかるデータ管理方法の一実施例を示す説明図である。データ管理装置100は、例えば、データストアに対するアクセス頻度が高い高頻度ステート項目の統計を取り、高頻度ステート項目をグループ化して一つのエントリとしてデータストアに記録する処理を行うコンピュータである。データストアは、例えば、データ管理装置100のKVS110またはキャッシュメモリである。
図1は、実施の形態にかかるデータ管理方法の一実施例を示す説明図である。データ管理装置100は、例えば、データストアに対するアクセス頻度が高い高頻度ステート項目の統計を取り、高頻度ステート項目をグループ化して一つのエントリとしてデータストアに記録する処理を行うコンピュータである。データストアは、例えば、データ管理装置100のKVS110またはキャッシュメモリである。
データ管理装置100は、IoTデバイスから送信されるステート更新のイベントメッセージを受信処理し、デジタルツインのステートデータとして更新する。また、データ管理装置100は、更新されたステートに対応するユーザロジックが所定の機能(動作)を実行処理する。
図1(a)には、デジタルツインの論理的なステート構造の例を示す。図1(b)には、データ管理装置100のデータストアとしてKVS110の保存レイアウトと、高頻度ステート項目一覧情報120を示す。
図1(a)に示すデジタルツインの論理的なステート構造は、データ管理装置100外部のIoTデバイス別のイベントメッセージを理論的に示したものであり、IoTデバイス別のデジタルツイン(DT)を示す。
各IoTデバイスは、例えば、時間経過毎に異なるステート(状況)のステート情報を含むイベントメッセージをデータ管理装置100に送る。例えば、id「car2(車両2)」のIoTデバイス(DT1)は、ある時期に、ステート情報として、ステート「speed(速度)42(km/h)」と、ステート「position(位置)」を送信する。
実施の形態のデータ管理装置100は、下記の処理を行う。
(1)データ管理装置100は、ステート項目へのアクセス頻度のデータを収集し、所定の統計処理を行い、データストアに高頻度にアクセスするステート項目の高頻度ステート項目一覧情報120を生成する。高頻度ステート項目一覧情報120は、高頻度にアクセスされるステート項目をテーブルに一覧化したものである。ステート項目へのアクセス頻度は、例えば、KVS110に対する読み書きのアクセス頻度に基づき求めることができる。また、キャッシュ(キャッシュメモリ)付きのKVS110の場合、キャッシュに対する読み書きのアクセス頻度に基づき求めることができる。
(1)データ管理装置100は、ステート項目へのアクセス頻度のデータを収集し、所定の統計処理を行い、データストアに高頻度にアクセスするステート項目の高頻度ステート項目一覧情報120を生成する。高頻度ステート項目一覧情報120は、高頻度にアクセスされるステート項目をテーブルに一覧化したものである。ステート項目へのアクセス頻度は、例えば、KVS110に対する読み書きのアクセス頻度に基づき求めることができる。また、キャッシュ(キャッシュメモリ)付きのKVS110の場合、キャッシュに対する読み書きのアクセス頻度に基づき求めることができる。
図1を用いた説明では、便宜上、データ管理装置100は、IoTデバイス(DT1~DT4)が送信したイベントメッセージのうち、送信頻度が高いイベントメッセージのステートを高頻度ステート項目として抽出する例を説明する。
図1(b)の例では、データ管理装置100は、高頻度ステート項目一覧情報120の高頻度ステート項目として、position(位置)、speed(速度)、wheel1_speed(車輪1の速度)を含む。また、wheel1_pressure(車輪1の空気圧)、wheel2_speed(車輪2の速度)、wheel2_pressure(車輪2の空気圧)を含む。
例えば、データ管理装置100は、図1(a)のIoTデバイス(DT1~DT4)から高頻度に送信されたイベントメッセージのステート情報を高頻度ステート項目として決定し、高頻度ステート項目一覧情報120を作成する。高頻度ステート項目一覧情報120は、データ管理装置100のメモリ上に配置する。
図1(b)に示す高頻度ステート項目一覧情報120のposition(位置)と、speed(速度)の項目は、例えば、IoTデバイスのid「car2(乗用車2)」等から高頻度に送信されるステート項目H1に基づき作成される。また、高頻度ステート項目一覧情報120のwheel1_speed(車輪1の速度)と、wheel1_pressure(車輪1の空気圧)、wheel2_speed(車輪2の速度)、wheel2_pressure(車輪2の空気圧)の項目がある。この項目は、例えば、IoTデバイスのid「truck4(トラック4)」等から高頻度に送信されるステート項目H2に基づき作成される。
上記説明では、特定のIoTデバイスのid「car2(乗用車2)」や、id「truck4(トラック4)」に基づき、高頻度ステート項目一覧情報120を作成する例を説明した。これら車の種類等タイプ(属性)別の「car」や、「truck]毎に高頻度に送信されるステート項目Hを高頻度ステート項目一覧情報120に高頻度ステート項目として設定することができる。さらには、IoTデバイスのタイプに関わりなく、単純に高頻度に送信されるステート項目Hを高頻度ステート項目一覧情報120に高頻度ステート項目として設定してもよい。
また、データ管理装置100は、高頻度ステート項目一覧情報120を定期的なメンテナンスでステート項目の格納構造を動的に変えて最適化することで、ステート項目へのアクセスパターンの変化に対応する。
(2)データ管理装置100は、高頻度ステート項目一覧情報120を参照し、特定のデジタルツインXで高頻度にアクセスされる高頻度ステート項目をグループ化する。データ管理装置100は、グループ化したステートを(X,*)という1エントリでKVS110の1レコードに纏めて記録する。一方、データ管理装置100は、他のステート項目、すなわち、頻繁にはアクセスされない低頻度ステート項目については、個別のエントリとしてKVS110の1レコードに記録する。
例えば、図1(a)に示したデジタルツインDTの論理的なステート構造例のうち、id「car2」のステート項目H1「speed:42」と「position:…」が、図1(b)の高頻度ステート項目一覧情報120の高頻度ステート項目に相当する。この場合、図1(b)に示すように、データ管理装置100は、KVS110の一つのエントリ(X,*)として、キー(Key)を(car2,*)とする。また、データ管理装置100は、Value(値)として、car2の速度と位置に関する複数のステート項目H1{speed:42,position:…}をKVS110の1エントリ(1レコード)110-1にグループ化する。
また、図1(a)のid「truck4」のステート項目H2が、図1(b)の高頻度ステート項目一覧情報120に設定されている高頻度ステート項目に相当する。データ管理装置100は、KVS110の一つのエントリ(X,*)として、キーを(truck4,*)とする。また、データ管理装置100は、Valueとして、truck4の速度と空気圧に関する複数のステート項目H2をKVS110の1エントリ(1レコード)110-5にグループ化する。
また、図1(a)に示したid「cabrio3」のステート項目L1「roof(屋根):0(屋根なし)」、「winker(ウインカ指示方向):…」は、低頻度のデータ送信であり、図1(b)の高頻度ステート項目一覧情報120に設定されていない。この場合、データ管理装置100は、図1(b)に示すように、KVS110に個別のエントリとして、Keyが(cabrio3,roof)、Value{0}のエントリ110-3を保存する。また、データ管理装置100は、Keyが(cabrio3,winker)、Value{…}のエントリ110-4を個別に保存する。このように、低頻度のステート項目L1が複数のステートを含む場合、データ管理装置100は、ステート毎に個別のエントリを作成する。
また、図1(a)のid「bus5」のステート情報のうち、速度は図1(b)の高頻度ステート項目H3に相当する。しかし、refuel_history(給油履歴(日付))は、低頻度のステート項目L2に相当し、図1(b)の高頻度ステート項目一覧情報120には設定されない。この場合、データ管理装置100は、図1(b)に示すように、KVS110の一つのエントリ(X,*)として、キーを(bus5,*)とし、Valueをbus5の速度のステート項目H3をKVS110の1エントリ(1レコード)110-6に格納する。また、データ管理装置100は、Keyが(bus5,refuel_history)、Valueが給油履歴(日時)である低頻度のステート項目L2をKVS110の個別のエントリ110-7に保存する。
ここで、データ管理装置100がキャッシュ付きのKVS110にアクセスする構成とした場合、データ管理装置100の制御部(CPU)は、高頻度ステート項目一覧情報120をイベント処理の冒頭でキャッシュにプリフェッチする。これにより、データ管理装置100は、KVS110に対する1回のREADアクセスで高頻度にアクセスされる複数のステート項目を読み出すことができる。
(3)データ管理装置100は、高頻度ステート項目一覧情報120の動的な変化に対応して、KVS110へのステート項目の書き込み(WRITE)を行う際、高頻度ステート項目一覧情報120の更新を非同期に実行する。
高頻度ステート項目一覧情報120は、IoTデバイスから高頻度に送信されたステート情報のステート項目を選択により決定したものである。データ管理装置100は、高頻度ステート項目一覧情報120を参照して、KVS110に対するステート項目をグループ化、あるいは個別のエントリとして格納処理する。これにより、データ管理装置100は、KVS110の格納構造を、KVS110への書き込み操作に非同期でベストエフォートにメンテナンスでき、KVS110の格納構造を更新するための余計なオーバヘッドが発生しない。
(デジタルツインの概要)
図2は、デジタルツインの処理概要の説明図である。データ管理装置100が行うデジタルツインのデータ処理の概要を説明しておく。実世界のIoTデバイス200は自身のステート情報をイベントメッセージとして逐次データセンターであるデータ管理装置100へ送信する。データセンターは、例えば、サーバ群やクラウドにより構成されている。
図2は、デジタルツインの処理概要の説明図である。データ管理装置100が行うデジタルツインのデータ処理の概要を説明しておく。実世界のIoTデバイス200は自身のステート情報をイベントメッセージとして逐次データセンターであるデータ管理装置100へ送信する。データセンターは、例えば、サーバ群やクラウドにより構成されている。
IoTデバイス200は、例えば、コネクテッドカーやスマートフォン等であり、図2の例では、IoTデバイス200がバスやトラック等のコネクテッドカーである。IoTデバイス200は、識別用のidとステート(状態)からなるステート情報を含むイベントメッセージ210をデータ管理装置100に送信する。
図2中の横軸は時間を示し、IoTデバイス200がそれぞれのステート情報をイベントメッセージ210としてデータ管理装置100に送信する状態を示している。データ管理装置100に対するイベントメッセージ210の到着順でみると、はじめに、軽自動車(id:kei2)のイベントメッセージ210aを受信する。次に、データ管理装置100は、トラック(id:truck4)のイベントメッセージ210bを受信し、その後、バス(id:bus1)のイベントメッセージ210cを受信する。各イベントメッセージ210a~210cに含まれるステート情報は、IoTデバイス200別に設定した速度、現在位置、荷物数、乗員数、等のステートを含む。IoTデバイス200は、例えば、ステートの更新毎や定期的にステートを更新したイベントメッセージ210を送信する。
データ管理装置100は、例えば、国内全域に位置する膨大な数のIoTデバイス200からストリーム状のイベントメッセージ210を受信するため、システムを停止することなく常時稼働させている。図中縦軸には、IoTデバイス200にそれぞれ対応するデジタルツインDTを示す。
データ管理装置100は、例えば、IoTデバイス200のタイプ(属性)別の複数のユーザロジック220(220a~220n)を有する。ユーザロジック220は、データ管理装置100上で動作する所定のデータ処理プログラムであり、IoTデバイス200から受信したイベントメッセージ210に含まれるステート情報に基づきデジタルツインDTのステートを更新する。また、ユーザロジック220は、更新されたステート項目に予め関連付けられているアプリケーション別の処理プログラムを実行し、処理結果であるロジック処理情報230を出力してもよい。
例えば、軽自動車(id:kei2)のイベントメッセージ210aの受信時、データ管理装置100は、ステート情報の属性(軽自動車)に対応するユーザロジック220aが起動し、デジタルツインDT1のステートを更新する。また、ユーザロジック220aは、軽自動車のステート(図示の例では、速度、現在位置等)の更新に対応したロジック処理情報230aを出力してもよい。例えば、ユーザロジック220aは、軽自動車の走行を案内するナビゲーション機能に対し、更新された現状のステートに基づき、目的地までの最適な経路情報をロジック処理情報230aとして出力する。
また、トラック(id:truck4)のイベントメッセージ210bの受信時、データ管理装置100は、属性(トラック)に対応するユーザロジック220bが起動し、デジタルツインDT2のステートを更新する。また、ユーザロジック220bは、トラックのステート(図示の例では、速度、荷物数等)の更新に対応したロジック処理情報230bを出力してもよい。例えば、ユーザロジック220bは、トラックを運行管理する運行管理機能に更新毎のステートの情報をロジック処理情報230bとして出力する。
図2に示すように、データ管理装置100は、IoTデバイス200から受信したイベントメッセージ210に含まれるステート情報に基づき、実世界の対象物のデジタルツインDTを構築する。このデジタルツインDTは、現実世界上で実際に稼働している物理設備(IoTデバイス200)を仮想空間上にモデルとして構築したものに相当する。データ管理装置100は、イベントメッセージ210の受信毎にデジタルツインDTの情報を格納するKVS110のステート情報をデータ更新する。
(既存技術のデータ管理構成例)
図3は、既存技術のデータ管理機能の説明図である。便宜上、図3で用いる符号について、実施の形態と同じ構成部には同じ符号を付してある。データセンターに配置されるデータ管理装置300は、例えば、複数台のサーバの分散処理により構成される。図3に示すデータ管理装置300は、大別してメッセージキュー(Queue)301の機能部と、イベント処理部302の機能部とを含む。
図3は、既存技術のデータ管理機能の説明図である。便宜上、図3で用いる符号について、実施の形態と同じ構成部には同じ符号を付してある。データセンターに配置されるデータ管理装置300は、例えば、複数台のサーバの分散処理により構成される。図3に示すデータ管理装置300は、大別してメッセージキュー(Queue)301の機能部と、イベント処理部302の機能部とを含む。
メッセージキュー301は、IoTデバイス200が送信するイベントメッセージ210を受信処理し、イベント処理部302に出力する。イベント処理部302は、イベントメッセージ210を分散処理する複数の処理スレッド(例えば複数台サーバ)で構成される。
イベント処理部302は、メッセージ処理部311、ロジック管理部312、キャッシュフラッシュ部313、ユーザロジック220の各機能部と、キャッシュメモリ330、KVS110を含む。イベント処理部302は、以下の処理1.~3.を順次実行する。
1.メッセージ処理部311は、自身のスレッドに属するオブジェクトへのイベントメッセージをメッセージキュー301から読み込み、デシリアライズ処理する。メッセージ処理部311は、イベントメッセージに含まれるステート更新された各ステート項目のデータをキャッシュメモリ330に格納する。
2.ロジック管理部312は、更新されたステート項目に関連付けられたユーザロジック220を呼び出す。呼び出されたユーザロジック220は、イベント処理部302が行う、KVS110のキャッシュメモリ330に対するステート情報の読み書き(READ/WRITE)の処理を実行する。
3.キャッシュフラッシュ部313は、書き込み(WRITE)アクセス時、キャッシュメモリ330に記録されたステート情報のデータをエントリ毎にKVS110に書き出し(フラッシュ)、その後、書き出したデータをキャッシュメモリ330から削除する。KVS110には、イベントメッセージを分散ノード毎にストリーム処理したIoTデバイス200毎のステート情報を保持する。なお、イベント処理部302は、KVS110に記憶されたデータを定期的にバックアップサーバ350等にバックアップする。
(既存技術によるデジタルツインのステート情報の格納例)
図4A,図4Bは、既存技術によるデジタルツインのステート情報の格納例の説明図である。図4A(a)と、図4B(a)に示すデジタルツインの論理的なステート構造の例は、図1(a)と同じ内容である。
図4A,図4Bは、既存技術によるデジタルツインのステート情報の格納例の説明図である。図4A(a)と、図4B(a)に示すデジタルツインの論理的なステート構造の例は、図1(a)と同じ内容である。
図4Aは、デジタルツインのステート格納の方式1を示す。方式1では、各デジタルツインDTの個々のステート項目を、KVS110の個別エントリとして格納する。
方式1によれば、KVS110に対し、デジタルツインのステート項目を個別にアクセスおよび書き換えができる。例えば、IoTデバイス200から送信されたイベントメッセージに含まれる複数のステート項目の更新データを処理する際、更新に必要なエントリ(レコード)だけをKVS110にアクセスできる。
しかし、方式1では、各アクセスにおいてKVS110内のエントリを見つけ出すのにコストがかかる欠点を有する。例えば、エントリ領域Eのように、小さいエントリがたくさん存在すると、ステート毎のエントリ数が多くなり、多数の小さなステート項目にアクセスする都度、READ待ちが発生して処理時間が長くなり、KVS110へのアクセスコストが高くなる。
図4Bは、デジタルツインのステート格納の方式2を示す。方式2では、デジタルツインDT毎に一つのKVSエントリを作り、一つのKVSエントリの中に該当するデジタルツインの全ステート項目を格納する。方式2によれば、IoTデバイス200から送信されたイベントメッセージを単位とし、KVS110に対するアクセスが1回で済む。
しかし、頻繁に使われない大きなステート項目がI/Oオーバヘッドになる欠点を有する。例えば、ステート値は数字や文字列に限らず、リスト構造などの複雑な内容となり大きくなる可能性があり、大きくなったステート値であっても同様にKVS110に対してI/Oされてしまう。例えば、利用頻度の低い大きなステート項目があれば、それが利用頻度の高いステート項目と一緒に毎回読み書きされることとなるため、I/Oやバックアップのコストが大きくなる。図4Bの例において、DT4のid「bus5」のステートは、「speed(速度)」と、「refuel_history(給油履歴(日付))F」の2つのステート項目を含むが、速度は高頻度に更新されるのに対し、給油履歴は更新頻度が低い。方式2では、KVS110の一つのエントリ(Key「bus5」)に対し、これら2つのValue(速度と給油履歴)を設定しているため、低頻度のステート項目(給油履歴F)がKVS110のI/O、特に、読み出し(READ)時にオーバヘッドになる。
KVS110は、特性上、一回書き込んだ値の部分的な更新は不可能であるため、ステートの更新は、データの削除と再追加の処理を行うため、方式2では高コストとなる。また、KVS110に差分バックアップの処理を適用すると、エントリ単位の複数のステートが全て更新されるため、差分バックアップの意味が無くなる。
デジタルツインでは、KVS110へのステート格納について、「実世界と直接繋がるシステム」である特有の事情を有する。デジタルツインでは、例えば、実世界で起きた変化によって、ステートのアクセスパターンが動的に変わる。また、イベントメッセージの受信を無停止とし、イベントメッセージに対応するユーザロジック220の入れ替えについても、無停止で動的に実行されねばならない。このため、KVS110は、事前に格納構造を最適化することができない。
ここで、KVS110のステート格納について、上記の方式1,2ではそれぞれ問題を有するため、方式1と方式2とを組み合わせたハイブリッド化を考える。
図5は、デジタルツインのステート情報の他の格納例の説明図である。図5は、既存の方式1,2を組み合わせたハイブリッド方式に相当する。
方式3では、デジタルツイン“X”で高頻度にアクセスされるステート項目H1,H2,H3をグループ化し、(X,*)という特別な1エントリでKVS110に保存する(方式2に相当)。また、頻繁にアクセスされない低頻度のステート項目L1,L2は、個別のエントリとしてKVS110に保存する(方式1に相当)。
しかし、方式3では、各ステート項目に対し、方式1,2いずれの方式を選択すればよいかを事前に決定することができない。この点、実世界で起きたIoTデバイス200上の変化や、ユーザロジック220の追加および変更によって、KVS110のステートに対するアクセスのパターンが動的に変わってしまう。このように、方式3では、方式1,2いずれの方式を選択するかの動的判断や、ステート項目を新規に追加できるようにするためには、KVS110への格納構造を記したメタデータGの作成およびKVS110への格納が必要となる。図5の例のメタデータGは、方式1を適用するエントリ項目(速度、位置、車輪の速度等)の情報と、方式2を適用するエントリ項目(屋根の有無)、ウインカ指示方向、給油履歴等)の情報と、からなる。
また、方式3では、格納構造を動的に変更しようとすると、メタデータの変更と、関連する全デジタルツインの格納構造の変更とを、一括して排他的に処理する必要が生じ、大きなオーバヘッドとなってしまう。
実施の形態のデータ管理方法は、これら方式1~方式3がそれぞれ有する問題を解決している。実施の形態では、下記(1)~(3)の処理を実施する。
(1)データ管理装置100は、ステート項目へのアクセス頻度のデータを収集し、所定の統計処理を行い、高頻度にアクセスされるステート項目(高頻度ステート項目一覧)情報120を生成する。
(2)データ管理装置100は、高頻度ステート項目一覧情報120を参照し、特定のデジタルツインXで高頻度にKVS110にアクセスする高頻度ステート項目をグループ化し、グループ化したステートを(X,*)という1エントリでKVS110に保存する。一方、データ管理装置100は、他のステート項目、すなわち、頻繁にはアクセスされない低頻度ステート項目については、個別のエントリとしてKVS110に保存する。
(3)データ管理装置100は、高頻度ステート項目一覧情報120の動的な変化に対応して、KVS110へのステート項目の書き込みの際、高頻度ステート項目一覧情報120の更新を非同期に実行する。
そして、データ管理装置100は、高頻度にKVS110にアクセスする高頻度ステート項目については、イベントメッセージの処理毎に、処理の冒頭でキャッシュメモリ330にプリフェッチしておく。また、データ管理装置100は、KVS110への2回目以降のアクセスではキャッシュメモリ330から読み込むため、KVS110へのアクセスは発生しない。例えば、高頻度ステート項目については、ステート項目の数が多くなっても、イベントメッセージの処理毎にKVS110への1回のアクセスで済む。また、この1回目については、処理の冒頭にキャッシュメモリ330にプリフェッチすることで待ち時間を減らせる。
一方、データ管理装置100は、頻繁にはKVS110にアクセスしない低頻度ステート項目については、KVS110にイベントメッセージの処理毎にアクセスを行う。しかし、KVS110へのアクセス頻度が低いため、全体性能には大きく影響しない。例えば、低頻度ステート項目は、高頻度ステート項目の如くひと固まりでKVS110にアクセスするエントリには含まれないため、無駄なI/Oやデータ転送を防ぐことができる。
このように、データ管理装置100は、高頻度ステート項目一覧情報120を参照し、KVS110に対する頻度別のアクセス制御を行う。これにより、データ管理装置100は、KVS110に格納されたステートの情報へのアクセス時間を短くでき、デジタルツインのイベント処理を高速化できる。
また、データ管理装置100は、ステート項目の格納構造を動的に変えるために、リアルタイムにKVS110の格納構造を示すメタデータを必要としない。実施の形態のデータ管理装置100は、KVS110への通常の書き込み操作の中で、高頻度ステート項目一覧情報120を非同期で実行する。これにより、データ管理装置100では、方式3の如く、メタデータへのアクセスは不要であり、また、KVS110の格納構造を更新等メンテナンスするための余計なオーバヘッドは発生しない。
例えば、高頻度ステート項目一覧情報120に含まれるステートは、デジタルツインにおいてIoTデバイス200からのイベントメッセージを受信した際に更新されることが多い。このため、データ管理装置100は、イベントメッセージ受信時の処理と、高頻度ステート項目一覧情報120のメンテナンスのための更新の処理を重畳して実行し、KVS110に対し、これら重畳した処理の結果をKVS110に1回の書き込み処理を行う。これにより、高頻度ステート項目一覧情報120のメンテナンスのために、KVS110に対し余分な書き込み処理の発生を防ぐ。メンテナンスは、高頻度ステート項目の経時的な変化に対応して高頻度ステート項目一覧情報120に設定する高頻度ステート項目を更新することで、KVS110の格納構造を動的に最適化するために行う。
また、データ管理装置100は、ステート項目へのアクセスパターンが変わると、KVS110のステートの格納構造を追従して変更させるため、KVS110の格納構造を常に最適に保つことができる。この際、格納構造の変更のためにKVS110への追加のアクセスは発生せず、ステートの格納構造を変更しても、メッセージ処理の遅れ等を発生させない。
(実施の形態のデータ管理装置の機能)
図6は、実施の形態のデータ管理装置の機能の説明図である。データセンターに配置されるデータ管理装置100は、例えば、複数台のサーバの分散処理により構成される。図6に示すデータ管理装置100は、大別してメッセージキュー(Queue)601の機能部と、イベント処理部602の機能部とを含む。
図6は、実施の形態のデータ管理装置の機能の説明図である。データセンターに配置されるデータ管理装置100は、例えば、複数台のサーバの分散処理により構成される。図6に示すデータ管理装置100は、大別してメッセージキュー(Queue)601の機能部と、イベント処理部602の機能部とを含む。
メッセージキュー601は、IoTデバイス200が送信するイベントメッセージ210を受信処理し、イベント処理部602に出力する。イベント処理部602は、イベントメッセージを分散処理する複数の処理スレッド(例えば複数台サーバ)で構成される。
イベント処理部602は、プリフェッチ部610、メッセージ処理部611、プラグイン管理部612、キャッシュフラッシュ部613、グループ化ゲートウェイ部620、ユーザロジック220の各機能部と、キャッシュメモリ630、KVS110を含む。
プリフェッチ部610は、プリフェッチを行う。例えば、高頻度ステート項目一覧情報120が存在する場合、プリフェッチ部610は、自身のスレッドに属するオブジェクトに対するイベントメッセージ処理の冒頭で、プリフェッチする。この際、プリフェッチ部610は、高頻度ステート項目に該当するエントリ(X,*)をKVS110からキャッシュメモリ630にプリフェッチしておく。
メッセージ処理部611は、メッセージキュー601から読み込んだイベントメッセージをデシリアライズ処理する。メッセージ処理部611は、イベントメッセージに含まれるステート更新された各ステート項目のデータをグループ化ゲートウェイ部620に出力する。
プラグイン管理部612は、更新されたステート項目に関連付けられたユーザロジック220を呼び出す。呼び出されたユーザロジック220は、グループ化ゲートウェイ部620に対し、ステート項目別のアクセス(READ/WRITE)の情報を出力する。
キャッシュフラッシュ部613は、キャッシュメモリ630に対するステート情報の書き込み時、このステート情報のデータをエントリ毎にKVS110に書き出すフラッシュの処理を行う。キャッシュフラッシュ部613は、その後、書き出したデータをキャッシュメモリ630から削除する。
グループ化ゲートウェイ部620は、KVS110への読み書きのアクセス制御を行う。グループ化ゲートウェイ部620は、書き込み(WRITE)部621、読み出し(READ)部622、アクセス統計情報部623、高頻度判定部624、高頻度ステート項目一覧作成部625を含む。
書き込み(WRITE)部621は、キャッシュメモリ630に対しステート情報を書き込み処理する。読み出し(READ)部622は、キャッシュメモリ630からステート情報を読み出し処理する。
アクセス統計情報部623は、ステート更新に基づく、WRITE部621およびREAD部622のアクセス頻度に関する所定のアクセス統計情報を求め、アクセス統計情報を高頻度判定部624に出力する。例えば、アクセス統計情報の統計値は、ステート項目の更新頻度である。
高頻度判定部624は、アクセス統計情報の統計値に基づき、ステート更新によりWRITE部621に書き込まれたステート情報のうち高頻度なステート項目を判定する。高頻度ステート項目一覧作成部625は、高頻度判定部624が判定した高頻度な複数の高頻度ステート項目を一覧化した高頻度ステート項目一覧情報120を作成する。高頻度ステート項目一覧作成部625は、例えば、定期的に高頻度ステート項目一覧情報120を作成する。
グループ化ゲートウェイ部620は、高頻度ステート項目一覧作成部625が作成した高頻度ステート項目一覧情報120を参照し、キャッシュメモリ630に対するアクセスを行う。この際、グループ化ゲートウェイ部620は、WRITE部621によるキャッシュメモリ630への書き込み時、上述したように、複数の高頻度ステート項目は1エントリにグループ化し、低頻度ステート項目は個別のエントリとする。
以下、グループ化ゲートウェイ部620のWRITE部621によるWRITE動作と、READ部622によるREAD動作を説明する。
(WRITE動作)
図7は、データ管理装置のWRITE動作の処理例の説明図である。図7には、IoTデバイス200がバスで速度のステート情報(bus5,speed)をWRITE動作する場合の動作例を順に示す。
図7は、データ管理装置のWRITE動作の処理例の説明図である。図7には、IoTデバイス200がバスで速度のステート情報(bus5,speed)をWRITE動作する場合の動作例を順に示す。
データ管理装置100は、上述のように、イベントメッセージを受信する毎に、処理の冒頭でプリフェッチ部610は、イベントメッセージに含まれるステート項目(bus5,*)をKVS110からキャッシュメモリ630にプリフェッチする。
1. はじめに、ユーザロジック220は、グループ化ゲートウェイ部620に対し、ステート項目speed(更新値は42)をWRITEアクセスする。
2. グループ化ゲートウェイ部620は、アクセス統計情報部623のアクセス統計情報640にステート項目speedのアクセスを記録する。
3.1 グループ化ゲートウェイ部620は、高頻度判定部624により、ステート項目が高頻度ステート項目であるか否かを確認する。例えば、高頻度判定部624は、高頻度ステート項目一覧情報120が存在する場合、この高頻度ステート項目一覧情報120にステート項目speedが含まれているか否かを確認する。ここで、データ管理装置100の起動および再起動の直後には、高頻度ステート項目一覧情報120が存在しない場合がある。
3.2 グループ化ゲートウェイ部620は、高頻度ステート項目一覧情報120にステート項目speedが存在しない場合には、キャッシュメモリ630上にプリフェッチしたステート情報のステート項目にspeedが含まれているか否かを確認する。
3.2 グループ化ゲートウェイ部620は、高頻度ステート項目一覧情報120にステート項目speedが存在しない場合には、キャッシュメモリ630上にプリフェッチしたステート情報のステート項目にspeedが含まれているか否かを確認する。
4. グループ化ゲートウェイ部620は、speedが高頻度ステート項目一覧情報120あるいはキャッシュメモリ630上に存在した場合、高頻度ステート項目と判定する。この場合、グループ化ゲートウェイ部620のWRITE部621は、与えられたステート項目speedのValue「42」で、キャッシュメモリ630のグループ化ステート項目を更新する。
5.1 一方、グループ化ゲートウェイ部620は、speedが高頻度ステート項目一覧情報120あるいはキャッシュメモリ630上に存在しない場合には、キャッシュメモリ630中のグループ化ステート項目からステート項目speedを削除する。例えば、キャッシュメモリ630中のグループ化ステート項目にspeedが記録されている場合、高頻度ではなくなったステート項目speedを削除することで、高頻度にアクセスされるステート項目の変化に追従する。
5.2 グループ化ゲートウェイ部620は、(bus5,speed)を新しい個別エントリとしてキャッシュメモリ630に格納する。グループ化ゲートウェイ部620は、KVS110への書き出しはフラッシュ制御時まで保留する。
6. この後、キャッシュフラッシュ部613は、グループ化ゲートウェイ部620がグループ化した高頻度ステート項目H1と、個別エントリの低頻度ステート項目L1をKVS110に書き出す。
データ管理装置100は、他のステート情報、例えば、(bus5,latitude)をWRITE動作する場合の動作についても、上記1.~6.同様の手順で行う。そして、データ管理装置100は、ステート項目(bus5,*)に含まれている高頻度ステート項目H1を何個アクセスした場合でも、KVS110へのアクセスあたり、一回のプリフェッチと、1回のフラッシュを実行する。
データ管理装置100は、ユーザロジック220から低頻度ステート項目L1(bus5,refuel_history)のWRITEアクセス時には、以下の処理を実行する。グループ化ゲートウェイ部620は、ステート項目(bus5,refuel_history)が高頻度ステート項目でないことを確認した後、キャッシュメモリ630のグループ化ステート項目(bus5,*)を参照する。そして、グループ化ゲートウェイ部620は、(bus5,*)にrefuel_historyが含まれていないのを確認する。ここで、グループ化ゲートウェイ部620は、高頻度ステート項目一覧情報120が直近に変更され、(bus5,*)が更新されていない可能性があるためにチェックを行う。そして、グループ化ゲートウェイ部620は、refuel_historyが(bus5,*)に含まれていれば、今回の(bus5,refuel_history)のWRITEは行わない。グループ化ゲートウェイ部620は、(bus5,*)にrefuel_historyが含まれていなければ、(bus5,refuel_history)をキャッシュメモリ630に格納する。
データ管理装置100は、上記のWRITE動作により、ある程度の時間、高頻度ステート項目一覧情報120が存在しなくても動作可能となる。また、高頻度ステート項目一覧情報120を耐障害のために不揮発化する必要がない。例えば、データ管理装置100の起動時やリカバリ後の再起動時は、統計ができるまでの間は(X,*)が空になるだけであり、正常に動作可能である。また、データ管理装置100は、イベントメッセージを処理する都度、高頻度ステート項目一覧情報120を更新し、また、高頻度ステート項目一覧情報120の変更にKVS110へのアクセスを必要としない。なお、イベント処理部602は、KVS110に記憶されたデータを定期的にバックアップサーバ650等にバックアップする。
(READ動作)
図8は、データ管理装置のREAD動作の処理例の説明図である。図8には、IoTデバイス200がバスで給油履歴のステート情報(bus5,refuel_history)をREAD動作する場合の動作例を順に示す。
図8は、データ管理装置のREAD動作の処理例の説明図である。図8には、IoTデバイス200がバスで給油履歴のステート情報(bus5,refuel_history)をREAD動作する場合の動作例を順に示す。
1. はじめに、ユーザロジック220は、グループ化ゲートウェイ部620に対し、ステート項目refuel_historyをREADアクセスする。
2. グループ化ゲートウェイ部620は、アクセス統計情報部623のアクセス統計情報640にステート項目refuel_historyのアクセスを記録する。
3. グループ化ゲートウェイ部620は、キャッシュメモリ630からグループ化したステート項目(bus5,*)を参照する。データ管理装置100は、キャッシュメモリ630にステート項目refuel_historyが見つかれば処理を完了する。一方、refuel_historyが見つからない場合、データ管理装置100は、4.の処理を実行する。
4. グループ化ゲートウェイ部620のREAD部622は、ステート情報(bus5,refuel_history)をキャッシュメモリ630からREADする。見つからない場合、データ管理装置100は、5.の処理を実行する。
5. ユーザロジック220は、ステート情報(bus5,refuel_history)をKVS110からREADする。この際、ユーザロジック220は、READしたステート情報(bus5,refuel_history)をキャッシュメモリ630にも格納する。
データ管理装置100は、上述したREADの場合には、高頻度ステート項目一覧情報120にアクセスする必要がなく、高頻度ステート項目一覧情報120に該当するステート項目が存在しなくても、正しくREADできる。また、データ管理装置100は、高頻度ステート項目一覧情報120に設定されたステート情報と、KVS110内のステート情報の保存レイアウトが一致しなくても、該当するステート情報をREADできる。
(高頻度ステート項目一覧情報の決定処理例)
図9は、データ管理装置の高頻度ステート項目の決定処理例の説明図である。データ管理装置100の高頻度判定部624による高頻度ステート項目一覧情報120の決定例について説明する。
図9は、データ管理装置の高頻度ステート項目の決定処理例の説明図である。データ管理装置100の高頻度判定部624による高頻度ステート項目一覧情報120の決定例について説明する。
高頻度判定部624は、高頻度ステート項目決定のために収集する情報として、データ管理装置100が処理したイベントの数、ステート項目毎のアクセス回数、WRITE(書き出した)データサイズの合計、等の情報を収集する。高頻度判定部624は、これら収集した情報により、ステートの利用度と、アクセスコストを算出する。
高頻度判定部624は、ステートの利用度aは、アクセス回数/イベントの数、により算出する。アクセスコストbは、データのサイズ合計/アクセス回数、により算出する。図9(a)に示す全体のマス(領域)は一つのステートのアクセスコストを示し、斜線の領域は、利用度を示す。
高頻度判定部624は、高頻度ステート項目を例えば、下記に基づき決定する。図9(b)の例では、高頻度判定部624は、一つのステートのアクセスコストb(全体領域)に対する利用度a(斜線の領域)の割合が事前設定した閾値より大きくなり、かつ含まれるステート項目の数が最大になるステート項目を高頻度ステート項目に決定する。
図9(b)の例では、高頻度判定部624は、左側4つのステート項目(wheel1_speeed~speed)が高頻度ステート項目に決定し、右側一つのステート項目(refuel_history)は高頻度ステート項目ではないと決定している。例えば、高頻度判定部624は、アクセスコストbと利用度aがともに大きいステート項目speed_historyや、アクセスコストbと利用度aが小さなステート項目winkerはいずれも高頻度ステート項目として決定する。これに対し、高頻度判定部624は、アクセスコストbが大きいが利用度aの割合が小さいステート項目refuel_historyは高頻度ステート項目に決定しない。高頻度判定部624は、WRITE処理の実行毎に、高頻度ステート項目一覧情報120の高頻度ステート項目を変更および決定する。
(デジタルツインのタイプ別処理例)
データ管理装置100は、統計データの量が多くなるのを防ぐために、デジタルツインをタイプ別に分けて、タイプ毎に一つ高頻度ステート項目一覧情報120を有してもよい。タイプは、IoTデバイス200の種別や属性に相当する。
データ管理装置100は、統計データの量が多くなるのを防ぐために、デジタルツインをタイプ別に分けて、タイプ毎に一つ高頻度ステート項目一覧情報120を有してもよい。タイプは、IoTデバイス200の種別や属性に相当する。
図10は、データ管理装置のデジタルツインのタイプ別の管理テーブルを示す図表である。データ管理装置100は、LoTデバイス200の種類、属性等のタイプ別に異なるユーザロジック220を実行する。データ管理装置100は、デジタルツインをタイプ別に分け、タイプ毎に高頻度ステート項目一覧情報120を有する。
図10(a)には、デジタルツインとタイプの関係管理テーブル1001を示す。デジタルツインとタイプの関係管理テーブル1001の各レコードには、デジタルツインのid毎にタイプ名が設定される。例えば、デジタルツインのid「car2」には、タイプ名「車」が設定され、デジタルツインのid「bus5」には、タイプ名「バス」が設定される。デジタルツインのidは、データ管理装置100が受信するイベントメッセージに含まれるステート情報のidに対応する。
図10(b)には、タイプ名と実行するユーザロジックの管理テーブル1002を示す。タイプ名と実行するユーザロジックの管理テーブル1002の各レコードには、タイプ名毎に実行するユーザロジックが設定される。例えば、タイプ「車」には、実行するユーザロジック「ユーザロジック1」が設定され、タイプ「バス」には、実行するユーザロジック「ユーザロジック2」が設定される。
データ管理装置100は、図10(a),(b)に示す管理テーブル1001,1002をメモリ等に保持する。そして、データ管理装置100は、イベントメッセージを受信すると、イベントメッセージに含まれるステート情報のidに基づき、図10(a)を参照し、デジタルツインidに対応するタイプ名を判断する。次に、データ管理装置100は、図10(b)を参照し、タイプ名に対応する、実行するユーザロジックを判断する。これにより、データ管理装置100は、タイプ別のユーザロジック220を実行することができる。
図11は、データ管理装置のタイプ別のユーザロジック選択の説明図である。図11に示す例では、ユーザロジックは、タイプ別の3つのユーザロジック220に対応して、車用ユーザロジック220a、バス用ユーザロジック220b、トラック用ユーザロジック220cを有する。
タイプ別のユーザロジック220に対応し、グループ化ゲートウェイ部620は、これらタイプ別のアクセス統計情報640と、ステート項目一覧情報120を有する。グループ化ゲートウェイ部620のアクセス統計情報部623は、車用アクセス統計情報640a、バス用アクセス統計情報640b、トラック用アクセス統計情報640cを作成する。グループ化ゲートウェイ部620の高頻度ステート項目一覧作成部625は、車用高頻度ステート項目一覧情報120a、バス用高頻度ステート項目一覧情報120b、トラック用高頻度ステート項目一覧情報120cを作成する。
そして、データ管理装置100は、イベントメッセージを受信すると、図10(a),(b)の管理テーブル1001,1002を参照して、イベントメッセージの処理に対応するタイプに相当する一つのユーザロジック220(220a~220c)を実行する。そして、データ管理装置100は、実行するタイプのユーザロジック220(220a~220c)に対応するアクセス統計情報640(640a~640c)と、高頻度ステート項目一覧情報120(120a~120c)とを選択する。データ管理装置100のグループ化ゲートウェイ部620は、タイプ別のユーザロジック220a~220cに対応したアクセス統計情報640a~640cと、高頻度ステート項目一覧情報120a~120cを用いて、WRITEおよびREADアクセスを行う。
上記構成により、データ管理装置100は、デジタルツインの種類、属性等のタイプ別に異なるユーザロジック220を実行することができる。また、イベントメッセージの処理で統計データ(アクセス統計情報640、高頻度ステート項目一覧情報120)のデータ量をタイプ別に分けるため、一つの統計情報で膨大となることを防ぎ、統計情報を容易に管理できるようになる。
(データ管理装置が管理する統計情報の例)
図12は、データ管理装置のタイプ別のアクセス統計情報の例を示す図表である。アクセス統計情報部623は、図11で説明したタイプ別に、図12(a)に示す車用アクセス統計情報640aと、図12(b)に示すバス用アクセス統計情報640bと、図12(c)に示すトラック用アクセス統計情報640cを作成する。
図12は、データ管理装置のタイプ別のアクセス統計情報の例を示す図表である。アクセス統計情報部623は、図11で説明したタイプ別に、図12(a)に示す車用アクセス統計情報640aと、図12(b)に示すバス用アクセス統計情報640bと、図12(c)に示すトラック用アクセス統計情報640cを作成する。
例えば、車用アクセス統計情報640aの内容を説明すると、アクセス統計情報部623は、ステート項目毎に、最初検知インデクス、最後検知インデクス、アクセス回数、サイズ合計の各項目の値を設定する。また、アクセス統計情報部623は、イベントインデクスを設定する。イベントインデクスは、データ管理装置100が処理したイベントメッセージの数である。
最初検知インデクスと最後検知インデクスは、イベント処理部602がメッセージキュー601から一つのイベントメッセージを読み込む際のメッセージキュー601の格納領域である。アクセス統計情報部623は、イベントの処理毎に最後検知インデクスをチェックする。アクセス統計情報部623は、最初検知インデクスとイベントインデクスの値に基づきイベント数を計算する。また、アクセス統計情報部623は、最初検知インデクスおよび最後検知インデクスの値、およびアクセス回数に基づき、アクセス頻度を計算する。
図13は、データ管理装置が管理するタイプ別の高頻度ステート項目一覧情報の例を示す図表である。高頻度ステート項目一覧作成部625は、図11のタイプ別に、図13(a)の車用高頻度ステート項目一覧情報120a、図13(b)のバス用高頻度ステート項目一覧情報120b、図13(c)のトラック用高頻度ステート項目一覧情報120cを作成する。
例えば、車用高頻度ステート項目一覧情報120aの内容を説明すると、高頻度ステート項目一覧作成部625は、タイプに車を設定し、ステート項目として、position(現在位置)、speed(速度)値を設定する。
(データ管理装置のハードウェア構成例)
図14は、データ管理装置のハードウェア構成例を示す図である。データ管理装置100は、図14に示す汎用のハードウェアからなるサーバ等のコンピュータで構成することができる。
図14は、データ管理装置のハードウェア構成例を示す図である。データ管理装置100は、図14に示す汎用のハードウェアからなるサーバ等のコンピュータで構成することができる。
データ管理装置100は、CPU(Central Processing Unit)1401と、メモリ1402と、ネットワークI/F(Interface)1403と、を有する。また、データ管理装置100は、記録媒体I/F1404と、記録媒体1405と、可搬型記録媒体I/F1406と、可搬型記録媒体1407と、を有する。また、各構成部は、バス1400によってそれぞれ接続される。
CPU1401は、データ管理装置100の全体の制御を司る制御部として機能する。CPU1401は、複数のコアを有していてもよい。メモリ1402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU1401のワークエリアとして使用される。メモリ1402に記憶されるプログラムは、CPU1401にロードされることで、コーディングされている処理をCPU1401に実行させる。
ネットワークI/F1403は、通信回線を通じてネットワークNWに接続され、ネットワークNWを介して外部のコンピュータに接続される。外部のコンピュータは、例えば、図3に示したようにデータ管理装置100を複数のサーバ301,302、350で構成した場合、ネットワークNWを介して、各サーバ301,302,350は、ネットワークNWを介して接続する。そして、ネットワークI/F1403は、ネットワークNWと装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。ネットワークI/F1403には、例えば、モデムやLANアダプタなどを採用することができる。
記録媒体I/F1404は、CPU1401の制御に従って記録媒体1405に対するデータのリード/ライトを制御する。記録媒体1405は、記録媒体I/F1404の制御で書き込まれたデータを記憶する。記録媒体1405としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
可搬型記録媒体I/F1406は、CPU1401の制御に従って可搬型記録媒体1407に対するデータのリード/ライトを制御する。可搬型記録媒体1407は、可搬型記録媒体I/F1406の制御で書き込まれたデータを記憶する。可搬型記録媒体1407としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
なお、データ管理装置100は、上述した構成部の他に、例えば、入力装置、ディスプレイなどを有することにしてもよい。
図6に示したイベント処理部602は、図14に示したCPU1401がプログラム実行することで機能を実現できる。図6に示したキャッシュメモリ630は、例えば、図14に示したメモリ1402を用いて機能を実現できる。図6に示したKVS110は、例えば、図14に示した記録媒体1405、可搬型記録媒体1407を用いて機能を実現できる。図6に示したアクセス統計情報640と、高頻度ステート項目一覧情報120は、例えば、図14に示したメモリ1402、記録媒体1405、可搬型記録媒体1407の記録領域上に設けることができる。
(データ管理装置の処理例)
次に、図15~図20を用いてデータ管理装置100の処理例を説明する。これら図15~図20に示す処理は、データ管理装置100の制御部であるCPU1401が実行処理する。
次に、図15~図20を用いてデータ管理装置100の処理例を説明する。これら図15~図20に示す処理は、データ管理装置100の制御部であるCPU1401が実行処理する。
(全体処理例)
図15は、データ管理装置が行うイベントの全体処理例のフローチャートである。データ管理装置100は、図15に示す各処理(ステップS1502~ステップS1508)について、処理の停止要求があるまで継続してループ処理する。
図15は、データ管理装置が行うイベントの全体処理例のフローチャートである。データ管理装置100は、図15に示す各処理(ステップS1502~ステップS1508)について、処理の停止要求があるまで継続してループ処理する。
はじめに、データ管理装置100は、イベントメッセージの受信を待機し(ステップS1502)、イベントメッセージの受信によりステップS1503の処理に移行する。データ管理装置100は、イベントメッセージの受信時、メッセージの宛先に相当するデジタルツインのidをデジタルツインのタイプのオブジェクト$0に設定する。
次に、データ管理装置100は、受信したイベントメッセージをデシリアライズする(ステップS1503)。次に、データ管理装置100は、受信したイベントメッセージの含まれるステート項目のうち、グループ化ステート項目($0,*)をKVS110からプリフェッチする(ステップS1504)。
次に、データ管理装置100は、受信したイベントメッセージに対するメッセージ処理を行う(ステップS1505)。次に、データ管理装置100は、$0のタイプで登録されているユーザロジック220を選択し、選択したユーザロジック220の処理を実行する(ステップS1506)。選択されたユーザロジック220は、イベントメッセージに対するWRITEアクセスあるいはREADアクセスの処理を実行する。
次に、データ管理装置100は、アクセス統計情報640から高頻度ステート項目一覧情報120を作成する(ステップS1507)。例えば、データ管理装置100は、高頻度ステート項目一覧情報120の作成を、各イベントメッセージの処理毎ではなく、あらかじめ定めた一定期間毎に定期的に実行する。この後、データ管理装置100は、キャッシュメモリ630のキャッシュデータをKVS110にフラッシュし、KVS110を更新する(ステップS1508)。この後、ステップS1509では、データ管理装置100は、装置に対する停止要求がなければ、以上の処理を継続するためステップS1501の処理に戻り、処理の停止要求があれば、以上の処理を終了する(ステップS1509)。
(メッセージ処理例)
図16は、データ管理装置のメッセージ処理例のフローチャートである。図16は、図15のステップS1505の処理詳細を示す。図16に示す処理内容は、既存のデジタルツインのメッセージ処理に相当する。データ管理装置100は、図16に示す処理(ステップS1602)について、イベントメッセージに記載の各ステート項目に対する処理が終了するまでループ処理する。
図16は、データ管理装置のメッセージ処理例のフローチャートである。図16は、図15のステップS1505の処理詳細を示す。図16に示す処理内容は、既存のデジタルツインのメッセージ処理に相当する。データ管理装置100は、図16に示す処理(ステップS1602)について、イベントメッセージに記載の各ステート項目に対する処理が終了するまでループ処理する。
ステップS1602では、データ管理装置100は、デジタルツインで管理しているステート項目の値を、イベントメッセージに含まれる値で更新する(WRITEアクセス、ステップS1602)。なお、データ管理装置100は、はじめて出現するステート項目の場合は、デジタルツイン上で新規にステート項目を作成する。この後、ステップS1603では、データ管理装置100は、イベントメッセージに記載の各ステート項目に対する処理が未完であれば、処理継続のためステップS1601の処理に戻る。一方、データ管理装置100は、全てのステート項目に対する処理が終了すれば、以上の処理を終了する(ステップS1603)。
(WRITEアクセス処理例)
図17は、データ管理装置が行うWRITEアクセス処理例のフローチャートである。図17は、図15のステップS1506におけるユーザロジック220の制御により、デジタルツインのオブジェクト$0のステート項目$xにWRITEアクセスする処理例を示す。はじめに、データ管理装置100は、$xへのアクセスをアクセス統計情報640に記録する(ステップS1701)。ステップS1701の処理は、ステート項目毎と、処理するイベント毎に一回実行する。
図17は、データ管理装置が行うWRITEアクセス処理例のフローチャートである。図17は、図15のステップS1506におけるユーザロジック220の制御により、デジタルツインのオブジェクト$0のステート項目$xにWRITEアクセスする処理例を示す。はじめに、データ管理装置100は、$xへのアクセスをアクセス統計情報640に記録する(ステップS1701)。ステップS1701の処理は、ステート項目毎と、処理するイベント毎に一回実行する。
次に、データ管理装置100は、高頻度ステート項目一覧情報120を参照し、高頻度ステート項目一覧情報が存在するか否かを判断する(ステップS1702)。高頻度ステート項目一覧情報120に高頻度ステート項目一覧が存在すれば(ステップS1702:Yes)、データ管理装置100は、ステップS1703の処理に移行する。一方、高頻度ステート項目一覧情報120に高頻度ステート項目一覧が存在しなければ(ステップS1702:No)、データ管理装置100は、ステップS1706の処理に移行する。
ステップS1703では、データ管理装置100は、ステート項目$xが高頻度ステート項目一覧情報120に含まれているか否かを判断する(ステップS1703)。ステート項目$xが高頻度ステート項目一覧情報120に含まれていれば(ステップS1703:Yes)、データ管理装置100は、ステップS1704の処理に移行する。一方、ステート項目$xが高頻度ステート項目一覧情報120に含まれていなければ(ステップS1703:No)、データ管理装置100は、ステップS1708の処理に移行する。
ステップS1704では、データ管理装置100は、$xがキャッシュメモリ330のグループ化ステート項目の*に含まれているか否かを判断する(ステップS1704)。$xがキャッシュメモリ330の中の*に含まれていれば(ステップS1704:Yes)、データ管理装置100は、ステップS1705の処理に移行する。一方、$xがキャッシュメモリ330の中の*に含まれていなければ(ステップS1704:No)、データ管理装置100は、ステップS1709の処理に移行する。
ステップS1705では、データ管理装置100は、$xとその値を*に書きキャッシュメモリ330に格納し(ステップS1705)、以上の処理を終了する。
ステップS1706では、データ管理装置100は、$xがキャッシュメモリ330の中の*に含まれているか否かを判断する(ステップS1706)。$xがキャッシュメモリ330の中の*に含まれていれば(ステップS1706:Yes)、データ管理装置100は、ステップS1705の処理に移行する。一方、$xがキャッシュメモリ330の中の*に含まれていなければ(ステップS1706:No)、データ管理装置100は、ステップS1707の処理に移行する。
ステップS1707では、データ管理装置100は、$xとその値をキャッシュメモリ330に格納し(ステップS1707)、以上の処理を終了する。
ステップS1708では、データ管理装置100は、$xを*から削除し(ステップS1708)、ステップS1707の処理に移行する。なお、*に$xがなければ、データ管理装置100は削除の処理を実行しない。
ステップS1709では、データ管理装置100は、グループ化ステート項目($0,$x)をKVS110とキャッシュメモリ330から削除し(ステップS1709)、ステップS1705の処理に移行する。
(READアクセス処理例)
図18は、データ管理装置が行うREADアクセス処理例のフローチャートである。図18は、図15のステップS1506におけるユーザロジック220の制御により、デジタルツイン$0のステート項目$xにREADアクセスする処理例を示す。はじめに、データ管理装置100は、$xへのアクセスをアクセス統計情報640に記録する(ステップS1801)。ステップS1801の処理は、ステート項目毎と、処理するイベント毎に一回実行する。
図18は、データ管理装置が行うREADアクセス処理例のフローチャートである。図18は、図15のステップS1506におけるユーザロジック220の制御により、デジタルツイン$0のステート項目$xにREADアクセスする処理例を示す。はじめに、データ管理装置100は、$xへのアクセスをアクセス統計情報640に記録する(ステップS1801)。ステップS1801の処理は、ステート項目毎と、処理するイベント毎に一回実行する。
次に、データ管理装置100は、ステート項目$xがキャッシュメモリ330の中の*に含まれているか否かを判断する(ステップS1802)。ステート項目$xがキャッシュメモリ330の中の*に含まれていれば(ステップS1802:Yes)、データ管理装置100は、ステップS1803の処理に移行する。一方、ステート項目$xがキャッシュメモリ330の中の*に含まれていなければ(ステップS1802:No)、データ管理装置100は、ステップS1804の処理に移行する。
ステップS1803では、データ管理装置100は、ステート項目$xを*から読み(ステップS1803)、以上の処理を終了する。
ステップS1804では、データ管理装置100は、ステート項目$xがキャッシュメモリ330の中に含まれているか否かを判断する(ステップS1804)。ステート項目$xがキャッシュメモリ330の中に含まれていれば(ステップS1804:Yes)、データ管理装置100は、ステップS1805の処理に移行する。一方、ステート項目$xがキャッシュメモリ330の中に含まれていなければ(ステップS1804:No)、データ管理装置100は、ステップS1806の処理に移行する。
ステップS1805では、データ管理装置100は、ステート項目$xをキャッシュメモリ330から読み(ステップS1805)、以上の処理を終了する。
ステップS1806では、データ管理装置100は、グループ化ステート項目($0,$x)をKVS110から読み(ステップS1806)、以上の処理を終了する。
(高頻度ステート項目一覧情報作成処理例)
図19A~図19Cは、データ管理装置が行う高頻度ステート項目一覧情報作成処理例のフローチャートである。図19Aは、高頻度ステート項目一覧情報作成の全体処理であり、図15のステップS1507の処理の詳細を示す。
図19A~図19Cは、データ管理装置が行う高頻度ステート項目一覧情報作成処理例のフローチャートである。図19Aは、高頻度ステート項目一覧情報作成の全体処理であり、図15のステップS1507の処理の詳細を示す。
図19Aにおいて、データ管理装置100は、はじめに、システム起動、あるいは前回の高頻度ステート項目一覧情報120の作成から所定時間経過したか否かを判断する(ステップS1901)。データ管理装置100は、システム起動時、あるいは前回の高頻度ステート項目一覧情報120の作成から所定時間経過していれば(ステップS1901:Yes)、ステップS1902の処理に移行する。一方、システム起動時ではなく、あるいは前回の高頻度ステート項目一覧情報120の作成から所定時間経過していなければ(ステップS1901:No)、データ管理装置100は、ステップS1905の処理に移行する。
ステップS1902では、データ管理装置100は、デジタルツインのタイプ別のアクセス統計情報640を用いてタイプ別のループ処理を行う(ステップS1902)。ループ処理中では、一つのタイプの高頻度ステート項目一覧情報120を作成する処理を行う(ステップS1903)。
この後、ステップS1903では、データ管理装置100は、全タイプの高頻度ステート項目一覧情報120の作成処理が未完であれば、処理を継続するためステップS1902の処理に戻る。一方、データ管理装置100は、全タイプの高頻度ステート項目一覧情報120の作成処理が終了すれば、以上の処理を終了する(ステップS1904)。
また、ステップS1905では、データ管理装置100は、高頻度ステート項目一覧情報120を作成しない(作成済みであれば更新しない、ステップS1905)。この後、データ管理装置100は、以上の処理を終了する。
図19B,図19Cは、図19AのステップS1903の処理の詳細を示す。図19Bにおいて、データ管理装置100は、一つのタイプのアクセス統計情報640のテーブルS、イベントインデクスE、利用度の閾値Cの各データを取得して、以下の処理を実行する。アクセス統計情報640のテーブルSには、図12に示したように、縦行のステート項目別に、ステート項目(名)n、最初検知インデクスf、最後検知インデクスl、アクセス回数c、サイズ合計s、のデータが列状に格納されている。データ管理装置100は、最後検知インデクスlは、記録を一つのイベントメッセージで1回のみ実行するために使用する。
はじめに、データ管理装置100は、コスト合計TC(total cost)を0、加重利用度WU(weightened usefulness)を0に設定する(ステップS1910)。次に、データ管理装置100は、複数のステート項目について、テーブルSの各行(n,f,l,c,s)に対するループ処理を行う(ステップS1911)。
このループ処理において、データ管理装置100は、一つのステート項目について、利用度UとアクセスコストACを算出する(ステップS1912)。データ管理装置100は、利用度(アクセス確率)U(usefulness)を、例えば、c/(E-f)に基づき算出する。データ管理装置100は、アクセスコストAC(access cost)を、例えば、ステート項目の平均サイズとしてs/cに基づき算出する。
次に、データ管理装置100は、利用度Uが閾値Cを上回るか(C<U)否かを判断する(ステップS1913)。利用度Uが閾値Cを上回れば(ステップS1913:Yes)、データ管理装置100は、ステップS1914の処理に移行する。一方、利用度Uが閾値Cを上回らなければ(ステップS1913:No)、データ管理装置100は、ステップS1915の処理に移行する。
ステップS1914では、データ管理装置100は、処理中のタイプの高頻度ステート項目一覧情報120(テーブルS)の出力Fに、nを追加する。また、データ管理装置100は、テーブルSから(n,f,l,c,s)を削除する。また、データ管理装置100は、加重利用度WUを、例えば、WU+U×ACに基づき算出する。また、データ管理装置100は、コスト合計TCを、例えば、TC+ACに基づき算出する(ステップS1914)。
ステップS1915では、データ管理装置100は、他の全タイプに対する処理が未完であれば、以上の処理を継続するためステップS1911の処理に戻り、全タイプに対する処理が終了すれば、ステップS1920(図19C)の処理に移行する。
次に、データ管理装置100は、図19CのステップS1920において、テーブルSの各行(n,f,l,c,s)で所定の順番、例えば、サイズが小さいステート項目から順番に(昇順に)ループ処理を行う(ステップS1920)。例えば、データ管理装置100は、(1-c/(E-f))×s/cに基づき順番を決定する。
このループ処理において、データ管理装置100は、一つのステート項目について、利用度Uと、アクセスコストACと、加重利用度WU’と、コスト合計TC’とを算出する(ステップS1921)。データ管理装置100は、利用度Uを、例えば、c/(E-f)に基づき算出する。データ管理装置100は、アクセスコストACを、例えば、s/cに基づき算出する。データ管理装置100は、加重利用度WU’を、例えば、WU+U×ACに基づき算出する。データ管理装置100は、コスト合計TC’を、例えば、TC+ACに基づき算出する。
次に、データ管理装置100は、全体利用度(WU’/TC’)が閾値Cを上回るか(C<WU’/TC’)否かを判断する(ステップS1922)。全体利用度が閾値Cを上回れば(ステップS1922:Yes)、データ管理装置100は、ステップS1923の処理に移行する。一方、全体利用度が閾値Cを上回らなければ(ステップS1922:No)、データ管理装置100は、ステップS1924の処理に移行する。
ステップS1923では、データ管理装置100は、処理中のタイプの高頻度ステート項目一覧情報120(テーブルS)の出力Fに、nを追加する。また、データ管理装置100は、全体利用度WU’を加重利用度WUとする。また、データ管理装置100は、コスト合計TC’をコスト合計TCとする(ステップS1923)。
ステップS1924では、データ管理装置100は、他の全タイプに対する処理が未完であれば、以上の処理を継続するためステップS1920の処理に戻り、全タイプに対する処理が終了すれば、以上の処理を終了する。データ管理装置100は、この処理終了でタイプ別の高頻度ステート項目一覧情報F(120)を出力し、図19AのステップS1904の処理に移行する。
(キャッシュメモリのフラッシュ処理)
図20は、データ管理装置が行うフラッシュ処理例のフローチャートである。図20は、図15のステップS1508のキャッシュメモリ630のフラッシュ処理例を示す。はじめに、データ管理装置100は、高頻度ステート項目一覧情報120が存在するか否かを判断する(ステップS2001)。高頻度ステート項目一覧情報120が存在すれば(ステップS2001:Yes)、データ管理装置100は、ステップS2002の処理に移行する。一方、高頻度ステート項目一覧情報120が存在しなければ(ステップS2001:No)、データ管理装置100は、ステップS2003の処理に移行する。
図20は、データ管理装置が行うフラッシュ処理例のフローチャートである。図20は、図15のステップS1508のキャッシュメモリ630のフラッシュ処理例を示す。はじめに、データ管理装置100は、高頻度ステート項目一覧情報120が存在するか否かを判断する(ステップS2001)。高頻度ステート項目一覧情報120が存在すれば(ステップS2001:Yes)、データ管理装置100は、ステップS2002の処理に移行する。一方、高頻度ステート項目一覧情報120が存在しなければ(ステップS2001:No)、データ管理装置100は、ステップS2003の処理に移行する。
ステップS2002では、データ管理装置100は、高頻度ステート項目一覧情報120に設定された高頻度の各ステート項目の確率(例えば、上記アクセス確率U)が所定の閾値(例えば3%)より低確率であるか否かを判断する(ステップS2002)。ステート項目の確率が閾値を上回る場合には(ステップS2002:No)、データ管理装置100は、ステート項目が高頻度であるためステップS2003の処理に移行する。一方、ステート項目の確率が閾値を下回る場合には(ステップS2002:Yes)、データ管理装置100は、ステート項目が低頻度であり、このステート項目を排除するステップS2004の処理に移行する。
ステップS2004では、データ管理装置100は、($0,*)の各エントリ$xに対するループ処理を行う(ステップS2004)。ステップS2005では、データ管理装置100は、($0,$x)を再度WRITEアクセスする(図17参照、ステップS2005)。このWRITEアクセスにより、低頻度のステート項目はグループ化した高頻度ステート項目の中から低頻度ステート項目を削除する。ステップS2006では、データ管理装置100は、($0,*)の各エントリ$xに対する処理が残っていればステップS2004の処理に移行し、($0,*)の各エントリ$xに対する処理が終了すればステップS2003の処理に移行する。
ステップS2003では、データ管理装置100は、キャッシュメモリ630の更新されたエントリをKVSにWRITE(フラッシュ処理)し(ステップS2003)、以上の処理を終了する。
(既存技術と実施の形態の対比)
次に、既存技術と実施の形態とを対比説明する。まず、図21A,図21Bを用いてREAD/WRITE処理を対比する。
次に、既存技術と実施の形態とを対比説明する。まず、図21A,図21Bを用いてREAD/WRITE処理を対比する。
図21Aは、既存技術によるREAD/WRITE処理の説明図である。この図21Aでは、上述した高頻度のステート項目をグループ化(X,*)する方式3の例を示す。
既存技術のデータ管理装置300では、KVS110のエントリの格納場所をメタデータ2101で判定している。このため、既存技術では、メタデータ2101と、エントリ2102とを、それぞれキャッシュメモリ330上にキャッシュ保持しておく。この場合、ユーザロジック220によるステート更新時、ゲートウェイ部2210は、メタデータのレイアウトのみに基づき、キャッシュメモリ330上のエントリ構造を判断し、KVS110のステート項目に対するREAD/WRITEアクセスを行う。既存技術では、メタデータが示すレイアウト(KVS110の格納構造)が必要となる。また、ステート項目の頻度に基づきステート項目のグループ化を変更する場合、KVS110の格納構造の変更と、メタデータの変更とを一括して排他的に処理する必要があり、データ処理上大きなオーバヘッドが生じる。
図21Bは、実施の形態によるREAD/WRITE処理の説明図である。図21B(a)のREAD処理では、データ管理装置100のグループ化ゲートウェイ部620は、グループ化ステート項目を確認する。この際、データ管理装置100は、エントリ2102をキャッシュメモリ630に予めプリフェッチしておくため、短時間でアクセスできる。また、グループ化ゲートウェイ部620は、グループ化ステート項目がなければ、個別のエントリとしてKVS110にアクセスできる。
図21B(b)のWRITE処理では、データ管理装置100のグループ化ゲートウェイ部620は、高頻度ステート項目一覧情報120があれば、それを参照してクループ化したステート項目のメンテナンスを実行することができる。
このように、実施の形態によれば、高頻度なステート項目のエントリをグループ化することで、ステート項目の数が多くても、イベントメッセージの処理毎にKVS110への1回のアクセスで済ませることができ、アクセスを効率化できる。また、イベントメッセージの処理の冒頭で予めイベント情報をプリフェッチしておくことで、待ち時間をさらに減らすことができる。また、低頻度なステート項目を個別エントリとすることで、都度アクセスは生じるが、アクセスが低頻度であるため、全体性能には影響を与えない。また、低頻度なステート項目は、グループ化した高頻度ステート項目には含まれないため、無駄なI/Oやデータ転送を防ぐことができる。これらにより、KVS110に格納されたステート情報へのアクセス時間を短くでき、デジタルツインのイベント処理を高速化できる。
次に、図22A,図22Bを用いてグループ化ステート項目のメンテナンス処理を対比する。
図22Aは、既存技術によるグループ化ステート項目のメンテナンス処理の説明図である。既存技術のデータ管理装置300のイベント処理部302は、グループ化ステート項目のメンテナンス処理時には、以下の手順1.~3.を排他的に実行する必要がある。
1.イベントメッセージ210の入力を一時停止する(ステップS2201)。また、バックアップサーバ650へのKVS110のデータバックアップを一時停止する(ステップS2202)。
2.KVS110のメタデータを更新する(ステップS2203)。図示の例では、メタデータv3を更新用のメタデータv4で更新する。
3.同じタイプに分類される全デジタルツインの格納構造を一括して更新する(ステップS2204)。この処理は、デジタルツインの数が多くなるほど処理負担が増加する。
図22Bは、実施の形態によるグループ化ステート項目のメンテナンス処理の説明図である。実施の形態では、データ管理装置100のグループ化ゲートウェイ部620は、
1.高頻度判定部624による高頻度ステート項目の判定を行う(ステップS2210)のみである。
1.高頻度判定部624による高頻度ステート項目の判定を行う(ステップS2210)のみである。
そして、データ管理装置100は、実際のメンテナンスは、デジタルツイン毎に非同期で行う。データ管理装置100は、このメンテナンスを所定のWRITE処理と併せて実行する。各デジタルツインは、それぞれ異なる格納構造にできる。ここで、高頻度ステート項目一覧情報120に含まれるステートは、デジタルツインにおいてIoTデバイス200からのイベントメッセージを受信した際に更新されることが多い。このため、データ管理装置100は、イベントメッセージ受信時の処理と、高頻度ステート項目一覧情報120のメンテナンスのための更新の処理を重畳して実行し、KVS110に対し、これら重畳した処理の結果をKVS110に1回の書き込み処理を行う。これにより、高頻度ステート項目一覧情報120のメンテナンスのために、KVS110に対し余分なWRITE処理が発生することがない。
以上説明した実施の形態のデータ管理装置100は、所定のデータ処理プログラムがデータ処理する際、データストアへのアクセス頻度に基づき、アクセス頻度が高い高頻度ステート項目を一覧化した高頻度ステート項目一覧情報を作成する。データ管理装置100は、データストアに高頻度ステート項目の値を含むステート情報を書き込む際に、高頻度ステート項目一覧情報を参照し、ステート情報が高頻度ステート項目に該当するか否かを判定する。データ管理装置100は、ステート情報が高頻度ステート項目に該当すると判定した場合には、データストアの1レコードに複数の高頻度ステート項目のステート情報をグループ化して書き込む。一方、データ管理装置100は、ステート情報が高頻度ステート項目に該当しないと判定した場合には、データストアの1レコードにステート情報を書き込む。これにより、データ管理装置100によれば、データストアに対するステート項目別のアクセス頻度の変化に柔軟に対応してデータストアの格納構造を動的に変更し最適化できる。データ管理装置100によれば、頻繁に更新されるステート情報はグループ化してデータストアに格納することで、データストアへの1回のアクセスで複数のステート項目のステート情報を書き込みできる。例えば、膨大な数のIoTデバイスから入力されるイベントメッセージ処理におけるデータストアに対するアクセス時間を短くでき、デジタルツインのイベント処理を高速化できるようになる。さらに、データ管理装置100によれば、例えば、特別なメタデータへのアクセスを不要とし、データストアの格納構造を変更するための余計なオーバヘッドの処理が発生することがない。
また、データ管理装置100は、作成の処理は、ステート項目毎のデータストアへのアクセス頻度に基づき、当該アクセス頻度が所定の閾値より高い複数の高頻度ステート項目を一覧化した高頻度ステート項目一覧情報を作成する。これにより、データ管理装置100によれば、高頻度ステート項目のアクセス頻度に応じて高頻度ステート項目一覧情報を動的に更新できる。
また、データ管理装置100のデータストアは、KVS(Key Value Store)およびキャッシュメモリとすることができる。この場合、データ管理装置100は、書き込む処理は、キャッシュメモリに対して行い、所定の時期にキャッシュメモリからKVSにキャッシュデータをフラッシュする。これにより、データ管理装置100によれば、キャッシュメモリ上で格納構造を動的に変更し、頻繁に更新されるステート情報をグループ化した後、KVS110の格納構造に反映できる。
また、データ管理装置100は、所定のデータ処理プログラムの処理の冒頭で、入力されるステート情報に対応し、KVSに格納されているグループ化されたステート情報をキャッシュメモリにプリフェッチする処理を含む。これにより、データ管理装置100によれば、プリフェッチによりイベントメッセージの処理をさらに高速化できる。
また、データ管理装置100は、作成の処理は、データストアへのアクセス頻度の変動に基づき、高頻度ステート項目一覧情報を更新する。データ管理装置100は、データストアへのステート情報の書き込みの処理中非同期に、更新した高頻度ステート項目一覧情報を重畳して書き込み処理する。これにより、データ管理装置100によれば、ステート項目へのアクセスパターンの変更をデータストアの格納構造を追従して変更でき、高頻度ステート項目一覧情報を常に最適な状態に維持できる。また、データストアの格納構造を常に最適に維持できる。このデータストアの格納構造の変更のためにデータストアへの追加のアクセスは生じることがなく、メッセージ処理の遅延等の影響を防ぐことができる。
また、データ管理装置100は、作成の処理は、ステート項目毎のデータストアに対するアクセスにかかるコストと、データ処理数及び頻度に基づき、高頻度ステート項目を決定する。これにより、データ管理装置100によれば、イベントメッセージの入力状態や利用度等に応じて、ステート項目毎に高頻度ステート項目を正しく特定できるようになる。
また、データ管理装置100は、作成の処理は、ステート項目の値を含むステート情報を出力する外部のデバイスの種類別に高頻度ステート項目一覧情報を作成する。データ管理装置100は、判定の処理は、外部のデバイスの種類別に対応した高頻度ステート項目一覧情報を参照して行う。例えば、データ管理装置100は、所定のデータ処理プログラムは、異なる種類別の複数の外部のデバイスから入力されるイベントメッセージ別の複数が、それぞれ種類別にメッセージ処理する。データ管理装置100は、判定の処理は、所定のデータ処理プログラムによりデータストアにステート項目の値を含むステート情報を書き込む際に、種類別の高頻度ステート項目一覧情報を参照し、イベントメッセージに含まれる一つまたは複数のステート項目が高頻度ステート項目に該当するか否かを判定する。これにより、データ管理装置100によれば、IoTデバイス等の多種多様な外部デバイスからの入力に基づくデータ処理を行うことができ、外部デバイスの種別毎に適したデータストアへのアクセスが行える。
また、データ管理装置100は、データストアからステート項目の値を含むステート情報の読み出しの際に、データストアのレコードにグループ化されたステート情報、あるいは個別のステート情報を読み出す。これにより、データ管理装置100は、データストアへの書き込みでステートの格納構造を最適化していることで、データストアからの読み出しを簡単に行える。また、読み出し時、高頻度ステート項目一覧情報を参照する必要はない。
なお、本発明の実施の形態で説明したデータ管理方法は、予め用意されたプログラムをサーバ等のプロセッサに実行させることにより実現することができる。本方法は、ハードディスク、フレキシブルディスク、CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disk)、フラッシュメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本方法は、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)所定のデータ処理プログラムがデータ処理する際、データストアへのアクセス頻度に基づき、前記アクセス頻度が高い高頻度ステート項目を一覧化した高頻度ステート項目一覧情報を作成し、
前記データストアに前記高頻度ステート項目の値を含むステート情報を書き込む際に、前記高頻度ステート項目一覧情報を参照し、前記ステート情報が前記高頻度ステート項目に該当するか否かを判定し、
前記ステート情報が前記高頻度ステート項目に該当すると判定された場合には、前記データストアの1レコードに複数の前記高頻度ステート項目の前記ステート情報をグループ化して書き込み、
前記ステート情報が前記高頻度ステート項目に該当しないと判定された場合には、前記データストアの1レコードに前記ステート情報を書き込む、
処理をコンピュータが実行することを特徴とするデータ管理方法。
前記データストアに前記高頻度ステート項目の値を含むステート情報を書き込む際に、前記高頻度ステート項目一覧情報を参照し、前記ステート情報が前記高頻度ステート項目に該当するか否かを判定し、
前記ステート情報が前記高頻度ステート項目に該当すると判定された場合には、前記データストアの1レコードに複数の前記高頻度ステート項目の前記ステート情報をグループ化して書き込み、
前記ステート情報が前記高頻度ステート項目に該当しないと判定された場合には、前記データストアの1レコードに前記ステート情報を書き込む、
処理をコンピュータが実行することを特徴とするデータ管理方法。
(付記2)前記作成の処理は、
前記ステート項目毎の前記データストアへのアクセス頻度に基づき、当該アクセス頻度が所定の閾値より高い複数の高頻度ステート項目を一覧化した前記高頻度ステート項目一覧情報を作成する、
ことを特徴とする付記1に記載のデータ管理方法。
前記ステート項目毎の前記データストアへのアクセス頻度に基づき、当該アクセス頻度が所定の閾値より高い複数の高頻度ステート項目を一覧化した前記高頻度ステート項目一覧情報を作成する、
ことを特徴とする付記1に記載のデータ管理方法。
(付記3)前記データストアは、KVS(Key Value Store)およびキャッシュメモリであり、
前記書き込む処理は、
前記キャッシュメモリに対して行い、
所定の時期に前記キャッシュメモリから前記KVSにキャッシュデータをフラッシュする、
ことを特徴とする付記1または2に記載のデータ管理方法。
前記書き込む処理は、
前記キャッシュメモリに対して行い、
所定の時期に前記キャッシュメモリから前記KVSにキャッシュデータをフラッシュする、
ことを特徴とする付記1または2に記載のデータ管理方法。
(付記4)前記所定のデータ処理プログラムの処理の冒頭で、入力される前記ステート情報に対応し、前記KVSに格納されているグループ化された前記ステート情報を前記キャッシュメモリにプリフェッチする処理を含む、
ことを特徴とする付記3に記載のデータ管理方法。
ことを特徴とする付記3に記載のデータ管理方法。
(付記5)前記作成の処理は、
前記データストアへのアクセス頻度の変動に基づき、前記高頻度ステート項目一覧情報を更新し、
前記データストアへの前記ステート情報の書き込みの処理中非同期に、更新した前記高頻度ステート項目一覧情報を重畳して書き込み処理する、
ことを特徴とする付記1~4のいずれか一つに記載のデータ管理方法。
前記データストアへのアクセス頻度の変動に基づき、前記高頻度ステート項目一覧情報を更新し、
前記データストアへの前記ステート情報の書き込みの処理中非同期に、更新した前記高頻度ステート項目一覧情報を重畳して書き込み処理する、
ことを特徴とする付記1~4のいずれか一つに記載のデータ管理方法。
(付記6)前記作成の処理は、
前記ステート項目毎の前記データストアに対するアクセスにかかるコストと、データ処理数及び頻度に基づき、前記高頻度ステート項目を決定する、
ことを特徴とする付記1~5のいずれか一つに記載のデータ管理方法。
前記ステート項目毎の前記データストアに対するアクセスにかかるコストと、データ処理数及び頻度に基づき、前記高頻度ステート項目を決定する、
ことを特徴とする付記1~5のいずれか一つに記載のデータ管理方法。
(付記7)前記作成の処理は、
前記ステート項目の値を含むステート情報を出力する外部のデバイスの種類別に前記高頻度ステート項目一覧情報を作成し、
前記判定の処理は、
前記外部のデバイスの種類別に対応した前記高頻度ステート項目一覧情報を参照して行う、
ことを特徴とする付記1~6のいずれか一つに記載のデータ管理方法。
前記ステート項目の値を含むステート情報を出力する外部のデバイスの種類別に前記高頻度ステート項目一覧情報を作成し、
前記判定の処理は、
前記外部のデバイスの種類別に対応した前記高頻度ステート項目一覧情報を参照して行う、
ことを特徴とする付記1~6のいずれか一つに記載のデータ管理方法。
(付記8)前記所定のデータ処理プログラムは、異なる種類別の複数の外部のデバイスから入力されるイベントメッセージ別の複数が、それぞれ種類別にメッセージ処理し、
前記判定の処理は、
前記所定のデータ処理プログラムにより前記データストアに前記ステート項目の値を含むステート情報を書き込む際に、前記種類別の前記高頻度ステート項目一覧情報を参照し、前記イベントメッセージに含まれる一つまたは複数の前記ステート項目が前記高頻度ステート項目に該当するか否かを判定する、
ことを特徴とする付記7に記載のデータ管理方法。
前記判定の処理は、
前記所定のデータ処理プログラムにより前記データストアに前記ステート項目の値を含むステート情報を書き込む際に、前記種類別の前記高頻度ステート項目一覧情報を参照し、前記イベントメッセージに含まれる一つまたは複数の前記ステート項目が前記高頻度ステート項目に該当するか否かを判定する、
ことを特徴とする付記7に記載のデータ管理方法。
(付記9)前記外部のデバイスは、IoTデバイスであり、
前記IoTデバイスが検出したステートおよび値の前記ステート情報を含む前記イベントメッセージが定期的に入力される、
ことを特徴とする付記8に記載のデータ管理方法。
前記IoTデバイスが検出したステートおよび値の前記ステート情報を含む前記イベントメッセージが定期的に入力される、
ことを特徴とする付記8に記載のデータ管理方法。
(付記10)前記データストアから前記ステート項目の値を含むステート情報の読み出しの際に、前記データストアのレコードにグループ化された前記ステート情報、あるいは個別の前記ステート情報を読み出す、
ことを特徴とする付記1~9のいずれか一つに記載のデータ管理方法。
ことを特徴とする付記1~9のいずれか一つに記載のデータ管理方法。
(付記11)所定のデータ処理プログラムがデータ処理する際、データストアへのアクセス頻度に基づき、前記アクセス頻度が高い高頻度ステート項目を一覧化した高頻度ステート項目一覧情報を作成し、
前記データストアに前記高頻度ステート項目の値を含むステート情報を書き込む際に、前記高頻度ステート項目一覧情報を参照し、前記ステート情報が前記高頻度ステート項目に該当するか否かを判定し、
前記ステート情報が前記高頻度ステート項目に該当すると判定された場合には、前記データストアの1レコードに複数の前記高頻度ステート項目の前記ステート情報をグループ化して書き込み、
前記ステート情報が前記高頻度ステート項目に該当しないと判定された場合には、前記データストアの1レコードに前記ステート情報を書き込む、
処理をコンピュータに実行させることを特徴とするデータ管理プログラム。
前記データストアに前記高頻度ステート項目の値を含むステート情報を書き込む際に、前記高頻度ステート項目一覧情報を参照し、前記ステート情報が前記高頻度ステート項目に該当するか否かを判定し、
前記ステート情報が前記高頻度ステート項目に該当すると判定された場合には、前記データストアの1レコードに複数の前記高頻度ステート項目の前記ステート情報をグループ化して書き込み、
前記ステート情報が前記高頻度ステート項目に該当しないと判定された場合には、前記データストアの1レコードに前記ステート情報を書き込む、
処理をコンピュータに実行させることを特徴とするデータ管理プログラム。
100 データ管理装置
110 KVS
120 高頻度ステート項目一覧情報
200 IoTデバイス
210 イベントメッセージ
220 ユーザロジック
230 ロジック処理情報
601 メッセージキュー
602 イベント処理部
610 プリフェッチ部
611 メッセージ処理部
612 プラグイン管理部
613 キャッシュフラッシュ部
620 グループ化ゲートウェイ部
621 WRITE部(書き込み部)
622 READ部(読み出し部)
623 アクセス統計情報部
624 高頻度判定部
625 高頻度ステート項目一覧作成部
630 キャッシュメモリ
640 アクセス統計情報
650 バックアップサーバ
1401 CPU
1402 メモリ
1403 ネットワークI/F
1405 記録媒体
1407 可搬型記録媒体
DT デジタルツイン
H1 高頻度ステート項目
L1 低頻度ステート項目
110 KVS
120 高頻度ステート項目一覧情報
200 IoTデバイス
210 イベントメッセージ
220 ユーザロジック
230 ロジック処理情報
601 メッセージキュー
602 イベント処理部
610 プリフェッチ部
611 メッセージ処理部
612 プラグイン管理部
613 キャッシュフラッシュ部
620 グループ化ゲートウェイ部
621 WRITE部(書き込み部)
622 READ部(読み出し部)
623 アクセス統計情報部
624 高頻度判定部
625 高頻度ステート項目一覧作成部
630 キャッシュメモリ
640 アクセス統計情報
650 バックアップサーバ
1401 CPU
1402 メモリ
1403 ネットワークI/F
1405 記録媒体
1407 可搬型記録媒体
DT デジタルツイン
H1 高頻度ステート項目
L1 低頻度ステート項目
Claims (10)
- 所定のデータ処理プログラムがデータ処理する際、データストアへのアクセス頻度に基づき、前記アクセス頻度が高い高頻度ステート項目を一覧化した高頻度ステート項目一覧情報を作成し、
前記データストアに前記高頻度ステート項目の値を含むステート情報を書き込む際に、前記高頻度ステート項目一覧情報を参照し、前記ステート情報が前記高頻度ステート項目に該当するか否かを判定し、
前記ステート情報が前記高頻度ステート項目に該当すると判定された場合には、前記データストアの1レコードに複数の前記高頻度ステート項目の前記ステート情報をグループ化して書き込み、
前記ステート情報が前記高頻度ステート項目に該当しないと判定された場合には、前記データストアの1レコードに前記ステート情報を書き込む、
処理をコンピュータが実行することを特徴とするデータ管理方法。 - 前記作成の処理は、
前記ステート項目毎の前記データストアへのアクセス頻度に基づき、当該アクセス頻度が所定の閾値より高い複数の高頻度ステート項目を一覧化した前記高頻度ステート項目一覧情報を作成する、
ことを特徴とする請求項1に記載のデータ管理方法。 - 前記データストアは、KVS(Key Value Store)およびキャッシュメモリであり、
前記書き込む処理は、
前記キャッシュメモリに対して行い、
所定の時期に前記キャッシュメモリから前記KVSにキャッシュデータをフラッシュする、
ことを特徴とする請求項1または2に記載のデータ管理方法。 - 前記所定のデータ処理プログラムの処理の冒頭で、入力される前記ステート情報に対応し、前記KVSに格納されているグループ化された前記ステート情報を前記キャッシュメモリにプリフェッチする処理を含む、
ことを特徴とする請求項3に記載のデータ管理方法。 - 前記作成の処理は、
前記データストアへのアクセス頻度の変動に基づき、前記高頻度ステート項目一覧情報を更新し、
前記データストアへの前記ステート情報の書き込みの処理中非同期に、更新した前記高頻度ステート項目一覧情報を重畳して書き込み処理する、
ことを特徴とする請求項1~4のいずれか一つに記載のデータ管理方法。 - 前記作成の処理は、
前記ステート項目毎の前記データストアに対するアクセスにかかるコストと、データ処理数及び頻度に基づき、前記高頻度ステート項目を決定する、
ことを特徴とする請求項1~5のいずれか一つに記載のデータ管理方法。 - 前記作成の処理は、
前記ステート項目の値を含むステート情報を出力する外部のデバイスの種類別に前記高頻度ステート項目一覧情報を作成し、
前記判定の処理は、
前記外部のデバイスの種類別に対応した前記高頻度ステート項目一覧情報を参照して行う、
ことを特徴とする請求項1~6のいずれか一つに記載のデータ管理方法。 - 前記所定のデータ処理プログラムは、異なる種類別の複数の外部のデバイスから入力されるイベントメッセージ別の複数が、それぞれ種類別にメッセージ処理し、
前記判定の処理は、
前記所定のデータ処理プログラムにより前記データストアに前記ステート項目の値を含むステート情報を書き込む際に、前記種類別の前記高頻度ステート項目一覧情報を参照し、前記イベントメッセージに含まれる一つまたは複数の前記ステート項目が前記高頻度ステート項目に該当するか否かを判定する、
ことを特徴とする請求項7に記載のデータ管理方法。 - 前記データストアから前記ステート項目の値を含むステート情報の読み出しの際に、前記データストアのレコードにグループ化された前記ステート情報、あるいは個別の前記ステート情報を読み出す、
ことを特徴とする請求項1~8のいずれか一つに記載のデータ管理方法。 - 所定のデータ処理プログラムがデータ処理する際、データストアへのアクセス頻度に基づき、前記アクセス頻度が高い高頻度ステート項目を一覧化した高頻度ステート項目一覧情報を作成し、
前記データストアに前記高頻度ステート項目の値を含むステート情報を書き込む際に、前記高頻度ステート項目一覧情報を参照し、前記ステート情報が前記高頻度ステート項目に該当するか否かを判定し、
前記ステート情報が前記高頻度ステート項目に該当すると判定された場合には、前記データストアの1レコードに複数の前記高頻度ステート項目の前記ステート情報をグループ化して書き込み、
前記ステート情報が前記高頻度ステート項目に該当しないと判定された場合には、前記データストアの1レコードに前記ステート情報を書き込む、
処理をコンピュータに実行させることを特徴とするデータ管理プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022005358A JP2023104400A (ja) | 2022-01-17 | 2022-01-17 | データ管理方法およびデータ管理プログラム |
EP22199082.3A EP4213029B1 (en) | 2022-01-17 | 2022-09-30 | Data management method and data management program |
US17/960,196 US11947464B2 (en) | 2022-01-17 | 2022-10-05 | Data management method for writing state information in data store and computer-readable recording medium storing data management program for writing state information in data store |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022005358A JP2023104400A (ja) | 2022-01-17 | 2022-01-17 | データ管理方法およびデータ管理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023104400A true JP2023104400A (ja) | 2023-07-28 |
Family
ID=83546770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022005358A Pending JP2023104400A (ja) | 2022-01-17 | 2022-01-17 | データ管理方法およびデータ管理プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11947464B2 (ja) |
EP (1) | EP4213029B1 (ja) |
JP (1) | JP2023104400A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11822939B2 (en) * | 2022-03-24 | 2023-11-21 | Oracle International Corporation | Collaborative analysis system for analyzing logs |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7472133B2 (en) * | 2004-07-30 | 2008-12-30 | Microsoft Corporation | System and method for improved prefetching |
JP4804233B2 (ja) | 2006-06-09 | 2011-11-02 | 株式会社日立製作所 | ストリームデータ処理方法 |
US8438361B2 (en) * | 2010-03-10 | 2013-05-07 | Seagate Technology Llc | Logical block storage in a storage device |
KR20150043102A (ko) * | 2013-10-14 | 2015-04-22 | 한국전자통신연구원 | 하이브리드 메모리의 데이터 관리 장치 및 방법 |
US9772939B2 (en) * | 2015-01-05 | 2017-09-26 | International Business Machines Corporation | Heat-based key-value slot organization for flash-optimized data placement in multi-tiered storage systems |
US10210087B1 (en) | 2015-03-31 | 2019-02-19 | EMC IP Holding Company LLC | Reducing index operations in a cache |
US10432723B2 (en) * | 2015-09-03 | 2019-10-01 | Toshiba Memory Corporation | Storage server and storage system |
US10289722B2 (en) * | 2015-11-17 | 2019-05-14 | Samsung Electronics Co., Ltd. | System and methods for multi-level key-value store |
JP7087420B2 (ja) | 2018-02-02 | 2022-06-21 | 富士通株式会社 | 処理プログラム、およびイベント処理方法 |
US20190303753A1 (en) * | 2018-03-28 | 2019-10-03 | Ca, Inc. | Insertion tolerant learned index structure through associated caches |
KR20190134115A (ko) * | 2018-05-25 | 2019-12-04 | 주식회사 티맥스데이터 | 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램 |
TWI688859B (zh) * | 2018-12-19 | 2020-03-21 | 財團法人工業技術研究院 | 記憶體控制器與記憶體頁面管理方法 |
US11449430B2 (en) * | 2020-04-02 | 2022-09-20 | Samsung Electronics Co., Ltd. | Key-value store architecture for key-value devices |
-
2022
- 2022-01-17 JP JP2022005358A patent/JP2023104400A/ja active Pending
- 2022-09-30 EP EP22199082.3A patent/EP4213029B1/en active Active
- 2022-10-05 US US17/960,196 patent/US11947464B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230229597A1 (en) | 2023-07-20 |
EP4213029A1 (en) | 2023-07-19 |
EP4213029B1 (en) | 2024-05-01 |
US11947464B2 (en) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4586019B2 (ja) | 非故障ノードによる並列な回復 | |
CN101013427B (zh) | 用于管理数据的方法和系统 | |
CN109271343B (zh) | 一种应用于键值存储系统中的数据合并方法和装置 | |
US20170272927A1 (en) | Management of dynamic events and moving objects | |
CN108959369B (zh) | 一种海量数据平台与大数据平台融合方法 | |
CN102411542A (zh) | 动态分级存储系统和方法 | |
JP2000112814A (ja) | メモリアロケ―ション方法及びメモリアロケ―ション装置 | |
CN102915401A (zh) | 在公共运输网络中的旅行规划 | |
CN110109886B (zh) | 分布式文件系统的文件存储方法及分布式文件系统 | |
JPWO2012026034A1 (ja) | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 | |
CN103959275A (zh) | 动态进程/对象范围的存储器关联性调整器 | |
EP4213029A1 (en) | Data management method and data management program | |
CN102779088B (zh) | 事务处理设备、事务处理方法及事务处理程序 | |
CN102024051B (zh) | 分布式内存数据库数据更新方法 | |
CN106970937B (zh) | 一种基于本地缓存快速建立索引的方法及系统 | |
CN112307065A (zh) | 一种数据处理方法、装置及服务器 | |
CN111949673B (zh) | 基于Hbase存储的分布式悲观锁及其实现方法 | |
CN117076426A (zh) | 基于流批一体化的交通智能引擎系统构建方法及装置 | |
CN114879910B (zh) | 分布式块存储底层读写系统及方法 | |
CN111581157B (zh) | 一种对象存储平台以及对象操作方法、装置和服务器 | |
CN114238481A (zh) | 一种分布式实时数据导入装置 | |
CN113835613A (zh) | 一种文件读取方法、装置、电子设备和存储介质 | |
CN110543362A (zh) | 一种图形处理器管理方法、装置及服务器 | |
CN118312478B (zh) | 一种访存性能优化的车辆相似轨迹查询方法 | |
CN112069091B (zh) | 一种应用于分子动力学模拟软件的访存优化方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20241010 |