IP Library Granted Patent US 12,373,461
Granted Patent B2
US 12,373,461 · App. 18/394,047 · Granted Jul 29, 2025

Document database system using replicas of a stored document

Inventors: Brikesh Kumar (Seattle, WA); Muthukumaran Arumugam (Kent, WA); Yogesh Kumar (Sammamish, WA); Ankur Jauhari (Bothell, WA); Kiran Kumar Kolli (Redmond, WA); Per Mikael Horal (Sammamish, WA); Hari Sudan Sundar (Redmond, WA); Adam Bishop (Morrisville, NC)
Assignee: Microsoft Technology Licensing, LLC
G06F16/27
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,373,461
App. No.
18/394,047
Granted
Jul 29, 2025
Kind
B2
Abstract

A database management system for managing a database includes each document being stored as a number of replicas for accessibility and data preservation. The system includes: a processor; a network interface; and a memory comprising programming instructions for execution by the processor to implement a database management service, the service configured to maintain a primary replica of a document, a number of secondary replicas of the document, and another log-only replica storing a log of changes to the document rather than contents of the document. The service makes head reads to the primary replica as needed when a read request to the number of secondary replicas does not result in a quorum.

Claims (65)

1. A database management system for managing a database in which each document is stored as a plurality of replicas for accessibility and data preservation, the plurality of replicas being set to a total number of replicas to balance data resiliency and demand on resources, the database management system comprising:

a processor;

a network interface; and

a memory comprising programming instructions for execution by the processor to implement a database management service, the database management system configured to perform operations of:

operating the database management service to maintain the total number of replicas during normal operations including a primary replica of a document, a plurality of secondary replicas of the document, and another log-only replica storing a log of changes to the document over time rather than contents of the document;

addressing write requests received during the normal operations to the primary replica to update data in the primary replica;

recording changes to the data in the primary replica in the log-only replica;

receiving a read request to read the contents of the document from a user terminal;

in response to the read request, attempting to form a quorum by reading data from the plurality of secondary replicas, wherein forming the quorum for read requests includes receiving a response from (n−n/2) second replicas that have a same version of the document, wherein n is a total number of replicas configured to support the read request including the primary replica and the plurality of secondary replicas;

determining whether at least (n−n/2) secondary replicas of the plurality of secondary replicas have responded to the read request and have the same version of the document;

in response to determining that at least (n−n/2) secondary replicas of the plurality of secondary replicas have responded to the read request and have the same version of the document, providing the contents of the document to the user terminal; and

in response to determining that at least (n−n/2) secondary replicas of the plurality of secondary replicas have not responded to the read request and do not have the same version of the document, providing the contents of the document to the user terminal without waiting for responses from a remainder of the plurality of secondary replicas based on responses being received from a threshold number of the plurality of secondary replicas that is less than (n−n/2).

2. The database management system of claim 1 , wherein the plurality of secondary replicas of the document is only two.

3. The database management system of claim 1 , wherein the database management service is configured to:

make read calls to two secondary replicas of the plurality of secondary replicas; and

if only one secondary replica of the two secondary replicas of the plurality of secondary replicas responds, determine a quorum by a head read to the primary replica.

4. The database management system of claim 1 , wherein the database management service is configured to:

make read calls to two secondary replicas of the plurality of secondary replicas; and

if neither secondary replica of the two secondary replicas responds, make a read call to the primary replica.

5. The database management system of claim 1 , wherein the database management service is configured to, in response to determining that a subset of the total number of replicas fails to form a quorum, declaring a gone exception.

6. The database management system of claim 1 , wherein the database management service is configured to:

in response to a response being received from only one secondary replica, making a head read of the primary replica; and

if a primary Log Serial Number (LSN) is equal to a secondary LSN, returning current contents of the document to a user based on the response from the one secondary replica and the primary replica.

7. The database management system of claim 1 , wherein the database management service is configured to:

in response to a response being received from only one secondary replica, making a head read of the primary replica; and

wait for the plurality of secondary replicas to converge before returning current contents of the document to a user based on the plurality of secondary replicas.

8. The database management system of claim 7 , wherein the database management service is configured to, in response to the plurality of secondary replicas not converging:

making a read call to the primary replica;

determining if a store LSN is equal to a QuorumAckLN; and

responsive to the store LSN being equal to the QuorumAckLN, returning current contents of the document to the user based on a read of the one secondary replica and the primary replica.

9. The database management system of claim 8 , wherein the database management service is configured to, in response to the store LSN not equaling the QuorumAckLN, executing a barrier read of the plurality of secondary replicas.

10. The database management system of claim 9 , wherein the database management service is configured to, in response to the barrier read succeeding, returning current contents of the document to the user based on the barrier read.

11. The database management system of claim 9 , wherein the database management service is configured to, in response to the barrier read not resulting in formation of a quorum, declare a gone exception.

12. A database management system for managing a database in which each document is stored as a plurality of replicas for accessibility and data preservation, the database management system comprising:

a processor;

a network interface; and

a memory comprising programming instructions for execution by the processor to implement a database management service, the database management system configured to perform operations of:

operating the database management service to maintain a primary replica of a document, a plurality of secondary replicas of the document, and a log-only replica storing a log of changes to the document over time rather than contents of the document;

addressing write requests received during normal operations to the primary replica to update data in the primary replica;

recording changes to the data in the primary replica in the log-only replica;

receiving a read request to read the contents of the document from a user terminal;

in response to the read request, attempting to form a quorum by reading data from the plurality of secondary replicas, wherein forming the quorum for read requests includes receiving a response from (n−n/2) replicas that have a same version of the document, wherein n is a total number of replicas configured to support the read request including the primary replica and the plurality of secondary replicas;

determining that a subset of the plurality of secondary replicas configured to support the read request, including at least a minimum threshold number of replicas, have responded to the read request and do not have a same version of the document and the subset of the plurality of secondary replicas configured to support the read request includes less than a number of replicas required to form the quorum;

performing a read on the primary replica responsive to the subset of the plurality of secondary replicas configured to support the read request including less than the number of replicas required to form the quorum;

determining that the primary replica has responded to the read;

determining that the subset of the plurality of secondary replicas configured to support the read request and the primary replica satisfy the number of replicas required to form the quorum; and

providing the contents of the document to the user terminal without waiting for responses from a remainder of the plurality of secondary replicas based on responses being received from a threshold number of the plurality of secondary replicas that is less than (n−n/2).

13. The database management system of claim 12 , wherein the database management service is configured to perform operations of:

making read calls to the plurality of secondary replicas; and

responsive to only one of the plurality of secondary replicas responding, determine a quorum by a head read to the primary replica.

14. The database management system of claim 12 , wherein the database management service is configured to:

make read calls to the plurality of secondary replicas; and

responsive to none of the secondary replica responding, make a read call to the primary replica.

15. A method of managing a database in which each document is stored as a plurality of replicas for accessibility and data preservation, the method comprising:

maintaining a primary replica of a document,

maintaining a number of secondary replicas of the document,

maintaining a log-only replica that stores a log of changes to the document rather than full contents of the document;

addressing write requests received during normal operations to the primary replica to update data in the primary replica;

recording changes to the data in the primary replica in the log-only replica;

receiving a read request to read contents of the document from a user terminal;

in response to the read request, attempting to form a quorum by reading data from the primary replica and the number of secondary replicas, wherein forming the quorum for read requests includes receiving a response from (n−n/2) replicas that have a same version of the document, wherein n is a total number of replicas configured to support the read request including the primary replica and the number of secondary replicas;

determining whether at least (n−n/2) secondary replicas of the number of secondary replicas have responded to the read request and have the same version of the document;

in response to determining that at least (n−n/2) secondary replicas of the number of secondary replicas have responded to the read request and have the same version of the, providing the contents of the document to the user terminal; and

in response to determining that at least (n−n/2) secondary replicas of the number of secondary replicas have not responded to the read request and do not have the same version of the document, providing the contents of the document to the user terminal without waiting for responses from a remainder of the number of secondary replicas based on responses being received from a threshold number of the number of secondary replicas that is less than (n−n/2).

16. The database management system of claim 1 , wherein the at least (n−n/2) of the plurality of secondary replicas configured to support the read request includes less than a number of replicas required to form the quorum, and wherein the database management system is configured to perform a read on the primary replica responsive to the plurality of secondary replicas configured to support the read request including less than a number of replicas required to form the quorum.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2025
From: SUNDAR, HARI SUDAN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 070253/0606 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2024
From: KUMAR, BRIKESH; KOLLI, KIRAN KUMAR; ARUMUGAM, MUTHUKUMARAN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 069256/0687 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 4TH CONVEYING PARTY NAME PREVIOUSLY RECORDED AT REEL: 65941 FRAME: 271. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 14, 2024
From: KUMAR, YOGESH; JAUHARI, ANKUR; HORAL, PER MIKAEL; BISHOP, ADAM
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 069407/0406 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 22, 2023
From: KUMAR, YOGESH; JAUHARI, ANKUR; HORAL, PER MIKAEL; BISHOP, ADAM MIKAEL
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 065941/0271 →
Continuity (1)
Related Publication 20250209087A1 · Jun 26, 2025
References Cited (30)
US 5390302A · Johnson · 1995 [cited by examiner]
US 6067541A · Raju · 2000 [cited by examiner]
US 6412017B1 · Straube · 2002 [cited by examiner]
US 7831735B1 · Kabra · 2010 [cited by examiner]
US 8090880B2 · Hasha · 2012 [cited by examiner]
US 8117156B2 · Krishnaprasad · 2012 [cited by examiner]
US 8719225B1 · Rath · 2014 [cited by examiner]
US 10248704B2 · Rath · 2019 [cited by examiner]
US 10461991B1 · Morley · 2019 [cited by examiner]
US 10909143B1 · Brahmadesam · 2021 [cited by examiner]
US 11604809B1 · Vig · 2023 [cited by examiner]
US 20050188085A1 · Lin · 2005 [cited by examiner]
US 20060036896A1 · Gamache · 2006 [cited by examiner]
US 20060090095A1 · Massa · 2006 [cited by examiner]
US 20090037422A1 · Wong · 2009 [cited by examiner]
US 20100114824A1 · Krishnaprasad · 2010 [cited by examiner]
US 20110078110A1 · Joseph · 2011 [cited by examiner]
US 20120124001A1 · Shah · 2012 [cited by examiner]
US 20120239722A1 · Bolosky · 2012 [cited by examiner]
US 20120290714A1 · Cohen · 2012 [cited by examiner]
US 20140164329A1 · Guo · 2014 [cited by examiner]
US 20150278329A1 · Hrle · 2015 [cited by examiner]
US 20160132581A1 · Hsieh · 2016 [cited by examiner]
US 20180246911A1 · Lee · 2018 [cited by examiner]
US 20180337980A1 · Schreter · 2018 [cited by examiner]
US 20190340011A1 · Raman · 2019 [cited by examiner]
US 20230133608A1 · Kumar · 2023 [cited by examiner]
US 20230145054A1 · VanBenschoten · 2023 [cited by examiner]
“Read Consistency”, Retrieved from: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html, Retrieved Date: Aug. 9, 2023, 2 Pages. [cited by applicant]
“Structuring Data for Strong Consistency”, Retrieved from: https://cloud.google.com/datastore/docs/concepts/structuring_for_strong_consistency, Oct. 31, 2023, 8 Pages. [cited by applicant]