IP Library › Granted Patent US 12,326,902
Granted Patent B2
US 12,326,902 · App. 17/447,230 · Granted Jun 10, 2025

Standing query to reactive database

Inventors: Mark Eugene Russinovich (Bellevue, WA); Dharma K. Shukla (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F16/9032
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,326,902
App. No.
17/447,230
Granted
Jun 10, 2025
Kind
B2
Abstract

A computing system is provided, including non-volatile storage storing a reactive database including a plurality of database entities. The computing system may further include a processor configured to, via a reactive database application program interface (API), receive a first standing query registration input including a first standing query. The first standing query may include a first update condition and may be associated with a first database entity. The processor may be further configured to store the first standing query in the non-volatile storage. The processor may be further configured to write data to the reactive database and determine that the first update condition is satisfied by the written data. In response to determining that the first update condition is satisfied, the processor may be further configured to execute the first standing query to perform a first state change at the first database entity of the plurality of database entities.

Claims (65)

1. A computing system comprising:

a processor configured to:

generate a binary large object (blob) representation of a reactive database from a relational representation of the reactive database;

store the reactive database in the blob representation, in non-volatile storage;

generate a graph representation of the reactive database from the blob representation, wherein the graph representation is a graph database in which a plurality of database entities are represented as a plurality of database nodes connected by a plurality of edges;

via a reactive database application program interface (API), receive a first standing query registration input including a first standing query, wherein:

the first standing query includes a first update condition and is associated with a first database entity of the plurality of database entities; and

the first update condition is a condition on one or more respective values of one or more of the database entities or on a structural property of the reactive database;

in response to receiving the first standing query registration input, partially evaluate the first standing query on one or more partial evaluation inputs that are stored in the reactive database and form a proper subset of a plurality of inputs of the first standing query, wherein:

the one or more partial evaluation inputs are received at the processor as one or more query responses; and

one or more remaining inputs of the first standing query are left unfilled when the first standing query is partially evaluated;

subsequently to partially evaluating the first standing query, store the first standing query in the non-volatile storage;

write data to the relational representation of the reactive database;

update the blob representation stored in the non-volatile storage based at least in part on the written data;

update the graph representation based at least in part on the updated blob representation;

determine that the first update condition is satisfied by the written data at the graph representation of the reactive database; and

in response to determining that the first update condition is satisfied, execute the partially evaluated first standing query on the remaining inputs of the first standing query to perform a first state change at the first database entity of the plurality of database entities, wherein the first state change is a change to one or more values stored in the reactive database and/or to an architecture of the reactive database.

2. The computing system of claim 1 , wherein the processor is further configured to:

via the reactive database API, receive a second standing query registration input including a second standing query, wherein:

the second standing query includes a second update condition;

the second update condition includes the first state change; and

the second standing query is associated with a second database entity of the plurality of database entities that is connected to the first database entity by an edge of the plurality of edges;

store the second standing query in the non-volatile storage;

in response to performing the first state change, determine that the second update condition is satisfied; and

in response to determining that the second update condition is satisfied, execute the second standing query to perform a second state change at the second database entity.

3. The computing system of claim 2 , wherein:

the plurality of database entities and edges of the graph representation of the reactive database have a graph structure with at least one cycle; and

in response to determining that the first update condition is satisfied, the processor is configured to perform a plurality of state changes, including the first state change and the second state change, in a state change sequence that includes one or more iterations through the at least one cycle of the graph structure.

4. The computing system of claim 1 , wherein the reactive database is a digital twin model in which the plurality of database entities and the plurality of edges are configured to model a physical system.

5. The computing system of claim 1 , wherein:

the non-volatile storage is distributed between a plurality of physical non-volatile storage devices; and

the written data is written to the reactive database and the first state change is performed at the first database entity in respective quorum committed writes to the physical non-volatile storage devices in which a plurality of physical processors associated with the physical non-volatile storage devices are configured to:

cast transaction votes on whether to commit transactions to write the written data to the reactive database; and

commit the transactions to write the written data to the reactive database in response to determining that a number of the physical processors greater than or equal to a predefined number vote to commit the transaction.

6. The computing system of claim 1 , wherein the first state change includes generating an additional standing query associated with the first database entity and storing the additional standing query in the non-volatile storage.

7. The computing system of claim 1 , wherein:

the first standing query is associated with two or more database entities including the first database entity; and

executing the first standing query includes performing two or more respective state changes, including the first state change, at the two or more database entities.

8. A method for use with a computing system, the method comprising:

generating a binary large object (blob) representation of a reactive database from a relational representation of the reactive database;

storing the reactive database in non-volatile storage in the blob representation;

generating a graph representation of the reactive database from the blob representation, wherein the graph representation is a graph database in which a plurality of database entities are represented as a plurality of database nodes connected by a plurality of edges;

via a reactive database application program interface (API), receiving a first standing query registration input including a first standing query, wherein:

the first standing query includes a first update condition and is associated with a first database entity of the plurality of database entities; and

the first update condition is a condition on one or more respective values of one or more of the database entities or on a structural property of the reactive database;

in response to receiving the first standing query registration input, partially evaluating the first standing query on one or more partial evaluation inputs that are stored in the reactive database and form a proper subset of a plurality of inputs of the first standing query, wherein:

the one or more partial evaluation inputs are received as one or more query responses; and

one or more remaining inputs of the first standing query are left unfilled when the first standing query is partially evaluated;

subsequently to partially evaluating the first standing query, storing the first standing query in the non-volatile storage;

writing data to the relational representation of the reactive database;

updating the blob representation stored in the non-volatile storage based at least in part on the written data;

updating the graph representation based at least in part on the updated blob representation;

determining that the first update condition is satisfied by the written data at the graph representation of the reactive database; and

in response to determining that the first update condition is satisfied, executing the partially evaluated first standing query on the remaining inputs of the first standing query to perform a first state change at the first database entity of the plurality of database entities, wherein the first state change is a change to one or more values stored in the reactive database and/or to an architecture of the reactive database.

9. The method of claim 8 , further comprising:

via the reactive database API, receiving a second standing query registration input including a second standing query, wherein:

the second standing query includes a second update condition;

the second update condition includes the first state change; and

the second standing query is associated with a second database entity of the plurality of database entities that is connected to the first database entity by an edge of the plurality of edges;

storing the second standing query in the non-volatile storage;

in response to performing the first state change, determining that the second update condition is satisfied; and

in response to determining that the second update condition is satisfied, executing the second standing query to perform a second state change at the second database entity.

10. The method of claim 9 , wherein:

the plurality of database entities and edges of the graph representation of the reactive database have a graph structure with at least one cycle; and

in response to determining that the first update condition is satisfied, the method further includes performing a plurality of state changes, including the first state change and the second state change, in a state change sequence that includes one or more iterations through the at least one cycle of the graph structure.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2021
From: RUSSINOVICH, MARK EUGENE; SHUKLA, DHARMA K.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 057428/0311 →
Continuity (1)
Related Publication 20230073887A1 · Mar 9, 2023
References Cited (21)
US 8185909B2 · Sigal et al. · 2012 [cited by applicant]
US 9270546B2 · Lehmann et al. · 2016 [cited by applicant]
US 10061823B2 · Bruce et al. · 2018 [cited by applicant]
US 20080162532A1 · Daga · 2008 [cited by examiner]
US 20120284255A1 · Schechter · 2012 [cited by examiner]
US 20180329958A1 · Choudhury · 2018 [cited by examiner]
US 20190258734A1 · Chkodrov · 2019 [cited by examiner]
US 20200019638A1 · Dilova et al. · 2020 [cited by applicant]
US 20200334234A1 · Mendel-Gleason · 2020 [cited by examiner]
US 20200349151A1 · Bourne et al. · 2020 [cited by applicant]
US 20210019316A1 · Pang · 2021 [cited by applicant]
Tracy Lord, Retrievals from DB2 BLOB (Binary Large Objects) Data Warehouse Using Sas®IBM, SAS Institute, Proc. of NESUG Conference, 2000 (Year: 2000). [cited by examiner]
Leandro Galrinho et al., “ReGraDa: Reactive Graph Data”, Jun. 8, 2021, v. 12717, pp. 187-220 (Year: 2021). [cited by examiner]
“R2DBC (Reactive Relational Database Connectivity)”, Retrieved From: https://web.archive.org/web/20210319084148/ https:/r2dbc.io/, Mar. 19, 2021, 3 Pages. [cited by applicant]
Alberton, Lorenzo, “Storing Graphs in the Database: SQL Meets Social Network”, Retrieved From: https://inviqa.com/blog/storing-graphs-database-sql-meets-social-network, Sep. 7, 2009, 21 Pages. [cited by applicant]
Chen, et al., “Autonomic Provisioning of Backend Databases in Dynamic Content Web Servers”, In Proceedings of EEE International Conference on Autonomic Computing, Jun. 12, 2006, pp. 231-242. [cited by applicant]
Shang, et al., “CrocodileDB: Efficient Database Execution through Intelligent Deferment”, In Proceedings of 10th Annual Conference on Innovative Data Systems Research, Jan. 12, 2020, 8 Pages. [cited by applicant]
Bou, et al., “An Improved Method of Keyword Search over Relational Data Streams by Aggressive Candidate Network Consolidation”, In Proceedings of 27th International Conference on Database and Expert Systems Applications… [cited by applicant]
Hedgpeth, Robert, “R2DBC Revealed Reactive Relational Database Connectivity for Java and JVM Programmers”, Published by Apress, Apr. 2, 2021, 220 Pages. [cited by applicant]
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US22/036614”, Mailed Date: Nov. 18, 2022, 15 Pages. [cited by applicant]
Zhu, et al., “HDAG-Explorer: A System for Hierarchical DAG Summarization and Exploration”, In Proceedings of the VLDB Endowment, vol. 13, Issue 12, Aug. 1, 2020, pp. 2973-2976. [cited by applicant]
Cited By (1)
US 12,639,284