# US 2020/0401722 A1 · Share based data overlap count in a multiple tenant database system

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

- Number: US 2020/0401722 A1
- Document ID: US20200401722A1
- Status: Published application
- Kind: A1
- Application number: 17/004,375
- Filed: 2020-08-27
- Published: 2020-12-24
- Earliest claimed: 2019-03-28
- Assignees: Snowflake Inc.
- Applicants: Snowflake Inc.
- Inventors: Justin Langseth; Matthew J. Glickman; Christian Kleinerman; Robert Muglia; Daniel Freundel; Thierry Cruanes; Allison Waingold Lee
- Web page: https://patentgrep.com/patent/US20200401722A1

## CPC

- G06F 21/6227: {where protection concerns the structure of data, e.g. records, types, queries}
- G06F 16/2456: {Join operations}
- G06F 16/256: {in federated or virtual databases}
- G06F 21/6245: {Protecting personal data, e.g. for financial or medical purposes}
- H04L 9/0643: {Hash functions, e.g. MD5, SHA, HMAC or f9 MAC}
- H04L 9/0894: {Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage}
- H04L 9/3242: {involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Systems, methods, and devices for generating a secure join of database data are disclosed. A method includes determining data stored in a first account to be compared with data stored in a second account. The method includes determining a function for generating a secure join key, wherein the secure join key includes a hashed string that hashes one or more of a data entry of the first account and a data entry of the second account. The method includes providing the secure join key to the first account and/or the second account.

## Claims

### Claim 1

A method, comprising:
determining data stored in a first account and data stored in a second account to be analyzed, wherein the data stored in the first account and the data stored in the second account each comprise a plurality of datapoints;
providing to the second account a function to generate a secure join key; and
executing, by a processor, the function to generate the secure join key, wherein the secure join key comprises the data of the first account and the data of the second account.

### Claim 2 (depends on 1)

The method of claim 1, wherein the secure join key comprises a hash string of the datapoints of the first account and the datapoints of the second account.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
executing a second function to perform a count of overlapping datapoints between the first account and the second account.

### Claim 4 (depends on 3)

The method of claim 3, wherein performing the count comprises performing a secure join overlap count and wherein the secure join overlap count is performed without revealing any datapoints of the first or second account or any datapoints that are not overlapping between the first or second account.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
appending a salt value to each of the datapoints of the first account and each of the datapoints of the second account; and
providing the salted datapoints of the first and second accounts to the function, wherein the secure join key comprises a hash string of salted datapoints of the first account and salted datapoints of the second account.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
providing an account identification associated with the second account to the function, wherein the secure join key comprises a hash string of datapoints of the first account, datapoints of the second account, and the account identification associated with the second account.

### Claim 7 (depends on 6)

The method of claim 6, wherein the function utilizes a one-way hash to generate the secure join key based on the datapoints of the first account, the datapoints of the second account, and the account identification associated with the second account.

### Claim 8 (depends on 1)

The method of claim 1, wherein the function executes on compute nodes associated with the second account and the first account does not attain visibility into whether the function was executed.

### Claim 9 (depends on 1)

The method of claim 1, wherein providing the function to the second account comprises:
generating a share object comprising procedural logic for the function; and
granting access rights to the share object to the second account.

### Claim 10 (depends on 9)

The method of claim 9, wherein the second account accesses the function using the share object and without accessing the procedural logic.

### Claim 11

A system, comprising:
a memory; and
a processor, operatively coupled to the memory, the processor to:
determine data stored in a first account and data stored in a second account to be analyzed, wherein the data stored in the first account and the data stored in the second account each comprise a plurality of datapoints;
provide to the second account a function to generate a secure join key; and
execute, by a processor, the function to generate the secure join key, wherein the secure join key comprises the data of the first account and the data of the second account.

### Claim 12 (depends on 11)

The system of claim 11, wherein the secure join key comprises a hash string of the datapoints of the first account and the datapoints of the second account.

### Claim 13 (depends on 12)

The system of claim 12, wherein the processor is further to:
execute a second function to perform a count of overlapping datapoints between the first account and the second account.

### Claim 14 (depends on 13)

The system of claim 13, wherein to perform the count, the processor is to perform a secure join overlap count and wherein the processor performs the secure join overlap count without revealing any datapoints of the first or second account or any datapoints that are not overlapping between the first or second account.

### Claim 15 (depends on 11)

The system of claim 11, wherein the processor is further to:
append a salt value to each of the datapoints of the first account and each of the datapoints of the second account; and
provide the salted datapoints of the first and second accounts to the function, wherein the secure join key comprises a hash string of salted datapoints of the first account and salted datapoints of the second account.

### Claim 16 (depends on 11)

The system of claim 11, wherein the processor is further to:
provide an account identification associated with the second account to the function, wherein the secure join key comprises a hash string of datapoints of the first account, datapoints of the second account, and the account identification associated with the second account.

### Claim 17 (depends on 16)

The system of claim 16, wherein the function utilizes a one-way hash to generate the secure join key based on the datapoints of the first account, the datapoints of the second account, and the account identification associated with the second account.

### Claim 18 (depends on 11)

The system of claim 11, wherein the function executes on compute nodes associated with the second account and the first account does not attain visibility into whether the function was executed.

### Claim 19 (depends on 11)

The system of claim 11, wherein to provide the function to the second account, the processor is to:
generate a share object comprising procedural logic for the function; and
grant access rights to the share object to the second account.

### Claim 20 (depends on 19)

The system of claim 19, wherein the second account accesses the function using the share object and without accessing the procedural logic.

### Claim 21

A non-transitory computer-readable medium having instructions stored thereon which, when executed by a processor cause the processor to:
determine data stored in a first account and data stored in a second account to be analyzed, wherein the data stored in the first account and the data stored in the second account each comprise a plurality of datapoints;
provide to the second account a function to generate a secure join key; and
execute, by a processor, the function to generate the secure join key, wherein the secure join key comprises the data of the first account and the data of the second account.

### Claim 22 (depends on 21)

The non-transitory computer-readable medium of claim 21, wherein the secure join key comprises a hash string of the datapoints of the first account and the datapoints of the second account.

### Claim 23 (depends on 22)

The non-transitory computer-readable medium of claim 22, wherein the processor is further to:
execute a second function to perform a count of overlapping datapoints between the first account and the second account.

### Claim 24 (depends on 23)

The non-transitory computer-readable medium of claim 23, wherein to perform the count, the processor is to perform a secure join overlap count and wherein the processor performs the secure join overlap count without revealing any datapoints of the first or second account or any datapoints that are not overlapping between the first or second account.

### Claim 25 (depends on 21)

The non-transitory computer-readable medium of claim 21, wherein the processor is further to:
append a salt value to each of the datapoints of the first account and each of the datapoints of the second account; and
provide the salted datapoints of the first and second accounts to the function, wherein the secure join key comprises a hash string of salted datapoints of the first account and salted datapoints of the second account.

### Claim 26 (depends on 21)

The non-transitory computer-readable medium of claim 21, wherein the processor is further to:
provide an account identification associated with the second account to the function, wherein the secure join key comprises a hash string of datapoints of the first account, datapoints of the second account, and the account identification associated with the second account.

### Claim 27 (depends on 26)

The non-transitory computer-readable medium of claim 26, wherein the function utilizes a one-way hash to generate the secure join key based on the datapoints of the first account, the datapoints of the second account, and the account identification associated with the second account.

### Claim 28 (depends on 21)

The non-transitory computer-readable medium of claim 21, wherein the function executes on compute nodes associated with the second account and the first account does not attain visibility into whether the function was executed.

### Claim 29 (depends on 21)

The non-transitory computer-readable medium of claim 21, wherein to provide the function to the second account, the processor is to:
generate a share object comprising procedural logic for the function; and
grant access rights to the share object to the second account.

### Claim 30 (depends on 29)

The non-transitory computer-readable medium of claim 29, wherein the second account accesses the function using the share object and without accessing the procedural logic.
