Elasticsearch 在未来会全面替代传统的关系型数据库吗?使用上有什么坑吗?

2021-11-20 04:08:23 +08:00
 LeeReamond

被业务每日新增的数据量所困扰,花了两个小时大概了解了一下 es ,感觉这个东西 [似乎] 可以完全替代关系型数据库的业务。也就是当完全不讨论它的设计初衷,即全文搜索的应用领域,单纯地考虑 es 替代 sql 储存关系型数值数据,似乎看起来也不错?

目前看来的优势: 1 、虽然声称是 nosql ,确实也是不支持 sql ,但是与 redis 等 nosql 不同,es 仍然可以进行一些包含关系型逻辑的搜索。这满足了日常业务的最低档条件。 2 、号称速度很快,全文搜索速度毋庸置疑,如果单纯拿来存数据的话,我没有测试过,不知道速度。 3 、横向扩展的便利性非常香,横向扩展方便不得不说是今天一个太大的优势了。点名批评 oracle ,可能是我笨,真的觉得集群学起来好费劲。 4 、数据库本身,以及工具链的安装非常友好。我本身 java 只能写 helloworld ,但是大概搜了搜直接官网和 github 下了几个工具感觉就完全能用了,初见的低成本令人心旷神怡。与之相对的,传统关系型数据库,比如某甲骨文,安装过程和工具链都给人一种沉重的感觉。

目前了解的缺点: 1 、不支持事务。这个不是大问题,我司事务基本靠业务端解决,不加给数据端。应该很多公司都这么操作,毕竟事务本身有局限性。 2 、权限管理很垃圾,这个是痛点之一,不过感觉大多数业务场合,靠前端中间件的话,也未必不是不能凑合? 3 、性能提升主要吃内存,落盘会让性能下降。这个我没测试过不了解。

总之目前是在考虑要不要尝试迁移,迁移目的是为了追求更高的插入性能和更低的搜索延迟,mysql 进行分库分表+集群各种优化后,数据量太庞大的情况下搜索延迟还是不尽如人意,之前尝试过 oralce 感觉学习成本太高,也没有质变级提升,这次 es 确实让人眼前一亮,不过既然主流工业界没有这么做,也许还存在一些坑也说不定,比如存在数据被污染问题?数据流偶尔缺失问题?更新时效性不足的问题?或者无法处理并发修改的种种问题?有没有踩过坑的大佬讲一讲如何,还有未来发展趋势。

6500 次点击
所在节点    Elasticsearch
36 条回复
likeunix
2021-11-20 12:54:22 +08:00
我觉得 es 的查询语法很难受
ospider
2021-11-20 13:57:29 +08:00
还有最重要的一点,ElasticSearch 现在的 License 在大公司已经没法用了……
ffxrqyzby
2021-11-20 15:57:02 +08:00
如果事务不是主要考虑的因素, lz 可以试一试
cs419
2021-11-20 16:12:40 +08:00
未来会替代...
术业有专攻 他俩赛道都不同啊
再说 solr mongodb mariadb tidb 这些都是路人甲么
lyz1990
2021-11-20 16:22:15 +08:00
缓缓打出一个问号
neochen13
2021-11-20 16:25:41 +08:00
不是有个 clickhouse
xjlnjut730
2021-11-20 16:53:43 +08:00
坑可就太多了,关联查询、事务、写入后不能保证立即读,CRUD 场景基本都不太能替代。而且 ES 的运维成本非常高,集群动不动就 green/yellow ,需要花很多精力在上面。我感觉就适合大数据情况下单表分页、模糊搜索、推荐、缓存等场景。
xjlnjut730
2021-11-20 16:55:00 +08:00
还有,更新性能极差。
gamexg
2021-11-20 17:07:08 +08:00
以前使用时,发现一些聚合函数返回的值是不准确或是估算值。业务上面是否可以接受?
terranboy
2021-11-20 17:34:13 +08:00
“存“关系不方便 就用来“查”的东西
Mithril
2021-11-20 18:01:39 +08:00
@ospider 看业务类型,非云服务供应商的话 SSPL 也可以用的。

@adoal 确实,搞不定事务怪不能横向扩展就完了。
guanlinzhang1996
2021-11-20 21:52:16 +08:00
现在一个应用系统都是专事专干。要是要事务,就用关系型数据库,想要 NoSQL ,用 MongoDB ,或者 DynamoDB
Elasticsearch 的 refresh 和 merge 等操作的原因被称为准实时分布式搜索引擎,系统设计考虑可用性 > 准确性。Elasticsearch 主要关注大规模数据的查询,聚合,按照查找关键字对查询结果进行相关性排序
对于搜索引擎,丢一篇文档,少一篇文档其实前端感知不明显

ES 常见场景:网站搜索引擎,应用运行状态分析(SIEM),实时数仓(这一功能逐渐被 ClickHouse 等取代)
deplivesb
2021-11-20 22:29:09 +08:00
为啥楼主会拿 es 和关系数据库比较?这俩完全就不是一个东西吧,人家 es 官方自己也没说自己是个数据库啊,而且就索引延迟这一点你觉得适合作一般的关系数据库么?
fuxkcsdn
2021-11-20 23:02:04 +08:00
es 支持 sql 语法,虽然很多 sql 特性不支持,也不支持跨索引查询
我司当时选择上 es (主要用来聚合查询,常规查询还是走 mysql ),很大程度是因为 es 支持 sql 语法
当然,现在得为过去的偷懒买单了
qq1340691923
2021-11-21 10:08:36 +08:00
@hronro 多个 index 设置相同的别名,然后查询别名
holinhot
2021-11-22 09:40:22 +08:00
数据延迟怎么解决? 写入的数据要过一会儿才有结果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/816686

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX