这几天上班都在搞oracle的分布式调用,解决实际的问题, A部门的一个业务流程需要B部门数据库的数据,或者C部门的一个流程需要A,B部门数据库的数据。
所以自己也摸索了下解决这种问题的方法:
1. 利用 oracle 数据库 提供的 DB_link方式 来实现调用不同的目标数据库,通过各个目标数据库服务器所在的IP地址访问。
2. 在程序中控制,比如在一个sevices类中,调用不同的 注册 了不同sessionFactory 的 datasource 的 dao 实现类, 来取得你需要的数据。
那么这两种方式各有什么优点缺点呢?
我是这么想的: 不知道对不对,
1.性能方面: dblink的方式只需要一条sql语句,也就是说只需要连接一次数据库,显然通过注册不同的数据源的 方式 是显然要连接多次数据库的。所以性能方面,不考虑特殊情况的话, dblink的方式应该是比较好的。
2.可维护性: dblink方式直接脱离了程序,只在数据库方面操作。将来有什么变动,直接改sql语句就行了。而注册不同数据源的方式 显然是要改很多地方的。
3.不过注册不同数据源的方式,在处理比较复杂的业务问题的时候,比dblink方式更具有灵活性。
我就想到了这些!呵呵!
所以自己也摸索了下解决这种问题的方法:
1. 利用 oracle 数据库 提供的 DB_link方式 来实现调用不同的目标数据库,通过各个目标数据库服务器所在的IP地址访问。
2. 在程序中控制,比如在一个sevices类中,调用不同的 注册 了不同sessionFactory 的 datasource 的 dao 实现类, 来取得你需要的数据。
那么这两种方式各有什么优点缺点呢?
我是这么想的: 不知道对不对,
1.性能方面: dblink的方式只需要一条sql语句,也就是说只需要连接一次数据库,显然通过注册不同的数据源的 方式 是显然要连接多次数据库的。所以性能方面,不考虑特殊情况的话, dblink的方式应该是比较好的。
2.可维护性: dblink方式直接脱离了程序,只在数据库方面操作。将来有什么变动,直接改sql语句就行了。而注册不同数据源的方式 显然是要改很多地方的。
3.不过注册不同数据源的方式,在处理比较复杂的业务问题的时候,比dblink方式更具有灵活性。
我就想到了这些!呵呵!