前段时间公司想尝试用ES来存一部分数据,以此缓解数据增长带来的对数据库的压力。ES的介绍很多地方都有,就不再写了。在研究了一段时间后,发现ES不适合做为数据存储使用,理由如下:

  1. mapping不可改,不能改index属性。ES中以定义的mapping不能修改名字和属性,无法修改名字勉强还能接受,但无法修改属性。官方文档中介绍了几种修改mapping的方法。一个是新建一个字段,程序中所有地方修改名字,这对于复杂的项目容易出错,而且无法保留原来的数据;另一个是利用alias创建一个新的索引,但是所有数据需要重新导入,这需要很长时间,操作性不强。
  2. 无法多对多。ES中提供3种关联关系:Field collapsing(严格来说不是关联),Nested object,Parent-child。前两种都是直接将一个mapping声明在另一个mapping中,第三种关联是在创建子文档是指明他的父文档,但是一个子文档只能有一个父文档,因此也不能实现多对多的关联。其实如果理解了ES的目的是提升检索效率,就不难理解为什么没有多对多关联了,在关系数据库里这就是个效率瓶颈。
  3. 没有用户验证和权限控制。ES本身的访问权限可以通过nginx进行控制,但是同一个ES中不同索引间目前是没有权限控制的。
  4. 从ES设计的初衷看,为了检索,为了统计。这个从字段的store属性中可以看出来,查看ES手册(https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-store.html)可以发现,默认情况下字段的原始值是不会被保存的,这跟数据存储是南辕北辙了。
  5. 项目开始时不好确定shards数量。少了以后扩展不方便,多了一开始影响性能。这个可以通过将type命名为doctype-yyyymmdd来解决,每天都生成新的一个或多个shard,但是注意在搜索时需要在doctype-*中搜索。
  6. ES非常适合特定的需求,但不适合用于数据存储。ES索引速度快,扩展方便,性能优异,但在功能上不适合作为数据库使用。数据存储的目的是为了以后能方便的使用,不仅是针对当前的需求,也要为未来可能出现的需求做准备。由于ES有以上几点问题,无法适应需求变化。

ES适合的场景

  1. 检索。ES本身作为一个搜索引擎,用来处理检索的任务再合适不过。你可以在线上项目中直接将内容写入ES以提供检索服务,也可以把以往的数据导入ES以处理特定的需求。关于ES和Solr的比较以后有时间的话会写一篇
  2. 统计。ES的统计也是基于检索功能的,聚合功能使得统计结果处理起来非常方便。如果你只需要统计而不用检索,可能有其他工具更适合你,比如Spark SQL。

为什么ES不适合做数据存储相关推荐

  1. Spark Streaming 作者,Alluxio 的创始人李浩源:AI 潮流对做数据存储业务公司的挑战...

    本文转载自 Robin.ly 社区,Robin.ly 和 TalentSeer 的创始人 Alex Ren 采访了知名大数据初创公司Alluxio的创始人及CEO,李浩源博士,采访中分享了李浩源博士对 ...

  2. 什么样的人适合做数据分析师?

    随着科技的创新与发展,数据分析也火了起来,越来越多的人选择从事数据分析行业,但是还有些人担心自己是适合做数据分析,不能胜任数据分析这项工作.今天小编就给大家解决一下这个难题. 要让小编来讲,没有适不适 ...

  3. 我究竟适不适合做数据分析师?

    种一棵树最好的时间是十年前,其次是现在.--Dambisa Moyo<dead aid> 随着大数据时代的发展,越来越多的人开始学习.从事数据分析相关工作,但也有很多同学在观望,我究竟适不 ...

  4. 基于HBase的大数据存储在京东的应用场景

    引言 HBase是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,适用于结构化的存储,底层依赖于Hadoop的HDFS,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群.因 ...

  5. 你的报表工具会做数据准备吗 ——报表开发中的深层次问题

    前言 现在企业的报表开发大部分都使用报表工具完成,成熟的报表工具提供了丰富的显示设置.图表类型.导出打印等功能可以简化报表开发,非常方便.但在实际报表开发中还是经常碰到一些非常棘手的深层次问题,即使是 ...

  6. 万亿级日志与行为数据存储查询技术剖析——Hbase系预聚合方案、Dremel系parquet列存储、预聚合系、Lucene系...

    转自:http://www.infoq.com/cn/articles/trillion-log-and-data-storage-query-techniques?utm_source=infoq& ...

  7. 万亿级日志与行为数据存储查询技术剖析

    http://www.sohu.com/a/126082450_355140 目前大数据存储查询方案大概可以分为:Hbase系.Dremel系.预聚合系.Lucene系,本文作者将就自身的使用经验说说 ...

  8. 数据存储之偏好设置NSUserDefaults

    NSUserDefaults做数据存储也是比较常用,适合轻量级的本地数据存储,读取也很方便. 一.支持的数据类型如下图(NSString.NSArray.NSDictionary.NSData.NSI ...

  9. MySQL 数据存储和优化------MySQL架构原理 ---- (架构---索引---事务---锁---集群---性能---分库分表---实战---运维)持续更新

    Mysql架构体系全系列文章主目录(进不去说明还没写完)https://blog.csdn.net/grd_java/article/details/123033016 本文只是整个系列笔记的第一章: ...

最新文章

  1. [程序员创造力训练 1] 猜单词 - 关于健康
  2. java 异步 web_Java web spring异步方法实现步骤解析
  3. RDC如何打造支撑百万用户的分布式代码托管平台
  4. 三种常见字符编码简介:ASCII、Unicode和UTF-8
  5. mysql创建数据库时候同时创建表空间_mysql::创建多个表空间添加记录数据会添加到哪个表空间中?...
  6. 解决Cannot change version of project facet Dynamic Web M
  7. 什么是U-Boot以及如何下载U-Boot源码
  8. 模板:k短路(可并堆)
  9. php定时任务(自己)
  10. 材料科学与工程考计算机,计算机在材料科学与工程中应用作业.pdf
  11. 程序员不会SQL?骨灰级工程师:全等着被淘汰吧!这是必会技能!
  12. 数据特征处理pca降维-小结
  13. 聚焦BCS|新华网:2020年北京网络安全大会开幕
  14. linux 内核部分崩溃,Linux 系统内核崩溃分析处理简介
  15. 设计模式-行为性模式(模板方法模式,策略模式,命令模式,责任链模式,观察者模式,中介者模式,迭代器模式)
  16. python获取管理员权限
  17. 换个角度感受华为云的GPU云服务器
  18. iPhone无法开机? 一招帮你“救活”
  19. 守夜人,守护自己,守护他人
  20. 小飞鱼通达二开 小飞鱼OA开发案例集锦目录(持续更新)

热门文章

  1. 10次机会 js 猜数_用JS实现简单的猜数小游戏
  2. 无线传感网络在医疗领域的应用
  3. Windows访问共享文件 smb samba
  4. CDS学习(一)---简介
  5. ECDSA 和 ECDH
  6. js 数组反转,倒置
  7. 涨粉神器,粉丝零距离交流!CSDN APP迎来更新
  8. Leetcode 507: 完美数
  9. UML 协作图(通信图) collaboration diagram
  10. 360手机官方刷机教程(N6系列+N7系列通用)