IP Library Granted Patent US 11,947,817
Granted Patent B2
US 11,947,817 · App. 17/526,475 · Granted Apr 2, 2024

Memory mapping to enhance data cube performance

Inventors: Qianping Jiang (Vienna, VA); Cheng Guo (Herndon, VA); Rixin Liao (Herndon, VA); Cezary Raczko (Ashburn, VA); Xiaoyan Yu (Annandale, VA)
Assignee: MicroStrategy Incorporated
G06F3/0635G06F3/0604G06F3/0679
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 11,947,817
App. No.
17/526,475
Granted
Apr 2, 2024
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer-storage media, for memory mapping to enhance data cube performance. In some implementations, a system accesses a data set that includes data to be processed into a data cube. The system generates a memory-mapped data cube that includes a plurality of files including different segments of the data cube. Generating the memory-mapped data cube includes allocating memory-mapped buffers in non-volatile data storage and responding to subsequent memory allocation requests with addresses for the buffers such that components of the data cube are accumulated in the buffers. The memory-mapped data cube is loaded 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.

Claims (49)

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.

2. The method of claim 1 , wherein the data cube is an online analytical processing (OLAP) data cube or a multi-table data import (MTDI) data cube.

3. The method of claim 1 , comprising adjusting the portions of the data cube that are cached based on accesses to the data cube over a period of time.

4. The method of claim 1 , wherein caching portions of the data cube in random-access memory comprises caching sub-file portions of the files of the data cube.

5. The method of claim 4 , wherein caching portions of the data cube in random-access memory comprises performing page-level caching of the files of the data cube.

6. The method of claim 1 , wherein caching portions of the data cube in random-access memory comprises selectively caching individual files of the data cube based on an access history for the files in the data cube.

7. The method of claim 1 , wherein the memory-mapped buffers have initial sizes that are more than double the allocation sizes requested in the first memory allocations.

8. The method of claim 1 , comprising:

determining that, for a particular request of the second memory allocation requests, a requested allocation size exceeds an amount of available capacity in a memory-mapped buffer identified for handling memory allocation for the particular request;

expanding the identified memory-mapped buffer by a predetermined increment that exceeds the requested allocation size; and

after expanding the identified memory-mapped buffer, providing an address in the expanded buffer in response to the particular request.

9. A system comprising:

one or more computers; and

one or more computer-readable media storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations 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.

10. The system of claim 9 , wherein the data cube is an online analytical processing (OLAP) data cube or a multi-table data import (MTDI) data cube.

11. The system of claim 9 , comprising adjusting the portions of the data cube that are cached based on accesses to the data cube over a period of time.

12. The system of claim 9 , wherein caching portions of the data cube in random-access memory comprises caching sub-file portions of the files of the data cube.

13. The system of claim 12 , wherein caching portions of the data cube in random-access memory comprises performing page-level caching of the files of the data cube.

14. The system of claim 9 , wherein caching portions of the data cube in random-access memory comprises selectively caching individual files of the data cube based on an access history for the files in the data cube.

15. The system of claim 9 , wherein the memory-mapped buffers have initial sizes that are more than double the allocation sizes requested in the first memory allocations.

16. The system of claim 9 , comprising:

determining that, for a particular request of the second memory allocation requests, a requested allocation size exceeds an amount of available capacity in a memory-mapped buffer identified for handling memory allocation for the particular request;

expanding the identified memory-mapped buffer by a predetermined increment that exceeds the requested allocation size; and

after expanding the identified memory-mapped buffer, providing an address in the expanded buffer in response to the particular request.

17. One or more non-transitory computer-readable media storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations 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.

18. The one or more non-transitory computer-readable media of claim 17 , wherein the data cube is an online analytical processing (OLAP) data cube or a multi-table data import (MTDI) data cube.

19. The one or more non-transitory computer-readable media of claim 17 , comprising adjusting the portions of the data cube that are cached based on accesses to the data cube over a period of time.

20. The one or more non-transitory computer-readable media of claim 17 , wherein caching portions of the data cube in random-access memory comprises caching sub-file portions of the files of the data cube.

Assignments (4)
CHANGE OF NAME Recorded Sep 19, 2025
From: MICROSTRATEGY INCORPORATED
To: STRATEGY INC
Reel/Frame 072974/0529 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT REEL/FRAME: 056647/0687, REEL/FRAME: 057435/0023, REEL/FRAME: 059256/0247, REEL/FRAME: 062794/0255 AND REEL/FRAME: 066663/0713 Recorded Sep 26, 2024
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS SUCCESSOR IN INTEREST TO U.S. BANK NATIONAL ASSOCIATION, IN ITS CAPACITY AS COLLATERAL AGENT FOR THE SECURED PARTIES
To: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
Reel/Frame 069065/0539 →
SUPPLEMENTARY PATENT SECURITY AGREEMENT Recorded Feb 18, 2022
From: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 059256/0247 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2022
From: JIANG, QIANPING; GUO, CHENG; LIAO, RIXIN; RACZKO, CEZARY; YU, XIAOYAN
To: MICROSTRATEGY INCORPORATED
Reel/Frame 058651/0010 →