es底层写入原理

  • 概念说明
  • es数据落盘过程
  • mysql数据落盘过程
  • redis数据落盘过程

概念说明

在第一章节中,已经提到过几个名词:lucence、segment、translog、refresh、flush。这些都涉及底层数据写入。下面分别做下说明。

  1. lucence
    es真正高效检索的核心,就是lucence。lucence本身将分词、检索、索引等全部已经实现。只是由于它使用起来很难,没有博士以上水平,估计看都看不懂。所有为了方便使用,便有了es。es就是对lucence做了一层封装,将底层复杂的实现过程全部屏蔽,对外只暴露简单接口。
  2. segment
    segment,字面意思就是“段”,也就是数据会被分成一段一段的,之后再按照一定规则,将很多小段不断合并成大段,最新写入磁盘。这种做法基本上都是兼顾读写和落盘性能。之前用到的一款向量搜索引擎milvus,也是这个原理。
  3. translog
    translog是为了保证数据安全。可以类比mysql中的redo-log。
  4. refresh
    将buff中数据刷新到os cache中会用到。
  5. flush
    调用操作系统函数fsync,写磁盘。像mysql和redis最新写入磁盘部分,也都会用到。

es数据落盘过程


写入过程可以参考上图,其中重要的部分概括如下:

  1. 文档同时写入lucence-buff和translog-bugg。此时不能被搜索。
  2. 每隔1s刷新一次buff数据到os cache中,生成segment。此时可以被搜索,buff被清空。
  3. translog是为了异常宕机后恢复数据。每隔5s将数据刷到磁盘上。
  4. 当translog文件大于512M或每隔30min,会产生一个commit point。os cache中缓存的数据都将被刷新到磁盘上。同时清空相关缓存和文件。
  5. 每次refresh都会产生一个新的segment,过多的segment会影响性能。Es后台会不断合并小的segment生成大的segment。

mysql数据落盘过程

当深入了解多个中间件对数据的处理策略后,你会发现有很多相似之处。这里延伸讲解下mysql和redis的写入过程。

redis数据落盘过程


其实不仅仅是写入,在集群情况下,对数据的分片处理也有很多相似之处。比如,es用的是分片shard,mysql用的是分区或者分表,redis用的是槽slot。
在高可用方面,es用的是主、副分片机制,mysql用的是主从机制,redis用的也是主从机制。

Elasticsearch专栏-7.es底层写入原理相关推荐

  1. Es底层查询原理、数据结构、及性能分析

      Elasticsearch是一个很火的分布式搜索系统,提供了非常强大而且易用的查询和分析能力,包括全文索引.模糊查询.多条件组合查询.地理位置查询等等,而且具有一定的分析聚合能力.因为其查询场景非 ...

  2. Elasticsearch专栏-3.es基本用法-基础api

    es基本用法-基础api 索引index增删改查 增 删 改 查 文档doc增删改查 增 方式1:PUT 方式2:POST 删 改 方式1:_doc 方式2:_update 查 批量操作bulk 同一 ...

  3. ElasticSearch底层实现原理

    ElasticSearch底层实现原理 正向索引 在搜索引擎中每个文件都对应一个文件ID,文件内容被表示为一系列关键词的集合(实际上在搜索引擎索引库中,关键词也已经转换为关键词ID).例如" ...

  4. 面试精讲之面试考点及大厂真题 - 分布式专栏 08 Redis中有哪些数据结构及底层实现原理

    08 Redis中有哪些数据结构及底层实现原理 不经一翻彻骨寒,怎得梅花扑鼻香. --宋帆 引言 07小节面完了负载均衡,正向代理,反向代理,终于松了一口气,然后话题转向了缓存Redis,为什么是这个 ...

  5. Elasticsearch:从写入原理谈写入优化

    1.线上实战问题 问题 1:想要请问一下,我这边需求是每分钟利用 sparksteaming 插入按天的索引150万条数据.一般情况下还好,索引7个分片,1副本,但是偶尔会出现延迟很高的情况.比如:一 ...

  6. ELK专栏之ES内部机制-03

    ELK专栏之ES内部机制-03 ES内部机制 ES分布式基础 ES对复杂分布式机制的透明隐藏特性 ES的垂直扩容和水平扩容 增加和减少节点,数据重新分配 master节点 节点对等的分布式架构 分片s ...

  7. 【Elasticsearch】Elasticsearch 查询过程中的 pre-filter 原理

    1.概述 转载:添Elasticsearch 查询过程中的 pre-filter 原理 大家都知道在对索引执行查询的时候,需要在所有的分片上执行查询,因为无法知道被查询的关键词位于哪个分片,对于全文查 ...

  8. 【es】es 分布式一致性原理剖析(三)-Data篇

    1.概述 转载:Elasticsearch分布式一致性原理剖析(三)-Data篇 前言 "Elasticsearch分布式一致性原理剖析"系列将会对Elasticsearch的分布 ...

  9. 【es】es 分布式一致性原理剖析 节点篇

    1.概述 好文章:Elasticsearch分布式一致性原理剖析(一)-节点篇 前言 "Elasticsearch分布式一致性原理剖析"系列将会对Elasticsearch的分布式 ...

最新文章

  1. vectorint[]和vectorint()有什么区别?
  2. excel制作录入和查询系统_excel表格制作成绩查询系统攻略:让学生隐私更安全!
  3. V4L2框架分析学习
  4. error Infos
  5. Move or commit them before Pull git
  6. 小程序开发(8)-之跳转第三方小程序设计
  7. Java基础-this关键字和构造方法(10)
  8. IDEA多Module的Language Level的问题
  9. 589. N叉树的前序遍历
  10. ScrollView中布局不能充满ScrollView的问题
  11. 超微服务器主板型号,Supermicro超微主板X10SRL-FLGA-2011,单路入门级服务器主板
  12. virtual memory exhausted: Cannot allocate memory
  13. SpringMVC Controller接收普通类型参数 postman配置
  14. 《JOEL说软件》中文版翻译质量令人失望
  15. 2015CDAS中国数据分析师行业峰会:R语言量化投资数据分析应用
  16. 【C语言蓝桥杯每日一题】——跑步锻炼
  17. word中图片为嵌入式格式时显示不全_word嵌入图片显示不全,教您word插入图片显示不全怎么办...
  18. 三字棋Java程序设计_六子棋Java程序设计.docx
  19. MIT Cheetah Learning (一):State Estimate
  20. ElasticSearch练习二:聚合语法学习(aggs、bucket、metric、hitogram、date hitogram)

热门文章

  1. 极客公园创新大会十周年首日看点:前沿思考论坛
  2. python3模拟IP进行刷投票
  3. PyQt5(一) PyQt5安装及配置,从文件夹读取图片并显示,模拟生成素描图像
  4. 父Shell与子Shell
  5. 数据库名词解释 主键外键检查 非空、唯一性约束 父表 子表
  6. 最小二乘曲线拟合原理,平面曲线与空间曲线,并附python实现demo
  7. mybatis根据传进来的参数执行不同的SQL语句
  8. android和ios用户数,报告:苹果iOS用户数比Android多59%
  9. Detecting Insults in Social Commentary 数据分析报告(python)
  10. Educational Codeforces Round 45 (Rated for Div. 2) A Commentary Boxes