Repository でのマルチスレッド処理
ER/Studio Data Architect バージョン 9.0 では、Repository に新しいマルチスレッド機能が実装されました。Repository サーバーと ER/Studio Data Architect クライアント間のトランザクションには、これまでシーケンシャルな手法が使用されていましたが、マルチスレッド化したことで、Repository のパフォーマンスが向上しました。また、ER/Studio Business Architect と連携する Repository のパフォーマンスも向上し、ER/Studio Data Architect と同様に、ログインやセキュリティ操作の一部を同時に実行できるようになります。
マルチスレッドによって、サーバーは複数のトランザクションを同時に処理できるようになります。処理中のトランザクションと競合しない限り、サーバーは新規トランザクション用に新しいスレッドを開いて、直ちに処理を開始します。たとえば、ユーザー A がログインするためのトランザクションは、ユーザー B がダイアグラムを追加するためのトランザクションと同時に処理されます。ユーザー B がダイアグラムの追加中であっても、ユーザー A のログインはスムーズに完了します。
ただし、すべてのトランザクションが同時に処理されるわけではありません。場合によっては、他のユーザーによるトランザクションが完了するまで処理が保留されることがあります。さらに、異なるトランザクションが同じテーブルに同時にアクセスするような場合、以下の表に示す同時処理が可能なトランザクションの一部は、Repository データベース自体の同時処理メカニズムによってブロックされることがあります。
Repository のマルチスレッドに関する重要なルールを以下に説明します。
- 特定のダイアグラム/データ ディクショナリで、チェックインのトランザクションが処理中の場合、そのダイアグラム/データ ディクショナリに対する他のすべての操作は、チェックインの完了後に処理されます。
- 追加またはチェックインのトランザクションが処理中の場合、その他の追加またはチェックインのトランザクションは、最初のトランザクションの完了後に処理されます。このルールは、名前付きリリースの設定、分岐、および分岐/マージのチェックイン操作にも適用されます。
- その他の一般的なタスクのほとんど(ログイン、ログアウト、取得、チェックアウト、およびセキュリティ センターの操作など)は、サーバーによって同時に処理されます。ただし、データベース レベルのロック機構に影響を受けることがあります。
同時処理の制限事項を以下に説明します。
- 同じオブジェクト(ユーザー、ロール、ダイアグラム、およびディクショナリなど)に対する複数の取得アクセスは同時に処理されます。
- 特定のオブジェクトに対する書き込みアクセスは、一度に 1 つだけが処理されます(たとえば、テーブルの削除とテーブルの修正は、同じテーブルに対して同時に処理されません)。
- 特定のオブジェクトに対する書き込みと取得も、逐次処理されます(たとえば、ダイアグラムの取得とダイアグラムのチェックインは、同じダイアグラムに対して同時に処理されません)。
以下の表に、同時処理が可能なトランザクションの組み合わせを一覧表示します。
- 「ER/Studio Data Architect の操作」は、Repository Server のトランザクションを呼び出す操作です。
- 「Repository Server のトランザクション」は、Repository Server が受け取るリクエストです。
- 「同時処理」カラムは、サーバーのトランザクションが、「Repository Server のトランザクション」の各カラムのプロセスと同時に処理できるかどうかを示します。
ER/Studio Data Architect の操作 |
Repository Server のトランザクション |
同時処理 | ||||
---|---|---|---|---|---|---|
最新ダイアグラム(ディクショナリ)の取得 |
ダイアグラム(ディクショナリ)の追加 |
ダイアグラム(ディクショナリ)のチェックイン |
セキュリティとプロジェクトの操作 |
ダイアグラム(ディクショナリ)の取り消し/やり直し/チェックアウト | ||
ダイアグラムの追加 |
ダイアグラムの追加 |
√ |
√ |
√ |
||
ディクショナリの追加 |
√ |
√ |
√ | |||
ダイアグラムにディクショナリをバインド |
√ |
√ |
√ |
√ |
√ | |
プロジェクトの変更 |
√ |
√ |
√ |
√ |
√ | |
エンタープライズ データ ディクショナリの追加 |
ディクショナリの追加 |
√ |
√ |
√ | ||
ダイアグラムにディクショナリをバインド |
√ |
√ |
√ |
√ |
√ | |
エンタープライズ データ ディクショナリのバインド |
ダイアグラムにディクショナリをバインド |
√ |
√ |
√ |
√ |
√ |
分岐 |
分岐 |
√ |
√ |
√ | ||
[分岐/マージ]ダイアログ ボックス |
分岐ツリー情報の取得 |
√ |
√ |
√ |
√ |
√ |
操作の分岐とマージ |
ダイアグラムのマージ チェックイン |
√ |
√ |
|||
ディクショナリのマージ チェックイン |
√ |
√ |
||||
最新ダイアグラムのマージ取得 |
√ |
√ |
√ |
√ |
√ | |
最新ディクショナリのマージ取得 |
√ |
√ |
√ |
√ |
√ | |
ダイアグラムのファイル名を変更 |
ダイアグラムのファイル名を変更 |
√ |
√ |
√ |
||
自身のパスワードを変更 |
自身のパスワードを変更 |
√ |
√ |
√ |
√ |
√ |
データ ディクショナリのチェックイン |
ディクショナリ オブジェクトのチェックイン |
√ |
√ |
|||
最新ダイアグラムの取得 |
√ |
√ |
√ |
√ |
√ | |
最新ディクショナリの取得 |
√ |
√ |
√ |
√ |
√ | |
ダイアグラムのチェックイン |
ダイアグラムのチェックイン |
√ |
√ |
|||
最新ダイアグラムの取得 |
√ |
√ |
√ |
√ |
√ | |
最新ディクショナリの取得 |
√ |
√ |
√ |
√ |
√ | |
ダイアグラム オブジェクトのチェックイン |
ダイアグラム オブジェクトのチェックイン |
√ |
√ |
|||
ダイアグラムのチェックアウト |
ダイアグラムのチェックアウト |
√ |
√ |
√ |
||
ダイアグラム オブジェクトのチェックアウト |
ダイアグラム オブジェクトのチェックアウト |
√ |
√ |
√ |
||
ディクショナリのチェックアウト |
ディクショナリのチェックアウト |
√ |
√ |
√ |
||
ダイアグラムの削除 |
ダイアグラムの削除 |
√ |
√ |
√ | ||
ディクショナリの削除 |
ディクショナリの削除 |
√ |
√ |
√ |
√ | |
名前付きリリースの削除 |
名前付きリリースの削除 |
√ |
√ |
√ |
√ |
√ |
[エンタープライズ ディクショナリのバインド]ダイアログ ボックス |
すべてのディクショナリを取得 |
√ |
√ |
√ |
√ |
√ |
ディクショナリのバインド情報を取得 |
√ |
√ |
√ |
√ |
√ | |
すべてのディクショナリ/ダイアグラムのバインド情報を取得 |
√ |
√ |
√ |
√ |
√ | |
Repository(ダイアグラム)から取得 |
最新ダイアグラムの取得 |
√ |
√ |
√ |
√ |
√ |
最新ディクショナリの取得 |
√ |
√ |
√ |
√ |
√ | |
Repository(サブモデル)から取得 |
最新ディクショナリの取得 |
√ |
√ |
√ |
√ |
√ |
最新サブモデルの取得 |
√ |
√ |
√ |
√ |
√ | |
[Repository から取得]ダイアログ ボックス |
構造情報の取得 |
√ |
√ |
√ |
√ |
√ |
サブモデル情報の取得 |
√ |
√ |
√ |
√ |
√ | |
最新バージョンの取得 |
最新ダイアグラムの取得 |
√ |
√ |
√ |
√ |
√ |
最新ディクショナリの取得 |
√ |
√ |
√ |
√ |
√ | |
名前付きリリースの取得 |
ディクショナリの名前付きリリースを取得 |
√ |
√ |
√ |
√ |
√ |
名前付きリリースの取得 |
√ |
√ |
√ |
√ |
√ | |
[名前付きリリースの取得]ダイアログ ボックス |
すべての名前付きリリースを取得 |
√ |
√ |
√ |
√ |
√ |
ログイン |
自身のセキュリティ情報を取得 |
√ |
√ |
√ |
√ |
√ |
すべてのプロジェクトを取得 |
√ |
√ |
√ |
√ |
√ | |
ログイン |
√ |
√ |
√ |
√ |
√ | |
ログアウト |
ログアウト |
√ |
√ |
√ |
√ |
√ |
プロジェクト センター |
プロジェクトの追加 |
√ |
√ |
√ |
√ |
√ |
プロジェクトの削除 |
√ |
√ |
√ |
√ |
√ | |
すべてのプロジェクトを取得 |
√ |
√ |
√ |
√ |
√ | |
プロジェクト情報の取得 |
√ |
√ |
√ |
√ |
√ | |
プロジェクトの変更 |
√ |
√ |
√ |
√ |
√ | |
ダイアグラムのチェックアウトのやり直し |
ダイアグラムのチェックアウトのやり直し |
√ |
√ |
√ |
||
ディクショナリ オブジェクトのチェックアウトのやり直し |
ディクショナリ オブジェクトのチェックアウトのやり直し |
√ |
√ |
√ |
||
オブジェクトのチェックアウトのやり直し |
オブジェクトのチェックアウトのやり直し |
√ |
√ |
√ |
||
セキュリティ センター |
ロールの追加 |
√ |
√ |
√ |
√ |
√ |
ユーザーの追加 |
√ |
√ |
√ |
√ |
√ | |
ロールの削除 |
√ |
√ |
√ |
√ |
√ | |
ユーザーの削除 |
√ |
√ |
√ |
√ |
√ | |
強制チェックイン |
√ |
√ |
√ |
√ |
√ | |
強制ログアウト |
√ |
√ |
√ |
√ |
√ | |
ロールに対するダイアグラムをすべて取得 |
√ |
√ |
√ |
√ |
√ | |
オブジェクト レベルのセキュリティをすべて取得 |
√ |
√ |
√ |
√ |
√ | |
すべてのオブジェクト権限を取得 |
√ |
√ |
√ |
√ |
√ | |
すべての権限を取得 |
√ |
√ |
√ |
√ |
√ | |
すべてのロールを取得 |
√ |
√ |
√ |
√ |
√ | |
ユーザー レベルのセキュリティをすべて取得 |
√ |
√ |
√ |
√ |
√ | |
すべてのユーザーを取得 |
√ |
√ |
√ |
√ |
√ | |
Repository のセキュリティ情報を取得 |
√ |
√ |
√ |
√ |
√ | |
ロール情報の取得 |
√ |
√ |
√ |
√ |
√ | |
ユーザーのチェックアウト情報を取得 |
√ |
√ |
√ |
√ |
√ | |
ユーザー情報の取得 |
√ |
√ |
√ |
√ |
√ | |
マシン上のユーザー情報を取得 |
√ |
√ |
√ |
√ |
√ | |
ユーザーのセキュリティ情報を取得 |
√ |
√ |
√ |
√ |
√ | |
ユーザー ステータスの取得 |
√ |
√ |
√ |
√ |
√ | |
ロールの変更 |
√ |
√ |
√ |
√ |
√ | |
セキュリティ情報の変更 |
√ |
√ |
√ |
√ |
√ | |
セキュリティ センター... |
ユーザーの変更 |
√ |
√ |
√ |
√ |
√ |
ユーザーのセキュリティ権限を変更 |
√ |
√ |
√ |
√ |
√ | |
名前付きリリースの設定 |
ディクショナリの名前付きリリースを設定 |
√ |
√ |
√ | ||
名前付きリリースの設定 |
√ |
√ |
√ | |||
コメントのシンクロ |
データのシンクロ |
√ |
√ |
√ |
√(同時シンクロなし) | |
ダイアグラムのチェックアウトの取り消し |
ダイアグラムのチェックアウトの取り消し |
√ |
√ |
√ |
||
ディクショナリのチェックアウトの取り消し |
ディクショナリのチェックアウトの取り消し |
√ |
√ |
√ |
||
オブジェクト履歴の表示 |
履歴の取得 |
√ |
√ |
√ |
√ |
√ |