IP Library Granted Patent US 11,494,352
Granted Patent B1
US 11,494,352 · App. 17/709,234 · Granted Nov 8, 2022

Efficient deduplication of randomized file paths

Inventors: Ganeshan Ramachandran Iyer (Redmond, WA); Raghav Ramachandran (Seattle, WA); Subramanian Muralidhar (Mercer Island, WA)
Assignee: Snowflake Inc.
G06F16/215G06F16/248G06F16/24552G06F16/24573
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 11,494,352
App. No.
17/709,234
Granted
Nov 8, 2022
Kind
B1
Abstract

Embodiments of the present disclosure provide techniques for deduplicating files to be ingested by a database. A bloom filter may be built for each of a first set of files that are ingested into the database. The set of bloom filters may be stored in a metadata storage associated with the database along with file loading metadata of the first set of files. In response to receiving a set of candidate files to be ingested into the database, one or more candidate files that are duplicative of a file in the first set of files are removed from the set of candidate files, based on file loading metadata of each the first set of files and the set of candidate files to generate a reduced set of candidate files. From the reduced set of candidate files, candidate files that are not duplicative are identified and set for ingestion while candidate files that are potentially duplicative are also identified and set for further scanning.

Claims (69)

1. A method comprising:

building a bloom filter for each of a first set of files to be ingested into a data exchange to generate a set of bloom filters, wherein the data exchange includes a metadata storage where metadata including a list of files ingested is stored;

generating file loading metadata for the first set of files;

storing the set of bloom filters in the metadata storage of the data exchange; and

in response to receiving a set of candidate files to be ingested into the data exchange:

generating file loading metadata for the candidate set of files;

removing from the set of candidate files, one or more candidate files that are duplicative of a file in the first set of files based on the file loading metadata of each of the first set of files and the set of candidate files to generate a reduced set of candidate files; and

identifying from within the reduced set of candidate files, by a processing device, each candidate file that is duplicative of a file in the first set of files using the set of bloom filters.

2. The method of claim 1 , wherein identifying from the reduced set of candidate files, each candidate file that is duplicative of a file in the first set of files comprises:

for each candidate file of the reduced set of candidate files, processing the candidate file with each of the set of bloom filters to determine whether the candidate file is new or potentially duplicative of any of the first set of files; and

identifying each candidate file of the reduced set of candidate files that is determined to be potentially duplicative as requiring further analysis.

3. The method of claim 2 , further comprising:

grouping each candidate file of the reduced set of candidate files that is determined to be new together for ingestion into the data exchange.

4. The method of claim 1 , wherein storing the set of bloom filters in the metadata storage comprises:

serializing the set of bloom filters; and

storing the serialized set of bloom filters in a slice of the metadata storage dedicated to the set of bloom filters.

5. The method of claim 2 , further comprising:

retrieving each of the set of bloom filters from the metadata storage;

deserializing each of the set of bloom filters; and

caching each of the set of bloom filters in a cache dedicated to the set of bloom filters.

6. The method of claim 5 , wherein each of the set of bloom filters is retrieved using a point lookup.

7. The method of claim 1 , wherein removing the one or more duplicative candidate files from the set of candidate files comprises:

using a minimum and maximum pruning technique to remove duplicative candidate files from the set of candidate files based on the file loading metadata of each of the first set of files and the set of candidate files.

8. A system comprising:

a memory; and

a processing device operatively coupled to the memory, the processing device to:

build a bloom filter for each of a first set of files to be ingested into a data exchange to generate a set of bloom filters, wherein the data exchange includes a metadata storage where metadata including a list of files ingested is stored;

generate file loading metadata for the first set of files;

store the set of bloom filters in the metadata storage of the data exchange; and

in response to receiving a set of candidate files to be ingested into the data exchange:

generate file loading metadata for the candidate set of files;

remove from the set of candidate files, one or more candidate files that are duplicative of a file in the first set of files based on the file loading metadata of each of the first set of files and the set of candidate files to generate a reduced set of candidate files; and

identify from within the reduced set of candidate files, by a processing device, each candidate file that is duplicative of a file in the first set of files using the set of bloom filters.

9. The system of claim 8 , wherein to identify from the reduced set of candidate files, each candidate file that is duplicative of a file in the first set of files, the processing device is to:

for each candidate file of the reduced set of candidate files, process the candidate file with each of the set of bloom filters to determine whether the candidate file is new or potentially duplicative of any of the first set of files; and

identify each candidate file of the reduced set of candidate files that is determined to be potentially duplicative as requiring further analysis.

10. The system of claim 9 , wherein the processing device is further to:

group each candidate file of the reduced set of candidate files that is determined to be new together for ingestion into the data exchange.

11. The system of claim 8 , wherein to store the set of bloom filters in the metadata storage, the processing device is to:

serialize the set of bloom filters; and

store the serialized set of bloom filters in a slice of the metadata storage dedicated to the set of bloom filters.

12. The system of claim 9 , wherein the processing device is further to:

retrieve each of the set of bloom filters from the metadata storage;

deserialize each of the set of bloom filters; and

cache each of the set of bloom filters in a cache dedicated to the set of bloom filters.

13. The system of claim 12 , wherein the processing device retrieves each of the set of bloom filters using a point lookup.

14. The system of claim 8 , wherein to remove the one or more duplicative candidate files from the set of candidate files, the processing device is to:

use a minimum and maximum pruning technique to remove duplicative candidate files from the set of candidate files based on the file loading metadata of each of the first set of files and the set of candidate files.

15. A non-transitory computer-readable medium having instructions stored thereon which, when executed by a processing device, cause the processing device to:

build a bloom filter for each of a first set of files to be ingested into a data exchange to generate a set of bloom filters, wherein the data exchange includes a metadata storage where metadata including a list of files ingested is stored;

generate file loading metadata for the first set of files;

store the set of bloom filters in the metadata storage of the data exchange; and

in response to receiving a set of candidate files to be ingested into the data exchange:

generate file loading metadata for the candidate set of files;

remove from the set of candidate files, one or more candidate files that are duplicative of a file in the first set of files based on the file loading metadata of each of the first set of files and the set of candidate files to generate a reduced set of candidate files; and

identify from within the reduced set of candidate files, by a processing device, each candidate file that is duplicative of a file in the first set of files using the set of bloom filters.

16. The system of claim 8 , wherein to identify from the reduced set of candidate files, each candidate file that is duplicative of a file in the first set of files, the processing device is to:

for each candidate file of the reduced set of candidate files, process the candidate file with each of the set of bloom filters to determine whether the candidate file is new or potentially duplicative of any of the first set of files; and

identify each candidate file of the reduced set of candidate files that is determined to be potentially duplicative as requiring further analysis.

17. The system of claim 9 , wherein the processing device is further to:

group each candidate file of the reduced set of candidate files that is determined to be new together for ingestion into the data exchange.

18. The system of claim 8 , wherein to store the set of bloom filters in the metadata storage, the processing device is to:

serialize the set of bloom filters; and

store the serialized set of bloom filters in a slice of the metadata storage dedicated to the set of bloom filters.

19. The system of claim 9 , wherein the processing device is further to:

retrieve each of the set of bloom filters from the metadata storage;

deserialize each of the set of bloom filters; and

cache each of the set of bloom filters in a cache dedicated to the set of bloom filters.

20. The system of claim 12 , wherein the processing device retrieves each of the set of bloom filters using a point lookup.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2022
From: IYER, GANESHAN RAMACHANDRAN; RAMACHANDRAN, RAGHAV; MURALIDHAR, SUBRAMANIAN
To: SNOWFLAKE INC.
Reel/Frame 059838/0847 →
Cited By (1)
US 12,505,242