# US 10,503,696 B1 · Maintaining stable record identifiers in the presence of updated data records

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

- Number: US 10,503,696 B1
- Document ID: US10503696B1
- Status: Granted
- Kind: B1
- Application number: 15/730,008
- Filed: 2017-10-11
- Granted: 2019-12-10
- Earliest claimed: 2017-10-11
- Applicants: Amperity, Inc.
- Inventors: Stephen Meyles; Yan Yan; Dan Suciu; Michael P. Fikes
- Web page: https://patentgrep.com/patent/US10503696B1

## CPC

- G06F 16/1748: {De-duplication implemented within the file system, e.g. based on file segments (de-duplication techniques in storage systems for the management of data blocks G06F3/0641)}
- G06F 16/215: Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
- G06F 16/2272: {Management thereof}
- G06F 16/2282: {Tablespace storage structures; Management thereof}
- G06F 16/285: {Clustering or classification}
- G06F 40/197: Version control (for software G06F8/71)
- G06F 16/288: {Entity relationship models}
- G06F 17/16: Matrix or vector computation {, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization (matrix transposition G06F7/78)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The present disclosure relates to optimizing one or more database tables that may include one or more redundant records. Records are clustered and assigned stable identifiers. In this manner, the underlying records within a cluster are not removed or deleted. As updates to the database are made, new clustering analyses are performed using the underlying records and any updates made. Newly identified clusters are reassigned stable identifiers.

## Claims

### Claim 1

A system comprising:
a processor;
a database that stores a database table, the database table comprising a plurality of records; and
a memory coupled to the processor, the memory comprising a plurality of instructions that cause the processor to:
organize the plurality of records into a plurality of initial clusters based on determining similarities among the plurality of records;
assign identifiers to the plurality of initial clusters that associate the initial clusters to respective identifiers;
receive an indication that the plurality of records has been updated;
organize the updated plurality of records into a plurality of subsequent clusters based on determining similarities among the updated plurality of records;
compare the plurality of subsequent clusters to the plurality of initial clusters to identify at least one new cluster that is not part of the plurality of initial clusters; and
reassign an identifier among the assigned identifiers to the at least one new cluster.

### Claim 2 (depends on 1)

The system of claim 1, wherein the plurality of instructions that cause the processor to compare, further comprises instructions that cause the processor to:
identify exact matches of clusters between the plurality of initial clusters and the plurality of subsequent clusters; and
remove the exact matches prior to reassigning the identifier.

### Claim 3 (depends on 1)

The system of claim 1, wherein the plurality of instructions that cause the processor to reassign, further comprises instructions that cause the processor to generate a confusion matrix, wherein each matrix element in the confusion matrix relates to a quantity of overlapping record elements between a respective initial cluster and a respective subsequent cluster.

### Claim 4 (depends on 1)

The system of claim 1, wherein the plurality of instructions that cause the processor to reassign, further comprises instructions that cause the processor to determine strengths of similarity between at least a portion of the plurality of subsequent clusters and at least a portion of the plurality of initial clusters.

### Claim 5 (depends on 4)

The system of claim 4, wherein the strengths of similarity are based on a number, percentage, or ratio relating to a quantity of overlapping record elements between two respective clusters.

### Claim 6 (depends on 1)

The system of claim 1, wherein the plurality of instructions further cause the processor to assign a new identifier other than the assigned identifiers to another new cluster in response to determining that the another new cluster is not similar to the plurality of initial clusters.

### Claim 7 (depends on 1)

The system of claim 1, wherein the database persistently stores the database table after the processor organizes the updated plurality of records into the plurality of subsequent clusters.

### Claim 8 (depends on 1)

The system of claim 1, wherein the plurality of instructions that cause the processor to organize the plurality of records into a plurality of initial clusters, further comprises instructions that cause the processor to:
perform a plurality of blocking operations to identify records that are likely to be classified as related pairs;
identify a plurality of record pairs, each record pair having a degree of similarity that exceeds a threshold amount; and
cluster the plurality of record pairs to generate the plurality of initial clusters.

### Claim 9

A system comprising:
a memory that stores a plurality of instructions;
a database in data communication with the memory, the database storing a plurality of records; and
a processor in data communication with the memory, the processor being configured to:
generate a plurality of first-generation clusters comprising non-overlapping sets of records among the plurality of records;
assign identifiers to identify each first-generation cluster among the plurality of first-generation clusters;
receive an indication that the plurality of records has been updated;
generate a plurality of second-generation clusters comprising non-overlapping sets of records among the updated plurality of records;
compare the plurality of second-generation clusters to the plurality of first-generation clusters to identify at least one new cluster that is not part of the plurality of first-generation clusters; and
reassign at least one identifier among the assigned identifiers to at least one new cluster.

### Claim 10 (depends on 9)

The system of claim 9, wherein the identifiers and new identifiers are named according to the contents of a corresponding record.

### Claim 11 (depends on 9)

The system of claim 9, wherein the processor is further configured to:
subsequently update the updated plurality to generate a subsequent updated plurality of records;
generate a plurality of third-generation clusters comprising non-overlapping sets of records among the subsequent updated plurality of records;
compare the plurality of third-generation clusters to the plurality of second-generation clusters to identify at least one additional cluster that is not part of the plurality of second-generation clusters; and
reassign at least one additional identifier among the assigned identifiers to at least one additional cluster.

### Claim 12 (depends on 9)

The system of claim 9, wherein the processor is further configured to reassign the least one additional identifier by generating a confusion matrix.

### Claim 13 (depends on 12)

The system of claim 12, wherein the confusion matrix comprises a first dimension representing at least a portion of the plurality of first-generation clusters and a second dimension representing at least a portion of the plurality of second-generation clusters, wherein each matrix element in the confusion matrix relates to a quantity of overlapping record elements between a respective first-generation cluster and a respective second-generation cluster.

### Claim 14 (depends on 9)

The system of claim 9, wherein the database persistently stores the plurality of records after the processor assigns new identifiers.

### Claim 15

A computer implemented method comprising:
storing a plurality of records in a database;
generating a plurality of first-generation clusters comprising non-overlapping sets of records among the plurality of records;
assigning identifiers to identify each initial cluster among the plurality of initial clusters;
receive an indication that the plurality of records has been updated;
generating a plurality of second-generation clusters comprising non-overlapping sets of records among the updated plurality of records;
comparing the plurality of second-generation clusters to the plurality of first-generation clusters;
maintaining the identifiers for clusters that are common with respect to the first-generation clusters and second-generation clusters based on the comparison; and
reassigning at least one identifier among the assigned identifiers to at least one new cluster.

### Claim 16 (depends on 15)

The method of claim 15, wherein the identifiers and new identifiers are named according to the contents of a corresponding record.

### Claim 17 (depends on 15)

The method of claim 15, further comprising:
updating the plurality of records to generate an updated plurality of records;
generating a plurality of third-generation clusters comprising non-overlapping sets of records among the subsequent updated plurality of records; and
comparing the plurality of third-generation clusters to the plurality of second-generation clusters to identify at least one additional cluster that is not part of the plurality of second-generation clusters; and
reassigning at least one additional identifier among the assigned identifiers to the at least one additional cluster.

### Claim 18 (depends on 15)

The method of claim 15, wherein reassigning at least one identifier comprises generating a confusion matrix.

### Claim 19 (depends on 15)

The method of claim 15, wherein the confusion matrix comprises a first dimension representing at least a portion of the plurality of first-generation clusters and a second dimension representing at least a portion of the plurality of second-generation clusters, wherein each matrix element in the confusion matrix relates to a quantity of overlapping record elements between a respective first-generation cluster and a respective second-generation cluster.

### Claim 20 (depends on 15)

The method of claim 15, wherein the database persistently stores the plurality of records after assigning the new identifiers.
