IP Library Granted Patent US 8,478,931
Granted Patent B1
US 8,478,931 · App. 13/465,790 · Granted Jul 2, 2013

Using non-volatile memory resources to enable a virtual buffer pool for a database application

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,478,931
App. No.
13/465,790
Granted
Jul 2, 2013
Kind
B1
Abstract

A buffer pool for a database application is maintained in a volatile main memory component. A control portion that corresponds to a block of application data residing on a non-volatile, asymmetric memory component and that includes a reference to a location of the block of application data on the non-volatile, asymmetric memory component is added to the buffer pool maintained in the volatile main memory component. The control portion from the buffer pool maintained in the volatile main memory component that corresponds to the block of application data is accessed and the location of the block of application data on the non-volatile, asymmetric memory component is identified. Based on identifying the location of the block of application data on the non-volatile, asymmetric memory component, the database application is enabled to access the block of application data directly from the non-volatile, asymmetric memory component.

Claims (70)

1. A computer-implemented method of facilitating access to stored data by a database application, the method comprising:

maintaining, in a volatile main memory component, a buffer pool for a database application;

writing a block of application data to a location on a non-volatile, asymmetric memory component;

adding, to the buffer pool maintained in the volatile main memory component, a control portion that corresponds to the block of application data and that includes a reference to the location of the block of application data on the non-volatile, asymmetric memory component;

receiving, from the database application, a request to access the block of application data; and

in response to receiving the request to access the block of application data:

accessing, from the buffer pool maintained in the volatile main memory component, the control portion that corresponds to the block of application data, based on accessing the control portion that corresponds to the block of application data from the buffer pool maintained in the volatile main memory component, identifying the location of the block of application data on the nonvolatile, asymmetric memory component, and

based on identifying the location of the block of application data on the nonvolatile, asymmetric memory component, enabling the database application to access the block of application data directly from the non-volatile, asymmetric memory component, wherein the database application is configured to support migration of application data between the volatile memory component and the nonvolatile memory component and adding the control portion corresponding to the block of application data to the buffer pool maintained in the volatile main memory component includes adding the control portion corresponding to the block of application data to the buffer pool maintained in the volatile main memory component without adding the entire block of application data to the buffer pool maintained in the volatile main memory component.

2. The method of claim 1 wherein: the block of application data includes a header, a body, and a footer; and adding the control portion corresponding to the block of application data to the buffer pool maintained in the volatile main memory component without adding the entire block of application data to the buffer pool maintained in the volatile main memory component includes adding the header of the block of application data to the buffer pool maintained in the volatile main memory component without adding the body of the block of application data to the buffer pool maintained in the volatile main memory component.

3. The method of claim 2 , wherein adding the header of the block of application data to the buffer pool maintained in the volatile main memory component without adding the body of the block of application data to the buffer pool maintained in the volatile main memory component includes adding the footer of the block of application data to the buffer pool maintained in the volatile main memory component without adding the body of the block of application data to the buffer pool maintained in the volatile main memory component.

4. The method of claim 2 wherein:

the block of application data includes a header, a body, and a footer; and

adding the control portion corresponding to the block of application data to the buffer pool maintained in the volatile main memory component without adding the entire block of application data to the buffer pool maintained in the volatile main memory component includes adding the footer of the block of application data to the buffer pool maintained in the volatile main memory component without adding the body of the block of application data to the buffer pool maintained in the volatile main memory component.

5. The method of claim 1 wherein adding the control portion corresponding to the block of application data to the buffer pool maintained in the volatile main memory component includes adding the control portion corresponding to the block of application data to the buffer pool maintained in the volatile main memory component without adding any of the block of application data to the buffer pool maintained in the volatile main memory component.

6. The method of claim 1 wherein:

maintaining the buffer pool in a volatile main memory component includes maintaining the buffer pool in a dynamic random access memory component;

adding a control portion that corresponds to the block of application data to the buffer pool maintained in the volatile main memory component includes adding the control portion to the dynamic random access memory component; and

accessing the control portion that corresponds to the block of application data from the buffer pool maintained in the volatile main memory component includes accessing the control portion that corresponds to the block of application data from the dynamic random access memory component.

7. The method of claim 1 wherein:

writing the block of application data to a location on a non-volatile, asymmetric memory component includes writing the block of application data to a location on a NOR flash memory component; and

enabling the database application to access the block of application data directly from the non-volatile, asymmetric memory component includes enabling the database application to access the block of application data directly from the NOR flash memory component.

8. The method of claim 1 wherein:

writing the block of application data to a location on a non-volatile, asymmetric memory component includes writing the block of application data to a location on a Phase Change Memory component; and

enabling the database application to access the block of application data directly from the non-volatile, asymmetric memory component includes enabling the database application to access the block of application data directly from the Phase Change Memory component.

9. The method of claim 1 wherein enabling the database application to access the block of application data directly from the non-volatile, asymmetric memory component includes enabling the database application to access the block of application data from the non-volatile, asymmetric memory component without first copying the block of application data into the volatile main memory component.

10. The method of claim 1 further comprising:

maintaining an auxiliary data structure that records relationships between multiple blocks of application data stored on the non-volatile, asymmetric main memory component and corresponding control portions in the buffer pool maintained on the volatile main memory component that represent the multiple blocks of application data in the buffer pool;

after enabling the database application to access the block of application data directly from the non-volatile, asymmetric memory component, receiving, from the database application, a request to identify the control portion in the buffer pool that represents the block of application data;

in response to receiving the request to identify the control portion in the buffer pool that represents the block of application data, accessing the auxiliary data structure;

based on accessing the auxiliary data structure, identifying the control portion that represents the block of application data in the buffer pool; and

informing the database application of the control portion that represents the block of application data in the buffer pool.

11. The method of claim 10 wherein the auxiliary data structure is a hash table such that:

maintaining an auxiliary data structure that records relationships between multiple blocks of application data stored on the non-volatile, asymmetric main memory component and corresponding control portions in the buffer pool maintained on the volatile main memory component that represent the multiple blocks of application data in the buffer pool includes maintaining a hash table that records relationships between multiple blocks of application data stored on the non-volatile, asymmetric main memory component and corresponding control portions in the buffer pool maintained on the volatile main memory component that represent the multiple blocks of application data in the buffer pool; and

accessing the auxiliary data structure includes accessing the hash table.

12. The method of claim 10 wherein the auxiliary data structure is a multi-level index structure such that:

maintaining an auxiliary data structure that records relationships between multiple blocks of application data stored on the non-volatile, asymmetric main memory component and corresponding control portions in the buffer pool maintained on the volatile main memory component that represent the multiple blocks of application data in the buffer pool includes maintaining a multi-level index structure that records relationships between multiple blocks of application data stored on the non-volatile, asymmetric main memory component and corresponding control portions in the buffer pool maintained on the volatile main memory component that represent the multiple blocks of application data in the buffer pool; and

accessing the auxiliary data structure includes accessing the multi-level index structure.

13. The method of claim 1 wherein:

identifying the location of the block of application data on the non-volatile, asymmetric memory component includes accessing a pointer to a virtual address in the database application's address space that is mapped to a physical address for the block of application data on the non-volatile, asymmetric memory component; and

enabling the database application to access the block of application data directly from the non-volatile, asymmetric memory component includes passing the pointer to the virtual address to the database application.

14. The method of claim 1 wherein:

multiple, equal-sized blocks of application data are stored on the non-volatile, asymmetric memory component, each of the multiple blocks of application data including no more than a fixed number of bytes;

the block of application data is equal in size to the multiple blocks of application data and includes nor more than the fixed number of bytes; and

enabling the database application to access the block of application data directly from the non-volatile, asymmetric memory component includes enabling the database application to access one or more specific bytes of the block application data directly from the non-volatile, asymmetric memory component without accessing all of the bytes of the block of application data.

15. The method of claim 1 wherein:

adding, to the buffer pool maintained in the volatile main memory component, a control portion that corresponds to the block of application data and that includes a reference to the location of the block of application data on the non-volatile, asymmetric memory component includes adding, to the buffer pool maintained in the volatile main memory component, a control portion that corresponds to the block of application data and that includes a reference to a virtual address of the block of application data; and

identifying the location of the block of application data on the non-volatile, asymmetric memory component includes converting the reference to the virtual address of the block of application data into a reference to a physical address of the block of application data on the non-volatile, asymmetric memory component.

16. The method of claim 1 further comprising:

after enabling the database application to access the block of application data directly from the non-volatile, asymmetric memory component, determining a current measure of occupancy of the buffer pool maintained in the volatile main memory component;

comparing the determined current measure of occupancy of the buffer pool to a predefined value;

based on results of comparing the determined current measure of occupancy of the buffer pool to the predefined value, determining whether to add the block of application data to the buffer pool maintained in the volatile main memory component;

responsive to a determination to add the block of application data to the buffer pool maintained in the volatile main memory component:

adding the block of application data to the buffer pool maintained in the volatile main memory component, and

updating the control portion that corresponds to the block of application data to reflect the addition of the block of application data to the buffer pool maintained in the volatile main memory component.

17. The method of claim 1 wherein:

receiving a request to access the block of application data includes receiving a request from the database application to read data from the block of application data; and

enabling the database application to access the block of application data directly from the non-volatile, asymmetric memory component includes enabling the database application to read data from the block of application data directly from the non-volatile, asymmetric memory component.

18. The method of claim 17 wherein:

the block of application data includes multiple bytes of application data;

receiving a request from the database application to read from the block of application data includes receiving a request from the database application to read less than all of the bytes of the block of application data; and

enabling the database application to read the block of application data directly from the non-volatile, asymmetric memory component includes enabling the database application to read less than all of the bytes of the block of application data directly from the non-volatile, asymmetric memory component.

19. A computer-readable storage medium having embodied thereon a computer program, the computer program including instructions that, when executed by a computer, cause the computer to:

maintain, in a volatile main memory component, a buffer pool for a database application;

write a block of application data to a location on a non-volatile, asymmetric memory component;

add, to the buffer pool maintained in the volatile main memory component, a control portion that corresponds to the block of application data and that includes a reference to the location of the block of application data on the non-volatile, asymmetric memory component;

receive, from the database application, a request to access the block of application data; and

in response to receiving the request to access the block of application data:

access, from the buffer pool maintained in the volatile main memory component, the control portion that corresponds to the block of application data,

based on accessing the control portion that corresponds to the block of application data from the buffer pool maintained in the volatile main memory component, identify the location of the block of application data on the non-volatile, asymmetric memory component, and

based on identifying the location of the block of application data on the non-volatile, asymmetric memory component, enable the database application to access the block of application data directly from the non-volatile, asymmetric memory component, wherein the database application is configured to support migration of application data between the volatile memory component and the nonvolatile memory component and adding the control portion corresponding to the block of application data to the buffer pool maintained in the volatile main memory component includes adding the control portion corresponding to the block of application data to the buffer pool maintained in the volatile main memory component without adding the entire block of application data to the buffer pool maintained in the volatile main memory component.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2020
From: VIRIDENT SYSTEMS, LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 053180/0472 →
CHANGE OF NAME Recorded May 15, 2017
From: VIRIDENT SYSTEMS, INC.
To: VIRIDENT SYSTEMS, LLC
Reel/Frame 042462/0185 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2012
From: KARAMCHETI, VIJAY
To: VIRIDENT SYSTEMS INC.
Reel/Frame 028613/0937 →