IP Library Granted Patent US 12,488,021
Granted Patent B2
US 12,488,021 · App. 18/392,558 · Granted Dec 2, 2025

Partitioning data in a versioned database

Inventors: Marin Creanga (Ottawa, CA); Dylan Ellicott (Ottawa, CA)
Assignee: Kinaxis, Inc.
G06F16/278G06F16/219
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,488,021
App. No.
18/392,558
Granted
Dec 2, 2025
Kind
B2
Abstract

Systems and methods for partitioning data in a versioned database, comprising: initializing, a list of empty partitions; initializing a new empty partition as a current partition; selecting a lead scenario for placement in the current partition, the lead scenario having a size less than a maximum partition size; placing the lead scenario into the current partition; marking the lead scenario as processed; obtaining a list of candidate scenarios to place in the current partition; determining a best candidate scenario from the list of candidate scenarios; adding the best candidate scenario to the current partition; marking the best candidate scenario as processed; iterating a new list of candidate scenarios to place in the current partition until there are no more scenario candidates to place in the current partition; adding the current partition to a partition list; and iterating through all the scenarios in the versioned database.

Claims (62)

1 . A computer-implemented method for partitioning data in a versioned database, the method comprising:

for the versioned database comprising versions, wherein each version is generated as data changes across a versioned database that differentiates versions, and wherein each scenario is a logical pointer in the database that is independent of and points to the version in the database,

a) initializing, by a processor, a new empty partition of the versioned database as a current partition of the versioned database;

b) selecting, by the processor, a lead scenario for placement in the current partition of the versioned database, the lead scenario having a memory unit size less than a maximum partition size of the current partition memory unit size;

c) placing, by the processor, the lead scenario into the current partition of the versioned database;

d) obtaining, by the processor, a list of candidate scenarios to place in the current partition of the versioned database;

e) determining, by the processor, a best candidate scenario from the list of candidate scenarios;

f) adding, by the processor, the best candidate scenario to the current partition of the versioned database together with the lead candidate scenario;

g) iterating, by the processor, a new list of candidate scenarios to place in the current partition of the versioned database until there are no more scenario candidates to place in the current partition of the versioned database;

h) adding, by the processor, the current partition of the versioned database to a partition list; and

i) iterating, by the processor, through all scenarios in the versioned database using steps a) through h).

2 . The computer-implemented method of claim 1 , wherein selecting the lead scenario is based on random selection, frequency of use, age, length of a scenario version list, data memory unit size, or data overlap between the lead scenario and other database scenarios.

3 . The computer-implemented method of claim 2 , wherein selecting the lead scenario is based on the data memory unit size.

4 . The computer-implemented method of claim 1 , wherein the list of candidate scenarios to place in the current partition is based on:

a candidate scenario does not exceed the maximum partition memory unit size once the candidate scenario is appended to the current partition; or

the candidate scenario is a descendent of any of the scenarios in the current partition.

5 . The computer-implemented method of claim 4 , wherein the list of candidate scenarios to place in the current partition is based on:

the candidate scenario does not exceed the maximum partition memory unit size once the candidate scenario is appended to the current partition.

6 . The computer-implemented method of claim 1 , wherein the best candidate scenario is determined based on: random selection, frequency of use, age, length of scenario version list, data memory unit size, or an amount of data shared with a scenario in the current partition.

7 . The computer-implemented method of claim 6 , wherein the best candidate scenario is determined based on the amount of data shared with a scenario in the current partition.

8 . A system comprising:

a processor;

a versioned database memory comprising versions, the versioned database configured so that each version is generated as data changes across the versioned database that differentiates versions, and wherein each scenario is a logical pointer in the database that is independent of and points to the version in the database memory; and

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

a) initialize, by the processor, a new empty partition of the versioned database as a current partition;

b) select, by the processor, a lead scenario for placement in the current partition of the versioned database, the lead scenario having a memory unit size less than a maximum partition size of the current partition memory unit size;

c) place, by the processor, the lead scenario into the current partition of the versioned database;

d) obtain, by the processor, a list of candidate scenarios to place in the current partition;

e) determine, by the processor, a best candidate scenario from the list of candidate scenarios;

f) add, by the processor, the best candidate scenario to the current partition of the versioned database together with the lead candidate;

g) iterate, by the processor, a new list of candidate scenarios to place in the current partition of the versioned database until there are no more scenario candidates to place in the current partition of the versioned database;

h) add, by the processor, the current partition to a partition list; and

i) iterate, by the processor, through all scenarios in the versioned database using steps a) through h).

9 . The system of claim 8 , wherein selecting the lead scenario is based on random selection, frequency of use, age, length of a scenario version list, data memory unit size, or data overlap between the lead scenario and other database scenarios.

10 . The system of claim 9 , wherein selecting the lead scenario is based on the data memory unit size.

11 . The system of claim 8 , wherein the list of candidate scenarios to place in the current partition is based on:

a candidate scenario does not exceed the maximum partition memory unit size once the candidate scenario is appended to the current partition; or

the candidate scenario is a descendent of any of the scenarios in the current partition.

12 . The system of claim 11 , wherein the list of candidate scenarios to place in the current partition is based on:

the candidate scenario does not exceed the maximum partition memory unit size once the candidate scenario is appended to the current partition.

13 . The system of claim 8 , wherein the best candidate scenario is determined based on: random selection, frequency of use, age, length of scenario version list, data memory unit size, or an amount of data shared with a scenario in the current partition.

14 . The system of claim 13 , wherein the best candidate scenario is determined based on the amount of data shared with a scenario in the current partition.

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

for a versioned database comprising versions, wherein each version is generated as data changes across a versioned database that differentiates versions, and wherein each scenario is a logical pointer in the database that is independent of and points to the version in the database,

a) initialize, by a processor, a new empty partition as a current partition of a versioned database;

b) select, by the processor, a lead scenario for placement in the current partition of the versioned database, the lead scenario having a memory unit size less than a maximum partition size of the current partition memory unit size;

c) place, by the processor, the lead scenario into the current partition of the versioned database;

d) obtain, by the processor, a list of candidate scenarios to place in the current partition;

e) determine, by the processor, a best candidate scenario from the list of candidate scenarios of the versioned database together with the lead candidate;

f) add, by the processor, the best candidate scenario to the current partition;

g) iterate, by the processor, a new list of candidate scenarios to place in the current partition of the versioned database until there are no more scenario candidates to place in the current partition of the versioned database;

h) add, by the processor, the current partition to a partition list; and

i) iterate, by the processor, through all scenarios in the versioned database using steps a) through h).

16 . The non-transitory computer-readable storage medium of claim 15 , wherein selecting the lead scenario is based on random selection, frequency of use, age, length of a scenario version list, data memory unit size, or data overlap between the lead scenario and other database scenarios.

17 . The non-transitory computer-readable storage medium of claim 16 , wherein selecting the lead scenario is based on the data memory unit size.

18 . The non-transitory computer-readable storage medium of claim 15 , wherein the list of candidate scenarios to place in the current partition is based on:

a candidate scenario does not exceed the maximum partition memory unit size once the candidate scenario is appended to the current partition; or

the candidate scenario is a descendent of any of the scenarios in the current partition.

19 . The non-transitory computer-readable storage medium of claim 18 , wherein the list of candidate scenarios to place in the current partition is based on:

the candidate scenario does not exceed the maximum partition memory unit size once the candidate scenario is appended to the current partition.

20 . The non-transitory computer-readable storage medium of claim 15 , wherein the best candidate scenario is determined based on: random selection, frequency of use, age, length of scenario version list, data memory unit size, or an amount of data shared with a scenario in the current partition.

21 . The non-transitory computer-readable storage medium of claim 20 , wherein the best candidate scenario is determined based on the amount of data shared with a scenario in the current partition.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2025
From: CREANGA, MARIN; ELLICOTT, DYLAN
To: KINAXIS INC.
Reel/Frame 070157/0982 →
Continuity (4)
Continuation In Part 18345420 · Jun 30, 2023
Provisional Application 63435076 · Dec 23, 2022
Provisional Application 63357287 · Jun 30, 2022
Related Publication 20240126786A1 · Apr 18, 2024
References Cited (29)
US 7499960B2 · Dageville et al. · 2009 [cited by applicant]
US 8005872B2 · Bhattacharjee et al. · 2011 [cited by applicant]
US 8386501B2 · Cahill et al. · 2013 [cited by applicant]
US 8694985B2 · Flisakowski et al. · 2014 [cited by applicant]
US 8762408B2 · Brand · 2014 [cited by examiner]
US 8832677B2 · Flisakowski et al. · 2014 [cited by applicant]
US 9015177B2 · Cahill et al. · 2015 [cited by applicant]
US 9104600B2 · King et al. · 2015 [cited by applicant]
US 9262331B2 · Declercq et al. · 2016 [cited by applicant]
US 9262332B2 · Declercq et al. · 2016 [cited by applicant]
US 10042910B2 · Bensberg et al. · 2018 [cited by applicant]
US 11157517B2 · Mandadi · 2021 [cited by examiner]
US 12008006B1 · Beveridge · 2024 [cited by examiner]
US 20030005464A1 · Gropper · 2003 [cited by applicant]
US 20060206507A1 · Dahbour · 2006 [cited by applicant]
US 20100312754A1 · Bear et al. · 2010 [cited by applicant]
US 20120066228A1 · Charboneau · 2012 [cited by examiner]
US 20130238657A1 · Brand · 2013 [cited by examiner]
US 20130262403A1 · Milousheff · 2013 [cited by examiner]
US 20160132804A1 · Croft · 2016 [cited by applicant]
US 20160350368A1 · Weyerhaeuser et al. · 2016 [cited by applicant]
US 20190227877A1 · Pandey · 2019 [cited by examiner]
US 20200226029A1 · Borate et al. · 2020 [cited by applicant]
US 20210271559A1 · LeCrone · 2021 [cited by applicant]
Cooperman et al., “Memory-Based and Disk-Based Algorithms for Very High Degree Permutation Groups”, Year 2003 (Year: 2003). [cited by examiner]
Geeksforgeeks, “Count all possible paths between two vertices,” Dec. 12, 2021 (Year: 2021). [cited by examiner]
Needham et al., “Graph Algorithms,” 2019 (Year: 2019). [cited by examiner]
U.S. Appl. No. 18/345,420, Non-Final Office Action dated Jun. 20, 2024. [cited by applicant]
Vorwerk., “Calculate Reclaimable Space Before Deleting Snapshot Copies,”(Year: 2021). [cited by applicant]