首页 新闻 会员 周边 捐助

数据重复问题!!求思路``winform`内详``高人人帮帮忙

0
悬赏园豆:50 [已解决问题] 解决于 2012-08-14 03:01

程序是winform 远程数据库!!

 

A用户 采集www.baidu.com/1.html 页面! 向远程数据库保存该地址!

正常情况下,B用户采集www.baidu.com/1.html 是会提示数据以存在的!

但现在遇到如果A用户在采集时尚未保存该地址!!!

B用户这时候采集 www.baidu.com/1.html  就会重复了! winform这种情况怎么处理呢??怎么才可以确保不采集重复呢??

c#小菜菜xx10的主页 c#小菜菜xx10 | 初学一级 | 园豆:28
提问于:2012-08-08 22:08
< >
分享
最佳答案
0

你现在是要避免用户重复进行采集呢?还是要避免不同用户采集到相同信息后都保存到了远程数据库中?

这两者的区别在与:

前者是在采集阶段就避免用户采集重复地址的数据;

后者不对所采集做限制,不同用户采集回来的数据可能是重复的,但是在用户把数据提交给远程数据库时,再进行过滤

收获园豆:20
八戒的师傅 | 小虾三级 |园豆:1472 | 2012-08-08 23:48

是避免用户重复进行采集!

集阶段就避免用户采集重复地址的数据! 这里很纠结! 

因为A用户 和别的用户采集时可能存在时间差!  导致A用户还没保存哈希值!

B就已经对页面进行采集了·这样就会导致用户采集重复的地址

c#小菜菜xx10 | 园豆:28 (初学一级) | 2012-08-11 02:32

@c#小菜菜xx10: 正如其他人所说,把地址缓存起来不就好了吗?有什么问题

八戒的师傅 | 园豆:1472 (小虾三级) | 2012-08-11 11:19

@八戒的师傅:  时间差问题呢!

c#小菜菜xx10 | 园豆:28 (初学一级) | 2012-08-11 21:20

@c#小菜菜xx10: 在服务器进行内存中缓存地址还要考虑时间差的问题?如果要考虑,那应该考虑,A采集了X地址了,但是没有采集成功,这是B发现X地址已经被采集了,所以不会进行再次采集,要解决这个逻辑

八戒的师傅 | 园豆:1472 (小虾三级) | 2012-08-12 00:36
其他回答(4)
0

“但现在遇到如果A用户在采集时尚未保存该地址!!!”这句话可以理解为  此时还未向数据库表中插入这条记录是吧。  此时,B用户采集与A用户相同数据   这时是B用户点击保存就提示数据重复么?还是什么意思?

在用户采集数据后点保存时先判断下,如果存在,就不保存。

收获园豆:1
icyme | 园豆:77 (初学一级) | 2012-08-08 22:55

是避免用户重复进行采集!

集阶段就避免用户采集重复地址的数据! 这里很纠结! 

因为A用户 和别的用户采集时可能存在时间差!  导致A用户还没保存哈希值!

B就已经对页面进行采集了·这样就会导致用户采集重复的地址

支持(0) 反对(0) c#小菜菜xx10 | 园豆:28 (初学一级) | 2012-08-11 02:33
0

数据库中,保存页面的路径来做判断吧

收获园豆:7
唯吴独尊 | 园豆:707 (小虾三级) | 2012-08-10 09:02

是避免用户重复进行采集!

集阶段就避免用户采集重复地址的数据! 这里很纠结! 

因为A用户 和别的用户采集时可能存在时间差!  导致A用户还没保存哈希值!

B就已经对页面进行采集了·这样就会导致用户采集重复的地址

支持(0) 反对(0) c#小菜菜xx10 | 园豆:28 (初学一级) | 2012-08-11 02:33
0

可以在服务器端使用缓存对每次采集的地址做个添加,这样在每次采集之前使用地址查找一下是否已经查找过了

收获园豆:1
木蚂蚁 | 园豆:245 (菜鸟二级) | 2012-08-11 10:07

SQL Server  做缓存?还是?

支持(0) 反对(0) c#小菜菜xx10 | 园豆:28 (初学一级) | 2012-08-11 21:20

@c#小菜菜xx10: 不用数据库也可以,直接使用服务器缓存就可以了,如果使用数据库的话可以在设计的时候对采集状态也进行管理

支持(0) 反对(0) 木蚂蚁 | 园豆:245 (菜鸟二级) | 2012-08-13 10:01
0

采集之前校验,与采集保存同时校验,放于一个事务,直接锁定数据

收获园豆:20
hellen1231 | 园豆:229 (菜鸟二级) | 2012-08-13 20:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册