(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-18
(45)【発行日】2023-04-26
(54)【発明の名称】データ収集プログラム、データ収集装置およびデータ収集方法
(51)【国際特許分類】
G06F 16/174 20190101AFI20230419BHJP
G06F 16/182 20190101ALI20230419BHJP
【FI】
G06F16/174
G06F16/182 100
(21)【出願番号】P 2019002414
(22)【出願日】2019-01-10
【審査請求日】2021-10-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】五木田 駿
【審査官】酒井 恭信
(56)【参考文献】
【文献】国際公開第2018/154698(WO,A1)
【文献】特開2004-234503(JP,A)
【文献】特開2010-205100(JP,A)
【文献】米国特許出願公開第2016/0044100(US,A1)
【文献】米国特許出願公開第2014/0156866(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10 - 16/188
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
データの送信元の装置から前回取得した第1のデータと前記装置から今回取得した第2のデータとの比較により前記第1のデータに対する前記第2のデータの差分部分を特定し、
前記差分部分を1つのブロックとするように、前記第2のデータのブロックの区切り位置を決定し、
決定した前記区切り位置で前記第2のデータを複数の第1のブロックに区切り、第1のブロック毎の第1のハッシュ値と前記区切り位置の情報とを前記装置に送信し、
前記装置により保持される第3のデータが前記区切り位置の情報を基に区切られた第2のブロック毎の第2のハッシュ値のうち、前記第1のブロック毎の第1のハッシュ値とは異なる前記第2のハッシュ値に対応する第2のブロック
と、前記第2のブロック毎の前記第2のハッシュ値のうち、前記第1のブロック毎の前記第1のハッシュ値とは異なる前記第2のハッシュ値に対応する前記第2のブロックの位置を示す第1の識別情報とを、前記装置から受信
し、
前記第2のデータのうちの前記第1の識別情報で示される位置のブロックを、前記装置から受信した前記第2のブロックに置換することで、前記第3のデータを生成する、
処理を実行させるデータ収集プログラム。
【請求項2】
前記送信では、閾値よりも小さいサイズの前記差分部分がある場合、前記第2のデータを前記複数の第1のブロックに区切った後、前記複数の第1のブロックから、前記閾値よりも小さいサイズの前記差分部分を先頭に集約した1つのブロックを含む複数の他のブロックを生成し、
前記第1のハッシュ値に代えて、前記複数の他のブロックに含まれるブロック毎の第3のハッシュ値と、前記区切り位置の情報と、前記複数の第1のブロックから前記複数の他のブロックへの変換に用いられる変換情報とを前記装置に送信
し、
前記受信では、前記装置により保持される前記第3のデータが前記区切り位置の情報を基に区切られた各ブロックが前記変換情報に基づいて変換された第5のブロック毎の第4のハッシュ値のうち、前記複数の他のブロックに含まれるブロック毎の前記第3のハッシュ値とは異なる前記第4のハッシュ値に対応する第5のブロックと、前記第5のブロック毎の前記第4のハッシュ値のうち、前記複数の他のブロックに含まれるブロック毎の前記第3のハッシュ値とは異なる前記第4のハッシュ値に対応する前記第5のブロックの位置であって、前記変換情報による変換後の前記第3のデータにおける当該第5のブロックの位置を示す第2の識別情報とを、前記第2のブロックおよび前記第1の識別情報に代えて、前記装置から受信し、
前記第2の識別情報および前記変換情報に基づいて、前記装置から受信した前記第5のブロックを前記第2のデータに適用することで、前記第3のデータを生成する、
請求項1記載のデータ収集プログラム。
【請求項3】
前記第1のデータに含まれる複数の第3のブロックそれぞれの
第5のハッシュ値を前記装置に送信し、前記第2のデータに含まれる複数の第4のブロックのうち当該
第5のハッシュ値とは異なるハッシュ値に対応する第4のブロック
と、前記第2のデータに含まれる前記複数の第4のブロックのうち当該第5のハッシュ値とは異なるハッシュ値に対応する前記第4のブロックの位置を示す第3の識別情報とを前記装置から受信し、受信した前記第4のブロックを
前記第3の識別情報に基づいて前記第1のデータに適用することで、前記第2のデータを
生成する、
請求項1記載のデータ収集プログラム。
【請求項4】
データの送信元の装置から前回取得した第1のデータと前記装置から今回取得した第2のデータとを記憶する記憶部と、
前記第1のデータと前記第2のデータとの比較により前記第1のデータに対する前記第2のデータの差分部分を特定し、前記差分部分を1つのブロックとするように、前記第2のデータのブロックの区切り位置を決定し、決定した前記区切り位置で前記第2のデータを複数の第1のブロックに区切り、第1のブロック毎の第1のハッシュ値と前記区切り位置の情報とを前記装置に送信し、前記装置により保持される第3のデータが前記区切り位置の情報を基に区切られた第2のブロック毎の第2のハッシュ値のうち、前記第1のブロック毎の第1のハッシュ値とは異なる前記第2のハッシュ値に対応する第2のブロック
と、前記第2のブロック毎の前記第2のハッシュ値のうち、前記第1のブロック毎の前記第1のハッシュ値とは異なる前記第2のハッシュ値に対応する前記第2のブロックの位置を示す第1の識別情報とを、前記装置から受信
し、前記第2のデータのうちの前記第1の識別情報で示される位置のブロックを、前記装置から受信した前記第2のブロックに置換することで、前記第3のデータを生成する処理部と、
を有するデータ収集装置。
【請求項5】
コンピュータが、
データの送信元の装置から前回取得した第1のデータと前記装置から今回取得した第2のデータとの比較により前記第1のデータに対する前記第2のデータの差分部分を特定し、
前記差分部分を1つのブロックとするように、前記第2のデータのブロックの区切り位置を決定し、
決定した前記区切り位置で前記第2のデータを複数の第1のブロックに区切り、第1のブロック毎の第1のハッシュ値と前記区切り位置の情報とを前記装置に送信し、
前記装置により保持される第3のデータが前記区切り位置の情報を基に区切られた第2のブロック毎の第2のハッシュ値のうち、前記第1のブロック毎の第1のハッシュ値とは異なる前記第2のハッシュ値に対応する第2のブロック
と、前記第2のブロック毎の前記第2のハッシュ値のうち、前記第1のブロック毎の前記第1のハッシュ値とは異なる前記第2のハッシュ値に対応する前記第2のブロックの位置を示す第1の識別情報とを、前記装置から受信
し、
前記第2のデータのうちの前記第1の識別情報で示される位置のブロックを、前記装置から受信した前記第2のブロックに置換することで、前記第3のデータを生成する、
データ収集方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ収集プログラム、データ収集装置およびデータ収集方法に関する。
【背景技術】
【0002】
データの送信元の装置に蓄積されるデータを当該装置から上位装置に送信するシステムが利用されている。例えば、ファイルサーバの記憶容量を、オンラインストレージサービスを利用して拡張する際、ファイルサーバがファイルをブロックファイルに分割して管理する情報管理方法の提案がある。提案の情報管理方法では、ファイルサーバは、既に登録・保存されたブロックファイル群に対して重複するブロックについては、オンラインストレージサービスにアップロードせず、ファイルの構成情報を変更するのみとする。
【0003】
また、受信コンピュータが旧ファイルをセグメントに分割し、各セグメントについてハッシュ数を計算し、これらのハッシュ数を送信コンピュータに転送するファイル転送方法の提案がある。提案のファイル転送方法では、送信コンピュータが新ファイルの各セグメントを検査し、どのセグメントが受信コンピュータから受信したハッシュ数とマッチングするハッシュ数を有するかを決定する。送信コンピュータは、新ファイルに適合するマッチングセグメントを受信コンピュータに通知する。そして、受信コンピュータは、旧ファイルのマッチングセグメントから新ファイルのコピーを構成する。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2012-141738号公報
【文献】特表平9-510559号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
データの送信元装置がデータをブロックに分割し、上位装置で保存済のブロックと重複するブロックを上位装置に送信しないことで、重複するブロックの転送を抑えることが考えられる。例えば、上位装置が送信元装置にデータ要求する際に、過去のデータを送ることで送信元装置は過去のデータとの差分ブロックのみを送ることが可能になる。
【0006】
このとき、データ転送量をより削減するため、上位装置で所定のブロック単位毎のハッシュ値を計算し、計算したブロック単位のハッシュ値を上位装置から送信元装置に送信することが考えられる。送信元装置は、蓄積されたデータについて、ブロック単位のハッシュ値を求め、上位装置から送信されたハッシュ値との差分に応じて送信するデータを特定できる。
【0007】
しかし、この場合、送信元装置から送信されるデータサイズの単位は、ハッシュ値の計算単位であるブロック単位となる。したがって、送信元装置は、ブロックの一部に差分がある場合でも当該ブロックの全体を送信することになり、データの転送量を十分に減らすことができないことがあるという問題がある。
【0008】
1つの側面では、本発明はこのような点に鑑みてなされたものであり、データの転送量を減らせるデータ収集プログラム、データ収集装置およびデータ収集方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、データ収集プログラムが提供される。このデータ収集プログラムは、コンピュータに、データの送信元の装置から前回取得した第1のデータと当該装置から今回取得した第2のデータとの比較により第1のデータに対する第2のデータの差分部分を特定し、差分部分を1つのブロックとするように、第2のデータのブロックの区切り位置を決定し、決定した区切り位置で第2のデータを複数の第1のブロックに区切り、第1のブロック毎の第1のハッシュ値と区切り位置の情報とを当該装置に送信し、当該装置により保持される第3のデータが区切り位置の情報を基に区切られた第2のブロック毎の第2のハッシュ値のうち、第1のブロック毎の第1のハッシュ値とは異なる第2のハッシュ値に対応する第2のブロックと、第2のブロック毎の第2のハッシュ値のうち、第1のブロック毎の第1のハッシュ値とは異なる第2のハッシュ値に対応する第2のブロックの位置を示す第1の識別情報とを、当該装置から受信し、第2のデータのうちの第1の識別情報で示される位置のブロックを、装置から受信した第2のブロックに置換することで第3のデータを生成する、処理を実行させる。
【0010】
また、1つの態様では、データ収集装置が提供される。
また、1つの態様では、データ収集方法が提供される。
【発明の効果】
【0011】
1つの側面では、データの転送量を減らすことができる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施の形態のデータ収集装置を示す図である。
【
図2】第2の実施の形態のデータ収集システムの例を示す図である。
【
図11】エッジ側データ送信処理の例(その1)を示すフローチャートである。
【
図12】サーバ側データ要求送信処理の例を示すフローチャートである。
【
図13】ブロック単位更新処理の例を示すフローチャートである。
【
図14】論物変換処理の例を示すフローチャートである。
【
図15】エッジ側データ送信処理の例(その2)を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0014】
図1は、第1の実施の形態のデータ収集装置を示す図である。
データ収集装置10は、ネットワークを介して装置20と通信し、装置20が保持するデータを収集する。装置20は、例えば、コンピュータなどの情報処理装置、センサ装置またはセンサ装置を搭載した機器(例えば、センサ装置を搭載した自動車などの移動体)などである。装置20は、データ収集装置10に送信するデータを記憶するためのメモリを有する。
【0015】
データ収集装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
【0016】
記憶部11は、装置20から収集されたデータを記憶する。例えば、記憶部11は、処理部12が装置20から前回取得した第1のデータD1を記憶する。第1のデータD1は、ブロックと呼ばれる所定サイズの単位に区切られている。例えば、第1のデータD1は、第1のデータD1の先頭から最後尾までを区切り位置a1,a2,a3で区切ったブロックB11,B12,B13,B14を有する。区切り位置は、データの先頭からのアドレス(例えば、a1,a2,a3がアドレスを示すとすると先頭アドレス<a1<a2<a3<最後尾アドレスとする)によって示される。区切り位置の情報は、データ収集装置10に対して予め定められ、データ収集装置10から装置20に対して予め通知される。
【0017】
処理部12は、装置20からデータを取得する。例えば、処理部12は、今回、第2のデータD2を、装置20から取得する。第2のデータD2のサイズは、第1のデータD1のサイズと同じである。処理部12は、ブロックB11,B12,B13,B14それぞれのハッシュ値(要約値と呼ばれることもある)を計算し、計算したハッシュ値を装置20に送信してもよい。
【0018】
装置20は、当該ハッシュ値を受信し、装置20が保持する新規データのうち、受信したハッシュ値とハッシュ値が異なるブロックと、当該新規データ内における当該ブロックのブロック位置を示すアドレスなどの識別情報とを装置20に送信する。新規データのブロックのうち、データ収集装置10から受信したハッシュ値と同じハッシュ値に対応するブロックは、データ収集装置10に送信済みであり、データ収集装置10が既に保持している。一方、新規データのブロックのうち、データ収集装置10から受信したハッシュ値と異なるハッシュ値に対応するブロックは、データ収集装置10に未送信である。したがって、装置20は、ハッシュ値が異なるブロックのみを送信することで、重複したデータをデータ収集装置10に送信せずに済む。
【0019】
第2のデータD2は、第2のデータD2の先頭から最後尾までを区切り位置a1,a2,a3で区切ったブロックB11,B12,B21,B14を有する。第2のデータD2は、第1のデータD1に対して、ブロックB11,B12,B14が共通であり、ブロックB21が共通でない。したがって、この場合、装置20は、第2のデータD2のうち、ブロックB21のみをデータ収集装置10に送信すればよい。
【0020】
処理部12は、ブロックB21および第2のデータD2内のブロックB21のブロック位置の識別情報を装置20から受信すると、ブロックB21がブロックB13に対する更新部分であると判断する。このため、データ収集装置10は、第1のデータD1のブロックB13をブロックB21に置換することで、第2のデータD2を得る。こうして、データ収集装置10は、重複ブロックに対するデータ収集を減らして、第2のデータD2を適切に取得できる。
【0021】
処理部12は、更に、第1のデータD1と第2のデータD2とを比較し、比較に応じて、第1のデータD1に対する第2のデータD2の差分部分を特定し、差分部分を1つのブロックB22とするように、第2のデータD2のブロックの区切り位置を決定する。例えば、第2のデータD2のうち、区切り位置a2~アドレスa4(ここで、a4は、区切り位置a2よりも大きく区切り位置a3よりも小さいアドレスである)の範囲が、第1のデータD1の同範囲とは内容が異なる部分であり、それ以外の部分は、第1のデータD1と内容が同じであるとする。そこで、例えば、処理部12は、第2のデータD2のブロックの区切り位置として、区切り位置a1,a2,a4を決定する。
【0022】
処理部12は、決定した区切り位置a1,a2,a4で第2のデータD2をブロックB11,B12,B22,B23(複数の第1のブロック)に区切る。処理部12は、ブロックB11,B12,B22,B23毎のハッシュ値(第1のハッシュ値)と、区切り位置a1,a2,a4の情報とを装置20に送信する。ブロックB11,B12,B22,B23それぞれのハッシュ値は、ハッシュ値h1,h2,h3,h4である。
【0023】
装置20は、ブロックB11,B12,B22,B23毎のハッシュ値と、区切り位置a1,a2,a4の情報を受信する。装置20のメモリには、データ収集装置10に未送信であり、次の送信対象である第3のデータD3が格納されている。第3のデータD3のサイズは、第2のデータD2のサイズと同じである。装置20は、第3のデータD3を、区切り位置a1,a2,a4の情報を基にブロックB11,B12,B31,B23(複数の第2のブロック)に区切る。装置20は、ブロックB11,B12,B31,B23毎のハッシュ値(第2のハッシュ値)を求める。ブロックB11,B12,B31,B23それぞれのハッシュ値は、ハッシュ値h1,h2,h5,h4である。装置20は、ハッシュ値h1,h2,h5,h4のうち、受信したハッシュ値h1,h2,h3,h4とは異なるハッシュ値h5に対応するブロックB31を、データ収集装置10に送信する。このとき、例えば、装置20は、第3のデータD3におけるブロックB31のブロック位置の識別情報を、データ収集装置10に送信する。
【0024】
すなわち、処理部12は、ブロックB11,B12,B31,B23のうち、装置20に送信したハッシュ値h1,h2,h3,h4とは異なるハッシュ値h5に対応するブロックB31のみを、装置20から受信する。例えば、処理部12は、ブロックB31とともに、第3のデータD3のブロック位置の識別情報を装置20から受信し、当該識別情報により、ブロックB11,B12,B22,B23のうち、ブロックB22をブロックB31に変更することで、第3のデータD3を得る。
【0025】
こうして、データの区切り位置を変更することにより、データ収集装置10は、データの転送量を減らすことができる。
例えば、当初の送信対象のデータの区切り位置a1,a2,a3を変更しないことも考えられる。しかし、
図1の例の場合、第2のデータD2に対する第3のデータD3の差分が、区切り位置a2~a4の部分であるにも関わらず、第3のデータD3の区切り位置a2~a3のデータを装置20に送信させると、アドレスa4~区切り位置a3の部分について重複したデータ送信が行われる。
【0026】
一方、データ収集装置10は、第1のデータD1と第2のデータD2との比較に応じて、例えば、区切り位置a1,a2,a3を区切り位置a1,a2,a4に更新する。このため、
図1の例では、第3のデータD3のうち、区切り位置a4~a3の部分を装置20に送信させずに済む。データ収集装置10によるデータ収集方法は、装置20において、ある期間におけるデータ内の更新位置の変化が比較的小さい場合や、ある期間におけるデータ内の更新位置に変化がない場合に、転送量の低減の効果が高まる。
【0027】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態のデータ収集システムの例を示す図である。
【0028】
第2の実施の形態のデータ収集システムは、サーバ100およびエッジ200,300,400,…を有する。サーバ100は、ネットワーク50に接続されている。ネットワーク50は、例えば、WAN(Wide Area Network)である。ネットワーク50には、基地局51,52,…が接続されている。基地局51,52,…は、各基地局が属するエリアに存在するエッジと無線通信する。サーバ100と各エッジとは、ネットワーク50および何れかのエリアにおける基地局を介して通信可能である。
【0029】
サーバ100は、エッジ200,300,400,…により取得されたデータを、エッジ200,300,400,…から収集し、分析するサーバコンピュータである。サーバ100は、ユーザの分析要求に応じて、データ収集の対象とする期間およびエリアを特定し、特定した期間およびエリアに関するデータを、エッジ200,300,400,…から収集する。第2の実施の形態では、エッジ200,300,400,…により取得されるデータとして、降雨量のデータを例示する。サーバ100は、エッジ200,300,400,…から収集した降雨量のデータに基づいて、エッジ200,300,400,…が存在するエリアの降雨量を分析する。
【0030】
ただし、収集対象のデータの種類は降雨量以外でもよく、例えば、温度、湿度、風量、震動量、大気物質濃度、放射線量、電磁波(例えば、映像などに変換された情報)または音など、種々のものが考えられる。サーバ100は、第1の実施の形態のデータ収集装置10の一例である。
【0031】
エッジ200,300,400,…は、移動体、または、移動体に搭載された装置である。移動体は、車両、動物、船舶、飛行体およびロボットなどである。エッジ200,300,400,…それぞれは、雨滴センサを備え、雨滴センサを用いて降雨量のデータを取得する。エッジ200,300,400,…は、無線通信機能を備え、自身が存在するエリアの基地局と無線で通信する。エッジ200,300,400,…は、サーバ100からの要求に応じて、取得した降雨量のデータをサーバ100に送信する。
【0032】
エッジ200,300,400,…それぞれは、第1の実施の形態の装置20の一例である。
図3は、サーバのハードウェア例を示す図である。
【0033】
サーバ100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106およびNIC(Network Interface Card)107を有する。なお、CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
【0034】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、サーバ100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0035】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、サーバ100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0036】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0037】
画像信号処理部104は、CPU101からの命令に従って、サーバ100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0038】
入力信号処理部105は、サーバ100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、サーバ100に、複数の種類の入力デバイスが接続されていてもよい。
【0039】
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0040】
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0041】
NIC107は、ネットワーク50に接続され、ネットワーク50を介して他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、ネットワーク50に属するスイッチやルータなどの通信装置とケーブルで接続される。
【0042】
図4は、エッジのハードウェア例を示す図である。
エッジ200は、CPU201、RAM202、フラッシュメモリ203、雨滴センサ204および無線部205を有する。
【0043】
CPU201は、プログラムの命令を実行するプロセッサである。CPU201は、フラッシュメモリ203に記憶されたプログラムやデータの少なくとも一部をRAM202にロードし、プログラムを実行する。なお、CPU201は複数のプロセッサコアを含んでもよい。また、エッジ200は複数のプロセッサを有してもよい。
【0044】
RAM202は、CPU201が実行するプログラムやCPU201が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。
フラッシュメモリ203は、ファームウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。
【0045】
雨滴センサ204は、エッジ200の周囲における降雨量を検出するセンサである。雨滴センサ204は、検出した降雨量のデータをRAM202またはフラッシュメモリ203に格納する。
【0046】
無線部205は、基地局51,52,…と無線で接続可能な無線通信インタフェースである。無線部205は、エッジ200が存在するエリアをカバーする基地局を介して、サーバ100と通信する。
【0047】
なお、エッジ200自身が移動する場合、エッジ200はモータやエンジンなどの移動用の機構を有するが、
図4では図示を省略している。
エッジ300,400,…もエッジ200と同様のハードウェアにより実現される。
【0048】
図5は、サーバの機能例を示す図である。
サーバ100は、記憶部120、ブロック分割部130、ブロック更新部140、論物変換部150、ハッシュ値生成部160およびデータ受信部170を有する。記憶部120は、RAM102またはHDD103の記憶領域を用いて実現される。ブロック分割部130、ブロック更新部140、論物変換部150、ハッシュ値生成部160およびデータ受信部170は、RAM102に記憶されたプログラムがCPU101により実行されることで実現される。
【0049】
なお、サーバ100のこれらの各機能による処理はエッジ毎に実行される。以下では、エッジ200に対する処理を例示するが、エッジ300,400,…に対しても同様の処理となる。
【0050】
記憶部120は、エッジ200,300,400,…から収集したデータを記憶する。
ブロック分割部130は、記憶部120に格納されたデータを複数の部分に分割する。1つの部分をブロックと称する。ブロック分割部130は、記憶部120に記憶された、データの区切り位置の情報に基づいて、データのブロックへの分割を行う。
【0051】
ブロック更新部140は、記憶部120に記憶された区切り位置の情報を更新する。ブロックのサイズは、ブロック毎に異なることがある。
論物変換部150は、論理ブロック群から物理ブロック群への変換を行う。論理ブロック群は、データを区切り位置の情報に基づいて分割した直後(ブロック分割部130により分割された結果)のブロック群である。物理ブロック群は、区切り位置の情報に基づいて分割した直後のブロック群のうち、前回データと差分のあるブロック群を先頭に配置したブロック群である。論物変換部150は、論物変換の結果に応じて、論物変換方法を示す論物変換テーブルを生成し、エッジ200に送信する。論物変換テーブルは、区切り位置の情報を含む。
【0052】
ハッシュ値生成部160は、ブロック毎のハッシュ値を生成する。ハッシュ値生成部160は、生成したハッシュ値を該当のエッジ200に送信する。エッジ200は、送信対象とする新データのうち、サーバ100から受信したハッシュ値とは異なるハッシュ値に対応するブロックをサーバ100に送信し、新データのそれ以外のブロックを送信しない。また、エッジ200は、送信するブロックとともに、当該ブロックの新データにおけるブロック位置の識別情報を、サーバ100に送信する。
【0053】
データ受信部170は、エッジ200により送信されたブロックを受信する。データ受信部170は、受信済みの前回のデータに対して、エッジ200から今回受信したブロックを適用することで、エッジ200の新データを得る。適用とは、今回受信したブロックのブロック位置に関して、前回のデータの当該ブロック位置のブロックを、今回受信したブロックに置換することを示す。
【0054】
サーバ100は、こうした処理をエッジ毎に実行し、エッジ200,300,400,…からのデータ収集を行う。
図6は、エッジの機能例を示す図である。
【0055】
エッジ200は、記憶部220、前処理部230、ブロック分割部240、論物変換部250、ハッシュ値生成部260および送信処理部270を有する。記憶部220は、RAM202またはフラッシュメモリ203の記憶領域を用いて実現される。前処理部230、ブロック分割部240、論物変換部250、ハッシュ値生成部260および送信処理部270は、RAM202に記憶されたプログラムが、CPU201により実行されることで実現される。
【0056】
記憶部220は、元データ、前処理後データおよび、サーバ100から受信した区切り位置の情報を含む論物変換テーブルなどを記憶する。元データとは、エッジ200における所定の前処理の対象となるデータであり、例えば、1秒間隔で取得された降雨量のデータである。前処理とは、サーバ100にデータ送信する前に元データに施す処理であり、例えば、1秒間隔で取得された降雨量のデータから1分間隔での平均の降雨量を求める処理などである。前処理後データは、当該前処理により生成されるデータである。
【0057】
前処理部230は、記憶部220に記憶された元データに対して前処理を実行する。前処理部230は、記憶部220またはRAM202の所定の領域に前処理後データを格納する。
【0058】
ブロック分割部240は、区切り位置の情報に基づいて、前処理後データを複数のブロックに分割する。ブロック分割部240により分割された結果が論理ブロック群である。
論物変換部250は、論物変換テーブルに基づいて、論理ブロック群から物理ブロック群への変換を行う。
【0059】
ハッシュ値生成部260は、物理ブロック群に含まれる各物理ブロックのハッシュ値を生成する。
送信処理部270は、ハッシュ値生成部260により生成されたハッシュ値と、サーバ100から受信したハッシュ値とを照合し、ハッシュ値が異なる物理ブロックをサーバ100に送信する。
【0060】
エッジ300,400,…もエッジ200と同様の機能を有する。
図7は、差分部分の例を示す図である。
図7(A)は、エッジ200により送信された前回のデータと今回のデータとの間で、ブロックを区切る区切り位置の境界に差分部分が存在する例を示す。
図7(A)の例では、4つのブロック501,502,503,504のうち、ブロック502,503の境界に差分部分が存在している。
【0061】
ブロックのサイズを変更しない場合、
図7(A)の例では、ブロック502,503の全部をエッジ200からサーバ100に送信することになる。しかし、ブロック502,503は、差分部分以外の、サーバ100が取得済みの部分を含む。サーバ100が取得済みの部分の送信は、重複したデータ送信となる。
【0062】
図7(B)は、エッジ200により送信された前回のデータと今回のデータとの間で、単一ブロックの内部の一部分に差分部分が存在する例を示す。
図7(B)の例では、3つのブロック511,512,513のうち、ブロック512の内部の一部分に差分部分が存在している。
【0063】
ブロックのサイズを変更しない場合、
図7(B)の例では、ブロック512をエッジ200からサーバ100に送信することになる。しかし、ブロック512は、差分部分以外の、サーバ100が取得済みの部分を含む。サーバ100が取得済みの部分の送信は、重複したデータ送信となる。
【0064】
そこで、サーバ100は、データの区切り位置を変更する。
図8は、区切り位置更新の例を示す図である。
図8(A)は、単一ブロックの内部の一部分に差分部分が存在する場合の区切り位置更新の例を示す。
図8(A)の例では、データの区切り位置b1,b2,b3に対するブロック521,522,523,524のうち、ブロック523の内部の一部分に差分部分が存在する。この場合、ブロック更新部140は、当該データの区切り位置を区切り位置b1,b4,b5に更新する。当該データは、区切り位置b1,b4,b5によりブロック531,532,533,534に分割される。このうち、区切り位置b4~b5のブロック533は、ブロック523の内部の差分部分に相当するブロックである。
【0065】
図8(B)は、2つのブロックの境界に差分部分が存在する場合の区切り位置更新の例を示す。
図8(B)の例では、データの区切り位置b6,b7,b8に対するブロック541,542,543,544のうち、ブロック542,543の境界部分に差分部分が存在する。この場合、ブロック更新部140は、当該データの区切り位置を、例えば、区切り位置b9,b10に更新する。当該データは、区切り位置b9,b10によりブロック551,552,553に分割される。このうち、区切り位置b9~b10のブロック552は、ブロック542,543の境界の差分部分に相当するブロックである。
【0066】
送信対象の1つのデータに、比較的小さなサイズの差分部分が複数存在することがある。この場合、小さい複数の差分部分をそれぞれブロック化すると、エッジ側でのブロック毎のハッシュ値の照合回数が増えたり、送信対象ブロックの送信回数が行われ易くなったりし、サーバ100によるデータ収集が遅延する。そこで、サーバ100は、比較的小さなサイズの差分部分を1つにまとめる論物変換処理を実行する。
【0067】
図9は、論物変換の例を示す図である。
サーバ100は、エッジ200から論理ブロック群601に相当するデータを受信する。論理ブロック群601は、区切り位置変更前の論理ブロック群である。
図9では、論理ブロック群601および物理ブロック群602に対して、アドレスp1~p13が示されている。このうち、アドレスp4,p7,p10の3つの区切り位置によって、当該データは、4つの論理ブロックに分割される。論理ブロック群601は、この4つの論理ブロックを有する。
【0068】
アドレスp2~p3の部分は、エッジ200から前回取得したデータに対する、今回取得したデータの第1の差分部分である。アドレスp5~p6の部分は、エッジ200から前回取得したデータに対する、今回取得したデータの第2の差分部分である。アドレスp8~p9の部分は、エッジ200から前回取得したデータに対する、今回取得したデータの第3の差分部分である。アドレスp11~p12の部分は、エッジ200から前回取得したデータに対する、今回取得したデータの第4の差分部分である。
【0069】
物理ブロック群602は、区切り位置変更前の物理ブロック群であり、論理ブロック群601と同じブロック群である。
サーバ100は、上記の4つの差分部分が1つの論理ブロックとなるように、区切り位置を変更することで、論理ブロック群601を論理ブロック群603に変更する。ここで、論理ブロックID(IDentifier)「x」の論理ブロックを「論理ブロックx」のように表記する。論理ブロックxと内容が同じ物理ブロックについても「物理ブロックx」と表記することがある。
【0070】
論理ブロック群603は、アドレス順に、論理ブロックa,b,c,d,e,f,g,h,iの9個の論理ブロックを有する。論理ブロックaは、アドレスp1~p2の部分に相当する。論理ブロックbは、アドレスp2~p3の差分部分に相当する。論理ブロックcは、アドレスp3~p5の部分に相当する。論理ブロックdは、アドレスp5~p6の差分部分に相当する。論理ブロックeは、アドレスp6~p8の部分に相当する。論理ブロックfは、アドレスp8~p9の差分部分に相当する。論理ブロックgは、アドレスp9~p11の部分に相当する。論理ブロックhは、アドレスp11~p12の差分部分に相当する。
【0071】
例えば、論理ブロックb,d,f,hそれぞれのサイズは、所定の閾値よりも小さいとする。この場合、サーバ100は、論理ブロックb,d,f,hを、データの先頭に集約して1つのブロックとした物理ブロック群604を生成するように、論物変換テーブルT1を生成する。物理ブロック群604は、論理ブロックb,d,f,hを1つに集約した先頭の物理ブロックと、それ以降の物理ブロックa,c,e,g,iの合計6個の物理ブロックを有する。サーバ100は、論理ブロック群603から物理ブロック群604への変換方法を規定した論物変換テーブルT1を生成する。
【0072】
更に、サーバ100は、物理ブロック群604に含まれる各物理ブロックを所定のハッシュ関数に入力し、ハッシュ値群605を求める。ハッシュ値群605は、ハッシュ値hs,ha,hc,he,hg,hiを有する。
【0073】
ハッシュ値hsは、論理ブロックb,d,f,hを1つに集約した物理ブロックのハッシュ値である。ハッシュ値haは、物理ブロックaのハッシュ値である。ハッシュ値hcは、物理ブロックcのハッシュ値である。ハッシュ値heは、物理ブロックeのハッシュ値である。ハッシュ値hgは、物理ブロックgのハッシュ値である。ハッシュ値hiは、物理ブロックiのハッシュ値である。
【0074】
サーバ100は、ハッシュ値群605および論物変換テーブルT1をエッジ200に送信する。エッジ200は、ハッシュ値群605および論物変換テーブルT1を受信する。
エッジ200は、前処理後データ701を保持している。エッジ200は、論物変換テーブルT1に基づいて、前処理後データ701を論理ブロック群に分割する。当該論理ブロック群は、アドレス順に、論理ブロックa,b,c,j,e,k,g,h,iを有する。ここで、論理ブロックjは、論理ブロックdのブロック位置に対応する論理ブロックである。論理ブロックkは、論理ブロックfのブロック位置に対応する論理ブロックである。
【0075】
エッジ200は、論物変換テーブルT1に基づいて、論理ブロックa,b,c,j,e,k,g,h,iに対する論物変換を行い、物理ブロック群702を生成する。物理ブロック群702は、論理ブロックb,j,k,hを1つに集約した先頭の物理ブロック、および、それ以降の物理ブロックa,c,e,g,iの合計6個の物理ブロックを有する。
【0076】
エッジ200は、物理ブロック群702に含まれる各物理ブロックをサーバ100が有するハッシュ関数と同じハッシュ関数に入力し、ハッシュ値群703を求める。ハッシュ値群703は、ハッシュ値ht,ha,hc,he,hg,hiを有する。ハッシュ値htは、論理ブロックb,j,k,hを1つに集約した物理ブロックのハッシュ値である。
【0077】
エッジ200は、ハッシュ値群703のハッシュ値を、ハッシュ値群605のハッシュ値と比較する。ハッシュ値ha,hc,he,hg,hiは、ハッシュ値群605,703の両方に含まれる。ハッシュ値htは、ハッシュ値群605には含まれない。したがって、エッジ200は、論理ブロックb,j,k,hを1つに集約した物理ブロック(物理ブロック702a)を、サーバ100に送信し、物理ブロックa,c,e,g,iをサーバ100に送信しない。
【0078】
このように、サーバ100は、比較的小さなサイズの差分部分を1つにまとめる論物変換処理を実行することで、ハッシュ値の比較回数やデータの送信回数を低減させることができ、サーバ100によるデータ収集の遅延の抑え、データ収集を効率化できる。
【0079】
図10は、論物変換テーブルの例を示す図である。
論物変換テーブルT1は、論物変換部150により生成され、記憶部120に格納される。論物変換テーブルT1の複製は、サーバ100からエッジ200に提供され、記憶部220に格納される。論物変換テーブルT1は、物理ブロックID、論理ブロックID、論理アドレス、物理アドレスおよびサイズの項目を含む。
【0080】
物理ブロックIDの項目には、物理ブロックのIDが登録される。論理ブロックIDの項目には、論理ブロックのIDが登録される。論理アドレスの項目には、データ(論理ブロック群)における該当の論理ブロックの先頭位置を示す論理アドレスが登録される。物理アドレスの項目には、論物変換後のデータ(物理ブロック群)における該当の物理ブロックの先頭位置を示す物理アドレスが登録される。サイズの項目には、該当の論理ブロックのサイズが登録される。サイズの単位は、例えば、バイト(Bytes)である。
【0081】
例えば、論物変換テーブルT1には、物理ブロックIDが「0」、論理ブロックIDが「b」、論理アドレスが「0xaaaabbbb」、物理アドレスが「0x00000000」、サイズが「16」というレコードが登録されている。このレコードは、物理ブロックID「0」の物理ブロックに、論理ブロックID「b」の論理ブロック(論理ブロックb)が属し、論理ブロックbの論理アドレスが「0xaaaabbbb」であり、論物変換後の物理アドレスが「0x00000000」であり、サイズが16バイトであることを示す。
【0082】
論物変換テーブルT1には、他のブロックに関しても、論理ブロックと物理ブロックとの対応関係を示すレコードが登録されている。論物変換テーブルT1の例によれば、論理ブロックb,j,k,hは、物理ブロックID「0」の物理ブロックに属する。論理ブロックaは、物理ブロックID「1」の物理ブロックに属する。論理ブロックcは、物理ブロックID「2」の物理ブロックに属する。
【0083】
なお、サーバ100がエッジ200からデータの収集を開始する直前では、物理ブロックIDや物理アドレスの項目の設定値は、論理ブロックID、論理アドレスの項目の設定値(初期値)と同じでよい。論理ブロックIDおよび論理アドレスの項目は、ブロック(論理ブロック)の区切り位置の情報に相当する。
【0084】
次に、第2の実施の形態のサーバ100およびエッジ200の処理手順を説明する。エッジ300,400,…もエッジ200と同様の手順を実行する。サーバ100は、エッジ300,400,…に対しても、エッジ200に対する処理と同様の手順を実行する。
【0085】
図11は、エッジ側データ送信処理の例(その1)を示すフローチャートである。
エッジ200は、当初のブロックの区切り位置の情報を記憶部220に保持しているものとする。サーバ100は、エッジ200から最初のデータを受信した際、前回のデータがないので、当初のブロックの区切り位置の情報を基に当該最初のデータを論理ブロックに区切り、当該論理ブロック毎のハッシュ値を計算して、エッジ200に送信する。
図11の手順は、サーバ100がエッジ200から最初のデータを受信した後、エッジ200がサーバ100から最初のデータにおける論理ブロック毎のハッシュ値を受信した際に実行開始される。
【0086】
(S10)前処理部230は、記憶部220に記憶された、今回の前処理対象の元データに対して前処理を実行し、前処理後データを生成する。
(S11)ブロック分割部240は、記憶部220に記憶された論物変換テーブルのブロックの区切り位置の情報に基づいて、前処理後データに対する区切り位置を特定する。
【0087】
(S12)ブロック分割部240は、特定した区切り位置で、前処理後データをブロック単位に区切る。なお、当初、論物変換テーブルには、物理ブロックIDや物理アドレスとして論理ブロックIDや論理アドレスと同じ設定値が設定される。このため、論物変換部250は、論物変換を行わなくてよい。ただし、論物変換部250は、論物変換を行ってもよい。論物変換を行っても、論理ブロック群および論物変換後の物理ブロック群は同じになる。
【0088】
(S13)ハッシュ値生成部260は、ステップS12で区切ったブロック単位でハッシュ値を計算し、サーバ100から受信したハッシュ値と比較する。
(S14)送信処理部270は、ハッシュ値が異なっているブロック(
図11の例では論理ブロック=物理ブロック)をサーバ100へ送信する。このとき、送信処理部270は、該当の論理ブロックの論理ブロックID(
図11の例では論理ブロックID=物理ブロックID)もサーバ100へ送信する。そして、エッジ200は、上記のデータ送信処理を終了する。
【0089】
図12は、サーバ側データ要求送信処理の例を示すフローチャートである。
サーバ100は、エッジ200からブロックを受信すると下記の手順を開始する。
(S20)ブロック更新部140は、エッジ200から取得した前回のデータと今回のデータとに基づいて、ブロック単位更新処理を実行する。ブロック単位更新処理の詳細は後述される。
【0090】
なお、ブロック更新部140は、論物変換テーブルとエッジ200から受信した物理ブロックIDとに基づいて、前回のデータに対する差分部分のブロック位置を特定する。ブロック更新部140は、当該ブロック位置を今回取得したブロック(エッジ200から今回取得したブロック)で置換することで、エッジ200に関する今回のデータを得る。
【0091】
(S21)論物変換部150は、論物変換処理を実行する。論物変換部150は、論物変換処理により論物変換テーブルT1を生成する。論物変換処理の詳細は後述される。
(S22)ハッシュ値生成部160は、物理ブロック毎のハッシュ値および論物変換テーブルT1をエッジ200に送信する。そして、ハッシュ値生成部160は、データ要求送信処理を終了する。
【0092】
ステップS20で例示したように、サーバ100は、ブロックの受信の際に、エッジ200が保持する今回のデータにおける当該ブロックの位置を示す識別情報(例えば、物理ブロックIDまたは論理ブロックID)をエッジ200から受信する。サーバ100は、当該識別情報に基づいて、前回のデータの一部のブロックを今回受信したブロックに置換することで、今回のデータを取得する。
【0093】
図13は、ブロック単位更新処理の例を示すフローチャートである。
ブロック単位更新処理は、ステップS21に相当する。
(S30)ブロック更新部140は、エッジ200から取得された前回のデータと今回のデータとを比較して差分部分(論理アドレス範囲)を取得する。
【0094】
(S31)ブロック更新部140は、各差分部分についてステップS32、ステップS32~S34、または、ステップS32,S33,S35を繰り返し実行する。
(S32)ブロック更新部140は、差分部分が、論物変換テーブルにおける現在のブロック単位と一致するか否かを判定する。一致する場合、ステップS36に処理が進む。一致しない場合、ステップS33に処理が進む。ここで、現在のブロック単位は、現在の論物変換テーブルに設定された論理アドレスとサイズとで示される論理アドレス範囲により表される。
【0095】
(S33)ブロック更新部140は、差分部分が論理ブロック内の一部であるか否かを判定する。差分部分が論理ブロック内の一部である場合、ステップS34に処理が進む。差分部分が論理ブロック内の一部でない場合、ステップS35に処理が進む。ステップS33 Noの場合は、差分部分が2つの論理ブロックを跨ぐ場合に相当する。
【0096】
(S34)ブロック更新部140は、ブロック単位を差分部分に対応する範囲に縮小し、両隣のブロック長を拡大する。具体的には、
図8(A)で例示した通りである。そして、ステップS36に処理が進む。
【0097】
(S35)ブロック更新部140は、差分部分を新たなブロック単位とする。この場合、例えば、隣接の(該当のブロックのうち、差分部分と異なる部分が隣接する方の)ブロック長が拡大される。具体的には、
図8(B)で例示した通りである。そして、ステップS36に処理が進む。
【0098】
(S36)ブロック更新部140は、ステップS30で取得した全ての差分部分に対する処理が終わると、繰り返しを完了する。そして、ブロック更新部140は、ブロック単位更新処理を終了する。
【0099】
図14は、論物変換処理の例を示すフローチャートである。
(S40)論物変換部150は、各差分部分の論理ブロックについてステップS41またはステップS41,S42を繰り返し実行する。
【0100】
(S41)論物変換部150は、該当の論理ブロックのブロックサイズが閾値以下であるか否かを判定する。当該ブロックサイズが閾値以下の場合、ステップS42に処理が進む。当該ブロックサイズが閾値よりも大きい場合、ステップS43に処理が進む。ブロックサイズの閾値は、記憶部120などに予め設定される。ブロックサイズの閾値は、例えば、エッジ200による送信対象のデータのサイズのうちの5~10%程度のサイズである。ただし、ブロックサイズの閾値としては、任意のサイズを設定可能である。
【0101】
(S42)論物変換部150は、収集対象として該当の論理ブロックをマークする。例えば、論物変換部150は、収集対象の論理ブロックとして、当該論理ブロックの論理ブロックIDを記憶部120の論物変換テーブル以外の領域に記録する。または、論物変換部150は、論物変換テーブルにフラグの設定項目を設け、フラグの「True」(収集対象)および「false」(収集非対象)によりマークしてもよい。そして、ステップS43に処理が進む。
【0102】
(S43)論物変換部150は、差分部分の全ての論理ブロックに対する処理が終わると、繰り返しを完了し、ステップS44に処理が進む。
(S44)論物変換部150は、ステップS42によりマークされた論理ブロックを物理アドレスの先頭に移動する。
【0103】
(S45)論物変換部150は、移動した論理ブロック群を1つの新たな物理ブロックとする。
(S46)論物変換部150は、マークされなかった論理ブロックが論理アドレスの順に、ステップS45で作成した物理ブロックに後続するように物理ブロックIDおよび物理ブロックアドレスを設定した論物変換テーブルT1を生成する。論物変換部150は、生成した論物変換テーブルT1を記憶部120に出力する。そして、論物変換部150は、論物変換処理を終了する。
【0104】
このように、サーバ100は、閾値よりも小さいサイズの差分部分がある場合、取得したデータを複数の論理ブロックに区切った後、複数の論理ブロックから、閾値よりも小さいサイズの差分部分(論理ブロック)を先頭に集約した1つのブロックを含む複数の物理ブロック(複数の他のブロック)を生成する。サーバ100は、複数の物理ブロックに含まれるブロック毎のハッシュ値と、区切り位置の情報と、複数の論理ブロックから複数の物理ブロックへの変換に用いられる変換情報(論理アドレスと物理アドレスとの対応関係の情報)とをエッジ200に送信する。
【0105】
図15は、エッジ側データ送信処理の例(その2)を示すフローチャートである。
図15の手順は、エッジ200がサーバ100から、ハッシュ値とともに今回受信した論物変換テーブルT1において、論理ブロックIDと物理ブロックIDとが異なる場合に実行される。
【0106】
(S50)前処理部230は、記憶部220に記憶された、今回の前処理対象の元データに対して前処理を実行し、前処理後データを生成する。
(S51)ブロック分割部240は、記憶部220に記憶された論物変換テーブルT1に基づいて、前処理後データに対する区切り位置を特定する。
【0107】
(S52)ブロック分割部240は、特定した区切り位置で、前処理後データをブロック単位に区切る。これにより、前処理後データに対応する論理ブロック群が生成される。
(S53)論物変換部250は、論物変換テーブルT1を用いて、ステップS52で生成された論理ブロック群における各論理ブロックの論理アドレスを物理アドレスに変換する。
【0108】
(S54)ハッシュ値生成部260は、論物変換テーブルT1で示される物理ブロック単位でハッシュ値を計算し、サーバ100から受信したハッシュ値と比較する。
(S55)送信処理部270は、ハッシュ値が異なっている物理ブロックをサーバ100へ送信する。このとき、送信処理部270は、該当の物理ブロックの物理ブロックIDもサーバ100へ送信する。そして、エッジ200は、上記のデータ送信処理を終了する。
【0109】
サーバ100は、論物変換テーブルT1を参照して、受信した物理ブロックの物理ブロックIDを1以上の論理ブロックIDに変換する。サーバ100は、エッジ200から前回取得した論理ブロック群の該当の論理ブロックIDの論理ブロックをエッジ200から今回取得した(物理ブロックから変換された)論理ブロックに置換することで、エッジ200に関する今回のデータを取得する。
【0110】
こうして、データの区切り位置を変更することにより、サーバ100は、データの転送量を減らすことができる。
例えば、当初定められたブロックの区切り位置を変更しないことも考えられる。しかし、この場合、エッジは、ブロックの一部に差分がある場合でも当該ブロックの全体を送信することになり、データの転送量を十分に減らすことができない。
【0111】
そこで、サーバ100は、エッジ200から前回取得したデータと今回取得したデータとの比較に応じて、ブロックの区切り位置を動的に更新する。このため、ブロック内の一部に更新がある可能性が比較的高い場合に、当該更新された部分以外の重複したデータ転送を抑えられる。特に、更新がある可能性の高い比較的小さなブロックを物理的に集約してハッシュ値を求めることで、差分検出の効率を向上させることができる。サーバ100によるデータ収集方法は、エッジにおいて、ある期間におけるデータ内の更新位置の変化が比較的小さい場合や、ある期間におけるデータ内の更新位置に変化がない場合に、転送量の低減の効果が高まる。
【0112】
また、各エッジが比較的低スペックである場合(例えば、エッジ側のメモリ容量が小さく、次回送信用のデータしか保持できないなど)や、基地局51,52と各エッジとの通信帯域が狭い場合でも、エッジからのデータ転送量を抑え、効率的にデータ収集を行える。
【0113】
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体113に記録できる。
【0114】
例えば、プログラムを記録した記録媒体113を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体113に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0115】
10 データ収集装置
11 記憶部
12 処理部
20 装置
D1,D2,D3 データ
G1,G2 ハッシュ値群