目录

  • 1、时序数据
    • 1.1 定义
    • 1.2 数学模型
    • 1.3 数据特点
  • 2、存储优化
  • 3、存储原理
  • 4、时序数据模型
    • 4.1 基于标签(tag-value)
    • 4.2 基于树形(tree schema)

1、时序数据

1.1 定义

时序数据就是一串按时间维度索引的数据,这类数据描述了某个被测量的主体在一个时间范围内的每个时间点上的测量值。

对时序数据践行建模的话,会包含三个重要部分:主体,时间点和测量值。

我们经常接触到的监控数据就是一类时序数据,比如每间隔1秒机器内存的小时占用。

1.2 数学模型

时序数据的基本模型可以分成下面几个部分:

  • Metric:度量的数据集,类似于关系型数据库中的 table,是固定属性,一般不随时间而变化
  • Timestamp:时间戳,表征采集到数据的时间点
  • Tags:维度列,用于描述Metric,代表数据的归属、属性,表明是哪个设备/模块产生的,一般不随着时间变化
  • Field/Value:指标列,代表数据的测量值,可以是单值也可以是多值

常见TSDB中基本概念的对应关系

下图为某机器网络流量的时序数据

1.3 数据特点

  • 数据模式: 时序数据随时间增长,相同维度重复取值
  • 数据写入:持续高并发写入,更新操作极少
  • 数据查询:按不同维度对指标进行统计分析

2、存储优化

时序数据库产品的发明都是为了解决传统关系型数据库在时序数据存储和分析上的不足和缺陷,对应上述的数据特点,时序数据库大致做了一下优化:

  • 存储成本:

    利用时间递增、维度重复、指标平滑变化的特性,合理选择编码压缩算法,提高数据压缩比;
    通过预降精度,对历史数据做聚合,节省存储空间

  • 高并发写入:

    批量写入数据,降低网络开销;
    数据先写入内存,再周期性的dump为不可变的文件存储

  • 低查询延时,高查询并发:

    优化常见的查询模式,通过索引等技术降低查询延时;
    通过缓存、routing等技术提高查询并发

3、存储原理

传统数据库存储采用的都是 B tree,这是由于其在查询和顺序插入时有利于减少寻道次数的组织形式。我们知道磁盘寻道时间是非常慢的,一般在 10ms 左右。磁盘的随机读写慢就慢在寻道上面。对于随机写入 B tree 会消耗大量的时间在磁盘寻道上,导致速度很慢。

对于 90% 以上场景都是写入的时序数据库,B tree 很明显是不合适的。业界主流都是采用 LSM tree 替换 B tree,LSM tree 包括内存里的数据结构和磁盘上的文件两部分。

LSM tree 操作流程如下:

数据写入和更新时首先写入位于内存里的数据结构。为了避免数据丢失也会先写到 WAL 文件中。内存里的数据结构会定时或者达到固定大小会刷到磁盘。这些磁盘上的文件不会被修改。随着磁盘上积累的文件越来越多,会定时的进行合并操作,消除冗余数据,减少文件数量。

可以看到 LSM tree 核心思想就是通过内存写和后续磁盘的顺序写入获得更高的写入性能,避免了随机写入。但同时也牺牲了读取性能,因为同一个 key 的值可能存在于多个 HFile 中。为了获取更好的读取性能,可以通过其他方式进行优化。

4、时序数据模型

4.1 基于标签(tag-value)

时序数据一般分为两部分,一个是标识符(指标名称、标签或维度),方便搜索与过滤;一个是数据点,包括时间戳和度量数值。数值主要是用作计算,一般不建索引。从数据点包含数值的多少,可以分为单值模型(比如Prometheus)和多值模型(比如InfluxDB);从数据点存储方式来看,有行存储和列存储之分。一般情况下,列存能有更好的压缩率和查询性能。

4.2 基于树形(tree schema)

IoTDB与其他TSDB的数据模型最大的不同,没有采用标签(tag-value、Labels)模式,而是采用树形结构定义数据模式:以root为根节点、把存储组、设备、传感器串联在一起的树形结构,从root根节点经过存储组、设备到传感器叶子节点,构成了一条路径(Path)。一条路径就可以命名一个时间序列,层次间以“.”连接。

参考链接:
https://blog.miuyun.work
https://zhuanlan.zhihu.com/p/410255386
https://www.cnblogs.com/eyesfree/p/15394159.html
https://bbs.huaweicloud.com/blogs/300156
 
如有不对,烦请指出,感谢~

时序数据库基本概念学习相关推荐

  1. 小米正用时序数据库,解决这个“硬核”问题

    参加 2019 Python开发者日,请扫码咨询 ↑↑↑ 作者 | 许俊红 来源 | 小米云技术(id:mi-cloud-tech) 时序数据 根据维基百科的定义[1],时间序列是一组按照时间发生先后 ...

  2. 时序数据库连载系列: 时序数据库一哥InfluxDB之存储机制解析

    InfluxDB 的存储机制解析 本文介绍了InfluxDB对于时序数据的存储/索引的设计.由于InfluxDB的集群版已在0.12版就不再开源,因此如无特殊说明,本文的介绍对象都是指 InfluxD ...

  3. “清华数为”工业时序数据库IoTDB与DWF应用开发寒假师资培训圆满结束

    来源:数字技术学习中心本文约600字,建议阅读5分钟"清华数为"工业时序数据库IoTDB与基于DWF的大数据应用开发在线师资培训成功举办. 2021年1月21日至25日,大数据系统 ...

  4. 中国高校首个Apache开源项目 清华数为物联网时序数据库IoTDB 及可自由组装的大数据软件栈系列组件发布...

    四月的清华园,百花冠冕,春意盎然. 4月25日,清华软件学院师生校友相约云端,共贺清华大学109周年校庆,软件学院建院19周年. 由于疫情防控需要,软件学院通过腾讯会议和学堂在线在线直播方式,举办&q ...

  5. 时序数据库(TSDB)-为万物互联插上一双翅膀

    本文由  网易云 发布. 时序数据库(TSDB)是一种特定类型的数据库,主要用来存储时序数据.随着5G技术的不断成熟,物联网技术将会使得万物互联.物联网时代之前只有手机.电脑可以联网,以后所有设备都会 ...

  6. Spring Boot中使用时序数据库InfluxDB

    除了最常用的关系数据库和缓存之外,之前我们已经介绍了在Spring Boot中如何配置和使用MongoDB.LDAP这些存储的案例.接下来,我们继续介绍另一种特殊的数据库:时序数据库InfluxDB在 ...

  7. 深入浅出时序数据库之预处理篇——批处理和流处理,用户可定制,但目前流行influxdb没有做...

    时序数据是一个写多读少的场景,对时序数据库以及数据存储方面做了论述,数据查询和聚合运算同样是时序数据库必不可少的功能之一.如何支持在秒级对上亿数据的查询分组聚合运算成为了时序数据库产品必须要面对的挑战 ...

  8. 时序数据库深入浅出之存储篇——本质LSMtree,同时 metric(比如温度)+tags 分片...

    什么是时序数据库 先来介绍什么是时序数据.时序数据是基于时间的一系列的数据.在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性.规律性.异常性:往未来看可以做大数据分析,机器 ...

  9. 深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能...

    转自:https://yq.aliyun.com/topic/58?spm=5176.100239.blogcont69354.9.MLtp4T 摘要: Facebook最近开源了beringei时序 ...

最新文章

  1. 手动部署OpenStack环境(四:安装控制器必备软件)
  2. 机器学习的数学基础 - 特征分解与奇异值分解
  3. 6、struts.properties配置详解
  4. 用python画三维图、某区域的高程,python - 在PyQt中绘制具有高程和降低效果的3D矩形/多边形 - SO中文参考 - www.soinside.com...
  5. 山东大学 2020级数据库系统 实验三
  6. 高等组合学笔记(十五):容斥原理,错排问题
  7. [19/06/07-星期五] CSS基础_布局定位背景样式
  8. Emacs显示函数列表imenu-list
  9. curl基于URL的文件传输工具
  10. 成为嵌入式高手,少不了这100多个软硬件开源项目
  11. Python数据挖掘进阶--泰坦尼克号案例分析
  12. ecshop模板构建说明
  13. Halo博客 -- ③ 本地运行
  14. Python实战:利用Uplift模型识别营销敏感用户提升市场策略(二)
  15. 奥维地图看历史影像_如何在奥维中使用中国资源卫星影像图 | 奥维互动地图浏览器...
  16. 【iOS沉思录】Objective-C语言的动态性总结(编译时与运行时)
  17. 【线段树】【P5522】[yLOI2019] 棠梨煎雪
  18. HCNP-路由交换:GRE(通用路由封装协议)
  19. cuda9.0和cudnn7.3 win10百度网盘地址
  20. 2021年第十二届蓝桥杯A组省赛

热门文章

  1. Qt:C++应用程序开发入门
  2. mybatis拦截器实现update之前根据pk字段校验数据有效性
  3. 用邻接表dfs和bfs图
  4. IOS系统历届版本大回顾(iOS7)
  5. ROS人机交互软件开发
  6. 51单片机学习——9--温度传感器DS18B20
  7. Mac 允许所有来源软件
  8. 网络分级设计模型:核心层、汇聚层和接入层
  9. http常见状态返回码
  10. 5g空分复用技术_【从零开始学5G】空分复用与Pre5G