当前位置:首页 > 科技  > 软件

Elasticsearch 使用误区之将 Elasticsearch 视为关系数据库!

来源: 责编: 时间:2024-06-27 07:52:52 101观看
导读Elasticsearch 是一个强大的工具,尤其在全文检索、实时分析、机器学习、地理数据应用、日志和事件数据分析、安全信息和事件管理等场景有大量的应用。然而,Elastic Stack 技术栈的选型及应用效能取决于正确的使用方式。

Elasticsearch 是一个强大的工具,尤其在全文检索、实时分析、机器学习、地理数据应用、日志和事件数据分析、安全信息和事件管理等场景有大量的应用。J4I28资讯网——每日最新资讯28at.com

然而,Elastic Stack 技术栈的选型及应用效能取决于正确的使用方式。选型错误或者误用 Elasticsearch 可能会导致扩展性问题、性能问题(如为解决一个问题使用非常复杂的脚本导致性能极差)等,从而使整体体验感变差。所以,本文区别于之前的正向讲解的方式,更多的讲解反例或者负面应用案例。“以史为鉴”,以便于大家更好地使用 Elasticsearch。J4I28资讯网——每日最新资讯28at.com

本系列文章会有 10 几篇左右,一篇一个知识点讲解 Elasticsearch 使用误区解读,敬请期待!J4I28资讯网——每日最新资讯28at.com

误区1:将 Elasticsearch 视为关系数据库J4I28资讯网——每日最新资讯28at.com

Elasticsearch 常被误解为 MySQL 或者 PostgreSQL 等关系数据库的直接替代品,用户除了直接替代使用外更看其全文搜索和快速聚合的能力。J4I28资讯网——每日最新资讯28at.com

然而,咱们必须清晰的认知:Elasticsearch 设计初衷不是处理复杂事务和关系数据模型的。J4I28资讯网——每日最新资讯28at.com

我们从下面几个维度逐一展开讨论:J4I28资讯网——每日最新资讯28at.com

1、该不该选型 Elasticsearch ?

个人建议先了解 Elasticsearch 的适用场景以及不适用场景,这样能清楚 Elastic Stack 技术栈更适合哪些业务需求。J4I28资讯网——每日最新资讯28at.com

例如,咱们文章之前图解的六大应用场景是非常适合的。然而,对于需要处理复杂事务、多表联查操作和高一致性要求的应用,如银行系统的交易处理和ERP系统等,Elasticsearch 则不太适合。J4I28资讯网——每日最新资讯28at.com

图片图片J4I28资讯网——每日最新资讯28at.com

Elasticsearch 更适用场景:J4I28资讯网——每日最新资讯28at.com

图片图片J4I28资讯网——每日最新资讯28at.com

图片图片J4I28资讯网——每日最新资讯28at.com


J4I28资讯网——每日最新资讯28at.com

通过对比这些场景,反观自己的业务需求,就能判断是否应该选型 Elasticsearch 甚至 Elastic Stack 作为技术栈。J4I28资讯网——每日最新资讯28at.com

2、理解 Elasticsearch 的设计

图片来自官方博客图片来自官方博客J4I28资讯网——每日最新资讯28at.com

Elasticsearch 是一种面向文档的搜索引擎,专为快速搜索大量数据而设计。J4I28资讯网——每日最新资讯28at.com

Elasticsearch 基于 Apache Lucene 构建,提供了强大的全文搜索、分析和数据聚合功能。J4I28资讯网——每日最新资讯28at.com

以下是 Elasticsearch 的主要特点:J4I28资讯网——每日最新资讯28at.com

  • 全文搜索:Elasticsearch 提供了高效的全文搜索功能,能够快速检索和匹配大规模文本数据。
  • 分布式架构:Elasticsearch 采用分布式架构,能够水平横向扩展,处理海量数据(PB级甚至以上都不是问题)和高并发请求。
  • 数据分析:Elasticsearch 支持复杂的聚合查询,可以做多维度的快速统计和分析数据,但聚合、去重等结果不是精准的。有精准需求的企业场景也要评估和掂量一下。
  • ......

图片来自官方博客图片来自官方博客J4I28资讯网——每日最新资讯28at.com

如前所述,Elasticsearch 并不是设计用来处理关系数据和事务的。它的主要优势在于分析和搜索能力,而不是数据关系的严格维护。J4I28资讯网——每日最新资讯28at.com

3、理解 Elasticsearch 与关系数据库的比较

关系数据库(如 MySQL、Oracle 及 PostgreSQL 等)和 Elasticsearch 之间有几个关键区别:J4I28资讯网——每日最新资讯28at.com

3.1 数据模型比较

  • 关系数据库使用结构化的表和行来存储数据,并通过外键和约束来维护数据的一致性。
  • Elasticsearch 则使用文档(document,本质是 JSON 格式)来存储数据,每个文档可以包含不同的字段和数据类型。

特性J4I28资讯网——每日最新资讯28at.com

关系数据库J4I28资讯网——每日最新资讯28at.com

ElasticsearchJ4I28资讯网——每日最新资讯28at.com

数据存储结构J4I28资讯网——每日最新资讯28at.com

结构化的表和行J4I28资讯网——每日最新资讯28at.com

文档J4I28资讯网——每日最新资讯28at.com

数据类型J4I28资讯网——每日最新资讯28at.com

每个表的字段类型固定J4I28资讯网——每日最新资讯28at.com

每个文档可以包含不同的字段和数据类型J4I28资讯网——每日最新资讯28at.com

数据一致性J4I28资讯网——每日最新资讯28at.com

通过外键和约束来维护数据的一致性J4I28资讯网——每日最新资讯28at.com

不提供数据一致性保障J4I28资讯网——每日最新资讯28at.com

查询能力J4I28资讯网——每日最新资讯28at.com

支持复杂的 SQL 查询、事务和联接操作J4I28资讯网——每日最新资讯28at.com

主要用于全文搜索和数据聚合J4I28资讯网——每日最新资讯28at.com

事务支持J4I28资讯网——每日最新资讯28at.com

完整的事务支持J4I28资讯网——每日最新资讯28at.com

不支持事务J4I28资讯网——每日最新资讯28at.com

性能优化J4I28资讯网——每日最新资讯28at.com

索引、缓存和查询优化J4I28资讯网——每日最新资讯28at.com

分片、索引和缓存J4I28资讯网——每日最新资讯28at.com

主要优势J4I28资讯网——每日最新资讯28at.com

关系数据处理和数据一致性维护J4I28资讯网——每日最新资讯28at.com

快速搜索和高效的数据聚合J4I28资讯网——每日最新资讯28at.com

3.2 查询能力比较

  • 关系数据库支持复杂的 SQL 查询、事务和多表关联操作,以保证数据的一致性和完整性。
  • Elasticsearch 主要侧重于全文搜索和数据聚合,不支持复杂的事务和多表关联操作。

在关系数据库中,我们可以使用复杂的 SQL 查询、事务和多表关联操作来保证数据的一致性和完整性。例如:J4I28资讯网——每日最新资讯28at.com

BEGIN TRANSACTION;-- 更新订单状态UPDATE ordersSET status = 'shipped'WHERE order_id = 123;-- 减少库存UPDATE productsSET stock = stock - 1WHERE product_id = 456;-- 记录客户活动INSERT INTO customer_activity (customer_id, activity)VALUES (789, 'Order 123 shipped');COMMIT;

图片图片J4I28资讯网——每日最新资讯28at.com

上述事务示例能确保所有相关操作(更新订单状态、减少库存和记录客户活动)要么全部成功,要么全部失败,从而保证数据的一致性(事务的本质)。J4I28资讯网——每日最新资讯28at.com

在 Elasticsearch 中,我们主要侧重于全文搜索和数据聚合分析,而不支持复杂的事务和多表关联操作。J4I28资讯网——每日最新资讯28at.com

比如:用户需求如下:J4I28资讯网——每日最新资讯28at.com

“想请教下大佬们,假设 es 中 有两个表,一个会员表,一个订单表,如果想关联查询,例如查询24年注册的所有的会员的订单总数,通过什么方式能快速查询?”J4I28资讯网——每日最新资讯28at.com

咱们文章做过剖析,Elasticsearch 不是一丁点也不支持多表关联,只是支持的力度有限,支持的形式核心有如下几种:J4I28资讯网——每日最新资讯28at.com

  • 自己业务层面实现
  • Nested 嵌套数据类型
  • Join 父子文档类型
  • 宽表冗余存储
  • Enrich processor 预处理方式

本文链接:http://www.28at.com/showinfo-26-96746-0.htmlElasticsearch 使用误区之将 Elasticsearch 视为关系数据库!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 关于时间知识图谱问答的一篇综述

下一篇: 12306火车购票系统登录验证码的智能校验机制

标签:
  • 热门焦点
  • K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    Redmi的后性能时代战略发布会今天下午如期举办,在本次发布会上,Redmi公布了多项关于和联发科的深度合作,以及新机K60 Ultra在软件和硬件方面的特性,例如:“K60 至尊版,双芯旗舰
  • 6月iOS设备性能榜:M2稳居榜首 A系列只能等一手3nm来救

    6月iOS设备性能榜:M2稳居榜首 A系列只能等一手3nm来救

    没有新品发布,自然iOS设备性能榜的上榜设备就没有什么更替,仅仅只有跑分变化而产生的排名变动,毕竟苹果新品的发布节奏就是这样的,一年下来也就几个移动端新品,不会像安卓厂商,一
  • 轿车从天而降电动车主被撞身亡 超速抢道所致:现场视频让网友吵翻

    轿车从天而降电动车主被撞身亡 超速抢道所致:现场视频让网友吵翻

    近日,上海青浦区法院判决轿车从天而降电动车主被撞身亡案,轿车车主被判有期徒刑一年。案件显示当时男子驾驶轿车在上海某路段行驶,前车忽然转弯提速超车,
  • JavaScript 混淆及反混淆代码工具

    JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • CSS单标签实现转转logo

    CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 雅柏威士忌多款单品价格大跌,泥煤顶流也不香了?

    雅柏威士忌多款单品价格大跌,泥煤顶流也不香了?

    来源 | 烈酒商业观察编 | 肖海林今年以来,威士忌市场开始出现了降温迹象,越来越多不断暴涨的网红威士忌也开始悄然回归市场理性。近日,LVMH集团旗下苏格兰威士忌品牌雅柏(Ardbeg
  • 2天涨粉255万,又一赛道在抖音爆火

    2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了——贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • 电博会与软博会实现

    电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top