一般人们谈论时间序列数据库的时候指代的就是这一类存储。按照底层技术不同可以划分为三类。

  • 直接基于文件的简单存储:RRD Tool,Graphite Whisper。这类工具附属于监控告警工具,底层没有一个正规的数据库引擎。只是简单的有一个二进制的文件结构。
  • 基于K/V数据库构建:opentsdb(基于hbase),blueflood,kairosDB(基于cassandra),influxdb,prometheus(基于leveldb)
  • 基于关系型数据库构建:mysql,postgresql 都可以用来保存时间序列数据

另外一类数据库其表结构是:

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

其优化的查询方式不限于查询原始数据,而是可以组合查询条件并且做聚合计算,比如:

SELECT d2, sum(v1) / sum(v2) FROM metric WHERE d1 =“A” AND timestamp >= B AND timestamp < C GROUP BY d2

我们希望时间序列数据库不仅仅可以提供原始数据的查询,而且要支持对原始数据的聚合能力。这种聚合可以是在入库阶段完成的,所谓物化视图。也可以是在查询阶段完成,所谓实时聚合。根据实际情况,可以在这两种方式中进行取舍。

想要在在查询阶段做数据的聚合和转换,需要能够支持以下三点。

  • 用索引检索出行号:能够从上亿条数据中快速过滤出几百万的数据。
  • 从主存储按行号加载:能够快速加载这过滤出的几百万条数据到内存里。
  • 分布式计算:能够把这些数据按照GROUP BY 和 SELECT 的要求计算出最终的结果集。

要想尽可能快的完成整个查询过程,需要在三个环节上都有绝招。传统上说,这三个步骤是三个不同的技术领域。

  • 检索:这是搜索引擎最擅长的领域。代表产品是Lucene。其核心技术是基于高效率数据结构和算法的倒排索引。
  • 加载:这是分析型数据库最擅长的领域。代表产品是C-store和Monetdb。其核心技术是按列组织的磁盘存储结构。
  • 分布式计算:这是大数据计算引擎最擅长的领域。代表产品是Hadoop和spark。其核心技术是sharding 和 map/reduce等等。

前面提到的时间序列库(比如opentsdb)有不少从功能上来说是没有问题。它们都支持过滤,也支持过滤之后的聚合计算。在数据量小的时候勉强是可用的。但是如果要实时从十亿条里取百万记录出来,再做聚合运算,对于这样的数据量可能就勉为其难了。满足海量数据实时聚合要求的数据库不多,比较常见的有这么几种:

  • 基于Lucene构建的“搜索引擎”:Elasticsearch, Crate.io(虽然是基于Elasticsearch,但是聚合逻辑是自己实现的),Solr;
  • 列式存储数据库:Vertica(C-store的后裔)Actian(Monetdb的后裔)等;
  • Druid.io。

摘自:http://www.infoq.com/cn/articles/database-timestamp-01

转载于:https://www.cnblogs.com/bonelee/p/6432562.html

时间序列数据库概览——基于文件(RRD)、K/V数据库(influxDB)、关系型数据库...相关推荐

  1. Hypersonic SQL开源数据库方向比较流行的纯Java开发的关系型数据库

    Hypersonic SQL Hypersonic SQL开源数据库方向比较流行的纯Java开发的关系型数据库.好像不是JDBC兼容的,JDBC的很多高级的特性都没有支持,不过幸好支持ANSI- 92 ...

  2. c access mysql数据库_基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)...

    基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo) 一.三种数据库的主要对比 数据库类型 特点 Microsoft Access 桌面数据库.数据库载体是单个文件 ...

  3. 将数据库服务器的文件D 改名为,MySQL如何更改数据库数据存储目录详解

    前言 MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录.下文总结整理了实践过程的操作步骤.话不多说了,一起来看看吧 ...

  4. mysql 应用前景_图数据库在企业应用中前景如何,相比关系型数据库有哪些优势?...

    图数据虽然在国内的应用还不是非常广泛,但发展前景还是很可观的. 跟以Oracle为代表的传统关系型数据相比,图的逻辑可以很好的解决绝大多数底层数据分析问题, 图数据的数据逻辑维度要远高于关系型数据,所 ...

  5. 《图数据库(第2版)》——2.1 关系型数据库缺少联系

    本节书摘来自异步社区出版社<图数据库(第2版)>一书中的第2章,第2.1节,作者:[美]Ian Robinson(伊恩•罗宾逊) , Jim Webber(吉姆•韦伯) , Emil Ei ...

  6. 纯java数据库_HSQLDB(Hypersonic SQL),纯Java开发的开源关系型数据库

    HSQLDB(Hypersonic SQL)是纯Java开发的关系型数据库,提供了一个小型的,快速多线程的,支持事务的内存型数据库,也支持基于硬盘的表模型,并支持内嵌和服务器模式.它提供JDBC驱动存 ...

  7. oracle数据库表excel文件位置,Excel数据导入到oracle数据库表方法

    最近工作中碰到excel文件数据导入oracle数据库表中的技术问题.以前未处理过,决定利用这次机会,好好研究研究. 可先建一临时表,字段和要导入的Excel表的列一致 运行以下SQL语句,使临时表可 ...

  8. android 创建文件夹_Android安全(四)数据库 之 SQLite数据库

    每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库-SQLite.SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据 ...

  9. 电子词典——项目(文件编程、网络编程、sqlte3数据库)

    基于文件IO.网络编程.sqlite3数据库--电子词典 一.电子词典主功能介绍 1.注册:客户端发起注册请求,服务器检测到请求后从用户数据库中遍历是否有该账号存在,若没有则直接注册:若存在该账号则注 ...

最新文章

  1. paramiko 使用总结(SSH 操作远端机器)
  2. hdu 1569 方格取数(2) 最大点权独立集
  3. ensp小实验走起来(路由下发、MSTP、VRRP、DHCP、DHCP中继、NAT、链路聚合)之配置
  4. linux 音频文件播放文件管理,linux dsp 播放音频文件
  5. 数据库新增幂等操作_使用数据库唯一键实现事务幂等性
  6. 产品经理学习总结(2)——实用的BRD产品文档模板参考
  7. android device action and adb command
  8. java webcms系统源码_java轻量级的CMS系统-天梯
  9. 一个ABC眼中的中国的创业环境(一)
  10. setactive隐藏之后无法显示_U盘里面有文件但是看不见无法显示文件的解决方法...
  11. 网络拓扑图自动生成_SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer
  12. 数组作为方法的参数实例和细节(Java)
  13. 机器学习入门--神经元模型
  14. ant design pro模板_ant design pro超详细入门教程
  15. 一张电影票引发的思考,谈谈边际成本和机会成本
  16. 跨模态行人重识别研究综述
  17. 【程序设计训练】3-15 公交系统
  18. 缓冲区溢出攻击(详细解析)
  19. ISAM error: no free disk space故障分析处理
  20. 【财经期刊FM-Radio|2020年11月03日】

热门文章

  1. cgicc thttpd经常用的调试命令
  2. python语言跨平台语言吗_python属于跨平台语言吗?
  3. python编程学习笔记_python编程:从入门到实践学习笔记-Django开发用户账户(一)...
  4. vim插件自动补齐_Vim7.3.3使用Autocomplpop自动补全插件报错解决办法
  5. c语言 浮点型数据怎么存放,C语言学习之浮点型数据存储
  6. dat关闭某进程_超详细解析!工程师必会的Linux进程间通信方式和原理
  7. 7-29 修理牧场 (25 分)
  8. java mysql 删除 博客园_mysql的增删改查
  9. 发那科机器人注油_如何给发那科机器人做三年保养?干货!
  10. 怎么升级浏览器_下载的chrome无法访问此网站怎么解决