Cloud Software Group, Inc. EBX®
ドキュメント>リファレンスマニュアル>永続性
ナビゲーションモードドキュメント>リファレンスマニュアル>永続性

レプリケーション

概要

TIBCO EBX® リポジトリに格納されているデータを専用のリレーショナルテーブルにミラーリングして、SQL リクエストとビューによるデータへの直接アクセスを可能にすることができます。

履歴と同様に、このデータレプリケーションはエンドユーザーとクライアントアプリケーションに対して透過的です。特定のアクションは、データベース内のレプリカへの自動変更をトリガーします。

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

複製されたテーブル:複製されたプライマリデータテーブルを参照します。

レプリカテーブル (レプリカ):レプリケーションのターゲットであるデータベーステーブルを参照します。

レプリケーションの構成

レプリケーションの有効化

データモデルでレプリケーションユニットを定義するには、エレメント annotation/appinfo の下にあるエレメント osd:replication を使用します。各レプリケーションユニットは、特定のデータスペース内の単一のデータセット内のテーブルを指定します。

ネストされたエレメントは次のとおりです。

エレメント

説明

必須

name

レプリケーションユニットの名前。この名前は、現在のデータモデルのレプリケーションユニットを識別します。一意である必要があります。

はい

dataSpace

このレプリケーションユニットに関連するデータスペースを指定します。スナップショットまたはリレーショナルデータスペースにすることはできません。

はい

dataSet

このレプリケーションユニットに関連するデータセットを指定します。

はい

refresh

データ同期ポリシーを指定します。可能なポリシーは次のとおりです。

  • onCommit:データベース内のレプリカテーブルのコンテンツは、ソーステーブルに関して常に最新です。EBX® ソーステーブルを更新するすべてのトランザクションは、レプリカテーブルで対応する挿入、更新、および削除ステートメントをトリガーします。

  • onDemand:指定されたテーブルのレプリケーションは、明示的な Update 操作が実行された場合にのみ実行されます。「「オンデマンド」レプリケーション更新のリクエストを参照してください。

はい

table/path

データベースに複製される現在のデータモデルのテーブルのパスを指定します。

はい

table/nameInDatabase

データの複製先となるデータベース内のテーブルの名前を指定します。この名前は、すべてのレプリケーションユニット間で一意である必要があります。

はい

table/element/path

データベースに複製されるテーブル内の集約リストのパスを指定します。

はい

table/element/nameInDatabase

集約リストのデータが複製されるデータベース内のテーブルの名前を指定します。この名前は、すべてのレプリケーションユニット間で一意である必要があります。

はい

例:

<xs:schema>
	<xs:annotation>
		<xs:appinfo>
			<osd:replication>
				<name>ProductRef</name>
				<dataSpace>ProductReference</dataSpace>
				<dataSet>productCatalog</dataSet>
				<refresh>onCommit</refresh>
				<table>
					<path>/root/domain1/tableA</path>
					<nameInDatabase>PRODUCT_REF_A</nameInDatabase>
				</table>
				<table>
					<path>/root/domain1/tableB</path>
					<nameInDatabase>PRODUCT_REF_B</nameInDatabase>
					<element>
						<path>/retailers</path>
						<nameInDatabase>PRODUCT_REF_B_RETAILERS</nameInDatabase>
					</element>
				</table>
			</osd:replication>
		</xs:appinfo>
	</xs:annotation>
	...
</xs:schema>

注意:

特定のフィールドまたはグループでのレプリケーションの無効化

レプリケートされたテーブルの場合、デフォルトの動作では、サポートされているすべてのエレメントがレプリケートされます (レプリケートされたテーブルのデータモデルの制限を参照)。

データモデルアシスタントを使用するか、基になるデータモデルを編集することにより、特定のフィールドまたはグループのレプリケーションを無効にすることができます。

データモデルを編集してフィールドまたはグループのレプリケーションを無効にするには、属性 disable="true" を持つエレメント osd:replication を使用します。

<xs:element name="longDescription" type="xs:string">
    <xs:annotation>
        <xs:appinfo>
            <osd:replication disable="true" />
        </xs:appinfo>
    </xs:annotation>
</xs:element>

データモデルアシスタントを介したフィールドまたはグループのレプリケーションを無効にするには、エレメントの詳細プロパティレプリケーションプロパティを使用します。

このプロパティがグループで定義されている場合、そのすべての子孫に対してレプリケーションが再帰的に無効になります。グループがレプリケーションを無効にすると、子孫でレプリケーションを具体的に再度有効にすることはできません。

注意

フィールドまたはグループを含むテーブルが複製されていない場合、このプロパティは効果がありません。

主キーフィールドのレプリケーションを無効にすることはできません。

SQL を使用したレプリカテーブルへのアクセス

このセクションでは、SQL を使用してレプリカテーブルに直接アクセスする方法について説明します。

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

データベースでのレプリカテーブルの検索

複製された EBX® テーブルごとに、対応するテーブルが RDBMS に生成されます。EBX® ユーザーインターフェイスを使用して、テーブルのドキュメントペインをクリックすると、このデータベーステーブルの名前を見つけることができます。

アクセス制限

レプリカデータベーステーブルには、読み取り専用モードでのみ直接アクセスする必要があります。EBX® が使用するユーザーを除くすべてのデータベースユーザーへの書き込みアクセスをブロックするのは、データベース管理者の責任です。

SQL 読み取り

直接 SQL 読み取りは、適切に管理された、できれば短期間のトランザクションで可能です。ただし、このようなアクセスの場合、EBX® 権限は考慮されません。その結果、読み取りを実行する権限を与えられたアプリケーションは、他の認証プロセスと権限を通じて信頼されている必要があります。

「オンデマンド」レプリケーション更新のリクエスト

「onDemand」更新ポリシーでは、レプリケートされたテーブルデータを更新するための明示的なリクエストが必要です。

レプリケーションの更新を要求するには、いくつかの方法があります。

レプリケーションの影響と制限

レプリケーション機能には、以下に示すように、いくつかの既知の制限と副作用があります。レプリケーションを使用する場合は、このセクションを注意深く読み、質問があれば Cloud Software Group, Inc. のサポートに問い合わせることを強くお勧めします。

レプリケーションがサポートされているデータベースについては、サポートされるデータベースを参照してください。

検証

一部の EBX® データモデルの制約は、レプリケーションが有効になっている場合にブロッキング制約になります。詳細については、構造上の制約を参照してください。

レプリケートされたテーブルのデータモデルの制限

複製されるテーブルを含むデータモデルには、いくつかの制限が適用されます。

関連するテーブルにすでに含まれているデータによっては、データモデルの進化が基盤となる RDBMS によって制約される場合もあります。

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

データベース構成

Update 操作は、最後の更新以降に (作成と削除に関して) 変更されたソーステーブルの行のみを送信するように最適化されています。ただし、交換されるデータの量によっては、これは集中的な操作であり、大規模なトランザクションが必要になる場合があります。特に、最初の Update 操作は多数の行に関係する可能性があります。このようなトランザクションを最適な条件下で実行できるように、データベースを適切に構成する必要があります。

Oracle の例は、次のとおりです。

分散データ配信 (D3)

レプリケーションは、D3 プライマリとレプリカ配信データスペースの両方で利用できます。プライマリデータスペースでは、レプリケーションの動作は標準のセマンティックデータスペースと同じですが、レプリカデータスペースでは、レプリケートされたコンテンツは最後のブロードキャストスナップショットのコンテンツです。

レプリカ配信データスペースでは、いくつかの制限が発生します。

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

レプリケーションのその他の制限

ドキュメント>リファレンスマニュアル>永続性