IP Library Granted Patent US 10,366,247
Granted Patent B2
US 10,366,247 · App. 16/024,792 · Granted Jul 30, 2019

Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data

Inventors: James Douglas Beecham (Mill Valley, CA); Christopher Edward Struttmann (Indialantic, FL); Scott Nathaniel Goldfarb (Washington, MI)
Assignee: ALTR Solutions, Inc.
G06F21/6218G06F16/9014G06F16/9024H04L9/3239G06F2221/2107
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 10,366,247
App. No.
16/024,792
Granted
Jul 30, 2019
Kind
B2
Abstract

Provided is a process including: obtaining criteria to select plain-text values in a lower-trust database; selecting, based on the criteria, a first plain-text value; in response, determining a first reference value; storing the first plain-text value in a higher-trust database in a second entry identified by the first reference value; storing the first reference value in the first entry of the lower-trust database; selecting another instance of the first plain-text value stored requested to be stored in a third entry in the lower-trust database; and in response, storing the first reference value in the third entry.

Claims (66)

1. A tangible, non-transitory, machine-readable medium storing instructions that when executed by one or more processors effectuate operations comprising:

obtaining, with one or more processors, criteria to select plain-text values in, or requested to be written to, a lower-trust database;

selecting, based on the criteria, a first plain-text value stored in, or requested to be stored in, a first entry in the lower-trust database;

in response to selecting the first plain-text value, determining, with one or more processors, a first reference value, wherein:

the criteria indicate whether the plain-text values are to be stored in the lower-trust database or a higher-trust database;

the lower-trust database stores relationships between both plain-text values stored in the lower-trust database and plain-text values stored in the higher-trust database; and

the first reference value does not reveal the first plain-text value without access to the higher-trust database;

storing, with one or more processors, the first plain-text value in the higher-trust database in a second entry identified by the first reference value;

storing, with one or more processors, the first reference value in the first entry of the lower-trust database;

selecting, with one or more processors, another instance of the first plain-text value stored in, or requested to be stored in, a third entry in the lower-trust database, the third entry being a different entry from the first entry; and

in response to selecting another instance of the first plain-text value stored in, or requested to be stored in, the third entry in the lower-trust database, storing, with one or more processors, a value associated with, or equal to, the first reference value.

2. The medium of claim 1 , wherein:

the criteria specify a field in multiple tables of the lower-trust database.

3. The medium of claim 1 , wherein:

the criteria include a pattern with a wildcard operator and that specifies strings.

4. The medium of claim 1 , wherein:

selecting the first plain-text value comprises selecting values in a designated field of the lower-trust database, the first entry being in the designated field; and

storing the first reference value in the first entry comprises overwriting the first plain-text value in the first entry.

5. The medium of claim 4 , wherein selecting the first plain-text value stored in, or requested to be stored in, a third entry in the lower-trust database comprises:

determining that the third entry is in another instance of the designated field in a different table from a table having the first entry; and

in response to determining that the third entry is in another instance of the designated field, searching entries in the another instance of the designated field to identify entries having the first plain-text value.

6. The medium of claim 5 , wherein:

each instance of the first plain-text value identified by the searching is replaced by the first reference value in the lower-trust database.

7. The medium of claim 4 , wherein the third entry in the lower-trust database is a different field from a field having the first entry, and fields of the lower-trust database correspond to columns of tables.

8. The medium of claim 1 , wherein both storing the first plain-text value in the higher-trust database in the second entry identified by the first reference value and storing the first reference value in the first entry of the lower-trust database are performed in response to receiving a request to write the first plain-text value to the first entry.

9. The medium of claim 1 , wherein:

selecting the first plain-text value stored in, or to be stored in, the third entry in the lower-trust database comprises receiving a request to write the first plain-text value in the third entry and, in response, selecting the first plain-text value; and

the same instance of the first plain-text value, in the second entry, in the higher trust database is uniquely identified by both the first entry and the third entry in the lower-trust database.

10. The medium of claim 1 , wherein:

the value associated with, or equal to, the first reference value is equal to the first reference value; and

the lower-trust database stores relationships based on correspondence between foreign keys and keys in different database tables.

11. The medium of claim 1 , wherein:

the value associated with, or equal to, the first reference value is a value paired with the first reference value by an index accessible to the lower-trust database without accessing the higher-trust database.

12. The medium of claim 1 , comprising:

receiving a second plain-text value, different from the first plain-text value, in a write request after storing the first reference value in the first entry of the lower-trust database;

determining that the second plain-text value does not satisfy the criteria and, in response, storing the second plaint text value in the lower-trust database; and

replacing a third plain-text value that satisfies the criteria with a second reference value in the lower-trust database, the third plain-text value being different from the first plain-text value and the second reference value being different from the first reference value, the second reference value pointing, directly or indirectly, to a fourth entry of the higher-trust database at which the third plain-text value is stored.

13. The medium of claim 1 , wherein:

the first reference value is based on a cryptographic hash digest based on both the first plain-text value and a tenant identifier of one of a plurality of tenants having access to the higher-trust database.

14. The medium of claim 1 , wherein the operations comprise:

storing a plurality of values associated with the first reference value, each value in the plurality being based on a different subset of the first plain-text value; and

determining whether the first plain-text value satisfy query criteria based on at least some of the plurality of values without accessing the first plain-text value in the higher-trust database.

15. The medium of claim 1 , wherein the operations comprise:

receiving a query response that includes multiple instances of the first reference value;

retrieving the first plain-text value from the higher-trust database with the first reference value; and

replacing the multiple instances of the first reference value in the query response without retrieving the first plain-text value from the higher-trust database for every instance of the first reference value to service the query.

16. The medium of claim 15 , wherein the operations comprise:

detecting duplicates of the first reference value with steps for expediting detection of duplicates.

17. The medium of claim 1 , wherein the operations comprise:

steps for storing data in a directed acyclic graph of cryptographic hash pointers.

18. The medium of claim 1 , wherein the operations comprise:

steps for determining a reference value; and

steps for logging access requests.

19. The medium of claim 1 , wherein the operations comprise:

executing a user-facing application and accessing both the lower-trust database and the higher-trust database with the user-facing application via structured query language statements sent by the user-facing application that are independent of the higher-trust database and exclusively reference fields and tables of the lower-trust database, wherein the user-facing application is configured to interface with the lower-trust database without regard to whether the higher-trust database is used.

20. A method, comprising:

obtaining, with one or more processors, criteria to select plain-text values in, or requested to be written to, a lower-trust database;

selecting, based on the criteria, a first plain-text value stored in, or requested to be stored in, a first entry in the lower-trust database;

in response to selecting the first plain-text value, determining, with one or more processors, a first reference value, wherein:

the criteria indicate whether the plain-text values are to be stored in the lower-trust database or a higher-trust database;

the lower-trust database stores relationships between both plain-text values stored in the lower-trust database and plain-text values stored in the higher-trust database; and

the first reference value does not reveal the first plain-text value without access to the higher-trust database;

storing, with one or more processors, the first plain-text value in the higher-trust database in a second entry identified by the first reference value;

storing, with one or more processors, the first reference value in the first entry of the lower-trust database;

selecting, with one or more processors, another instance of the first plain-text value stored in, or requested to be stored in, a third entry in the lower-trust database, the third entry being a different entry from the first entry; and

in response to selecting another instance of the first plain-text value stored in, or requested to be stored in, the third entry in the lower-trust database, storing, with one or more processors, a value associated with, or equal to, the first reference value.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2019
From: BEECHAM, JAMES DOUGLAS; STRUTTMANN, CHRISTOPHER EDWARD
To: ALTR SOLUTIONS, INC.
Reel/Frame 049492/0114 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2019
From: GOLDFARB, SCOTT NATHANIEL
To: ALTR SOLUTIONS, INC.
Reel/Frame 049492/0168 →
Continuity (7)
Continuation In Part 15845436 · Dec 18, 2017
Continuation 15675490 · Aug 11, 2017
Continuation In Part 15171347 · Jun 2, 2016
Provisional Application 62527330 · Jun 30, 2017
Provisional Application 62374278 · Aug 12, 2016
Provisional Application 62169823 · Jun 2, 2015
Related Publication 20180307857A1 · Oct 25, 2018
Cited By (6)
US 12,222,955 US 12,278,856 US 12,517,893 US 12,566,692 US 12,671,728 US 12,681,919