数据库中某张表的数据有变动时,立即告知客户端,刷新页面?

ian003 发布于 2013/12/03 11:27
阅读 1K+
收藏 0
Java Web项目,现在的情况是,只能查询到数据库里这张表的数据,增删改的方法都是别人的,看不到。当这张表中发生增删改的操作时(如何判断是操作的哪一条数据呢?),调用java程序反馈给客户端,刷新页面。用Ajax在页面定时调用查询数据库的方法,然后做对比 (怎么效率的得到操作的记录呢)?这个怎么做?哪位大神给个好的解决办法啊!
加载中
1
欢乐的财神
欢乐的财神

你说的这种情况我经常遇到

一般发生在你的数据是部分集成别人的,但是别人根本不鸟你,也不配合你,有了数据更新从不告诉你。

我的做法是

1、假设数据是增加的(如日志、采集消息等),我就数数个数,看看是否发生变化,或者数据有明确的递增字段(如ID或datetime),我就where xxx>'xxx',也就是按照目前的数据做个标准,只看以后的

2、假设数据是修改的,一般这类数据也分几种

(1)源数据很少,你的程序常常要考虑几乎全体的数据,那么你可以后台定期的刷新对比

(2)源数据很多,你的程序常常只看其中的一部分或者明确的那么几条,那么你可以有选择的check那几条

(3)源数据很多,你的程序需要汇总结果(或者其他的要考虑每一项的例子),其中的改动项会影响到汇总,这时你需要更高级的方法

(4)源数据很多,你的程序详细的反映每个数据的细节,这说明你的程序设计错了,你不应该把涉及这么多细节的数据放在同一个页面上,用户也看不过来,况且这些数据还不是你自己的,你需要更改设计

3、一些更高级的方法

(1)数据的变更通常不是孤立的,仔细研究下原来系统的特点,看看哪些地方可以间接的表明数据发生了变化,如果你讲究一点,可以建立一整套日志(仅在研究时运行,不耽误生产环境下的性能),详细记录数据的变化特色,这属于数据挖掘哦。

(2)数据的变更常常是有预兆的,常常根据业务的特点,某些事情的发生理论上很可能导致其他事情的发生,而这些事情很可能是在你自己的程序上发生的,比如一个用户在你的程序上查询了A条目,那么可以假设他可能去原来的程序上修改A条目,等等

(3)无论你采用什么方式和假设,每检查一个周期(比如10次),都来一次全数据匹配作为那些“投机取巧"的有力补充,保证数据终究能得到更新

在得不到别人的配合甚至在未经别人的允许下集成别人的数据,是一门学问,值得深入的研究和学习,的此法,你会发现你获得了空前的自由!!

ian003
ian003
我试试,谢谢
0
酒逍遥
酒逍遥
创建 触发器....在增删改 的操作完成后...触发对应的操作...触发器里应该可以拿到对应的数据
ian003
ian003
不想这样弄
0
豆豆熊
豆豆熊
数据库有种功能叫 CHANGE NOTIFICATION 或者订阅
ian003
ian003
没听过
0
loyal
loyal
还不如定时去刷新呢~~~搞那么复杂J8的玩意有毛用.
ian003
ian003
0
恺哥
ian003
ian003
0
luokery
luokery
web sockets , 我只知道这个可以实现, 但不会.
ian003
ian003
不会
0
zn123
zn123

反正是别人的数据库

刷挂了它

ian003
ian003
不敢...
返回顶部
顶部