US 11,947,817 B2
Memory mapping to enhance data cube performance
Qianping Jiang, Vienna, VA (US); Cheng Guo, Herndon, VA (US); Rixin Liao, Herndon, VA (US); Cezary Raczko, Ashburn, VA (US); and Xiaoyan Yu, Annandale, VA (US)
Assigned to MicroStrategy Incorporated, Vienna, VA (US)
Filed by MicroStrategy Incorporated, Vienna, VA (US)
Filed on Nov. 15, 2021, as Appl. No. 17/526,475.
Prior Publication US 2023/0152994 A1, May 18, 2023
Int. Cl. G06F 3/06 (2006.01)
CPC G06F 3/0635 (2013.01) [G06F 3/0604 (2013.01); G06F 3/0679 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method performed by one or more computers, the method comprising:
accessing a data set comprising data to be processed into a data cube;
generating a memory-mapped data cube based on the data set, the memory-mapped data cube comprising a plurality of files including different segments of the data cube, wherein generating the memory-mapped data cube comprises:
allocating memory-mapped buffers in non-volatile data storage in response to first memory allocation requests, wherein the memory-mapped buffers each allocate extra capacity such that the buffer exceeds an allocation size indicated in the corresponding first memory allocation request;
after allocating the memory-mapped buffers and writing first components of the data cube in the memory-mapped buffers, responding to second memory allocation requests by providing addresses for locations in the extra capacity of the buffers;
based on the provided addresses, writing second components of the data cube to the memory-mapped buffers; and
storing contents of the respective buffers as files of the data cube; and
loading the memory-mapped data cube by storing the files of the data cube in disk-based storage, mapping the stored files of the data cube to virtual memory addresses, and caching portions of the data cube in random-access memory.