Cloud Software Group, Inc. EBX®
ドキュメント>管理ガイド>技術管理
ナビゲーションモードドキュメント>管理ガイド>技術管理

リポジトリ管理

テクニカルアーキテクチャ

概要

TIBCO EBX® テクニカルアーキテクチャの主な原則は次のとおりです。

データベースアクセスとユーザー権限のルール

注意

永続化されたマスターデータの整合性を保証するために、データベースへの直接 SQL 書き込みを実行することは固く禁じられています

構成済みデータソースで指定されたデータベースユーザーは、テーブル、インデックス、およびシーケンスに対する「作成/変更」権限を持っている必要があります。これにより、リポジトリの自動インストールとアップグレードが可能になります。

リポジトリごとに 1 つの JVM

リポジトリを複数の JVM で共有することはできません。このような状況が発生した場合、予期しない動作が発生し、リポジトリ内のデータが破損する可能性があります。

EBX® は、この制限を適用するためのチェックを実行します。リポジトリが使用可能になる前に、リポジトリは最初にリレーショナルデータベースの排他的所有権を取得する必要があります。リポジトリーを開始した後、JVM は定期的にリポジトリーの所有権を保持していることを確認します。

これらのチェックは、リレーショナルデータベースのテクニカルテーブルに繰り返しタグを付けることによって実行されます。アプリケーションサーバーのシャットダウンコマンドは、このテクニカルテーブルのタグが削除されていることを確認します。サーバーが予期せずシャットダウンした場合、タグがテーブルに残っている可能性があります。これが発生した場合、サーバーは再起動時にさらに数秒待機して、テーブルが別のライブプロセスによって更新されていないことを確認する必要があります。

注意

次回の起動時に追加の待機期間を回避するために、アプリケーションサーバーを常に適切にシャットダウンすることをお勧めします。

ホットスタンバイによるフェールオーバー

上記の除外メカニズムは、アクティブ/パッシブクラスター内で常に 1 つのサーバーのみがアクティブであるフェールオーバーアーキテクチャと互換性があります。これを確実に行うには、メインサーバーがプロパティ ebx.repository.ownership.mode=failovermain を宣言する必要があります。単一サーバーの場合と同様に、メインサーバーはリポジトリデータベースの所有権を主張します。

バックアップサーバーは引き続き起動できますが、リポジトリにアクセスすることはできません。バックアップサーバーとして機能するには、プロパティ ebx.repository.ownership.mode=failoverstandby を宣言する必要があります。さらに、両方のサーバーが ebx.repository.directory に同じ値を定義し、この値で定義されたディレクトリを共有するために必要です。(これは特に、Lucene インデックスを共有できるようにするためです。つまり、フェールオーバーサーバーの起動時にオンデマンドで再構築されません。) 起動すると、バックアップサーバーが接続ログに登録されます。そのステータスは、以下のリポジトリのステータス情報とログのセクションで説明されているように、JavaAPI または HTTPリクエストを介して取得できます。

バックアップサーバーをアクティブ化し、リポジトリの排他的所有権をサーバーに転送するには、HTTP リクエストによって、または Java API を使用して特定のリクエストを発行する必要があります。

メインサーバーがまだ稼働していてデータベースにアクセスしている場合は、以下が適用されます。バックアップサーバーはデータベースの所有権テーブルにマークを付け、メインサーバーのクリーンシャットダウンを要求します (ただし、実行中のトランザクションはすべて終了します)。メインサーバーが所有権を返した後でのみ、バックアップサーバーはリポジトリの使用を開始できます。

リポジトリのステータス情報とログ

リポジトリへのすべての試行された Java プロセス接続のログは、[履歴とログ] > [リポジトリ接続ログ] の下の [管理] エリアにあります。

リポジトリのステータスは、RepositoryStatus API のメソッドを使用して取得できます。

次のいずれかの値を持つパラメーター repositoryInformationRequest を含む HTTP リクエストを使用して、リポジトリステータス情報を取得することもできます。

state

所有権登録に関するリポジトリの状態。

  • D:Java プロセスは停止しています。

  • O:Java プロセスはデータベースの独占的な所有権を持っています。

  • S:Java プロセスはフェールオーバースタンバイモードで開始されますが、リポジトリとの対話はまだ許可されていません。

  • N:Java プロセスがデータベースの所有権を取得しようとしましたが、別のプロセスがデータベースを保持しているため失敗しました。

heart_beat_count

データベースに関連付けられてからリポジトリが接続した回数。

info

リポジトリの登録ステータスに関するエンドユーザー向けの詳細情報。この情報の形式は、明示的な警告なしに将来変更される可能性があります。

自動インクリメント

EBX® ユーザーインターフェイスの [管理] エリアから、いくつかのテクニカルテーブルにアクセスできます。これらのテーブルは内部使用のみを目的としており、古いデータや誤ったデータを削除しない限り、コンテンツを手動で編集しないでください。これらのテクニカルテーブルには次のものがあります。

自動インクリメント

リポジトリ内のすべての自動インクリメントフィールドを一覧表示します。

リポジトリ管理

インストールとアップグレード

自動インストールとアップグレード

データベースアクセスとユーザー権限のルールに準拠することにより、リポジトリのインストールまたはアップグレードが自動的に行われます。

データベース間の移行

EBX® は、リポジトリの全コンテンツを別のデータベースにエクスポートする方法を提供します。エクスポートには、すべてのデータスペース、構成データセット、およびマップされたテーブルが含まれます。この移行を操作するには、次のガイドラインに従う必要があります。

制限:

リポジトリのバックアップ

EBX® リポジトリのグローバルバックアップは、基盤となる RDBMS に委任する必要があります。データベース管理者は、基盤となるデータベースの標準のバックアップ手順を使用する必要があります。

アーカイブディレクトリ

アーカイブは、ebx.repository.directory 内の archives というサブディレクトリに保存されます (構成を参照) 。このディレクトリは、EBX® からの最初のエクスポート時に自動的に作成されます。

注意

このディレクトリへのアクセスは、セキュリティのベストプラクティスで規定されているように慎重に保護する必要があります。また、手動でこのディレクトリを作成する場合は、EBX® プロセスが読み書き可能なアクセス権を持っていることを確認してください。さらに、EBX® はこのディレクトリを管理していないため、管理者はこのディレクトリをクリーンな状態に保つ責任があります。

注意

2 つの EBX® 環境間でのファイルの転送は、FTP やネットワーク共有による単純なファイルコピーなどのツールを使用して実行する必要があります。

リポジトリ属性

リポジトリには次の属性があります。

repositoryId

会社の範囲内のリポジトリを一意に識別します。これは 48 ビット (6バイト) で、通常は 12 桁の 16 進数で表されます。この情報は、リポジトリに作成されたエンティティの UUID (Universally Unique Identifiers)、および履歴テーブルまたは XML 監査証跡に記録されたトランザクションを生成するために使用されます。この識別子は、RFC 4122 で指定されているように、「UUIDノード」の部分として機能します。

repository label

リポジトリの目的とコンテキストを識別するユーザーフレンドリーなラベルを提供します (例:「実稼働環境」)。

store format

構造の現在のバージョンを含む、基盤となる永続化システムを識別します。

監視管理

リレーショナルデータベースの監視とクリーンアップ

一部のエンティティは、EBX® の実行中に蓄積されます。

注意

これらのエンティティを監視およびクリーンアップするのは、管理者の責任です。

データベースの監視

リポジトリの永続性データソースは、RDBMS 監視を通じて監視する必要があります。

データベース統計

EBX® によって実行されるリクエストのパフォーマンスには、データベースがテーブルの最新の統計を計算している必要があります。データベースエンジンは定期的に統計の更新をスケジュールするため、これは通常問題にはなりません。ただし、テーブルが短期間に大幅に変更された場合 (たとえば、インポートによって多くのレコードが作成された場合)、統計を明示的に更新する必要がある場合があります。

履歴テーブル:UI への影響

履歴テーブルの場合、一部の UI コンポーネントは統計を使用して動作を調整し、ユーザーがコストのかかるリクエストを不本意に実行するのを防ぎます。

たとえば、テーブルに大量のレコードが含まれている場合、コンボボックスはユーザー入力を自動的に検索しません。この動作は、データベースの統計が最新でない場合にも発生する可能性があります。これは、実際にはそうではない場合でも、テーブルに大量のレコードが含まれていると見なされる可能性があるためです。

データスペース、スナップショット、履歴のクリーンアップ

リポジトリからのデータスペース、スナップショット、および履歴の完全なクリーンアップには、いくつかの段階が含まれます。

  1. キャッシュを最小サイズに保つために、未使用のデータスペースとスナップショットを閉じます。

  2. データスペース、スナップショット、履歴を削除します。

  3. 削除されたデータスペース、スナップショット、および履歴に関連付けられている残りのエンティティをリポジトリから削除します。

未使用のデータスペースとスナップショットを閉じる

キャッシュとリポジトリを適切なサイズに保つために、不要になったデータスペースとスナップショットをすべて閉じることをお勧めします。これは、次の方法で実行できます。

データスペースとスナップショットが閉じられると、データはリポジトリから安全に削除できます。

注意

閉じたデータスペースとスナップショットは、[データスペース] の下の [管理] エリアで再度開くことができます。

データスペース、スナップショット、履歴の削除

データスペース、関連する履歴、スナップショットは、リポジトリから完全に削除できます。ただし、データスペースの削除は、必ずしもその履歴の削除を意味するわけではありません。2 つの操作は独立しており、異なる時間に実行できます。

注意

データスペース、スナップショット、またはそれらに関連付けられた履歴の削除は再帰的です。Delete 操作は、選択したデータスペースのすべての子孫に対して実行されます。

データスペースまたはスナップショットの削除後、古いデータのリポジトリ全体の削除が実行されるまで、一部のエンティティが残ります。

特に、データスペースの完全な履歴は、リポジトリ全体の削除が実行されるまで表示されたままになります。データと履歴を完全に削除するには、削除とリポジトリ全体の削除の両方の手順を完了する必要があります。このプロセスは、パフォーマンスの問題のために 2 つのステップに分割されています。リポジトリの全体的なクリーンアップには時間がかかる可能性があるため、これにより、サーバーのオフピーク時に削除の実行を開始できます。

データスペースの履歴を削除するプロセスでは、削除が送信されるまで、またはユーザーが指定した日付までに記録されたすべての履歴トランザクションが考慮されます。削除操作が実行されると、後続の履歴操作は含まれません。新しいトランザクションを削除するには、データスペースの履歴を再度削除する必要があります。

注意

今後、削除日を設定することはできなくなります。したがって、指定された日付は無視され、代わりに現在の日付が使用されます。

データスペース、スナップショット、および履歴の削除は、さまざまな方法で実行できます。

データスペース、スナップショット、または履歴の削除後の残りのエンティティの削除

アイテムが削除されると、削除を実行して、その時点までに実行されたすべての削除から残りのデータをクリーンアップできます。削除は、次の方法で開始できます。

削除プロセスは、ディレクトリ ${ebx.repository.directory}/db.purge/ に記録されます。

他のリポジトリエンティティのクリーンアップ

次のエンティティを監視し、定期的にクリーンアップするのは管理者の責任です。

削除

削除を実行して、すべての削除からの残りのデータ、つまり、その時点までに実行されたデータスペース、スナップショット、および履歴を削除できます。これには、廃止された永続的な検証レポート用に作成されたデータスペースとスナップショットが含まれます。削除は、ナビゲーション ペインの [管理] エリアで [アクション] > [削除の実行] を選択することで開始できます。

タスクスケジューラの実行レポート

タスクスケジューラの実行レポートは、[管理] エリアの [タスクスケジューラ] セクションの [実行レポート] テーブルに保持されます。スケジュールされたタスクは、実行されるたびにこのテーブルに追加されます。実行が正常に終了しても、レコードは自動的に削除されません。したがって、古いレコードを定期的に削除することをお勧めします。

ユーザーインタラクション

ユーザーインタラクションは、アプリケーションがサービス実行を開始して結果を取得するための信頼できる手段として、EBX® コンポーネントによって使用されます。これらは、ebx-interactions 管理セクションで保持されます。ユーザーインタラクションテーブルを定期的に監視し、必要に応じてクリーンアップすることをお勧めします。

ワークフロー履歴

ワークフローイベントは、[管理] エリアの [ワークフロー] セクションにあるワークフロー履歴テーブルに保持されます。データワークフローは、実行されるたびにこのテーブルに追加されます。実行が正常に終了しても、レコードは自動的に削除されません。したがって、古いレコードを定期的に削除することをお勧めします。

履歴をクリーンアップする手順は次のとおりです

ファイルシステムの監視とクリーンアップ

注意

EBX® の正しい動作を保証するために、EBX® は Lucene インデックスを除いてクリーンアップを実行しないため、次のディレクトリのディスク使用量とディスク可用性を管理者が監視する必要があります。

注意

XML 監査証跡の場合、 (デフォルト設定とは逆に) 完全な更新の詳細をアクティブにして大規模なトランザクションを実行すると、必要なディスク容量が増える可能性があります。

注意

データサービスの getChanges 操作でのページ付けには、一時ディレクトリで永続ストアが使用されます。大きな変更には、大量のディスク領域が必要になる場合があります。

以下も参照してください。

データスペース

一部のデータスペース管理タスクは、EBX® の [管理] エリアから [データスペース] を選択することにより、実行できます。

データスペース/スナップショット

このテーブルには、開いているか閉じているかに関係なく、リポジトリ内の既存のすべてのデータスペースとスナップショットが一覧表示されます。このテーブルに含まれるデータスペースの情報を表示および変更できます。

以下も参照してください。

このセクションから、開いているデータスペースを閉じたり、以前に閉じたデータスペースを再度開いたり、開いたデータスペースまたは閉じたデータスペース、関連する履歴、スナップショットを削除および削除したりすることもできます。

データスペースのアクセス許可

この表は、リポジトリ内のすべてのデータスペースで定義されているすべての既存の権限ルールを示しています。権限ルールを表示し、それらの情報を変更できます。

以下も参照してください。

リポジトリの履歴

テーブル「削除されたデータスペース/スナップショット」には、リポジトリからすでに削除されているすべてのデータスペースが一覧表示されます。

このセクションから、削除されたデータスペースの履歴を削除することもできます。

ドキュメント>管理ガイド>技術管理