论坛首页 Java版 Hibernate

如何获知数据库变化?

浏览 5700 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-03-12
做“集成”商是吧?这种给别人“擦屁股”的事情很麻烦的。
最笨的方法——定时检查
   
0 请登录后投票
最后更新时间:2008-03-12
bookong 写道
做“集成”商是吧?这种给别人“擦屁股”的事情很麻烦的。
最笨的方法——定时检查


同意楼上,我们的系统也是这么做的,和其他产品集成,最难弄就是牵涉到数据同步问题,其他厂商的代码又不能改,那就只好麻烦点自己去做定时检查,具体怎么检查差异,还要看具体的表结构
   
0 请登录后投票
最后更新时间:2008-03-13
侦听+快照....
先把数据库的结构照下来存在数据字典表中
每过一段时间侦听一下数据库结构....
把两个数据比一下
如果有更新,数据库字典升级.
   
0 请登录后投票
最后更新时间:2008-03-13
抛出异常的爱 写道
侦听+快照....
先把数据库的结构照下来存在数据字典表中
每过一段时间侦听一下数据库结构....
把两个数据比一下
如果有更新,数据库字典升级.


个人倾向于加触发器。
侦听+快照------开销也太大了吧。
   
0 请登录后投票
最后更新时间:2008-03-13
以前用ofbiz(apache的一个开源项目)中的实体引擎有检测数据库是否变化的功能,如与配置文件中有差别会自动加入新增字段,可以看下实现方式,不过这个可能会和具体数据库相关,建议找一下这方面的现有工具,自己做可能没那么多精力。
   
0 请登录后投票
最后更新时间:2008-03-13
快照+定时检查,这个没有什么太好的办法,肉长在别人身上.如果你想实时地获得数据的话,可以写proxy,但是这个工作量就大了.
   
0 请登录后投票
最后更新时间:2008-03-13
呵呵,似乎也没什么好的办法。
擦屁股的也不容易啊
   
0 请登录后投票
最后更新时间:2008-03-13
gaoran2008 写道
抛出异常的爱 写道
侦听+快照....
先把数据库的结构照下来存在数据字典表中
每过一段时间侦听一下数据库结构....
把两个数据比一下
如果有更新,数据库字典升级.


个人倾向于加触发器。
侦听+快照------开销也太大了吧。

.....侦听表结构不像你想的那么大
有谁会开上万张表呢?
有几百张表加上字段.....有1W个字段了不得了.
而且....关键字like 'DY_%'
   
0 请登录后投票
最后更新时间:2008-03-13
你这个问题本身决定了中间层插不进去,只能从数据库层想办法

查一下 ETL 之类的资料
使用一现有的工具或按这些工具的思路自己开发

其实每个表的触发器大同小异,可以自己分析数据字典用工具生成的
不支持触发器的就只能快照了
   
0 请登录后投票
最后更新时间:2008-03-13
newfan 写道
最近在做一个项目,和其他厂商的产品做接口,我们这边需要知道其他产品的数据变化来做相应的处理。
然而其他厂商不会对自身产品修改,他们的数据库结构也不会修改。
我们面临着众多产品,众多数据库中的数据变化,查了很多东西,没有一个好的思路。
如果用触发器,就要为所有的表建立一个触发器和一个变化表,太麻烦。
网上还有说compass、hibernate的orm能感知数据变化,我没有看太多,不过我想这些应该是建立在中间层的东西,就是说要其他厂商改变他们的产品结构,不知道我说的对不对。

请教各位,大家有什么好的办法吗?


通过DatabaseMetadata动态创建所有触发器和变化表,最简单,又靠谱,还符合广大dba的习惯。
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐