JP5149063B2 - データ比較装置およびプログラム - Google Patents
データ比較装置およびプログラム Download PDFInfo
- Publication number
- JP5149063B2 JP5149063B2 JP2008117808A JP2008117808A JP5149063B2 JP 5149063 B2 JP5149063 B2 JP 5149063B2 JP 2008117808 A JP2008117808 A JP 2008117808A JP 2008117808 A JP2008117808 A JP 2008117808A JP 5149063 B2 JP5149063 B2 JP 5149063B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- data string
- word
- matching
- comparison
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
EUGENE W. MYERS,"An O(ND) difference algorithm and its variations",Algorithmica,1986年,Vol.1,No.2,pp.251-266. Walter F. Tichy,"The string-to-string correction problem with block moves",ACM Transactions on Computer Systems,1984年,volume 2,issue4,pp.309-321. Andrew Tridgell,Paul Mackerras,"The rsync algorithm",[平成20年4月5日検索],インターネット<URL: http://rsync.samba.org/tech_report/>
また、この構成によれば、第1選択間隔と第2選択間隔を、適宜設定することが出来る。一致箇所検索対象ワードの数は、各々のデータ列の長さ(ワード数)をこの選択間隔で除した数にほぼ等しいため、第1選択間隔と第2選択間隔の設定により、ワードの値の比較回数を変化させることができる。つまり、たとえ第1データ列や第2データ列のサイズが膨大なものであっても、所望の比較回数(ひいては、所望の処理時間)となるように、第1選択間隔と第2選択間隔を設定でき、その代償は、一致箇所の検出機会の部分的損失に過ぎない。
なお、第1選択間隔および第2選択間隔は1以上の任意の整数として良いが、これらの数値を比較的大きくするほうが、処理時間を短くするという本発明の効果がより大きい。例えば、第1選択間隔および第2選択間隔の少なくともいずれか一方を2以上とすると処理時間の短縮が図れる。第1選択間隔および第2選択間隔をそれぞれ10以上とするとさらに処理時間の短縮が図れる。第1選択間隔および第2選択間隔をそれぞれ100以上とするとより一層処理時間の短縮が図れる。これらの値が大きな値であればあるほど処理時間の短縮が図れるが、検出が保証される共通部分の長さが長くなる。(それより短い共通部分は検出できなくなる可能性がある)。これらの間隔の設定の仕方については、後で述べる。
また、原理的に、第1一致箇所検索対象ワードの数について対数オーダーの比較回数で済む。つまり、第1一致箇所検索対象ワードの数が多いほど(第1データ列のワード数が多いほど)、この構成による時間短縮の効果が大きく得られる。
差分データを得るための処理としては、背景技術で述べた手法と同様に、データ比較装置が、与えられた2つのデータ列の間の共通部分(共通部分が複数箇所ある場合は、複数箇所の共通部分)を見つけ、共通部分を除外した部分を差分データとする。したがって、以下で説明する実施形態では、2つのデータ列の共通部分を探す処理を高速に行なえるようにする。
図1は、本発明の第1の実施形態によるデータ比較装置の機能構成を示すブロック図である。図示するように、データ比較装置1は、共通部分検索部3と、一致箇所検索部4と、差分情報出力部5と、制御部6と、データファイル10Aと10Bと20Aと20Bと、ハッシュデータ生成部15とを含んで構成される。
ハッシュデータ生成部15は、所定のハッシュ関数の計算を行なう機能を有しており、データファイル10Aを基にそのハッシュ関数を適用してデータファイル20Aを生成するとともに、データファイル10Bを基に同じハッシュ関数を適用してデータファイル20Bを生成する。使用するハッシュ関数は、適宜選択すれば良いが、例えば、MD5やSHAやHAVALやチェックサムやCRC(巡回冗長符号)などを用いることができる。
なお、データファイル10Aと10Bと20Aと20Bは、半導体メモリやハードディスク装置(HDD)などの記録媒体に格納されている。
なお、nAとnB個の少なくともいずれか一方を、2以上とすることにより、処理の高速化が図れる。
なお、nAとnBとの最大公約数が1になるように設定することは必須ではないが、そうしない場合には一致箇所を検出できなくなる可能性もある。例えば、最も簡単な例で、nA=nB=2とした場合、仮にデータ列Aの0ワード目から9ワード目までとデータ列Bの1ワード目から10ワード目までが共通部分であったとしても(つまり両者が1ワード分ずれている状態)、データ列Aもデータ列Bとも、一致箇所検索対象ワードは偶数ワード目(0ワード目、2ワード目、4ワード目、・・・)のみとなってしまい、この共通部分に含まれる一致箇所を検出できない。
データ列Bのポインタが末尾を指している場合とは、ステップS64での一致箇所検索処理において、ワードが一致する箇所が発見されなかった場合である。この場合(ステップS65:YES)には、ステップS62からS65までのループを抜け出して、ステップS66に進む。
一方で、データ列Bのポインタが末尾を指していない場合とは、ステップS64での一致箇所検索処理において、ワードが一致する箇所が発見された場合であり、この場合にはデータ列AおよびBそれぞれの比較用ポインタは、値の一致した一致箇所検索対象ワードをそれぞれ指している。この場合(ステップS65:NO)には、ステップS62の処理へ進む。
まずステップS61の初期化処理において、データ列AおよびBの比較用ポインタを、各々のデータ列の0ワード目に設定する。また、nA=2、nB=3と、パラメータを設定する。
次にステップS62の共通部分の範囲を検索する処理において、それぞれの比較用ポインタが指す一致箇所検索対象ワードの値同士を比較する。この場合、現在の比較用ポインタが指しているデータ列Aの0ワード目とデータ列Bの0ワード目の値は同一でないため、比較しても一致せず、このステップの処理はここで終了する。
そしてステップS63の判定において、比較用ポインタはデータ列AとBのいずれも、データ列の末尾にはないので(ステップS63:NO)、ステップS64に移る。
次のステップS63の判定では、この時点では、データ列Aの比較用ポインタは12ワード目の位置を指し、データ列Bの比較用ポインタは14ワード目の位置を指しているため、即ちデータ列Bの比較用ポインタはデータ列の末尾ではないため(ステップS63:NO)、次のステップS64に進む。
そして、ステップS66において、差分情報を出力し、このフローチャート全体の処理を終了する。
図6は、本発明の第2の実施形態によるデータ比較装置2の機能構成を示すブロック図である。図示するように、データ比較装置2は、共通部分検索部3と、一致箇所検索部24と、順序付処理部31と、順序情報記憶部32と、差分情報出力部5と、制御部6と、データファイル10Aと10Bと20Aと20Bと、ハッシュデータ生成部15とを含んで構成される。
この第2の実施形態は、より一層処理を高速化することを目的としている。以下では、第1の実施形態と同様の部分については説明を省略し、本実施形態特有の構成や処理手順等を中心に説明する。
具体的な一例として、nAは、2×(NA/nA)×log2(NA/nA)≦Cを満たす最小の正整数値とする。また、nBは、nAと互いに素であり、且つ、nB≧NB/NA×nAを満たす正整数とする。なお、このような条件を満たすnBのうち最小の整数数を選択することにより、所定の比較回数の制約の中で、共通部分を検出できる可能性を高めることができる。
ステップS83における判定処理は、第1の実施形態のステップS63の処理と同様である。
なお、このソート処理は、この部分で実行する代わりに、例えばステップS81の初期化処理で行なっておくようにしても良い。
いずれの部分でソート処理を行なうにしても、ステップS82からS87までのループ部分の処理を2回目以降には、再度ソート処理を行なう必要はなく、順序情報記憶部32から順序情報を読み出して利用すれば良い。
つまり、一致箇所検索部24は、その時点でのデータ列Bの比較用ポインタ以降のデータ列からnBワードごとに比較対象ワードを選択し、すべての比較対象ワードについて、ソートされたデータ列Aの比較対象ワードとの比較を行い、一致するワードがあるかどうかを判定する。
一致するワードが見つかるまで検索処理を行なう点などは、第1の実施形態のステップS64と同様である。
そして、ステップS88における差分情報の出力処理は、第1の実施形態のステップS66の処理と同様である。
図8は、本発明の第3の実施形態によるデータ比較装置1Aの機能構成を示すブロック図である。第1の実施形態では、データ比較装置1は、データファイル10Aおよび10Bと、ハッシュデータ生成部15を含んでいた。本実施形態によるデータ比較装置1Aはこれらを有さず、図8に示すように、共通部分検索部3と、一致箇所検索部4と、差分情報出力部5と、制御部6と、データファイル20Aと20Bとで構成される。データファイル20Aおよび20Bが所定の長さのワードからなるデータ列である点は第1の実施形態と同様である。データファイル20Aおよび20Bは、外部から与えられるデータ列を有するファイルである。共通部分検索部3と、一致箇所検索部4と、差分情報出力部5と、制御部6の動作等は、第1の実施形態と同様である。
図9は、本発明の第4の実施形態によるデータ比較装置2Aの機能構成を示すブロック図である。第2の実施形態では、データ比較装置2は、データファイル10Aおよび10Bと、ハッシュデータ生成部15を含んでいた。本実施形態によるデータ比較装置2Aはこれらを有さず、図9に示すように、共通部分検索部3と、一致箇所検索部24と、順序付処理部31と、順序情報記憶部32と、差分情報出力部5と、制御部6と、データファイル20Aと20Bとで構成される。データファイル20Aおよび20Bが所定の長さのワードからなるデータ列である点は第2の実施形態と同様である。データファイル20Aおよび20Bは、外部から与えられるデータ列を有するファイルである。共通部分検索部3と、一致箇所検索部24と、順序付処理部31と、順序情報記憶部32と、差分情報出力部5と、制御部6の動作等は、第2の実施形態と同様である。
ここでは、上記各実施形態の応用例について、代表として第1実施形態の構成を示す図1を参照しながら、説明する。
データファイル20Bと10Bの関係も、上述したデータファイル20Aと10Aの関係と同様である。
つまり、データファイル20Aおよび20Bのサイズは、これに限定されないが典型的には数百万ワードから数千万ワードである。つまり、1ワード=16バイトのとき、データファイル20Aおよび20Bのサイズは、それぞれ数十メガバイトから数百メガバイト程度である。このような大きなサイズのファイル同士を、従来の技術により比較して共通部分を見つけることは、非常に時間がかかり、効率が悪い。
なお、データファイル10Aおよび10Bを元に、データファイル20Aおよび20Bをそれぞれ生成する処理は、ファイル保存時に予め行なっておく。
3 共通部分検索部(共通部分検索過程)
4 一致箇所検索部(一致箇所検索過程)
5 差分情報出力部(差分情報出力過程)
6 制御部
10A,10B データファイル(比較対象データ)
15 ハッシュデータ生成部
20A,20B データファイル
24 一致箇所検索部
31 順序付処理部(順序付処理過程)
32 順序情報記憶部
Claims (5)
- それぞれ複数のワードからなる第1データ列および第2データ列を比較するデータ比較装置であって、
前記第1データ列に含まれる前記ワードを所定の第1選択間隔(第1選択間隔は1以上の整数)の分ずつ飛ばして得られる第1一致箇所検索対象ワードと、前記第2データ列に含まれる前記ワードを所定の第2選択間隔(第2選択間隔は1以上の整数)の分ずつ飛ばして得られる第2一致箇所検索対象ワードとを、順次比較して両者が一致する箇所を探す一致箇所検索部と、
前記一致箇所検索部が検出した一致箇所のワードを基に前記第1データ列および前記第2データ列のそれぞれ前および後に連なるワードについて、前記第1データ列と前記第2データ列との間で比較を行ない、両者が一致する範囲を共通部分の範囲として検出する共通部分検索部と、
前記共通部分検索部によって検出された共通部分の範囲の情報に基づき、前記第1データ列と前記第2データ列との間の差分情報を出力する差分情報出力部と、
を具備することを特徴とするデータ比較装置。 - 請求項1に記載のデータ比較装置において、
前記第1選択間隔と前記第2選択間隔との最大公約数は1である、
ことを特徴とするデータ比較装置。 - 請求項1または請求項2に記載のデータ比較装置において、
前記第1一致箇所検索対象ワードの値をソートし、その結果得られる順序情報を順序情報記憶部に書き込む順序付処理部をさらに具備し、
前記一致箇所検索部は、前記順序情報記憶部から前記順序情報を読み出すことにより、ある前記第2一致箇所検索対象ワードを、比較する必要のある前記第1一致箇所検索対象ワードのみと比較し、両者が一致する箇所を探す、
ことを特徴とするデータ比較装置。 - 請求項1から3までのいずれか一項に記載のデータ比較装置において、
前記第1データ列および前記第2データ列に含まれる前記ワードは、これら各データ列の元となる比較対象データを所定サイズに分割したブロックのデータにハッシュ関数を適用して得られたハッシュ値を有するものである、
ことを特徴とするデータ比較装置。 - それぞれ複数のワードからなる第1データ列および第2データ列を比較する処理をコンピュータに実行させるプログラムであって、
前記第1データ列に含まれる前記ワードを所定の第1選択間隔(第1選択間隔は1以上の整数)の分ずつ飛ばして得られる第1一致箇所検索対象ワードと、前記第2データ列に含まれる前記ワードを所定の第2選択間隔(第2選択間隔は1以上の整数)の分ずつ飛ばして得られる第2一致箇所検索対象ワードとを、順次比較して両者が一致する箇所を探す一致箇所検索過程と、
前記一致箇所検索過程で検出した一致箇所のワードを基に前記第1データ列および前記第2データ列のそれぞれ前および後に連なるワードについて、前記第1データ列と前記第2データ列との間で比較を行ない、両者が一致する範囲を共通部分の範囲として検出する共通部分検索過程と、
前記共通部分検索過程において検出された共通部分の範囲の情報に基づき、前記第1データ列と前記第2データ列との間の差分情報を出力する差分情報出力過程と、
の処理をコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008117808A JP5149063B2 (ja) | 2008-04-28 | 2008-04-28 | データ比較装置およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008117808A JP5149063B2 (ja) | 2008-04-28 | 2008-04-28 | データ比較装置およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009266128A JP2009266128A (ja) | 2009-11-12 |
JP5149063B2 true JP5149063B2 (ja) | 2013-02-20 |
Family
ID=41391856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008117808A Expired - Fee Related JP5149063B2 (ja) | 2008-04-28 | 2008-04-28 | データ比較装置およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5149063B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5340185B2 (ja) * | 2010-01-19 | 2013-11-13 | 日本放送協会 | ファイル処理装置及びプログラム |
JP2018018240A (ja) * | 2016-07-27 | 2018-02-01 | 富士ゼロックス株式会社 | データ処理装置およびプログラム |
-
2008
- 2008-04-28 JP JP2008117808A patent/JP5149063B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2009266128A (ja) | 2009-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8838551B2 (en) | Multi-level database compression | |
JP5372853B2 (ja) | デジタルシーケンス特徴量算出方法及びデジタルシーケンス特徴量算出装置 | |
US9798731B2 (en) | Delta compression of probabilistically clustered chunks of data | |
CN108089893B (zh) | 冗余资源的确定方法、装置、终端设备与存储介质 | |
KR100877063B1 (ko) | 데이터를 관리하는 장치 및 방법 | |
CN106547572B (zh) | 一种程序文件对比方法及装置 | |
JP5886447B2 (ja) | ロケーション非依存のファイル | |
WO2015139381A1 (zh) | 一种终端软件升级方法及装置 | |
EP3072076B1 (en) | A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure | |
CN111078672B (zh) | 数据库的数据对比方法及装置 | |
JP2009512099A (ja) | トライでの再始動可能なハッシュの方法及び装置 | |
US20150261447A1 (en) | Controlling segment size distribution in hash-based deduplication | |
CN111444192A (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
KR20140038441A (ko) | 압축 매치 열거 기법 | |
JP5149063B2 (ja) | データ比較装置およびプログラム | |
CN112346771B (zh) | 升级文件生成方法及装置 | |
CN116150093B (zh) | 一种对象存储列举对象的实现方法及电子设备 | |
CN109918346A (zh) | 一种文件的创建方法及装置 | |
US8423590B2 (en) | File generation for testing single-instance storage algorithm | |
CN110941730B (zh) | 基于人脸特征数据偏移的检索方法与装置 | |
JP4467965B2 (ja) | 差分ファイル作成プログラム及び方法 | |
JP4754007B2 (ja) | 情報処理装置、情報処理方法、プログラムおよび記録媒体 | |
US10037148B2 (en) | Facilitating reverse reading of sequentially stored, variable-length data | |
JP6273892B2 (ja) | データ検索装置、プログラム、及びデータ検索システム | |
CN112416431B (zh) | 一种基于编码序列表示的源代码片段成对比较方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101201 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121025 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121030 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121129 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151207 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |