# US 11,308,116 B2 · Accessing listings in a data exchange

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

- Number: US 11,308,116 B2
- Document ID: US11308116B2
- Status: Granted
- Kind: B2
- Application number: 17/015,485
- Filed: 2020-09-09
- Published: 2020-12-31
- Granted: 2022-04-19
- Earliest claimed: 2019-05-31
- Assignees: Snowflake Inc.
- Applicants: Snowflake, Inc.
- Inventors: Pui Kei Johnston Chu; Benoit Dageville; Matthew J. Glickman; Christian Kleinerman; Prasanna Krishnan; Justin Langseth
- Web page: https://patentgrep.com/patent/US11308116B2

## CPC

- G06F 16/254: {Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses}
- G06F 21/6227: {where protection concerns the structure of data, e.g. records, types, queries}
- G06F 16/21: Design, administration or maintenance of databases
- G06F 16/2456: {Join operations}
- G06F 16/252: {between a Database Management System and a front-end application}
- G06F 21/41: where a single sign-on provides access to a plurality of computers
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A data warehouse storing databases for a plurality of users, including service providers hosting data for other users of the data warehouse may implement a data exchange. The data warehouse to verify identity of users and execute instructions with respect to databases of the data warehouse.

## Claims

### Claim 1

A method of providing controlled access to a data exchange comprising:
creating, in the data exchange, a listing referencing data of a first database of a plurality of databases, wherein the listing comprises access controls and a data share associated with a first user, the access controls comprising controls on access to the data share by a second user;
adding the listing to a catalog comprising one or more selectable listings; and
in response to receiving a request from the second user to access the listing from the catalog:
filtering, by a hardware processor, the data of the first database based on the access controls of the listing to generate filtered data of the data of the first database;
creating a reference database comprising additional data from a second database and a reference to the filtered data that was filtered from the data of the first database, the reference database comprising a secure database view supporting database operations to the filtered data using the reference to the filtered data within the first database and the additional data from the second database, wherein the secure database view is provided by a secure join operation between the filtered data within the first database and the second database; and
adding a reference to the reference database to a set of consumed data shares associated with the second user.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
processing a query directed to the filtered data associated with the consumed data shares using the reference to the reference database.

### Claim 3 (depends on 1)

The method of claim 1, further comprising modifying the access controls of the listing to reference an identifier of the second user.

### Claim 4 (depends on 3)

The method of claim 3, wherein queries to the reference database are processed without creating a copy of the first database, and wherein creating the reference database comprises:
creating the secure database view based on an entitlement table associated with the identifier of the second user, wherein the entitlement table indicates portions of the first database accessible by the second user.

### Claim 5 (depends on 4)

The method of claim 4, wherein filtering the data of the first database comprises filtering data from the portions of the first database indicated by the entitlement table based on the access controls of the listing.

### Claim 6 (depends on 5)

The method of claim 5, wherein creating the secure database view comprises:
performing a database join of the additional data from the second database with the portions of the first database indicated by the entitlement table, such that the secure database view includes the filtered data of the first database.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
receiving a request to browse the catalog from the second user;
verifying that the second user is permitted to view the listing according to the access controls of the listing; and
in response to verifying that the second user is permitted to view the listing, presenting a representation of the listing to the second user.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
receiving metadata for the listing, the metadata describing the first database, wherein presenting the representation of the listing comprises displaying at least a portion of the metadata.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
verifying the metadata with respect to the first database prior to adding the listing to the catalog.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
presenting an interface to the second user;
receiving authentication information from the second user through the interface;
forwarding the authentication information to a service module corresponding to the first database; and
receiving verification that the second user is permitted to access the first database from the service module.

### Claim 11

A system for providing controlled access to a data exchange comprising:
a memory; and
a hardware processor, operatively coupled to the memory, the hardware processor to:
create, in the data exchange, a listing referencing data of a first database of a plurality of databases, wherein the listing comprises access controls and a data share associated with a first user, the access controls comprising controls on access to the data share by a second user;
add the listing to a catalog comprising one or more selectable listings; and
in response to a request from the second user to access the listing from the catalog, the hardware processor further to:
filter the data of the first database based on the access controls of the listing to generate filtered data of the data of the first database;
create a reference database comprising additional data from a second database and a reference to the filtered data that was filtered from the data of the first database, the reference database comprising a secure database view supporting database operations to the filtered data using the reference to the filtered data within the first database and the additional data from the second database, wherein the secure database view is provided by a secure join operation between the filtered data within the first database and the second database; and
add a reference to the reference database to a set of consumed data shares associated with the second user.

### Claim 12 (depends on 11)

The system of claim 11, wherein the hardware processor is further to: process queries directed to the filtered data associated with the consumed data shares using the reference to the reference database.

### Claim 13 (depends on 11)

The system of claim 11, wherein the hardware processor is further to: modify the access controls of the listing to reference an identifier of the second user.

### Claim 14 (depends on 13)

The system of claim 13, wherein the hardware processor is further to process queries to the reference database without creating a copy of the first database, and
wherein to create the reference database the hardware processor is to:
create the secure database view based on an entitlement table associated with the identifier of the second user, wherein the entitlement table indicates portions of the first database accessible by the second user.

### Claim 15 (depends on 14)

The system of claim 14, wherein to filter the data of the first database, the hardware processor is to filter data from the portions of the first database indicated by the entitlement table based on the access controls of the listing.

### Claim 16 (depends on 15)

The system of claim 15, wherein to create the secure database view the hardware processor is to:
perform a database join of the additional data from the second database with the portions of the first database indicated by the entitlement table, such that the secure database view includes the filtered data of the first database.

### Claim 17 (depends on 11)

The system of claim 11, wherein the hardware processor is further to:
receive a request to browse the catalog from the second user;
verify that the second user is permitted to view the listing according to the access controls of the listing; and
in response to verifying that the second user is permitted to view the listing, present a representation of the listing to the second user.

### Claim 18 (depends on 17)

The system of claim 17, wherein the hardware processor is further to:
receive metadata for the listing, the metadata describing the first database, wherein to present the representation of the listing the hardware processor is to display at least a portion of the metadata.

### Claim 19 (depends on 18)

The system of claim 18, wherein the hardware processor is further to:
verify the metadata with respect to the first database prior to adding the listing to the catalog.

### Claim 20 (depends on 11)

The system of claim 11, wherein the hardware processor is further to:
present an interface to the second user;
receive authentication information from the second user through the interface;
forward the authentication information to a service module corresponding to the first database; and
receive verification that the second user is permitted to access the first database from the service module.

### Claim 21

A non-transitory computer-readable medium having instructions stored thereon which, when executed by a hardware processor cause the hardware processor to:
create, in a data exchange, a listing referencing data of a first database of a plurality of databases, wherein the listing comprises access controls and a data share associated with a first user, the access controls comprising controls on access to the data share by a second user;
add the listing to a catalog comprising one or more selectable listings; and
in response to receiving a request from the second user to access the listing from the catalog:
filter, by the hardware processor, the data of the first database based on the access controls of the listing to generate filtered data of the data of the first database;
create a reference database comprising additional data from a second database and a reference to the filtered data that was filtered from the data of the first database, the reference database comprising a secure database view supporting database operations to the filtered data and the additional data from the second database, wherein the secure database view is provided by a secure join operation between the filtered data within the first database and the second database; and
add a reference to the reference database to a set of consumed data shares associated with the second user.

### Claim 22 (depends on 21)

The non-transitory computer-readable medium of claim 21, wherein the hardware processor is further to: process a query directed to the filtered data associated with the consumed data shares using the reference to the reference database.

### Claim 23 (depends on 21)

The non-transitory computer-readable medium of claim 21, wherein the hardware processor is further to: modify the access controls of the listing to reference an identifier of the second user.

### Claim 24 (depends on 23)

The non-transitory computer-readable medium of claim 23, wherein the hardware processor is further to process queries to the reference database without creating a copy of the first database, and
wherein to create the reference database the hardware processor is to:
create the secure database view based on an entitlement table associated with the identifier of the second user, wherein the entitlement table indicates portions of the first database accessible by the second user.

### Claim 25 (depends on 24)

The non-transitory computer-readable medium of claim 24, wherein to filter the data of the first database, the hardware processor is to filter data from the portions of the first database indicated by the entitlement table based on the access controls of the listing.

### Claim 26 (depends on 25)

The non-transitory computer-readable medium of claim 25, wherein to create the secure database view the hardware processor is to:
perform a database join of the additional data from the second database with the portions of the first database indicated by the entitlement table, such that the secure database view includes the filtered data of the first database.

### Claim 27 (depends on 21)

The non-transitory computer-readable medium of claim 21, wherein the hardware processor is further to:
receive a request to browse the catalog from the second user;
verify that the second user is permitted to view the listing according to the access controls of the listing; and
in response to verifying that the second user is permitted to view the listing, present a representation of the listing to the second user.

### Claim 28 (depends on 27)

The non-transitory computer-readable medium of claim 27, wherein the hardware processor is further to:
receive metadata for the listing, the metadata describing the first database, wherein to present the representation of the listing the hardware processor is to display at least a portion of the metadata.

### Claim 29 (depends on 28)

The non-transitory computer-readable medium of claim 28, wherein the hardware processor is further to:
verify the metadata with respect to the first database prior to adding the listing to the catalog.

### Claim 30 (depends on 21)

The non-transitory computer-readable medium of claim 21, wherein the hardware processor is further to:
present an interface to the second user;
receive authentication information from the second user through the interface;
forward the authentication information to a service module corresponding to the first database; and
receive verification that the second user is permitted to access the first database from the service module.
