ロードシェアでのレプリケーションは、DSI単位に行います。
以下に、DSI単位に独立してレプリケーションを行う場合の運用例を示します。あわせて、抽出定義とDBサービス定義の関係を示します。
図6.3 DSI単位に独立してレプリケーションを行う場合の運用例
DSI単位のレプリケーションでの抽出定義とDBサービス定義は、以下の方法で行います。
DSI単位に抽出定義を行います。定義はDSIが偏在しているノードで行います。
抽出定義では、表のDSI名(キーワード“DSI”)で抽出対象のDSI名を指定します。
全複写のDBサービス定義を以下の方法で行います。
DSI単位にDBサービス定義を行います。定義はDSIが偏在しているノードで行います。
OUTTABLE定義文のDSIオペランドに格納対象のDSI名を指定します。
一括差分複写のDBサービス定義を以下の方法で行います。
DSI単位にDBサービス定義を行います。定義はDSIが偏在しているノードで行います。
OUTTABLE定義文のDSIオペランドは指定することができません。
以下のデータベース間で、DSI単位のレプリケーションを行います。
[複写元データベース]
データベース名 | 社員管理データベース |
スキーマ名 | 社員スキーマ |
表名 | 社員表 |
DSI名 | 社員表DSI1(偏在先ノード:NODE1) |
社員表DSI2(偏在先ノード:NODE2) | |
社員表DSI3(偏在先ノード:NODE3) |
[複写先データベース]
データベース名 | 社員管理データベース |
スキーマ名 | 社員スキーマ |
表名 | 社員表 |
DSI名 | 社員表DSI1(偏在先ノード:NODE4) |
社員表DSI2(偏在先ノード:NODE5) | |
社員表DSI3(偏在先ノード:NODE5) |
“NODE1”での定義例を以下に示します。
“NODE2”と“NODE3”では、それぞれ“社員表DSI2”と“社員表DSI3”に対して抽出定義を行います。
EPNAME = 社員管理抽出定義 REPTYPE = COPY DBMSKIND = SYMFO INCODE = EUC-S90 DATABASE = 社員管理データベース SCHEMA = 社員スキーマ TABLE = 社員表 DSI = 社員表DSI1 LOGPATH = /home/work/logdata_db01/ LOGSIZE = 1024 LOGWARN = 70 OUTCODE = EUC-S90 DIFFTYPE = OPEN
“NODE4”での定義例を以下に示します。
“NODE5”では、“社員表DSI2”と“社員表DSI3”に対して、全複写のDBサービス定義を行います。また、“社員表DSI2”と“社員表DSI3”に対して、一括差分複写のDBサービス定義を行います。
[全複写のDBサービス定義]
INTABLE NAME = INEMPA1 DATATYPE = (local-member, non-attribute add null field) CODE = euc-s90 ITEM = ((@DBOP, sint except null field), (ITEM1, sint), (ITEM2, nchar(10))) FILE = /home/work/str011
OUTTABLE NAME = OUTEMPA1 DATATYPE = (database, symfoware/rdb) EXTRACT = EXTEMPA1 CODE = euc-s90 DATABASE = 社員管理データベース SCHEMA = 社員スキーマ TABLE = 社員表 DSI = (社員表DSI1) ITEM = (@DBOP, 社員番号, 名前) LOADMODE = (difference, load)
EXTRACT NAME = EXTEMPA1 INTABLE = INEMPA1 CONVERT = on SELECT = *
[一括差分複写のDBサービス定義]
INTABLE NAME = INEMPD1 DATATYPE = (local, non-attribute add null field) CODE = euc-s90 ITEM = ((@DBOP, sint except null field), (ITEM1, sint), (ITEM2, nchar(10))) FILE = /home/work/str012
OUTTABLE NAME = OUTEMPD1 DATATYPE = (database, symfoware/rdb) EXTRACT = EXTEMPD1 CODE = euc-s90 DATABASE = 社員管理データベース SCHEMA = 社員スキーマ TABLE = 社員表 ITEM = (@DBOP, 社員番号, 名前) LOADMODE = (difference, load)
EXTRACT NAME = EXTEMPD1 INTABLE = INEMPD1 CONVERT = on SELECT = *