WO2014089802A1 - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- WO2014089802A1 WO2014089802A1 PCT/CN2012/086538 CN2012086538W WO2014089802A1 WO 2014089802 A1 WO2014089802 A1 WO 2014089802A1 CN 2012086538 W CN2012086538 W CN 2012086538W WO 2014089802 A1 WO2014089802 A1 WO 2014089802A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- point
- hash value
- window
- intermediate point
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 101
- 238000000034 method Methods 0.000 title claims abstract description 35
- 239000012634 fragment Substances 0.000 claims abstract description 79
- 238000003672 processing method Methods 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000010276 construction Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 abstract description 8
- 238000012423 maintenance Methods 0.000 abstract description 7
- 238000013467 fragmentation Methods 0.000 description 17
- 238000006062 fragmentation reaction Methods 0.000 description 17
- 238000007726 management method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 5
- 239000000203 mixture Substances 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000013144 data compression Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005065 mining Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
Definitions
- the present invention relates to the field of computer technologies, and in particular, to a data processing method and apparatus. Background technique
- Data deduplication (Delta DD) compression technology can be used to compress data. Different from video, audio, image and other general data compression technologies, DD compression technology not only pays attention to the duplication of data inside data objects, but also the duplication of data between data objects.
- the processing flow is as follows: The data object is cut into pieces in advance, and the data fragment and its feature index library are established. When the same data fragment appears again, a shorter fragment index is used instead of the longer fragment data, thereby realizing storage or transmission data compression, thereby saving storage space or improving transmission bandwidth utilization.
- data fragmentation is the key link of DD compression process. The advantages and disadvantages of data fragmentation method will directly affect the effect and performance of DD compression technology.
- the method based on extremum fragmentation used in the prior art performs data processing.
- the method performs a hash calculation on the data in the data window by constructing a data window sliding along the data stream in a byte, extracts the extreme value in a specific range, and extracts the data combination between the adjacent extreme points.
- Into data segmentation First, since the method processes the data in units of bytes, when the two extreme points are close to 4, it is easy to generate shorter data fragments, and in extreme cases it is possible to obtain single-byte data fragments. . These shorter data fragments and fragment indexes are not much different in length, or even shorter, and it is difficult to achieve data compression, which makes the DD compression effect worse.
- Second, for shorter data fragmentation its management and maintenance costs. As with normal data sharding, the management and maintenance costs are invisibly increased. Finally, the method must traverse each byte in the data object, so the data processing performance is low. Summary of the invention
- the embodiment of the invention provides a data processing method and device, which can improve the effect of data deduplication. Improve the efficiency of data processing and reduce the management and maintenance costs of data segmentation.
- a first aspect of the embodiments of the present invention provides a data processing method, which may include:
- the length of the data window is a preset number of bytes; when the data window is sliding, determining whether the hash value of the data corresponding to the center position of the data window is an extreme value;
- the data window continues to slide to determine a subsequent intermediate extreme point; if not, the data window continues to slide to determine the first intermediate extreme point; Extracting data between adjacent intermediate extreme points is combined into valid data fragments, and data other than the intermediate extreme points is fragmented as invalid data.
- the extreme values include a maximum value and a minimum value.
- determining whether the hash value corresponding to the data center position data is an extreme value may include: determining The first starting point a, the first intermediate point b and the first cut-off point 2b-a of the data window sliding on the data stream;
- the data window is shifted right by the distance of yb, new data
- the window takes y+ab as a second starting point, the position point y is used as a second intermediate point, and y+ba is used as a second cut-off point; comparing the hash value of the data corresponding to the second intermediate point y with the first a hash value of data corresponding to each position point between the intermediate point y and the region of the second starting point y+ab;
- the data window is shifted right by b-a+1. Distance, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+1)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- determining whether the hash value corresponding to the data center position data is an extreme value may include: determining The first starting point a, the first intermediate point b and the first intercept of the data window sliding on the data stream Stop point 2b-a;
- the hash value of the data corresponding to the position point y is equal to the hash value of the data corresponding to the first intermediate point b, and the data window is shifted right by the distance of y-b+1
- the new data window takes (y+l)+ab as the second starting point, (y+1) as the second intermediate point, and (y+1)+ba as the second cutoff point; comparing the second intermediate point (y+1) the hash value of the corresponding data and the data corresponding to each position point between the second intermediate point (y+1) to the second starting point (y+1)+ab Greek value
- the data window is shifted to the right b
- the distance of -a+1, the new data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third cutoff point ;
- a, b, x, y are all natural numbers.
- determining whether the hash value corresponding to the data window center location data is an extreme value may include: determining The first starting point a, the first intermediate point b and the first cut-off point 2b-a of the data window sliding on the data stream;
- the data window is shifted right by the distance of yb, new data
- the window takes y+ab as a second starting point, the position point y is used as a second intermediate point, and y+ba is used as a second cut-off point; comparing the hash value of the data corresponding to the second intermediate point y with the first a hash value of data corresponding to each position point between the intermediate point y and the region of the second starting point y+ab;
- the data window is shifted right by b-a+1 Distance, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+1)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- determining whether the hash value corresponding to the data window center location data is an extreme value may include: determining The first starting point a, the first intermediate point b and the first cut-off point 2b-a of the data window sliding on the data stream;
- the hash value of the data corresponding to the position point y is equal to the hash value of the data corresponding to the first intermediate point b, and the data window is shifted right by the distance of y-b+1
- the new data window takes (y+l)+ab as the second starting point, (y+1) as the second intermediate point, and (y+1)+ba as the second cutoff point; comparing the second intermediate point (y+1) the hash value of the corresponding data and the data corresponding to each position point between the second intermediate point (y+1) to the second starting point (y+1)+ab Greek value
- the data window is shifted to the right b
- the distance of -a+1, the new data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third cutoff point ;
- a, b, x, y are all natural numbers.
- Each byte in the data stream is expanded into N new bytes as the smallest unit of data processing, where each minimum unit corresponds to an integer, N>1.
- the number N of new bytes in the minimum unit is equal to the maximum number of bytes processed by the processor performing data processing , and the new byte is 256-digit.
- the integer corresponding to the minimum unit is an unsigned integer.
- extracting Adjacent middle pole The data between the value points is combined into a valid data fragment. After the data other than the intermediate extreme point is fragmented as invalid data, the method may further include:
- the data may be network data or stored data.
- a second aspect of the embodiments of the present invention provides a data processing apparatus, which may include:
- a window construction unit configured to construct a data window sliding along the data stream, where the length of the data window is a preset number of bytes
- the extreme value judging unit is configured to determine whether the hash value corresponding to the center position data of the data window is an extreme value when the data window is slid; if yes, determining that the position is the first intermediate extreme point, the data The window continues to slide to determine subsequent intermediate extreme points; if not, the data window continues to slide to determine the first intermediate extreme point;
- the data slicing unit is configured to extract data between adjacent intermediate extreme points into a valid data slice, and use data other than the intermediate extreme point as invalid data.
- the extreme values include a maximum value and a minimum value.
- the extreme value determining unit may be further configured to:
- the data window is shifted right by the distance of yb, new data
- the window takes y+ab as a second starting point, the position point y is used as a second intermediate point, and y+ba is used as a second cut-off point; comparing the hash value of the data corresponding to the second intermediate point y with the first Two intermediate points y to the said a hash value of data corresponding to each position point between the regions of the starting point y+ab;
- the data window is shifted right by b-a+1. Distance, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+1)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- the extreme value determining unit may be further configured to:
- the hash value of the data corresponding to the position point y is equal to the hash value of the data corresponding to the first intermediate point b, and the data window is shifted right by the distance of y-b+1
- the new data window takes (y+l)+ab as the second starting point, (y+1) as the second intermediate point, and (y+1)+ba as the second cutoff point; comparing the second intermediate point (y+1) the hash value of the corresponding data and the data corresponding to each position point between the second intermediate point (y+1) to the second starting point (y+1)+ab Greek value
- the data window is shifted to the right b
- the distance of -a+1, the new data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third cutoff point ;
- a, b, x, y are all natural numbers.
- the extreme value determining unit may be further configured to:
- the data window is shifted right by b-a+1 Distance, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+1)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- the extreme value determining unit may be further configured to:
- the hash value of the data corresponding to the position point y is equal to the hash value of the data corresponding to the first intermediate point b, and the data window is shifted right by the distance of y-b+1
- the new data window takes (y+l)+ab as the second starting point, (y+1) as the second intermediate point, and (y+1)+ba as the second cutoff point; comparing the second intermediate point (y+1) the hash value of the corresponding data and the data corresponding to each position point between the second intermediate point (y+1) to the second starting point (y+1)+ab Greek value
- the data window is shifted to the right b
- the distance of -a+1, the new data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third cutoff point ;
- a, b, x, y are all natural numbers.
- the apparatus may further include:
- N a byte extension unit for each byte in the data stream before determining the intermediate extreme point Expanded into N new bytes as the smallest unit of data processing, where each minimum unit corresponds to an integer, N>1.
- the number N of new bytes in the minimum unit is equal to the maximum number of bytes processed by the processor performing data processing , and the new byte is 256-digit.
- the integer corresponding to the minimum unit is an unsigned integer.
- the device may also include: an appropriate data signature;
- a retrieval unit configured to retrieve the data signature in an established data signature database, and determine whether the data signature exists
- a storage unit configured to: when the retrieval unit determines that the data signature does not exist, store the data fragment and a corresponding data signature, if the data signature already exists, not storing the data fragment and corresponding Data signature.
- the data may be network data or stored data.
- a third aspect of the embodiments of the present invention provides a data processing apparatus, which may include:
- the memory is configured to store a program executed by the processor, extreme point information, and data fragmentation; the processor is configured to perform the following steps:
- the length of the data window is a preset number of bytes; when the data window is sliding, determining whether the hash value corresponding to the center position data of the data window is an extreme value;
- the data window continues to slide to determine a subsequent intermediate extreme point; if not, the data window continues to slide to determine the first intermediate extreme point; Extracting data between adjacent intermediate extreme points into a valid data slice, the intermediate extreme point Data other than as invalid data fragments.
- the extreme values include a maximum value and a minimum value.
- the processor may be further configured to:
- the data window is shifted right by the distance of yb, new data
- the window takes y+ab as a second starting point, the position point y is used as a second intermediate point, and y+ba is used as a second cut-off point; comparing the hash value of the data corresponding to the second intermediate point y with the first a hash value of data corresponding to each position point between the intermediate point y and the region of the second starting point y+ab;
- the data window is shifted right by b-a+1. Distance, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+1)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- the processor may be further configured to:
- the hash value of the data corresponding to the position point y is equal to the hash value of the data corresponding to the first intermediate point b, and the data window is shifted right by the distance of y-b+1
- the new data window takes (y+l)+ab as the second starting point, (y+1) as the second intermediate point, and (y+1)+ba as the second cutoff point; comparing the second intermediate point (y+1) a hash value of the corresponding data and the second intermediate point (y+1) to a hash value of data corresponding to each location point between the regions of the second starting point (y+1)+ab; if there is a location point X, the hash value of the data corresponding to the location point X is greater than or equal to The hash value of the data corresponding to the second intermediate point (y+1) shifts the data window to the right by b-a+1, and the new data window takes (y+2) as the third starting point. (y+2)+ba is the
- a, b, x, y are all natural numbers.
- the processor may be further configured to:
- the data window is shifted right by the distance of yb, new data
- the window takes y+ab as a second starting point, the position point y is used as a second intermediate point, and y+ba is used as a second cut-off point; comparing the hash value of the data corresponding to the second intermediate point y with the first a hash value of data corresponding to each position point between the intermediate point y and the region of the second starting point y+ab;
- the data window is shifted right by b-a+1 Distance, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+1)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- the processor may be further configured to:
- the data window is shifted to the right b
- the distance of -a+1, the new data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third cutoff point ;
- a, b, x, y are all natural numbers.
- the processor is further configured to:
- each byte in the data stream is expanded into N new bytes as a minimum unit of data processing, wherein each minimum unit corresponds to an unsigned integer, N>1;
- the number N of new bytes in the minimum unit is equal to the maximum number of bytes processed by the processor performing data processing, and the new bytes are 256-bit.
- the processor may further For: performing hash calculation on the valid data fragment and invalid data fragment to obtain a corresponding data signature; searching the data signature in the established data signature database to determine whether the data signature exists; And storing the data fragment and the corresponding data signature;
- the intermediate extremum points in the data stream that match the characteristics of the intermediate extremum are filtered out, and subsequent data slicing is performed according to the obtained intermediate extremum points, and the data is processed only once, because the data is processed.
- the efficiency is higher, and the obtained data fragments are at least larger than half of the data window, which avoids the disadvantages of poor data deduplication effect and high management cost caused by cutting a large number of short data fragments.
- FIG. 1 is a schematic flow chart of a first embodiment of a data processing method according to the present invention.
- FIG. 1 is a schematic flowchart diagram of a second embodiment of a data processing method according to the present invention.
- FIG. 3 is a schematic flow chart of a first embodiment for determining an intermediate extreme point in the data processing method of the present invention
- FIG. 4 is a schematic flowchart of a second embodiment for determining an intermediate extreme point in the data processing method of the present invention
- FIG. 6 is a schematic flowchart diagram of a fourth embodiment for determining an intermediate extreme point in the data processing method of the present invention
- FIG. 7 is a flow chart of a fourth embodiment for determining an intermediate extreme point in the data processing method of the present invention
- Figure 8 is a schematic diagram showing the composition of a second embodiment of the data processing apparatus of the present invention.
- FIG. 9 is a schematic diagram showing the composition of a third embodiment of the data processing apparatus of the present invention. detailed description
- FIG. 1 is a schematic flowchart of a first embodiment of a data processing method according to the present invention.
- the method includes the following steps:
- the length of the data window must contain an odd number of bytes.
- step S103 determines whether the hash value corresponding to the center position data of the data window is an extreme value. If yes, go to step S103, otherwise go to step S105.
- the data in the data stream may be separately hashed to obtain a corresponding hash value of each data.
- other methods can be used to digitally mark the data, and then use the principle of finding intermediate extreme points for subsequent data processing. 5103, determining that the position is the first intermediate extreme point, and the data window continues to slide to determine a subsequent intermediate extreme point.
- the extremum includes a maximum value and a minimum value.
- the maximum value is used for data processing
- the intermediate extreme point is larger than all the numbers in the data window
- the minimum value is used for data processing
- the intermediate extreme point is larger than the data window. All the numbers are small.
- the method further includes:
- Each byte in the data stream is expanded into N new bytes as the smallest unit of data processing, where each minimum unit corresponds to an integer, N>1.
- the size of the data window will be limited to a narrow range, and the characteristics of the intermediate extremum are more difficult to satisfy; compared to selecting a single byte as the smallest unit of data processing, each byte will be After the expansion, the variation increases, and the characteristics of the intermediate extremum are more easily satisfied. After the expansion, not only the size of the byte but also the order of the bytes are included in the category of repeated data recognition, which is suitable for deep mining of repeated data.
- the number N of new bytes in the minimum unit is equal to the maximum number of bytes processed by the processor performing data processing, and the new byte is 256-bit.
- the operating system is 64-bit, you can set N to 8, because 64-bit operating system data processing has a word length of 8, and when the two are equal, it is beneficial to improve the efficiency of data processing.
- the integer corresponding to the smallest unit is an unsigned integer.
- the data window continues to slide to determine a first intermediate extreme value, ⁇ .
- the intermediate extremum points in the data stream that match the characteristics of the intermediate extremum are filtered out, and subsequent data slicing is performed according to the obtained intermediate extremum points, and only one comparison process is performed because the efficiency of data processing is relatively high.
- High, and the obtained data fragment is at least larger than half of the data window, which avoids the disadvantage of poor data deduplication effect and high management cost due to cutting a large number of short data fragments.
- FIG. 2 is a schematic flowchart of a second embodiment of a data processing method according to the present invention.
- the method includes the following steps:
- 5201 Construct a data window sliding along a data stream, where the length of the data window is a preset number of bytes.
- step S203 determines whether the hash value corresponding to the center position data of the data window is an extreme value. If yes, go to step S203, otherwise go to step S205. S203. Determine the position as the first intermediate extreme point, and the data window continues to slide to determine a subsequent intermediate extreme point.
- the method further includes:
- Each byte in the data stream is expanded into N new bytes as the smallest unit of data processing, where each minimum unit corresponds to an integer, N>1.
- the number N of new bytes in the minimum unit is equal to the maximum number of bytes processed by the processor performing data processing, and the new byte is 256.
- the integer corresponding to the smallest unit is an unsigned integer.
- the cut data segment can be dynamically adjusted with the data content, so it is very sensitive to changes such as adding, deleting, changing or misaligning the data, which is beneficial to deep mining of repeated data and improving the repeated hit rate of the data.
- S204 Extract data between adjacent intermediate extreme points into a valid data slice, and use data other than the intermediate extreme point as invalid data.
- the length of the data fragment is always larger than half the size of the data window, and the distribution is more uniform and more concentrated, so the data deduplication effect is better.
- the data window continues to slide to determine a first intermediate extreme point.
- S206 Perform hash calculation on the valid data fragment and the invalid data fragment to obtain a corresponding data signature.
- step S207 Search the data signature in the established data signature database to determine whether the data signature exists. If yes, step S208 is performed, otherwise step S209 is performed.
- the data fragment and the corresponding data signature are not stored.
- Access and retrieval based on the granularity of data fragmentation there is no bottleneck in the access performance of the storage device, and the fragmentation data is used to verify the consistency of the fragmented data, and the data processing performance is higher. Only one comparison operation is performed on the bytes to be processed, which makes the data processing efficiency higher; data fragmentation based on the data content is very sensitive to data changes, ensuring that duplicate fragmentation data is only stored in the data center, not Will eliminate It consumes extra storage space and reduces database management and maintenance costs.
- FIG. 3 a schematic flowchart of a first embodiment for determining an intermediate extreme point in the data processing method of the present invention is provided.
- the method includes the following steps:
- S301 Determine a first starting point a, a first intermediate point b, and a first cutoff point 2b-a of the data window sliding on the data stream.
- the data window is shifted right by the distance of yb, new The data window has y + a - b as the second starting point, the position point y as the second intermediate point, and y + ba as the second cutoff point.
- the hash value of the data corresponding to the location point X is greater than or equal to the hash value of the data corresponding to the second intermediate point y, then shift the data window to the right b-a The distance of +1, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+l)+2b-2a as the third cutoff point.
- a, b, x, y are all natural numbers.
- FIG. 4 it is a schematic flowchart of a second embodiment of determining an intermediate extreme point in the data processing method of the present invention.
- the method includes the following steps:
- S401 Determine a first starting point a, a first intermediate point b, and a first cutoff point 2b-a of the data window sliding on the data stream.
- the data window is right Move the distance of b-a+1, the new data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third Deadline.
- a, b, x, y are all natural numbers.
- FIG. 5 is a schematic flowchart of a third embodiment for determining an intermediate extreme point in the data processing method of the present invention.
- the method includes the following steps:
- the data window is shifted right by the distance of yb, new The data window has y + a - b as the second starting point, the position point y as the second intermediate point, and y + ba as the second cutoff point.
- S504 Compare a hash value of the data corresponding to the second intermediate point y with a hash value of data corresponding to each position point between the second intermediate point y and the second starting point y+a-b.
- the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+l)+2b-2a as the third cutoff point.
- a, b, x, y are all natural numbers.
- FIG. 6 a schematic flowchart of a fourth embodiment for determining an intermediate extreme point in the data processing method of the present invention is provided.
- the method includes the following steps:
- S601. Determine a first starting point a, a first intermediate point b, and a first cutoff point 2b-a of the data window sliding on the data stream.
- 5602 when processing with a minimum value, comparing a hash value of the data corresponding to the first intermediate point a with each position between the first intermediate point a and the first cutoff point 2b-a The hash value of the corresponding data.
- the data window is shifted right by y-b+1
- the distance of the new data window is (y + l) + ab as the second starting point, (y + 1) is the second intermediate point, and (y + l) + ba is the second cutoff point.
- the data window is right Move the distance of b-a+1, the new data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third Deadline.
- a, b, x, y are all natural numbers.
- the apparatus includes: a window construction unit 100, an extremum determination unit 200, and a data slicing unit 300.
- the window construction unit 100 is configured to construct a data window sliding along a data stream, where the length of the data window is a preset number of bytes;
- the extremum determining unit 200 is configured to determine whether the hash value corresponding to the center position data of the data window is an extreme value when the data window is sliding; if yes, determining that the position is the first intermediate extreme point, The data window continues to slide to determine subsequent intermediate extreme points; if not, the data window continues to slide to determine the first intermediate extreme point;
- the data slicing unit 300 is configured to extract data between adjacent intermediate extreme points into a valid data fragment, and data other than the intermediate extreme point is fragmented as invalid data.
- the extremum includes a maximum value and a minimum value.
- the extreme value judging unit 200 may be further configured to:
- the data window is shifted right by the distance of yb, new data
- the window takes y+ab as a second starting point, the position point y is used as a second intermediate point, and y+ba is used as a second cut-off point; comparing the hash value of the data corresponding to the second intermediate point y with the first a hash value of data corresponding to each position point between the intermediate point y and the region of the second starting point y+ab;
- the data window is shifted right by b-a+1. Distance, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+1)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- the extreme value determining unit 200 may be further configured to:
- the hash value of the data corresponding to the position point y is equal to the hash value of the data corresponding to the first intermediate point b, and the data window is shifted right by the distance of y-b+1
- the new data window takes (y+l)+ab as the second starting point, (y+1) as the second intermediate point, and (y+1)+ba as the second cutoff point; comparing the second intermediate point (y+1) the hash value of the corresponding data and the data corresponding to each position point between the second intermediate point (y+1) to the second starting point (y+1)+ab Greek value
- the data window is shifted to the right b
- the distance of -a+1, the new data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third cutoff point ;
- a, b, x, y are all natural numbers.
- the extreme value determining unit 200 may be further configured to:
- the data window is shifted right by the distance of yb, new data
- the window takes y+ab as a second starting point, the position point y is used as a second intermediate point, and y+ba is used as a second cut-off point; comparing the hash value of the data corresponding to the second intermediate point y with the first a hash value of data corresponding to each position point between the intermediate point y and the region of the second starting point y+ab;
- the data window is shifted right by b-a+1 Distance, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+1)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- the extreme value determining unit may be further configured to:
- the hash value of the data corresponding to the position point y is equal to the hash value of the data corresponding to the first intermediate point b, and the data window is shifted right by the distance of y-b+1
- the new data window takes (y+l)+ab as the second starting point, (y+1) as the second intermediate point, and (y+1)+ba as the second cutoff point; comparing the second intermediate point (y+1) the hash value of the corresponding data and the data corresponding to each position point between the second intermediate point (y+1) to the second starting point (y+1)+ab Greek value
- the data window is shifted to the right b
- the distance of -a+1, the new data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third cutoff point ;
- a, b, x, y are all natural numbers.
- FIG. 8 is a schematic structural diagram of a second embodiment of a data processing apparatus according to the present invention.
- the device includes: a window construction unit 100, an extremum determination unit 200, a data slicing unit 300, a byte expansion unit 400, a calculation unit 500, a retrieval unit 600, and a storage unit 700.
- the byte expansion unit is configured to expand each byte in the data stream into N new bytes as a minimum unit of data processing before determining the intermediate extreme point, wherein each minimum unit corresponds to an integer , N>1.
- the number N of new bytes in the minimum unit is equal to the maximum number of bytes processed by the processor performing data processing, and the new byte is 256.
- the integer corresponding to the smallest unit is an unsigned integer. Obtain the corresponding data signature
- the searching unit 600 is configured to retrieve the data signature in an established data signature database, and determine whether the data signature exists;
- the storage unit 700 is configured to store the data fragment and the corresponding data signature when the retrieval unit determines that the data signature does not exist, and if the data signature already exists, not storing the data fragment and Corresponding data signature.
- the data is network data or storage data.
- FIG. 9 is a schematic diagram of the composition of a third embodiment of the data processing apparatus of the present invention.
- the device includes: a processor 800 and a memory 900 that cooperates with the processor 800; the memory 900 is configured to store a program, extreme point information, and data points executed by the processor 800.
- the processor 800 is configured to perform the following steps:
- the length of the data window is a preset number of bytes; when the data window is sliding, determining whether the hash value corresponding to the center position data of the data window is an extreme value;
- the data window continues to slide to determine a subsequent intermediate extreme point; if not, the data window continues to slide to determine the first intermediate extreme point; Extracting data between adjacent intermediate extreme points is combined into valid data fragments, and data other than the intermediate extreme points is fragmented as invalid data.
- the extremum includes a maximum value and a minimum value.
- the processor 800 can be further configured to: Determining a first starting point a, a first intermediate point b and a first cutoff point 2b-a of the data window sliding on the data stream;
- the data window is shifted right by the distance of yb, new data
- the window takes y+ab as a second starting point, the position point y is used as a second intermediate point, and y+ba is used as a second cut-off point; comparing the hash value of the data corresponding to the second intermediate point y with the first a hash value of data corresponding to each position point between the intermediate point y and the region of the second starting point y+ab;
- the data window is shifted right by b-a+1. Distance, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+1)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- processor 800 can be further configured to:
- the hash value of the data corresponding to the position point y is equal to the hash value of the data corresponding to the first intermediate point b, and the data window is shifted right by the distance of y-b+1
- the new data window takes (y+l)+ab as the second starting point, (y+1) as the second intermediate point, and (y+1)+ba as the second cutoff point; comparing the second intermediate point (y+1) the hash value of the corresponding data and the data corresponding to each position point between the second intermediate point (y+1) to the second starting point (y+1)+ab Greek value
- the data window is shifted to the right b
- the distance of -a+1, the new data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third cutoff point ;
- a, b, x, y are all natural numbers.
- processor 800 can be further configured to:
- the data window is shifted right by the distance of yb, new data
- the window takes y+ab as a second starting point, the position point y is used as a second intermediate point, and y+ba is used as a second cut-off point; comparing the hash value of the data corresponding to the second intermediate point y with the first a hash value of data corresponding to each position point between the intermediate point y and the region of the second starting point y+ab;
- the data window is shifted right by b-a+1 Distance, the new data window takes (y+1) as the third starting point, (y+l)+ba as the third intermediate point, and (y+1)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- processor 800 can be further configured to:
- the hash value of the data corresponding to the position point y is equal to the hash value of the data corresponding to the first intermediate point b, and the data window is shifted right by the distance of y-b+1
- the new data window takes (y+l)+ab as the second starting point, (y+1) as the second intermediate point, and (y+1)+ba as the second cutoff point; comparing the second intermediate point (y+1) the hash value of the corresponding data and the data corresponding to each position point between the second intermediate point (y+1) to the second starting point (y+1)+ab Greek value
- the data window is shifted to the right b -a+1 distance, new The data window takes (y+2) as the third starting point, (y+2)+ba as the third intermediate point, and (y+2)+2b-2a as the third cutoff point;
- a, b, x, y are all natural numbers.
- the processor 800 is further configured to:
- each byte in the data stream is expanded into N new bytes as a minimum unit of data processing, wherein each minimum unit corresponds to an unsigned integer, N>1;
- the number N of new bytes in the minimum unit is equal to the maximum number of bytes processed by the processor performing data processing, and the new bytes are 256-bit.
- processor 800 can be further used to:
- the data processing method and apparatus described in the embodiments of the present invention can be widely applied to network transmission to implement network data deduplication. It is only necessary to deploy the data processing device separately on the network side of the client and the server.
- the uploaded data flows through the client data processing device, is converted into a data fragmentation sequence, and then sent to the network.
- data is transmitted in fragmented form.
- the repeated valid data fragments only transmit the fragment index, and the invalid data fragment or the non-repetitive valid data fragment transmits the original data, thereby implementing network data deduplication.
- the upload data fragment sequence is transmitted over the network, arrives at the server data processing device, and first restores the original upload data, and then submits it to the server for processing.
- the download data flows through the server data processing device, is converted into a data fragmentation sequence, and then sent to the network.
- data is transmitted in fragmented form.
- the repeated valid data fragments only transmit the fragment index, and the invalid data fragment or the non-repetitive valid data fragment transmits the original data, thereby implementing network data deduplication.
- the downloaded data fragment sequence is transmitted over the network and arrives at the client data processing device, first restored to the original download data, and then submitted to the client for processing.
- the data processing devices at both ends of the client and the server respectively have data fragments and their feature index libraries. The two must be consistent to ensure that the fragment index published by one end can be resolved by the peer.
- the data processing method and apparatus of the present invention can also be applied to data storage to implement deduplication of stored data.
- the data processing device is deployed on the data center connection network side.
- the stored data flows through the data processing device, is converted into a data fragmentation sequence, and then submitted to the data center storage.
- data is stored in shards. Among them, the effective data fragment only stores the fragment index, and the invalid data fragment stores the original data, thereby realizing the storage data deduplication.
- the data center organizes the corresponding data fragmentation sequence, sends it to the data processing device for data recovery, and then submits it to the client for processing.
- the data processing device is provided with a data slice and a feature index library for referring to restoring the data slice stored in the data center.
- the data processing method and apparatus of the present invention can also be applied to data backup, and the data processing device is used to implement backup data deduplication.
- the data processing device is deployed on the server connection network side.
- the backup data flows through the data processing device, is converted into a data fragmentation sequence, and then submitted to the backup server for storage.
- the data is stored in shard form.
- the valid data fragment only stores the fragment index, and the invalid data fragment stores the original data, thereby implementing the deduplication of the backup data.
- the backup server organizes the corresponding data fragmentation sequence, sends it to the data processing device for data recovery, and then submits it to the server for processing.
- the data processing device is provided with a data fragment and a feature index library for restoring the data fragments stored by the backup server.
- the present invention has the following advantages:
- the intermediate extremum points in the data stream that match the characteristics of the intermediate extremum are filtered out, and subsequent data slicing is performed according to the obtained intermediate extremum points, and the data is processed only once, because the data is processed.
- the efficiency is higher, and the obtained data fragments are at least larger than half of the data window, which avoids the disadvantages of poor data deduplication effect and high management cost caused by cutting a large number of short data fragments.
- the storage medium may be a magnetic disk, an optical disk, a read-only memory (ROM), or a random access memory (Random Access Memory).
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据处理方法,包括:构造沿数据流滑动的数据窗口,所述数据窗口的长度为预设数目的字节;所述数据窗口滑动时,判断所述数据窗口中心位置数据对应的哈希值是否为极值;若是,则确定该位置为第一个中间极值点,所述数据窗口继续滑动以确定后续的中间极值点;若否,则所述数据窗口继续滑动以确定第一个中间极值点;提取相邻中间极值点之间的数据组合成有效数据分片,将所述中间极值点之外的数据作为无效数据分片。本发明实施例还提供了一种数据处理装置。采用本发明,可提升数据去重的效果,提高数据处理的效率,降低数据分片的管理和维护成本。
Description
一种数据处理方法及装置 技术领域
本发明涉及计算机技术领域, 尤其涉及一种数据处理方法及装置。 背景技术
随着信息化社会的飞速发展, 需要存储或传输的数据呈指数级增长, 数据 占用的空间急剧膨胀, 但是用于数据存储的容量空间与用于数据传输的网络带 宽却受限于存储系统和网络设备高昂的架设、 管理以及维护成本而难以与当今 庞大的数据量相匹配。 在数据存储或网络传输过程中存在大量的重复数据。 为 了緩解数据量飞快增长与硬件设施更新緩慢之间的矛盾,可采用数据去重( Data Deduplication, 筒称 DD )压缩技术对数据进行压缩处理。 区别于视频、 音频、 图像以及其它通用的数据压缩技术, DD压缩技术不仅关注数据对象内部数据的 重复, 还关注数据对象之间数据的重复。 其处理流程如下: 预先将数据对象切 割成片, 并建立数据分片及其特征索引库。 当相同的数据分片再次出现时, 使 用较短的分片索引代替较长的分片数据, 从而实现存储或传输的数据压缩, 达 到节省存储空间或提升传输带宽利用率的效果。 其中, 数据分片是 DD压缩过 程的关键环节, 数据分片方法的优劣将直接影响 DD压缩技术的效果和性能。
现有技术中采用的基于极值分片的方法来进行数据的处理。 该方法通过构 造沿数据流按字节滑动的数据窗口, 连续对数据窗口内的数据进行哈希计算, 从中筛选出在特定范围内的极值, 然后提取相邻极值点之间的数据组合成数据 分片。 首先, 由于该方法以字节为单位对数据进行处理, 当两个极值点距离 4艮 近时, 容易产生较短的数据分片, 极端情况下还有可能获得单字节的数据分片。 这些较短的数据分片与分片索引在长度上相差不大, 甚至更短, 难以实现数据 压缩, 反而使得 DD压缩效果不断恶化; 其次, 对于较短的数据分片, 其管理 与维护成本与正常数据分片一样, 无形中带来了管理与维护成本的提升; 最后, 该方法必须遍历数据对象中的每个字节, 因此数据处理性能较低。 发明内容
本发明实施例提供了一种数据处理方法及装置, 可提升数据去重的效果,
提高数据处理的效率, 降低数据分片的管理和维护成本。
本发明实施例第一方面提供一种数据处理方法, 可包括:
构造沿数据流滑动的数据窗口, 所述数据窗口的长度为预设数目的字节; 所述数据窗口滑动时, 判断所述数据窗口中心位置对应数据的哈希值是否 为极值;
若是, 则确定该位置为第一个中间极值点, 所述数据窗口继续滑动以确定 后续的中间极值点; 若否, 则所述数据窗口继续滑动以确定第一个中间极值点; 提取相邻中间极值点之间的数据组合成有效数据分片, 将所述中间极值点 之外的数据作为无效数据分片。
在第一种可能的实现方式中, 所述极值包括极大值和极小值。
结合第一方面或第一方面的第一种可能的实现方式, 在第二种可能的实现 方式中, 判断所述数据窗口中心位置数据对应的哈希值是否为极值, 可包括: 确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值大于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
结合第一方面或第一方面的第一种可能的实现方式, 在第三种可能的实现 方式中, 判断所述数据窗口中心位置数据对应的哈希值是否为极值, 可包括: 确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截
止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
结合第一方面或第一方面的第一种可能的实现方式, 在第四种可能的实现 方式中, 判断所述数据窗口中心位置数据对应的哈希值是否为极值, 可包括: 确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值小于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
结合第一方面或第一方面的第一种可能的实现方式, 在第五种可能的实现 方式中, 判断所述数据窗口中心位置数据对应的哈希值是否为极值, 可包括: 确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
结合第一方面或结合第一方面的第一或第二或第三或第四或第五种可能的 实现方式, 在第六种可能的实现方式中, 在确定所述中间极值点之前, 还可包 括:
将数据流中的每个字节扩展成 N个新字节作为数据处理的最小单位,其中, 每个最小单位对应一个整数, N>1。
结合第一方面的第六种可能的实现方式, 在第七种可能的实现方式中, 所 述最小单位中新字节的数目 N与进行数据处理的处理器单次处理的最大字节数 目相等, 且所述新字节之间采用 256进制。
结合第一方面的第六或第七种可能的实现方式, 在第八种可能的实现方式 中, 所述最小单位对应的整数为无符号整数。
结合第一方面或结合第一方面的第一或第二或第三或第四或第五或第六或 第七或第八种可能的实现方式, 在第九种可能的实现方式中, 提取相邻中间极
值点之间的数据组合成有效数据分片, 将所述中间极值点之外的数据作为无效 数据分片之后, 还可包括:
对所述有效数据分片及无效数据分片进行哈希计算得到对应的数据签名; 在已建立的数据签名库中检索所述数据签名, 判断所述数据签名是否存在; 若不存在, 则存储所述数据分片及对应的数据签名;
若已存在, 则不存储所述数据分片及对应的数据签名。
结合第一方面或结合第一方面的第一或第二或第三或第四或第五或第六或 第七或第八或第九种可能的实现方式, 在第十种可能的实现方式中, 所述数据 可以为网络数据或存储数据。
本发明实施例第二方面提供一种数据处理装置, 可包括:
窗口构造单元, 用于构造沿数据流滑动的数据窗口, 所述数据窗口的长度 为预设数目的字节;
极值判断单元, 用于所述数据窗口滑动时, 判断所述数据窗口中心位置数 据对应的哈希值是否为极值; 若是, 则确定该位置为第一个中间极值点, 所述 数据窗口继续滑动以确定后续的中间极值点; 若否, 则所述数据窗口继续滑动 以确定第一个中间极值点;
数据切片单元, 用于提取相邻中间极值点之间的数据组合成有效数据分片, 将所述中间极值点之外的数据作为无效数据分片。
在第一种可能的实现方式中, 所述极值包括极大值和极小值。
结合第二方面或第二方面的第一种可能的实现方式, 在第二种可能的实现 方式中, 所述极值判断单元可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值大于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第
二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
结合第二方面或第二方面的第一种可能的实现方式, 在第三种可能的实现 方式中, 所述极值判断单元可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
结合第二方面或第二方面的第一种可能的实现方式, 在第四种可能的实现 方式中, 所述极值判断单元可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值小于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
结合第二方面或第二方面的第一种可能的实现方式, 在第五种可能的实现 方式中, 所述极值判断单元可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
结合第二方面或结合第二方面的第一或第二或第三或第四或第五种可能的 实现方式, 在第六种可能的实现方式中, 所述装置还可包括:
字节扩展单元, 用于在确定所述中间极值点之前, 将数据流中的每个字节
扩展成 N个新字节作为数据处理的最小单位, 其中, 每个最小单位对应一个整 数, N>1。
结合第二方面的第六种可能的实现方式, 在第七种可能的实现方式中, 所 述最小单位中新字节的数目 N与进行数据处理的处理器单次处理的最大字节数 目相等, 且所述新字节之间采用 256进制。
结合第二方面的第六或第七种可能的实现方式, 在第八种可能的实现方式 中, 所述最小单位对应的整数为无符号整数。
结合第二方面或结合第二方面的第一或第二或第三或第四或第五或第六或 第七或第八种可能的实现方式, 在第九种可能的实现方式中, 所述装置还可包 括: 应的数据签名;
检索单元, 用于在已建立的数据签名库中检索所述数据签名, 判断所述数 据签名是否存在;
存储单元, 用于当所述检索单元判定所述数据签名不存在时, 存储所述数 据分片及对应的数据签名, 若所述数据签名已存在, 则不存储所述数据分片及 对应的数据签名。
结合第二方面或结合第二方面的第一或第二或第三或第四或第五或第六或 第七或第八或第九种可能的实现方式, 在第十种可能的实现方式中, 所述数据 可以为网络数据或存储数据。
本发明实施例第三方面提供一种数据处理装置, 可包括:
处理器及与所述处理器相配合的存储器;
所述存储器用于存储所述处理器执行的程序、 极值点信息及数据分片; 所述处理器用于执行以下步骤:
构造沿数据流滑动的数据窗口, 所述数据窗口的长度为预设数目的字节; 所述数据窗口滑动时, 判断所述数据窗口中心位置数据对应的哈希值是否 为极值;
若是, 则确定该位置为第一个中间极值点, 所述数据窗口继续滑动以确定 后续的中间极值点; 若否, 则所述数据窗口继续滑动以确定第一个中间极值点; 提取相邻中间极值点之间的数据组合成有效数据分片, 将所述中间极值点
之外的数据作为无效数据分片。
在第一种可能的实现方式中, 所述极值包括极大值和极小值。
结合第三方面或结合第一方面的第一种可能的实现方式, 在第二种可能的 实现方式中, 所述处理器可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值大于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
结合第三方面或结合第一方面的第一种可能的实现方式, 在第三种可能的 实现方式中, 所述处理器可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至
所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值; 若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
结合第三方面或结合第一方面的第一种可能的实现方式, 在第四种可能的 实现方式中, 所述处理器可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值小于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
结合第三方面或结合第一方面的第一种可能的实现方式, 在第五种可能的 实现方式中, 所述处理器可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点;
比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
结合第三方面或结合第三方面的第一或第二或第三或第四或第五种可能的 实现方式, 在第六种可能的实现方式中, 所述处理器还可用于:
在确定所述中间极值点之前, 将数据流中的每个字节扩展成 N个新字节作 为数据处理的最小单位, 其中, 每个最小单位对应一个无符号整数, N>1 ; 所述 最小单位中新字节的数目 N与进行数据处理的处理器单次处理的最大字节数目 相等, 且所述新字节之间采用 256进制。
结合第三方面或结合第三方面的第一或第二或第三或第四或第五或第六种 可能的实现方式, 在第七种可能的实现方式中, 所述处理器可更进一步用于: 对所述有效数据分片及无效数据分片进行哈希计算得到对应的数据签名; 在已建立的数据签名库中检索所述数据签名, 判断所述数据签名是否存在; 若不存在, 则存储所述数据分片及对应的数据签名;
若已存在, 则不存储所述数据分片及对应的数据签名。
实施本发明实施例, 具有如下有益效果:
通过确定数据窗口的滑动, 筛选出数据流中符合中间极值特征的中间极值 点, 并根据得到的中间极值点进行后续的数据切片, 对数据只有一次比较的处 理过程, 因为数据处理的效率较高, 且得到的数据分片至少大于半个数据窗口, 避免了切割出大量的较短数据分片而带来的数据去重效果差、 管理成本高的缺 点。 附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施 例或现有技术描述中所需要使用的附图作筒单地介绍, 显而易见地, 下面描述 中的附图仅仅是本发明的一些实施例, 对于本领域普通技术人员来讲, 在不付 出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
图 1为本发明数据处理方法的第一实施例的流程示意图;
图 为本发明数据处理方法的第二实施例的流程示意图;
图 3为本发明数据处理方法中判断中间极值点的第一实施例的流程示意图; 图 4为本发明数据处理方法中判断中间极值点的第二实施例的流程示意图; 图 5为本发明数据处理方法中判断中间极值点的第三实施例的流程示意图; 图 6为本发明数据处理方法中判断中间极值点的第四实施例的流程示意图; 图 7为本发明数据处理装置的第一实施例的组成示意图;
图 8为本发明数据处理装置的第二实施例的组成示意图;
图 9为本发明数据处理装置的第三实施例的组成示意图。 具体实施方式
下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清 楚、 完整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是 全部的实施例。 基于本发明中的实施例, 本领域普通技术人员在没有作出创造 性劳动的前提下所获得的所有其他实施例, 都属于本发明保护的范围。
请参照图 1 , 为本发明数据处理方法的第一实施例的流程示意图; 在本实施 例中, 所述方法包括以下步骤:
5101 , 构造沿数据流滑动的数据窗口, 所述数据窗口的长度为预设数目的 字节。
具体地, 为了满足后续中间极值点的特征, 所述数据窗口的长度必须可以 包含奇数个字节。
5102, 所述数据窗口滑动时, 判断所述数据窗口中心位置数据对应的哈希 值是否为极值。 若是, 则执行步骤 S103 , 否则执行步骤 S105。
具体地, 可以对数据流中的数据分别做哈希计算得到每个数据相应的哈希 值。 当然也可以采用其他的方式对数据进行数字标记, 然后利用寻找中间极值 点的原理进行后续的数据处理。
5103 , 确定该位置为第一个中间极值点, 所述数据窗口继续滑动以确定后 续的中间极值点。
具体地, 所述极值包括极大值和极小值。 当采用极大值进行数据处理时, 所述中间极值点比所述数据窗口中的所有数都大, 当采用极小值进行数据处理 时, 所述中间极值点比所述数据窗口中的所有数都小。
优选地, 在确定所述中间极值点之前, 还可包括:
将数据流中的每个字节扩展成 N个新字节作为数据处理的最小单位,其中, 每个最小单位对应一个整数, N>1。
由于单字节只有 256种变化, 数据窗口的大小将被限制在一个狭小的范围 内, 中间极值的特征较难满足; 相对于选择单字节作为数据处理的最小单位, 将每个字节进行扩展后, 变化增多, 中间极值的特征更容易满足, 且扩展后不 但将字节的大小, 还将字节的排序, 纳入重复数据识别的范畴, 适于重复数据 的深度挖掘。
更优选地, 所述最小单位中新字节的数目 N与进行数据处理的处理器单次 处理的最大字节数目相等, 且所述新字节之间采用 256进制。 例如, 当操作系 统为 64位时, 则可以将 N设为 8, 因为 64位操作系统数据处理的字长为 8, 当 两者相等时, 有利于提升数据处理的效率。
更优选地, 所述最小单位对应的整数为无符号整数。 通过实测分析发现, 间极值更加均匀, 也更加集中, 这样有利于数据分片的管理与维护, 同时有利 于分片数据的再次命中。
5104, 提取相邻中间极值点之间的数据组合成有效数据分片, 将所述中间 极值点之外的数据作为无效数据分片。
S 105 , 所述数据窗口继续滑动以确定第一个中间极值 , ^。
通过确定数据窗口的滑动, 筛选出数据流中符合中间极值特征的中间极值 点, 并根据得到的中间极值点进行后续的数据切片, 只有一次比较的处理过程, 因为数据处理的效率较高, 且得到的数据分片至少大于半个数据窗口, 避免了 切割出大量的较短数据分片而带来的数据去重效果差、 管理成本高的缺点。
请参照图 2, 为本发明数据处理方法的第二实施例的流程示意图; 在本实施
例中, 所述方法包括以下步骤:
5201 , 构造沿数据流滑动的数据窗口, 所述数据窗口的长度为预设数目的 字节。
5202, 所述数据窗口滑动时, 判断所述数据窗口中心位置数据对应的哈希 值是否为极值。 若是, 则执行步骤 S203 , 否则执行步骤 S205。 S203 , 确定该位 置为第一个中间极值点, 所述数据窗口继续滑动以确定后续的中间极值点。
优选地, 在确定所述中间极值点之前, 还可包括:
将数据流中的每个字节扩展成 N个新字节作为数据处理的最小单位,其中, 每个最小单位对应一个整数, N>1。
所述最小单位中新字节的数目 N与进行数据处理的处理器单次处理的最大 字节数目相等, 且所述新字节之间采用 256进制。 所述最小单位对应的整数为 无符号整数。
这样, 切割的数据分片可以随数据内容动态调整, 因此对数据的增、 删、 改或错位等变化非常敏感, 有利于重复数据的深度挖掘, 提升数据的重复命中 率。
5204, 提取相邻中间极值点之间的数据组合成有效数据分片, 将所述中间 极值点之外的数据作为无效数据分片。
数据分片的长度始终大于半个数据窗口大小, 而且分布更加均匀, 也更加 集中, 因此数据去重效果更优。
5205 , 所述数据窗口继续滑动以确定第一个中间极值点。
5206, 对所述有效数据分片及无效数据分片进行哈希计算得到对应的数据 签名。
5207 , 在已建立的数据签名库中检索所述数据签名, 判断所述数据签名是 否存在。 若存在, 则执行步骤 S208, 否则执行步骤 S209。
5208, 不存储所述数据分片及对应的数据签名。
5209, 存储所述数据分片及对应的数据签名。
基于数据分片粒度进行存取和检索, 不存在存储设备访问性能的瓶颈, 而 且使用分片索校验分片数据一致性, 数据处理性能更高。 对需要处理的字节只 有一次比较操作, 使得数据处理效率较高; 基于数据内容进行数据分片, 对数 据的变化十分敏感, 确保了重复的分片数据在数据中心只会存储一份, 不会消
耗额外的存储空间, 减少了数据库的管理与维护成本。
请参照图 3 ,为本发明数据处理方法中判断中间极值点的第一实施例的流程 示意图; 在本实施例中, 所述方法包括以下步骤:
5301 , 确定所述数据窗口在数据流上滑动的第一起始点 a, 第一中间点 b及 第一截止点 2b-a。
所述数据窗口可以从数据流的起始点即 a=0 的位置开始滑动, 当然, 也可 以从数据流的其他任意位置开始滑动。
5302, 当采用极大值进行处理时, 比较所述第一中间点 b对应的数据的哈 希值与所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的 数据的哈希值。
5303 , 若存在一个位置点 y, 所述位置点 y对应的数据的哈希值大于所述第 一中间点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据 窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二 截止点。
5304, 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至 所述第二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值。
5305 , 若存在一个位置点 X , 所述位置点 X对应的数据的哈希值大于或等于 所述第二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离, 新的数据窗口以 (y+1)作为第三起始点, (y+l)+b-a作为第三中间点, (y+l)+2b-2a 作为第三截止点。
其中, a、 b、 x、 y均为自然数。
请参照图 4,为本发明数据处理方法中判断中间极值点的第二实施例的流程 示意图; 在本实施例中, 所述方法包括以下步骤:
5401 , 确定所述数据窗口在数据流上滑动的第一起始点 a, 第一中间点 b及 第一截止点 2b-a。
5402, 当采用极大值进行处理时, 比较所述第一中间点 a对应的数据的哈 希值与所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的 数据的哈希值。
5403 , 若存在一个位置点 y, 所述位置点 y对应的数据的哈希值等于所述第 一中间点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数
据窗口以 (y+l)+a-b为第二起始点,(y+1)为第二中间点,(y+l)+b-a为第二截止点。
5404 , 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点 (y+1)至所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值。
5405 , 若存在一个位置点 X , 所述位置点 X对应的数据的哈希值大于或等于 所述第二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距 离, 新的数据窗口以(y+2)作为第三起始点, (y+2)+b-a 作为第三中间点, (y+2)+2b-2a作为第三截止点。
其中, a、 b、 x、 y均为自然数。
请参照图 5 ,为本发明数据处理方法中判断中间极值点的第三实施例的流程 示意图; 在本实施例中, 所述方法包括以下步骤:
5501 , 确定所述数据窗口在数据流上滑动的第一起始点 a, 第一中间点 b及 第一截止点 2b-a。
5502, 当采用极小值进行处理时, 比较所述第一中间点 b对应的数据的哈 希值与所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的 数据的哈希值。
5503 , 若存在一个位置点 y, 所述位置点 y对应的数据的哈希值小于所述第 一中间点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据 窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二 截止点。
5504, 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至 所述第二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值。
5505 , 若存在一个位置点 X , 所述位置点 X对应的数据的哈希值小于或等于 所述第二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离, 新的数据窗口以 (y+1)作为第三起始点, (y+l)+b-a作为第三中间点, (y+l)+2b-2a 作为第三截止点。
其中, a、 b、 x、 y均为自然数。
请参照图 6,为本发明数据处理方法中判断中间极值点的第四实施例的流程 示意图; 在本实施例中, 所述方法包括以下步骤:
S601 , 确定所述数据窗口在数据流上滑动的第一起始点 a, 第一中间点 b及 第一截止点 2b-a。
5602, 当采用极小值进行处理时, 比较所述第一中间点 a对应的数据的哈 希值与所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的 数据的哈希值。
5603 , 若存在一个位置点 y, 所述位置点 y对应的数据的哈希值等于所述第 一中间点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数 据窗口以 (y+l)+a-b为第二起始点,(y+1)为第二中间点,(y+l)+b-a为第二截止点。
5604 , 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点 (y+1)至所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值。
5605 , 若存在一个位置点 X , 所述位置点 X对应的数据的哈希值小于或等于 所述第二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距 离, 新的数据窗口以(y+2)作为第三起始点, (y+2)+b-a 作为第三中间点, (y+2)+2b-2a作为第三截止点。
其中, a、 b、 x、 y均为自然数。
请参照图 7, 为本发明数据处理装置的第一实施例的组成示意图; 在本实施 例中, 所述装置包括: 窗口构造单元 100、 极值判断单元 200及数据切片单元 300。
所述窗口构造单元 100用于构造沿数据流滑动的数据窗口, 所述数据窗口 的长度为预设数目的字节;
所述极值判断单元 200用于所述数据窗口滑动时, 判断所述数据窗口中心 位置数据对应的哈希值是否为极值; 若是, 则确定该位置为第一个中间极值点, 所述数据窗口继续滑动以确定后续的中间极值点; 若否, 则所述数据窗口继续 滑动以确定第一个中间极值点;
所述数据切片单元 300用于提取相邻中间极值点之间的数据组合成有效数 据分片, 将所述中间极值点之外的数据作为无效数据分片。
具体地, 所述极值包括极大值和极小值。
所述极值判断单元 200可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的
哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值大于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
或者, 所述极值判断单元 200可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
或者, 所述极值判断单元 200可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值小于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
或者, 所述极值判断单元可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
请参照图 8, 为本发明数据处理装置的第二实施例的组成示意图; 在本实施
例中,所述装置包括:窗口构造单元 100、极值判断单元 200、数据切片单元 300、 字节扩展单元 400、 计算单元 500、 检索单元 600及存储单元 700。
所述字节扩展单元用于在确定所述中间极值点之前, 将数据流中的每个字 节扩展成 N个新字节作为数据处理的最小单位, 其中, 每个最小单位对应一个 整数, N>1。
优选地, 所述最小单位中新字节的数目 N与进行数据处理的处理器单次处 理的最大字节数目相等, 且所述新字节之间采用 256进制。
更优选地, 所述最小单位对应的整数为无符号整数。 得到对应的数据签名;
所述检索单元 600用于在已建立的数据签名库中检索所述数据签名, 判断 所述数据签名是否存在;
所述存储单元 700用于当所述检索单元判定所述数据签名不存在时, 存储 所述数据分片及对应的数据签名, 若所述数据签名已存在, 则不存储所述数据 分片及对应的数据签名。
其中, 所述数据为网络数据或存储数据。
请参照图 9, 为本发明数据处理装置的第三实施例的组成示意图。 在本实施 例中, 所述装置包括: 处理器 800及与所述处理器 800相配合的存储器 900; 所述存储器 900用于存储所述处理器 800执行的程序、 极值点信息及数据 分片;
所述处理器 800用于执行以下步骤:
构造沿数据流滑动的数据窗口, 所述数据窗口的长度为预设数目的字节; 所述数据窗口滑动时, 判断所述数据窗口中心位置数据对应的哈希值是否 为极值;
若是, 则确定该位置为第一个中间极值点, 所述数据窗口继续滑动以确定 后续的中间极值点; 若否, 则所述数据窗口继续滑动以确定第一个中间极值点; 提取相邻中间极值点之间的数据组合成有效数据分片, 将所述中间极值点 之外的数据作为无效数据分片。
具体地, 所述极值包括极大值和极小值。
所述处理器 800可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值大于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
或者, 所述处理器 800可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
或者, 所述处理器 800可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值小于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
或者, 所述处理器 800可进一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新
的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
优选地, 所述处理器 800还可用于:
在确定所述中间极值点之前, 将数据流中的每个字节扩展成 N个新字节作 为数据处理的最小单位, 其中, 每个最小单位对应一个无符号整数, N>1 ; 所述 最小单位中新字节的数目 N与进行数据处理的处理器单次处理的最大字节数目 相等, 且所述新字节之间采用 256进制。
更优选地, 所述处理器 800可更进一步用于:
对所述有效数据分片及无效数据分片进行哈希计算得到对应的数据签名; 在已建立的数据签名库中检索所述数据签名, 判断所述数据签名是否存在; 若不存在, 则存储所述数据分片及对应的数据签名;
若已存在, 则不存储所述数据分片及对应的数据签名。
需要说明的是, 本说明书中的各个实施例均采用递进的方式描述, 每个实 施例重点说明的都是与其它实施例的不同之处, 各个实施例之间相同相似的部 分互相参见即可。 对于装置实施例而言, 由于其与方法实施例基本相似, 所以 描述的比较筒单, 相关之处参见方法实施例的部分说明即可。
本发明实施例中所述的数据处理方法及装置可以广泛应用于网络传输, 实 现网络数据去重。 只需要将数据处理装置分别部署在客户端与服务器的网络侧。
当客户端向服务器上传数据时, 上传数据流经客户端数据处理装置, 转换 成数据分片序列, 然后送入网络。 在网络中, 数据按分片形式进行传输。 其中, 重复的有效数据分片只传输分片索引, 无效数据分片或不重复的有效数据分片 才传输原始数据, 从而实现网络数据去重。 上传数据分片序列通过网络传输, 抵达服务器数据处理装置, 先恢复成原始的上传数据, 再提交服务器处理。
当客户端向服务器下载数据时, 下载数据流经服务器数据处理装置, 转换 成数据分片序列, 然后送入网络。 在网络中, 数据按分片形式进行传输。 其中, 重复的有效数据分片只传输分片索引, 无效数据分片或不重复的有效数据分片 才传输原始数据, 从而实现网络数据去重。 下载数据分片序列通过网络传输, 抵达客户端数据处理装置, 先恢复成原始的下载数据, 再提交客户端处理。
客户端与服务器两端的数据处理装置分别建有数据分片及其特征索引库,
二者必须保持一致, 才能确保一端发布的分片索引, 对端可以解析。 同样的, 本发明所述的数据处理方法及装置还可以应用于数据存储, 实现 存储数据去重。 数据处理装置部署在数据中心连接网络侧。
当客户端保存数据时, 存储数据流经数据处理装置, 转换成数据分片序列, 然后提交数据中心存储。 在数据中心上, 数据按分片形式进行存储。 其中, 有 效数据分片只存储分片索引, 无效数据分片才存储原始数据, 从而实现存储数 据去重。
当客户端获取数据时, 数据中心组织相应的数据分片序列, 送入数据处理 装置进行数据恢复, 然后提交客户端处理。 数据处理装置建有数据分片及其特 征索引库, 用以参考将数据中心存储的数据分片予以还原。
本发明所述数据处理方法及装置还可以应用于数据备份, 配合数据处理装 置实现备份数据去重。 数据处理装置部署在服务器连接网络侧。
当服务器备份数据时, 备份数据流经数据处理装置, 转换成数据分片序列, 然后提交备份服务器存储。 在备份服务器上, 数据按分片形式进行存储。 其中 有效数据分片只存储分片索引, 无效数据分片才存储原始数据, 从而实现备份 数据去重。
当服务器提取数据时, 备份服务器组织相应的数据分片序列, 送入数据处 理装置进行数据恢复, 然后提交服务器处理。 数据处理装置建有数据分片及其 特征索引库, 用以参考将备份服务器存储的数据分片予以还原。
通过上述实施例的描述, 本发明具有以下优点:
通过确定数据窗口的滑动, 筛选出数据流中符合中间极值特征的中间极值 点, 并根据得到的中间极值点进行后续的数据切片, 对数据只有一次比较的处 理过程, 因为数据处理的效率较高, 且得到的数据分片至少大于半个数据窗口, 避免了切割出大量的较短数据分片而带来的数据去重效果差、 管理成本高的缺 点。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完成, 所述的程序可存储于一计算 机可读取存储介质中, 该程序在执行时, 可包括如上述各方法的实施例的流程。 其中, 所述的存储介质可为磁碟、 光盘、 只读存储记忆体(Read-Only Memory, ROM )或随机存取存储器(Random Access Memory, 筒称 RAM )等。
以上所揭露的仅为本发明较佳实施例而已, 当然不能以此来限定本发明之 权利范围, 因此依本发明权利要求所作的等同变化, 仍属本发明所涵盖的范围。
Claims
1、 一种数据处理方法, 其特征在于, 包括:
构造沿数据流滑动的数据窗口, 所述数据窗口的长度为预设数目的字节; 所述数据窗口滑动时, 判断所述数据窗口中心位置数据对应的哈希值是否 为极值;
若是, 则确定该位置为第一个中间极值点, 所述数据窗口继续滑动以确定 后续的中间极值点; 若否, 则所述数据窗口继续滑动以确定第一个中间极值点; 提取相邻中间极值点之间的数据组合成有效数据分片, 将所述中间极值点 之外的数据作为无效数据分片。
2、如权利要求 1所述的方法,其特征在于, 所述极值包括极大值和极小值。
3、 如权利要求 1或 2所述的方法, 其特征在于, 判断所述数据窗口中心位 置数据对应的哈希值是否为极值, 包括:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值大于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
4、 如权利要求 1或 2所述的方法, 其特征在于, 判断所述数据窗口中心位 置数据对应的哈希值是否为极值, 包括:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
5、 如权利要求 1或 2所述的方法, 其特征在于, 判断所述数据窗口中心位 置数据对应的哈希值是否为极值, 包括:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值小于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第
二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
6、 如权利要求 1或 2所述的方法, 其特征在于, 判断所述数据窗口中心位 置数据对应的哈希值是否为极值, 包括:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
7、 如权利要求 1-6任一项所述的方法, 其特征在于, 在确定所述中间极值 点之前, 还包括:
将数据流中的每个字节扩展成 N个新字节作为数据处理的最小单位,其中, 每个最小单位对应一个整数, N>1。
8、 如权利要求 7所述的方法, 其特征在于, 所述最小单位中新字节的数目 N 与进行数据处理的处理器单次处理的最大字节数目相等, 且所述新字节之间 采用 256进制。
9、 如权利要求 7或 8所述的方法, 其特征在于, 所述最小单位对应的整数 为无符号整数。
10、 如权利要求 1-9任一项所述的方法, 其特征在于, 所述提取相邻中间极 值点之间的数据组合成有效数据分片, 将所述中间极值点之外的数据作为无效 数据分片之后, 还包括:
对所述有效数据分片及无效数据分片进行哈希计算得到对应的数据签名; 在已建立的数据签名库中检索所述数据签名, 判断所述数据签名是否存在; 若不存在, 则存储所述数据分片及对应的数据签名;
若已存在, 则不存储所述数据分片及对应的数据签名。
11、 如权利要求 1-10任一项所述的方法, 其特征在于, 所述数据为网络数 据或存储数据。
12、 一种数据处理装置, 其特征在于, 包括:
窗口构造单元, 用于构造沿数据流滑动的数据窗口, 所述数据窗口的长度 为预设数目的字节;
极值判断单元, 用于所述数据窗口滑动时, 判断所述数据窗口中心位置数 据对应的哈希值是否为极值; 若是, 则确定该位置为第一个中间极值点, 所述 数据窗口继续滑动以确定后续的中间极值点; 若否, 则所述数据窗口继续滑动 以确定第一个中间极值点;
数据切片单元, 用于提取相邻中间极值点之间的数据组合成有效数据分片, 将所述中间极值点之外的数据作为无效数据分片。
13、 如权利要求 12所述的装置, 其特征在于, 所述极值包括极大值和极小 值。
14、 如权利要求 12或 13所述的装置, 其特征在于, 所述极值判断单元进 一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值大于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
15、 如权利要求 12或 13所述的装置, 其特征在于, 所述极值判断单元进 一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至
所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值; 若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
16、 如权利要求 12或 13所述的装置, 其特征在于, 所述极值判断单元进 一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值小于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
17、 如权利要求 12或 13所述的装置, 其特征在于, 所述极值判断单元进 一步用于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与
所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
18、 如权利要求 12-17任一项所述的装置, 其特征在于, 所述装置还包括: 字节扩展单元, 用于在确定所述中间极值点之前, 将数据流中的每个字节 扩展成 N个新字节作为数据处理的最小单位, 其中, 每个最小单位对应一个整 数, N>1。
19、 如权利要求 18所述的装置, 其特征在于, 所述最小单位中新字节的数 目 N与进行数据处理的处理器单次处理的最大字节数目相等, 且所述新字节之 间采用 256进制。
20、 如权利要求 18或 19所述的装置, 其特征在于, 所述最小单位对应的 整数为无符号整数。
21、 如权利要求 12-20任一项所述的装置, 其特征在于, 所述装置还包括: 应的数据签名;
检索单元, 用于在已建立的数据签名库中检索所述数据签名, 判断所述数 据签名是否存在;
存储单元, 用于当所述检索单元判定所述数据签名不存在时, 存储所述数 据分片及对应的数据签名, 若所述数据签名已存在, 则不存储所述数据分片及 对应的数据签名。
22、 如权利要求 12-21任一项所述的装置, 其特征在于, 所述数据为网络数 据或存储数据。
23、 一种数据处理装置, 其特征在于, 包括: 处理器及与所述处理器相配 合的存储器;
所述存储器用于存储所述处理器执行的程序、 极值点信息及数据分片; 所述处理器用于执行以下步骤:
构造沿数据流滑动的数据窗口, 所述数据窗口的长度为预设数目的字节; 所述数据窗口滑动时, 判断所述数据窗口中心位置数据对应的哈希值是否 为极值;
若是, 则确定该位置为第一个中间极值点, 所述数据窗口继续滑动以确定 后续的中间极值点; 若否, 则所述数据窗口继续滑动以确定第一个中间极值点; 提取相邻中间极值点之间的数据组合成有效数据分片, 将所述中间极值点 之外的数据作为无效数据分片。
24、 如权利要求 23所述的装置, 其特征在于, 所述极值包括极大值和极小 值。
25、 如权利要求 22或 23所述的装置, 其特征在于, 所述处理器进一步用 于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y, 所述位置点 y对应的数据的哈希值大于所述中间点 b
对应的数据的哈希值,则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b 作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点;
比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
26、 如权利要求 22或 23所述的装置, 其特征在于, 所述处理器进一步用 于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极大值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值大于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新 的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
27、 如权利要求 22或 23所述的装置, 其特征在于, 所述处理器进
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 b对应的数据的哈希值与 所述第一中间点 b至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值小于所述第一中间 点 b对应的数据的哈希值, 则将所述数据窗口右移 y-b的距离,新的数据窗口以 y+a-b作为第二起始点, 所述位置点 y作为第二中间点, y+b-a作为第二截止点; 比较所述第二中间点 y对应的数据的哈希值与所述第二中间点 y至所述第 二起始点 y+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 y对应的数据的哈希值, 则将所述数据窗口右移 b-a+1的距离,新的数 据窗口以 (y+1)作为第三起始点,(y+l)+b-a作为第三中间点,(y+l)+2b-2a作为第 三截止点;
其中, a、 b、 x、 y均为自然数。
28、 如权利要求 22或 23所述的装置, 其特征在于, 所述处理器进一步用 于:
确定所述数据窗口在数据流上滑动的第一起始点 a,第一中间点 b及第一截 止点 2b-a;
当采用极小值进行处理时, 比较所述第一中间点 a对应的数据的哈希值与 所述第一中间点 a至所述第一截止点 2b-a的区域之间各个位置点对应的数据的 哈希值;
若存在一个位置点 y,所述位置点 y对应的数据的哈希值等于所述第一中间 点 b对应的数据的哈希值,则将所述数据窗口右移 y-b+1的距离,新的数据窗口 以 (y+l)+a-b为第二起始点, (y+1)为第二中间点, (y+l)+b-a为第二截止点; 比较所述第二中间点(y+1)对应的数据的哈希值与所述第二中间点(y+1)至 所述第二起始点 (y+l)+a-b的区域之间各个位置点对应的数据的哈希值;
若存在一个位置点 X ,所述位置点 X对应的数据的哈希值小于或等于所述第 二中间点 (y+1)对应的数据的哈希值, 则将所述数据窗口右移 b-a+1 的距离, 新
的数据窗口以(y+2)作为第三起始点, (y+2)+b-a作为第三中间点, (y+2)+2b-2a 作为第三截止点;
其中, a、 b、 x、 y均为自然数。
29、 如权利要求 22-28所述的装置, 其特征在于, 所述处理器还用于: 在确定所述中间极值点之前, 将数据流中的每个字节扩展成 N个新字节作 为数据处理的最小单位, 其中, 每个最小单位对应一个无符号整数, N>1 ; 所述 最小单位中新字节的数目 N与进行数据处理的处理器单次处理的最大字节数目 相等, 且所述新字节之间采用 256进制。
30、 如权利要求 22-29任一项所述的装置, 其特征在于, 所述处理器更进一 步用于:
对所述有效数据分片及无效数据分片进行哈希计算得到对应的数据签名; 在已建立的数据签名库中检索所述数据签名, 判断所述数据签名是否存在; 若不存在, 则存储所述数据分片及对应的数据签名;
若已存在, 则不存储所述数据分片及对应的数据签名。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201280002719.8A CN104012055B (zh) | 2012-12-13 | 2012-12-13 | 一种数据处理方法及装置 |
PCT/CN2012/086538 WO2014089802A1 (zh) | 2012-12-13 | 2012-12-13 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/086538 WO2014089802A1 (zh) | 2012-12-13 | 2012-12-13 | 一种数据处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2014089802A1 true WO2014089802A1 (zh) | 2014-06-19 |
Family
ID=50933713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2012/086538 WO2014089802A1 (zh) | 2012-12-13 | 2012-12-13 | 一种数据处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104012055B (zh) |
WO (1) | WO2014089802A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572872A (zh) * | 2014-12-19 | 2015-04-29 | 华中科技大学 | 一种基于极值的数据去重分块方法 |
CN112115108A (zh) * | 2020-09-11 | 2020-12-22 | 哈尔滨工业大学(威海) | 一种车辆物联网云存储系统重复数据删除方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11316945B2 (en) * | 2019-12-16 | 2022-04-26 | Hyundai Motor Company | Vehicle multimedia system and memory management method therefor |
CN114625316A (zh) * | 2022-02-11 | 2022-06-14 | 华南理工大学 | 应用在重复数据删除的基于内容分块方法、系统及介质 |
CN116939047B (zh) * | 2023-09-18 | 2023-11-24 | 吉林省车桥汽车零部件有限公司 | 一种用于数控机床系统的数据智能通信方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409630A (zh) * | 2007-10-11 | 2009-04-15 | 北京大学 | 一种流媒体数据发送接收方法、装置及系统 |
US20090196414A1 (en) * | 2008-01-31 | 2009-08-06 | Hemant Mittal | Online data conversion technique |
CN101841691A (zh) * | 2010-03-04 | 2010-09-22 | 中国科学院计算技术研究所 | 一种流媒体数据交换方法与装置 |
CN101931495A (zh) * | 2009-06-18 | 2010-12-29 | 华为技术有限公司 | 一种数据处理方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100717064B1 (ko) * | 2006-03-03 | 2007-05-10 | 삼성전자주식회사 | 소프트웨어 업데이트 실행 방법 및 장치 |
CN100487698C (zh) * | 2006-04-17 | 2009-05-13 | 中国科学院计算技术研究所 | 计算滑动窗口下数据流最大值和最小值的方法和系统 |
CN101706825B (zh) * | 2009-12-10 | 2011-04-20 | 华中科技大学 | 一种基于文件内容类型的重复数据删除方法 |
US8364652B2 (en) * | 2010-09-30 | 2013-01-29 | Commvault Systems, Inc. | Content aligned block-based deduplication |
CN102214210B (zh) * | 2011-05-16 | 2013-03-13 | 华为数字技术(成都)有限公司 | 重复数据处理方法、装置和系统 |
-
2012
- 2012-12-13 WO PCT/CN2012/086538 patent/WO2014089802A1/zh active Application Filing
- 2012-12-13 CN CN201280002719.8A patent/CN104012055B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409630A (zh) * | 2007-10-11 | 2009-04-15 | 北京大学 | 一种流媒体数据发送接收方法、装置及系统 |
US20090196414A1 (en) * | 2008-01-31 | 2009-08-06 | Hemant Mittal | Online data conversion technique |
CN101931495A (zh) * | 2009-06-18 | 2010-12-29 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN101841691A (zh) * | 2010-03-04 | 2010-09-22 | 中国科学院计算技术研究所 | 一种流媒体数据交换方法与装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572872A (zh) * | 2014-12-19 | 2015-04-29 | 华中科技大学 | 一种基于极值的数据去重分块方法 |
CN112115108A (zh) * | 2020-09-11 | 2020-12-22 | 哈尔滨工业大学(威海) | 一种车辆物联网云存储系统重复数据删除方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104012055B (zh) | 2017-04-12 |
CN104012055A (zh) | 2014-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9514209B2 (en) | Data processing method and data processing device | |
US10256978B2 (en) | Content-based encryption keys | |
USRE48725E1 (en) | Methods for accessing data in a compressed file system and devices thereof | |
US20170038978A1 (en) | Delta Compression Engine for Similarity Based Data Deduplication | |
US7443321B1 (en) | Compression of stream data using a hierarchically-indexed database | |
WO2014089802A1 (zh) | 一种数据处理方法及装置 | |
US10459642B2 (en) | Method and device for data replication | |
US20050210151A1 (en) | Data compression | |
US9083708B2 (en) | Asymmetric end host redundancy elimination for networks | |
JP6340668B2 (ja) | ストリーム認識およびフィルタリング | |
US10339124B2 (en) | Data fingerprint strengthening | |
WO2021237467A1 (zh) | 文件上传方法、文件下载方法和文件管理装置 | |
WO2011091581A1 (zh) | 关键字存储、查找的方法及装置 | |
WO2014067063A1 (zh) | 重复数据检索方法及设备 | |
US11797488B2 (en) | Methods for managing storage in a distributed de-duplication system and devices thereof | |
WO2013075668A1 (zh) | 重复数据删除方法和装置 | |
WO2023165272A1 (zh) | 数据存储及查询 | |
CN104768079A (zh) | 多媒体资源分发方法、装置及系统 | |
US11436088B2 (en) | Methods for managing snapshots in a distributed de-duplication system and devices thereof | |
JP2023529948A (ja) | データの圧縮と暗号化の為のシステム及び方法 | |
JP2012164130A (ja) | データ分割プログラム | |
CN118210770A (zh) | 增量数据同步方法、装置、计算机设备和存储介质 | |
Nam et al. | An inter-data encoding technique that exploits synchronized data for network applications | |
Ge et al. | Research of password recovery method for RAR based on parallel random search | |
JP6257221B2 (ja) | 通信装置及びデータ転送制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 12889781 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 12889781 Country of ref document: EP Kind code of ref document: A1 |