Near-memory acceleration for database operations
Despite the increase of memory capacity and CPU computing power, memory performance remains the bottleneck of in-memory database management systems due to ever-increasing data volumes and application demands. Because the scale of data workloads has out-paced traditional CPU caches and memory bandwidth, one can improve data movement from memory to computing units to improve performance in in-memory database scenarios. A near-memory database accelerator framework offloads data-intensive database operations via or to a near-memory computation engine. The database accelerator's system architecture can include a database accelerator software module/driver and a memory module with a database accelerator engine. An application programming interface (API) can be provided to support database accelerator functionality. Memory of the database accelerator can be directly accessible by the CPU.
1. A method comprising:
in an in-memory database management system environment, receiving a request to perform a database operation on a plurality of values represented in source data, wherein the source data is stored in device memory of a near-memory database accelerator;
offloading the database operation to the near-memory database accelerator; and
receiving, from the near-memory database accelerator, an indication that results of the database operation are available;
wherein the request comprises a capacity parameter specifying size of an output buffer, and the method further comprises:
detecting, in the near-memory database accelerator, based on the capacity parameter that the output buffer is not of sufficient size to hold the results; and
responsive to detecting that the output buffer is not of sufficient size, returning a result of partial completion.
2. The method of claim 1 wherein:
the plurality of values represented in source data are stored in compressed form in a main store of an in-memory database management system.
3. The method of claim 1 further comprising:
before receiving the request, storing the source data in the device memory of the near-memory database accelerator as specified by in-memory database management system configuration information.
4. The method of claim 1 wherein:
the request is received from an in-memory database management system via an application programming interface (API) for a scan database operation.
5. The method of claim 1 wherein:
the request is received from an in-memory database management system as a result of determining, within the in-memory database management system, that the database operation of the request is to be offloaded.
6. The method of claim 1 wherein:
the source data comprises an in-memory database component stored in the device memory of the near-memory database accelerator; and
the near-memory database accelerator performs the database operation on the in-memory database component stored in device memory of the near-memory database accelerator.
7. The method of claim 6 wherein:
the source data is compressed; and
the request comprises compression information of the source data that is used by the near-memory database accelerator for decompression of the source data.
8. The method of claim 7 wherein:
the source data is compressed according to a bit-packed compression format, and the compression information specifies a number-of-bits for the bit-packed compression format.
9. The method of claim 1 wherein:
the near-memory database accelerator comprises a database accelerator engine co-resident with device memory and configured to execute the database operation; and
the device memory is separate from a central processing node.
10. The method of claim 1 wherein:
the request is received at a central processing unit;
the device memory is directly accessible by the central processing unit; and
the near-memory database accelerator comprises a database accelerator engine separate from the central processing unit, wherein the database accelerator engine is configured to execute the database operation.
11. The method of claim 10 wherein:
the offloading relieves a central-processing-unit-to memory data path for processing other than the database operation.
12. The method of claim 1 wherein:
the source data comprises database table values in column format;
the database operation comprises a table scan for a specified predicate; and
the results indicate for which database column values the specified predicate is valid.
13. The method of claim 1 wherein:
the request is received from an in-memory database application by a near-memory database accelerator driver that interacts with the near-memory database accelerator on behalf of the in-memory database application.
14. The method of claim 1 wherein:
the database operations are performed in situ in the device memory by the near-memory database accelerator.
15. The method of claim 1 , wherein:
the database operation is performed by a near-memory database accelerator engine of the near-memory database accelerator; and
the method further comprises:
retrieving the results directly from the device memory to a central processing unit, wherein the retrieving bypasses the near-memory database accelerator engine.
16. A system comprising:
one or more processing units;
main memory or extended memory directly accessible by the one or more processing units; and
a near-memory database accelerator driver configured to receive a request to perform a database operation on source data stored in device memory of a near-memory database accelerator comprising at least one database accelerator engine separate from the one or more processing units, offload the database operation to the near-memory database accelerator for execution by the at least one database accelerator engine separate from the one or more processing units, and receive an indication from the near-memory database accelerator that results of the database operation are available;
wherein the main memory or extended memory comprises the device memory of the near-memory database accelerator; and
wherein the near-memory database accelerator driver is configured to return a partial completion result if the results are too large for an output buffer capacity specified in the request.
17. The system of claim 16 wherein:
the one or more processing units retrieve results of the database operations computed by the at least one database accelerator engine via memory mapped I/O.
18. One or more computer-readable media comprising computer-executable instructions that when executed cause a computing system to perform a method comprising:
receiving, from an in-memory database management system, an application programming interface (API) call requesting that a database operation be offloaded to a near-memory database accelerator, wherein the database operation is performed on an in-memory column of a database table that is compressed according to bit-packed compression format, and the API call specifies a number-of-bits parameter;
responsive to the API call, sending a request to a near-memory database accelerator, wherein the sending comprises relaying the number-of-bits parameter and the near-memory database accelerator performs the database operation with the number-of-bits parameter;
receiving an indication from the near-memory database accelerator that the database operation has completed; and
notifying the in-memory database management system that the database operation has completed;
wherein the request comprises a capacity parameter specifying size of an output buffer, and the method further comprises:
detecting, in the near-memory database accelerator, based on the capacity parameter that the output buffer is not of sufficient size to hold results of the database operation; and
responsive to detecting that the output buffer is not of sufficient size, returning a result of partial completion.