大家好,又见面了,我是你们的朋友全栈君。
文章目录
一、什么是时序数据库
二、时序数据库的查询_聚合查询
1.基于统计的聚类
2.基于形状的聚类
3.基于深度学习的聚类
4.时间序列聚类的特征
三、时序数据的预处理
1.批处理
2.流式处理
总结
一、什么是时序数据库
广义认为是按照时间顺序存储的一系列数据。
常用场景:
电力行业、化工行业、气象行业、地理信息等各类型实时监测、检查与分析设备所采集、产生的数据
特点:
1)产生频率快(每一个监测点一秒钟内可产生多条数据) 2)严重依赖于采集时间(每一条数据均要求对应唯一的时间) 3)测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量) 4)数据不可变:一旦插入到数据库之中,在过期或删除之前,数据点不会进行任何修改。
二、时序数据库的查询_聚合查询
时序数据库的数据量很大,采集数据频繁,一般不支持对于历史高精度数据的查询(查询成本太高,且一般不具有规律性,不能提供参考意义)
1.基于统计的聚类
这类方法从时序数据中抽取统计特征,如平均值、方差、倾斜度,以及一些高阶特征等,如ARIMA模型的系数、分形度量(fractal measures)等。或是划分窗口,在每个窗口内计算这些统计特征,再进行汇总。
关注不同序列在统计特性上的差异,那么可以提取时序的统计特征,基于提取的统计等特征进行计算欧式距离的KMeans的聚类。
2.基于形状的聚类
许多时序数据往往具有相同的变化模式(如上升、下降、上升等),因此可以根据这些时序数据的形状相似性将变化模式相似的序列聚在同一个类,可以忽略数据在整幅、时间尺度等的差异。
关注形状的相似,那么可以使用执行SBD计算距离的k-shape聚类。
3.基于深度学习的聚类
该类方法主要基于autoencoder模型将时序数据转换为低维的隐空间,现有的变分自编码器(variational autoencoder)等虽然能够在一定程度上容忍噪声、异常值等。
想要捕捉时序的动态特性,可以使用深度学习的seq2seq对隐式向量进行聚类。
4.时间序列聚类的特征
(1)时间序列的聚类和普通的横截面数据聚类不一样;
(2)时间序列聚类的难点在于如何衡量两个时间序列之间的距离(相似性);
(3)使用欧式距离等传统的距离衡量方式去衡量时间序列之间的距离是不可靠的;
(4)可以使用DTW(动态时间规整)的方法去衡量时间序列的距离(相似性);
(5)当求出了时间序列之间的距离矩阵后,用啥聚类方法就问题不大了,层次聚类都行。
三、时序数据的预处理
1.批处理
批处理是使用 pull 的方式查询时序原始数据,预先进行聚合运算获取数据结果写入时序数据库,当进行聚合查询时直接返回预处理后数据结果。时序数据库定期轮询规则,根据采样窗口创建预处理任务,任务根据规则信息形成多个任务队列。队列内任务顺序执行,队列间任务并发执行,多任务队列保证了多租户对计算资源共享。
优点:支持对历史时序数据的处理,实现简单
缺点:查询数据量大,非实时
2.流式处理
当数据时间戳到达采样窗口时,在内存中实时计算,写入时序数据库。相当于对时序数据库进行实时计算。
优点:数据实时计算,无需查询原始数据
缺点:需要特殊处理写入的历史数据,也需要处理运算过程中崩溃的计算单元
总结
以上整合了目前查到的时序数据库与自己所需相关的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185919.html原文链接:https://javaforall.cn