# US 12,762,103 B2 · Unified OLTP/OLAP format across memory tiers

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

- Number: US 12,762,103 B2
- Document ID: US12762103B2
- Status: Granted
- Kind: B2
- Application number: 19/072,524
- Filed: 2025-03-06
- Published: 2026-03-05
- Granted: 2026-10-13
- Earliest claimed: 2024-09-05
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: Neelam Goyal; Teck Hua Lee; Shang-Sheng Tung; Qicheng Mi; Bangalore Vasudev Prashanth; Sheldon Andre Kevin Lewis; Madhava Krishnan Ramanathan; Shasank Kisan Chavan; Tirthankar Lahiri
- Web page: https://patentgrep.com/patent/US12762103B2

## CPC

- G06F 16/221: {Column-oriented storage; Management thereof}
- G06F 16/2237: {Vectors, bitmaps or matrices}
- G06F 16/2343: {Locking methods, e.g. distributed locking or locking implementation details}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques for a unified data format that may be used across memory tiers are provided. In one technique, a compression unit is generated that comprises a plurality of data blocks. The compression unit stores tabular data in a columnar format. The plurality of data blocks includes (1) a primary header block that represents a first set of rows of the tabular data and (2) a secondary header block that represents a second set of rows, of the tabular data, that is different than the first set of rows. The compression unit is stored in persistent storage.

## Claims

### Claim 1

A method comprising:
generating a compression unit that comprises a plurality of data blocks, wherein the compression unit stores tabular data from a database table in a columnar format;
wherein the plurality of data blocks includes (1) a primary header block that represents a first set of rows of the tabular data and (2) a secondary header block that represents a second set of rows, of the tabular data, that is different than the first set of rows, wherein the secondary header block and any other second header blocks in the plurality of data blocks allow for an arbitrary number of rows to be represented by the compression unit;
storing the compression unit in persistent storage;
wherein the method is performed by one or more computing devices.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
the secondary header block is a first secondary header block;
the plurality of data blocks includes a second secondary header block that represents a third set of rows, of the tabular data, that is different than the first set of rows and the second set of rows.

### Claim 3 (depends on 1)

The method of claim 1, wherein the secondary header block contains a delete vector that indicates one or more rows, in the second set of rows, that have been deleted.

### Claim 4 (depends on 1)

The method of claim 1, wherein the secondary header block contains a lock vector that indicates one or more rows, in the second set of rows, that are locked by one or more transactions.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
including, in the primary header block, a lock vector that borrows one or more bits from an entry that is used to store a timestamp of a transaction, wherein a length of the lock vector indicates a maximum number of rows that can be locked by the compression unit.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
determining one or more characteristics of the compression unit;
based on the one or more characteristics, determining whether to reorganize the compression unit.

### Claim 7 (depends on 6)

The method of claim 6, wherein the one or more characteristics include one or more of a number of active transactions that are accessing the compression unit, a number of rows that are deleted from the compression unit, or a number of rows, in row-major format, that have been inserted into the compression unit.

### Claim 8 (depends on 6)

The method of claim 6, further comprising:
in response to determining to reorganizing the compression unit:
inserting, into a data block, in row-major format, one or more rows from the compression unit; or
creating a new compression unit based on the one or more rows from the compression unit and one or more rows from another compression unit.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
in response to receiving a scan instruction:
identifying the primary header block;
assembling contents of the compression unit in memory based on analyzing the primary header block and accessing other data blocks of the plurality of data blocks based on the primary header block.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
in response to receiving a range scan instruction:
identifying a low row identifier in a row identifier range that is indicated in the range scan instruction;
for each data block of two or more header blocks in the plurality of data blocks;
determining whether said each data block is within the row identifier range;
determining whether said each data block is the closest header data block of the compression unit to the low row identifier;
if it is determined that said each data block is within the row identifier row and said each data block is the closest header data block of the compression unit to the low row identifier, then assembling contents of the compression unit in memory based on analyzing said each data block and accessing other data blocks of the plurality of data blocks based on said each data block.

### Claim 11

One or more non-transitory storage media storing instructions which, when executed by one or more computing devices, cause:
generating a compression unit that comprises a plurality of data blocks, wherein the compression unit stores tabular data from a database table in a columnar format;
wherein the plurality of data blocks includes (1) a primary header block that represents a first set of rows of the tabular data and (2) a secondary header block that represents a second set of rows, of the tabular data, that is different than the first set of rows, wherein the secondary header block and any other second header blocks in the plurality of data blocks allow for an arbitrary number of rows to be represented by the compression unit;
storing the compression unit in persistent storage.

### Claim 12 (depends on 11)

The one or more storage media of claim 11, wherein:
the secondary header block is a first secondary header block;
the plurality of data blocks includes a second secondary header block that represents a third set of rows, of the tabular data, that is different than the first set of rows and the second set of rows.

### Claim 13 (depends on 11)

The one or more storage media of claim 11, wherein the secondary header block contains a delete vector that indicates one or more rows, in the second set of rows, that have been deleted.

### Claim 14 (depends on 11)

The one or more storage media of claim 11, wherein the secondary header block contains a lock vector that indicates one or more rows, in the second set of rows, that are locked by one or more transactions.

### Claim 15 (depends on 11)

The one or more storage media of claim 11, wherein the instructions, when executed by the one or more computing devices, further cause:
including, in the primary header block, a lock vector that borrows one or more bits from an entry that is used to store a timestamp of a transaction, wherein a length of the lock vector indicates a maximum number of rows that can be locked by the compression unit.

### Claim 16 (depends on 11)

The one or more storage media of claim 11, wherein the instructions, when executed by the one or more computing devices, further cause:
determining one or more characteristics of the compression unit;
based on the one or more characteristics, determining whether to reorganize the compression unit.

### Claim 17 (depends on 16)

The one or more storage media of claim 16, wherein the one or more characteristics include one or more of a number of active transactions that are accessing the compression unit, a number of rows that are deleted from the compression unit, or a number of rows, in row-major format, that have been inserted into the compression unit.

### Claim 18 (depends on 16)

The one or more storage media of claim 16, wherein the instructions, when executed by the one or more computing devices, further cause:
in response to determining to reorganizing the compression unit:
inserting, into a data block, in row-major format, one or more rows from the compression unit; or
creating a new compression unit based on the one or more rows from the compression unit and one or more rows from another compression unit.

### Claim 19 (depends on 11)

The one or more storage media of claim 11, wherein the instructions, when executed by the one or more computing devices, further cause:
in response to receiving a scan instruction:
identifying the primary header block;
assembling contents of the compression unit in memory based on analyzing the primary header block and accessing other data blocks of the plurality of data blocks based on the primary header block.

### Claim 20 (depends on 11)

The one or more storage media of claim 11, wherein the instructions, when executed by the one or more computing devices, further cause:
in response to receiving a range scan instruction:
identifying a low row identifier in a row identifier range that is indicated in the range scan instruction;
for each data block of two or more header blocks in the plurality of data blocks;
determining whether said each data block is within the row identifier range;
determining whether said each data block is the closest header data block of the compression unit to the low row identifier;
if it is determined that said each data block is within the row identifier row and said each data block is the closest header data block of the compression unit to the low row identifier, then assembling contents of the compression unit in memory based on analyzing said each data block and accessing other data blocks of the plurality of data blocks based on said each data block.
