数据库选型之MySQL vs ElasticSearch

前言

  应用系统通常需要借助数据预处理(如物化视图等)来实现数据查询加速的需求。目前业界主流数据库主要有以下两大类,一种是基于传统RDBMS关系型数据库来实现;另一种是基于NoSQL非关系型数据库来实现。那么问题来了,哪一种类型的数据库更符合产品的需要呢?

  开源技术栈中,以应用最为广泛的RDBMS关系型数据库MySQL和NoSQL非关系型数据库ElasticSearch(简称ES)为例,介绍下这两类数据库之间的区别和各自的优势,然后再根据产品需求特性,很容易判断哪类数据库更适合产品的需要了。

MySQL vs ES

  MySQL作为开源关系型数据库,应用范围非常广泛,非常适合于结构化数据存储和查询。在数据查询场景下,默认返回所有满足匹配条件的记录;而ES作为新生代NoSQL数据库代表之一,非常适合于非结构化文档类数据存储、更创新支持智能分词匹配模糊查询。比如在电商网站商品搜索栏中,用户输入以空格为分隔符的字符串(如:家电电视等),后台ES数据库搜索引擎会根据用户输入的信息,对数据库中保存的非结构化数据进行分词模糊匹配查询,返回满足匹配条件的前N条记录给用户;另外ES更典型应用在于根据用户浏览记录日志来追踪用户行为,智能推送用户期望浏览的数据信息,此时通常借助ELK三大组件互相配合完成。

  关于如何在MySQL和ES之间做到合理技术选型,ES官方网站也给出了指导性建议如下图所示。从英文描述看,基本上和之前的介绍相符合。因此,如果业务数据为结构化数据,同时不需要特别关注排名和智能分词模糊匹配查询等特性,则建议采用关系型数据库如MySQL来作为数据存储介质并使用配套搜索引擎;反之,如果业务数据为非结构化数据,同时更关注排名和需要智能分词模糊匹配的特性,则建议采用非关系型数据库如ES作为数据存储介质并使用配套搜索引擎。

blob.png 

怎么样?还在犹豫到底使用哪种类型的数据库吗?看了这篇文章就自然就知道答案了,剩下就是大刀阔斧的开干吧~

原文地址:https://www.cnblogs.com/lixiaochun/p/8488239.html