IP Library Granted Patent US 7,504,969
Granted Patent B2
US 7,504,969 · App. 11/484,881 · Granted Mar 17, 2009

Locality-based stream segmentation for data deduplication

Assignee: Data Domain, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,504,969
App. No.
11/484,881
Filed
Jul 11, 2006
Granted
Mar 17, 2009
Kind
B2
Art Unit
2819
USPC
341/51
Abstract

Selecting a segment boundary comprises determining a segmentation window is determined and computing a plurality of values associated with candidate boundaries within the segmentation window. Selecting a segment boundary further comprises selecting one of the candidate boundaries based at least in part on a comparison between two or more of the computed values and determining a boundary within the segmentation window.

Claims (44)

1. A method for selecting a segment boundary comprising:

determining a segmentation window;

computing a plurality of values associated with candidate boundaries within the segmentation window;

selecting one of the candidate boundaries based at least in part on a comparison between two or more of the computed values; and

determining a boundary within the segmentation window.

2. A method as in claim 1 , wherein the segmentation window is within a data stream.

3. A method as in claim 1 , wherein the segmentation window is within a data block.

4. A method as in claim 1 , wherein determining the segmentation window includes determining a location corresponding to a minimum segment length.

5. A method as in claim 1 , wherein determining the segmentation window includes determining a location corresponding to a maximum segment length.

6. A method as in claim 1 , wherein computing a plurality of values associated with candidate boundaries within the segmentation window includes determining a plurality of windows where each window is associated with a location within the segmentation window.

7. A method as in claim 1 , wherein computing a plurality of values associated with candidate boundaries within the segmentation window includes determining a plurality of windows where each window is associated with a candidate boundary within the segmentation window.

8. A method as in claim 1 , wherein computing each value includes determining a value of a function based at least in part on one or more data values within one of a plurality of windows.

9. A method as in claim 1 , wherein computing each value includes determining a value of a function, wherein the function comprises one or more of the following: a hash function, a hash function combined with a masking function, SHA-1 (Secure Hash Algorithm 1), SHA-256, SHA-384, SHA-512, MD5 (Message-Digest algorithm 5), RIPEMD-160 (RACE Integrity Primitives Evaluation Message Digest 160-bit version), a Rabin hash, a fingerprint, a CRC (Cyclic Redundancy Check), a sum, or an xor.

10. A method as in claim 1 , wherein selecting a candidate boundary comprises selecting a location within the segmentation window with an associated value that is one of the following: an extrema value compared to the plurality of values, a minimum value compared to the plurality of values, a maximum value compared to the plurality of values, a value with the longest run of 1 bits in its value compared to the plurality of values, or a value with the most 1 bits in its value compared to the plurality of values.

11. A method as in claim 1 , wherein the segment boundary location is determined such that a segment is defined.

12. A method as in claim 11 , wherein the segment represents a segment in a sequence of segments.

13. A method as in claim 11 , wherein the segment enables reconstruction of data values of a segment in a sequence of segments.

14. A method as in claim 11 , wherein the segment enables identification of a difference between a first segment and a second segment.

15. A method as in claim 11 , wherein the segment enables identification of a similarity between a first segment and a second segment.

16. A method as in claim 11 , wherein the segment enables elimination of duplicate segments.

17. A method as in claim 11 , wherein the segment enables one of the following: a storage system, a backup storage system, or a transmission system.

18. A method as in claim 1 , further comprising storing a computed value in an ordered stack of values, wherein the ordered stack of values includes ordered values computed since a last extrema value.

19. A method as in claim 18 , wherein storing the value in the ordered stack of values includes comparing the computed value with values from the ordered stack of values.

20. A method as in claim 18 , wherein storing the value in the ordered stack of values includes removing a value from the ordered stack of values.

21. A method as in claim 18 , further comprising determining a boundary location based at least in part on the ordered stack of values.

22. A method as in claim 18 , further comprising determining a boundary location based at least in part on the ordered stack of values, wherein the boundary location is offset an offset distance from a location associated with a value in the ordered stack of values.

23. A method as in claim 18 , wherein the last extrema value comprises a last minimum value.

24. A method as in claim 18 , wherein the last extrema value comprises a last minimum value and wherein placing the value in the ordered stack of values includes removing a value from the ordered stack of values in the event that the computed value is less than or equal to the value from the ordered stack of values.

25. A method as in claim 18 , wherein the last extrema value comprises a last minimum value and wherein a boundary location is determined based on the lowest value in the ordered stack of values associated with a position within a segmentation window.

26. A method as in claim 18 , wherein the last extrema value comprises a last maximum value.

27. A method as in claim 18 , wherein the last extrema value comprises a last maximum value and wherein placing the value in the ordered stack of values includes removing a value from the ordered stack of values in the event that the computed value is greater than or equal to the value from the ordered stack of values.

28. A method as in claim 18 , wherein the last extrema value comprises a last maximum value and wherein a boundary location is determined based on the highest value in the ordered stack of values associated with a position within a segmentation window.

29. A system for selecting a segment boundary comprising:

a processor; and

a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to:

determine a segmentation window;

compute a plurality of values associated with candidate boundaries within the segmentation window;

select one of the candidate boundaries based at least in part on a comparison between two or more of the computed values; and

determine a boundary within the segmentation window.

30. A computer program product for selecting a segment boundary, the computer program product being embodied in a computer readable medium and comprising computer instructions for:

determining a segmentation window;

computing a plurality of values associated with candidate boundaries within the segmentation window;

selecting one of the candidate boundaries based at least in part on a comparison between two or more of the computed values; and

determining a boundary within the segmentation window.

Assignments (13)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2010
From: DATA DOMAIN HOLDING, INC.
To: EMC CORPORATION
Reel/Frame 024045/0389 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 2, 2010
From: DATA DOMAIN LLC
To: DATA DOMAIN HOLDING, INC.
Reel/Frame 024013/0148 →
CONVERSION Recorded Feb 25, 2010
From: DATA DOMAIN, INC.
To: DATA DOMAIN LLC
Reel/Frame 023990/0743 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2006
From: PATTERSON, R. HUGO; MAHESHWARI, UMESH
To: DATA DOMAIN, INC.
Reel/Frame 018395/0871 →
Continuity (1)
Related Publication 20080013830A1 · Jan 17, 2008