如题,最近想学习这方面的知识,想问下当数据采集时,假如发现已经采集过了如何处理?每次插入前判断是否存在吗?但是我感觉这样不这么好,很多存在的重复采集太浪费资源了吧?求大神赐教好的办法!
不判断怎么知道有没有采集过?
我现在就是没想到应该怎么判断才好,还有就是判断存在后是否继续往下采集..
提问时,别着急,先把问题描述清楚。
你说假如发现已经采集过了,当你得到一条信息时,你如何判断是已经采集过的呢?
其次,写入前判断的问题,其实还是一样的问题,你如何判断这是一条已经采集并存储了的信息?
这里,采集和存储是两个过程。要么在采集的时候,比对已经存储的数据;要么先采集,再来比对哪些数据需要存储。两种方法都有很大的运算量。
因此,你应该考虑一下逐一比较以外的办法,比如时间标签之类的。
我现在想到的就是把所有唯一标识保存到库或者程序中,这样每次采集的结果在拿出来判断,还有就是一般采集的都是从新到旧,当触碰到旧的数据发现重复时,是否要停止采集?求比较好的判断解决方案.
当然要判断了,不过这个判断已经是很成熟的算法了,参看布隆过滤器:http://www.dbafree.net/?p=36 。
多谢链接,看了下正好就是我想要的东西, 只不过示例代码的Java写的,在C#里面没用过那东西,感觉跟List的集合一样的,那样在下次启动程序时是否会丢失?本人新手,如表述不清望海涵。
多了,还有我现在的一个就是存到数据库中,但是就是感觉存数据库中,每次爬都需要重新查询一次,效率肯定不行,随着时间的增加数据越来越大,查询也会更慢,那程序不也越来越来,但是存哪里面安全,不会重复,重新启动程序也不会丢失。