您的位置:首页 > 娱乐 > 八卦 > crm系统免费_百姓装潢上海门店具体地址_网站推广的作用_公司网页设计

crm系统免费_百姓装潢上海门店具体地址_网站推广的作用_公司网页设计

2024/12/28 6:54:30 来源:https://blog.csdn.net/u013517797/article/details/144310481  浏览:    关键词:crm系统免费_百姓装潢上海门店具体地址_网站推广的作用_公司网页设计
crm系统免费_百姓装潢上海门店具体地址_网站推广的作用_公司网页设计

接上篇《2、正向索引和倒排索引》
上一篇我们学习了什么是正向索引和倒排索引。本篇我们来学习Elasticsearch与Mysql的概念与区别。

一、文档

Elasticsearch是面向文档存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序列化为json格式后存储在Elasticsearch中。

例如下面数据库的商品价格表中存储的4条数据,在序列化为json后的格式如下:

可以看到ES与Mysql数据库表数据格式的差异还是比较大的。

二、索引

索引(index)是相同类型的文档的集合。在Elasticsearch中,文档肯定不止一条,会有多条,这些n多的文档之间,是有差异的,如下面这些离散的各个文档:

如其中包含“id、name、age”的文档,应该是一个用户信息文档,而“id、title、price”的文档,应该是一个商品信息文档,剩下的“id、userId、goodsId、totalFee”的文档,包含了自己本身的id,用户的id,商品的id,订单费用,这个应该是一个订单信息文档。
那这里就按照文档蕾西结构给相似结构的文档进行了归类,这些相似结构的文档,就是一种索引,上述文档归类后,形成了“商品索引”、“用户索引”和“订单索引”:

这就有点像mysql这种关系型数据库的表(Table)的概念一样,不同类型的文档放在不同类型的索引库中,不同索引库的差别就是文档结构不同。
这种文档的结构在关系型数据库中叫“表(Table)”,而在es中叫做“映射(mapping)”,即索引中文档的字段约束信息(如文档中的字段有几个,每个字段是字符还是数字等),类似表的结构约束。

三、概念对比

以下是对传统Mysql数据库中的“表(Table)”、“行(Row)”、“列(Column)”、“表结构(Schema)”和“SQL语句”概念对比Elasticsearch做了一个横向对比:

其中Mysql中的“表(Table)”对应的就是上面讲到的es的“索引(index)”;
Mysql中的“行(Row)”对应的就是上面讲到的es中一个个的“文档(Document)”;
Mysql中的“列(Column)”对应的就是上面讲到的es中每个文档中包含的具体字段(Field);
Mysql中的“表结构(Schema)”对应的就是上面讲到的es中每个文档的字段结构,以及类型约束;
Mysql中的“SQL语句”对应的就是es提供的json风格的请求语句(DSL),是一种查询语法,实现文档的增删改查。Mysql的SQL语句是在连接数据库connection后,发出查询语句进行查询,而es则是通过http请求进行查询,因为es对外暴露的是RESTful风格的API接口,这种接口的好处就是跟语言无关,任何的语言只要能发http请求,就可以将DSL语句发给es来处理,这样就脱离了语言束缚。

四、架构对比

Mysql的架构和Elasticsearch架构各有优缺点,应用的场景也略有不同,谁都无法彻底替代谁。
Mysql擅长事务类型操作,可以确保数据的安全性和一致性。Elasticsearch擅长海量数据的搜索、分析和计算。

如果我们做的是一个下单付款的动作,对数据的安全性要求很高,需要事务模式的操作,那就应该使用Mysql进行存储;如果做的是海量商品的搜索,或是对页面的搜索,内容比较琐碎和复杂,那么使用Elasticsearch是比较合适的。

所以Mysql的和Elasticsearch不是一个替代关系,而是一个互补关系。大部分软件系统的架构中,这两个存储模式都会存在。如下图:

用户将增删改查(CRUD)请求发送给服务器,如果是“写”的操作,我们就将数据请求发给Mysql,由Mysql进行数据的存储;如果是“读”的操作,我们将数据请求发给Elasticsearch,由它来处理数据搜索的请求。而为了保持数据一致,Mysql写入或更新数据时,会同步给Elasticsearch,以保证es每次搜索的都是最新数据。

五、总结

●文档:一条数据就是一个文档,es中是Json格式;
●字段:Json文档中的字段;
●索引:同类型的文档的集合;
●映射:索引中文档的约束,比如字段名称、类型;
●Elasticsearch与数据库的关系:数据库负责事务类型操作,Elasticsearch负责海量数据的搜索、分析、计算。


参考:《黑马Elasticsearch全套教程》

转载请注明出处:https://guangzai.blog.csdn.net/article/details/144310481

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com