# US 12,118,014 B2 · Separation of logical and physical storage in a distributed database system

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

- Number: US 12,118,014 B2
- Document ID: US12118014B2
- Status: Granted
- Kind: B2
- Application number: 18/351,258
- Filed: 2023-07-12
- Published: 2023-11-02
- Granted: 2024-10-15
- Earliest claimed: 2021-08-12
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Alejandro Hernandez Saenz; Cristian Diaconu; Krystyna Ewa Reisteter; Naveen Prakash; Sheetal Shrotri; Rogério Ramos; Alexander Budovski; Hanumantha Rao Kodavalla
- Web page: https://patentgrep.com/patent/US12118014B2

## CPC

- G06F 16/256: {in federated or virtual databases}
- G06F 16/184: {implemented as replicated file system}
- G06F 16/185: Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof (details of archiving G06F16/11)
- G06F 16/1858: {Parallel file systems, i.e. file systems supporting multiple processors}
- G06F 16/188: Virtual file systems
- G06F 16/211: {Schema design and management}
- G06F 16/278: {Data partitioning, e.g. horizontal or vertical partitioning}
- G06F 16/2272: {Management thereof}
- G06F 16/24557: {Efficient disk access during query execution}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Distributed database systems including compute nodes and page servers are described herein that enable separating logical and physical storage of database files in a distributed database system. A distributed database system includes a page server and a compute node, and is configured to store a logical database file that includes data and is associated with a file identifier. Each page server is configurable to store slices (i.e., subportions) of the logical database file. The compute node is coupled to the plurality of page servers and configured to store the logical database file responsive to a received command. In an aspect, such storage may comprise slicing the data comprising the logical database file into a set of slices with each being associated with a respective page server, maintaining an endpoint mapping for each slice of the first set of slices, and transmitting each slice to the associated for storage thereby.

## Claims

### Claim 1

A system for storing data in a distributed database, the system comprising:
a processor;
a computer-readable storage medium comprising computer-executable instructions that, when executed by the processor, cause the processor to:
divide a first file into a first set of cells, each cell associated with a respective server of a plurality of servers;
maintain endpoint mappings for a set of contiguous portions of the first file, each endpoint mapping maintained for a corresponding contiguous portion of the set of contiguous portions and comprising a range identifier that specifies a location within the first file of the corresponding contiguous portion and an endpoint address corresponding to the respective server associated with the range identifier, wherein each contiguous portion of the first file comprises one or more cells of the first set of cells; and
transmit data corresponding to each cell to the respective server associated with the cell.

### Claim 2 (depends on 1)

The distributed database system of claim 1, wherein the instructions, when executed by the processor, further cause the processor to:
receive a query that requires a chunk from the first file;
determine an endpoint address of a server storing the chunk based on the endpoint mappings; and
transmit a request for the chunk to the determined endpoint address.

### Claim 3 (depends on 1)

The distributed database system of claim 1, wherein the instructions, when executed by the processor, further cause the processor to:
store the first file using a first storage configuration; and
store a second file using a second storage configuration having a slower access time than the first storage configuration.

### Claim 4 (depends on 3)

The distributed database system of claim 3, wherein each endpoint address of each endpoint mapping corresponds to one of:
the first storage configuration; or
the second storage configuration.

### Claim 5 (depends on 3)

The distributed database system of claim 3, wherein the instructions, when executed by the processor, further cause the processor to:
change the storing of the first file to use a third storage configuration by moving the first set of cells to one or more new endpoint addresses and updating the endpoint mappings that correspond to the first set of cells to correspond to the one or more new endpoint addresses, or by changing a hardware configuration of the first storage configuration to a third storage configuration.

### Claim 6 (depends on 1)

The distributed database system of claim 1, wherein each cell of the first set of cells comprises a set of stripes, each stripe being stored on a physical device that is different than that of every other stripe of the set of stripes.

### Claim 7 (depends on 6)

The distributed database system of claim 6, wherein each stripe comprises a set of chunks, each chunk corresponding to a portion of the first file that is not contiguous within the first file with any other chunk of the set of chunks.

### Claim 8

A method, comprising:
dividing a first file into a first set of cells, each cell associated with a respective server of a plurality of servers;
maintaining endpoint mappings for a set of contiguous portions of the first file, each endpoint mapping maintained for a corresponding contiguous portion of the set of contiguous portions and comprising a range identifier that specifies a location within the first file of the corresponding contiguous portion and an endpoint address corresponding to the respective server associated with the range identifier, wherein each contiguous portion of the first file comprises one or more cells of the first set of cells; and
transmitting data corresponding to each cell to the respective server associated with the cell.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
receiving a query that requires a chunk from the first file;
determining an endpoint address of a server storing the chunk based on the endpoint mappings; and
transmitting a request for the chunk to the determined endpoint address.

### Claim 10 (depends on 8)

The method of claim 8, further comprising:
store the first file using a first storage configuration; and
store a second file using a second storage configuration having a slower access time than the first storage configuration.

### Claim 11 (depends on 10)

The method of claim 10, wherein each endpoint address of each endpoint mapping corresponds to one of:
the first storage configuration; or
the second storage configuration.

### Claim 12 (depends on 10)

The method of claim 10, further comprising:
changing the storing of the first file to use a third storage configuration by moving the first set of cells to one or more new endpoint addresses and updating the endpoint mappings that correspond to the first set of cells to correspond to the one or more new endpoint addresses, or by changing a hardware configuration of the first storage configuration to be a third storage configuration.

### Claim 13 (depends on 8)

The method of claim 8, wherein each cell of the first set of cells comprises a set of stripes, each stripe being stored on a physical device that is different than that of every other stripe of the set of stripes.

### Claim 14 (depends on 13)

The method of claim 13, wherein each stripe comprises a set of chunks, each chunk corresponding to a portion of the first file that is not contiguous within the first file with any other chunk of the set of chunks.

### Claim 15

A computer-readable storage medium comprising computer-readable instructions that, when executed by a processor, cause the processor to:
divide a first file into a first set of cells, each cell associated with a respective server of a plurality of servers;
maintain endpoint mappings for a set of contiguous portions of the first file, each endpoint mapping maintained for a corresponding contiguous portion of the set of contiguous portions and comprising a range identifier that specifies a location within the first file of the corresponding contiguous portion and an endpoint address corresponding to the respective server associated with the range identifier, wherein each contiguous portion of the first file comprises one or more cells of the first set of cells; and
transmit data corresponding to each cell to the respective server associated with the cell.

### Claim 16 (depends on 15)

The computer-readable storage medium of claim 15, wherein the computer-readable instructions, when executed by the processor, further cause the processor to:
receive a query that requires a chunk from the first file;
determine an endpoint address of a server storing the chunk based on the endpoint mappings; and
transmit a request for the chunk to the determined endpoint address.

### Claim 17 (depends on 15)

The computer-readable storage medium of claim 15, wherein the computer-readable instructions, when executed by the processor, further cause the processor to:
store the first file using a first storage configuration; and
store a second file using a second storage configuration having a slower access time than the first storage configuration.

### Claim 18 (depends on 17)

The computer-readable storage medium of claim 17, wherein the computer-readable instructions, when executed by the processor, further cause the processor to:
change the storing of the first file to use a third storage configuration by moving the first set of cells to one or more new endpoint addresses and updating the endpoint mappings that correspond to the first set of cells to correspond to the one or more new endpoint addresses, or by changing a hardware configuration of the first storage configuration to be a third storage configuration.

### Claim 19 (depends on 15)

The computer-readable storage medium of claim 15, wherein each cell of the first set of cells comprises a set of stripes, each stripe being stored on a physical device that is different than that of every other stripe of the set of stripes.

### Claim 20 (depends on 19)

The computer-readable storage medium of claim 19, wherein each stripe comprises a set of chunks, each chunk corresponding to a portion of the first file that is not contiguous within the first file with any other chunk of the set of chunks.
