IP Library Granted Patent US 10,795,872
Granted Patent B2
US 10,795,872 · App. 15/398,832 · Granted Oct 6, 2020

Incremental bloom filter rebuild for B+ trees under multi-version concurrency control

Inventors: Mikhail Danilov (Saint Petersburg, RU); Mikhail Malygin (Saint Petersburg, RU); Ivan Tchoub (Saint Petersburg, RU); Alexander Fedorov (Saint Petersburg, RU); Nikita Gutsalov (Saint Petersburg, RU)
Assignee: EMC IP HOLDING COMPANY LLC
G06F16/2246G06F7/36G06F12/0261G06F12/0269G06F16/2329G06F16/245G06F2212/1024
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,795,872
App. No.
15/398,832
Granted
Oct 6, 2020
Kind
B2
Abstract

A method comprising: processing an update to a search tree and updating statistics, the search tree storing information about one or more objects indexed by corresponding object keys; determining to rebuild a first Bloom filter based on the statistics, the first Bloom filter associated with the search tree; generating a second Bloom filter associated with the search tree; populating the second Bloom filter as part of a tracing garbage collection process; and replacing the first Bloom filter with the second Bloom filter.

Claims (43)

1. A method comprising:

processing an update to search tree, the search tree storing information about one or more objects indexed by corresponding object keys;

determining an estimated accuracy for a first Bloom filter based on a ratio of a tree object count and a filter object count, wherein; (i) the tree object count includes a count of objects that are currently stored in the search tree, and (ii) the filter object count includes a sum of the count of objects that are currently stored in the search tree and a count of objects that have been deleted from the search tree;

determining to rebuild the first Bloom filter based on the estimated accuracy, the first Bloom filter associated with the search tree;

generating a second Bloom filter associated with the search tree;

populating the second Bloom filter as part of a tracing garbage collection process, the populating including visiting any of a plurality of leaves in the search tree by the trace garbage collection process, and adding, to the second Bloom filter, an object key that corresponds to a leaf; and

replacing the first Bloom filter with the second Bloom filter.

2. The method of claim 1 wherein processing the update to the search tree comprises:

if the update includes adding an object to the search tree, adding Information about the object to the search tree indexed by a corresponding object key, adding the corresponding object key to the first Bloom filter, incrementing the object count, and incrementing the filter object count; and

if the update includes deleting an object to the search tree, deleting information about the object from the search tree and decrementing the tree object count.

3. The method of claim 2 further comprising;

determining a target object count for the search tree,

wherein determining to rebuild the first Bloom filter is further based on comparing the target object count and the tree object count.

4. The method of claim 3 further comprising generating the first Bloom filter having a capacity determined using the target object count for the search tree.

5. A system comprising:

one or more processors;

a volatile memory; and

a non-volatile memory storing computer program code that when executed on the processor causes execution across the one or more processors of a process operable to perform the operations of:

processing an update to a search tree, the search tree storing information about one or more objects indexed by corresponding object keys:

determining an estimated accuracy for a first Bloom filter based on a ratio of a tree object count and a filter object count, wherein; (i) the tree object count includes a count of objects that are currently stored in the search tree, and (ii) the filter object count includes a sum of the count of objects that are currently stored in the search tree and a count of objects that have been deleted from the search tree;

determining to rebuild the first Bloom filter based on the estimated accuracy, the first Bloom filter associated with the search tree;

generating a second Bloom filter associated the search tree:

populating the second Bloom filter as part of a tracing garbage collection process, the populating including visiting any of a plurality of leaves in the search tree by the trace garbage collection process, and adding, to the second Bloom filter, an object key that corresponds to a leaf; and

replacing the first Bloom filter with the second Bloom filter.

6. The system of claim 5 wherein processing the update to the search tree comprises:

if the update includes adding an object to the search tree, adding information about the object to the search tree indexed by a corresponding object key, adding the corresponding object key to the first Bloom filter, incrementing the tree object count, and incrementing the filter object count; and

if the update includes deleting an object to the search tree, deleting information about the object from the search tree and decrementing the tree object count.

7. The system of claim 6 wherein the process is further operable to perform the operation of determining a target object count for the search tree, and determining to rebuild the first Bloom filter is further based on comparing the target object count and the tree object count.

8. The system of claim 7 wherein the process is further operable to perform the operation of generating the first Bloom filter having a capacity determined using the target object count for the search tree.

9. A computer program product tangibly embodied in a non-transitory computer-readable medium, the computer-readable medium storing program instructions that are executable to:

process an update to a search tree, the search tree storing information about one or more objects indexed by corresponding object keys;

determining an estimated accuracy for a first Bloom filter based on a ratio of a tree object count and a filter object count, wherein: (i) the tree object count includes a count of objects that are currently stored in the search tree, and (ii) the filter object count includes a sum of the count of objects that are currently stored in the search tree and a count of objects that have been deleted from the search tree;

determine to rebuild the first Bloom filter based on the estimated accuracy, the first Bloom filter associated with the search tree;

generate a second Bloom filter associated with the search tree;

populate the second Bloom filter as part of a tracing garbage collection process, the populating including visiting any of a plurality of leaves in the search tree by the trace garbage collection process, and adding, to the second Bloom filter, an object key that corresponds to a leaf; and

replace the first Bloom filter with the second Bloom filter.

10. The computer program product of claim 9 wherein processing the update to the search tree comprises:

if the update includes adding an object to the search tree, adding information about the object to the search tree indexed by a corresponding object key, adding the corresponding object key to the first Bloom filter, incrementing the tree object count, and incrementing the filter object count; and

if the update includes deleting an object to the search tree, deleting information about the object from the search tree and decrementing the tree object count.

11. The computer program product of claim 10 , the computer-readable medium storm program instructions that are further executable to:

determining a target object count for the search tree,

wherein determining to rebuild the first Bloom filter is further based on comparing the target object count and the tree object count.

12. The computer program product of claim 11 , the computer-readable medium storing program instructions that are further executable to generate the first Bloom filter having a capacity determined using the target object count for the search tree.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045482/0131) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 061749/0924 →
RELEASE OF SECURITY INTEREST AT REEL 045482 FRAME 0395 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0314 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 045482/0131 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 045482/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2017
From: DANILOV, MIKHAIL; MALYGIN, MIKHAIL; TCHOUB, IVAN; FEDOROV, ALEXANDER; GUTSALOV, NIKITA
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040899/0917 →
Priority Claims (1)
RU 2016125853 · Jun 29, 2016 · national
Continuity (1)
Related Publication 20180004786A1 · Jan 4, 2018