程序是winform 远程数据库!!
A用户 采集www.baidu.com/1.html 页面! 向远程数据库保存该地址!
正常情况下,B用户采集www.baidu.com/1.html 是会提示数据以存在的!
但现在遇到如果A用户在采集时尚未保存该地址!!!
B用户这时候采集 www.baidu.com/1.html 就会重复了! winform这种情况怎么处理呢??怎么才可以确保不采集重复呢??
你现在是要避免用户重复进行采集呢?还是要避免不同用户采集到相同信息后都保存到了远程数据库中?
这两者的区别在与:
前者是在采集阶段就避免用户采集重复地址的数据;
后者不对所采集做限制,不同用户采集回来的数据可能是重复的,但是在用户把数据提交给远程数据库时,再进行过滤
是避免用户重复进行采集!
集阶段就避免用户采集重复地址的数据! 这里很纠结!
因为A用户 和别的用户采集时可能存在时间差! 导致A用户还没保存哈希值!
B就已经对页面进行采集了·这样就会导致用户采集重复的地址
@c#小菜菜xx10: 正如其他人所说,把地址缓存起来不就好了吗?有什么问题
@八戒的师傅: 时间差问题呢!
@c#小菜菜xx10: 在服务器进行内存中缓存地址还要考虑时间差的问题?如果要考虑,那应该考虑,A采集了X地址了,但是没有采集成功,这是B发现X地址已经被采集了,所以不会进行再次采集,要解决这个逻辑
“但现在遇到如果A用户在采集时尚未保存该地址!!!”这句话可以理解为 此时还未向数据库表中插入这条记录是吧。 此时,B用户采集与A用户相同数据 这时是B用户点击保存就提示数据重复么?还是什么意思?
在用户采集数据后点保存时先判断下,如果存在,就不保存。
是避免用户重复进行采集!
集阶段就避免用户采集重复地址的数据! 这里很纠结!
因为A用户 和别的用户采集时可能存在时间差! 导致A用户还没保存哈希值!
B就已经对页面进行采集了·这样就会导致用户采集重复的地址
数据库中,保存页面的路径来做判断吧
是避免用户重复进行采集!
集阶段就避免用户采集重复地址的数据! 这里很纠结!
因为A用户 和别的用户采集时可能存在时间差! 导致A用户还没保存哈希值!
B就已经对页面进行采集了·这样就会导致用户采集重复的地址
可以在服务器端使用缓存对每次采集的地址做个添加,这样在每次采集之前使用地址查找一下是否已经查找过了
SQL Server 做缓存?还是?
@c#小菜菜xx10: 不用数据库也可以,直接使用服务器缓存就可以了,如果使用数据库的话可以在设计的时候对采集状态也进行管理
采集之前校验,与采集保存同时校验,放于一个事务,直接锁定数据