Scalable Database Management Software on a Cluster of Nodes Using a Shared-Distributed Flash Memory
First Claim
1. A distributed multi-node database comprising:
- a plurality of compute nodes, each compute node comprising;
a compute processor for executing threads and programs;
a database management system (DBMS) program executing on the compute processor, the DBMS program receiving a database query from a user, the database query specifying a target database record;
a Sharing Data Fabric (SDF) thread executing on the compute processor;
a local buffer cache accessed by the DBMS program, the local buffer cache storing a cached database record of the target database record that is accessed by the DBMS program;
a plurality of storage nodes, each storage node comprising;
a non-volatile memory for storing a portion of a database comprising persistent database records;
a storage processor executing a storage thread;
wherein the non-volatile memory is a solid-state memory that retains data when power is disconnected; and
a physical interconnect that connects the plurality of compute nodes to the plurality of storage nodes;
wherein the SDF thread is activated by the DBMS program when the target database record is not present in the local buffer cache;
wherein the SDF thread further is enabled to identify a target storage node in the plurality of storage nodes, the target storage node storing the target database record in the portion of the database stored on the target storage node;
wherein the storage thread further is enabled to read the target database record from the non-volatile memory of the target storage node and send the target database record over the physical interconnect to the SDF thread on the compute node for storage in the local buffer cache as the cached database record,whereby the DBMS program on the compute node processes the database query using the SDF thread to fetch the target database record from the target storage node using the storage thread.
4 Assignments
0 Petitions
Accused Products
Abstract
A distributed database system has multiple compute nodes each running an instance of a database management system (DBMS) program that accesses database records in a local buffer cache. Records are persistently stored in distributed flash memory on multiple storage nodes. A Sharing Data Fabric (SDF) is a middleware layer between the DBMS programs and the storage nodes and has API functions called by the DBMS programs when a requested record is not present in the local buffer cache. The SDF fetches the requested record from flash memory and loads a copy into the local buffer cache. The SDF has threads on a home storage node that locate database records using a node map. A global cache directory locks and pins records to local buffer caches for updating by a node'"'"'s DBMS program. DBMS operations are grouped into transactions that are committed or aborted together as a unit.
232 Citations
20 Claims
-
1. A distributed multi-node database comprising:
-
a plurality of compute nodes, each compute node comprising; a compute processor for executing threads and programs; a database management system (DBMS) program executing on the compute processor, the DBMS program receiving a database query from a user, the database query specifying a target database record; a Sharing Data Fabric (SDF) thread executing on the compute processor; a local buffer cache accessed by the DBMS program, the local buffer cache storing a cached database record of the target database record that is accessed by the DBMS program; a plurality of storage nodes, each storage node comprising; a non-volatile memory for storing a portion of a database comprising persistent database records; a storage processor executing a storage thread; wherein the non-volatile memory is a solid-state memory that retains data when power is disconnected; and a physical interconnect that connects the plurality of compute nodes to the plurality of storage nodes; wherein the SDF thread is activated by the DBMS program when the target database record is not present in the local buffer cache; wherein the SDF thread further is enabled to identify a target storage node in the plurality of storage nodes, the target storage node storing the target database record in the portion of the database stored on the target storage node; wherein the storage thread further is enabled to read the target database record from the non-volatile memory of the target storage node and send the target database record over the physical interconnect to the SDF thread on the compute node for storage in the local buffer cache as the cached database record, whereby the DBMS program on the compute node processes the database query using the SDF thread to fetch the target database record from the target storage node using the storage thread. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A computer-program product comprising:
-
a computer-readable storage medium having computer-executable program code means tangibly embodied therein, which when executed on a computing device manages a distributed database stored across multiple nodes of flash memory, the computer-executable storage program code means in the computer-program product comprising; query processing means for processing a database query received from a user, the database query specifying a target database record in a database; local buffer cache means for storing cached database records in a volatile memory; table reader means for reading the target database record from the local buffer cache means when a hit occurs; table writer means for writing to the target database record in the local buffer cache means when a hit occurs and the target database record is in the local buffer cache means; Sharing Data Fabric (SDF) thread means, activated by a GET command from the table reader means when the hit does not occur in the local buffer cache means, for sending a request message over an interconnect from a first node to a target storage node in a plurality of nodes, and for identifying the target storage node using an identifier of the target database record; storage thread means, executing on the target storage node, for reading the target database record from the flash memory at the target storage node that stores a portion of the database, and for sending the target database record over the interconnect to the SDF thread means on the first node; and miss loader means, in the SDF thread means, for receiving the target database record from the target storage node over the interconnect, and for writing the target database record into the local buffer cache means, and for activating the table reader means to read the target database record as a hit, whereby the target database record is retrieved from the target storage node using the SDF thread means transparently to the table reader means. - View Dependent Claims (16, 17, 18)
-
-
19. A transactional distributed database comprising:
-
a plurality of database management system (DBMS) programs executing on a plurality of processors on a plurality of compute nodes, each DBMS program receiving database queries from clients that identify target data items in a database; a plurality of storage nodes each having a non-volatile memory that stores a portion of the database, wherein the database is partitioned across the plurality of storage nodes; wherein the non-volatile memory is a solid-state memory that retains data when power is disconnected; an interconnect that passes messages between the plurality of compute nodes and the plurality of storage nodes; and a plurality of Sharing Data Fabric (SDF) threads executing on the plurality of processors on the plurality of compute nodes, a SDF thread being activated by the DBMS program when the target data items are not present in a local buffer cache, the SDF thread identifying a target storage node in the plurality of storage nodes, the target storage node being a home node that persistently stores the target data items, the SDF thread sending a request message to the target storage node; wherein each storage node further comprises a processor executing a storage thread, the storage thread reading the target data items from the non-volatile memory in response to the request message received over the interconnect, the storage thread sending the target data items over the interconnect in a reply message sent in response to the request message; wherein each of the plurality of DBMS programs operates in a shared address space that includes the database stored on the plurality of storage nodes, the plurality of SDF threads transparently accessing data items stored on the plurality of storage nodes. - View Dependent Claims (20)
-
Specification