IP Library Granted Patent US 12,481,990
Granted Patent B2
US 12,481,990 · App. 17/516,436 · Granted Nov 25, 2025

Architecture of immutable database for bitemporal analysis

Inventors: Philip Austin Kedy (Oakton, VA); Kenneth J. Schneider (Arlington, VA); Aaron Zhang (McLean, VA)
Assignee: Capital One Services, LLC
G06Q20/389G06F16/215G06F16/219G06F16/2308G06F16/2358G06F16/2365G06F16/2379G06F16/9024G06Q20/08H04L41/0806H04L41/0816H04L41/0856H04L41/0866H04L67/34H04L69/02H04L69/08G06Q40/00H04L63/20
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,481,990
App. No.
17/516,436
Granted
Nov 25, 2025
Kind
B2
Abstract

Embodiments disclosed are directed to implementing an immutable database. Several embodiments are directed to an architecture for implementing the immutable database as a data processing system with a real-time interface for buffering a plurality of transactions and a bitemporal ledger for storing the plurality of transactions and a processor. New transactions may be appended to the transaction to the plurality of transactions and processed in a temporal order which includes identifying a sequence of transactions in the bitemporal ledger associated with the transaction and incorporating the transaction into the sequence of transactions in the bitemporal ledger according to temporal metadata associated with the transaction to form an updated sequence of transactions.

Claims (58)

1 . A data processing system comprising:

a data stream manager configured to:

generate a data stream associated with a data stream identifier, wherein the data stream identifier identifies a user account managed by the data processing system;

receive, in the data stream, a plurality of transactions including a new transaction and a retroactive transaction, wherein the new transaction and the retroactive transaction are associated with the user account;

a processing engine configured to receive, from the data stream manager, the plurality of transactions including the new transaction and the retroactive transaction, and wherein the processing engine is further configured to:

identify, in a bitemporal ledger in communication with the processing engine, a sequence of transactions associated with the new transaction and the retroactive transaction and an alternate sequence of transactions, wherein the sequence of transactions is implemented as a transaction timeline associated with the user account, and wherein the alternate sequence of transactions is implemented as an alternate timeline associated with the user account;

append, in the bitemporal ledger, the new transaction to the sequence of transactions according to temporal metadata associated with the new transaction, wherein the temporal metadata includes a first time indicating when the new transaction is created and a second time indicating when the new transaction is to take effect, wherein the bitemporal ledger is configured to prevent any transactions in the sequence of transactions from being overwritten during the appending, wherein the transaction timeline comprising the sequence of transactions and the new transaction reflects a current state of the user account, and wherein the sequence of transactions is time-ordered based at least in part on the second time of the temporal metadata; and

incorporate, in the bitemporal ledger, the retroactive transaction to the alternate sequence of transactions by replacing one transaction in the sequence of transactions in the alternate timeline with the retroactive transaction; and

the bitemporal ledger configured to store the transaction timeline and the alternate timeline, wherein the bitemporal ledger is configured to:

maintain the alternate timeline separate from the transaction timeline, wherein the alternate sequence of transactions reflects an alternate state of the user account based on the retroactive transaction, and wherein the alternate sequence of transactions is time-ordered based at least in part on temporal metadata associated with the retroactive transaction;

determine whether the alternate state of the user account includes an error, wherein the evaluation comprises a comparison between the current state and the alternate state; and

merge, in the transaction timeline, the current state of the user account with the alternate state of the user account based on the determining.

2 . The data processing system of claim 1 ,

wherein the transaction timeline further comprises a second sequence of transactions, wherein the second sequence of transactions is associated with a second user account managed by the data processing system.

3 . The data processing system of claim 1 , wherein the sequence of transactions is implemented as a graph comprising a plurality of nodes with each node of the plurality of nodes having a corresponding transaction in the sequence of transactions.

4 . The data processing system of claim 1 , the processing engine further configured to:

identify a plug-in configured to inspect the new transaction for validity; and

pass the new transaction to the plug-in for inspecting the new transaction for validity.

5 . The data processing system of claim 4 , wherein the alternate sequence of transactions further includes alternate transactions that are in temporal order subsequent to the sequence of transactions.

6 . The data processing system of claim 5 , wherein at least one alternate transaction of the alternate transactions reflects a change to the sequence of transactions and is based on the new transaction.

7 . The data processing system of claim 4 , the processing engine is further configured to:

generate an event that indicates the new transaction is ready for further processing when the new transaction is valid; and

generate an error message when the new transaction is not valid.

8 . The data processing system of claim 1 , wherein the new transaction includes an identifier associated with the sequence of transactions and wherein identifying the sequence of transactions is based on the identifier.

9 . A computer-implemented method for processing a new transaction in a data processing system that includes a real-time interface, a processing engine, and a bitemporal ledger, the method comprising:

generating a data stream associated with a data stream identifier, wherein the data stream identifier identifies a user account managed by the data processing system;

receiving, in the data stream via the real-time interface, the new transaction and a retroactive transaction to be processed by the data processing system, wherein the real-time interface comprises a transaction stream for buffering a plurality of transactions and wherein the new transaction and the retroactive transaction are associated with the user account managed by the data processing system;

identifying, in the bitemporal ledger in communication with the processing engine, a sequence of transactions associated with the new transaction and the retroactive transaction and an alternate sequence of transactions, wherein the sequence of transactions is implemented as a transaction timeline associated with the user account, and wherein the alternate sequence of transactions is implemented as an alternate timeline associated with the user account;

appending, in the bitemporal ledger, the new transaction to the sequence of transactions according to temporal metadata associated with the new transaction, wherein the temporal metadata includes a first time indicating when the new transaction is created and a second time indicating when the new transaction is to take effect, wherein the bitemporal ledger is configured to prevent any transactions in the sequence of transactions from being overwritten during the appending, wherein the transaction timeline comprising the sequence of transactions and the new transaction reflects a current state of the user account, and wherein the sequence of transactions is time-ordered based at least in part on the second time of the temporal metadata;

incorporating, in the bitemporal ledger, the retroactive transaction to the alternate sequence of transactions by replacing one transaction in the alternate sequence of transactions with the retroactive transaction;

maintaining the alternate timeline separate from the transaction timeline in the bitemporal ledger, wherein the alternate sequence of transactions reflects an alternate state of the user account based on the retroactive transaction, and wherein the alternate sequence of transactions is time-ordered based at least in part on temporal metadata associated with the retroactive transaction;

determining whether the alternate state of the user account includes an error; and

merging, in the transaction timeline, in the bitemporal ledger, the current state of the user account with the alternate state of the user account based on the determining.

10 . The method of claim 9 , wherein the transaction timeline further comprises a second sequence of transactions, wherein the second sequence of transactions is associated with a second user account managed by the data processing system.

11 . The method of claim 9 , wherein the sequence of transactions is implemented as a graph comprising a plurality of nodes with each node of the plurality of nodes having a corresponding transaction in the sequence of transactions.

12 . The method of claim 9 , further comprising:

identifying, by the processing engine, a processing module configured to further process the new transaction; and

passing, by the processing engine, the new transaction to the processing module for further processing.

13 . The method of claim 12 , wherein the alternate sequence of transactions further includes alternate transactions that are in temporal order subsequent to the sequence of transactions.

14 . The method of claim 13 , wherein at least one alternate transaction of the alternate transactions reflects a change to the sequence of transactions and is based on the new transaction.

15 . The method of claim 12 , further comprising:

storing, by the processing engine, results of the further processing by the processing module in the bitemporal ledger.

16 . The method of claim 9 , wherein the new transaction includes an identifier associated with the sequence of transactions and wherein identifying the sequence of transactions is based on the identifier.

17 . A non-transitory computer-readable medium storing instructions, the instructions, when executed by an immutable database that includes a processing engine, a real-time interface and a bitemporal ledger, cause the immutable database to perform operations comprising:

generating a data stream associated with a data stream identifier, wherein the data stream identifier identifies a user account managed by the data processing system;

receiving, in the data stream via the real-time interface, a new transaction and a retroactive transaction to be processed by the data processing system, wherein the real-time interface comprises a transaction stream for buffering a plurality of transactions and wherein the new transaction and the retroactive transaction are associated with the user account managed by the data processing system;

identifying, in the bitemporal ledger in communication with the processing engine, a sequence of transactions associated with the new transaction and the retroactive transaction and an alternate sequence of transactions, wherein the sequence of transactions is implemented as a transaction timeline associated with the user account, and wherein the alternate sequence of transactions is implemented as an alternate timeline associated with the user account;

appending, in the bitemporal ledger, the new transaction to the sequence of transactions according to temporal metadata associated with the new transaction, wherein the temporal metadata includes a first time indicating when the new transaction is created and a second time indicating when the new transaction is to take effect, wherein the bitemporal ledger is configured to prevent any transactions in the sequence of transactions from being overwritten, wherein the transaction timeline comprising the sequence of transactions and the new transaction reflects a current state of the user account, and wherein the sequence of transactions is time-ordered based at least in part on the second time of the temporal metadata;

incorporating, in the bitemporal ledger, the retroactive transaction to the alternate sequence of transactions by replacing one transaction in the alternate sequence of transactions with the retroactive transaction;

maintaining the alternate timeline separate from the transaction timeline in the bitemporal ledger, wherein the alternate sequence of transactions reflects an alternate state of the user account based on the retroactive transaction, and wherein the alternate sequence of transactions is time-ordered based at least in part on temporal metadata associated with the retroactive transaction;

determining whether the alternate state of the user account includes an error; and

merging, in the transaction timeline, in the bitemporal ledger, the current state of the user account with the alternate state of the user account based on the determining.

18 . The non-transitory computer-readable medium claim 17 , the operations further comprising:

storing, in the bitemporal ledger, a second sequence of transactions, wherein the second sequence of transactions is associated with a second user account managed by the data processing system.

19 . The non-transitory computer-readable medium of claim 17 , wherein the sequence of transactions is implemented as a graph comprising a plurality of nodes with each node of the plurality of nodes having a corresponding transaction in the sequence of transactions.

20 . The non-transitory computer-readable medium of claim 17 , the operations further comprising:

identifying, by the processing engine, a processing module configured to further process the new transaction; and

passing, by the processing engine, the new transaction to the processing module for further processing.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2022
From: KEDY, PHILIP AUSTIN; SCHNEIDER, KENNETH J.; ZHANG, AARON
To: CAPITAL ONE SERVICES, LLC
Reel/Frame 058805/0328 →
Continuity (2)
Provisional Application 63157455 · Mar 5, 2021
Related Publication 20220284423A1 · Sep 8, 2022
References Cited (63)
US 7681245B2 · Walker et al. · 2010 [cited by applicant]
US 9684570B1 · Wilding · 2017 [cited by applicant]
US 10360025B2 · Foskett et al. · 2019 [cited by applicant]
US 10476947B1 · Natarajan · 2019 [cited by applicant]
US 10503905B1 · Misra et al. · 2019 [cited by applicant]
US 10681049B2 · Jeuk et al. · 2020 [cited by applicant]
US 10764070B2 · Kass · 2020 [cited by applicant]
US 10789316B2 · Noble et al. · 2020 [cited by applicant]
US 10795977B2 · Salomon · 2020 [cited by applicant]
US 10866945B2 · Ventura et al. · 2020 [cited by applicant]
US 10872029B1 · Bawcom · 2020 [cited by applicant]
US 10924288B2 · Yan et al. · 2021 [cited by applicant]
US 10949406B1 · Calvo et al. · 2021 [cited by applicant]
US 11036873B2 · Lopez · 2021 [cited by applicant]
US 11080257B2 · Cseri et al. · 2021 [cited by applicant]
US 11140061B1 · Sanders et al. · 2021 [cited by applicant]
US 11196567B2 · Certain · 2021 [cited by examiner]
US 11216788B1 · Vijayaraghavan · 2022 [cited by applicant]
US 11218854B2 · Raleigh et al. · 2022 [cited by applicant]
US 11275726B1 · Mikhtoniuk et al. · 2022 [cited by applicant]
US 11350254B1 · Natarajan et al. · 2022 [cited by applicant]
US 11544797B1 · Cohen · 2023 [cited by applicant]
US 20070156659A1 · Lim · 2007 [cited by applicant]
US 20070157288A1 · Lim · 2007 [cited by applicant]
US 20070185922A1 · Kapoor · 2007 [cited by examiner]
US 20080250078A1 · Wimberly et al. · 2008 [cited by applicant]
US 20090319501A1 · Goldstein · 2009 [cited by examiner]
US 20110231543A1 · Akazawa et al. · 2011 [cited by applicant]
US 20110320419A1 · Johnston et al. · 2011 [cited by applicant]
US 20130018849A1 · Johnston · 2013 [cited by examiner]
US 20140236527A1 · Chan et al. · 2014 [cited by applicant]
US 20150135084A1 · Rosenberger · 2015 [cited by applicant]
US 20150169697A1 · Kaufmann et al. · 2015 [cited by applicant]
US 20150254330A1 · Chan et al. · 2015 [cited by applicant]
US 20150261776A1 · Attarde · 2015 [cited by examiner]
US 20160171372A1 · Fraleigh · 2016 [cited by examiner]
US 20160342979A1 · Joshi et al. · 2016 [cited by applicant]
US 20180117446A1 · Tran et al. · 2018 [cited by applicant]
US 20180144823A1 · Raman et al. · 2018 [cited by applicant]
US 20180167492A1 · Bonig · 2018 [cited by examiner]
US 20190018887A1 · Madisetti et al. · 2019 [cited by applicant]
US 20190361917A1 · Tran et al. · 2019 [cited by applicant]
US 20190370404A1 · Kessee et al. · 2019 [cited by applicant]
US 20190386877A1 · Vaidya et al. · 2019 [cited by applicant]
US 20200067697A1 · Puddu · 2020 [cited by examiner]
US 20200183739A1 · Hashimoto et al. · 2020 [cited by applicant]
US 20200252404A1 · Padmanabhan · 2020 [cited by applicant]
US 20200344290A1 · Krishnaswamy et al. · 2020 [cited by applicant]
US 20200349142A1 · Padmanabhan · 2020 [cited by applicant]
US 20210035112A1 · Singh et al. · 2021 [cited by applicant]
US 20210055927A1 · Sarukkai et al. · 2021 [cited by applicant]
US 20210157794A1 · Tulsi · 2021 [cited by examiner]
US 20210158449A1 · Tulsi et al. · 2021 [cited by applicant]
US 20210256009A1 · Zhang · 2021 [cited by examiner]
US 20210336896A1 · Calmon et al. · 2021 [cited by applicant]
US 20220284422A1 · Kedy et al. · 2022 [cited by applicant]
US 20220284424A1 · Kedy et al. · 2022 [cited by applicant]
US 20220286352A1 · Wong et al. · 2022 [cited by applicant]
US 20220286353A1 · Wong et al. · 2022 [cited by applicant]
US 20220286359A1 · Wong et al. · 2022 [cited by applicant]
WO WO2020043588A1 · 2020 [cited by examiner]
Kaufmann Martin et al: “Bi-temporal Timeline Index: A data structure for Processing Queries on bi-temporal data”, 2015 IEEE 31st International Conference On Data Engineering, IEEE, Apr. 13, 2015 (Apr. 13, 2015), pp. 471… [cited by applicant]
Supplementary European Search Report for EP Application No. EP 21 92 9413, Munich, Germany, mailed on Dec. 13, 2024, 11 pages. [cited by applicant]