ES(elasticsearch)
概念:
1、elasticsearch是一个基于Lucene的高扩展的分布式搜索服务器,支持开箱即用。
2、elasticsearch隐藏了Lucene的复杂性,对外提供Restful 接口来操作索引、搜索。
突出优点:
1.扩展性好,可部署上百台服务器集群,处理PB级数据。
2.近实时的去索引数据、搜索数据。
逻辑结构部分是一个倒排索引表:
1、将要搜索的文档内容分词,所有不重复的词组成分词列表。
2、将搜索的文档最终以Document方式存储起来。
3、每个词和docment都有关联。
应用方式:
1)用户在前端搜索关键字
2)项目前端通过http方式请求项目服务端
3)项目服务端通过Http RESTful方式请求ES集群进行搜索
4)ES集群从索引库检索数据。
索引
索引的概念:
索引是一种单独的、物理的
对数据库表中一列或多列的值进行排序的一种存储结构,
它是某个表中一列或若干列值的集合和
相应的指向表中物理标识这些值的数据页的逻辑指针清单。
索引的作用相当于目录,可以根据目录中的页码快速找到所需的内容。
索引的作用:
加快查找效率.减慢插入和删除,修改效率.(需要同步调整索引结果)
正排索引:
在某些书籍后的附录页中类似于关键词按照单词字母排序形成的目录,这样目录其实就是一个索引,指向了具体的页码
倒排索引:
1. 单词的词典:记录了所有的单词,形成一个列表,至于这个单词的拆分粒度可以根据具体需求实现。
单词词典一般都比较大,可以通过B+树或者哈希链表进行实现,以满足高性能的插入于查询
2. 倒排列表:主要记录单词于对应的文档之间的关系,他们之间的关系中的属性称之为倒排索引项,
倒排索引项包括文档的id、词频(单词在文档中出现的次数,可用于相关度的计算)、
单词在文档中的位置、单词的起始位置和结束的位置
添加索引:
1、使用CREATE INDEX语句
CREATE INDEX [<索引名>] ON <表名> (<列名> [<长度>] [ ASC | DESC])
2.使用 CREATE TABLE 语句
1)创建主键索引
CONSTRAINT PRIMARY KEY [索引类型] (<列名>,…)
2)创建一般索引
KEY | INDEX [<索引名>] [<索引类型>] (<列名>,…)
3)创建唯一性索引
UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)
4)创建外键索引
FOREIGN KEY <索引名> <列名>
视图
概念:
视图是基于SQL语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。
视图中的字段就是来自一个或多个数据库中的真实的表中的字段。只保存SQL逻辑,不保存查询结果 。
一般用于会在多个地方用到同样的查询结果,或者该查询结果使用的SQL语句较复杂。
使用场景:
对复杂查询简化操作,并且不会对数据进⾏修改的情况下可以使⽤视图。