CPC G06F 11/073 (2013.01) [G06F 9/3009 (2013.01); G06F 11/0772 (2013.01); G06F 11/1438 (2013.01); G06F 12/0238 (2013.01); G06F 16/2365 (2019.01); G06F 2212/2542 (2013.01); Y10S 707/99953 (2013.01)] | 20 Claims |
1. A method for constructing a persistent memory index in a non-uniform memory access (NUMA) architecture, wherein the NUMA architecture comprises a plurality of NUMA nodes having a persistent memory and a DRAM, the method comprising:
maintaining a plurality of partial persistent views in the persistent memory, and maintaining a global volatile view in the DRAM;
processing by an underlying persistent memory index, a request in a foreground thread when cold data is accessed by the foreground thread;
when hot data is accessed by the foreground thread,
in response to a query operation carried in the request, reading by the foreground thread a key-value pair corresponding to a piece of hot data in the global volatile view; and
in response to an insert, update or delete operation carried in the request, updating by the foreground thread a local partial persistent view of a NUMA node where the foreground thread is located and the global volatile view; and
in response to a hotspot migration, generating by a background thread new partial persistent views and a new global volatile view based on new hot data, and recycling the partial persistent views and the global volatile view for old hot data into the underlying persistent memory index.
|