当前位置: 首页 > 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, ...]
}

相关文章:

  • 向量数据库
  • 解锁元生代: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操作
  • 拿出压箱底作品,北京交响乐团让上海观众享受音乐盛宴
  • 央行设立服务消费与养老再贷款,额度5000亿元
  • 早期投资人蜂巧资本清仓泡泡玛特套现超22亿港元,称基金即将到期
  • 苹果Safari浏览器上的搜索量首次下降
  • “救护车”转运病人半路加价,从宝鸡到西安往返都要多收钱
  • 新华时评:任凭风云变幻,中俄关系从容前行