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

时序数据库之influxdb和倒排索引以及LSM-TREE

一、时序数据库的特点
1、时序数据库用作打点,用来做监控使用,属于写多读少的场景,而且由于时间不可逆,几乎不可能出现更新的操作。而且监控数据一般只会查询最近几分钟数据,冷热数据查询频率非常明显。因此非常贴合ES LSM-TREE这种准实时的特点。
2、ES和LSM-TREE 写入的时候,都是顺序写入,相比于mysql B+树因为需要维持全局有序,随机写。效率有很大提升。
3、而且ES和LSM-TREE都是批量写入,都会先在内存攒一批数据(ES是段写满,或者达到兜底时间。LSM-TREE是内存里memoryTable写满后)落入磁盘。写入效率相比于mysql高很多。
4、LSM-TREE分层SSTable(类似多级缓存),刚写入的数据在上层,历史数据经过SSTable合并后会落入下一层级(查询难度加大)。也非常适合时序数据库这种冷热明显的场景
5、但是由于LSM-TREE顺序写入,SSTable内部局部有序,因此对于查询功能不如mysql(B+树全局有序)。
6、但是LSM-TREE为了加快查询效率,每个SSTable有一个布隆过滤器,能够快速发现数据在不在此SSTable。最坏的情况,需要把所有SSTable的filter都判断一遍。
7、正是因为LAM-TREE局部有序。对于范围查询支持的不好。需要遍历所有SSTable查看范围,(SSTable内部可以二分查找)。最终多个SSTable查询结果进行合并
因此市面上的时序数据库通常都是采用LSM-TREE或其变种

二、influxdb的原理 以及与LSM-TREE的结合
1、概念
database ------> 数据库
measurment -----> 表
tag -----> 索引
field -----> 数据内容
series -----> 是存储数据的基本单位。measurment,tag完全相同,只有时间戳不同的数据会存到同一个series(方便对于某种特定数据进行时间范围查询)。相对的influxdb对于 tag数据内容多变的查询 支持的不好。
在这里插入图片描述
以序列的方式管理数据是时序数据库和传统关系型数据库最不同的地方。

2、双索引设计与高效查询思路(tag集合形成一个索引 时间戳是一个索引)
influxdb 查询先根据tag索引 查找到 某一条序列, 再根据时间索引进行 LSM-TREE查询

tag索引 是倒排索引 先根据倒排索引 查找序列(定位某一个LSM-TREE)
再根据时间 进行LSM-TREE查询

3、时序(序列)数据库致命问题:时间线膨胀
如果同一个measurment的tag集合变化太多,(tag1=x1,tag2=y1),(tag1=x2,tag2=y2)…等等。
就会造成序列太多,时序数据库的写入和读取性能通常都会有明显的下降。
因为序列太多,每次写数据,首先需要LSM-TREE查询写入哪条序列,SSTable局部有序,最坏情况需要遍历所有SSTable


http://www.kler.cn/a/386431.html

相关文章:

  • python制作一个简单的端口扫描器,用于检测目标主机上指定端口的开放状态
  • 文件输入输出——NOI
  • React的基础API介绍(二)
  • 深入解析 OpenHarmony 构建系统-4-OHOSLoader类
  • 《MYSQL45讲》误删数据怎么办
  • 94个属于一区且接受医工交叉领域投稿的期刊汇总|个人观点·24-11-13
  • C++移动语义和lambda表达式
  • LINUX离线安装Milvus
  • C#-类:成员属性
  • 【日志】392.判断子序列
  • 基于SSM+VUE儿童接种疫苗预约管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • 家庭宽带如何开启公网ipv4和ipv6
  • 基于SpringBoot的城镇住房保障系统性能优化
  • 设计模式-七个基本原则之一-开闭原则 + SpringBoot案例
  • Leetcode 同构字符串
  • 美团代付微信小程序系统 read.php 任意文件读取漏洞复现
  • # SpringMVC学习
  • nginx代理出现的请求头中获取不到acc_token问题
  • 从零开始训练一个大语言模型需要多少天?
  • Python学习从0到1 day26 第三阶段 Spark ① 数据输入
  • 论文阅读(三十五):Boundary-guided network for camouflaged object detection
  • 设置JAVA以适配华为2288HV2服务器的KVM控制台
  • 游戏中Dubbo类的RPC设计时的注意要点
  • 2024系统架构师---上午综合题真题(重复考试知识难点)
  • 【LeetCode】【算法】279. 完全平方数
  • 【GeoJSON在线编辑平台】(1)创建地图+要素绘制+折点编辑+拖拽移动