• 数据库选型之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 

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

  • 相关阅读:
    torch.optim.SGD()各参数的解释
    pytorch中y.data.norm()的含义
    sklearn分类模块
    python处理nii文件
    cvpr2019_Unsupervised Person Re-identification by Soft Multilabel Learning
    attention机制
    contrastive loss
    pytorch扩展——如何自定义前向和后向传播
    python | 实现多行向量(matrix)两两计算余弦距离、欧几里德距离
    判定是否过拟合、欠拟合的一种方式
  • 原文地址:https://www.cnblogs.com/lixiaochun/p/8488239.html
Copyright © 2020-2023  润新知