IP Library Granted Patent US 12,670,130
Granted Patent B2
US 12,670,130 · App. 18/625,076 · Granted Jun 30, 2026

Record management for database systems using fuzzy field matching

Inventor: Nathan Halko (Boulder, CO)
G06F16/21G06F16/2468
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,670,130
App. No.
18/625,076
Granted
Jun 30, 2026
Kind
B2
Abstract

Devices, systems and methods are provided for managing records. One method involves constructing a fuzzy match graph data structure with edges between different field values for a fuzzy matched field of a plurality of records in accordance with a matching rule, assigning unique identifiers to different subgraphs of field values within the fuzzy match graph data structure, determining a match key value associated with a respective record based on a respective unique identifier assigned to a respective subgraph of field values including a respective field value for the fuzzy matched field of the respective record, constructing a heterogenous graph data structure having edges between the respective match key values associated with the respective records of the plurality of records, identifying a subset of related records using the heterogenous graph data structure, and performing one or more actions on the subset of related records at a database system.

Claims (31)

1 . A method of managing a plurality of existing records at a database system, the method comprising:

obtaining, at the database system, a data stream for ingestion by the database system from a first data source different from a second data source, the second data source being associated with the plurality of existing records at the database system, the data stream comprising one or more new or updated records;

clustering respective records of the plurality of existing records and the one or more new or updated records into clusters of related records based at least in part on an actual field value for an exact matched field of the respective record comprising a common value for the exact matched field of a respective cluster of related records and one or more respective values for one or more fuzzy matched fields of the respective record;

identifying a distinct subset of related records to be assigned to an entity from among the respective cluster of related records using one or more fuzzy matching criteria for the one or more fuzzy matched fields of the respective cluster of related records, the distinct subset of related records including at least one new or updated record from the first data source and at least one existing record associated with the second data source, wherein query operations to identify the distinct subset are t×log(k), where t is a number of fuzzy match identifiers that is less than a number of fields per record and k is a number of distinct field values for the one or more fuzzy matched fields that is less than a total number of records;

selecting one or more values for the one or more fuzzy matched fields from a respective record of the distinct subset of related records, resulting in one or more selected values for the one or more fuzzy matched fields; and

creating, in a data table maintaining unified profiles at the database system, a unified record for the entity corresponding to the distinct subset of related records using the distinct subset of related records at the database system, the unified record comprising the common value for the exact matched field and the one or more selected values for the one or more fuzzy matched fields.

2 . The method of claim 1 , wherein creating the unified record comprises creating a top level entity for the distinct subset of related records at the database system.

3 . The method of claim 1 , wherein the one or more fuzzy matching criteria include at least one of semantic similarity, typographical similarity and phonetic similarity.

4 . The method of claim 1 , wherein:

the exact matched field comprises an email field; and

clustering respective records of the plurality of existing records into the clusters of related records comprises identifying a group of records of the plurality of existing records and the one or more new or updated records having the common value for the email field of the respective records of the group of records.

5 . The method of claim 4 , wherein the one or more fuzzy matched fields comprises a name field and identifying the distinct subset of related records comprises identifying a distinct subset of the group of records having respective values for the name field that fuzzy match with a desired similarity.

6 . The method of claim 5 , further comprising determining the name field values fuzzy match based on a pairwise distance between the respective values for the name field.

7 . The method of claim 1 , wherein identifying the distinct subset of related records comprises identifying the distinct subset of related records based on a pairwise distance between a fuzzy matched field of respective pairs of related records of the respective cluster of related records.

8 . The method of claim 1 , further comprising assigning a common match key value to the distinct subset of related records that fuzzy match a fuzzy matched field.

9 . The method of claim 8 , further comprising calculating the common match key value associated with a respective record of the distinct subset of related records as a function of a respective field value for the fuzzy matched field of the respective record.

10 . The method of claim 1 , wherein creating the unified record comprises selecting the one or more values for the one or more fuzzy matched fields of the unified record from a respective record of the distinct subset of related records having a most recent timestamp.

11 . The method of claim 1 , further comprising deduplicating a database at the database system by deleting the distinct subset of related records.

12 . At least one non-transitory machine-readable storage medium that provides instructions that, when executed by at least one processor, are configurable to cause the at least one processor to perform operations comprising:

obtaining a data stream for ingestion by a database system from a first data source different from a second data source, the second data source being associated with a plurality of existing records at the database system, the data stream comprising one or more new or updated records;

clustering respective records of the plurality of existing records at the database system and the one or more new or updated records into clusters of related records based at least in part on an actual field value for an exact matched field of the respective record comprising a common value for the exact matched field of a respective cluster of related records and one or more respective values for one or more fuzzy matched fields of the respective record;

identifying a distinct subset of related records to be assigned to an entity from among the respective cluster of related records using one or more fuzzy matching criteria for the one or more fuzzy matched fields of the respective cluster of related records, the distinct subset of related records including at least one new or updated record from the first data source and at least one existing record associated with the second data source, wherein query operations to identify the distinct subset are t×log(k), where t is a number of fuzzy match identifiers that is less than a number of fields per record and k is a number of distinct field values for the one or more fuzzy matched fields that is less than a total number of records;

selecting one or more values for the one or more fuzzy matched fields from a respective record of the distinct subset of related records, resulting in one or more selected values for the one or more fuzzy matched fields; and

creating a unified record for the entity corresponding to the distinct subset of related records in a data table maintaining unified profiles at the database system using the distinct subset of related records at the database system, the unified record comprising the common value for the exact matched field and the one or more selected values for the one or more fuzzy matched fields.

13 . The at least one non-transitory machine-readable storage medium of claim 12 , wherein the unified record comprises a top level entity for the distinct subset of related records at the database system.

14 . The at least one non-transitory machine-readable storage medium of claim 12 , wherein the exact matched field comprises an email field.

15 . The at least one non-transitory machine-readable storage medium of claim 14 , wherein the one or more fuzzy matched fields comprises a name field.

16 . The at least one non-transitory machine-readable storage medium of claim 12 , wherein a first cluster of the clusters of related records comprises a group of records of the plurality of existing records and the one or more new or updated records having the common value for an email field of the respective records of the group of records.

17 . The at least one non-transitory machine-readable storage medium of claim 16 , wherein the distinct subset of related records comprises a distinct subset of the group of records having respective values for a name field of the respective records of the distinct subset of the group of records that fuzzy match with a desired similarity.

18 . The method of claim 1 , wherein selecting one or more values for the one or more fuzzy matched fields comprises selecting the one or more values for the one or more fuzzy matched fields from the respective record of the distinct subset of related records that is associated with one of the first data source and the second data source based on a quality metric.

19 . The method of claim 1 , further comprising referencing, by an instance of a virtual application dynamically created by an application platform of the database system at run time, the unified record rather than another record associated with the first data source or the second data source.

Continuity (2)
Continuation 17659615 · Apr 18, 2022
Related Publication 20240248882A1 · Jul 25, 2024
References Cited (163)
US 5577188A · Zhu · 1996 [cited by applicant]
US 5608872A · Schwartz et al. · 1997 [cited by applicant]
US 5649104A · Carleton et al. · 1997 [cited by applicant]
US 5715450A · Ambrose et al. · 1998 [cited by applicant]
US 5761419A · Schwartz et al. · 1998 [cited by applicant]
US 5819038A · Carleton et al. · 1998 [cited by applicant]
US 5821937A · Tonelli et al. · 1998 [cited by applicant]
US 5831610A · Tonelli et al. · 1998 [cited by applicant]
US 5873096A · Lim et al. · 1999 [cited by applicant]
US 5918159A · Fomukong et al. · 1999 [cited by applicant]
US 5963953A · Cram et al. · 1999 [cited by applicant]
US 6092083A · Brodersen et al. · 2000 [cited by applicant]
US 6161149A · Achacoso et al. · 2000 [cited by applicant]
US 6169534B1 · Raffel et al. · 2001 [cited by applicant]
US 6178425B1 · Brodersen et al. · 2001 [cited by applicant]
US 6189011B1 · Lim et al. · 2001 [cited by applicant]
US 6216135B1 · Brodersen et al. · 2001 [cited by applicant]
US 6233617B1 · Rothwein et al. · 2001 [cited by applicant]
US 6266669B1 · Brodersen et al. · 2001 [cited by applicant]
US 6295530B1 · Ritchie et al. · 2001 [cited by applicant]
US 6324568B1 · Diec et al. · 2001 [cited by applicant]
US 6324693B1 · Brodersen et al. · 2001 [cited by applicant]
US 6336137B1 · Lee et al. · 2002 [cited by applicant]
US D454139S · Feldcamp et al. · 2002 [cited by applicant]
US 6367077B1 · Brodersen et al. · 2002 [cited by applicant]
US 6393605B1 · Loomans · 2002 [cited by applicant]
US 6405220B1 · Brodersen et al. · 2002 [cited by applicant]
US 6434550B1 · Warner et al. · 2002 [cited by applicant]
US 6446089B1 · Brodersen et al. · 2002 [cited by applicant]
US 6535909B1 · Rust · 2003 [cited by applicant]
US 6549908B1 · Loomans · 2003 [cited by applicant]
US 6553563B2 · Ambrose et al. · 2003 [cited by applicant]
US 6560461B1 · Fomukong et al. · 2003 [cited by applicant]
US 6574635B2 · Stauber et al. · 2003 [cited by applicant]
US 6577726B1 · Huang et al. · 2003 [cited by applicant]
US 6601087B1 · Zhu et al. · 2003 [cited by applicant]
US 6604117B2 · Lim et al. · 2003 [cited by applicant]
US 6604128B2 · Diec · 2003 [cited by applicant]
US 6609150B2 · Lee et al. · 2003 [cited by applicant]
US 6621834B1 · Scherpbier et al. · 2003 [cited by applicant]
US 6654032B1 · Zhu et al. · 2003 [cited by applicant]
US 6665648B2 · Brodersen et al. · 2003 [cited by applicant]
US 6665655B1 · Warner et al. · 2003 [cited by applicant]
US 6684438B2 · Brodersen et al. · 2004 [cited by applicant]
US 6711565B1 · Subramaniam et al. · 2004 [cited by applicant]
US 6724399B1 · Katchour et al. · 2004 [cited by applicant]
US 6728702B1 · Subramaniam et al. · 2004 [cited by applicant]
US 6728960B1 · Loomans et al. · 2004 [cited by applicant]
US 6732095B1 · Warshavsky et al. · 2004 [cited by applicant]
US 6732100B1 · Brodersen et al. · 2004 [cited by applicant]
US 6732111B2 · Brodersen et al. · 2004 [cited by applicant]
US 6754681B2 · Brodersen et al. · 2004 [cited by applicant]
US 6763351B1 · Subramaniam et al. · 2004 [cited by applicant]
US 6763501B1 · Zhu et al. · 2004 [cited by applicant]
US 6768904B2 · Kim · 2004 [cited by applicant]
US 6772229B1 · Achacoso et al. · 2004 [cited by applicant]
US 6782383B2 · Subramaniam et al. · 2004 [cited by applicant]
US 6804330B1 · Jones et al. · 2004 [cited by applicant]
US 6826565B2 · Ritchie et al. · 2004 [cited by applicant]
US 6826582B1 · Chatterjee et al. · 2004 [cited by applicant]
US 6826745B2 · Coker · 2004 [cited by applicant]
US 6829655B1 · Huang et al. · 2004 [cited by applicant]
US 6842748B1 · Warner et al. · 2005 [cited by applicant]
US 6850895B2 · Brodersen et al. · 2005 [cited by applicant]
US 6850949B2 · Warner et al. · 2005 [cited by applicant]
US 7062502B1 · Kesler · 2006 [cited by applicant]
US 7069231B1 · Cinarkaya et al. · 2006 [cited by applicant]
US 7181758B1 · Chan · 2007 [cited by applicant]
US 7289976B2 · Kihneman et al. · 2007 [cited by applicant]
US 7340411B2 · Cook · 2008 [cited by applicant]
US 7356482B2 · Frankland et al. · 2008 [cited by applicant]
US 7401094B1 · Kesler · 2008 [cited by applicant]
US 7412455B2 · Dillon · 2008 [cited by applicant]
US 7508789B2 · Chan · 2009 [cited by applicant]
US 7620655B2 · Larsson et al. · 2009 [cited by applicant]
US 7698160B2 · Beaven et al. · 2010 [cited by applicant]
US 7730478B2 · Weissman · 2010 [cited by applicant]
US 7779475B2 · Jakobson et al. · 2010 [cited by applicant]
US 8014943B2 · Jakobson · 2011 [cited by applicant]
US 8015495B2 · Achacoso et al. · 2011 [cited by applicant]
US 8032297B2 · Jakobson · 2011 [cited by applicant]
US 8082301B2 · Ahlgren et al. · 2011 [cited by applicant]
US 8095413B1 · Beaven · 2012 [cited by applicant]
US 8095594B2 · Beaven et al. · 2012 [cited by applicant]
US 8209308B2 · Rueben et al. · 2012 [cited by applicant]
US 8275836B2 · Beaven et al. · 2012 [cited by applicant]
US 8457545B2 · Chan · 2013 [cited by applicant]
US 8484111B2 · Frankland et al. · 2013 [cited by applicant]
US 8490025B2 · Jakobson et al. · 2013 [cited by applicant]
US 8504945B2 · Jakobson et al. · 2013 [cited by applicant]
US 8510045B2 · Rueben et al. · 2013 [cited by applicant]
US 8510664B2 · Rueben et al. · 2013 [cited by applicant]
US 8566301B2 · Rueben et al. · 2013 [cited by applicant]
US 8646103B2 · Jakobson et al. · 2014 [cited by applicant]
US 10685131B1 · Lunsford · 2020 [cited by examiner]
US 11514054B1 · Borthwick et al. · 2022 [cited by applicant]
US 20010044791A1 · Richter et al. · 2001 [cited by applicant]
US 20020072951A1 · Lee et al. · 2002 [cited by applicant]
US 20020082892A1 · Raffel · 2002 [cited by applicant]
US 20020129352A1 · Brodersen et al. · 2002 [cited by applicant]
US 20020140731A1 · Subramanian et al. · 2002 [cited by applicant]
US 20020143997A1 · Huang et al. · 2002 [cited by applicant]
US 20020162090A1 · Parnell et al. · 2002 [cited by applicant]
US 20020165742A1 · Robbins · 2002 [cited by applicant]
US 20030004971A1 · Gong · 2003 [cited by applicant]
US 20030018705A1 · Chen et al. · 2003 [cited by applicant]
US 20030018830A1 · Chen et al. · 2003 [cited by applicant]
US 20030066031A1 · Laane et al. · 2003 [cited by applicant]
US 20030066032A1 · Ramachandran et al. · 2003 [cited by applicant]
US 20030069936A1 · Warner et al. · 2003 [cited by applicant]
US 20030070000A1 · Coker et al. · 2003 [cited by applicant]
US 20030070004A1 · Mukundan et al. · 2003 [cited by applicant]
US 20030070005A1 · Mukundan et al. · 2003 [cited by applicant]
US 20030074418A1 · Coker et al. · 2003 [cited by applicant]
US 20030120675A1 · Stauber et al. · 2003 [cited by applicant]
US 20030151633A1 · George et al. · 2003 [cited by applicant]
US 20030159136A1 · Huang et al. · 2003 [cited by applicant]
US 20030187921A1 · Diec et al. · 2003 [cited by applicant]
US 20030189600A1 · Gune et al. · 2003 [cited by applicant]
US 20030204427A1 · Gune et al. · 2003 [cited by applicant]
US 20030206192A1 · Chen et al. · 2003 [cited by applicant]
US 20030225730A1 · Warner et al. · 2003 [cited by applicant]
US 20040001092A1 · Rothwein et al. · 2004 [cited by applicant]
US 20040010489A1 · Rio et al. · 2004 [cited by applicant]
US 20040015981A1 · Coker et al. · 2004 [cited by applicant]
US 20040027388A1 · Berg et al. · 2004 [cited by applicant]
US 20040128001A1 · Levin et al. · 2004 [cited by applicant]
US 20040186860A1 · Lee et al. · 2004 [cited by applicant]
US 20040193510A1 · Catahan et al. · 2004 [cited by applicant]
US 20040199489A1 · Barnes-Leon et al. · 2004 [cited by applicant]
US 20040199536A1 · Barnes-Leon et al. · 2004 [cited by applicant]
US 20040199543A1 · Braud et al. · 2004 [cited by applicant]
US 20040249789A1 · Kapoor et al. · 2004 [cited by applicant]
US 20040249854A1 · Barnes-Leon et al. · 2004 [cited by applicant]
US 20040260534A1 · Pak et al. · 2004 [cited by applicant]
US 20040260659A1 · Chan et al. · 2004 [cited by applicant]
US 20040268299A1 · Lei et al. · 2004 [cited by applicant]
US 20050050555A1 · Exley et al. · 2005 [cited by applicant]
US 20050091098A1 · Brodersen et al. · 2005 [cited by applicant]
US 20060021019A1 · Hinton et al. · 2006 [cited by applicant]
US 20080249972A1 · Dillon · 2008 [cited by applicant]
US 20090063414A1 · White et al. · 2009 [cited by applicant]
US 20090100342A1 · Jakobson · 2009 [cited by applicant]
US 20090177744A1 · Marlow et al. · 2009 [cited by applicant]
US 20110247051A1 · Bulumulla et al. · 2011 [cited by applicant]
US 20120042218A1 · Cinarkaya et al. · 2012 [cited by applicant]
US 20120218958A1 · Rangaiah · 2012 [cited by applicant]
US 20120233137A1 · Jakobson et al. · 2012 [cited by applicant]
US 20130212497A1 · Zelenko et al. · 2013 [cited by applicant]
US 20130218948A1 · Jakobson · 2013 [cited by applicant]
US 20130218949A1 · Jakobson · 2013 [cited by applicant]
US 20130218966A1 · Jakobson · 2013 [cited by applicant]
US 20130247216A1 · Cinarkaya et al. · 2013 [cited by applicant]
US 20140032556A1 · Bayliss · 2014 [cited by applicant]
US 20150254329A1 · Agarwal et al. · 2015 [cited by applicant]
US 20160314172A1 · Morton et al. · 2016 [cited by applicant]
US 20170052958A1 · Manning · 2017 [cited by examiner]
US 20190370406A1 · Bose · 2019 [cited by examiner]
US 20210004582A1 · Evans · 2021 [cited by examiner]
US 20210081380A1 · Shen · 2021 [cited by examiner]
US 20210165931A1 · Fuerst · 2021 [cited by examiner]
Raimondas Kiveris, et al, Connected Components in MapReduce and Beyond, SOCC '14: Proceedings of the ACM Symposium on Cloud Computing, Nov. 2014 pp. 1-13, https://dl.acm.org/doi/proceedings/10.1145/2670979). [cited by applicant]
Wikipedia, Bron-Kerbosch Algorithm, https://en.wikipedia.org/wiki/Bron%E2%80%93Kerbosch_algorithm. [cited by applicant]