论坛首页 Java企业应用论坛

java如何做到实时-----两种方案

浏览 20129 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-11-11  
我记得以前javaeye上有个兄弟说他准备在mysql上加上监听器 mysql任何操作都可以触发监听器然后响应事件 不知道现在开发进度如何了
0 请登录后投票
   发表时间:2009-11-11  
jenlp520 写道
我记得以前javaeye上有个兄弟说他准备在mysql上加上监听器 mysql任何操作都可以触发监听器然后响应事件 不知道现在开发进度如何了

触发器嘛? 第一性能有问题 第二就是有时候还不触发,不知道你碰没碰到过,一般一个系统不提倡用触发器的,除非特殊情况下。
0 请登录后投票
   发表时间:2009-11-11  
F.B.I 写道
今天老大提出这样的需求:"数据库新增了数据就要及时通知应用层做一系列的处理"

针对这需求我觉得应该分为两种方案: 如有更好的欢迎大家指教

第一:
      SQL+存储过程+触发器+DLL调用的方法来实现数据实时

第二:
     后台弄一个线程做定时查询(例如1秒钟2次查询),但这里就涉及到性能的问题,对于庞大的数据量我觉得有个方案
     做个临时表
      比如A表是原来的数据库表 那么把一个小时(时间自定)内的数据放到临时B表里,每隔1小时清空B表里的数据,要数据就索引B表里的数据,然后再做相应的处理
    

     感觉包括楼主在内的许多人对于这样一种“需求”的不正确理解。首先要问楼主的是,所谓的数据库新增数据的行为是如何产生的?在实际的生成环境中会允许人直接使用SQL或者SQL工具对数据库的数据进行更新操作么?(就算是datapatch,也会有一定的折中处理方式吧)。遇到这样的需求,其实楼主要找到的方案应该是从控制数据库的访问入手,比如如果是通过程序,则进行程序的统一拦截,如果是来自于其他系统或者数据库的stream复制,则可以通过触发消息机制。不应该从数据库本身的角度入手去通过什么触发器然后调用DLL方法什么的,这其实是一个方向性的失误的。
     至于频繁到1,2秒的轮询,更加是不可取的方案。
0 请登录后投票
   发表时间:2009-11-11  
选择特定的数据库,比如MS SQL 2005,就实现了通知。
0 请登录后投票
   发表时间:2009-11-12  
凤舞凰扬 写道
F.B.I 写道
今天老大提出这样的需求:"数据库新增了数据就要及时通知应用层做一系列的处理"

针对这需求我觉得应该分为两种方案: 如有更好的欢迎大家指教

第一:
      SQL+存储过程+触发器+DLL调用的方法来实现数据实时

第二:
     后台弄一个线程做定时查询(例如1秒钟2次查询),但这里就涉及到性能的问题,对于庞大的数据量我觉得有个方案
     做个临时表
      比如A表是原来的数据库表 那么把一个小时(时间自定)内的数据放到临时B表里,每隔1小时清空B表里的数据,要数据就索引B表里的数据,然后再做相应的处理
    

     感觉包括楼主在内的许多人对于这样一种“需求”的不正确理解。首先要问楼主的是,所谓的数据库新增数据的行为是如何产生的?在实际的生成环境中会允许人直接使用SQL或者SQL工具对数据库的数据进行更新操作么?(就算是datapatch,也会有一定的折中处理方式吧)。遇到这样的需求,其实楼主要找到的方案应该是从控制数据库的访问入手,比如如果是通过程序,则进行程序的统一拦截,如果是来自于其他系统或者数据库的stream复制,则可以通过触发消息机制。不应该从数据库本身的角度入手去通过什么触发器然后调用DLL方法什么的,这其实是一个方向性的失误的。
     至于频繁到1,2秒的轮询,更加是不可取的方案。


我说下我的观点:
              1.这位兄弟,感觉你的说话思路很清晰、也许这么弄会更好
              2.这只是老大要我帮他的,我搞java他弄c++具体的实现不由我来。如果是我弄,那我肯定不是数据库 开始,所以当别人手下难啊。也许是IT人的无奈吧。你的这办法非常好,谢谢
0 请登录后投票
   发表时间:2009-11-12  
自行实现一个简单的JDBC代理,想干嘛都行了。

老是爱折腾..
0 请登录后投票
   发表时间:2009-11-12  
代理模式 搞定。。但是不能响应手动的数据操作
0 请登录后投票
   发表时间:2009-11-12  
如果楼主能控制所有访问该数据库的应用程序的话,如果同构,建议统一数据访问层;如果异构,需要修改应用程序,加入消息机制。
如果楼主没有办法控制其他访问该数据库的应用程序,个人觉得楼主的方案1比较合理一些。
0 请登录后投票
   发表时间:2009-11-12  
F.B.I 写道
jenlp520 写道
我记得以前javaeye上有个兄弟说他准备在mysql上加上监听器 mysql任何操作都可以触发监听器然后响应事件 不知道现在开发进度如何了

触发器嘛? 第一性能有问题 第二就是有时候还不触发,不知道你碰没碰到过,一般一个系统不提倡用触发器的,除非特殊情况下。



NO NO NO 不是触发器
0 请登录后投票
   发表时间:2009-11-12  
Dreamer 写道
如果楼主能控制所有访问该数据库的应用程序的话,如果同构,建议统一数据访问层;如果异构,需要修改应用程序,加入消息机制。
如果楼主没有办法控制其他访问该数据库的应用程序,个人觉得楼主的方案1比较合理一些。



触发器一个很大的弊端 就是性能问题。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics