博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
时间序列数据库的选择条件
阅读量:7297 次
发布时间:2019-06-30

本文共 755 字,大约阅读时间需要 2 分钟。

最后再感叹一下,我们为什么到今天还要去寻找好用的时间序列数据库。因为传统的实现约束太多,而且效率也不佳。

最完整的时间序列的逻辑数据模型如下:

[timestamp],[d1],[d2]...[dn],[v1],[v2]...[vn]

d1 ~ dn 是维度,比如 ip, idc, country 之类的值

v1 ~ vn 是值列,比如 cpu_usage, free_memeory_bytes 之类的值

一些时间序列数据库在实现的时候为了简化实现,提高性能约束了一个更简化的数据模型:

[timestamp],[metric],[value]

opentsdb稍微要好一些,支持了tag,但是也是不完整的模型

[timestamp],[metric],[tagk=tagv],...[value]

我们希望有一个什么样的时间序列数据库:

  1. 不要限制数据模型。支持多个维度,支持多个值。维度要可以支持中文。允许一个周期内存多个值。
  2. 能够按时间范围快速读取原数据 (索引首先为时间维度优化)
  3. 对于选择性高,或者常用的维度,希望能够彼此隔离。也就是指定了维度去查的时候可以不用扫描所有的数据。(索引可选的为重要维度优化)
  4. 服务器端高效地完成维度聚合
  5. 聚合不用每次都做,支持预先计算
  6. 尽可能的利用时间维度和其他维度的重复性减少存储空间,存储自身是压缩的,占用越小越好
  7. 分布式,能够用加机器解决性能和可靠性问题

很多现成的时间序列数据库在这两个方面做得非常糟糕:

  1. 限制数据模型,必须把所有信息都编码到一个metric名上
  2. 读取原数据都相对比较快,但是一旦数据需要聚合就变得很慢,甚至无法在服务器端完成维度聚合
    这些数据库逼迫其用户把所有的视图都物化成表。如果你看的视图和存的格式不一样,那么就不行,或者很慢。

参见:

转载地址:http://aimjm.baihongyu.com/

你可能感兴趣的文章
MySQL 数据类型 详解
查看>>
TreeMap 的排序
查看>>
解决JOOQ的Database product name must not be null问题
查看>>
终于有人把SDH、MSTP、OTN和PTN的关系解释清楚了……
查看>>
H5面试----介绍一下 CSS 的盒子模型
查看>>
版本管理规范
查看>>
ssh登陆不需要密码(配置信任有关系)
查看>>
Kubernetes[4]—RC(复制控制器-副本集)
查看>>
Citrix XenServer 优化
查看>>
js仿京东轮播图效果
查看>>
x-manager 管理 kvm虚拟机
查看>>
MySQL同步时,出现的ERROR 1201 (HY000)错误解决方法
查看>>
TurboMail邮件系统异地分布式部署方案
查看>>
我的友情链接
查看>>
Executors.newFixedThreadPool和ArrayBlockingQueue一点使用心得
查看>>
Android异步从网络下载图片并且缓存图片到本地的demo
查看>>
Linux Shell编程入门
查看>>
JAVA调用返回XML格式数据的WebService,并通过XPath解析XML的应用
查看>>
虚拟机windows中编译环境的分辨率能否固定
查看>>
Python-函数
查看>>