solr跟数据库的区别

(1)问题分析

这个问题有待商榷,solr是搜索引擎,而数据库是一个文件系统,本身就不是一个类型的东西,何谈区别?考官应该是想考察solr索引库、以及数据库的区别。那首先就要搞清楚,什么是索引库?为什么要建立索引库?索引库有什么好处?数据存在数据库与索引库有什么区别?

(2)核心答案讲解

数据库,简而言之可视为电子化的文件柜—存储电子文件的处所,用户可以对文件中的数据进行新增、截取、修改、删除等操作。
索引库,可以理解为索引的集合。那么为什么要有索引?索引是为了提高查询数据库的效率,就好比一本书,如果没有目录,岂不是很麻烦?索引库就是索引的集合。
所以,弄明白什么是数据库,什么是索引库之后,他们俩我的区别也就迎刃而解了。索引库的存在是基于数据库的,为了提高查询效率,我们要建立索引,索引太多,我们要统一管理,所以有了索引库。

(3)问题扩展

索引的原理:对要查询的字段建立索引其实就是把该字段按照一定的方式排序;建立的索引只对该字段有用,如果查询的字段改变,那么这个索引也就无效了,比如图书馆的书是按照书名的第一个字母排序的,那么你想要找作者叫张三的就不能用改索引了;还有就是如果索引太多会降低查询的速度
索引的优缺点: 首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。
那么在任何时候都应该加索引么?
这里有几个反例:
1)如果每次都需要取到所有表记录,无论如何都必须进行全表扫描了,那么是否加索引也没有意义了。
2)对非唯一的字段,例如“性别”这种大量重复值的字段,增加索引也没有什么意义。
3)对于记录比较少的表,增加索引不会带来速度的优化反而浪费了存储空间,4)因为索引是需要存储空间的,而且有个致命缺点是对于update/insert/delete的每次执行,字段的索引都必须重新计算更新。所以并不是任何情况下都改建立索引的

(4)结合项目中使用

在实际项目中,当数据量特别大,数据库查询速度较慢的时候,我们可以建立索引,提高查询效率。在电商项目中,当我们在前台页面搜索商品名称关键词时, 我们这时是在Solr库中去查找相应的商品信息, 然后将搜索关键词高亮.那么Solr库中的商品信息又是如何添加的呢?

当我们在给商品上架的时候, 将商品信息update 到MySQL数据库中的商品表中, 然后同样的将相应的信息 添加到Solr库中。

点击此处
隐藏目录