# US 2021/0279221 A1 · Methods and Systems for Performing Transparent Object Migration Across Storage Tiers

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

- Number: US 2021/0279221 A1
- Document ID: US20210279221A1
- Status: Published application
- Kind: A1
- Application number: 17/330,614
- Filed: 2021-05-26
- Published: 2021-09-09
- Earliest claimed: 2010-04-19
- Assignees: salesforce.com, inc.
- Applicants: salesforce.com, inc.
- Inventors: James Taylor; Bill C. Eidson; Kevin Oliver
- Web page: https://patentgrep.com/patent/US20210279221A1

## CPC

- G06F 16/2272: {Management thereof}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In accordance with embodiments, there are provided mechanisms and methods for performing transparent object migration across storage tiers. In an embodiment and by way of example, a method for appending data to large data volumes is provided. The method embodiment includes a) setting a CustomEntityOption bit that determines (at object creation time) where the object is stored, either in the relational or the non-relational data store portion, b) loading the CustomEntityOption bit in a cached CustomEntityDefinition, c) showing the CustomEntityOption bit as EntityInfo, and d) allowing custom object definition and Metadata API functionality when the bit is shown.

## Claims

### Claim 1

In a combined data non-transitory repository having a relational data store and a non-relational data store, a method comprising:
defining, based on a cache custom index object, a search index associated with column values and metadata;
sending the search index to the non-relational data store using one or more requests as part of an object;
retrieving a replaced row from the non-relational data store;
modifying the search index by at least one of (a) sending an updated search index row with its row values to the non-relational data store, and (b) replacing or shadowing a correspondingly existing search index row with the updated search index row;
calculating index statistics through normal queries of the non-relational data store;
storing the calculated index statistics in existing statistics tables; and
resending the search index to the non-relational data store by incrementing a sequence number up for a corresponding combination of the statistics tables and organizations upon creation or deletion of an index, wherein the statistics tables are periodically updated using a scheduled batch process.

### Claim 2 (depends on 1)

The method of claim 1, wherein modifying is performed simultaneously with updating of the non-relational data store, and wherein the search index metadata is maintained at a server computing device through a cache object that is responsible for maintaining a snapshot of unflushed rows for index data tables to ensure one or more operations are performed based on up-to-date data.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
running an optimized routing in a new index creation mode for existing data segments;
writing out new data segments during index creation of the optimized routing;
creating index rows for one or more unflushed data rows;
enabling incremental index maintenance for facilitating the creation of index rows for data that changes while the creation of index rows is in progress; and
marking the created index rows as active to enable queries to use the created index rows.

### Claim 4

A combined non-transitory data repository comprising a data processing device coupled to a relational data store and a non-relational data store, the data processing device of the combined data repository to perform operations comprising:
retrieving a complete search index row from the non-relational data store, the search index row having a plurality of columns having row values containing metadata about the search index row;
updating the metadata and at least a portion of the row values of the plurality of columns to form an updated search index row having the plurality of columns, wherein a subset of the plurality of columns corresponding to the portion of the row values is updated;
sending the updated search index row with its row values to the non-relational data store, wherein the updated search index row replaces the search index row;
modifying a search index associated with the updated search index row by at least one of (a) sending the updated search index row with its row values to the non-relational data store, and (b) replacing or shadowing a correspondingly existing search index row with the updated search index row;
defining search index metadata using a cached custom index object;
sending the search index metadata to the non-relational data store using one or more requests as part of a specified object;
calculating index statistics through normal queries of the non-relational data store;
storing the calculated index statistics in existing statistics tables; and
resending the search index metadata to the non-relational data store by modifying a sequence number for a corresponding combination of the statistic tables and organizations upon creation or deletion of an index, wherein the calculated index statistics of the statistics tables are periodically updated using a scheduled batch process.

### Claim 5 (depends on 4)

The combined data repository of claim 4, wherein modifying is performed simultaneously with updating of the non-relational data store, and wherein the search index metadata is maintained at a server computing device through a cache object that is responsible for maintaining a snapshot of unflushed rows for index data tables to ensure one or more operations are performed based on up-to-date data.

### Claim 6 (depends on 4)

The combined data repository of claim 4, wherein the operations further comprise:
running an optimized routing in a new index creation mode for existing data segments;
writing out new data segments during index creation of the optimized routing;
creating index rows for one or more unflushed data rows;
enabling incremental index maintenance for facilitating the creation of index rows for data that changes while the creation of index rows is in progress; and
marking the created index rows as active to enable queries to use the created index rows.

### Claim 7

A non-transitory computer-readable medium having stored thereon instructions which, when executed by a computing device associated with a combined data repository having a relational data store and a non-relational data store, causes the computing device to perform operations comprising:
defining the search index metadata using a cache custom index object;
sending the search index metadata to the non-relational data store using one or more requests as part of an object;
retrieving a replaced row from the non-relational data store;
modifying the search index by at least one of (a) sending an updated search index row with its row values to the non-relational data store, and (b) replacing or shadowing a correspondingly existing search index row with the updated search index row;
calculating index statistics through normal queries of the non-relational data store;
storing the calculated index statistics in existing statistics tables; and
resending the search index metadata by modifying a sequence number for a corresponding combination of the statistic tables and organizations upon creation or deletion of an index, wherein the statistics tables are periodically updated using a scheduled batch process.

### Claim 8 (depends on 7)

The computer-readable medium of claim 7, wherein modifying is performed simultaneously with updating of the non-relational data store, and wherein the search index metadata is maintained at a server computing device through a cache object that is responsible for maintaining a snapshot of unflushed rows for index data tables to ensure one or more operations are performed based on up-to-date data.

### Claim 9 (depends on 7)

The computer-readable medium of claim 7, wherein the operations further comprise:
running an optimized routing in a new index creation mode for existing data segments;
writing out new data segments during index creation of the optimized routing;
creating index rows for one or more unflushed data rows;
enabling incremental index maintenance for facilitating the creation of index rows for data that changes while the creation of index rows is in progress; and
marking the created index rows as active to enable queries to use the created index rows.

### Claim 10

In a combined non-transitory data repository having a relational data store and a non-relational data store, a method comprising:
retrieving a complete search index row from the non-relational data store, the search index row having a plurality of columns having row values containing metadata about the search index row;
updating the metadata and at least a portion of the row values of the plurality of columns to form an updated search index row having the plurality of columns, wherein a subset of the plurality of columns corresponding to the portion of the row values is updated;
sending the updated search index row with its row values to the non-relational data store, wherein the updated search index row replaces the search index row;
modifying a search index associated with the updated search index row by at least one of (a) sending the updated search index row with its row values to the non-relational data store, and (b) replacing or shadowing a correspondingly existing search index row with the updated search index row;
defining search index metadata using a cached custom index object;
sending the search index metadata to the non-relational data store using one or more requests as part of a specified object;
resending the search index metadata by modifying a sequence number for a corresponding combination of the statistic tables and organizations upon creation or deletion of an index;
calculating index statistics through normal queries of the non-relational data store;
storing the calculated index statistics in existing statistics tables; and
periodically updating the calculated index statistics of the statistics tables using a scheduled batch process.

### Claim 11 (depends on 10)

The method of claim 10, wherein modifying is performed simultaneously with updating of the non-relational data store, and wherein the search index metadata is maintained at a server computing device through a cache object that is responsible for maintaining a snapshot of unflushed rows for index data tables to ensure one or more operations are performed based on up-to-date data.

### Claim 12 (depends on 10)

The method of claim 10, further comprising:
running an optimized routing in a new index creation mode for existing data segments;
writing out new data segments during index creation of the optimized routing;
creating index rows for one or more unflushed data rows;
enabling incremental index maintenance for facilitating the creation of index rows for data that changes while the creation of index rows is in progress; and
marking the created index rows as active to enable queries to use the created index rows.

### Claim 13

A non-transitory computer-readable medium having stored thereon instructions which, when executed by a computing device associated with a combined data repository having a relational data store and a non-relational data store, causes the computing device to perform operations comprising:
retrieving a complete search index row from the non-relational data store, the search index row having a plurality of columns having row values containing metadata about the search index row;
updating the metadata and at least a portion of the row values of the plurality of columns to form an updated search index row having the plurality of columns, wherein a subset of the plurality of columns corresponding to the portion of the row values is updated;
sending the updated search index row with its row values to the non-relational data store, wherein the updated search index row replaces the search index row;
modifying a search index associated with the updated search index row by at least one of (a) sending the updated search index row with its row values to the non-relational data store, and (b) replacing or shadowing a correspondingly existing search index row with the updated search index row;
defining search index metadata using a cached custom index object;
sending the search index metadata to the non-relational data store using one or more requests as part of a specified object;
resending the search index metadata by modifying a sequence number for a corresponding combination of the statistic tables and organizations upon creation or deletion of an index;
calculating index statistics through normal queries of the non-relational data store;
storing the calculated index statistics in existing statistics tables; and
periodically updating the calculated index statistics of the statistics tables using a scheduled batch process.

### Claim 14 (depends on 13)

The computer-readable medium of claim 13, wherein modifying is performed simultaneously with updating of the non-relational data store, and wherein the search index metadata is maintained at a server computing device through a cache object that is responsible for maintaining a snapshot of unflushed rows for index data tables to ensure one or more operations are performed based on up-to-date data.

### Claim 15 (depends on 13)

The computer-readable medium of claim 13, wherein the operations further comprise:
running an optimized routing in a new index creation mode for existing data segments;
writing out new data segments during index creation of the optimized routing;
creating index rows for one or more unflushed data rows;
enabling incremental index maintenance for facilitating the creation of index rows for data that changes while the creation of index rows is in progress; and
marking the created index rows as active to enable queries to use the created index rows.

### Claim 16

A database system comprising a combined non-transitory data repository comprising a data processing device coupled to a relational data store and a non-relational data store, the data processing device of the combined non-transitory data repository to perform operations comprising:
defining, based on a cache custom index object, a search index associated with column values and metadata;
sending the search index to the non-relational data store using one or more requests as part of an object;
retrieving a replaced row from the non-relational data store;
modifying the search index by at least one of (a) sending an updated search index row with its row values to the non-relational data store, and (b) replacing or shadowing a correspondingly existing search index row with the updated search index row;
calculating index statistics through normal queries of the non-relational data store;
storing the calculated index statistics in existing statistics tables; and
resending the search index to the non-relational data store by incrementing a sequence number up for a corresponding combination of the statistics tables and organizations upon creation or deletion of an index, wherein the statistics tables are periodically updated using a scheduled batch process.

### Claim 17 (depends on 16)

The database system of claim 16, wherein modifying is performed simultaneously with updating of the non-relational data store, and wherein the search index metadata is maintained at a server computing device through a cache object that is responsible for maintaining a snapshot of unflushed rows for index data tables to ensure one or more operations are performed based on up-to-date data.

### Claim 18 (depends on 16)

The database system of claim 16, wherein the operations further comprise:
running an optimized routing in a new index creation mode for existing data segments;
writing out new data segments during index creation of the optimized routing;
creating index rows for one or more unflushed data rows;
enabling incremental index maintenance for facilitating the creation of index rows for data that changes while the creation of index rows is in progress; and
marking the created index rows as active to enable queries to use the created index rows.

### Claim 19

A non-transitory computer-readable medium having stored thereon instructions which, when executed by a computing device associated with a combined data repository having a relational data store and a non-relational data store, causes the computing device to perform operations comprising:
defining, based on a cache custom index object, a search index associated with column values and metadata;
sending the search index to the non-relational data store using one or more requests as part of an object;
retrieving a replaced row from the non-relational data store;
modifying the search index by at least one of (a) sending an updated search index row with its row values to the non-relational data store, and (b) replacing or shadowing a correspondingly existing search index row with the updated search index row;
calculating index statistics through normal queries of the non-relational data store;
storing the calculated index statistics in existing statistics tables; and
resending the search index to the non-relational data store by incrementing a sequence number up for a corresponding combination of the statistics tables and organizations upon creation or deletion of an index, wherein the statistics tables are periodically updated using a scheduled batch process.

### Claim 20 (depends on 19)

The computer-readable medium of claim 19, wherein modifying is performed simultaneously with updating of the non-relational data store, and wherein the search index metadata is maintained at a server computing device through a cache object that is responsible for maintaining a snapshot of unflushed rows for index data tables to ensure one or more operations are performed based on up-to-date data.

### Claim 21 (depends on 19)

The computer-readable medium of claim 19, wherein the operations further comprise:
running an optimized routing in a new index creation mode for existing data segments;
writing out new data segments during index creation of the optimized routing;
creating index rows for one or more unflushed data rows;
enabling incremental index maintenance for facilitating the creation of index rows for data that changes while the creation of index rows is in progress; and
marking the created index rows as active to enable queries to use the created index rows.
