US5535386A - Transaction and version management system - Google Patents

Transaction and version management system Download PDF

Info

Publication number
US5535386A
US5535386A US08/484,619 US48461995A US5535386A US 5535386 A US5535386 A US 5535386A US 48461995 A US48461995 A US 48461995A US 5535386 A US5535386 A US 5535386A
Authority
US
United States
Prior art keywords
branch
version
transaction
database
versions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US08/484,619
Inventor
Chung C. Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Priority to US08/484,619 priority Critical patent/US5535386A/en
Application granted granted Critical
Publication of US5535386A publication Critical patent/US5535386A/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Definitions

  • This invention relates generally to the field of computer databases, and more particularly to a transaction and version management system.
  • Computer databases are widely used by businesses to access data for performing business transactions, such as making a savings account deposit or a withdrawal, reserve or purchase an airline ticket, buy or sell a security, etc. Each of these business transactions rely on the integrity of the data in the databases; i.e., the balance in the savings account must reflect the correct amount after the deposit or withdrawal. While conventional database applications generally comprise "short transactions" running for a few milliseconds, new applications, such as computer-aided design may include "long” transactions, which have the possibility of running for days, or even for weeks.
  • the databases described in the business transactions above are generally accessed and modified by multiple concurrently-run computer programs.
  • Each of these concurrently-run programs (hereinafter, referred to as "transactions") comprise a plurality of operations on the database elements.
  • the operations of the concurrently-run transactions are interleaved.
  • the outcome of interleaved transactions should be the same as the outcome of running the transactions serially.
  • a system which promotes this property is referred to as "serializable.”
  • a similar protocol a dynamic two-phase locking scheme, locks each data item to be accessed by the transaction immediately prior to each accessing operation, and then releases the locks on all the data items immediately following the last operation of the transaction.
  • Both the static and dynamic two-phase locking scheme exhibit a first phase, during which locks are acquired on required data items, and a second phase, during which all the locks are released.
  • a form of scheduling is achieved, since only the transactions that have locked all of their required data items are executed to completion. Other transactions which require access to database elements locked by another program, must wait until the lock is released.
  • the locking scheme in effect puts concurrently-run programs in serial execution form at the cost of reducing throughput.
  • the short transactions may wait days or weeks before executing.
  • the two-phase locking schemes are referred to as “pessimistic,” since they assume that an inconsistency will result between two or more concurrent transactions.
  • “Optimistic” concurrency control allows a transaction to proceed as if there were no conflict, and performs a validation check at the time of commit of the transaction.
  • the system assigns a unique timestamp to a transaction when it first begins to run.
  • the transaction has a consistent view of the database during its execution; at commit time, the database systems checks, based on the timestamp, whether this consistent view of the database has changed between the start and finish of the transaction. If the consistent view still holds, the transaction is committed; if not, the transaction is aborted.
  • This protocol also has disadvantages, particularly with long transactions, since a transaction will run to its end before the determination is made whether it will be aborted or committed. If aborted, the entire transaction will need to be re-executed, which is an inefficient use of processing time, especially when a long transaction must be re-executed.
  • a database is provided which substantially eliminates or prevents the problems associated with prior databases.
  • each version of an element of the database is represented by a unique identifier, a timestamp, a branch name and a value.
  • a new version of an element is created in response to an operation which would modify the element. Thereafter, the value of the new version of the element is modified responsive to said operation.
  • Each element of the database may have multiple versions; the versions are partitioned into branches and versions of a branch are ordered linearly according to their timestamps. Branches are themselves timestamped and related to each other by a version graph.
  • An object graph in the database may be represented independent of branches and versions.
  • a database may be organized in multi-linear versions and a version graph, allowing an application to access implicitly an object graph of a given version in a given branch through object fault. Further, a long transaction may be modeled using a sequence of "regular" transactions accessing a common branch of versions. Cooperative transactions may be accommodated, allowing team member to access the data from other team members while providing locks specific to a cooperative transaction which preserve the consistency of the database.
  • FIG. 1 illustrates a block diagram of an exemplary object graph
  • FIG. 2 illustrates a block diagram of an exemplary version graph.
  • a pointer referencing another object contains only oid so that an object graph can be specified independent of versions.
  • An exemplary object graph is shown schematically in FIG. 1.
  • the object “car” 12 points to related objects “door” 14, "hood” 16, “trunk” 18 and “bumper” 20 . Further relations are shown as the object “door” points to objects “handle” 22 and "lock” 24.
  • a particular version of an object graph is uniquely identified by a timestamp, referred to as a "time context” in Zeitgeist. Given timestamp t, the version of an object graph consists of one version from each object that has the most recent timestamp with respect to t.
  • the object faulting mechanism is designed to fetch a version of an object graph into the main memory without any apparent action on the part of a user.
  • the user would not need to explicitly fetch the object "door” 14 once the object "car” 12 had been brought into memory; instead, the object "door” 14 could be brought into memory by merely referencing "door” 14.
  • the object faulting mechanism breaks down when branching versions are stored as linear versions in a database.
  • a database of linear versions consists of two objects, x and y.
  • x(t 1 ) denote the version of object x with timestamp t 1 .
  • a and B be the names of two branches of versions.
  • the following mapping of objects from versions in A and B to linear versions is based on the time that the objects are updated within each branch of versions.
  • the above example is typical for mapping different branch versions of an object into different timestamps of the same object.
  • This kind of mapping also precludes versions of two branches of an object having the same timestamps being created.
  • the object graph is again no longer version independent. It is only by coincidence that branch B's most recent version is the same as those of time context t ⁇ 4.
  • branch B's most recent version is the same as those of time context t ⁇ 4.
  • a version of an object graph in a given branch cannot be identified with a time context.
  • the current object faulting algorithm cannot, therefore, be used to fault in a version of an object graph in a given branch.
  • An application program must rely on the explicit fetch command to fetch one object at a time in referencing an object graph--a tedious operation for a user to do.
  • the present invention may be implemented using a general purpose computer.
  • a multi-linear approach is utilized.
  • the database can be viewed as a set of 4-tuples, ⁇ oid, b, t, value> and a version graph.
  • the new quantity b represents the name of a branch of versions.
  • the version graph represents the relationship among the branches of versions.
  • the other three quantities, oid, t, and value represent the same factors as in linear versions.
  • An object graph in this model is represented in a version independent way--a pointer to an object in the database contains only oid.
  • a new version of the object is stamped (b m ,t n ), where b m is the name of a branch of versions (i.e., a branch name) and t n a unique timestamp, and appended to the branch b m in the database.
  • b m is the name of a branch of versions (i.e., a branch name)
  • t n a unique timestamp
  • the version graph shows a parent branch 28 (with branch name "b 0 " and timestamp "t 0 ”) with two child branches 30 and 32.
  • the child branches have each created new versions of the "car" object from the parent branch.
  • An object in the parent branch b m is accessible in the child branch b m+1 using the concept of "copy-on-write” wherein the objects from the parent are copied only at the time when they can no loner be shared between parent and child branches
  • a "context", c is defined to be (B(c),S(c)) where B(c) is the branch name of c and S(c) the timestamp of c.
  • Context is a generalization of the time context of linear versions.
  • the example illustrates that the set of instances for each context is clearly identifiable; the object faulting algorithm can thus be used to fetch implicitly an object graph from database into main memory for each given context.
  • a storage manager supporting multi-linear versions has the following interface functions:
  • Fetch(c 1 ,c 2 ,oid) function fetches an object from the database.
  • the arguments c 1 and c 2 are contexts an oid is the identifier of the fetched object; the branch B(c 1 ) is an ancestor branch of B(c 2 ) in the version graph; and the timestamp S(c 1 ) ⁇ the timestamp S(c 2 ).
  • the following steps implement the idea of copy-on-write in fetching an object:
  • step 3 Search for an object with the given oid in branch b and which has a timestamp that is most recent with respect to t; if an object is found, return it. Otherwise execute step 3.
  • Step 3 is executed when the object that has an earlier timestamp than t cannot be found in branch b; the search of the same object then begin at the parent branch of b with a timestamp earlier than the timestamp of b--the creation time of b.
  • the adjustment of the timestamp of t is required because the object may have a version created in the parent branch of b after b has been created.
  • CreateObject(c) function creates a new object in the current context. A unique oid is returned.
  • CreateBranch(from) function creates a new branch from a given existing branch, from.
  • a timestamped unique branch name is entered in the version graph and returned to the caller.
  • An application can fetch an object either using explicitly the fetch function or implicitly the object faulting mechanism.
  • Object fault occurs when an application dereferences a pointer. Object faulting also invokes the fetch function; the arguments of fetch are a default context and the oid in the pointer being dereferenced. The invocation of the fetch function by the computer during object faulting is transparent to the user.
  • a version graph comprises branches as nodes and parent-child relationships as edges. Each branch is created with a unique timestamp.
  • a node in a version graph contains a branch name and its timestamp.
  • a direct edge from node (b 1 ,t 1 ) of branch b 1 and timestamp t 1 to node (b 2 ,t 2 ) of branch b 2 and timestamp t 2 means that branch b 2 is a child branch of b 1 .
  • the fetch function uses the version graph to implement copy-on-write in fetching an object.
  • a long transaction in a multi-linear version model can be thought as a sequence of "regular" transactions operating on a private branch of a database.
  • the intermediate results are saved in the database when a member transaction of the sequence commits.
  • To abort a long transaction in this model simply discards the associated branch of objects.
  • To commit a long transaction is equivalent to merging the branch with its parent branch; minor inconsistencies between versions encountered during merging can be adjusted manually.
  • a branch and its parent branch in a version graph can be associated with different data definitions of an object as found in schema evolution.
  • an object that exists in the parent branch is referenced for the first time in the child branch, a conversion from the old to the new data definition can then be triggered to take place.
  • the proposed scheme can support directly a lazy evaluation style of schema evolution.
  • a cooperative transaction model should satisfy:
  • the multi-threaded transaction model disclosed herein solves the cooperative transaction problem.
  • a thread models the work of a member of a cooperating team. Objects locked by a transaction are accessible to all the threads of the transaction; members of a team could access each other's intermediate results.
  • a team's work that is modeled by a multi-threaded transaction preserves database consistency as a "regular" transaction does.
  • a thread In a multi-threaded transaction that models the cooperative design work a thread models the work of a member of a cooperating team.
  • the following schemes solves the concurrency control problems associated in a multi-threaded transaction.
  • Objects locked by a transaction are accessible to all the threads of a transaction. Concurrency control among threads again can be resolved through locking. The execution of the threads of a transaction clearly are not serializable. Locking at thread level does not need to follow the two-phase locking protocol. As soon as the access of an object is over, a thread should release the lock. A lock released by a thread should be retained by the transaction until the transaction commits so that a strict two-phase locking protocol is observed at the transaction level.
  • ThreadRead is a shared lock and guarantees that no other threads can append a new version to the object. This command may be used by a team member who must have the latest version of an object.
  • ThreadWrite is an exclusive lock that allows the owner of the lock to append a new version to the object.
  • a “ThreadNotification” lock is used when a thread wishes to be notified whenever there is a newer version appended to the object by other threads or transactions.
  • An application writer should see no difference between thread level and transaction level locks. A thread should release a lock as soon as its use is over.
  • the system manages the mapping between the thread level locks and the transaction levels. The system also retains the transaction level locks for a transaction until it commits (or aborts) to enforce the two-phase locking protocol at the transaction level.
  • the commit action must be synchronized among the threads using two-phase commit protocol.
  • a thread waiting for a lock to be released by a different thread or transaction may deadlock with the other threads or transactions. Since a thread cannot be restarted the same way as a transaction, the resolution of deadlock involving a thread should be left as a user's or a cooperating team's responsibility. Deadlock among threads of a transaction distinguishes multi-thread transaction from a distributed transaction because there is generally no deadlock among the threads at different sites of a distributed transaction if the objects at different sites are disjoint and each thread access the data local to its thread. If deadlock is unwanted among threads of a transaction, an application may use any scheme itself to prevent deadlock from occurring.
  • a Begin -- Thread function with a transaction id as input argument returns a unique thread id if it is successfully registered with the transaction. Otherwise Begin -- Thread returns a Null value.
  • Most interface functions that are available in a transaction are also applicable in a thread of a transaction.
  • a database may be organized in multi-linear versions and a version graph so that an application can access implicitly an object graph of a given version in a given branch through object fault.
  • a long transaction may be modeled using a sequence of "regular" transactions accessing a common branch of versions.
  • the present invention supports fine grain version management at the storage management level.
  • the version graph is for the entire database-not one version graph per object.
  • the present invention supports lazy evaluation style schema evolution directly.

Abstract

Each element of a database may have multiple versions; the versions are partitioned into branches, and versions of a branch are ordered linearly according to their timestamps. Branches are timestamped and related to one another by a version graph. Each version of an element of a database is represented by a unique identifier, a timestamp, a branch name and a value. A new version of an element associated with a branch is created in response to an operation associated with the branch which would modify the element. An object graph in the database is represented independent of the branches and version; an application coded for elements in one version (and branch) can be reused for the same elements in a different version and (different branch) without any re-coding effort. Methods for long duration transactions, cooperative transactions and schema evolutions are provided.

Description

This is a continuation of application Ser. No. 08/081,483, filed Jun. 22, 1993 which is a continuation of Ser. No. 07/569,360, filed Aug. 17, 1990, abandoned.
RELATED APPLICATIONS
This application is related to U.S. patent application Ser. No. 07/531,493, filed May 30, 1990, entitled "A System and Method For Database Management Supporting Object-Oriented Programming" and now abandoned, by Bannon et al. (Attorney Docket No. TI-15150), which is incorporated by reference herein.
TECHNICAL FIELD OF THE INVENTION
This invention relates generally to the field of computer databases, and more particularly to a transaction and version management system.
BACKGROUND OF THE INVENTION
Computer databases are widely used by businesses to access data for performing business transactions, such as making a savings account deposit or a withdrawal, reserve or purchase an airline ticket, buy or sell a security, etc. Each of these business transactions rely on the integrity of the data in the databases; i.e., the balance in the savings account must reflect the correct amount after the deposit or withdrawal. While conventional database applications generally comprise "short transactions" running for a few milliseconds, new applications, such as computer-aided design may include "long" transactions, which have the possibility of running for days, or even for weeks.
The databases described in the business transactions above are generally accessed and modified by multiple concurrently-run computer programs. Each of these concurrently-run programs (hereinafter, referred to as "transactions") comprise a plurality of operations on the database elements. In order to increase efficiency, the operations of the concurrently-run transactions are interleaved. The outcome of interleaved transactions, of course, should be the same as the outcome of running the transactions serially. A system which promotes this property is referred to as "serializable."
Without some control mechanism, concurrent transactions may result in one transaction's operations affecting another transaction's operations by accessing (reading and/or writing) the same element of the database. Such interferences may result in erroneous data in the databases; i.e., they may affect the "consistency" of the database. Protocols presently exist to protect the consistency of the database while it is accessed by concurrently running transactions. One such protocol is a static two-phase locking scheme. The static two-phase locking scheme provides "locking" all the database elements to be accessed by a transaction, before any operation of the transaction is performed, thus preventing any other transactions from accessing and altering the database elements. The database elements are "unlocked" immediately following the end of the transaction. If a transaction "commits" after its last operation, all database elements retain their values as updated by the transaction. If a transaction is "aborted", all database elements return to their values before as they were before the transaction.
A similar protocol, a dynamic two-phase locking scheme, locks each data item to be accessed by the transaction immediately prior to each accessing operation, and then releases the locks on all the data items immediately following the last operation of the transaction.
Both the static and dynamic two-phase locking scheme exhibit a first phase, during which locks are acquired on required data items, and a second phase, during which all the locks are released. By locking the database elements, a form of scheduling is achieved, since only the transactions that have locked all of their required data items are executed to completion. Other transactions which require access to database elements locked by another program, must wait until the lock is released. In other words, the locking scheme in effect puts concurrently-run programs in serial execution form at the cost of reducing throughput. Thus, if a long transaction locks an element needed by one or more short transactions, the short transactions may wait days or weeks before executing.
The two-phase locking schemes are referred to as "pessimistic," since they assume that an inconsistency will result between two or more concurrent transactions. "Optimistic" concurrency control allows a transaction to proceed as if there were no conflict, and performs a validation check at the time of commit of the transaction. The system assigns a unique timestamp to a transaction when it first begins to run. The transaction has a consistent view of the database during its execution; at commit time, the database systems checks, based on the timestamp, whether this consistent view of the database has changed between the start and finish of the transaction. If the consistent view still holds, the transaction is committed; if not, the transaction is aborted.
This protocol also has disadvantages, particularly with long transactions, since a transaction will run to its end before the determination is made whether it will be aborted or committed. If aborted, the entire transaction will need to be re-executed, which is an inefficient use of processing time, especially when a long transaction must be re-executed.
Further, present day databases do not adequately provide for cooperative efforts between multiple users. In a cooperative transaction, the work done by the team should be an atomic (indivisible) transaction. Also, members of the team should be able to view and modify the other team member's intermediate results. Accordingly, a need has arisen for a consistency control scheme that increases throughput of both long and short transactions and supports cooperative efforts between multiple users.
SUMMARY OF THE INVENTION
In accordance with the present invention, a database is provided which substantially eliminates or prevents the problems associated with prior databases.
In the database of the present invention, each version of an element of the database is represented by a unique identifier, a timestamp, a branch name and a value. A new version of an element is created in response to an operation which would modify the element. Thereafter, the value of the new version of the element is modified responsive to said operation.
Each element of the database may have multiple versions; the versions are partitioned into branches and versions of a branch are ordered linearly according to their timestamps. Branches are themselves timestamped and related to each other by a version graph. An object graph in the database may be represented independent of branches and versions.
The database of the present invention provides significant advantages over the prior art. A database may be organized in multi-linear versions and a version graph, allowing an application to access implicitly an object graph of a given version in a given branch through object fault. Further, a long transaction may be modeled using a sequence of "regular" transactions accessing a common branch of versions. Cooperative transactions may be accommodated, allowing team member to access the data from other team members while providing locks specific to a cooperative transaction which preserve the consistency of the database.
BRIEF DESCRIPTION OF THE DRAWINGS
For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
FIG. 1 illustrates a block diagram of an exemplary object graph; and
FIG. 2 illustrates a block diagram of an exemplary version graph.
DETAILED DESCRIPTION OF THE INVENTION
The preferred embodiment of the present invention is best understood by referring to FIGURES of the drawings, like numerals being used for like and corresponding parts of the various drawings.
Linear versions are provided for in Zeitgeist, described in U.S. patent application Ser. No. 07/531,493, filed May 30, 1990, entitled "A System and Method For Database Management Supporting Object-Oriented Programming", by Bannon et al. (Attorney Docket No. TI-15150), which is incorporated by reference herein. The linear versions present a unique way for organizing objects in a database. Briefly, a Zeitgeist user can view his database as a set of triplets <oid, t, value> where oid is an object identifier, t is a timestamp, and value is the associated value of the object at the given timestamp. An update on an object always appends a new value with a more recent timestamp to the object. An application program retrieves an object either explicitly by specifying an oid and a t or implicitly through object fault when dereferencing a pointer.
In a linear version system, a pointer referencing another object contains only oid so that an object graph can be specified independent of versions. An exemplary object graph is shown schematically in FIG. 1. In this object graph 10, the object "car" 12 points to related objects "door" 14, "hood" 16, "trunk" 18 and "bumper" 20 . Further relations are shown as the object "door" points to objects "handle" 22 and "lock" 24. A particular version of an object graph is uniquely identified by a timestamp, referred to as a "time context" in Zeitgeist. Given timestamp t, the version of an object graph consists of one version from each object that has the most recent timestamp with respect to t.
Being an integral part of this object graph concept, the object faulting mechanism is designed to fetch a version of an object graph into the main memory without any apparent action on the part of a user. In the example of FIG. 1, the user would not need to explicitly fetch the object "door" 14 once the object "car" 12 had been brought into memory; instead, the object "door" 14 could be brought into memory by merely referencing "door" 14. The object faulting mechanism, however, breaks down when branching versions are stored as linear versions in a database.
There are two ways to map branching versions into linear versions. One way is to use a new oid for each object in a new branch of versions. In this approach, the representation of an object graph depends on the branch of versions the object graph is in. Code developed for one branch of versions cannot be reused directly in another branch of versions. This approach is the only method which can be used in non-linear versions. The other approach is to map versions of different branches of an object into different linear versions of the same object. The following example illustrates this approach.
As an example, assume that a database of linear versions consists of two objects, x and y. Let x(t1) denote the version of object x with timestamp t1. Let A and B be the names of two branches of versions. The following mapping of objects from versions in A and B to linear versions is based on the time that the objects are updated within each branch of versions. Let the versions of x and y at t=0 be x(0) and y(0). Table 1 illustrates the changing of the objects by the two branches from t=1 to t=4.
              TABLE 1                                                     
______________________________________                                    
t = 1         t = 2     t = 3     t = 4                                   
______________________________________                                    
A       x(0) -> x(1)    y(0) -> y(3)                                      
B             x(0) -> x(2)    y(0) -> y(4)                                
______________________________________                                    
The most recent versions in branch A and branch B are, respectively, {x(1) , y(3)} and {x(2), y(4)}. The versions that correspond to different time contexts are shown in Table 2.
              TABLE 2                                                     
______________________________________                                    
TIME CONTEXT         VERSIONS                                             
______________________________________                                    
t = 0                {x(0),y(0)}                                          
t = 1                {x(1),y(0)}                                          
t = 2                {x(2),y(0)}                                          
t = 3                {x(2),y(3)}                                          
t> = 4               {x(2),y(4)}                                          
______________________________________                                    
The above example is typical for mapping different branch versions of an object into different timestamps of the same object. This kind of mapping also precludes versions of two branches of an object having the same timestamps being created. The object graph is again no longer version independent. It is only by coincidence that branch B's most recent version is the same as those of time context t≧4. In general, a version of an object graph in a given branch cannot be identified with a time context. The current object faulting algorithm cannot, therefore, be used to fault in a version of an object graph in a given branch. An application program must rely on the explicit fetch command to fetch one object at a time in referencing an object graph--a tedious operation for a user to do.
The present invention may be implemented using a general purpose computer. In the present invention, a multi-linear approach is utilized. In a multi-linear version scheme, the database can be viewed as a set of 4-tuples, <oid, b, t, value> and a version graph. The new quantity b represents the name of a branch of versions. The version graph represents the relationship among the branches of versions. The other three quantities, oid, t, and value, represent the same factors as in linear versions. An object graph in this model is represented in a version independent way--a pointer to an object in the database contains only oid.
Whenever an application changes an object in a multi-linear version database, the object is never modified in place; a new version of the object is stamped (bm,tn), where bm is the name of a branch of versions (i.e., a branch name) and tn a unique timestamp, and appended to the branch bm in the database. When a new branch bm+1 is created from branch bm, the new branch is timestamped T(bm+1); the parent and child relationship between branch bm and bm+1 together with their timestamps are kept in a version graph shown schematically in FIG. 2. The version graph shows a parent branch 28 (with branch name "b0 " and timestamp "t0 ") with two child branches 30 and 32. The child branches have each created new versions of the "car" object from the parent branch. An object in the parent branch bm is accessible in the child branch bm+1 using the concept of "copy-on-write" wherein the objects from the parent are copied only at the time when they can no loner be shared between parent and child branches Also, a "context", c, is defined to be (B(c),S(c)) where B(c) is the branch name of c and S(c) the timestamp of c. Context is a generalization of the time context of linear versions.
The previous example is presented again using the multi-linear approach described above. Assume that a database of multi-linear versions contains two objects x and y. Let x(b,t1) denote the version of object x with branch name b and timestamp t1. Let A and B denote the names of two branches of versions. The following represents one scenario that two applications, one using the branch of versions A and the other B, may have updated the database at time t=1,2,3, and 4. Let A and B have a common parent branch 0 at time t=0 and the versions of x and y at time t=0 be x(0,0) and y(0,0).
              TABLE 3                                                     
______________________________________                                    
t = 1         t = 2    t = 3     t = 4                                    
______________________________________                                    
A       x(0,0)->x(A,1)  y(0,0)->y(A,3)                                    
B             x(0,0)->x(B,2)                                              
                            y(0,0)->y(B,4)                                
______________________________________                                    
The most recent versions in branches A, B and 0 at t>4 are, respectively, {x(A,1),y(A,3)}, {x(B,2),y(B,4)} and {x(0,0),y(0,0)}. The versions that correspond to different contexts are shown in Table 4.
              TABLE 4                                                     
______________________________________                                    
            c(A,t)         c(B,t)                                         
t = 0       {x(0,0),y(0,0) {x(0,0),y(0,0)}                                
t = 1       {x(A,1),y(0,0) {x(0,0),y(0,0)}                                
t = 2       {x(A,1),y(0,0) {x(B,2),y(0,0)}                                
t = 3       {x(A,1),y(A,3) {x(B,2),y(0,0)}                                
t> = 4      {x(A,1),y(A,3) {x(B,2),y(B,4)}                                
______________________________________                                    
The example illustrates that the set of instances for each context is clearly identifiable; the object faulting algorithm can thus be used to fetch implicitly an object graph from database into main memory for each given context.
A storage manager supporting multi-linear versions has the following interface functions:
Fetch(c1,c2,oid) function fetches an object from the database. The arguments c1 and c2 are contexts an oid is the identifier of the fetched object; the branch B(c1) is an ancestor branch of B(c2) in the version graph; and the timestamp S(c1)≦the timestamp S(c2). The following steps implement the idea of copy-on-write in fetching an object:
1. Let b=B(c2) and t=S(c2). Execute Step 2.
2. Search for an object with the given oid in branch b and which has a timestamp that is most recent with respect to t; if an object is found, return it. Otherwise execute step 3.
3. Let t=T(b) and b be the parent branch of b. If either t≦S(c1) or b is a parent branch of B(c1), then return "not found". Otherwise go to execute step 2 again.
Step 3 is executed when the object that has an earlier timestamp than t cannot be found in branch b; the search of the same object then begin at the parent branch of b with a timestamp earlier than the timestamp of b--the creation time of b. The adjustment of the timestamp of t is required because the object may have a version created in the parent branch of b after b has been created.
CreateObject(c) function creates a new object in the current context. A unique oid is returned.
CreateBranch(from) function creates a new branch from a given existing branch, from. A timestamped unique branch name is entered in the version graph and returned to the caller.
An application can fetch an object either using explicitly the fetch function or implicitly the object faulting mechanism. Object fault occurs when an application dereferences a pointer. Object faulting also invokes the fetch function; the arguments of fetch are a default context and the oid in the pointer being dereferenced. The invocation of the fetch function by the computer during object faulting is transparent to the user.
A version graph comprises branches as nodes and parent-child relationships as edges. Each branch is created with a unique timestamp. A node in a version graph contains a branch name and its timestamp. A direct edge from node (b1,t1) of branch b1 and timestamp t1 to node (b2,t2) of branch b2 and timestamp t2 means that branch b2 is a child branch of b1. The fetch function uses the version graph to implement copy-on-write in fetching an object.
Given an oid, the same objects in different branches are locked separately; locking an object of one branch does not preclude the same object (i.e., with the same oid) in other branches from being accessed. A long transaction and a short transaction accessing the same object of different branches do not, therefore, block each other.
A long transaction in a multi-linear version model can be thought as a sequence of "regular" transactions operating on a private branch of a database. The intermediate results are saved in the database when a member transaction of the sequence commits. To abort a long transaction in this model simply discards the associated branch of objects. To commit a long transaction is equivalent to merging the branch with its parent branch; minor inconsistencies between versions encountered during merging can be adjusted manually.
A branch and its parent branch in a version graph can be associated with different data definitions of an object as found in schema evolution. When an object that exists in the parent branch is referenced for the first time in the child branch, a conversion from the old to the new data definition can then be triggered to take place. In other words, the proposed scheme can support directly a lazy evaluation style of schema evolution.
In a cooperative design team, members can view each other's intermediate results. The work done by an individual member cannot be atomic with respect to other members'. But the collection of work done by all members should preserve database consistency. That is, a cooperating team's work should be serializable with the work done outside the team. In short, a cooperative transaction model should satisfy:
* The work done by the entire team is an atomic transaction.
* Members of a cooperative design team can view and modify each other's intermediate results.
The multi-threaded transaction model disclosed herein solves the cooperative transaction problem. A thread models the work of a member of a cooperating team. Objects locked by a transaction are accessible to all the threads of the transaction; members of a team could access each other's intermediate results. A team's work that is modeled by a multi-threaded transaction preserves database consistency as a "regular" transaction does.
In a multi-threaded transaction that models the cooperative design work a thread models the work of a member of a cooperating team. The following schemes solves the concurrency control problems associated in a multi-threaded transaction.
1. Shared access among threads--
Objects locked by a transaction are accessible to all the threads of a transaction. Concurrency control among threads again can be resolved through locking. The execution of the threads of a transaction clearly are not serializable. Locking at thread level does not need to follow the two-phase locking protocol. As soon as the access of an object is over, a thread should release the lock. A lock released by a thread should be retained by the transaction until the transaction commits so that a strict two-phase locking protocol is observed at the transaction level.
"ThreadRead" is a shared lock and guarantees that no other threads can append a new version to the object. This command may be used by a team member who must have the latest version of an object. "ThreadWrite" is an exclusive lock that allows the owner of the lock to append a new version to the object. A "ThreadNotification" lock is used when a thread wishes to be notified whenever there is a newer version appended to the object by other threads or transactions.
2. Transparency of thread level locks--
An application writer should see no difference between thread level and transaction level locks. A thread should release a lock as soon as its use is over. The system manages the mapping between the thread level locks and the transaction levels. The system also retains the transaction level locks for a transaction until it commits (or aborts) to enforce the two-phase locking protocol at the transaction level.
3. Two-phase commit--
The commit action must be synchronized among the threads using two-phase commit protocol.
4. Deadlock--
A thread waiting for a lock to be released by a different thread or transaction may deadlock with the other threads or transactions. Since a thread cannot be restarted the same way as a transaction, the resolution of deadlock involving a thread should be left as a user's or a cooperating team's responsibility. Deadlock among threads of a transaction distinguishes multi-thread transaction from a distributed transaction because there is generally no deadlock among the threads at different sites of a distributed transaction if the objects at different sites are disjoint and each thread access the data local to its thread. If deadlock is unwanted among threads of a transaction, an application may use any scheme itself to prevent deadlock from occurring.
5. User Interface--
A Begin-- Thread function with a transaction id as input argument returns a unique thread id if it is successfully registered with the transaction. Otherwise Begin-- Thread returns a Null value. Most interface functions that are available in a transaction are also applicable in a thread of a transaction.
Representing an object graph independent of its versions is an important design feature that enables code reuse when an application needs to work with different versions. The current implementation in Zeitgeist is adequate for linear versions, but not for branching versions. Both long duration transactions and fine grain version management need to deal with branching versions at storage level. Multi-linear versions, a model for supporting branching versions, preserve the representation independence of an object graph and are a natural extension of the current implementation of linear versions in Zeitgeist.
The present invention provides several technical advantages over the prior art. A database may be organized in multi-linear versions and a version graph so that an application can access implicitly an object graph of a given version in a given branch through object fault.
Further, a long transaction may be modeled using a sequence of "regular" transactions accessing a common branch of versions.
The present invention supports fine grain version management at the storage management level. The version graph is for the entire database-not one version graph per object. Also, the present invention supports lazy evaluation style schema evolution directly.
While the present invention has been described in connection with an object oriented database, it may be used in connection with other databases as well.
Although the present invention has been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims.

Claims (3)

What is claimed is:
1. A method of managing versions and configurations of a plurality of objects comprising the steps of:
providing a database which includes a plurality of data elements represented by four-tuples, said four-tuples comprising a unique identifier, a timestamp, a branch name, and a data value;
generating a version graph which represents relationships among said elements;
generating an object graph which represents a particular configuration of a portion of said elements;
accessing said portion of said elements in said database in accordance with a first context, a second context, and said unique identifier in response to operations requested by an application program on said object graph using a storage manager.
2. The method of claim 1 wherein said accessing step includes the step of accessing said portion of said elements in said database where said unique identifier identifies an element on a particular branch of said version graph between a first branch identified by said first context and a second branch identified by said second context.
3. The method of claim 1 wherein said accessing step includes the step of accessing said portion of said elements in said database where said unique identifier identifies an element generated at a particular time which is between a first time associated with said first context and a second time associated with said second context.
US08/484,619 1990-08-17 1995-06-07 Transaction and version management system Expired - Lifetime US5535386A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US08/484,619 US5535386A (en) 1990-08-17 1995-06-07 Transaction and version management system

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US56936090A 1990-08-17 1990-08-17
US08/081,483 US5893117A (en) 1990-08-17 1993-06-22 Time-stamped database transaction and version management system
US08/484,619 US5535386A (en) 1990-08-17 1995-06-07 Transaction and version management system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US08/081,483 Continuation US5893117A (en) 1990-08-17 1993-06-22 Time-stamped database transaction and version management system

Publications (1)

Publication Number Publication Date
US5535386A true US5535386A (en) 1996-07-09

Family

ID=24275124

Family Applications (2)

Application Number Title Priority Date Filing Date
US08/081,483 Expired - Lifetime US5893117A (en) 1990-08-17 1993-06-22 Time-stamped database transaction and version management system
US08/484,619 Expired - Lifetime US5535386A (en) 1990-08-17 1995-06-07 Transaction and version management system

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US08/081,483 Expired - Lifetime US5893117A (en) 1990-08-17 1993-06-22 Time-stamped database transaction and version management system

Country Status (1)

Country Link
US (2) US5893117A (en)

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680613A (en) * 1992-01-17 1997-10-21 Ryo Atsumi Data processing system using versioned documents having temporary links
US5684985A (en) * 1994-12-15 1997-11-04 Ufil Unified Data Technologies Ltd. Method and apparatus utilizing bond identifiers executed upon accessing of an endo-dynamic information node (EDIN)
US5745755A (en) * 1994-01-05 1998-04-28 Covey; Peter J. Method for creating and maintaining a database for a dynamic enterprise
US5758358A (en) * 1996-01-29 1998-05-26 Microsoft Corporation Method and system for reconciling sections of documents
US5758347A (en) * 1993-05-12 1998-05-26 Apple Computer, Inc. Layered storage structure for computer data storage manager
US5819295A (en) * 1995-10-30 1998-10-06 Matsushita Electric Industrial Co., Ltd. Document storing and managing system
US5835942A (en) * 1995-01-23 1998-11-10 Tandem Computers Incorporated Distributed data cache for cached multiprocessor system with cache control for file-by-file cache states
US5838977A (en) * 1991-10-31 1998-11-17 Texas Instruments Incorporated Translating an object graph at run time
US5850535A (en) * 1995-10-12 1998-12-15 Computervision Corporation Roll-back during regeneration on a computer-aided design system
US5850348A (en) * 1996-05-01 1998-12-15 Viewlogic Systems, Inc. Automated circuit design case management
US5873097A (en) * 1993-05-12 1999-02-16 Apple Computer, Inc. Update mechanism for computer storage container manager
US5890166A (en) * 1992-07-16 1999-03-30 International Business Machines Corporation Versioned-database management system in which tasks are associated with promote groups which comprise a set of parts whose changes are to be promoted
US5897636A (en) * 1996-07-11 1999-04-27 Tandem Corporation Incorporated Distributed object computer system with hierarchical name space versioning
US5924096A (en) * 1997-10-15 1999-07-13 Novell, Inc. Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand
US5983241A (en) * 1995-07-19 1999-11-09 Fuji Xerox Co., Ltd. File management system and file management method
US6085197A (en) * 1996-07-17 2000-07-04 Next Software, Inc. Object graph editing context and methods of use
US6119130A (en) * 1996-03-28 2000-09-12 Oracle Corporation Method and apparatus for providing schema evolution without recompilation
US6173327B1 (en) 1996-07-11 2001-01-09 Jeroen De Borst Object-oriented method and apparatus for information delivery
US6185553B1 (en) * 1998-04-15 2001-02-06 International Business Machines Corporation System and method for implementing cooperative text searching
US6209090B1 (en) 1997-05-29 2001-03-27 Sol Aisenberg Method and apparatus for providing secure time stamps for documents and computer files
EP1094411A1 (en) * 1999-10-20 2001-04-25 Sun Microsystems, Inc. Handling of different versions of a document
US6263485B1 (en) 1996-07-11 2001-07-17 Andrew Schofield Method and apparatus for describing an interface definition language-defined interface, operation, and data type
GB2369208A (en) * 2000-11-21 2002-05-22 Gawne Cain Res Ltd Database management systems using root data items
US6601024B1 (en) 1998-11-12 2003-07-29 Synopsys, Inc. Code translation between hardware design languages
US6615204B1 (en) * 1996-05-31 2003-09-02 Silicon Graphics, Inc. Method and system for hybrid mapping of objects into a relational data base to provide high-speed performance and update flexibility
EP1146442A3 (en) * 2000-04-13 2003-09-10 Fujitsu Services Limited Method and apparatus for storing and accessing electronic content
US20040133583A1 (en) * 2002-11-20 2004-07-08 Tingey Kenneth B. system architecture and method for entering and accessing entity data in events accounting
US6871203B1 (en) * 1999-10-29 2005-03-22 International Business Machines Corporation Data processing system
US20050209831A1 (en) * 2000-11-15 2005-09-22 Irwin Jungreis Graphical object generation and regeneration
US20070043783A1 (en) * 2005-08-19 2007-02-22 Oracle International Corporation Handling uniqueness constraints in a database system with versioned data
US20120110595A1 (en) * 2010-10-28 2012-05-03 Michael Reitman Methods and systems for managing concurrent design of computer-aided design objects
US8818769B2 (en) 2010-10-28 2014-08-26 Parametric Technology Corporation Methods and systems for managing synchronization of a plurality of information items of a computer-aided design data model
US8892404B2 (en) 2010-10-28 2014-11-18 Parametric Technology Corporation Methods and systems for consistent concurrent operation of a plurality of computer-aided design applications
US8890867B2 (en) 2010-10-28 2014-11-18 Parametric Technology Corporation Methods and systems for dynamically loading portions of a computer-aided design model on demand
JP2015084243A (en) * 2006-08-22 2015-04-30 アマゾン テクノロジーズ インコーポレイテッド System and method for providing high availability data
US9652485B1 (en) * 2010-06-17 2017-05-16 Evolphin Software, Inc. Method and apparatus for namespace versioning
US10311051B1 (en) * 2014-01-29 2019-06-04 Bentley Systems, Incorporated Storing modeling alternatives with unitized data
US10970311B2 (en) * 2015-12-07 2021-04-06 International Business Machines Corporation Scalable snapshot isolation on non-transactional NoSQL

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU6151598A (en) * 1997-02-11 1998-08-26 Connected Corporation File comparison for data backup and file synchronization
SE521041C2 (en) * 1997-05-28 2003-09-23 Ericsson Telefon Ab L M Method for optimizing transaction protocols within a distributed database
JP3367385B2 (en) * 1997-06-27 2003-01-14 日本電気株式会社 Distributed transaction matching method and machine-readable recording medium recording program
US6256712B1 (en) * 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6889358B1 (en) * 1998-01-08 2005-05-03 Lucent Technologies Inc. Concurrency control in materialized views of a database
SE522023C2 (en) * 1998-01-22 2004-01-07 Ericsson Telefon Ab L M Method for consistent reading of objects in a database
US6219770B1 (en) * 1998-03-23 2001-04-17 Compaq Computer Corporation Method and apparatus for managing copy on write operations in a virtual memory
US6192377B1 (en) * 1998-05-13 2001-02-20 Oracle Corporation Method and apparatus for determing whether a transaction can use a version of a data item
US6564218B1 (en) 1998-12-10 2003-05-13 Premitech Aps Method of checking the validity of a set of digital information, and a method and an apparatus for retrieving digital information from an information source
US6411969B1 (en) * 1999-08-13 2002-06-25 Unisys Corporation Enhanced system and method for management of system database utilities
US6374267B1 (en) * 1999-08-13 2002-04-16 Unisys Corporation Database backup system and method utilizing numerically identified files for incremental dumping
KR100407033B1 (en) * 1999-12-22 2003-11-28 김정태 Method for constructing database by information modeling method and for searching information using constructed database
US6557012B1 (en) * 2000-04-22 2003-04-29 Oracle Corp System and method of refreshing and posting data between versions of a database table
US6658394B1 (en) * 2000-08-08 2003-12-02 Squaretrade, Inc. Electronic seals
US7424457B2 (en) * 2000-08-08 2008-09-09 Squaretrade, Inc. Managing an electronic seal of certification
US7797241B2 (en) * 2000-09-13 2010-09-14 Ip.Com, Inc. Global information network product publication system
EP1395919B1 (en) * 2001-05-30 2006-02-08 Sap Ag Method and computer program for migrating content from source database to target database
EP2503476A1 (en) * 2001-11-01 2012-09-26 Verisign, Inc. Method and system for updating a remote database
EP1488556A2 (en) * 2002-03-18 2004-12-22 Koninklijke Philips Electronics N.V. Identification of changes in broadcast database
US20050261914A1 (en) * 2002-07-19 2005-11-24 Microsoft Corporation Method and system for managing long running transactions
US7233947B2 (en) * 2003-05-22 2007-06-19 Microsoft Corporation Timestamping in databases
CA2434644A1 (en) * 2003-06-30 2004-12-30 Archidata Inc. System for the certification of plans and specifications produced by construction professionals and clients
US7395278B2 (en) * 2003-06-30 2008-07-01 Microsoft Corporation Transaction consistent copy-on-write database
US7478211B2 (en) * 2004-01-09 2009-01-13 International Business Machines Corporation Maintaining consistency for remote copy using virtualization
US20050154786A1 (en) * 2004-01-09 2005-07-14 International Business Machines Corporation Ordering updates in remote copying of data
EP1577830A2 (en) * 2004-01-23 2005-09-21 Neal E. Solomon Adaptive dynamic computer system
US7222133B1 (en) 2004-02-05 2007-05-22 Unisys Corporation Method for reducing database recovery time
US20050182776A1 (en) * 2004-02-18 2005-08-18 Clark Yennie Time-addressed database management system
US7953749B2 (en) * 2004-05-11 2011-05-31 Oracel International Corporation Providing the timing of the last committed change to a row in a database table
US7774319B2 (en) * 2004-08-11 2010-08-10 Sap Ag System and method for an optimistic database access
US7424499B2 (en) * 2005-01-21 2008-09-09 Microsoft Corporation Lazy timestamping in transaction time database
US7483882B1 (en) * 2005-04-11 2009-01-27 Apple Inc. Dynamic management of multiple persistent data stores
US8386440B2 (en) * 2005-05-10 2013-02-26 Microsoft Corporation Database corruption recovery systems and methods
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US20070050429A1 (en) * 2005-08-26 2007-03-01 Centric Software, Inc. Time-range locking for temporal database and branched-and-temporal databases
US7747589B2 (en) * 2007-03-12 2010-06-29 Microsoft Corporation Transaction time indexing with version compression
US8266122B1 (en) * 2007-12-19 2012-09-11 Amazon Technologies, Inc. System and method for versioning data in a distributed data store
US8347402B2 (en) * 2010-01-15 2013-01-01 Apollo Enterprise Solutions, Inc. Software development and distribution workflow employing meta-object time stamping
US8856089B1 (en) * 2010-08-27 2014-10-07 Amazon Technologies, Inc. Sub-containment concurrency for hierarchical data containers
US8688666B1 (en) 2010-08-27 2014-04-01 Amazon Technologies, Inc. Multi-blob consistency for atomic data transactions
US8510304B1 (en) 2010-08-27 2013-08-13 Amazon Technologies, Inc. Transactionally consistent indexing for data blobs
US8510344B1 (en) 2010-08-27 2013-08-13 Amazon Technologies, Inc. Optimistically consistent arbitrary data blob transactions
US9032163B2 (en) 2010-09-22 2015-05-12 Novell, Inc. Data access management
US8621161B1 (en) 2010-09-23 2013-12-31 Amazon Technologies, Inc. Moving data between data stores
CN102841897B (en) * 2011-06-23 2016-03-02 阿里巴巴集团控股有限公司 A kind of method, Apparatus and system realizing incremental data and extract
US9053003B2 (en) * 2012-06-21 2015-06-09 Microsoft Technology Licensing, Llc Memory compaction mechanism for main memory databases
US20140149882A1 (en) * 2012-11-23 2014-05-29 Brigham Young University System, method, and apparatus for collaborative cax editing
US20150081694A1 (en) * 2013-09-18 2015-03-19 International Business Machines Corporation Multi-temporal widely distributed hardware and software transaction state and data state memory system
US9697240B2 (en) 2013-10-11 2017-07-04 International Business Machines Corporation Contextual state of changed data structures
CN106933548B (en) * 2015-12-29 2021-01-12 阿里巴巴集团控股有限公司 Global information obtaining, processing and updating method, device and system
CN106933550B (en) 2015-12-29 2021-01-08 阿里巴巴集团控股有限公司 Global information obtaining, processing and updating method, device and system
CN106933547B (en) 2015-12-29 2020-12-01 阿里巴巴集团控股有限公司 Global information acquisition and processing method, device and updating system
CN107295033B (en) 2016-03-31 2020-07-28 阿里巴巴集团控股有限公司 Routing method and device
US10346384B2 (en) * 2016-11-22 2019-07-09 Sap Se Efficient database multi-version concurrency control
US11500573B2 (en) * 2019-12-12 2022-11-15 ExxonMobil Technology and Engineering Company Multiple interface data exchange application for use in process control
CN113127660A (en) * 2021-05-24 2021-07-16 成都四方伟业软件股份有限公司 Timing graph database storage method and device

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4646229A (en) * 1982-11-15 1987-02-24 At&T Bell Laboratories Time-ordered data base
US4677550A (en) * 1983-09-30 1987-06-30 Amalgamated Software Of North America, Inc. Method of compacting and searching a data index
US4558413A (en) * 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US4814971A (en) * 1985-09-11 1989-03-21 Texas Instruments Incorporated Virtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint state
US4714992A (en) * 1985-11-26 1987-12-22 International Business Machines Corporation Communication for version management in a distributed information service
US4714996A (en) * 1985-11-26 1987-12-22 International Business Machines Corporation Impact calculation for version management in a distributed information service
US5008853A (en) * 1987-12-02 1991-04-16 Xerox Corporation Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment
US5193182A (en) * 1990-04-27 1993-03-09 Bachman Information Systems, Inc. Computer system for defining logical operations on design data including retrieve entity-set, send, receive, signal, when, reference to entity-set, reference to entity method, connect and disconnect

Non-Patent Citations (22)

* Cited by examiner, † Cited by third party
Title
Agrawal et al., "Object Versioning in Ode", Proceedings. Seventh International Conference on Data Engineering, 8-12 Apr., Kobe, Japan, pp. 446-455.
Agrawal et al., Object Versioning in Ode , Proceedings. Seventh International Conference on Data Engineering, 8 12 Apr., Kobe, Japan, pp. 446 455. *
Beech et al., "Generalized Version Control In an Object-Oriented Database", Proceedings of the Fourth International Conference on Data Engineering, 1-5 Feb. 1988, Los Angeles, Ca., pp. 14-22.
Beech et al., Generalized Version Control In an Object Oriented Database , Proceedings of the Fourth International Conference on Data Engineering, 1 5 Feb. 1988, Los Angeles, Ca., pp. 14 22. *
Chou et al., "Versions and Change Notification in an Object-Oriented Database System", 25th ACM/IEEE Design Automation Conference, 12-15 Jun., Anaheim, California, pp. 275-281.
Chou et al., Versions and Change Notification in an Object Oriented Database System , 25th ACM/IEEE Design Automation Conference, 12 15 Jun., Anaheim, California, pp. 275 281. *
Hardwick et al., "The ROSE Data Manager: Using Object Technology to Support Interactive Engineering Applications", IEEE Transactions On Knowledge and Data Engineering, vol. 1, No. 2, Jun., 1989, pp. 285-289.
Hardwick et al., "Using a Relational Database as an Index to a Distributed Object Database in Engineering Design Systems", Second International Conference on Data and Knowledge for Manufacturing and Engineering, 16-18 Oct. 1989, pp. 4-11.
Hardwick et al., The ROSE Data Manager: Using Object Technology to Support Interactive Engineering Applications , IEEE Transactions On Knowledge and Data Engineering, vol. 1, No. 2, Jun., 1989, pp. 285 289. *
Hardwick et al., Using a Relational Database as an Index to a Distributed Object Database in Engineering Design Systems , Second International Conference on Data and Knowledge for Manufacturing and Engineering, 16 18 Oct. 1989, pp. 4 11. *
Joseph et al., "Object-Oriented Databases: Design and Implementation", Proceedings of the IEEE, vol. 79, No. 1, Jan., 1991, pp. 42-64.
Joseph et al., Object Oriented Databases: Design and Implementation , Proceedings of the IEEE, vol. 79, No. 1, Jan., 1991, pp. 42 64. *
Kafer et al., "Mapping a Version Model to a Complex-Object Data Model", Eighth International Conference on Data Engineering, 2-3 Feb., 1992, Tempe Arizona, pp. 348-357.
Kafer et al., Mapping a Version Model to a Complex Object Data Model , Eighth International Conference on Data Engineering, 2 3 Feb., 1992, Tempe Arizona, pp. 348 357. *
Kitagawa et al., "Design Data Modeling With Versioned Conceptual Configuration", Proceedings of the 13th Annual International Computer Software and Applications Conference, 20-22 Sep. 1989, Orlando, Fla, pp. 225-233.
Kitagawa et al., Design Data Modeling With Versioned Conceptual Configuration , Proceedings of the 13th Annual International Computer Software and Applications Conference, 20 22 Sep. 1989, Orlando, Fla, pp. 225 233. *
Narayanaswamy et al., "An Incremental Mechanism For Schema Evolution in Engineering Domains", Proceedings Fourth International Conference on Data Engineering, 1-5 Feb. 1988, Los Angeles, Ca., pp. 294-301.
Narayanaswamy et al., An Incremental Mechanism For Schema Evolution in Engineering Domains , Proceedings Fourth International Conference on Data Engineering, 1 5 Feb. 1988, Los Angeles, Ca., pp. 294 301. *
Rao et al., "Dynamo: A Time-Based Object-Oriented Model to Support Distributed Collaborative Development", 8-10 May 1990, Tel-Aviv, Israel, pp. 61-69.
Rao et al., Dynamo: A Time Based Object Oriented Model to Support Distributed Collaborative Development , 8 10 May 1990, Tel Aviv, Israel, pp. 61 69. *
Spooner et al., "The Evolution of ROSE: An Engineering Object-Oriented Database System", Proceedings of Rensselaer's Second International Conference on Computer Integrated Manufacturing, 21-23 May 1990, Troy, New York, pp. 16-23.
Spooner et al., The Evolution of ROSE: An Engineering Object Oriented Database System , Proceedings of Rensselaer s Second International Conference on Computer Integrated Manufacturing, 21 23 May 1990, Troy, New York, pp. 16 23. *

Cited By (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838977A (en) * 1991-10-31 1998-11-17 Texas Instruments Incorporated Translating an object graph at run time
US5680613A (en) * 1992-01-17 1997-10-21 Ryo Atsumi Data processing system using versioned documents having temporary links
US5890166A (en) * 1992-07-16 1999-03-30 International Business Machines Corporation Versioned-database management system in which tasks are associated with promote groups which comprise a set of parts whose changes are to be promoted
US5857207A (en) * 1993-05-12 1999-01-05 Apple Computer, Inc. Storage manager for computer system
US5758347A (en) * 1993-05-12 1998-05-26 Apple Computer, Inc. Layered storage structure for computer data storage manager
US5873097A (en) * 1993-05-12 1999-02-16 Apple Computer, Inc. Update mechanism for computer storage container manager
US5870764A (en) * 1993-05-12 1999-02-09 Apple Computer, Inc. Method of managing a data structure for concurrent serial and parallel revision of a work
US5745755A (en) * 1994-01-05 1998-04-28 Covey; Peter J. Method for creating and maintaining a database for a dynamic enterprise
US6092077A (en) * 1994-12-15 2000-07-18 Ufil Unified Data Technologies, Ltd. Binary-oriented set sequencing
US6721757B2 (en) 1994-12-15 2004-04-13 Ufil Unified Data Technologies, Ltd. Method and apparatus for binary-oriented set sequencing
US6636865B2 (en) 1994-12-15 2003-10-21 Ufil Unified Data Technologies, Ltd. Method and apparatus for binary-oriented set sequencing
US6691129B2 (en) 1994-12-15 2004-02-10 Ufil Unified Data Technologies, Ltd. Method and apparatus for binary-oriented set sequencing
US20040139055A1 (en) * 1994-12-15 2004-07-15 Ufil Unified Data Technologies, Ltd. Method and apparatus for binary-oriented set sequencing
US6470351B1 (en) 1994-12-15 2002-10-22 Ufil Unified Data Technologies, Ltd. Binary-oriented set sequencing
US5684985A (en) * 1994-12-15 1997-11-04 Ufil Unified Data Technologies Ltd. Method and apparatus utilizing bond identifiers executed upon accessing of an endo-dynamic information node (EDIN)
US7076501B2 (en) 1994-12-15 2006-07-11 Ufil Unified Data Technologies, Ltd. Method and apparatus for binary-oriented set sequencing
US20060064433A1 (en) * 1994-12-15 2006-03-23 Ufil Unified Data Technolgies, Ltd. Method and apparatus for binary-oriented set sequencing
US5835942A (en) * 1995-01-23 1998-11-10 Tandem Computers Incorporated Distributed data cache for cached multiprocessor system with cache control for file-by-file cache states
US5983241A (en) * 1995-07-19 1999-11-09 Fuji Xerox Co., Ltd. File management system and file management method
US5850535A (en) * 1995-10-12 1998-12-15 Computervision Corporation Roll-back during regeneration on a computer-aided design system
US5819295A (en) * 1995-10-30 1998-10-06 Matsushita Electric Industrial Co., Ltd. Document storing and managing system
US5758358A (en) * 1996-01-29 1998-05-26 Microsoft Corporation Method and system for reconciling sections of documents
US6119130A (en) * 1996-03-28 2000-09-12 Oracle Corporation Method and apparatus for providing schema evolution without recompilation
US6216137B1 (en) 1996-03-28 2001-04-10 Oracle Corporation Method and apparatus for providing schema evolution without recompilation
US5850348A (en) * 1996-05-01 1998-12-15 Viewlogic Systems, Inc. Automated circuit design case management
US6615204B1 (en) * 1996-05-31 2003-09-02 Silicon Graphics, Inc. Method and system for hybrid mapping of objects into a relational data base to provide high-speed performance and update flexibility
US5897636A (en) * 1996-07-11 1999-04-27 Tandem Corporation Incorporated Distributed object computer system with hierarchical name space versioning
US6263485B1 (en) 1996-07-11 2001-07-17 Andrew Schofield Method and apparatus for describing an interface definition language-defined interface, operation, and data type
US6173327B1 (en) 1996-07-11 2001-01-09 Jeroen De Borst Object-oriented method and apparatus for information delivery
US6085197A (en) * 1996-07-17 2000-07-04 Next Software, Inc. Object graph editing context and methods of use
US6209090B1 (en) 1997-05-29 2001-03-27 Sol Aisenberg Method and apparatus for providing secure time stamps for documents and computer files
US5924096A (en) * 1997-10-15 1999-07-13 Novell, Inc. Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand
US6185553B1 (en) * 1998-04-15 2001-02-06 International Business Machines Corporation System and method for implementing cooperative text searching
US6601024B1 (en) 1998-11-12 2003-07-29 Synopsys, Inc. Code translation between hardware design languages
US7149760B1 (en) 1999-10-20 2006-12-12 Sun Microsystems, Inc. Method for handling of different versions of a document in a computer system
EP1094411A1 (en) * 1999-10-20 2001-04-25 Sun Microsystems, Inc. Handling of different versions of a document
US6871203B1 (en) * 1999-10-29 2005-03-22 International Business Machines Corporation Data processing system
EP1146442A3 (en) * 2000-04-13 2003-09-10 Fujitsu Services Limited Method and apparatus for storing and accessing electronic content
US6684227B2 (en) 2000-04-13 2004-01-27 Fujitsu Services Limited Electronic content store
US20050209831A1 (en) * 2000-11-15 2005-09-22 Irwin Jungreis Graphical object generation and regeneration
US20110018898A1 (en) * 2000-11-15 2011-01-27 Autodesk, Inc. Graphical Object Generation and Regeneration
US8040358B2 (en) 2000-11-15 2011-10-18 Autodesk, Inc. Graphical object generation and regeneration
US7768526B2 (en) 2000-11-15 2010-08-03 Autodesk, Inc. Graphical object generation and regeneration
GB2369208B (en) * 2000-11-21 2004-10-20 Gawne Cain Res Ltd Database management systems
GB2369208A (en) * 2000-11-21 2002-05-22 Gawne Cain Res Ltd Database management systems using root data items
US20040133583A1 (en) * 2002-11-20 2004-07-08 Tingey Kenneth B. system architecture and method for entering and accessing entity data in events accounting
US20070043783A1 (en) * 2005-08-19 2007-02-22 Oracle International Corporation Handling uniqueness constraints in a database system with versioned data
US7424495B2 (en) * 2005-08-19 2008-09-09 Oracle International Corporation Handling uniqueness constraints in a database system with versioned data
JP2015084243A (en) * 2006-08-22 2015-04-30 アマゾン テクノロジーズ インコーポレイテッド System and method for providing high availability data
US9652485B1 (en) * 2010-06-17 2017-05-16 Evolphin Software, Inc. Method and apparatus for namespace versioning
US20120110595A1 (en) * 2010-10-28 2012-05-03 Michael Reitman Methods and systems for managing concurrent design of computer-aided design objects
US8818769B2 (en) 2010-10-28 2014-08-26 Parametric Technology Corporation Methods and systems for managing synchronization of a plurality of information items of a computer-aided design data model
US8892404B2 (en) 2010-10-28 2014-11-18 Parametric Technology Corporation Methods and systems for consistent concurrent operation of a plurality of computer-aided design applications
US8890867B2 (en) 2010-10-28 2014-11-18 Parametric Technology Corporation Methods and systems for dynamically loading portions of a computer-aided design model on demand
US10311051B1 (en) * 2014-01-29 2019-06-04 Bentley Systems, Incorporated Storing modeling alternatives with unitized data
US10970311B2 (en) * 2015-12-07 2021-04-06 International Business Machines Corporation Scalable snapshot isolation on non-transactional NoSQL

Also Published As

Publication number Publication date
US5893117A (en) 1999-04-06

Similar Documents

Publication Publication Date Title
US5535386A (en) Transaction and version management system
Barghouti et al. Concurrency control in advanced database applications
Beeri et al. A model for concurrency in nested transactions systems
Salem et al. Altruistic locking
US5878206A (en) Commit scope control in hierarchical information processes
Biliris et al. ASSET: A system for supporting extended transactions
Traiger et al. Transactions and consistency in distributed database systems
EP1040433B1 (en) A fine-grained consistency mechanism for optimistic concurrency control using lock groups
Salem et al. Altruistic locking: A strategy for coping with long lived transactions
US20110107338A1 (en) Selecting isolation level for an operation based on manipulated objects
Alonso et al. Unifying concurrency control and recovery of transactions
Forst et al. General purpose work flow languages
US5752026A (en) Early commit locking computer database protocol
Bernstein et al. Concurrency control for step-decomposed transactions
Walpole et al. A unifying model for consistent distributed software development environments
Kappel et al. A transaction model for handling composite events
Chaudhary et al. Achieving starvation-freedom in multi-version transactional memory systems
Low A shared, persistent object store
Nakajima Commutativity Based Concurrency Control and Recovery for Multiversion Objects.
Gehani et al. Accessing extra-database information: Concurrency control and correctness
Bernstein et al. Transaction decomposition using transaction semantics
Crain et al. Read invisibility, virtual world consistency and permissiveness are compatible
Puustjärvi et al. Workman-a transactional workflow prototype
Mullen et al. Reservation commitment and its use in multidatabase systems
Nodine et al. Automating compensation in a multidatabase

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12