Transaction-scoped replication for distributed object systems
First Claim
1. A computer program product for improving performance in a distributed object system, said computer program product embodied on a computer readable medium and comprising:
- computer-readable program code means for creating a tree structure to represent one or more subtransactions of one or more concurrent and/or nested transactions which may access one or more objects stored at a remote persistent object store in said distributed object system, wherein each node of said tree structure maintains an independent view comprising a version of each object available at said node;
computer-readable program code means for requesting, by a selected one of said subtransactions, access to a selected one of said stored objects;
computer-readable program code means for determining whether said selected object is available in a particular independent view maintained by a node in which said selected subtransaction is executing;
computer-readable program code means for obtaining a version of said selected object and making said obtained version available to said particular independent view when said computer-readable program code means for determining has a negative result;
computer-readable program code means for temporarily making one or more modifications to said selected object, said modifications requested by said selected subtransaction, by making said modifications to said particular independent view of said selected subtransaction;
computer-readable program code means for committing said modifications upon a commit request; and
computer-readable program code means for performing a rollback of said modifications upon a rollback request.
1 Assignment
0 Petitions
Accused Products
Abstract
A method, system, and computer program product for improving the performance of distributed object systems. A remote object is replicated to the node of the distributed system from which it is accessed. The scope of the replication is a transaction. Thereafter, method invocations on the object occur locally, avoiding the performance overhead of frequent round trips to the remote persistent object store. Changes made to a replicated object by a transaction are represented using a tree structure that is internally managed by the application. When an application or application user has made modifications to a replicated object and requests to commit the modifications, a determination is first made as to whether committing the modifications will result in an unacceptable data conflict. If no unacceptable data conflict will occur, and after resolution of those conflicts that can be resolved, the modifications are committed. Nested transactions are supported, where each child transaction may commit or roll back independently.
-
Citations
24 Claims
-
1. A computer program product for improving performance in a distributed object system, said computer program product embodied on a computer readable medium and comprising:
-
computer-readable program code means for creating a tree structure to represent one or more subtransactions of one or more concurrent and/or nested transactions which may access one or more objects stored at a remote persistent object store in said distributed object system, wherein each node of said tree structure maintains an independent view comprising a version of each object available at said node;
computer-readable program code means for requesting, by a selected one of said subtransactions, access to a selected one of said stored objects;
computer-readable program code means for determining whether said selected object is available in a particular independent view maintained by a node in which said selected subtransaction is executing;
computer-readable program code means for obtaining a version of said selected object and making said obtained version available to said particular independent view when said computer-readable program code means for determining has a negative result;
computer-readable program code means for temporarily making one or more modifications to said selected object, said modifications requested by said selected subtransaction, by making said modifications to said particular independent view of said selected subtransaction;
computer-readable program code means for committing said modifications upon a commit request; and
computer-readable program code means for performing a rollback of said modifications upon a rollback request.- View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
computer-readable program code means for checking whether said selected subtransaction is a remote transaction;
computer-readable program code means for copying said version of said selected object from an ancestor node when said computer-readable program code means for checking has a negative result; and
computer-readable program code means for replicating said version of said selected object from a remote parent node when said computer-readable program code means for checking has a positive result.
-
-
3. The computer program product according to claim 2, wherein said computer-readable program code means for copying further comprises:
-
computer-readable program code means for retrieving said selected object from said remote persistent object store when said selected object is not available in said independent view of any ancestor node of said selected subtransaction in said tree structure, thereby making said selected object available from said independent view of a particular one of said ancestor nodes;
computer-readable program code means for copying said selected object down through said tree structure to said selected subtransaction from said independent view of said ancestor node in which said selected object is available; and
computer-readable program code means for adding said retrieved object to said particular independent view of said selected subtransaction.
-
-
4. The computer program product according to claim 2, wherein said computer-readable program code means for replicating further comprises:
-
computer-readable program code means for retrieving said selected object from said remote persistent object store when said selected object is not available in said independent view of said remote parent node or said independent view of any ancestor node of said selected subtransaction in said tree structure, thereby making said selected object available from said independent view of a particular one of said ancestor nodes;
computer-readable program code means for copying said selected object down through said tree structure to said remote parent node of said selected subtransaction from said independent view of said ancestor in which said selected object is available;
computer-readable program code means for rendering said selected object into a portable format at said remote parent node;
computer-readable program code means for transmitting said portable format from said remote parent node to said node in which said selected subtransaction is executing;
computer-readable program code means for receiving said transmitted portable format and reconstituting said selected object from said portable format at said node in which said selected subtransaction is executing; and
computer-readable program code means for adding said reconstituted selected object to said particular independent view of said selected subtransaction.
-
-
5. The computer program product according to claim 1, wherein said computer-readable program code means for committing further comprises:
-
computer-readable program code means for use when said subtransaction is not a top-level transaction in a transaction tree, comprising;
computer-readable program code means for attempting to merge said modifications to said parent of said subtransaction upon said request to commit said modifications;
computer-readable program code means for cancelling said commit request if said computer-readable program code means for attempting detects one or more unresolvable data conflicts with one or more separate modifications made to said selected object, wherein said separate modifications are stored by said parent in said independent view of said parent;
computer-readable program code means for performing said merge of said modifications to said independent view of said parent if said computer-readable program code means for attempting does not detect any of said unresolvable data conflicts; and
computer-readable program code means for committing said merged modifications to said independent view of said parent; and
computer-readable program code means for use when said subtransaction is said top-level transaction in said transaction tree, comprising;
computer-readable program code means for committing said modifications with a copy of said selected object in said remote persistent object store;
computer-readable program code means for merging said modifications to a global transaction if said computer-readable program code means for committing does not detect an error condition; and
computer-readable program code means for discarding said top-level transaction and any subtransactions related to said top-level transaction in said transaction tree.
-
-
6. The computer program product according to claim 1, wherein said computer-readable program code means for committing further comprises:
-
computer-readable program code means for use when said subtransaction is not a top-level transaction in a transaction tree, comprising;
computer-readable program code means for attempting to merge said modifications to said parent of said subtransaction upon a request to commit said modifications;
computer-readable program code means for cancelling said commit request if said computer-readable program code means for attempting detects one or more unresolvable data conflicts with one or more separate modifications made to said selected object, wherein said separate modifications are stored by said parent in said independent view of said parent;
computer-readable program code means for performing said merge of said modifications to said independent view of said parent if said computer-readable program code means for attempting does not detect any of said unresolvable data conflicts; and
computer-readable program code means for committing said merged modifications to said independent view of said parent; and
computer-readable program code means for use when said subtransaction is said top-level transaction in said transaction tree, comprising;
computer-readable program code means for committing said modifications with a copy of said selected object in said remote persistent object store; and
computer-readable program code means for discarding said top-level transaction and any subtransactions related to said top-level transaction in said transaction tree.
-
-
7. The computer program product according to claim 5, wherein said computer-readable program code means for attempting further comprises invoking application-specific logic to determine when said separate modifications indicate that one of said unresolvable data conflicts is found and said computer-readable program code means for merging further comprises invoking application-specific logic to resolve any resolvable data conflicts.
-
8. The computer program product according to claim 5, wherein said computer-readable program code means for attempting further comprises computer-readable program code means for determining that no unresolvable data conflict will occur if one of an object version from a child transaction and a parent transaction which are to be merged has not been modified or where both of the object versions have been modified from the child transaction and the parent transaction, logic is applied that determines that the object versions can be successfully merged;
- and
wherein said computer-readable program code means for performing said merging further comprises computer-readable program code means for invoking application-specific logic to resolve any resolvable data conflicts.
- and
-
9. A system for improving performance in a distributed object system, comprising:
-
means for creating a tree structure to represent one or more subtransactions of one or more concurrent and/or nested transactions which may access one or more objects stored at a remote persistent object store in said distributed object system, wherein each node of said tree structure maintains an independent view comprising a version of each object available at said node;
means for requesting, by a selected one of said subtransactions, access to a selected one of said stored objects;
means for determining whether said selected object is available in a particular independent view maintained by a node in which said selected subtransaction is executing;
means for obtaining a version of said selected object and making said obtained version a available to said particular independent view when said means for determining has a negative result;
means for temporarily making one or more modifications to said selected object, said modifications requested by said selected subtransaction, by making said modifications to said particular independent view of said selected subtransaction;
means for committing said modifications upon a commit request; and
means for performing a rollback of said modifications upon a rollback request. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
means for checking whether said selected subtransaction is a remote transaction;
means for copying said version of said selected object from an ancestor node when said means for checking has a negative result; and
means for replicating said version of said selected object from a remote parent node when said means for checking has a positive result.
-
-
11. The system according to claim 10, wherein said means for copying further comprises:
-
means for retrieving said selected object from said remote persistent object store when said selected object is not available in said independent view of any ancestor node of said selected subtransaction in said tree structure, thereby making said selected object available from said independent view of a particular one of said ancestor nodes;
means for copying said selected object down through said tree structure to said selected subtransaction from said independent view of said ancestor node in which said selected object is available; and
means for adding said retrieved object to said particular independent view of said selected subtransaction.
-
-
12. The system according to claim 10, wherein said means for replicating further comprises:
-
means for retrieving said selected object from said remote persistent object store when said selected object is not available in said independent view of said remote parent node or said independent view of any ancestor node of said selected subtransaction in said tree structure, thereby making said selected object available from said independent view of a particular one of said ancestor nodes;
means for copying said selected object down through said tree structure to said remote parent node of said selected subtransaction from said independent view of said ancestor in which said selected object is available;
means for rendering said selected object into a portable format at said remote parent node;
means for transmitting said portable format from said remote parent node to said node in which said selected subtransaction is executing;
means for receiving said transmitted portable format and reconstituting said selected object from said portable format at said node in which said selected subtransaction is executing; and
means for adding said reconstituted selected object to said particular independent view of said selected subtransaction.
-
-
13. The system according to claim 9, wherein said means for committing further comprises:
-
means for use when said subtransaction is not a top-level transaction in a transaction tree, comprising;
means for attempting to merge said modifications to said parent of said subtransaction upon said request to commit said modifications;
means for cancelling said commit request if said means for attempting detects one or more unresolvable data conflicts with one or more separate modifications made to said selected object, wherein said separate modifications are stored by said parent in said independent view of said parent;
means for performing said merge of said modifications to said independent view of said parent if said means for attempting does not detect any of said unresolvable data conflicts; and
means for committing said merged modifications to said independent view of said parent; and
means for use when said subtransaction is said top-level transaction in said transaction tree, comprising;
means for committing said modifications with a copy of said selected object in said remote persistent object store;
means for merging said modifications to a global transaction if said means for committing does not detect an error condition; and
means for discarding said top-level transaction and any subtransactions related to said top-level transaction in said transaction tree.
-
-
14. The system according to claim 9, wherein said means for committing further comprises:
-
means for use when said subtransaction is not a top-level transaction in a transaction tree, comprising;
means for attempting to merge said modifications to said parent of said subtransaction upon a request to commit said modifications;
means for cancelling said commit request if said means for attempting detects one or more unresolvable data conflicts with one or more separate modifications made to said selected object, wherein said separate modifications are stored by said parent in said independent view of said parent;
means for performing said merge of said modifications to said independent view of said parent if said means for attempting does not detect any of said unresolvable data conflicts; and
means for committing said merged modifications to said independent view of said parent; and
means for use when said subtransaction is said top-level transaction in said transaction tree, comprising;
means for committing said modifications with a copy of said selected object in said remote persistent object store; and
means for discarding said top-level transaction and any subtransactions related to said top-level transaction in said transaction tree.
-
-
15. The system according to claim 13, wherein said means for attempting further comprises invoking application-specific logic to determine when said separate modifications indicate that one of said unresolvable data conflicts is found and said means for merging further comprises invoking application-specific logic to resolve any resolvable data conflicts.
-
16. The system according to claim 13, wherein said means for attempting further comprises means for determining that no unresolvable data conflict will occur if one of an object version from a child transaction and a parent transaction which are to be merged has not been modified or where both of the object versions have been modified from the child transaction and the parent transaction, logic is applied that determines that the object versions can be successfully merged;
- and
wherein said means for performing said merging further comprises means for invoking application-specific logic to resolve any resolvable data conflicts.
- and
-
17. A method for improving performance in a distributed object system, comprising the steps of:
-
creating a tree structure to represent one or more subtransactions of one or more concurrent and/or nested transactions which may access one or more objects stored at a remote persistent object store in said distributed object system, wherein each node of said tree structure maintains an independent view comprising a version of each object available at said node;
requesting, by a selected one of said subtransactions, access to a selected one of said stored objects;
determining whether said selected object is available in a particular independent view maintained by a node in which said selected subtransaction is executing;
obtaining a version of said selected object and making said obtained version available to said particular independent view when said determining step has a negative result;
temporarily making one or more modifications to said selected object, said modifications requested by said selected subtransaction, by making said modifications to said particular independent view of said selected subtransaction;
committing said modifications upon a commit request; and
performing a rollback of said modifications upon a rollback request. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24)
checking whether said selected subtransaction is a remote transaction;
copying said version of said selected object from an ancestor node when said checking step has a negative result; and
replicating said version of said selected object from a remote parent node when said checking step has a positive result.
-
-
19. The method according to claim 18, wherein said copying step further comprises the steps of:
-
retrieving said selected object from said remote persistent object store when said selected object is not available in said independent view of any ancestor node of said selected subtransaction in said tree structure, thereby making said selected object available from said independent view of a particular one of said ancestor nodes;
copying said selected object down through said tree structure to said selected subtransaction from said independent view of said ancestor node in which said selected object is available; and
adding said retrieved object to said particular independent view of said selected subtransaction.
-
-
20. The method according to claim 18, wherein said replicating step further comprises the steps of:
-
retrieving said selected object from said remote persistent object store when said selected object is not available in said independent view of said remote parent node or said independent view of any ancestor node of said selected subtransaction in said tree structure, thereby making said selected object available from said independent view of a particular one of said ancestor nodes;
copying said selected object down through said tree structure to said remote parent node of said selected subtransaction from said independent view of said ancestor in which said selected object is available;
rendering said selected object into a portable format at said remote parent node;
transmitting said portable format from said remote parent node to said node in which said selected subtransaction is executing;
receiving said transmitted portable format and reconstituting said selected object from said portable format at said node in which said selected subtransaction is executing; and
adding said reconstituted selected object to said particular independent view of said selected subtransaction.
-
-
21. The method according to claim 17, wherein said committing step further comprises the steps of:
-
performing a commit when said subtransaction is not a top-level transaction in a transaction tree, comprising the steps of;
attempting to merge said modifications to said parent of said subtransaction upon said request to commit said modifications;
cancelling said commit request if said attempting step detects one or more unresolvable data conflicts with one or more separate modifications made to said selected object, wherein said separate modifications are stored by said parent in said independent view of said parent;
performing said merge of said modifications to said independent view of said parent if said attempting step does not detect any of said unresolvable data conflicts; and
committing said merged modifications to said independent view of said parent; and
performing said commit when said subtransaction is said top-level transaction in said transaction tree, comprising the steps of;
committing said modifications with a copy of said selected object in said remote persistent object store;
merging said modifications to a global transaction if said committing step does not detect an error condition; and
discarding said top-level transaction and any subtransactions related to said top-level transaction in said transaction tree.
-
-
22. The method according to claim 17, wherein said committing step further comprises the steps of:
-
performing a commit when said subtransaction is not a top-level transaction in a transaction tree, comprising the steps of;
attempting to merge said modifications to said parent of said subtransaction upon a request to commit said modifications;
cancelling said commit request if said attempting step detects one or more unresolvable data conflicts with one or more separate modifications made to said selected object, wherein said separate modifications are stored by said parent in said independent view of said parent;
performing said merge of said modifications to said independent view of said parent if said attempting step does not detect any of said unresolvable data conflicts; and
committing said merged modifications to said independent view of said parent; and
performing said commit when said subtransaction is said top-level transaction in said transaction tree, comprising the steps of;
committing said modifications with a copy of said selected object in said remote persistent object store; and
discarding said top-level transaction and any subtransactions related to said top-level transaction in said transaction tree.
-
-
23. The method according to claim 21, wherein said attempting step further comprises the step of invoking application-specific logic to determine when said separate modifications indicate that one of said unresolvable data conflicts is found and said merging step further comprises the step of invoking application-specific logic to resolve any resolvable data conflicts.
-
24. The method according to claim 21, wherein said attempting step further comprises the step of determining that no unresolvable data conflict will occur if one of an object version from a child transaction and a parent transaction which are to be merged has not been modified or where both of the object versions have been modified from the child transaction and the parent transaction, logic is applied that determines that the object versions can be successfully merged;
- and
wherein said step of performing said merging further comprises the step of invoking application-specific logic to resolve any resolvable data conflicts.
- and
Specification