Elasticsearch专栏-7.es底层写入原理
es底层写入原理
- 概念说明
- es数据落盘过程
- mysql数据落盘过程
- redis数据落盘过程
概念说明
在第一章节中,已经提到过几个名词:lucence、segment、translog、refresh、flush。这些都涉及底层数据写入。下面分别做下说明。
- lucence
es真正高效检索的核心,就是lucence。lucence本身将分词、检索、索引等全部已经实现。只是由于它使用起来很难,没有博士以上水平,估计看都看不懂。所有为了方便使用,便有了es。es就是对lucence做了一层封装,将底层复杂的实现过程全部屏蔽,对外只暴露简单接口。 - segment
segment,字面意思就是“段”,也就是数据会被分成一段一段的,之后再按照一定规则,将很多小段不断合并成大段,最新写入磁盘。这种做法基本上都是兼顾读写和落盘性能。之前用到的一款向量搜索引擎milvus,也是这个原理。 - translog
translog是为了保证数据安全。可以类比mysql中的redo-log。 - refresh
将buff中数据刷新到os cache中会用到。 - flush
调用操作系统函数fsync,写磁盘。像mysql和redis最新写入磁盘部分,也都会用到。
es数据落盘过程
写入过程可以参考上图,其中重要的部分概括如下:
- 文档同时写入lucence-buff和translog-bugg。此时不能被搜索。
- 每隔1s刷新一次buff数据到os cache中,生成segment。此时可以被搜索,buff被清空。
- translog是为了异常宕机后恢复数据。每隔5s将数据刷到磁盘上。
- 当translog文件大于512M或每隔30min,会产生一个commit point。os cache中缓存的数据都将被刷新到磁盘上。同时清空相关缓存和文件。
- 每次refresh都会产生一个新的segment,过多的segment会影响性能。Es后台会不断合并小的segment生成大的segment。
mysql数据落盘过程
当深入了解多个中间件对数据的处理策略后,你会发现有很多相似之处。这里延伸讲解下mysql和redis的写入过程。
redis数据落盘过程
其实不仅仅是写入,在集群情况下,对数据的分片处理也有很多相似之处。比如,es用的是分片shard,mysql用的是分区或者分表,redis用的是槽slot。
在高可用方面,es用的是主、副分片机制,mysql用的是主从机制,redis用的也是主从机制。
Elasticsearch专栏-7.es底层写入原理相关推荐
- Es底层查询原理、数据结构、及性能分析
Elasticsearch是一个很火的分布式搜索系统,提供了非常强大而且易用的查询和分析能力,包括全文索引.模糊查询.多条件组合查询.地理位置查询等等,而且具有一定的分析聚合能力.因为其查询场景非 ...
- Elasticsearch专栏-3.es基本用法-基础api
es基本用法-基础api 索引index增删改查 增 删 改 查 文档doc增删改查 增 方式1:PUT 方式2:POST 删 改 方式1:_doc 方式2:_update 查 批量操作bulk 同一 ...
- ElasticSearch底层实现原理
ElasticSearch底层实现原理 正向索引 在搜索引擎中每个文件都对应一个文件ID,文件内容被表示为一系列关键词的集合(实际上在搜索引擎索引库中,关键词也已经转换为关键词ID).例如" ...
- 面试精讲之面试考点及大厂真题 - 分布式专栏 08 Redis中有哪些数据结构及底层实现原理
08 Redis中有哪些数据结构及底层实现原理 不经一翻彻骨寒,怎得梅花扑鼻香. --宋帆 引言 07小节面完了负载均衡,正向代理,反向代理,终于松了一口气,然后话题转向了缓存Redis,为什么是这个 ...
- Elasticsearch:从写入原理谈写入优化
1.线上实战问题 问题 1:想要请问一下,我这边需求是每分钟利用 sparksteaming 插入按天的索引150万条数据.一般情况下还好,索引7个分片,1副本,但是偶尔会出现延迟很高的情况.比如:一 ...
- ELK专栏之ES内部机制-03
ELK专栏之ES内部机制-03 ES内部机制 ES分布式基础 ES对复杂分布式机制的透明隐藏特性 ES的垂直扩容和水平扩容 增加和减少节点,数据重新分配 master节点 节点对等的分布式架构 分片s ...
- 【Elasticsearch】Elasticsearch 查询过程中的 pre-filter 原理
1.概述 转载:添Elasticsearch 查询过程中的 pre-filter 原理 大家都知道在对索引执行查询的时候,需要在所有的分片上执行查询,因为无法知道被查询的关键词位于哪个分片,对于全文查 ...
- 【es】es 分布式一致性原理剖析(三)-Data篇
1.概述 转载:Elasticsearch分布式一致性原理剖析(三)-Data篇 前言 "Elasticsearch分布式一致性原理剖析"系列将会对Elasticsearch的分布 ...
- 【es】es 分布式一致性原理剖析 节点篇
1.概述 好文章:Elasticsearch分布式一致性原理剖析(一)-节点篇 前言 "Elasticsearch分布式一致性原理剖析"系列将会对Elasticsearch的分布式 ...
最新文章
- vectorint[]和vectorint()有什么区别?
- excel制作录入和查询系统_excel表格制作成绩查询系统攻略:让学生隐私更安全!
- V4L2框架分析学习
- error Infos
- Move or commit them before Pull git
- 小程序开发(8)-之跳转第三方小程序设计
- Java基础-this关键字和构造方法(10)
- IDEA多Module的Language Level的问题
- 589. N叉树的前序遍历
- ScrollView中布局不能充满ScrollView的问题
- 超微服务器主板型号,Supermicro超微主板X10SRL-FLGA-2011,单路入门级服务器主板
- virtual memory exhausted: Cannot allocate memory
- SpringMVC Controller接收普通类型参数 postman配置
- 《JOEL说软件》中文版翻译质量令人失望
- 2015CDAS中国数据分析师行业峰会:R语言量化投资数据分析应用
- 【C语言蓝桥杯每日一题】——跑步锻炼
- word中图片为嵌入式格式时显示不全_word嵌入图片显示不全,教您word插入图片显示不全怎么办...
- 三字棋Java程序设计_六子棋Java程序设计.docx
- MIT Cheetah Learning (一):State Estimate
- ElasticSearch练习二:聚合语法学习(aggs、bucket、metric、hitogram、date hitogram)
热门文章
- 极客公园创新大会十周年首日看点:前沿思考论坛
- python3模拟IP进行刷投票
- PyQt5(一) PyQt5安装及配置,从文件夹读取图片并显示,模拟生成素描图像
- 父Shell与子Shell
- 数据库名词解释 主键外键检查 非空、唯一性约束 父表 子表
- 最小二乘曲线拟合原理,平面曲线与空间曲线,并附python实现demo
- mybatis根据传进来的参数执行不同的SQL语句
- android和ios用户数,报告:苹果iOS用户数比Android多59%
- Detecting Insults in Social Commentary 数据分析报告(python)
- Educational Codeforces Round 45 (Rated for Div. 2) A Commentary Boxes