ODI为XML数据同步提供了便利,可通过ODI将XML文件数据同步到其他的数据存储中。详细设置操作可见ODI的官方文档。
目前在实现XML数据同步到Oracle数据库的时候,遇到问题:当XML文件数据发生改变时,第一次执行,通常没能获取到实时的数据,即变更后的数据,在ODI同步时,不起作用。
以同步contry.xml为例子:
1、contry.xml文件结构如下
2、XML数据服务器的设置如下:
3、将contry.xml反向后,用ODI查看数据时如下:
4、将contry.xml文件中的loc变成SiChuan后,在ODI模型处查看xml存储,发现数据跟步骤3的一样,即ODI并没有及时将最新的数据反应到模型,跟ODI中对表存储的效果不一样;在接口中第一次执行时,若xml数据发生变更,也会出现此类情况;由此可能导致数据丢失遗漏;
Solution:
经过查阅资料,可通过XML数据服务器的JDBC中追加参数解决。
在JDBC的URL后面,添加上参数dod=yes,即可保证xml文件的数据实时同步。
解决的思路是:
利用了dod参数的原理,dod=yes,可将内存、驱动中的schema清理,上一次的缓存JDBC关闭时,自动会释放,保证了每次读取的数据都是实时最新的,若为大数据量的同步,会导致性能减弱。按照查阅到的资料,dod参数需放到整个url的最末端。I donot know why^^,测试下来,dod放在哪里目前都没影响数据。
相关资料如下:
https://forums.oracle.com/forums/thread.jspa?threadID=638547
http://docs.oracle.com/cd/E15985_01/doc.10136/user/e16274/xml/doc/driver_configuration.htm
http://docs.oracle.com/cd/E17904_01/integrate.1111/e12644/appendix_xml_driver.htm#CHDICHDB