当前位置: 首页 > news >正文

ES和MySQL概念对比

基本概念

ES和MySQL都属于数据库,不过各有各的特性,大致使用方法与MySQL类似并无区别。

MySQL:擅长事务持有ACID的特性,确保数据的一致性和安全。

ES:持有倒排索引,适合海量数据搜索和分析。


ES和MySQL如何保证数据的一致性

保证数据的一致性可采用双写来实现,在修改数据库的适合也修改ES

// 伪代码示例
@Transactional
public void saveOrder(Order order) {// 1. 写MySQLmysqlMapper.insert(order); // 2. 写ES(失败会触发事务回滚)esClient.index(order); 
}

如果需要做优化可以通过异步实现,比如MQ,并且还能对消息做持久化和重试或确认,进一步保证了数据的安全和一致性。


倒排索引和B+Tree有什么不同

数据库索引采用的B+Tree存储结构维护数据,适合单点查询和范围查询

         [根节点]/      \[内部节点]  [内部节点]/    |    \ 
[叶子1]↔[叶子2]↔[叶子3]  # 叶子节点存储实际数据,且双向链表连接

倒排索引根据词语来进行分类,适合搜索引擎功能

{"关键词A": [文档1_ID, 文档2_ID, ...],  # 倒排列表(Postings List)"关键词B": [文档3_ID, 文档5_ID, ...]
}

http://www.dtcms.com/a/133669.html

相关文章:

  • 向量数据库
  • 解锁元生代:ComfyUI工作流与云原生后端的深度融合
  • 【设计模式】观察者
  • RabbitMQ 为什么引入 Exchange 的概念, 交换机有什么作用.
  • QML与C++:基于ListView调用外部模型进行增删改查(性能优化版)
  • 【Leetcode-Hot100】最大子数组和
  • 【教程】如何使用Labelimg查看已经标注好的YOLO数据集标注情况
  • C++| 深入剖析std::list底层实现:链表结构与内存管理机制
  • VTK知识学习(51)- 交互与Widget(三)
  • 小程序获取用户总结(全)
  • ArrayList vs LinkedList,HashMap vs TreeMap:如何选择最适合的集合类?
  • CEPH配置优化建议
  • 小程序css实现容器内 数据滚动 无缝衔接 点击暂停
  • AtomNet:在极端MCU约束下基于算子设计微型模型
  • LivePortrait 使用指南:让静态照片“动”起来的魔法工具
  • 【自动化测试】如何获取cookie,跳过登录的简单操作
  • 一个异步架构设计:批量消费RabbitMQ,批量写入Elasticsearch(golang实现)
  • hadoop执行sqoop任务找不到jar
  • Dijkstra算法求解最短路径—— 从零开始的图论讲解(2)
  • 第十章 go mod操作
  • 【Java SE】Collections类详解
  • 2.1 腾讯校招通关指南-算法与数据结构
  • trl的安装与单GPU多GPU测试
  • 一文读懂WPF系列之依赖属性与附加属性
  • C++进阶——C++11_智能指针
  • 架构思维:缓存层场景实战_读缓存(下)
  • 【已更新完毕】2025泰迪杯数据挖掘竞赛C题数学建模思路代码文章教学:竞赛智能客服机器人构建
  • 如何高效使用 Text to SQL 提升数据分析效率?四个关键应用场景解析
  • Token安全存储的几种方式
  • Docker 搭建 RabbitMQ