时序数据库简介

这个小文章里尽量避免使用数据挖掘的概念, 争取用简单的语言解释出来, 如果以后有时间, 再仔细介绍几种开源时序数据库的结构和关键技术。

时序数据简单的说, 就是随着时间流而不断产生的数据, 比如一台服务器的cpu负载, 或者一个应用的log文件等。 对于这种时序数据, 有一些常用的操作, 比如统计每分钟的平均值, 中位数等。所谓时序数据库, 就是针对这类场景做了优化的一类数据存储查询系统。在OLAP中, 此类时序数据的统计有着重要的应用。 

我们用例子来说明时序数据以及对这些数据的处理。比如我们就以 cpu 使用率这个数据为例。假设我们一个集群有近百台服务器, 对于每台服务器, 我们每秒采集一次数据, 数据是服务器cpu 当前的 us sy id wa st 。那么, 我们采集到的数据除了这几个值之外一定还有数据的一些其它属性, 比如采集时间, 服务器编号, 服务器物理配置,服务器上主要的应用。 这些属性一般叫做维度(dimension)。此类数据实时产生, 我们最常用的查询可能类似这样:

最近1小时内, 每5分钟cpu使用率的平均值。-----在一个时间范围内, 按照时间段归类, 计算均值(也可能是中位数, 最大最小值, topN等)

最近6小时内, 每5分钟每种服务器类型cpu使用率的平均值。 最近1小时内, 每1分钟每台服务器的cpu使用率的平均值

最近1小时内, 每1分钟所有跑web service 应用的服务器的cpu使用率的平均值

综上, 我们看到这类数据处理基本是要对一个时间范围的数据, 根据时间段, 维度进行归类,做一些聚合运算。

时序数据库要解决的问题就是如何能在海量数据中, 快速响应用户的此类查询。

补充一种时序数据常用的操作, count distinct(基数统计), 比如从web 服务器的log里统计独立访问ip数量, 这种需求时序数据库也必须要解决。

时序数据库面临的主要困难是, 数据量大, 数据的维度多, 统计查询复杂, 需要快速响应查询。

时序数据有一个比较大的特点, 就是数据的价值随着时间流逝而逐步降低。

时序数据库解决这些问题的主要的技术手段有:分布式处理, 按照时间分片存储,按照维度条件做哈希, 通过位图索引优化查询, 尽量保证最新数据在内存中, 使用统计算法。后面我们以druid (http://druid.io/)为例来具体介绍这些技术的实现。 顺便提一下, druid 的文档写的不好, 甚至还有错误,如果想要测试druid, 要文档和 google group 结合起来。


广告时间

  大数据处理招聘了

  要求算法 数据结构等基础知识扎实

  良好的编程功底

  了解大数据解决方案

  有过高并发高压力系统设计开发经验

  熟练使用Linux系统 了解Linux内核

  工作地点在大连

  工作内容 line 相关大数据处理

  联系方式 简历发送至    dl_server_developer_recruit%nhn.com

  

  


你可能感兴趣的:(云计算)