创建索引
创建索引用来提升查询速度
MongoBD可以使用js语句,插入十万条数据到数据库中
for(i=0;i<100000;i++){db.t255.insert({name:'test'+i,age:i})}
-
查看没建立索引之前查询时间
.explain("executionStats")
可以看到查询时间为45毫秒 -
按照名字建立索引
可以看到建立索引之前有一个索引,那是_id,建立之后有两个索引 -
再查询
建立索引之后,查询时间0毫秒
索引
- 在默认情况下索引字段值可以相同
- 创建唯一索引
db.t.ensureIndex({"name":1},{"unique":ture})
- 建立联合索引
db.ensureIndex({name:1,age:1})
- 查看当前所有索引
db.t.getIndexes()
- 删除索引
db.t.dropIndex("索引名")
爬虫去重
- 使用数据库建立关键字段的唯一索引进行去重
- 根据url地址去重
- 拿到对应的数据是不会变的,url地址能唯一判断一条数据的情况
- url存在redis中
- 拿到url地址,判断url在redis中的url集合是否存在
- 存在:说明url地址已经被请求过,所以不请求了
- 不存在:没爬过,去爬
- 布隆过滤器:
- 使用加密地址加密url地址,得到多个值
- 往对应值的位置把结果设置为1
- 新来的url地址,如果对应位置的值也是为1,说明这个url地址已经抓过
- 根据数据样本进行去重
- 选择特定的字段,使用加密算法md5,进行字段加密,生成字符串,存入redis中
- 后续新来的一条数据,同样的方法加密,如果得到的字符串在redis中,则数据存在