IP Library Granted Patent US 7,098,815
Granted Patent B1
US 7,098,815 · App. 11/089,844 · Granted Aug 29, 2006

Method and apparatus for efficient compression

Assignee: Orbital Data Corporation
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,098,815
App. No.
11/089,844
Granted
Aug 29, 2006
Kind
B1
Abstract

A compression method and apparatus identifying candidates for compression by selectively fingerprinting shingles or overlapping subsets of an input dataset and creating a set of characteristic input fingerprints based on fingerprint value. In some cases, the characteristic fingerprints are selected based on the relative value of the fingerprints with respect to other fingerprints in the same cluster. Potential matches may be identified and confirmed by comparing the characteristic input fingerprints with fingerprints associated with a history. Advantageously, some examples according to the current invention may be applied to input data such as: data, files, bit streams, byte streams, packet streams and previously encoded, compressed and/or encrypted data. In some cases, the number of fingerprints selected per cluster, the cluster size, the shingle size or shingle configuration, the size or configuration of the overlap between successive shingles, and the configuration for adding entries to a history, may be adaptively configurable.

Claims (38)

1. A method for compressing an input dataset comprising the steps of:

selectively fingerprinting the input dataset, the step of selectively fingerprinting comprising the steps of:

fingerprinting shingles of the input dataset wherein shingles comprise overlapping subsets of the input dataset; and,

selecting at least one characteristic input fingerprint per cluster based on the value of the fingerprint, thereby creating a set of characteristic input fingerprints;

identifying a candidate subset of the input dataset that is a match with a target subset of data in a second selectively fingerprinted dataset by searching for fingerprint matches between one or more input fingerprints from the set of characteristic input fingerprints and fingerprints associated with the second selectively fingerprinted dataset; and,

performing a compression operation on the input dataset.

2. The method of claim 1 wherein the step of identifying a candidate subset of the input dataset that is a match further comprises the step of:

identifying fingerprint matches that correspond to exact matches between the candidate subset and the target subset; and,

wherein:

the step of performing a compression operation on the input dataset based on matches comprises the step of performing a compression operation on the input dataset based on exact matches.

3. The method of claim 1 wherein the step of performing a compression operation on the input dataset comprises the step of:

performing a compression operation on the input dataset based on fingerprint matches.

4. The method of claim 1 wherein the step of performing a compression operation on the input dataset comprises the step of:

performing a compression operation on the input dataset based on matches between a subset of the input dataset and a subset of data in a second selectively fingerprinted dataset.

5. The method of claim 1 further comprising the step of extending the size of a match by comparing input dataset elements outside of the candidate subset to dataset elements outside of the target subset in the second selectively fingerprinted dataset.

6. The method of claim 1 further comprising the step of extending the size of a match by comparing fingerprints adjacent to the fingerprint matches.

7. The method of claim 1 wherein the cluster size associated with the step of selectively fingerprinting the input dataset is consistent across the input dataset.

8. The method of claim 1 wherein the cluster size associated with the step of selectively fingerprinting the input dataset changes across the input dataset.

9. The method of claim 1 wherein the second selectively fingerprinted dataset was generated according to the same cluster size as the cluster size associated with the step of selectively fingerprinting the input dataset.

10. The method of claim 1 wherein the second selectively fingerprinted dataset was generated according to a cluster size different from the cluster size associated with the step of selectively fingerprinting the input dataset.

11. The method of claim 1 wherein the step of selecting at least one representative input fingerprint from each cluster comprises the step of:

selecting at least one characteristic input fingerprint per cluster based on the relative value of the fingerprint.

12. The method of claim 1 wherein the step of selecting at least one representative input fingerprint from each cluster comprises selecting the fingerprint with the largest value.

13. The method of claim 1 wherein the step of selecting at least one representative input fingerprint from each cluster comprises selecting the fingerprint with the smallest value.

14. The method of claim 1 wherein the step of selectively fingerprinting comprises creating fingerprints using a hashing function and wherein the fingerprints comprise hash values associated with a hash table.

15. The method of claim 1 wherein the step of selectively fingerprinting comprises creating fingerprints wherein the fingerprint comprises an index into a structure wherein the structure is selected from the list of: associative arrays, tables, trees and databases.

16. The method of claim 1 further comprising the step of adding one or more representative input fingerprints to the second selectively fingerprinted dataset, thereby creating a history and enabling improved compression for subsequent operations.

17. The method of claim 1 wherein a selective fingerprinting parameter may be adaptively configured wherein the selective fingerprinting parameter is selected from the list of: the size of a shingle, the configuration of a shingle, the size of the overlap between successive shingles, the configuration of the overlap between successive shingles, the number of fingerprints selected per cluster and the size of the cluster.

18. A system for compressing an input dataset comprising:

a matcher for selectively fingerprinting the input dataset by:

fingerprinting shingles of the input dataset wherein shingles comprise overlapping subsets of the input dataset;

selecting at least one characteristic input fingerprint per cluster based on the value of the fingerprint, thereby creating a set of characteristic input fingerprints; and,

identifying a candidate subset of the input dataset that is a match with a target subset of data in a second selectively fingerprinted dataset by searching for fingerprint matches between one or more input fingerprints from the set of characteristic input fingerprints and fingerprints associated with the second selectively fingerprinted dataset; and,

a compressor for performing a compression operations on the input dataset, thereby creating a compressed input dataset.

19. The system of claim 18 wherein the matcher selects characteristic input fingerprints per cluster based on the relative value of the fingerprint.

20. The system of claim 18 wherein the system is coupled to an input for receiving an input dataset comprising network traffic.

21. The system of claim 18 wherein the system is coupled to an output for transmitting a compressed input dataset comprising network traffic.

22. The system of claim 18 wherein the matcher is adaptively configurable.

Assignments (9)
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Dec 15, 2011
From: ORBITAL DATA CORPORATION
To: CITRIX SYSTEMS, INC.
Reel/Frame 027392/0357 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 25, 2005
From: SAMUELS, ALLEN; SUTTER, PAUL; PLAMONDON, ROBERT
To: ORBITAL DATA CORPORATION
Reel/Frame 016421/0068 →