9.4.6.2 カスタム・データ変換の開発
カスタム・データ変換の実装は、次の例で示すように、マッチャ・インタフェースとコンバータ・インタフェースを実装することで実現できます。
Replicatプロセスの間に機密フィールドの値をマスクするというシナリオについて考えてみます。- ターゲット列(次の基準に一致する)を構成します:
- カタログ名:
Cat1 - スキーマ名:
Sch1 - 表名:
Sample_Table - 列名:
Sample_Column
- カタログ名:
- 変換の実装を含めてコンバータを構成します。
- 前述の条件に一致した列の列値を、マスクした値に置き換えます
@Matcher(id = "matcher1", description = "Custom target column matcher.")
public class CustomTargetMatcher implements TargetMatcher {
@Override
public boolean matches(final TableMetaData tableMetaData) {
return tableMetaData.getCatalogName().equals("Cat1") && tableMetaData.getSchemaName().equals("Sch1") && tableMetaData.getTableName().equals("Sample_Table");
}
@Override
public boolean matches(final ColumnMetaData columnMetaData) {
return columnMetaData.getColumnName().equals("Sample_Column");
}
}
@Converter(id = "converter1", description = "Custom data converter.")
public class CustomConverter implements DataConverter {
public String convert(String originalData, final TableMetaData tableMetaData, final ColumnMetaData columnMetaData) {
return "********"; // Masked Value
}
}
この実装のアダプタ・プロパティ
gg.transforms=t1 # This config corresponds to the @Matcher => id param gg.transform.t1.matcher=matcher1 # This config corresponds to the @Converter => id param gg.transform.t1.converter=converter1
カスタム・クラスを使用するには:
カスタム・クラスをJARに配置し、それらをクラスパスに含めます。Javaプロパティ(jvm.bootoptionsプロパティでのjava.class.pathを使用)を使用して、またはgg.classpathで、カスタムJARファイルをJVMクラスパスに含めます。
親トピック: データ変換の構成