|
知识路径: > 数据库技术 > 数据库技术基础 > 数据库模型 > 典型数据库:RDB(关系数据库)、OODB(面向对象数据库)、ORDB(对象关系数据库)、XML数据库、NoSQL(非关系数据库) > 非关系型数据库NoSQL > NoSQL数据库的种类 > 其他存储模式 >
|
相关知识点:3个
|
|
|
|
时间序列数据库是指具有处理时间序列数据,能对时间数据数组建立索引的优化数据库系统。时序数据与每个人存在紧密联系。如电商系统获取每笔订单交易金额和支付金额的价格曲线,随时间变化的温度轨迹,能量消耗的负荷消耗断面轮廓等。这些曲线、轨迹、轮廓被统称为时间序列。
|
|
|
流数据库又被称为实时数据库,这是一种使用实时处理数据的方式来处理状态不断变化的数据库系统。对时间序列的数据库提出实时的处理要求,那么时间数据库就是流数据库。例如股票的价格、自动驾驶汽车的数据曲线等都需要实时计算处理,此时流数据库发挥巨大作用。
|
|
|
归结起来,业务场景选择时间序列与流数据库这类NoSQL数据库而非通用的数据库有两个核心原因:
|
|
|
(1)规模:时间序列的数据积累速度很快。在当前的物联网时代,一辆联网的汽车每小时产生的数据达到几百GB。关系型数据库处理这种大型数据集的效果糟糕,而针对时间序列数据微调过后的数据库能够很好地处理规模数据。时间数据库将时间作为最高优先级处理,通过提高区间数据实时查询效率来处理这种大规模数据,并带来性能的提升,包括:每秒的写入速度,能够支撑的设备指标量,读取数据的速率和高存储压缩比。
|
|
|
(2)可用性:时间序列数据库有一些特有的功能和操作,如数据保留策略、连续查询、灵活的时间聚合等。并且其具有很好的扩展性,如时序数据插值计算,降精度计算,聚合计算等,在非时序数据库中都不具备这种能力。
|
|
|
企业开发人员越来越多地采用时间序列数据库,并将它们用于各种使用场景。这里介绍两种常见的时间序列数据库InfluxDB、OpenTSDB。
|
|
|
InfluxDB是一款专业的时序数据库,只存储时序数据,因此在数据模型的存储上可以针对时序数据做非常多的优化工作。为了保证写入的高效,InfluxDB也采用LSM(Log-Structured Merge Tree)结构,这种结构的核心思想是放弃部分的读能力,换取写入的最大化能力。数据先写入内存,当内存容量达到一定阈值之后更新到文件。这种设计是将时间序列数据按照时间线挑出来,同一数据源的标签不再冗余存储,另一方面给定数据源和时间范围的数据查找,实现了倒排索引增强了多维条件查询的功能,拥有强大的聚合功能,可以非常高效地进行查找。
|
|
|
OpenTSDB基于HBase存储时序数据,以metric为单位,metric就是1个监控项,譬如服务器的话,会有CPU使用率、内存使用率这些metric,并且数据存储支持到秒级别。OpenTSDB支持数据永久存储,即保存的数据不会主动删除,并且原始数据会一直保存(有些监控系统会将较久之前的数据聚合之后保存)。
|
|
|