【云驻共创】时序数据库是什么?跟普通数据库有哪些区别?
最近有个物联网的项目,无人机采集数据,需要记录无人机的飞行轨迹、飞行参数等,这些参数大概是每秒上报2条,那么一次飞行任务可能有10几分钟、20几分钟左右,考虑到数据量的大小以及实时性,我们考虑使用时序数据库。具体选用哪个数据库,这个不重要,开源的、商业的、国内的、国外的都可以,主要是好多小伙伴不懂时序数据库,那么本文笔者就用一篇文章给大家普及一下时序数据库。
一、什么是时序数据库
- 英文全称:
Time Series Database
- 英文缩写:TSDB
其实以前时序数据库就一直存在,只是用的人少,随着物联网 ( IoT ) 和其他革命性技术的不断发展,时序数据库再次登上了技术舞台。
我们都知道数据库是以某种方式存储的数据集合,例如,联系人列表是一个数据库,我们在其中可以记录姓名、地址、电话号码和电子邮件地址。数据库可以处理多种数据类型,具体取决于它们的结构或管理系统。
那么时序数据库 (TSDB) 是一种设计和优化的数据库,用于注册和存储始终与特定时间点相关联或使用时间戳的数据,所以时序数据库又被称为是时间戳数据库。
这种结构可以轻松地从任何数据源按时间顺序分析事件,也可以接收并发输入,使我们能够同时分析和存储多个数据流,甚至可以组合分析它们。
二、什么是时序数据
上面介绍了时序数据库,说白了就是存储跟时间紧密联系的数据,但是有没有想过什么是时序数据?什么样的数据才是时序数据?依据的标准是什么?与普通数据有啥区别?
2.1 时序数据的定义
时序数据其实就是在不同时间点收集并按时间排序的数据。
具体点就是单个主题(实体)在 不同时间间隔(通常在度量的情况下等间距,或在事件的情况下不等间距)的观察(行为)的集合 。
例如:每秒(多个时间间隔)收集的无人机(单个实体)的飞行轨迹、飞行参数(行为)。
时间是区分时序数据与其他类型数据的核心属性,用于按时间顺序组合收集的数据的时间间隔称为时序频率,因此,将时间作为主轴之一将是给定数据集是时序数据的主要指标。
时序数据可以用于多种用途和各个领域,因此数据集可能会有所不同,我们怎么去判定这个数据是时序数据呢?
三个标准可以参考一下:
- 数据按时间顺序到达;
- 时间是主轴;
- 新收集的数据记录为新条目。
2.2 时序数据的例子
- 传感器
- 监控
- 天气预报
- 股票价格
- 汇率
- 应用程序性能指标
2.3 处理时序数据的步骤
一般来说,处理时序数据分为5个步骤:
1、数据模型:
收集的时序数据必须符合模型的规范,包括所有时序数据的特征质量。
2、流计算:
对可用的时序数据进行预聚合、采样和后聚合。
3、数据存储:
存储系统允许冷热数据分离和高效的范围查询,提供高吞吐量、大容量和低成本的存储。
4、元数据检索:
支持多种检索方法,例如存储和检索数千万到数亿的时间线元数据。
5、数据分析:
最后一步实时分析和计算时序数据。
三、时序数据库的优缺点
3.1 优点
- 可以很好地处理高速数据
- 一次可以扫描大量数据
- 有很多时序数据库开源免费,选择性比较灵活
3.2 缺点
- 管理和设置方面没有关系型数据库方便,操作相对复杂
- 由于数据大小的不定,所以所要的空间要相对大一些
总体来说,不能说时序数据库不好或者好,根据场景和需求来选择。
四、时序数据库应用场景
4.1 物联网
物联网技术的发展,意味着连接的水表、能源、温度计、健康监测器和可穿戴设备等联网设备产生的数据量呈指数级增长,时序数据库可以应对高度可扩展的数据库架构的需求。
4.2 性能和健康监控
应用程序性能、按钮点击、热图、跳出率……所有这些都可以通过时序数据库进行测量和监控,以便开发人员可以跟踪用户习惯和性能趋势,识别瓶颈并简化复杂的流程。
4.3 金融趋势和零售预测
时序数据库对于跟踪和分析市场波动至关重要,检测相关事件之间的因果关系并与历史数据交叉引用可以在股市中获利,并帮助零售商店预测未来趋势以预测库存需求。
4.4 自动驾驶数据
自动驾驶汽车在驾驶过程中会产生令人难以想象的数据量,时序数据库可以处理这些大量的实时数据,有助于提高驾驶安全性。
4.5 DevOps/服务器/容器监控
系统通常会收集有关不同服务器或容器的指标:CPU 使用率、空闲/已用内存、网络 tx/rx、磁盘 IOPS 等,每组指标都与时间戳相关联,那么这些数据可以用时序数据库进行存储和分析。
4.6 网络安全
网络安全对于企业来说非常重要,被黑客攻击的事件经常会发生,企业减轻安全威胁的一种方法是不断监控其网络上的活动,而时序数据库可以存储更细粒度的数据,并允许实时监控该数据。当前数据可以与历史数据进行比较,并且可以快速检测到异常情况,来防止或减少安全漏洞的影响。
五、时序数据库产品
根据权威网站db-engines
的统计,直至2022年9月全球排名前30的时序数据库有:
一般我们常用的也就是排名在前10的产品:
- InfluxDB
- Kdb+
- Graphite
- Prometheus
- TimescaleDB
- Apache Druid
- RRDtool
- OpenTSDB
- DolphinDB
六、时序数据库和普通数据库的区别
这里说的普通数据库一般就是指关系型数据库。
6.1 数据压缩情况
普通数据库将它们的数据按行存储在磁盘上,不同的数据类型彼此相邻,这限制了可以使用什么类型的压缩算法以及可以压缩多少数据。
而时序数据库通常以相同类型的数据点彼此相邻的方式存储数据,这样的话可以使用最佳压缩算法,大大节省了存储成本。
6.2 数据库架构
普通数据库底层是定义好模式的,所以对于表本身,不管是修改还是删除某一列,都会影响到数据库的模式,在底层相当于要进行”数据库迁移“。
而时序数据库往往是无模式的,允许快速轻松地添加新字段。
6.3 可用性和冗余
普通数据库可以通过集群存储的方式提供高可用性,但它们容易受到网络可用性的影响,如果连接断开,数据收集将停止。
而时序数据库通过收集器的冗余可以确保良好的可用性,时序数据库一般带有存储转发技术,如果发生中断,该技术会在收集器处缓冲数据,当服务器自动重连时,缓冲区最终会同步上传,确保不会丢失数据。
6.4 数据安全
数据库被黑客和病毒攻击的事件频繁发生,中枪的大多数是知名的关系数据库,常见的攻击比如有:SQL 注入。
而时序数据库一般不允许通过标准接口插入、更新或删除数据,此外,时序数据库会跟踪所有更改,包括使用访问、配置、安全违规和系统警报。
七、总结
时序数据库现在出场率越来越高,我们在选型时序数据库的时候要根据自己项目需求来进行选择。对于时序数据库,本文着重介绍了时序数据和时序数据库的术语解释、时序数据库的优缺点、时序数据库应用场景、时序数据库和普通数据库的区别。希望本文的介绍对您学习时序数据库有帮助,有任何问题可以在下方评论区与我讨论。
本文参与华为云社区【内容共创】活动第20期。
https://bbs.huaweicloud.com/blogs/374925
- 点赞
- 收藏
- 关注作者
评论(0)