A computer-implemented method and system for distributed concurrent data updating of a business object having a structured format.
|
10. A computer-implemented method, performed by a client computer system, for distributed concurrent data updating of a business object having a structured file representation, the method comprising:
retrieving a stored business object from an object repository accessible by a plurality of client computer systems, said stored business object divided into a plurality of subsections based on semantics of the stored business object, each subsection of the plurality of subsections including a sentry having a given value based on content in the subsection, the given value of the sentry for the subsection computed by concatenating the content in the subsection as a string, and obtaining a hash value from the concatenated string;
modifying content in one or more subsections of the retrieved stored business object to form a modified business object;
determining whether the stored business object was changed by another client computer system since the stored business object was retrieved;
signaling a conflict when the stored business object is determined to have been changed; and
when the stored business object is determined not to have been changed, for each subsection in the modified business object:
determining whether the subsection was modified,
when the subsection is determined to have been modified, computing a new value for the sentry for that subsection and updating the value for the sentry in the modified business object;
and storing the modified business object in the object repository.
1. A computer-implemented method, performed by a client computer system, for distributed concurrent data updating of a business object having a structured format, the method comprising:
retrieving a stored business object from an object repository accessible by a plurality of client computer systems, said stored business object divided into a plurality of subsections based on semantics of the stored business object, each subsection of the plurality of subsections including a sentry having a given value based on content in the subsection, the given value of the sentry for the subsection computed by concatenating the content in the subsection as a string, and obtaining a hash value from the concatenated string;
modifying content in one or more subsections of the retrieved stored business object to form a modified business object;
acquiring a lock on the stored business object in the object repository;
for each subsection of the modified business object:
comparing the value of the sentry for a subsection of the modified business object to a value of the sentry in the corresponding subsection of the retrieved stored business object;
signaling a conflict when the values of the compared sentries are different;
determining whether the subsection has been changed in the modified business object when the values of the compared sentries are the same;
computing a new value for the sentry for the subsection, and updating the modified business object to include the new value of the sentry for the subsection when the subsection of the modified business object has been determined to have been changed; and
storing the modified business object in the object repository.
2. The method of
3. The method of
6. The method of
7. The method of
8. The method of
11. The method of
acquiring a lock on the stored business object in the object repository; and
comparing the value of the sentry for each subsection of the modified business object to a value of the sentry in the corresponding subsection of the retrieved stored business object.
13. The method of
14. The method of
15. The method of
16. The method of
|
This application claims priority from U.S. Provisional Patent Application No. 61/617,385 filed on Mar. 29, 2013 entitled METHODS AND SYSTEMS FOR MANAGING DISTRIBUTED CONCURRENT DATA UPDATES OF BUSINESS OBJECTS, which is hereby incorporated by reference.
For the last 10-15 years, the best practices for managing concurrent access to resources for websites have been to back the web application with a database and have its built in concurrency control manage access in a controlled fashion. The so-called ACID (Atomicity, Consistency, Isolation, Durability) properties of databases lent themselves well to building well-behaved web applications.
Traditional relational database technology relies on maintaining a global state for maintaining ACID properties. This fact makes it difficult to build systems that are horizontally scalable.
More recently, ACID was deemed to be too restrictive for web applications, and a common architecture to manage concurrency uses the middle layer of a three tier architecture to manage application concurrency. This still relies on global state for tracking concurrency, but application designers chose how to compartmentalize the system to take advantage of natural data boundaries (called sharding) to limit the scope of concurrent access. Ad hoc concurrency control is remarkably difficult to code correctly. Most application developers do not take the time to prove that their concurrency scheme works or place safeguards to detect when concurrency assumptions are violated. The two most common failures are lost updates (effectively some form of last one out wins) or undetected application deadlocks.
In accordance with one or more embodiments, a computer-implemented method is provided for distributed concurrent data updating of a business object having a structured format. The method comprises the steps, performed by a client computer system, of: (a) retrieving a stored business object from an object repository accessible by a plurality of client computer systems, said business object divided into a plurality of subsections based on semantics of the business object, each of the plurality of subsections including a sentry having a given value based on content in the subsection; (b) modifying content in one or more subsections of the stored business object retrieved in (a) to form a modified business object; (c) retrieving the stored business object from the object repository and acquiring a lock on the stored business object in the object repository; (d) comparing the value of the sentry for a subsection of the modified business object to a value of the sentry in the corresponding subsection of the stored business object retrieved in (c); (e) when the values of the sentries compared in (d) are different, signaling a conflict; (f) when the values of the sentries compared in (d) are the same, determining whether the subsection has been changed in the modified business object; (g) when the subsection of the modified business object has been determined to have been changed in (f), computing a new value for the sentry for the subsection, and updating the modified business object to include the new value of the sentry for the subsection; (h) repeating (d) to (g) for each subsection of the modified business object; and (i) storing the modified business object in the repository.
In accordance with one or more further embodiments, a computer-implemented method is provided for distributed concurrent data updating of a business object having a structured file representation. The method comprises the steps, performed by a client computer system, of: (a) retrieving a stored business object from an object repository accessible by a plurality of client computer systems, said business object divided into a plurality of subsections based on semantics of the business object, each of the plurality of subsections including one or more fields and a sentry having a given value based on content in the one or more fields; (b) modifying content in one or more subsections of the stored business object retrieved in (a) to form a modified business object; (c) determining if the stored business object was changed by another client computer system since it was retrieved in (a); (d) when the stored business object is determined to have been changed in (c), signaling a conflict; and (e) when the stored business object is determined not to have been changed in (c), for each subsection in the modified business object: (e)(i) determining if the subsection was modified in (b); (e)(ii) when the subsection is determined to have been modified in (b), computing a new value for the sentry for that subsection and updating the value for the sentry in the modified business object; and storing the modified business object in the repository.
Methods and systems for managing distributed concurrent data updates in accordance with various embodiments are applicable to many different object definition languages, where the object is stored in total in a ‘large object’ or document. By way of non-limiting example, the large object could be a business object in the form of an XML file.
Non-limiting examples of business objects include purchase orders, work orders, material orders, forecast information, quality information, inventory disposition information, inventory movement information, and product serialization information.
XML is an example of a data format language where the data is self-describing or structured. This means that each data file contains both the business data as well as the its associated meta-data information. The meta-data includes information about the contents, structure, location, and data types of the business data. It is preferred, but not mandatory that the business data can be organized hierarchically. XML is a very common method for defining a self-descriptive data structure. However, any self-descriptive data format can be used to implement the method of distributed concurrent data updates described herein.
The large object is divided into subsections (also referred to herein as objects) based on the semantics of the large object. The subsections are monitored to ensure that updates to a subsection are only allowed if the subsection has not been changed since it was accessed. For instance, if while a first user is attempting to update a subsection, another user has concurrently changed the subsection, a conflict will be detected and the update from the first user will not be allowed.
Underlying the system is an implementation of a distributed checkin/checkout subsystem to replace the large objects in a transactional manner to ensure that subsections will not be partially overwritten.
A data structure (referred to herein as a sentry) is placed inside each subsection that is to be monitored for concurrent update. The sentry keeps information concerning the state of the last update to the subsection. Attempts to update a subsection consult the sentry for that subsection to determine whether to allow the update or signal a conflict.
This enables the system to efficiently process large objects in a distributed fashion, applying updates where they do not collide.
The techniques for distributed concurrent data updating of objects in accordance with various embodiments can have many possible applications. One possible application is for use in a collaborative workspace environment with business objects as described, e.g., in U.S. Patent Application Publication No. 2011/0246340 entitled METHOD AND SYSTEM FOR COLLABORATIVE EXECUTION OF BUSINESS PROCESSES, which is incorporated by reference herein in its entirety. The business object and structured format provides for fully semantic processing and is not reliant on syntactic processing. The detection method provides for finer granularity of conflict detection and subsequently a great chance of applying changes without user intervention. The system provides a fully distributed model without a centralized gatekeeper.
Given a business object in a structured file representation (e.g., XML), a user or program may update the business object. Additionally, a multitude of users or programs may also be attempting to update the business object. The business object is a large object because it represents the totality of the item (e.g., a Purchase Order) in a structured format (e.g., XML).
The large object is divided into subsections according to the semantics of the business object. The sentry in each subsection keeps information concerning the last update of the object. In accordance with one or more embodiments, the technique is to concatenate the individual member values (as strings) and obtain a single hash value from this concatenated string. The hashing function should have properties of low likelihood of collisions as well as high degree of variability if any of the member values change.
The sentry objects do not participate in the hashing operation.
Sentry objects can be placed at each layer of the object hierarchy, for a finer grained concurrency control that is less than the entire large object.
Collections of objects can be handled as long as the entire collection is returned on each check-in.
A check-in comprises merging each subsection protected by a sentry between the last saved subsection and the new updated subsection.
The client devices operated by users to access business objects in the computer server system 100 can comprise any computing device that can communicate with the computer server system including, without limitation, personal computers (including desktop, notebook, and tablet computers), workstations, smart phones and other smart devices, and cell phones.
The computer server system 100 may comprise one or more physical machines, or virtual machines running on one or more physical machines. In addition, the computer server system may comprise a cluster of computers or numerous distributed computers that are connected by the Internet or another network, and may be implemented in a Cloud solution.
Each object subsection also includes a sentry 208, 210, 212, comprising a plurality of data elements. For example, the sentry 208 shown in
The checksum value of the sentry is computed by taking the combined contents of the data fields protected by the sentry and applying a hash function. The key attributes of this hash function are that it produces hash values that are very unlikely to be identical given different combined contents as an input and that it produces a different hash value when any input changes. An appropriate hash function should be chosen based on the properties of the combined contents of the input data fields. This is of necessity specific to the domain of the input data. An example of a suitable hash algorithm is the SHA-256 Secure Hash Algorithm developed by the National Security Agency (NSA).
The semantics of the document determine what the sentry protects. In the
For each object subsection, the cookie value in the sentry of the modified business object 300 is compared with the cookie value of the sentry in the currently stored business object 302 at step 306. If the cookie values are different, the stored business object 302 has been changed since it was retrieved to form the modified business object 300. At step 308, a decision is made as to whether or not the subsection was changed in the modified business object 300. If the subsection was changed in the modified business object 300, a conflict is signaled at step 310. Then, at step 312, the lock on the stored business object 302 is released, and conflict exception processing is performed at step 314 and the process ends.
The requester is notified that their changes were not saved. In accordance with one or more embodiments, the a list of the sections of the document that have conflicts are provided to the requester. The requester thereby has finer grain control over selectively reapplying the changes after the newest version of the document has been retrieved, or to remove the changes that are in conflict.
If the subsection was not changed in the modified business object 300, then the subsection from the stored business object is selected at step 316 for the updated object.
If, at step 306, the cookie values are determined to be the same then, at 318, the subsection of the stored business object 302 has not been changed since it was retrieved form the modified business object 300. At step 320, a determination is made as to whether the subsection has been changed in the modified business object. If the subsection has been changed, then at step 322, a new sentry value for the subsection is computed and updated in the subsection in the modified business object to be stored. If the subsection has not been changed, then the subsection for the stored business object 300 is used in the business object to be stored at 324.
Once the above process has been repeated for each of these subsections and assuming no conflicts have been signaled, the modified business object is stored in the repository at step 326. At step 328, the lock on the stored business object is released.
Variations on the above process for managing concurrent data objects are possible. For instance, the process described below first checks whether each subsection in the modified business object has been changed, and then checks to see if the subsection in the stored business object in the repository has changed since it was last retrieved. In this embodiment, each subsection has a sentry using the following algorithm to detect concurrent access:
The processes described above may be implemented in software, hardware, firmware, or any combination thereof. The processes are preferably implemented in one or more computer programs executing on one or more programmable computers including at least one processor, a storage medium readable by the processor (including, e.g., volatile and non-volatile memory and/or storage elements), and input and output devices. Each computer program can be a set of instructions (program code) in a code module resident in the random access memory of the computer. Until required by the computer, the set of instructions may be stored in another computer memory (e.g., in a hard disk drive, or in a removable memory such as an optical disk, external hard drive, memory card, or flash drive) or stored on another computer system and downloaded via the Internet or other network.
Having thus described several illustrative embodiments, it is to be appreciated that various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to form a part of this disclosure, and are intended to be within the spirit and scope of this disclosure. While some examples presented herein involve specific combinations of functions or structural elements, it should be understood that those functions and elements may be combined in other ways according to the present disclosure to accomplish the same or different objectives. In particular, acts, elements, and features discussed in connection with one embodiment are not intended to be excluded from similar or other roles in other embodiments.
Additionally, elements and components described herein may be further divided into additional components or joined together to form fewer components for performing the same functions.
Accordingly, the foregoing description is by way of example only, and not intended to be limiting.
Leckband, Craig, Spellman, Peter J., Wellington, Sean A.
Patent | Priority | Assignee | Title |
11121996, | Sep 08 2016 | Alibaba Group Holding Limited | Method and apparatus for displaying events related to peer communication party to local communication party |
11379525, | Nov 22 2017 | Palantir Technologies Inc | Continuous builds of derived datasets in response to other dataset updates |
Patent | Priority | Assignee | Title |
5671407, | Dec 07 1994 | YORANSO CONSULTING LIMITED LIABILITY COMPANY | Application-specific conflict detection for weakly consistent replicated databases |
5897634, | May 09 1997 | International Business Machines Corporation | Optimized caching of SQL data in an object server system |
6157915, | Aug 07 1998 | International Business Machines Corporation | Method and apparatus for collaboratively managing supply chains |
6633953, | Feb 08 2000 | HYWIRE LTD | Range content-addressable memory |
6704737, | Oct 18 1999 | Fisher-Rosemount Systems, Inc. | Accessing and updating a configuration database from distributed physical locations within a process control system |
6823340, | Mar 30 2001 | E2OPEN, LLC; ZYME SOLUTIONS, INC ; STEELWEDGE SOFTWARE, INC ; INTTRA INC | Private collaborative planning in a many-to-many hub |
6961760, | Jul 17 2001 | International Business Machines Corporation | Transforming data automatically between communications parties in a computing network |
6986104, | Jun 26 2000 | SILVER CREEK SYSTEMS, INC | Method and apparatus for normalizing and converting structured content |
7085286, | Jun 29 2001 | International Business Machines Corporation | Stateful business-to-business protocol exchange |
7120703, | Jul 17 2001 | International Business Machines Corporation | Transforming data automatically between communications parties in a computing network |
7143190, | Apr 02 2001 | CENTEGY CORPORATION | Method and system for remotely facilitating the integration of a plurality of dissimilar systems |
7155455, | Mar 24 2000 | Inner Circle Logistics, Inc. | Method and system for business information networks |
7236939, | Mar 31 2001 | VALTRUS INNOVATIONS LIMITED | Peer-to-peer inter-enterprise collaborative process management method and system |
7249157, | Feb 16 2000 | Oracle International Corporation | Collaboration system for exchanging of data between electronic participants via collaboration space by using a URL to identify a combination of both collaboration space and business protocol |
7281211, | Dec 21 2001 | GXS, INC | Automated method, system, and software for transforming data between extensible markup language format and electronic data interchange format |
7386797, | May 22 2002 | ORACLE INTERNATIONAL CORPORATION OIC | Framework to model and execute business processes within a collaborative environment |
7421458, | Oct 16 2003 | Informatica LLC | Querying, versioning, and dynamic deployment of database objects |
7571166, | Jun 19 2001 | PTC INC | Virtual private supply chain |
7574441, | Mar 30 2001 | E2OPEN, LLC; ZYME SOLUTIONS, INC ; STEELWEDGE SOFTWARE, INC ; INTTRA INC | Private collaborative planning in a many-to-many hub |
7584222, | Jun 01 2004 | Citrix Systems, Inc | Methods and apparatus facilitating access to shared storage among multiple computers |
7680867, | Jan 10 2006 | Silver Creek Systems, Inc. | Method and apparatus for normalizing and converting structured content |
7797452, | Apr 02 2001 | Irving S., Rappaport | Method and system for facilitating the integration of a plurality of dissimilar systems |
7865358, | Jun 26 2000 | Oracle International Corporation | Multi-user functionality for converting data from a first form to a second form |
7925675, | May 24 2001 | RPX Corporation | Data exchange tool |
7970826, | Dec 06 2001 | HEWLETT-PACKARD DEVELOPMENT COMPANY L P | Transformational conversation definition language |
7987116, | Oct 02 2000 | OPEN TEXT HOLDINGS, INC | Industry-wide business to business exchange |
8020196, | Oct 25 2002 | Secure transmission and exchange of standardized data | |
8028229, | Dec 06 2007 | Microsoft Technology Licensing, LLC | Document merge |
8037476, | Sep 15 2005 | Oracle America, Inc | Address level log-based synchronization of shared data |
8095497, | Apr 18 2001 | International Business Machines Corporation | Process for data driven application integration for B2B |
20020010741, | |||
20030004952, | |||
20030046134, | |||
20050065903, | |||
20050086384, | |||
20050097146, | |||
20060085796, | |||
20060085799, | |||
20060248131, | |||
20060253860, | |||
20080005112, | |||
20080005235, | |||
20080040365, | |||
20080114839, | |||
20080162564, | |||
20080312978, | |||
20090024514, | |||
20090037453, | |||
20090077135, | |||
20090089658, | |||
20090198670, | |||
20090300093, | |||
20100030752, | |||
20100088676, | |||
20100325371, | |||
20110099335, | |||
20120101980, | |||
20120150802, | |||
20140280370, | |||
KR20100026953, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 29 2013 | TRACELINK, INC. | (assignment on the face of the patent) | / | |||
Jul 18 2013 | SPELLMAN, PETER J | TRACELINK, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030963 | /0057 | |
Jul 18 2013 | LECKBAND, CRAIG | TRACELINK, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030963 | /0057 | |
Aug 01 2013 | WELLINGTON, SEAN A | TRACELINK, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030963 | /0057 |
Date | Maintenance Fee Events |
Feb 10 2020 | M2551: Payment of Maintenance Fee, 4th Yr, Small Entity. |
Feb 09 2024 | M2552: Payment of Maintenance Fee, 8th Yr, Small Entity. |
Date | Maintenance Schedule |
Aug 09 2019 | 4 years fee payment window open |
Feb 09 2020 | 6 months grace period start (w surcharge) |
Aug 09 2020 | patent expiry (for year 4) |
Aug 09 2022 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 09 2023 | 8 years fee payment window open |
Feb 09 2024 | 6 months grace period start (w surcharge) |
Aug 09 2024 | patent expiry (for year 8) |
Aug 09 2026 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 09 2027 | 12 years fee payment window open |
Feb 09 2028 | 6 months grace period start (w surcharge) |
Aug 09 2028 | patent expiry (for year 12) |
Aug 09 2030 | 2 years to revive unintentionally abandoned end. (for year 12) |