Prometheus时序数据库-磁盘中的存储结构 前言 之前的文章里,笔者详细描述了监控数据在Prometheus内存中的结构.而其在磁盘中的存储结构,也是非常有意思的,关于这部分内容,将在本篇文章进行阐述. 磁盘目录结构 首先我们来看Prometheus运行后,所形成的文件目录结构 在笔者自己的机器上的具体结构如下: prometheus-data |-01EY0EH5JA3ABCB0PXHAPP999D (block) |-01EY0EH5JA3QCQB0PXHAPP999D (block)…
Prometheus时序数据库-内存中的存储结构 前言 笔者最近担起了公司监控的重任,而当前监控最流行的数据库即是Prometheus.按照笔者打破砂锅问到底的精神,自然要把这个开源组件源码搞明白才行.在经过一系列源码/资料的阅读以及各种Debug之后,对其内部机制有了一定的认识.今天,笔者就来介绍下Prometheus的存储结构. 由于篇幅较长,所以笔者分为两篇,本篇主要是描述Prometheus监控数据在内存中的存储结构.下一篇,主要描述的是监控数据在磁盘中的存储结构. Gorilla Pr…
Prometheus时序数据库-数据的插入 前言 在之前的文章里,笔者详细的阐述了Prometheus时序数据库在内存和磁盘中的存储结构.有了前面的铺垫,笔者就可以在本篇文章阐述下数据的插入过程. 监控数据的插入 在这里,笔者并不会去讨论Promtheus向各个Endpoint抓取数据的过程.而是仅仅围绕着数据是如何插入Prometheus的过程做下阐述.对应方法: func (a *headAppender) Add(lset labels.Labels, t int64, v float64…
Prometheus时序数据库-数据的查询 前言 在之前的博客里,笔者详细阐述了Prometheus数据的插入过程.但我们最常见的打交道的是数据的查询.Prometheus提供了强大的Promql来满足我们千变万化的查询需求.在这篇文章里面,笔者就以一个简单的Promql为例,讲述下Prometheus查询的过程. Promql 一个Promql表达式可以计算为下面四种类型: 瞬时向量(Instant Vector) - 一组同样时间戳的时间序列(取自不同的时间序列,例如不同机器同一时间的CPU…
摘要:2017年时序数据库忽然火了起来.开年2月Facebook开源了beringei时序数据库:到了4月基于PostgreSQL打造的时序数据库TimeScaleDB也开源了,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时... 2017年时序数据库忽然火了起来.开年2月Facebook开源了beringei时序数据库:到了4月基于PostgreSQL打造的时序数据库Time…
Prometheus时序数据库-报警的计算 在前面的文章中,笔者详细的阐述了Prometheus的数据插入存储查询等过程.但作为一个监控神器,报警计算功能是必不可少的.自然的Prometheus也提供了灵活强大的报警规则可以让我们自由去发挥.在本篇文章里,笔者就带读者去看下Prometheus内部是怎么处理报警规则的. 报警架构 Prometheus只负责进行报警计算,而具体的报警触发则由AlertManager完成.如果我们不想改动AlertManager以完成自定义的路由规则,还可以通过we…
Atitit.数据库表的物理存储结构原理与架构设计与实践 1. Oracle和DB2数据库的存储模型如图: 1 1.1. 2. 表数据在块中的存储以及RowId信息3 2. 数据表的物理存储结构 自然数序,与btree存储结构3 2.1. 普通表中记录的存储顺序随机顺序存储3 2.2. 数据库以B树格式储存, 4 3. 分区4 4. 行记录的物理结构 以及 RowId4 5. Oracle中具有如下几类数据结构:5 6. 参考7 1. Oracle和DB2数据库的存储模型如图: Oracle和D…
MySQL索引(二)B+树在磁盘中的存储 回顾  上一篇文章<MySQL索引为什么要用B+树>讲了MySQL为什么选择用B+树来作为底层存储结构,提了两个知识点: B+树索引并不能直接找到行,只是找到行所在的页,通过把整页读入内存,再在内存中查找. 索引的B+树高度一般为2-4层,查找记录时最多只需要2-4次IO. 为进一步知其所以然,今天来聊聊B+树索引在物理磁盘上是怎么设计存储的. 一.理解为什么要减少磁盘IO次数 众所周知,MySQL的数据实际是存储在文件中,而磁盘IO的查找速度是要远…
本来续---数字图像处理之位图在计算机中的存储结构一文,通过参考别人的代码,进行修改和测试终于成功运行. 该实例未使用任何API和相关类,相信如果对此实例能够完全理解那么将有进一步进行数字图像处理的能力. 该实例实现三个功能: 1.读取位图文件数据. 2.将位图中像素数据保存到TXT中. 3.根据读取的位图函数中的数据保存位图文件. 具体代码如下,并附有详细注释: 头文件BmpNew.h如下: typedef unsigned char BYTE; typedef unsigned short…
InfluxDB 的存储机制解析 本文介绍了InfluxDB对于时序数据的存储/索引的设计.由于InfluxDB的集群版已在0.12版就不再开源,因此如无特殊说明,本文的介绍对象都是指 InfluxDB 单机版 1. InfluxDB 的存储引擎演进 尽管InfluxDB自发布以来历时三年多,其存储引擎的技术架构已经做过几次重大的改动, 以下将简要介绍一下InfluxDB的存储引擎演进的过程. 1.1 演进简史 版本0.9.0之前 **基于 LevelDB的LSMTree方案** 版本0.9.0…