IP Library Granted Patent US 12,189,417
Granted Patent B2
US 12,189,417 · App. 17/342,310 · Granted Jan 7, 2025

Time proposals in director-based database system for transactional consistency

Inventor: Patrick James Helland (San Rafael, CA)
Assignee: Salesforce, Inc.
G06F1/10
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,189,417
App. No.
17/342,310
Granted
Jan 7, 2025
Kind
B2
Abstract

Techniques are disclosed relating to a database system includes worker nodes operable to perform transactions and director nodes operable to ensure transactional consistency for the transactions. A worker node may receive a request to perform a transaction involving writing a record. The worker node may then issue, to director nodes of the database system, a request for information that facilitates performance of an operation for the transaction. A director node may determine whether to approve the request based on whether the operation could cause transactional inconsistency in the database system. The worker node may proceed to perform the operation for the transaction in response to receiving approval responses from a majority of the director nodes, with none of the received responses indicating a disapproval of the transaction.

Claims (43)

1. A method, comprising:

receiving, by a worker node of a database system, a request to perform a transaction that involves writing a record, wherein the database system includes a plurality of worker nodes operable to perform transactions for the database system and a plurality of director nodes operable to ensure transactional consistency for the transactions;

selecting, by the worker node, a proposed commit time for the transaction; and

issuing, by the worker node to director nodes of the plurality of director nodes, a request for approval to commit the transaction, wherein the request specifies the proposed commit time, and wherein a given director node of the director nodes is operable to process the request for approval upon reaching the proposed commit time according to a clock of the given director node that identifies a time observed by the given director node.

2. The method of claim 1 , further comprising:

determining, by the worker node, time delays in communicating with the director nodes, wherein a given time delay of the time delays is a delay between sending a given request from the worker node to a director node of the director nodes and the director node receiving the given request, and wherein the proposed commit time is selected based on the determined time delays.

3. The method of claim 2 , further comprising:

recording a first time at which the given request is sent to the director node; and

receiving a response to the given request that identifies a second time at which the given request was received at the director node, wherein the given time delay is determined based on the first and second times and a clock-skew.

4. The method of claim 2 , wherein the proposed commit time is a future time selected, based on the time delays, to allow the request for approval to arrive at the director nodes before the future time according to respective clocks of the director nodes.

5. The method of claim 1 , further comprising:

receiving, by the worker node from at least one of the director nodes, a disapproval response that indicates a disapproval of the proposed commit time based on an arrival of the request at the at least one director node after the proposed commit time according to a clock of the at least one director node.

6. The method of claim 5 , wherein the proposed commit time is a first amount of time after a current time that is identified by a clock of the worker node, and wherein the method further comprises:

based on receiving the disapproval response, the worker node selecting another proposed commit time that is a second amount of time after the current time identified by the clock of the worker node, wherein the second amount of time is greater than the first amount of time.

7. The method of claim 1 , wherein the proposed commit time is selected based on time identified by a clock of the worker node, and wherein the clock of the worker node identifies a different time than a clock of at least one of the plurality of director nodes.

8. The method of claim 1 , wherein a clock of a particular one of the plurality of director nodes specifies a different time than a clock of at least one other director node of the plurality of director nodes.

9. The method of claim 1 , wherein the given director node is operable to check for conflicts between the record of the transaction and a set of approved records known to the given director node that occurred before the proposed commit time.

10. A non-transitory computer readable medium having program instructions stored thereon that are capable of causing a worker node of a database system to perform operations comprising:

receiving a request to perform a transaction that involves writing a record, wherein the database system includes a plurality of worker nodes operable to perform transactions for the database system and a plurality of director nodes operable to ensure transactional consistency for the transactions;

selecting a proposed commit time for the transaction; and

issuing, to director nodes of the plurality of director nodes, a request for approval to commit the transaction, wherein the request specifies the proposed commit time, and wherein a given director node of the director nodes is operable to process the request for approval upon reaching the proposed commit time according to a clock of the given director node that identifies a time observed by the given director node.

11. The medium of claim 10 , wherein the operations further comprise:

maintaining delay information that identifies time delays between sending a given request to the director nodes and the director nodes receiving the given request, wherein the selecting of the proposed commit time is based on the time delays.

12. The medium of claim 11 , wherein the operations further comprise:

recording a first time at which the request for approval was issued to the given director node according to a clock of the worker node;

receiving, from the given director node, a response to the request for approval that identifies a second time at which the request for approval was received at the given director node according to the clock of the given director node; and

updating the delay information to include a time delay based on the first and second times.

13. The medium of claim 12 , wherein the operations further comprise:

including the delay information in the request for approval to enable a first director node of the director nodes to attempt to align a time observed by the first director node with a time observed by a second director node of the director nodes.

14. The medium of claim 10 , wherein the operations further comprise:

aborting the transaction in response to receiving, from at least one of the director nodes, a disapproval response that indicates a disapproval of the proposed commit time based on an arrival of the request at the at least one director node after the proposed commit time.

15. A method, comprising:

accessing, by a worker node of a database system, delay information specifying time delays in communicating with ones of a plurality of director nodes of the database system that are operable to ensure transactional consistency for transactions of the database system;

receiving, by the worker node, a request to perform a transaction;

selecting, by the worker node, a proposed commit time for the transaction based on the delay information and a clock of the worker node; and

issuing, by the worker node to two or more of the plurality of director nodes, a first request for approval to commit the transaction, wherein the first request specifies the proposed commit time, and wherein a given director node of the two or more director nodes is operable to process the first request for approval upon reaching the proposed commit time according to a clock of the given director node.

16. The method of claim 15 , further comprising:

prior to issuing the first request for approval, the worker node issuing a second request to the given director node for approval of a proposed time associated with another transaction;

recording, by the worker node, a first time at which the second request for approval was issued to the given director node according to the clock of the worker node; and

receiving, by the worker node from the given director node, a response to the second request for approval that identifies a second time at which the second request for approval was received at the given director node according to the clock of the given director node, wherein the clock of the worker node identifies a different time than the clock of the given director node, and wherein the proposed commit time is selected based on the first and second times.

17. The method of claim 15 , wherein the proposed commit time is a future time that is determined to permit the request for approval to arrive at the given director node prior to the future time according to the clock of the given director node.

18. The method of claim 15 , further comprising:

sending, by the worker node, the delay information to the director nodes to enable ones of the director nodes to attempt to align times identified by clocks of the director nodes.

Assignments (2)
CHANGE OF NAME Recorded Nov 25, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069443/0207 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2021
From: HELLAND, PATRICK JAMES
To: SALESFORCE.COM, INC.
Reel/Frame 056473/0668 →
Continuity (1)
Related Publication 20220391378A1 · Dec 8, 2022
References Cited (67)
US 6301601B1 · Helland et al. · 2001 [cited by applicant]
US 8356007B2 · Larson · 2013 [cited by examiner]
US 9075841B2 · Larson · 2015 [cited by examiner]
US 9261898B1 · Allen · 2016 [cited by applicant]
US 9984140B1 · Sukumaran et al. · 2018 [cited by applicant]
US 10191959B1 · Nguyen et al. · 2019 [cited by applicant]
US 10250693B2 · Colrain et al. · 2019 [cited by applicant]
US 10298715B2 · Aikoh et al. · 2019 [cited by applicant]
US 10324905B1 · Ross · 2019 [cited by examiner]
US 10346386B2 · Chatterjee et al. · 2019 [cited by applicant]
US 10423342B1 · Chheda · 2019 [cited by examiner]
US 10572510B2 · Lee et al. · 2020 [cited by applicant]
US 10585873B2 · Lee et al. · 2020 [cited by applicant]
US 10901861B2 · Martin et al. · 2021 [cited by applicant]
US 10936578B2 · Lee et al. · 2021 [cited by applicant]
US 11314675B2 · Geng et al. · 2022 [cited by applicant]
US 11403000B1 · Barker, Jr. · 2022 [cited by applicant]
US 11409781B1 · Brahmadesam · 2022 [cited by applicant]
US 11461347B1 · Das · 2022 [cited by applicant]
US 11669518B1 · Chan · 2023 [cited by examiner]
US 11822535B2 · Helland · 2023 [cited by applicant]
US 11909574B2 · Miedema · 2024 [cited by examiner]
US 12066999B1 · Terry · 2024 [cited by examiner]
US 20100103781A1 · Rai et al. · 2010 [cited by applicant]
US 20100174802A1 · Chan · 2010 [cited by applicant]
US 20120102006A1 · Larson et al. · 2012 [cited by applicant]
US 20130159251A1 · Skrenta · 2013 [cited by applicant]
US 20130290249A1 · Merriman et al. · 2013 [cited by applicant]
US 20130332484A1 · Gajic · 2013 [cited by applicant]
US 20150254325A1 · Stringham · 2015 [cited by applicant]
US 20150278039A1 · Bogdanov et al. · 2015 [cited by applicant]
US 20150295700A1 · Gomez Gutierrez et al. · 2015 [cited by applicant]
US 20150317371A1 · Ramamurthi et al. · 2015 [cited by applicant]
US 20150378774A1 · Vermeulen · 2015 [cited by applicant]
US 20160070771A1 · Vermeulen et al. · 2016 [cited by applicant]
US 20160210322A1 · Little · 2016 [cited by applicant]
US 20170177697A1 · Lee · 2017 [cited by examiner]
US 20170277562A1 · Christian · 2017 [cited by examiner]
US 20180004798A1 · Kimura · 2018 [cited by applicant]
US 20180062780A1 · Shimizu et al. · 2018 [cited by applicant]
US 20180232308A1 · Kusters · 2018 [cited by applicant]
US 20180349430A1 · Lee et al. · 2018 [cited by applicant]
US 20180373708A1 · Martin et al. · 2018 [cited by applicant]
US 20190156153A1 · Can · 2019 [cited by examiner]
US 20200089523A1 · Cole · 2020 [cited by applicant]
US 20210064473A1 · Zhang · 2021 [cited by applicant]
US 20210182246A1 · Foque · 2021 [cited by applicant]
US 20220147989A1 · Marsh · 2022 [cited by applicant]
US 20220391291A1 · Helland · 2022 [cited by applicant]
US 20220391376A1 · Helland · 2022 [cited by applicant]
US 20220391377A1 · Helland · 2022 [cited by applicant]
US 20220391378A1 · Helland · 2022 [cited by applicant]
US 20220391379A1 · Helland · 2022 [cited by applicant]
Office Action in U.S. Appl. No. 17/342,275 mailed Mar. 2, 2023, 17 pages. [cited by applicant]
International Search Report and Written Opinion in PCT Appl. No. PCT/US2022/072197 mailed Aug. 12, 2022, 12 pages. [cited by applicant]
International Search Report and Written Opinion in PCT Appl. No. PCT/US2022/072200 mailed Aug. 9, 2022, 14 pages. [cited by applicant]
Wikipedia, “Blockchain,” Jun. 2, 2021 (Jun. 2, 2021), XP055947746, Retrieved from the Internet: URL: https://en.wikipedia.org/w/index.php?tit1e=B1ockchain&o1did=1026435765 (retrieved on Aug. 1, 2022] 30 pages. [cited by applicant]
Office Action in U.S. Appl. No. 17/342,319 mailed Jan. 30, 2023, 20 pages. [cited by applicant]
Huang et al., “Gray Failure: The Achilles' Heel of Cloud-Scale Systems,” HotOS '17, May 8-10, 2017, Association for Computing Machinery; https://www.microsoft.com/en-us/research/wp-content/uploads/2017/06/paper-1.pdf; 6… [cited by applicant]
Gunawi et al., “Fail-Slow at Scale: Evidence of Hardware Performance Faults in Large Production Systems,” Proceedings of the 16th USENIX Conference on File and Storage Technologies, Feb. 12-15, 2018; https://www.usenix.… [cited by applicant]
Office Action in U.S. Appl. No. 17/342,290 mailed May 25, 2023, 7 pages. [cited by applicant]
Office Action in U.S. Appl. No. 17/342,319 mailed Aug. 10, 2023, 22 pages. [cited by applicant]
Office Action in U.S. Appl. No. 17/342,300 mailed Aug. 31, 2023, 15 pages. [cited by applicant]
Office Action in U.S. Appl. No. 17/342,319 mailed Jan. 4, 2024, 22 pages. [cited by applicant]
Office Action in U.S. Appl. No. 17/342,290 mailed Nov. 21, 2023, 8 pages. [cited by applicant]
Notice of Allowance in U.S. Appl. No. 17/342,290 mailed Mar. 28, 2024, 8 pages. [cited by applicant]
Xinan Yan et al., Domino: Using Network Measurements to Reduce State Machine Replication Latency in WANs, Nov. 24, 2020, pp. 351-363, published in CoNEXT '20: Proceedings of the 16th International Conference on Emerging… [cited by applicant]