es mysql 适用场景对比

这篇具有很好参考价值的文章主要介绍了es mysql 适用场景对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

es mysql 适用场景对比

问题一

全文检索毫无疑问直接上es,那么除了这种场景,什么时候该选es?为啥mysql不行?

对枚举字段的搜索

mysql创建索引的原则是对于那些区别度高字段建立索引,区别度越高的索引,在数据量大的情况下,索引效果越好。
因为mysql建立b+树时是这样,每创建一行就新建立索引字段,如果需要对枚举类型的字段进行搜索的时候比如该字段是布尔型只有两种值,对这种值进行搜索即使建立了索引效果仍然不好,如果一张表有千万数据,其中有
五百万数据是该值为true,需要搜索表中为true的数据,即使扫描索引,也要扫描500万次。

而es则不同,es建立的倒排索引是索引值后面跟了一个倒排列表,也就是只需要最多扫描两次便能找到数据。

复杂条件的搜索

当搜索的条件足够复杂后,比如10多个条件字段的搜索,由于b+树的特性,不可能同时对这10多个字段建立联合索引,此时用上es就很合适。es可以将10多个条件字段求出各自的bitmap,然后求交集。

问题二

抛开问题一的两种场景,当数据量越来越大时,应该选用es作为存储吗?

es针对海量数据的存储与搜索的好处在于,其水平扩容的便捷性。

mysql在数据量大了以后,涉及到分库分表,而分库分表带来的问题的是什么?其一是分库分表时,数据的迁移,需要考虑迁移过程中业务是否受到影响。其二在于 分库分表后业务系统的改动,比如翻页逻辑,可能需要去到每个库或表中查出前n条数据,然后进行翻页。

而es将扩容部分的这些都做了,es存数据是天然的分片存储,在海量数据查询时,可以通过增加副本的机制分担读压力。

那是不是在选用数据存储时,直接选用es就好了呢,这样以后可以不用担心扩容问题?

当然不是,来说说选用es的问题。
es比较吃系统资源。
来看一组数据,虽然环境有差异,可能不太准确,但能说明一定问题。
一台4c8g的 linux 云数据库,能支持大约上万qps,内存占用大概6g。
而我用一台mac m1 的8c 16g机器去做查询压测,当qps达到3700时,cpu就已经去到480% 超过了4核。
所以在产品并发量不高的情况下,只从数据存储而言,选用mysql会更节约成本。

但是单机的性能的确有限,如果产品对数据库的qps需要去到好几万,即使选用最高配的机器也是无法支撑的,这时选用多台便宜的机器来做将数据做分布式存储将更有优势。

所以我认为,当查询量越来越大以后,选用es来做海量数据存储,将不会担心数据查询问题,随着查询压力的上涨,可以通过增加副本来解决,虽然mysql可以通过分库分表解决,但是正如前面而言,分库分表的成本是比较大且风险是高于es扩容的,es增加副本带来的分片数据迁移工作,是由es集群自身完成,这样对于整个架构的扩展性来说是最高效便捷的。

感叹一句,架构就是这样,有得必有失,带来了架构的便捷性,但是可能对于mysql分库分表方案会更贵一点。文章来源地址https://www.toymoban.com/news/detail-464316.html

到了这里,关于es mysql 适用场景对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文带你了解MySQL的前世今生,架构,组成部分,特点,适用场景

    MySQL最初是由瑞典公司MySQL AB的Michael Widenius和David Axmark开发的一款开源关系型数据库管理系统。MySQL AB的初衷是创造一个简单、快速、可靠的关系型数据库系统,以解决当时Web应用程序的需要。他们想要创造一个更简单、更强大的数据库系统,以取代当时主流的商业数据库系统

    2024年02月04日
    浏览(40)
  • es_MySQL、HBase、ElasticSearch三者对比详解

    MySQL:关系型数据库,主要面向OLTP(OLTP,也叫联机事务处理(Online Transaction Processing)),支持事务,支持二级索引,支持sql,支持主从、Group Replication(MGR 是一个新的高可用与高扩展的方案,集群中的任何节点数据都是一样的,可以实现任何节点都可以写入,实现了真正意义

    2024年02月02日
    浏览(44)
  • 【Redis】认识Redis-特点&特性&应用场景&对比MySQL&重要文件及作用

    redis里面相关的小命令 fulshall:清空redis数据库,类似于mysql里面的drop database; 一. 内存中存储数据(内存级数据库) redis相比MySQL的优势:MySQL数据库最大的问题在于访问速度是比较慢的(很多互联网产品中,对于性能要求是很高的)。redis作为数据库使用,定性的角度来看是很快的

    2024年02月07日
    浏览(38)
  • Redis、Elasticsearch(ES)、RocketMQ和MYSql 持久化对比

    在现代大数据和分布式系统中,数据持久化是一个至关重要的话题。本文将针对 Redis、Elasticsearch(ES)、 RocketMQ和MYSql 这四种常见的数据存储和消息队列系统进行持久化方面的对比分析,帮助读者更好地了解它们各自的特点和适用场景。 ### Redis 1. **特点**:    - 内存数据库

    2024年04月10日
    浏览(66)
  • MongoDB是什么、有哪些优势、对比mysql,es、docker安装

    MongoDB是面向文档的NoSQL数据库(是一个介于关系数据库和非关系数据库之间的产品),用于大量数据存储的分布式文件存储型数据库。基于灵活的 json文档模型(BSON) ,非常适合敏捷式快速开发。 具有高可用,高水平扩展能力,处理海量、高并发的数据应用时非常有优势 。

    2024年02月11日
    浏览(45)
  • mysql数据库递归查询树形结构(适用场景:菜单多级分类,多级关联评论查询),用strea流把list转成树的方法详解

    层次关系: 现在的需求是把这个层级关系,在前端显示出来,后端的处理方法有两种: 1.直接把全部的数据从数据库中拿到,然后在java代码里面使用树形结构来进行解析,但是这种做法只能在数据量比较小的时候使用,然后数据量一大会造成内存溢出 2.在mysql中创建一个函数

    2024年02月05日
    浏览(42)
  • Elasticsearch实战(二十三)---ES数据建模与Mysql对比 一对多模型

    我们如何把Mysql的模型合理的在ES中去实现? 就需要你对要存储的数据足够的了解,及对应用场景足够的深入分析,才能建立一个合适的模型,便于你后期扩展 一对一 模型 一对多 模型 多对多 模型 1.一对多 模型 我们现在有两个模型, 一个商品Product, 一个分类Category , 我们对比下一

    2024年02月08日
    浏览(59)
  • Elasticsearch实战(二十二)---ES数据建模与Mysql对比 一对一模型

    我们如何把Mysql的模型合理的在ES中去实现? 就需要你对要存储的数据足够的了解,及对应用场景足够的深入分析,才能建立一个合适的模型,便于你后期扩展 实体之间的关系: 一对一 模型 一对一(1:1):一个实体最多只能能另一个实体相关联,另一个实体如是。 例:一个只能

    2024年02月10日
    浏览(58)
  • MongoDB:MySQL,Redis,ES,MongoDB的应用场景

    简单明了说明MySQL,ES,MongoDB的各自特点,应用场景,以及MongoDB如何使用的第一章节.         SQL被称为结构化查询语言.是传统意义上的数据库,数据之间存在很明确的关联关系,例如主外键关联,这种结构可以确保数据的完整性(数据没有缺失并且正确).但是正因为这种严密的结构

    2024年02月12日
    浏览(40)
  • 图解Redis适用场景

    Redis以其速度而闻名。 string,int,list,map。Redis 最常见的用例是缓存对象以加速 Web 应用程序。 此用例中,Redis 将频繁请求的数据存储在内存。允许 Web 服务器快速返回频繁访问的数据。这减轻数据库的负载并提高应用程序RT。 规模扩张时,缓存分布在 Redis 服务器集群中。分

    2024年02月05日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包