IP Library Granted Patent US 9,239,855
Granted Patent B2
US 9,239,855 · App. 13/779,275 · Granted Jan 19, 2016

Method and system of retrieving data in a data file

Inventors: Rahul C. Thakkar (Sterling, VA); Scott L. Pakula (Chantilly, VA)
Assignee: PIXIA CORP.
G06F17/30312G06F17/30233H04L29/08117H04L65/4084H04L65/602H04L65/607
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 9,239,855
App. No.
13/779,275
Granted
Jan 19, 2016
Kind
B2
Abstract

A method and system for retrieving at least a portion of a first data file are provided. The method includes receiving a request for the at least a portion of the first data file, the request including a start of the at least a portion and a size of the at least a portion; computing a data offset that is aligned to an integer multiple of a block size of the storage device and nearest to the start of the at least a portion; computing a byte-range that is an integer multiple of the block size of the storage device; reading data within the byte-range; and transmitting the at least a portion starting at an offset relative to the data offset that is aligned to an integer multiple of the block size of the storage device.

Claims (42)

1. A method for retrieving at least a portion of a first data file, the method being implemented by a computer system that includes one or more processors configured to execute computer program modules, the first data file being stored in a storage device in communication with the computer system, the method comprising:

receiving, by the computer system from a client computer system in communication with the computer system, a request for the at least a portion of the first data file, the request including a start of the at least a portion of the first data file and a size of the at least a portion of the first data file;

computing, by the computer system, a data offset that is aligned to an integer multiple of a block size of the storage device and nearest to the start of the at least a portion of the first data file, wherein computing the data offset comprises computing a data offset O′ using the start O of the at least a portion of the first data file and using an integer multiple of the block size Bsz of the storage device using the following equation O′=O−(O % Bsz), where the operator % is the modulo operator;

computing, by the computer system, a byte-range that is an integer multiple of the block size of the storage device, the byte-range being greater than and encompasses the size of the at least a portion of the first data file;

reading, by the computer system, data within the byte-range and transferring the data within the byte-range starting at the data offset into memory of the computer system; and

transmitting, by the computer system to the client computer system, the at least a portion of the first data file from the memory starting at an offset relative to the data offset that is aligned to an integer multiple of the block size of the storage device.

2. The method according to claim 1 , wherein receiving the request includes receiving a HTTP GET request.

3. The method according to claim 1 , wherein the reading comprises reading using one or more Unbuffered Aligned Direct Input-Output (IO) read operations.

4. The method according to claim 1 , wherein computing the byte-range comprises computing a byte-range S′ using an integer multiple of the block size Bsz of the storage device, the data offset O′ and the start O of the at least a portion of first data file using the following equation S′=(|O−O′|+S)+(Bsz−((|O−O′|+S) % Bsz)) % Bsz, where the operator % is the modulo operator and where S is the size of the at least a portion of the first data file.

5. The method according to claim 4 , wherein reading the data within the byte-range comprises reading data within the size S′ starting at the data offset O′ and transferring into the memory of the computer system.

6. The method according to claim 5 , wherein transmitting the at least a portion of the first data file from the memory comprises transmitting the at least a portion of the first data file from the memory starting at offset |O−O′|.

7. A method for retrieving at least a portion of a second derived virtual data file, the at least a portion of the second derived virtual data file being derived from at least a portion of a first data file based on a first data file virtualization policy, the method being implemented by a computer system, the first data file being stored in a storage device in communication with the computer system, the method comprising:

receiving, by the computer system from a client computer system in communication with the computer system, a request for the at least a portion of the second derived virtual data file, the request including a virtual offset of the at least a portion of the second derived virtual data file and a size of the at least a portion of the second derived virtual data file;

computing, by the computer system, a data offset and a size of at least a portion of the first data file to derive the requested at least a portion of the second derived virtual data file, wherein computing the data offset comprises computing a data offset O′ using the start O of the at least a portion of the first data file and using an integer multiple of a block size Bsz of the storage device using the following equation O′=O−(O % Bsz), where the operator % is the modulo operator;

reading, by the computer system, data from the first data file based on the computed data offset and size of the at least a portion of the first data file;

generating, by the computer system, the requested at least a portion of the second derived data file using information in the first data file virtualization policy and the read data from the first data file; and

transmitting, by the computer system to the client computer system, the requested at least a portion of the second derived virtual data file.

8. The method according to claim 7 , wherein receiving the request includes receiving a HTTP GET request.

9. The method according to claim 7 , further comprising loading, by the computer system, the first data file virtualization policy.

10. The method according to claim 7 , further comprising validating, by the computer system, the request for the at least a portion of the second derived virtual data file.

11. The method according to claim 10 , wherein generating the requested at least a portion of the second derived data file comprises generating partial data from the second derived virtual data file starting from the virtual offset of the at least a portion of the second derived virtual data file.

12. A system for retrieving at least a portion of a first data file stored in a storage device in communication with a computer system, the computer system being configured to:

receive from a client computer system in communication with the computer system, a request for the at least a portion of the first data file, the request including a start of the at least a portion of the first data file and a size of the at least a portion of the first data file;

compute a data offset that is aligned to an integer multiple of a block size of the storage device and nearest to the start of the at least a portion of the first data file, wherein the data offset O′ is computed using the start offset O of the at least a portion of the first data file and using an integer multiple of the block size Bsz of the storage device using the following equation O′=O−(O % Bsz), where the operator % is the modulo operator;

compute a byte-range that is an integer multiple of the block size of the storage device, the byte-range being greater than and encompasses the size of the at least a portion of the first data file;

read data within the byte-range and transferring the data within the byte-range starting at the data offset into memory of the computer system; and

transmit to a client computer system the at least a portion of the first data file from the memory starting at an offset relative to the data offset that is aligned to an integer multiple of the block size of the storage device.

13. The system according to claim 12 , wherein the request includes a HTTP GET request.

14. The system according to claim 12 , wherein the computer system is further configured to read data using one or more Unbuffered Aligned Direct Input-Output (IO) read operations.

15. The system according to claim 12 , wherein the computer system is configured to compute a byte-range S′ using an integer multiple of the block size Bsz of the storage device, the data offset O′ and the start offset O of the at least a portion of first data file using the following equation S′=(|O−O′|+S)+(Bsz−((|O−O′|+S) % Bsz)) % Bsz, where the operator % is the modulo operator and where S is the size of the at least a portion of the first data file.

16. The system according to claim 15 , wherein the computer system is further configured to read the data within the byte-range comprises reading data within the size S′ starting at the data offset O′ and transfer into the memory of the computer system.

17. The system according to claim 16 , wherein the computer system is further configured to transmit the at least a portion of the first data file from the memory starting at offset |O−O′|.

18. A system for retrieving at least a portion of a second derived data file, the at least a portion of the second derived virtual data file being derived from at least a portion of a first data file based on a first data file virtualization policy, the first data file being stored in a storage device in communication with a computer system, the computer system being configured to:

receive from a client computer system in communication with the computer system, a request for the at least a portion of the second derived virtual data file, the request including a virtual offset of the at least a portion of the second derived virtual data file and a size of the at least a portion of the second derived virtual data file;

compute a data offset and a size of at least a portion of the first data file to derive the requested at least a portion of the second derived virtual data file, wherein the data offset O′ is computed using the start offset O of the at least a portion of the first data file and using an integer multiple of a block size Bsz of the storage device using the following equation O′=O−(O % Bsz), where the operator % is the modulo operator;

read data from the first data file based on the computed data offset and size of the at least a portion of the first data file;

generate the requested at least a portion of the second derived data file using information in the first data file virtualization policy and the read data from the first data file; and

transmit to the client computer system the requested at least a portion of the second derived virtual data file.

19. The system according to claim 18 , wherein the request includes a HTTP GET request.

20. The system according to claim 18 , wherein the computer system is further configured to load the first data file virtualization policy.

21. The system according to claim 20 , wherein the computer system is further configured to validate the request for the at least a portion of the second derived virtual data file.

22. The system according to claim 21 , wherein the computer system is further configured to generate partial data from the second derived virtual data file starting from the virtual offset of the at least a portion of the second derived virtual data file.

Assignments (12)
SUPERPRIORITY PATENT SECURITY AGREEMENT Recorded Oct 6, 2025
From: CUBIC CORPORATION; CUBIC DEFENSE APPLICATIONS INC.; CUBIC DIGITAL INTELLIGENCE INC.; CUBIC ITS, INC.; CUBIC SECURE COMMUNICATIONS, LLC; CUBIC TOTAL LEARNING PLATFORM, LLC; CUBIC TRANSPORTATION SYSTEMS, INC.; GATR TECHNOLOGIES INC.; NUVOTRONICS INC.
To: BARCLAYS BANK PLC
Reel/Frame 073008/0761 →
RELEASE OF SECURITY INTEREST Recorded Jul 30, 2025
From: ALTER DOMUS (US) LLC
To: CUBIC CORPORATION; CUBIC DEFENSE APPLICATIONS, INC.; CUBIC DIGITAL INTELLIGENCE, INC.
Reel/Frame 072278/0272 →
RELEASE OF SECURITY INTEREST Recorded Jul 30, 2025
From: ALTER DOMUS (US) LLC
To: CUBIC CORPORATION; CUBIC DIGITAL SOLUTIONS LLC; NUVOTRONICS, INC.
Reel/Frame 072281/0176 →
RELEASE OF SECURITY INTEREST AT REEL/FRAME 056393/0281 Recorded Jul 28, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: CUBIC CORPORATION; CUBIC DEFENSE APPLICATIONS, INC.; CUBIC DIGITAL SOLUTIONS LLC (FORMERLY PIXIA CORP.)
Reel/Frame 072282/0124 →
SECURITY INTEREST Recorded May 2, 2025
From: CUBIC DEFENSE APPLICATIONS, INC.; CUBIC DIGITAL INTELLIGENCE, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071161/0299 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2024
From: PIXIA CORP.
To: CUBIC DIGITAL INTELLIGENCE, INC.
Reel/Frame 066816/0198 →
SECOND LIEN SECURITY AGREEMENT Recorded May 26, 2021
From: CUBIC CORPORATION; PIXIA CORP.; NUVOTRONICS, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 056393/0314 →
FIRST LIEN SECURITY AGREEMENT Recorded May 26, 2021
From: CUBIC CORPORATION; PIXIA CORP.; NUVOTRONICS, INC.
To: BARCLAYS BANK PLC
Reel/Frame 056393/0281 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2019
From: SILICON VALLEY BANK
To: PIXIA CORP.
Reel/Frame 049477/0358 →
SECURITY AGREEMENT Recorded Apr 6, 2016
From: PIXIA CORP.
To: SILICON VALLEY BANK
Reel/Frame 038372/0424 →
SECURITY INTEREST Recorded May 14, 2015
From: PIXIA CORP.
To: SILICON VALLEY BANK
Reel/Frame 035644/0524 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 11, 2014
From: THAKKAR, RAHUL C.; PAKULA, SCOTT L.
To: PIXIA CORP.
Reel/Frame 033507/0316 →
Continuity (2)
Provisional Application 61733228 · Dec 4, 2012
Related Publication 20140156802A1 · Jun 5, 2014