IP Library › Granted Patent US 12,602,399
Granted Patent B2
US 12,602,399 · App. 18/980,968 · Granted Apr 14, 2026

Database synchronization using resizable invertible bloom filters with database snapshots

Inventor: Jason Nochlin (Denver, CO)
Assignee: Fivetran Inc.
G06F16/27G06F16/2255
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,602,399
App. No.
18/980,968
Granted
Apr 14, 2026
Kind
B2
Abstract

A centralized database management system performs data synchronization with lower bandwidth consumption and higher efficiency using a resizable invertible bloom filter. The system may include a resizable invertible bloom filter module that constructs and maintains invertible bloom filters that are resizable based on a number of differences between different snapshots. The resizable invertible bloom filter module may maintain a list of possible sizes for a resizable invertible bloom filter. The resizable invertible bloom filter module may determine and maintain a list of applicable partition sizes, each partition size being a product of a divisor and a resizing factor. If the number of differences exceeds the number of expected differences and results in failure in decoding, the system may retry a larger size in a set of predetermined sizes. The system may continue to try larger sizes until a minimal size required for successful decoding is found.

Claims (46)

1 . A method comprising:

generating a first resizable invertible bloom filter of a source data table based on information of the source data table at a first point in time, the first resizable invertible bloom filter having a first size that is determined based on an estimated number of changes in the source data table between the first point in time and a second point in time;

generating a second resizable invertible bloom filter for the source data table based on information of the source data table at the second point in time, the second resizable invertible bloom filter also having the first size;

determining an actual number of changes in the source data table between the first point in time and the second point in time;

responsive to the actual number of changes being smaller than the estimated number of changes, determining a second size for the first and the second resizable invertible bloom filters, the second size being smaller than the first size;

updating the first resizable invertible bloom filter and the second resizable invertible bloom filter to have the second size;

identifying changes in the source data table that occurred between the first point in time and the second point in time based on the updated first resizable invertible bloom filter and the updated second resizable invertible bloom filter; and

sending instructions to a destination data table, the instructions comprising information to perform an operation that synchronizes the destination data table with the source data table based on the identified changes.

2 . The method of claim 1 , wherein the first and second sizes are determined based on mathematical constraints.

3 . The method of claim 1 , wherein the first and second sizes are determined based on a set of prime divisors and a set of resizing factors, and wherein each size is a product of a prime divisor of the set of prime divisors and a resizing factor of the set of resizing factors.

4 . The method of claim 3 , wherein each resizing factor of the set of resizing factors is a prime number.

5 . The method of claim 4 , wherein each prime divisor of the set of prime divisors is multiplied by each resizing factor of the set of resizing factors in descending order.

6 . The method of claim 3 , wherein each prime divisor in the set of prime divisors has a same value, and wherein each prime divisor of the set of prime divisors is multiplied by each resizing factor of the set of resizing factors.

7 . The method of claim 1 , wherein identifying the changes in the source data table further comprises:

generating a third resizable invertible bloom filter by subtracting the updated second resizable invertible bloom filter from the updated first resizable invertible bloom filter, the third resizable invertible bloom filter comprising information associated with a change in the source data table that occurred between the first point in time and the second point in time.

8 . The method of claim 7 , further comprising identifying the changes by decoding the third invertible bloom filter.

9 . A non-transitory computer-readable storage medium storing executable computer instructions that, when executed by one or more processors, cause the one or more processors to perform operations, the instructions comprising instructions to:

generate a first resizable invertible bloom filter of a source data table based on information of the source data table at a first point in time, the first resizable invertible bloom filter having a first size that is determined based on an estimated number of changes in the source data table between the first point in time and a second point in time;

generate a second resizable invertible bloom filter for the source data table based on information of the source data table at the second point in time, the second resizable invertible bloom filter also having the first size;

determine an actual number of changes in the source data table between the first point in time and the second point in time;

responsive to the actual number of changes being smaller than the estimated number of changes, determine a second size for the first and the second resizable invertible bloom filters, the second size being smaller than the first size;

update the first resizable invertible bloom filter and the second resizable invertible bloom filter to have the second size;

identify changes in the source data table that occurred between the first point in time and the second point in time based on the updated first resizable invertible bloom filter and the updated second resizable invertible bloom filter; and

send instructions to a destination data table, the instructions comprising information to perform an operation that synchronizes the destination data table with the source data table based on the identified changes.

10 . The non-transitory computer-readable storage medium of claim 9 , wherein the first and second sizes are determined based on mathematical constraints.

11 . The non-transitory computer-readable storage medium of claim 9 , wherein the first and second sizes are determined based on a set of prime divisors and a set of resizing factors, and wherein each size is a product of a prime divisor of the set of prime divisors and a resizing factor of the set of resizing factors.

12 . The non-transitory computer-readable storage medium of claim 11 , wherein each resizing factor of the set of resizing factors is a prime number.

13 . The non-transitory computer-readable storage medium of claim 12 , wherein each prime divisor of the set of prime divisors is multiplied by each resizing factor of the set of resizing factors in descending order.

14 . The non-transitory computer-readable storage medium of claim 11 , wherein each prime divisor in the set of prime divisors has a same value, and wherein each prime divisor of the set of prime divisors is multiplied by each resizing factor of the set of resizing factors.

15 . The non-transitory computer-readable storage medium of claim 9 , wherein identifying the changes in the source data table further comprises:

generating a third resizable invertible bloom filter by subtracting the updated second resizable invertible bloom filter from the updated first resizable invertible bloom filter, the third resizable invertible bloom filter comprising information associated with a change in the source data table that occurred between the first point in time and the second point in time.

16 . The non-transitory computer-readable storage medium of claim 15 , wherein the instructions comprising instructions to identify the changes by decoding the third invertible bloom filter.

17 . A computing system comprising:

a processor; and

a non-transitory computer-readable storage medium storing instructions, the instructions when executed by the processor cause the processor to perform steps including:

generating a first resizable invertible bloom filter of a source data table based on information of the source data table at a first point in time, the first resizable invertible bloom filter having a first size that is determined based on an estimated number of changes in the source data table between the first point in time and a second point in time;

generating a second resizable invertible bloom filter for the source data table based on information of the source data table at the second point in time, the second resizable invertible bloom filter also having the first size;

determining an actual number of changes in the source data table between the first point in time and the second point in time;

responsive to the actual number of changes being smaller than the estimated number of changes, determining a second size for the first and the second resizable invertible bloom filters, the second size being smaller than the first size;

updating the first resizable invertible bloom filter and the second resizable invertible bloom filter to have the second size;

identifying changes in the source data table that occurred between the first point in time and the second point in time based on the updated first resizable invertible bloom filter and the updated second resizable invertible bloom filter; and

sending instructions to a destination data table, the instructions comprising information to perform an operation that synchronizes the destination data table with the source data table based on the identified changes.

18 . The system of claim 17 , wherein the first and second sizes are determined based on a set of prime divisors and a set of resizing factors, and wherein each size is a product of a prime divisor of the set of prime divisors and a resizing factor of the set of resizing factors.

19 . The system of claim 17 , wherein identifying the changes in the source data table further comprises:

generating a third resizable invertible bloom filter by subtracting the updated second resizable invertible bloom filter from the updated first resizable invertible bloom filter, the third resizable invertible bloom filter comprising information associated with a change in the source data table that occurred between the first point in time and the second point in time.

20 . The system of claim 19 , wherein the steps further include identifying the changes by decoding the third invertible bloom filter.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2026
From: NOCHLIN, JASON
To: FIVETRAN INC.
Reel/Frame 073393/0610 →
Continuity (4)
Continuation 18504754 · Nov 8, 2023
Continuation 17954147 · Sep 27, 2022
Provisional Application 63281005 · Nov 18, 2021
Related Publication 20250110968A1 · Apr 3, 2025
References Cited (20)
US 12314240B1 · Opincariu · 2025 [cited by examiner]
US 20130132408A1 · Little · 2013 [cited by applicant]
US 20150199416A1 · Kashyap et al. · 2015 [cited by applicant]
US 20170070492A1 · Rubin et al. · 2017 [cited by applicant]
US 20170293529A1 · Robison et al. · 2017 [cited by applicant]
US 20180004829A1 · Kathuria et al. · 2018 [cited by applicant]
US 20190370381A1 · Klein et al. · 2019 [cited by applicant]
US 20200081901A1 · Arnold et al. · 2020 [cited by applicant]
US 20200278963A1 · Destefanis et al. · 2020 [cited by applicant]
US 20210097106A1 · Akar · 2021 [cited by examiner]
US 20210406240A1 · Sheppard · 2021 [cited by examiner]
Khalid, A. et al. “Optimized Cuckoo Filters for Efficient Distributed SON and NFV Applications.” 2020 IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN), Nov. 10-12, 2020, pp. 77-… [cited by applicant]
Lu, J. et al. “One-Hashing Bloom Filter,” IEEE 23rd International Symposium on Quality of Service, Jun. 15-16, 2015, pp. 289-298. [cited by applicant]
PCT International Search Report and Written Opinion, PCT Application PCT/US2022/049691, Feb. 22, 2023, 15 pages. [cited by applicant]
United States Office Action, U.S. Appl. No. 17/954,147, filed May 11, 2023, 6 pages. [cited by applicant]
United States Office Action, U.S. Appl. No. 18/504,754, filed Jun. 6, 2024, 18 pages. [cited by applicant]
Eppstein, D. et al., “What's the difference? efficient set reconciliation without prior context”, ACM SIGCOMM Computer Communication Review, vol. 41, Issue 4, Aug. 15, 2011, pp. 218-229. [cited by applicant]
European Patent Office, Extended European Search Report and Opinion, European Patent Application No. 22896353.4, Sep. 9, nine pages. [cited by applicant]
Summermatter, E. et al., “Byzantine Fault Tolerant Set Reconciliation”, Internet-Draft for the Internet Engineering Task Force (IETF), Jun. 16, 2021, pp. 1-61. [cited by applicant]
Summermatter, E. et al., “Byzantine Fault Tolerant Set Reconciliation”, Bern University, Bachelor's Thesis, Jun. 17, 2021, pp. 1-75. [cited by applicant]