IP Library Granted Patent US 12,474,849
Granted Patent B2
US 12,474,849 · App. 18/088,168 · Granted Nov 18, 2025

Systems and methods for efficient consolidation of record blocks

Inventors: Angela Lin (Ottawa, CA); Marin Creanga (Ottawa, CA); Dylan Ellicott (Ottawa, CA)
Assignee: Kinaxis Inc.
G06F3/064G06F3/0608G06F3/0652G06F3/0674
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,474,849
App. No.
18/088,168
Granted
Nov 18, 2025
Kind
B2
Abstract

Systems and methods for efficient consolidation of record blocks in a data base. The system comprises: 1) a deletion record set; an in-memory database representation comprising: tables and records; one or more exclusive locks for the records; and a record block index; 2) a persistent database representation comprising: record blocks; and a transaction log. The method comprises: receiving, by a processor, a deletion record set; acquiring, by the processor, an exclusive lock for one or more records in the deletion record set; consolidating, by the processor, one or more record blocks; updating, by the processor, an in-memory record block index; and adding, by the processor, a transaction log entry for the updated record block index update.

Claims (81)

1 . A computer-implemented method for efficient consolidation of record blocks in a database, the method comprising:

receiving, by a processor, a deletion record set for bulk data deletion from the database identified by executing an internal database procedure including querying an in-memory representation of the database for records that match certain conditions, and a set of record blocks, each record block comprising a set of records, wherein the bulk data deletion is performed without taking the database offline;

acquiring, by the processor, an exclusive lock for one or more of the records in the deletion record set, wherein the record block index has an access control mechanism which enables an atomic update of its contents;

consolidating, by the processor, one or more of the record blocks of the set of record blocks, wherein consolidating the one or more record blocks comprises processing, by the processor, each of the record blocks to determine records to keep and updating, by the processor, a list of records to keep, when processing each record the set of record blocks;

replacing, by the processor, existing records with current record by comparing a time stamp of the current record with a time stamp of the existing record:

deleting, by the processor, the existing record from the list of records to keep:

adding, by the processor, the current record to the list of records to keep:

updating, by the processor, an in-memory record block index; and

adding, by the processor, a transaction log entry for an updated record block index update, wherein the transaction log entry describes an ACID (atomic, consistent, isolated and durable) update to the database, wherein the updating the in-memory record block index and the adding transaction log entry for the undated record block index are performed in parallel.

2 . The computer-implemented method of claim 1 , wherein:

consolidating, by the processor, the one or more record blocks; and

updating, by the processor, the in-memory record block index, are performed in parallel.

3 . The computer-implemented method of claim 1 , wherein consolidating the one or more record blocks comprises:

writing, by the processor, one or more new record blocks to a disk after processing each record in each set of record blocks; and

updating, by the processor, an in-memory database.

4 . The computer-implemented method of claim 3 , wherein updating the list of records to keep comprises:

receiving, by the processor, a current record and the deletion record set; where a record ID of the current record is not in the list of records to keep:

adding, by the processor, the current record to the list of records to keep; and:

where the record ID of the current record is in the list of records to keep:

retrieving, by the processor, an existing record with a record ID that is identical to the record ID of the current record, from the list of records to keep; and

where the current record replaces the existing record according to a replacement criteria:

deleting, by the processor, the existing record from the list of records to keep; and

adding, by the processor, the current record to the list of records to keep.

5 . The computer-implemented method of claim 4 , wherein the replacement criteria comprises comparing the time stamp of the current record with the time stamp of the existing record.

6 . The computer-implemented method of claim 3 , wherein writing the one or more new record blocks to the disk, comprises:

containing, by the processor, each record block in the list of records to keep to one record block; or

containing, by the processor, each record block in the list of records to keep to a plurality of record blocks.

7 . A system comprising:

a processor; and

a memory storing instructions that, when executed by the processor, configure the system to:

receive, by the processor, a deletion record set for bulk data deletion from a database identified by executing an internal database procedure including querying an in-memory representation of the database for records that match certain conditions, and a set of record blocks, each record block comprising a set of records, wherein the system is configured to perform the bulk data deletion without taking the database offline;

acquire, by the processor, an exclusive lock for one or more records in the deletion record set, wherein the record block index has an access control mechanism which enables for an atomic update of its contents;

consolidate, by the processor, one or more of the record blocks of the set of record blocks, wherein the instructions that configure the system to consolidate the one or more record blocks comprise instructions to process, by the processor, each of the record blocks to determine records to keep and update, by the processor, a list of records to keep, when processing each record the set of record blocks;

replace, by the processor, existing records with current record by comparing a time stamp of the current record with a time stamp of the existing record:

delete, by the processor, the existing record from the list of records to keep:

add, by the processor, the current record to the list of records to keep;

update, by the processor, an in-memory record block index, wherein the record block index has an access control mechanism which enables an atomic update of its contents; and

add, by the processor, a transaction log entry for an updated record block index update, wherein the transaction log entry describes an ACID (atomic, consistent, isolated and durable) update to the database, wherein the update of the in-memory record block index and the adding of the transaction log entry for the updated record block index are performed in parallel.

8 . The system of claim 7 , wherein the memory storing the instructions that, when executed by the processor, further configure the system to:

consolidate, by the processor, the one or more record blocks; and update, by the processor, the in-memory record block index, in parallel.

9 . The system of claim 7 , wherein when consolidating the one or more record blocks, the memory storing the instructions that, when executed by the processor, further configure the system to:

write, by the processor, one or more new record blocks to disk after processing each record in each set of record blocks; and

update, by the processor, an in-memory database.

10 . The system of claim 9 , wherein when updating the list of records to keep, the memory storing the instructions that, when executed by the processor, further configure the system to:

receive, by the processor, a current record and the deletion record set; where a record ID of the current record is not in the list of records to keep:

add, by the processor, the current record to the list of records to keep; and:

where the record ID of the current record is in the list of records to keep:

retrieve, by the processor, an existing record with a record ID that is identical to the record ID of the current record, from the list of records to keep; and

where the current record replaces the existing record according to a replacement criteria:

delete, by the processor, the existing record from the list of records to keep; and

add, by the processor, the current record to the list of records to keep.

11 . The system of claim 10 , wherein the replacement criteria comprises comparing the time stamp of the current record with the time stamp of the existing record.

12 . The system of claim 9 , wherein when writing the one or more new record blocks to the disk, the memory storing the instructions that, when executed by the processor, further configure the system to:

contain, by the processor, each record block in the list of records to keep to one record block; or

contain, by the processor, each record block in the list of records to keep to a plurality of record blocks.

13 . A non-transitory computer-readable storage medium, the computer-readable storage medium including instructions that when executed by a computer, cause the computer to:

receive, by a processor, a deletion record set for bulk data deletion from a database identified by executing an internal database procedure including querying an in-memory representation of the database for records that match certain conditions and a set of record blocks, each record block comprising a set of records;

acquire, by the processor, an exclusive lock for one or more of the records in the deletion record set, wherein the record block index has an access control mechanism which enables an atomic update of its contents;

consolidate, by the processor, one or more of the record blocks of the set of record blocks, wherein the instructions that configure the computer to consolidate the one or more record blocks comprise instructions to process, by the processor, each of the record blocks to determine records to keep and update, by the processor, a list of records to keep, when processing each record the set of record blocks;

replace, by the processor, existing records with current record by comparing a time stamp of the current record with a time stamp of the existing record:

delete, by the processor, the existing record from the list of records to keep;

add, by the processor, the current record to the list of records to keep:

update, by the processor, an in-memory record block index; and

add, by the processor, a transaction log entry for an updated record block index update, wherein the transaction log entry describes an ACID (atomic, consistent, isolated and durable) update to the database, wherein the update of the in-memory record block index and the adding of the transaction log entry for the updated record block index are performed in parallel.

14 . The computer-readable storage medium of claim 13 , wherein the computer-readable storage medium including instructions that when executed by a computer, further cause the computer to:

consolidate, by the processor, the one or more record blocks; and update, by the processor, the in-memory record block index, in parallel.

15 . The computer-readable storage medium of claim 13 , wherein when consolidating the one or more record blocks, the computer-readable storage medium including instructions that when executed by the computer, further cause the computer to:

write, by the processor, one or more new record blocks to disk after processing each record in each set of record blocks; and

update, by the processor, an in-memory database.

16 . The computer-readable storage medium of claim 15 , wherein when updating the list of records to keep, the computer-readable storage medium including instructions that when executed by the computer, further cause the computer to:

receive, by the processor, a current record and the deletion record set; where a record ID of the current record is not in the list of records to keep:

add, by the processor, the current record to the list of records to keep; and:

where the record ID of the current record is in the list of records to keep:

retrieve, by the processor, an existing record with a record ID that is identical to the record ID of the current record, from the list of records to keep; and

where the current record replaces the existing record according to a replacement criteria:

delete, by the processor, the existing record from the list of records to keep; and

add, by the processor, the current record to the list of records to keep.

17 . The computer-readable storage medium of claim 16 , wherein the replacement criteria comprises comparing the time stamp of the current record with the time stamp of the existing record.

18 . The computer-readable storage medium of claim 15 , wherein when writing the one or more new record blocks to the disk, the computer-readable storage medium including the instructions that when executed by the computer, further cause the computer to:

contain, by the processor, each record block in the list of records to keep to one record block; or

contain, by the processor, each record block in the list of records to keep to a plurality of record blocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2025
From: LIN, ANGELA; CREANGA, MARIN; ELLICOTT, DYLAN
To: KINAXIS INC.
Reel/Frame 070196/0638 →
Continuity (3)
Continuation In Part 17897881 · Aug 29, 2022
Provisional Application 63238348 · Aug 30, 2021
Related Publication 20230129353A1 · Apr 27, 2023
References Cited (19)
US 4648036A · Gallant · 1987 [cited by applicant]
US 5551046A · Mohan et al. · 1996 [cited by applicant]
US 5884307A · Depledge et al. · 1999 [cited by applicant]
US 6535869B1 · Housel, III · 2003 [cited by applicant]
US 6606626B1 · Ponnekanti · 2003 [cited by applicant]
US 7765211B2 · Bhattacharjee et al. · 2010 [cited by applicant]
US 7962447B2 · Chen et al. · 2011 [cited by applicant]
US 9348833B2 · Schreter et al. · 2016 [cited by applicant]
US 9875054B2 · Mshniac et al. · 2018 [cited by applicant]
US 10133500B2 · Vishniac et al. · 2018 [cited by applicant]
US 10671641B1 · Holenstein · 2020 [cited by examiner]
US 10740312B1 · Mritunjai · 2020 [cited by examiner]
US 20070055702A1 · Fridella et al. · 2007 [cited by applicant]
US 20070130224A1 · Fischer · 2007 [cited by examiner]
US 20140317048A1 · Wang · 2014 [cited by applicant]
US 20160012549A1 · Block · 2016 [cited by examiner]
US 20210096886A1 · McLachlan et al. · 2021 [cited by applicant]
U.S. Appl. No. 17/897,881, Final Office Action dated Jun. 21, 2024. [cited by applicant]
U.S. Appl. No. 17/897,881, Non-Final office Action dated Dec. 22, 2023. [cited by applicant]