Item request has been placed! ×
Item request cannot be made. ×
loading  Processing Request

System and method for offline-first application development

Item request has been placed! ×
Item request cannot be made. ×
loading   Processing Request
  • Publication Date:
    October 10, 2023
  • Additional Information
    • Patent Number:
      11785,083
    • Appl. No:
      18/095962
    • Application Filed:
      January 11, 2023
    • Abstract:
      A system to synchronize application data bidirectionally between N clients and one server, by: (a) pushing mutations made in the client to the server, wherein each mutation is comprised of a mutation name identifying the type of mutation, and arguments provided by the application modifying the behavior of the mutation, and the pusher also pushes a client ID and mutation ID for each mutation to the server; (b) pulling server differentials to the client; (c) storing key/value pairs in a versioned cache, wherein the keys are text strings and the values are data provided by an application in the client; and (d) resolving conflicts between the client and the server with a rebaser that: forks the cache to create a synch branch when the client receives the latest server differential, applies the latest received server differential to the synch branch, applies only those mutations to the synch branch that have not already been acknowledged by the server, and then makes the synch branch the main branch of the cache.
    • Inventors:
      ROCICORP, LLC (Kailua, HI, US)
    • Assignees:
      ROCICORP, LLC (Kailua, HI, US)
    • Claim:
      1. A system to synchronize application data bidirectionally between N clients and one server, comprising: (a) a server; (b) a system for determining a server differential, the server differential being a snapshot of the most recent operating state of the server compared to a previous snapshot of the operating state of the server; and (c) a plurality of N clients, wherein each of the N clients comprises: (i) a pusher that pushes sequential mutations made in the client to the server, (ii) a puller that pulls the server differential to the client, (iii) a versioned cache that stores sequential mutations made in the client, wherein the versioned cache is forkable to store parallel historical versions of the cache, and (iii) a rebaser that resolves conflicts between the server and the client by: forking the versioned cache to create a synch branch when the client receives the server differential, applying mutations to the synch branch, wherein the mutations applied to the synch branch are mutations that have not previously been received from the server, and then making the synch branch the main branch of the cache.
    • Claim:
      2. The system of claim 1 , wherein the rebaser removes data in unreacheable cache branches from system memory.
    • Claim:
      3. The system of claim 1 , wherein the server decides whether to apply, modify or reject each mutation received from each of the N clients.
    • Claim:
      4. The system of claim 3 , wherein mutations applied by the server are then applied across all of the N clients in the same order they were applied by the server.
    • Claim:
      5. The system of claim 1 , wherein the server differential is determined iteratively by taking iterative snapshots of the operating state of the server.
    • Claim:
      6. The system of claim 1 , wherein the client mutations are continuously pushed to the server without waiting for the server to respond to the client.
    • Claim:
      7. The system of claim 1 , wherein the server stores the mutations received from each of the clients by both a client ID and by a sequential mutation ID.
    • Claim:
      8. The system of claim 1 , wherein each client is independently synchronized to the server such that different mutations can be made at different times to different clients without the clients having to communicate with one another.
    • Claim:
      9. The system of claim 1 , wherein the server differential comprises a numerical sequence of mutations made in the server.
    • Claim:
      10. The system of claim 9 , wherein the server differential is sent to the client in a cookie that identifies the last mutation received from the client.
    • Claim:
      11. The system of claim 1 , wherein the system for determining the server differential is: resident in the server, or resident in a differential server.
    • Claim:
      12. The system of claim 1 , wherein the server does not re-execute client mutations it has already received.
    • Claim:
      13. The system of claim 1 , wherein the server is one of a web service, a data layer, a single physical server or a plurality of separate physical machines operating together as one logical server.
    • Claim:
      14. The system of claim 1 , wherein each mutation is comprised of a mutation name identifying the type of mutation and arguments provided by a client application modifying the behavior of the mutation.
    • Claim:
      15. The system of claim 1 , wherein the versioned cache stores key/value pairs, and wherein the keys are text strings and the values are data provided by an application in the client.
    • Claim:
      16. The system of claim 1 , wherein the server selects the client mutations to analyze based upon the associated sequential mutation ID for each of the N clients such that the server analyzes the most recent successive mutation that has not previously been analyzed for each of the N clients.
    • Claim:
      17. The system of claim 1 , wherein the server differential generated for each of the N clients is calculated from a cookie sent to the particular client and the last client mutation ID received from that particular client.
    • Patent References Cited:
      7085904 August 2006 Mizuno et al.
      20070128899 June 2007 Mayer
      20070162308 July 2007 Peters
      20080120350 May 2008 Grabowski et al.
      20170262345 September 2017 Wang
      20170357682 December 2017 Matsuda
      20180373874 December 2018 Spernow

    • Other References:
      Konstantopoulos et al., “Distributed Personal Cloud Storage without Third Parties”, Nov. 22, 2019, IEEE, IEEE Transactions on Parallel and Distributed Systems (vol. 30, Issue: 11, pp. 2434-2448) (Year: 2019). cited by examiner
      Wang et al., Forkbase: An Efficient Storage Engine for Blockchain and Forkable Applications, Feb. 14, 2018, 15 pages. cited by applicant
    • Primary Examiner:
      Zand, Davoud A
    • Attorney, Agent or Firm:
      Gordon Rees Scully Mansukhani LLP
      Heckadon, David R.
    • Accession Number:
      edspgr.11785083