ここでは、JMS/XLA APIに関するリファレンス情報を示します。内容は次のとおりです。
javax.jms.MapMessage
には、C構造体ttXlaUpdateDesc_t
としてパブリッシュされた、XLA更新ヘッダー内のフィールドに対応する一連の名前/値ペアが含まれています。 MapMessage
インスタンスに含まれるフィールドは、更新タイプによって異なります。
JMS/XLA APIで返される各MapMessage
には、整数値としてメッセージ内に記述されている更新タイプを示す__TYPE
(アンダースコア2つ)という名前/値ペアが1つ以上含まれています。タイプは、整数値で指定されています。整数タイプと比較するために、com.timesten.dataserver.jmsxla.XlaConstants
に定義されている定数を使用します。 表6-1に、サポートされているタイプを示します。
表6-1 XLA更新タイプ
すべての更新タイプに対して、MapMessage
には次のことを示す名前/値ペアが含まれています。
トランザクションの最初のレコードであるかどうか。
トランザクションの最後のレコードであるかどうか。
更新がレプリケーションによって実行されたかどうか。
どの表が更新されたか。
更新された表の所有者。
表6-2に、これらのXLAフラグを含む名前/値ペアを示します。各名前の先頭には、2つのアンダースコアが付いています。
表6-2 JMS/XLAフラグ
名前 | 説明 | 対応するttXLATblDesc_tフィールド |
---|---|---|
|
エージングによって削除されたことを示します。 このフラグは、XLA更新レコードがエージングによって削除された場合のみ示されます。 |
|
|
カスケード削除によって削除されたことを示します。 このフラグは、XLA更新レコードがカスケード削除によって削除された場合のみ示されます。 |
|
|
トランザクション内の最終レコードであり、この操作の後にコミットが実行されたことを示します。UPDCOMMITがオンの場合にのみ、 |
|
|
新規トランザクション内の最初のレコードであることを示します。 UPDFIRSTがオンの場合にのみ、 |
|
|
この変更がレプリケーションによってデータベースに適用されたことを示します。UPDREPLがオンの場合にのみ、 |
|
|
UPDATETUPレコードに対してのみ使用されます。このフラグは、操作で実際に変更された列のリストがXLA更新記述子に含まれていることを示します。セミコロンで区切られた列名のリストを含む文字列として指定されています。UPDCOLSがオンの場合にのみ、 |
|
注意: XlaConstants インタフェースは、com.timesten.dataserver.jmsxla パッケージ内にあります。 |
アプリケーションは、MapMessage
メソッドitemExists()
を使用して、フラグが示されるかどうか判断したり、getBoolean()
を使用して、フラグが設定されているかどうかを判断できます。 入力時に、XlaConstants.AGING_DELETE_FIELD
などのフラグに対応するXlaConstants
定数を指定します。
多くのDML操作は、XLAイベント・ハンドラで監視可能なXLA更新を生成します。 この項では、これらの操作を行うために生成されるMapMessage
オブジェクトの内容について説明します。
INSERT、UPDATEおよびDELETE操作では、MapMessage
には、__TBLOWNER
および__TBLNAME
という2つの名前/値ペアが含まれます。これらのフィールドには、更新される表の名前と所有者が記述されます。 たとえば、表SCOTT.EMPLOYEESでは、すべての関連するMapMessage
に、文字列SCOTTの値が入った__TBLOWNER
という名前のフィールドと、文字列EMPLOYEESの値が入った__TBLNAME
という名前のフィールドが含まれます。
INSERTおよびDELETE操作では、挿入または削除された行の完全なイメージはメッセージに含まれ、すべての列値を使用できます。
UPDATE操作の場合、実際に変更された列を示す列番号のリストだけでなく、行の前後のイメージが使用可能です。列値には、列の名前を使用してアクセスします。 前のイメージの列名は、すべて1つのアンダースコアで始まります。 たとえば、columnname
には新規の値が含まれており、_columnname
には以前の値が含まれています。
列の値がNULLである場合、列の値は列リストから省略されます。 __NULLS
名前/値ペアには、NULL値を含む列のセミコロンで区切られたリストが含まれています。
多くのデータ定義言語(DDL)操作は、XLAイベント・ハンドラで監視可能なXLA更新を生成します。 この項では、これらの操作を行うために生成されるMapMessage
オブジェクトの内容について説明します。
__TYPE=1(XlaConstants.CREATE_TABLE)
が指定されているメッセージは、表が作成されていることを示します。 表6-3は、CREATE_TABLE操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
表6-3 更新メッセージで提供されるCREATE_TABLEデータ
名前 | 値 |
---|---|
|
作成された表の所有者の文字列値。 |
|
作成された表の名前の文字列値。 |
|
この表の主キー内の列の名前を含む文字列値。 表に主キーがない場合、 書式: |
|
表の列の名前を含む文字列値。 書式: 注意: 表の列ごとに、列について説明する追加の名前/値ペアが |
|
この列のデータ型を表す整数値。 |
|
この列の精度を含む整数値(NUMERIC/DECIMAL)。 |
|
この列のスケールを含む整数値(NUMERIC/DECIMAL)。 |
|
この列の最大サイズを示す整数値(CHAR、VARCHAR、BINARYまたはVARBINARY)。 |
|
この列でNULL値が許可されているかどうかを示すブール値。 |
|
この列がタプルのインラインまたはアウトラインのいずれに保存されるかを示すブール値。 |
|
この列が表の主キーの一部であるかどうかを示すブール値。 |
__TYPE=2 (XlaConstants.DROP_TABLE)
が指定されているメッセージは、表が削除されていることを示します。 表6-4に、DROP_TABLE操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
__TYPE=3(XlaConstants.CREATE_INDEX)
が指定されているメッセージは、索引が作成されていることを示します。 表6-5に、CREATE_INDEX操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
表6-5 更新メッセージで提供されるCREATE_INDEXデータ
名前 | 値 |
---|---|
|
索引が作成された表の所有者の文字列値。 |
|
索引が作成された表の名前の文字列値。 |
|
作成された索引の名前の文字列値。 |
|
索引タイプを表す文字列値。Pは主キー、Fは外部キー、Rは標準。 |
|
索引メソッドを表す文字列値。Hはハッシュ、Tは範囲、Bはビットマップ。 |
|
索引がUNIQUEであるかどうかを示すブール値。 |
|
ハッシュ索引内のPAGESの数を表す整数値(範囲索引には指定されません)。 |
|
索引内の列について説明する文字列値。 書式: |
__TYPE=4(XlaConstants.DROP_INDEX)
が指定されているメッセージは、索引が削除されていることを示します。 表6-6に、DROP_INDEX操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
__TYPE=5(XlaConstants.ADD_COLUMNS)
が指定されているメッセージは、表に新規列が追加されていることを示します。 表6-7に、ADD_COLUMNS操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
表6-7 更新メッセージで提供されるADD_COLUMNSデータ
名前 | 値 |
---|---|
|
変更された表の所有者の文字列値。 |
|
変更された表の名前の文字列値。 |
|
この表の主キー内の列の名前を含む文字列値。表に主キーがない場合、PK_COLUMNS値は指定されません。 書式: |
|
表に追加された列の名前を含む文字列値。 書式: 注意: 追加された列ごとに、列について説明する追加の名前/値ペアが |
|
この列のデータ型を表す整数値。 |
|
この列の精度を含む整数値(NUMERIC/DECIMAL)。 |
|
この列のスケールを含む整数値(NUMERIC/DECIMAL)。 |
|
この列の最大サイズを示す整数値(CHAR、VARCHAR、BINARYまたはVARBINARY)。 |
|
この列でNULL値が許可されているかどうかを示すブール値。 |
|
この列がタプルのインラインまたはアウトラインのいずれに保存されるかを示すブール値。 |
|
この列が表の主キーの一部であるかどうかを示すブール値。 |
__TYPE=6(XlaConstants.DROP_COLUMNS)
が指定されているメッセージは、表から既存の列が削除されていることを示します。 表6-8に、DROP_COLUMNS操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
表6-8 更新メッセージで提供されるDROP_COLUMNSデータ
名前 | 値 |
---|---|
|
変更された表の所有者の文字列値。 |
|
変更された表の名前の文字列値。 |
|
表から削除された列の名前を含む文字列値。 書式: 注意: 削除された列ごとに、列について説明する追加の名前/値ペアが |
|
この列のデータ型を表す整数値。 |
|
この列の精度を含む整数値(NUMERIC/DECIMAL)。 |
|
この列のスケールを含む整数値(NUMERIC/DECIMAL)。 |
|
この列の最大サイズを示す整数値(CHAR、VARCHAR、BINARYまたはVARBINARY)。 |
|
この列でNULL値が許可されているかどうかを示すブール値。 |
|
この列がタプルのインラインまたはアウトラインのいずれに保存されるかを示すブール値。 |
|
この列が表の主キーの一部であるかどうかを示すブール値。 |
__TYPE=14(XlaConstants.CREATE_VIEW)
が指定されているメッセージは、マテリアライズド・ビューが作成されていることを示します。 表6-9に、CREATE_VIEW操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
__TYPE=15(XlaConstants.DROP_VIEW)
が指定されているメッセージは、マテリアライズド・ビューが削除されていることを示します。 表6-10に、DROP_VIEW操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
__TYPE=16(XlaConstants.CREATE_SEQ)
が指定されているメッセージは、順序が作成されていることを示します。 表6-11に、CREATE_SEQ操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
__TYPE=17(XlaConstants.DROP_SEQ)
が指定されているメッセージは、順序が削除されていることを示します。 表6-12に、DROP_SEQ操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
__TYPE=18(XlaConstants.TRUNCATE)
が指定されているメッセージは、表が切り捨てられていることを示します。表内のすべての行が削除されています。 表6-13に、TRUNCATE操作に対して生成されるMapMessage
に含まれている名前/値ペアを示します。
この項では、JMS/XLAに対するデータ型の考慮事項を説明します。
表6-14に、TimesTenでサポートされているデータ型に対するアクセス方法を示します。 データ型の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』のデータ型に関する項を参照してください。
表6-14 データ型のマッピング
TimesTenの列のデータ型 | MapMessageメソッドでの読取り |
---|---|
CHAR(n) |
|
VARCHAR(n) |
|
NCHAR(n) |
|
NVARCHAR(n) |
|
NVARCHAR2(n) |
|
DOUBLE |
|
FLOAT |
|
DECIMAL(p,s) |
アプリケーションで |
NUMERIC(p,s) |
アプリケーションで |
INTEGER |
|
SMALLINT |
|
TINYINT |
|
BIGINT |
|
BINARY(n) |
|
VARBINARY(n) |
|
DATE |
アプリケーションで |
TIME |
アプリケーションで |
TIMESTAMP |
アプリケーションで |
TT_CHAR |
|
TT_VARCHAR |
|
TT_NCHAR |
|
TT_NVARCHAR |
|
ORA_CHAR |
|
ORA_VARCHAR2 |
|
ORA_NCHAR |
|
ORA_NVARCHAR2 |
|
VARCHAR2 |
|
TT_TINYINT |
|
TT_SMALLINT |
|
TT_INTEGER |
|
TT_BIGINT |
|
BINARY_FLOAT |
|
BINARY_DOUBLE |
|
REAL |
|
NUMBER |
|
ORA_NUMBER |
|
TT_DECIMAL |
|
TT_TIME |
|
TT_DATE |
|
TT_TIMESTAMP |
|
ORA_DATE |
|
ORA_TIMESTAMP |
|
TT_BINARY |
|
TT_VARBINARY |
|
ROWID |
|
JMS/XLA APIのプログラミングを行う場合は、JMSクラスを使用できます。JMS/XLA APIでは、パブリッシュ/サブスクライブ・メッセージのみがサポートされています。 JMSクラスには、次のものがあります。
Message
(親クラスのみ)
TopicConnectionFactory
Topic
TopicSubscriber
Connection
Session
ConnectionMetaData
MapMessage
TopicConnection
TopicSession
ConnectionFactory
Destination
MessageConsumer
ExceptionListener
これらのクラスのドキュメントは、次の場所を参照してください。
TimesTen com.timesten.dataserver.jmsxla
パッケージには、TargetDataStore
インタフェースとTargetDataStoreImpl
クラスが含まれています。
詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』を参照してください。
このインタフェースは、ソース・データ・ストアからターゲット・データ・ストアにXLA更新レコードを適用するために使用されます。ソースおよびターゲット・データ・ストア・スキーマは、影響を受けた表で同一である必要があります。
このインタフェースは、表6-15で示されるメソッドを含みます。
表6-15 TargetDataStoreメソッド
メソッド | 説明 |
---|---|
|
XLA更新記述子をターゲット・データ・ストアに適用します。 |
|
データ・ストアへの接続をクローズし、リソースを解放します。 |
|
手動コミットを実行します。 |
|
自動コミット・フラグの値を返します。 |
|
データ・ストア接続文字列を返します。 |
|
更新の競合を確認するためのフラグの値を返します。 |
|
オブジェクトがクローズしているかどうかを確認します。 |
|
データ・ストアが有効かどうかを確認します。 |
|
最後のトランザクションをロールバックします。 |
|
適用時に自動コミットのフラグを設定します。 |
|
適用時の更新の競合の確認のフラグを設定します。 |
表6-16に、JMS/XLAで提供されているJMSのメッセージ・ヘッダー・フィールドを示します。