IP Library Granted Patent US 8,209,303
Granted Patent B2
US 8,209,303 · App. 12/511,624 · Granted Jun 26, 2012

System and method for implementing a reliable persistent random access compressed data stream

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 8,209,303
App. No.
12/511,624
Granted
Jun 26, 2012
Kind
B2
Abstract

System and method for implementing a reliable persistent random access compressed data stream is described. In one embodiment, the system comprises a computer-implemented journaled file system that includes a first file for storing a series of independently compressed blocks of a data stream; a second file for storing a series of indexes corresponding to the compressed blocks, wherein each one of the indexes comprises a byte offset into the first file of the corresponding compressed block; and a third file for storing a chunk of data from the data stream before it is compressed and written to the first file. The system further comprises a writer module for writing uncompressed data to the third file and writing indexes to the second file and a compressor module for compressing a chunk of data from the third file and writing it to the end of the first file.

Claims (49)

1. A system for implementing a reliable persistent randomly accessible compressed data stream, the system comprising:

a computer-implemented journaled file system comprising:

a first file for storing a series of independently compressed blocks of a data stream;

a second file for storing a series of indexes corresponding to the compressed blocks, wherein each one of the indexes comprises a byte offset into the first file of the corresponding compressed block; and

a third file for storing a chunk of data from the data stream before it is compressed and written to the first file;

a writer module for writing a first chunk of data from the data stream before it is compressed to the third file and writing a first index to the second file, and for writing a second chunk of data from the data stream before it is compressed to the third file and writing a second index to the second file; and

a compressor module for compressing the first chunk of data from the third file and writing it to the first file, and for compressing the second chunk of data from the third file and writing it to the first file,

wherein each of the indexes comprises an offset into the first file of the corresponding block.

2. The system of claim 1 wherein each of the indexes is an unsigned integer.

3. The system of claim 1 further comprising:

a reader module for reading a block of data from a location in the first file; and

a decompressor module for decompressing the read block of data for presentation to a user.

4. The system of claim 3 wherein the reader module determines a block index and offset for the location using the second file.

5. The system of claim 1 wherein the third file has associated therewith a zero padded hexadecimal number corresponding to a block number associated with the data chunk being staged therein.

6. The system of claim 1 wherein the journaled file system supports ordered journaling and ordered write guarantees.

7. A method for implementing a reliable persistent randomly accessible compressed data stream, the method comprising:

creating an initially empty STAGE file, BLOCKS file, and INDEX file;

writing a first chunk of data from a data stream to the STAGE file before the first chunk of data is compressed and written to the BLOCKS file;

independently compressing the first chunk of data written to the STAGE file and writing it as a compressed first block to the BLOCKS file;

writing a first index corresponding to the compressed first block to the INDEX file;

writing a second chunk of data from the data stream to the STAGE file before the second chunk of data is compressed and written to the BLOCKS file;

independently compressing the second chunk of data written to the STAGE file and writing it as a compressed second block to the BLOCKS file; and

writing a second index corresponding to the compressed second block to the INDEX file,

wherein each of the indexes comprises a byte offset into the BLOCKS file of the corresponding compressed block.

8. The method of claim 7 wherein each of the indexes is an unsigned integer.

9. The method of claim 7 further comprising:

reading a block of data from a location in the BLOCKS file; and

decompressing the read block of data for presentation to a user.

10. The method of claim 9 wherein reading includes determining a block index and offset for the location using the INDEX file.

11. The method of claim 7 wherein the BLOCKS file contains a number of blocks of data,

wherein the INDEX file contains a number of indexes,

wherein the number of blocks of data and the number of indexes are the same.

12. The method of claim 7 wherein the STAGE file has associated therewith a zero padded hexadecimal number corresponding to a block number associated with the data chunk being staged therein.

13. A method for implementing a reliable persistent randomly accessible compressed data stream, the method comprising:

accumulating first data from a data stream in a STAGE file;

responsive to accumulation of a first predetermined amount of first data in the STAGE file, compressing the accumulated first data into a first block of data;

writing the compressed first block of data to a BLOCKS file at a first offset;

writing a first index indicating the first offset of the compressed first block to an INDEX file;

after writing the compressed first block of data and the first index, accumulating second data from the data stream in the STAGE file;

responsive to accumulation of a second predetermined amount of second data in the STAGE file, compressing the accumulated second data into a second block of data;

writing the compressed second block of data to the BLOCKS file at a second offset;

writing a second index indicating the second offset of the compressed second block to the INDEX file.

14. The method of claim 13 wherein the second offset is a next available location in the BLOCKS file after the compressed first block of data.

15. The method of claim 13 further comprising, responsive to a request to read a block of data from a location in the BLOCKS file, determining a block index and offset for the location using the INDEX file.

16. The method of claim 13 wherein each of the indexes is an unsigned integer.

17. The method of claim 13 wherein the BLOCKS file contains blocks of data and wherein the INDEX file contains indexes corresponding in order to the blocks, such that each index comprises an offset into the BLOCKS file of the corresponding block.

18. The method of claim 13 wherein the STAGE file has associated therewith a zero padded hexadecimal number corresponding to a block number associated with the data accumulating therein.

19. The method of claim 13 wherein the STAGE file is recycled.

20. The method of claim 13 wherein the first predetermined amount and the second predetermined amount are the same.

Assignments (16)
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
CHANGE OF NAME Recorded Sep 13, 2016
From: NOVELL, INC.
To: MICRO FOCUS SOFTWARE INC.
Reel/Frame 040020/0703 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0316 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034469/0057 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0216 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034470/0680 →
GRANT OF PATENT SECURITY INTEREST FIRST LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0216 →
GRANT OF PATENT SECURITY INTEREST SECOND LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0316 →
RELEASE OF SECURITY IN PATENTS SECOND LIEN (RELEASES RF 026275/0018 AND 027290/0983) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0154 →
RELEASE OF SECURITY INTEREST IN PATENTS FIRST LIEN (RELEASES RF 026270/0001 AND 027289/0727) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0077 →
GRANT OF PATENT SECURITY INTEREST (SECOND LIEN) Recorded May 13, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026275/0018 →
GRANT OF PATENT SECURITY INTEREST Recorded May 12, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2009
From: VELLA, SHON
To: NOVELL, INC.
Reel/Frame 023023/0176 →