IP Library Granted Patent US 9,367,463
Granted Patent B2
US 9,367,463 · App. 13/827,627 · Granted Jun 14, 2016

System and method utilizing a shared cache to provide zero copy memory mapped database

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,367,463
App. No.
13/827,627
Granted
Jun 14, 2016
Kind
B2
Abstract

Methods and systems for providing a plurality of applications with concurrent access to data are disclosed. One such method includes identifying attributes of an expected data set to be accessed concurrently by the applications, initializing a shared cache with a column data store configured to store the expected data set in columns and creating a memory map for accessing a physical memory location in the shared cache. The method may also include mapping the applications' data access requests to the shared cache with the memory map. Only one instance of the expected data set is stored in memory, so each application is not required to create additional instances of the expected data set in the application's memory address space. Therefore, larger expected data sets may be entirely stored in memory without limiting the number of applications running concurrently.

Claims (89)

1. A method for providing a plurality of applications with concurrent access to an expected data set from a database repository, the method comprising:

receiving a list of models to include in the expected data set for multiple applications to analyze concurrently, the models including a combination of data attributes from the database repository, wherein the expected data set includes different types of models and different types of models include different data attributes;

identifying in the database repository, a portion of the database repository comprising a plurality of data attributes of the expected data set to be accessed concurrently by the plurality of applications;

allocating a memory space for a shared cache, wherein the shared cache comprises a column data store configured to store data for each of the plurality of attributes of the expected data set in columns;

retrieving the expected data set from a database;

populating the shared cache with the expected data set; and

storing memory address locations corresponding to the columns of the column data store of the shared cache for access by the plurality of applications, wherein each application generates a memory map which maps memory locations in a virtual address space of the respective application to the stored memory address locations.

2. The method of claim 1 , wherein each of the plurality of applications accesses the data set by:

requesting data from one or more of the memory locations in the virtual address space allocated to the application;

mapping memory locations in the virtual address space to corresponding memory address locations of the shared cache, via the memory map; and

accessing the requested data from the mapped memory locations in the shared cache.

3. The method of claim 1 , wherein storing the data of each of the plurality of attributes of the expected data set in columns, comprises:

dividing one or more data records retrieved from the database into a plurality of attribute values;

identifying a contiguous memory location in the shared cache for each attribute value; and

storing each attribute value in one of the identified contiguous memory locations.

4. The method of claim 1 , wherein a plurality of object-oriented representations of the expected data set are provided to the plurality of applications by:

initializing a plurality of objects with data access methods;

storing the memory address locations corresponding to the columns of the column data store of the shared cache in the objects; and

providing the plurality of objects for access by the plurality of applications.

5. The method of claim 4 , wherein at least one of the plurality of applications access the data set by:

calling a data access method of one of the objects; and

receiving the requested data from the data access method of the object.

6. The method of claim 1 , wherein the shared cache is configured to provide read only access to the plurality of applications.

7. The method of claim 1 , wherein the shared cache is updated by:

identifying a plurality of attributes of an updated expected data set;

re-allocating the memory space for the shared cache;

retrieving an updated expected data set from the database;

populating the shared cache with the updated expected data set; and

storing updated memory address locations corresponding to the columns of the column data store in the shared cache.

8. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform an operation for providing a plurality of applications with concurrent access to an expected data set from a database repository, the operation comprising:

receiving a list of models to include in the expected data set for multiple applications to analyze concurrently, the models including a combination of data attributes from the database repository, wherein the expected data set includes different types of models and different types of models include different data attributes;

identifying in the database repository, a portion of the database repository comprising a plurality of data attributes of the expected data set to be accessed concurrently by the plurality of applications;

allocating a memory space for a shared cache, wherein the shared cache comprises a column data store configured to store data for each of the plurality of attributes of the expected data set in columns;

retrieving the expected data set from a database;

populating the shared cache with the expected data set; and

storing memory address locations corresponding to the columns of the column data store of the shared cache for access by the plurality of applications, wherein each application generates a memory map which maps memory locations in a virtual address space of the respective application to the stored memory address locations.

9. The non-transitory computer-readable storage medium of claim 8 , wherein each of the plurality of applications accesses the data set by:

requesting data from one or more of the memory locations in the virtual address space allocated to the application;

mapping memory locations in the virtual address space to corresponding memory address locations of the shared cache, via the memory map; and

accessing the requested data from the mapped memory locations in the shared cache.

10. The non-transitory computer-readable storage medium of claim 8 , wherein storing the data of each of the plurality of attributes of the expected data set in columns, comprises:

dividing one or more data records retrieved from the database into a plurality of attribute values;

identifying a contiguous memory location in the shared cache for each attribute value; and

storing each attribute value in one of the identified contiguous memory locations.

11. The non-transitory computer-readable storage medium of claim 8 , wherein a plurality of object-oriented representations of the expected data set are provided to the plurality of applications by:

initializing a plurality of objects with data access methods;

storing the memory address locations corresponding to the columns of the column data store of the shared cache in the objects; and

providing the plurality of objects for access by the plurality of applications.

12. The non-transitory computer-readable storage medium of claim 11 , wherein at least one of the plurality of applications access the data set by:

calling a data access method of one of the objects; and

receiving the requested data from the data access method of the object.

13. The non-transitory computer-readable storage medium of claim 8 , wherein the shared cache is configured to provide read only access to the plurality of applications.

14. The non-transitory computer-readable storage medium of claim 8 , wherein the shared cache is updated by:

identifying a plurality of attributes of an updated expected data set;

re-allocating the memory space for the shared cache;

retrieving an updated expected data set from the database;

populating the shared cache with the updated expected data set; and

storing updated memory address locations corresponding to the columns of the column data store in the shared cache.

15. A computer system, comprising:

a memory storing one or more programs; and

a processor configured to execute the one or more programs to perform an operation for providing a plurality of applications with concurrent access to data, the operation comprising:

receiving a list of models to include in the expected data set for multiple applications to analyze concurrently, the models including a combination of data attributes from the database repository, wherein the expected data set includes different types of models and different types of models include different data attributes;

identifying in the database repository, a portion of the database repository comprising a plurality of data attributes of the expected data set to be accessed concurrently by the plurality of applications;

allocating a memory space for a shared cache, wherein the shared cache comprises a column data store configured to store data for each of the plurality of attributes of the expected data set in columns;

retrieving the expected data set from a database;

populating the shared cache with the expected data set; and

storing memory address locations corresponding to the columns of the column data store of the shared cache for access by the plurality of applications, wherein each application generates a memory map which maps memory locations in a virtual address space of the respective application to the stored memory address locations.

16. The system of claim 15 , wherein each of the plurality of applications accesses the data set by:

requesting data from one or more of the memory locations in the virtual address space allocated to the application;

mapping memory locations in the virtual address space to corresponding memory address locations of the shared cache, via the memory map; and

accessing the requested data from the mapped memory locations in the shared cache.

17. The system of claim 15 , wherein storing the data of each of the plurality of attributes of the expected data set in columns, comprises:

dividing one or more data records retrieved from the database into a plurality of attribute values;

identifying a contiguous memory location in the shared cache for each attribute value; and

storing each attribute value in one of the identified contiguous memory locations.

18. The system of claim 15 , wherein a plurality of object-oriented representations of the expected data set are provided to the plurality of applications by:

initializing a plurality of objects with data access methods;

storing the memory address locations corresponding to the columns of the column data store of the shared cache in the objects; and

providing the plurality of objects for access by the plurality of applications.

19. The system of claim 18 , wherein at least one of the plurality of applications access the data set by:

calling a data access method of one of the objects; and

receiving the requested data from the data access method of the object.

20. The system of claim 15 , wherein the shared cache is configured to provide read only access to the plurality of applications.

21. The system of claim 15 , wherein the shared cache is updated by:

identifying a plurality of attributes of an updated expected data set;

re-allocating the memory space for the shared cache;

retrieving an updated expected data set from the database;

populating the shared cache with the updated expected data set; and

storing updated memory address locations corresponding to the columns of the column data store in the shared cache.

Assignments (8)
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2013
From: BISWAL, PUNYA; LIU, BEYANG; MARINELLI, EUGENE; GHAMSARI, NIMA
To: PALANTIR TECHNOLOGIES, INC.
Reel/Frame 030684/0722 →