Multi-threading in the Repository
Go Up to Working with ERStudio Repository
As of ER/Studio Data Architect version 9.0, the Repository takes advantages of new multi-threading functionality that improves Repository performance over the previous sequential method used to handle transactions between the Repository server and the ER/Studio Data Architect client. Mutli-threading also improves Repository performance with ER/Studio Business Architect in that you can log in or do some security operations concurrently like you can with ER/Studio Data Architect.
Multi-threading allows the server to process multiple transaction concurrently. As long as a given transaction does not conflict with any currently processing transaction, the server opens a new thread for the new transaction and processes it immediately. For example, transactions necessary for User A to log in can be processed at the same time as User B is adding a diagram, and User A will be logged in just as quickly as if User B was not in the middle of adding a diagram.
However, not all transactions can be run concurrently. This means that in some cases, an operation must wait for a transaction initiated by a different user to complete. In addition, some transactions listed on the following table as being able to run concurrently might be blocked by the Repository database's own concurrency mechanisms if the same table is being accessed at the same time by different transactions.
The following describes some important rules that affect multi-threading on the Repository:
- If a Check In transaction is being processed on a given Diagram or Data Dictionary, all other operations on that Diagram or Data Dictionary must wait until the Check In completes.
- If an Add or Check In transaction is being processed, all other Add or Check In transactions must wait until the initial transaction completes. This same rule applies to Set Named Release, Branch and Branch/Merge Check In operations.
- Most other common tasks, including Log Ins, Log Outs, Gets, Check Outs and Security Center operations are processed concurrently by the server, but may be affected by database level-locking mechanisms.
The following describes concurrency restrictions:
- Multiple, concurrent 'Get access on the same object (such as user, role, diagram, and dictionary) are allowed.
- Only one Write access on a particular object allowed at one time (for example, a delete table and a modify table will not run concurrently on the same table).
- Writes and Gets on a particular object will also be serialized (for example, a Get Diagram and a Check In Diagram will not run concurrently on the same diagram).
The following table describes which transactions can run simultaneously.
- ER/Studio Data Architect Operation is the operation that invokes the Server Transaction.
- Server Transaction is the request that is seen by the Repository Server.
- The Concurrency columns show which Server transactions can run simultaneously with the process in the respective Server Transaction column.
ER/Studio Data ArchitectOperation |
Repository ServerTransaction |
Concurrency | ||||
---|---|---|---|---|---|---|
Get Latest Diagram(Dictionary) |
Add Diagram(Dictionary) |
Check In Diagram(Dictionary) |
Security,Project Operations |
Undo/Redo/Check OutDiagram (Dictionary) | ||
Add Diagram |
Add Diagram |
√ |
√ |
√ |
||
Add Dictionary |
√ |
√ |
√ | |||
Bind Dictionary to Diagram |
√ |
√ |
√ |
√ |
√ | |
Modify Project |
√ |
√ |
√ |
√ |
√ | |
Add Enterprise Data Dictionary |
Add Dictionary |
√ |
√ |
√ | ||
Bind Dictionary to Diagram |
√ |
√ |
√ |
√ |
√ | |
Bind Enterprise Data Dictionary |
Bind Dictionary to Diagram |
√ |
√ |
√ |
√ |
√ |
Branch |
Branch |
√ |
√ |
√ | ||
Branch/Merge Dialog |
Get Branch Tree Info |
√ |
√ |
√ |
√ |
√ |
Branch/Merge operation |
Merge Check in Diagram |
√ |
√ |
|||
Merge Check In Dictionary |
√ |
√ |
||||
Merge Get Latest Diagram |
√ |
√ |
√ |
√ |
√ | |
Merge Get Latest Dictionary |
√ |
√ |
√ |
√ |
√ | |
Change Diagram File Name |
Change Diagram File Name |
√ |
√ |
√ |
||
Change Own Password |
Change Own Password |
√ |
√ |
√ |
√ |
√ |
Check In Data Dictionary |
Check In Dictionary Objects |
√ |
√ |
|||
Get Latest Diagram |
√ |
√ |
√ |
√ |
√ | |
Get Latest Dictionary |
√ |
√ |
√ |
√ |
√ | |
Check In Diagram |
Check In Diagram |
√ |
√ |
|||
Get Latest Diagram |
√ |
√ |
√ |
√ |
√ | |
Get Latest Dictionary |
√ |
√ |
√ |
√ |
√ | |
Check In Diagram Objects |
Check In Diagram Objects |
√ |
√ |
|||
Check Out Diagram |
Check Out Diagram |
√ |
√ |
√ |
||
Check Out Diagram Objects |
Check Out Diagram Objects |
√ |
√ |
√ |
||
Check Out Dictionary |
Check Out Dictionary |
√ |
√ |
√ |
||
Delete Diagram |
Delete Diagram |
√ |
√ |
√ | ||
Delete Dictionary |
Delete Dictionary |
√ |
√ |
√ |
√ | |
Delete Named Release |
Delete Named Release |
√ |
√ |
√ |
√ |
√ |
Enterprise Dictionary Bindings Dialog |
Get All Dictionaries |
√ |
√ |
√ |
√ |
√ |
Get Dictionary Binding Info |
√ |
√ |
√ |
√ |
√ | |
Get All Dictionary/Diagram Bindings |
√ |
√ |
√ |
√ |
√ | |
Get from Repository (Diagram) |
Get Latest Diagram |
√ |
√ |
√ |
√ |
√ |
Get Latest Dictionary |
√ |
√ |
√ |
√ |
√ | |
Get from Repository (Submodel) |
Get Latest Dictionary |
√ |
√ |
√ |
√ |
√ |
Get Latest Submodel |
√ |
√ |
√ |
√ |
√ | |
Get from Repository Dialog |
Get Structural Info |
√ |
√ |
√ |
√ |
√ |
Get Submodel Info |
√ |
√ |
√ |
√ |
√ | |
Get Latest Version |
Get Latest Diagram |
√ |
√ |
√ |
√ |
√ |
Get Latest Dictionary |
√ |
√ |
√ |
√ |
√ | |
Get Named Release |
Get Dictionary Named Release |
√ |
√ |
√ |
√ |
√ |
Get Name Release |
√ |
√ |
√ |
√ |
√ | |
Get Named Release Dialog |
Get All Named Releases |
√ |
√ |
√ |
√ |
√ |
Log In |
Get My Security Info |
√ |
√ |
√ |
√ |
√ |
Get All Projects |
√ |
√ |
√ |
√ |
√ | |
Log In |
√ |
√ |
√ |
√ |
√ | |
Log Out |
Log Out |
√ |
√ |
√ |
√ |
√ |
Project Center |
Add Project |
√ |
√ |
√ |
√ |
√ |
Delete Project |
√ |
√ |
√ |
√ |
√ | |
Get All Projects |
√ |
√ |
√ |
√ |
√ | |
Get Project Info |
√ |
√ |
√ |
√ |
√ | |
Modify Project |
√ |
√ |
√ |
√ |
√ | |
Redo Check Out Diagram |
Redo Check Out Diagram |
√ |
√ |
√ |
||
Redo Check Out Dictionary Objects |
Redo Check Out Dictionary Objects |
√ |
√ |
√ |
||
Redo Check out Objects |
Redo Check out Objects |
√ |
√ |
√ |
||
Security Center |
Add Role |
√ |
√ |
√ |
√ |
√ |
Add User |
√ |
√ |
√ |
√ |
√ | |
Delete Role |
√ |
√ |
√ |
√ |
√ | |
Delete User |
√ |
√ |
√ |
√ |
√ | |
Force Check In |
√ |
√ |
√ |
√ |
√ | |
Force Log Out |
√ |
√ |
√ |
√ |
√ | |
Get All Diagrams for Role |
√ |
√ |
√ |
√ |
√ | |
Get All Object Level Security |
√ |
√ |
√ |
√ |
√ | |
Get All Object Privileges |
√ |
√ |
√ |
√ |
√ | |
Get All Privileges |
√ |
√ |
√ |
√ |
√ | |
Get All Roles |
√ |
√ |
√ |
√ |
√ | |
Get All User Level Security |
√ |
√ |
√ |
√ |
√ | |
Get All Users |
√ |
√ |
√ |
√ |
√ | |
Get Repository Security Info |
√ |
√ |
√ |
√ |
√ | |
Get Role Info |
√ |
√ |
√ |
√ |
√ | |
Get User Checked Out Info |
√ |
√ |
√ |
√ |
√ | |
Get User Info |
√ |
√ |
√ |
√ |
√ | |
Get User On Machine Info |
√ |
√ |
√ |
√ |
√ | |
Get User Security Info |
√ |
√ |
√ |
√ |
√ | |
Get User Status |
√ |
√ |
√ |
√ |
√ | |
Modify Role |
√ |
√ |
√ |
√ |
√ | |
Modify Security Info |
√ |
√ |
√ |
√ |
√ | |
Security Center... |
Modify User |
√ |
√ |
√ |
√ |
√ |
Modify User Security Rights |
√ |
√ |
√ |
√ |
√ | |
Set Named Release |
Set Dictionary Named Release |
√ |
√ |
√ | ||
Set Named Release |
√ |
√ |
√ | |||
Synchronize Comments |
Synchronize Data |
√ |
√ |
√ |
√(no concur-rent Syncs) | |
Undo Check Out Diagram |
Undo Check Out Diagram |
√ |
√ |
√ |
||
Undo Check Out Dictionary |
Undo Check Out Dictionary |
√ |
√ |
√ |
||
View Object History |
Get History |
√ |
√ |
√ |
√ |
√ |