# US 10,311,048 B2 · Full and partial materialization of data from an in-memory array to an on-disk page structure

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,311,048 B2
- Document ID: US10311048B2
- Status: Granted
- Kind: B2
- Application number: 14/944,068
- Filed: 2015-11-17
- Published: 2017-05-18
- Granted: 2019-06-04
- Earliest claimed: 2015-11-17
- Assignees: Sap SE
- Applicants: Sap SE
- Inventors: David Wein
- Web page: https://patentgrep.com/patent/US10311048B2

## CPC

- G06F 16/2393: {Updating materialised views}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 16/1774: {Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files}
- G06F 16/219: {Managing data history or versioning (querying versioned data G06F16/2474; querying temporal data G06F16/2477)}
- G06F 16/2308: {Concurrency control (transaction processing G06F9/466)}
- G06F 16/2322: {using timestamps}
- G06F 16/2329: {using versioning}
- G06F 16/2336: {Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps}
- G06F 16/2358: {Change logging, detection, and notification (replication G06F16/27)}
- G06F 16/24539: {using cached or materialised query results}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 16/283: {Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Changes to data in a column in an in memory array resulting from operations of a transaction thread can be written to a database object associated with the column. The database object can be marked for materialization upon completion of all of the plurality of operations of the transaction thread such that the column and the changes are materialized from the in-memory array to one or more pages stored on a persistent storage based on the marking.

## Claims

### Claim 1

A method for implementation by one or more data processors forming part of at least one computing system, the method comprising:
maintaining an in-memory array in main system memory of the at least one computing system, the in-memory array comprising a column of a database table forming part of an in-memory database system;
writing, to a database object associated with the column, one or more changes to the column resulting from one or more operations executed on the column by a transaction thread comprising a plurality of operations;
marking the database object for materialization in response to completion of all of the plurality of operations of the transaction thread;
allocating, by the transaction thread, one or more pages; and
materializing, based on the marking, the column from the in-memory array to the one or more pages stored on a persistent storage, the materializing comprising applying the one or more changes written in the database object, the one or more pages comprising one or more blocks for storing the column,
wherein the database object forms part of an object tree corresponding to fragments in a delta store, the object tree including fragment objects in a fragment level, columns in a column level, and dictionaries in a dictionary level;
wherein the persisting is iteratively performed at a fragment level of the in-memory array, at a column level of the in-memory array, and at a dictionary level of the in-memory array;
wherein the materializing comprises persisting one or more metadata values and one or more data values from the in-memory array to the one or more blocks of the one or more pages;
wherein the one or more metadata values comprise one or more of a row count, an encoding type, a bit size, a value count, and a number of blocks;
wherein the one or more data values comprise one or more of a consolidated column data array, a column data value, and a dictionary value array.

### Claim 2 (depends on 1)

The method of claim 1, wherein the marking is performed by the transaction thread, and the allocating and the materializing are performed by a materialization thread.

### Claim 3 (depends on 2)

The method of claim 2, wherein the materializing consolidates one or more intermediate rollovers resulting from the transaction thread into a single rollover.

### Claim 4 (depends on 1)

The method of claim 1, wherein the marking and the allocating are performed by the transaction thread, and the materializing is performed by a materialization thread.

### Claim 5 (depends on 1)

The method of claim 1, wherein the materializing is performed in accordance with a predetermined time interval.

### Claim 6 (depends on 1)

The method of claim 1, wherein the transaction thread comprises a data manipulation language thread.

### Claim 7

A computer program product comprising a non-transitory machine readable medium storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising:
maintaining an in-memory array in main system memory of at least one computing system, the in-memory array comprising a column of a database table forming part of an in-memory database system;
writing, to a database object associated with the column, one or more changes to the column resulting from one or more operations executed on the column by a transaction thread comprising a plurality of operations;
marking the database object for materialization in response to completion of all of the plurality of operations of the transaction thread;
allocating, by the transaction thread, one or more pages; and
materializing, based on the marking, the column from the in-memory array to the one or more pages stored on a persistent storage, the materializing comprising applying the one or more changes written in the database object, the one or more pages comprising one or more blocks for storing the column,
wherein the database object forms part of an object tree corresponding to fragments in a delta store, the object tree including fragment objects in a fragment level, columns in a column level, and dictionaries in a dictionary level;
wherein the persisting is iteratively performed at a fragment level of the in-memory array, at a column level of the in-memory array, and at a dictionary level of the in-memory array;
wherein the materializing comprises persisting one or more metadata values and one or more data values from the in-memory array to the one or more blocks of the one or more pages;
wherein the one or more metadata values comprise one or more of a row count, an encoding type, a bit size, a value count, and a number of blocks;
wherein the one or more data values comprise one or more of a consolidated column data array, a column data value, and a dictionary value array.

### Claim 8 (depends on 7)

The computer program product of claim 7, wherein the marking is performed by the transaction thread, and the allocating and the materializing are performed by a materialization thread.

### Claim 9 (depends on 8)

The computer program product of claim 8, wherein the materializing consolidates one or more intermediate rollovers resulting from the transaction thread into a single rollover.

### Claim 10 (depends on 7)

The computer program product of claim 7, wherein the marking and the allocating are performed by the transaction thread, and the materializing is performed by a materialization thread.

### Claim 11 (depends on 7)

The computer program product of claim 7, wherein the materializing is performed in accordance with a predetermined time interval.

### Claim 12

A system comprising:
computer hardware comprising at least one programmable processor configured to execute instructions causing the at least one programmable processor to perform operations comprising:
maintaining an in-memory array in main system memory of at least one computing system, the in-memory array comprising a column of a database table forming part of an in-memory database system;
writing, to a database object associated with the column, one or more changes to the column resulting from one or more operations executed on the column by a transaction thread comprising a plurality of operations;
marking the database object for materialization in response to completion of all of the plurality of operations of the transaction thread;
allocating, by the transaction thread, one or more pages; and
materializing, based on the marking, the column from the in-memory array to the one or more pages stored on a persistent storage, the materializing comprising applying the one or more changes written in the database object, the one or more pages comprising one or more blocks for storing the column,
wherein the database object forms part of an object tree corresponding to fragments in a delta store, the object tree including fragment objects in a fragment level, columns in a column level, and dictionaries in a dictionary level;
wherein the persisting is iteratively performed at a fragment level of the in-memory array, at a column level of the in-memory array, and at a dictionary level of the in-memory array;
wherein the materializing comprises persisting one or more metadata values and one or more data values from the in-memory array to the one or more blocks of the one or more pages;
wherein the one or more metadata values comprise one or more of a row count, an encoding type, a bit size, a value count, and a number of blocks;
wherein the one or more data values comprise one or more of a consolidated column data array, a column data value, and a dictionary value array.
