锁定老帖子 主题:java如何做到实时-----两种方案
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-11
我记得以前javaeye上有个兄弟说他准备在mysql上加上监听器 mysql任何操作都可以触发监听器然后响应事件 不知道现在开发进度如何了
|
|
返回顶楼 | |
发表时间:2009-11-11
jenlp520 写道 我记得以前javaeye上有个兄弟说他准备在mysql上加上监听器 mysql任何操作都可以触发监听器然后响应事件 不知道现在开发进度如何了 触发器嘛? 第一性能有问题 第二就是有时候还不触发,不知道你碰没碰到过,一般一个系统不提倡用触发器的,除非特殊情况下。 |
|
返回顶楼 | |
发表时间:2009-11-11
F.B.I 写道 今天老大提出这样的需求:"数据库新增了数据就要及时通知应用层做一系列的处理"
针对这需求我觉得应该分为两种方案: 如有更好的欢迎大家指教 第一: SQL+存储过程+触发器+DLL调用的方法来实现数据实时 第二: 后台弄一个线程做定时查询(例如1秒钟2次查询),但这里就涉及到性能的问题,对于庞大的数据量我觉得有个方案 做个临时表 比如A表是原来的数据库表 那么把一个小时(时间自定)内的数据放到临时B表里,每隔1小时清空B表里的数据,要数据就索引B表里的数据,然后再做相应的处理 感觉包括楼主在内的许多人对于这样一种“需求”的不正确理解。首先要问楼主的是,所谓的数据库新增数据的行为是如何产生的?在实际的生成环境中会允许人直接使用SQL或者SQL工具对数据库的数据进行更新操作么?(就算是datapatch,也会有一定的折中处理方式吧)。遇到这样的需求,其实楼主要找到的方案应该是从控制数据库的访问入手,比如如果是通过程序,则进行程序的统一拦截,如果是来自于其他系统或者数据库的stream复制,则可以通过触发消息机制。不应该从数据库本身的角度入手去通过什么触发器然后调用DLL方法什么的,这其实是一个方向性的失误的。 至于频繁到1,2秒的轮询,更加是不可取的方案。 |
|
返回顶楼 | |
发表时间:2009-11-11
选择特定的数据库,比如MS SQL 2005,就实现了通知。
|
|
返回顶楼 | |
发表时间: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人的无奈吧。你的这办法非常好,谢谢 |
|
返回顶楼 | |
发表时间:2009-11-12
自行实现一个简单的JDBC代理,想干嘛都行了。
老是爱折腾.. |
|
返回顶楼 | |
发表时间:2009-11-12
代理模式 搞定。。但是不能响应手动的数据操作
|
|
返回顶楼 | |
发表时间:2009-11-12
如果楼主能控制所有访问该数据库的应用程序的话,如果同构,建议统一数据访问层;如果异构,需要修改应用程序,加入消息机制。
如果楼主没有办法控制其他访问该数据库的应用程序,个人觉得楼主的方案1比较合理一些。 |
|
返回顶楼 | |
发表时间:2009-11-12
F.B.I 写道 jenlp520 写道 我记得以前javaeye上有个兄弟说他准备在mysql上加上监听器 mysql任何操作都可以触发监听器然后响应事件 不知道现在开发进度如何了
触发器嘛? 第一性能有问题 第二就是有时候还不触发,不知道你碰没碰到过,一般一个系统不提倡用触发器的,除非特殊情况下。 NO NO NO 不是触发器 |
|
返回顶楼 | |
发表时间:2009-11-12
Dreamer 写道 如果楼主能控制所有访问该数据库的应用程序的话,如果同构,建议统一数据访问层;如果异构,需要修改应用程序,加入消息机制。
如果楼主没有办法控制其他访问该数据库的应用程序,个人觉得楼主的方案1比较合理一些。 触发器一个很大的弊端 就是性能问题。 |
|
返回顶楼 | |