什么是时序数据?如何治理?有哪些应用场景?终于有人讲明白了( 六 )


4)不支持云端部署 , 更不支持SaaS 。
5)在传统的实时监控场景 , 由于对各种工业协议的支持比较完善 , 实时数据库还占有较牢固的市场地位 , 但是在工业大数据处理上 , 因为上述几个原因 , 几乎没有任何大数据平台采用它们 。
下面对几个典型的实时数据库进行介绍 。
1、InfluxDB
InfluxDB由Golang语言编写 , 也是由Golang编写的软件中比较著名的一个 , 在很多Golang的沙龙或者文章中可能都会把InfluxDB当标杆来介绍 , 这也间接帮助InfluxDB提高了知名度 。InfluxDB的主要特点包括:

  • schemaless(无结构) , 可以是任意数量的列
  • 可扩展(集群)
  • 方便、强大的查询语言
  • Native HTTP API
  • 集成了数据采集、存储、可视化功能
  • 实时数据Downsampling
  • 高效存储 , 使用高压缩比算法 , 支持retention polices
  • 数据采集支持多种协议和插件:行文本、UDP、Graphite、CollectD、OpenTSDB
InfluxDB是时序数据库中为数不多的进行了用户和角色方面实现的 , 提供了Cluster Admin、Database Admin和Database User三种角色 。
2、Graphite
Graphite是分布式时序列数据存储数据库 , 容易扩展 , 具备功能强大的画图Web API , 提供了大量的函数和输出方式 。主要功能包括:
  • 存储数值型时序列数据
  • 根据请求对数据进行可视化(画图)
Graphite本身不带数据采集功能 , 但是你可以选择很多第三方插件 , 比如适用于collectd、Ganglia或Sensu的插件等 。同时 , Graphite也支持Plaintext、Pickle和AMQP这些数据输入方式 。
Graphite使用了类似RRDtool的RRD文件格式 , 它也不像C/S结构的软件一样 , 没有服务进程 , 只是作为Python library使用 , 提供对数据的create/update/fetch操作 。google、Etsy、GitHub、豆瓣、Instagram、Evernote和Uber等很多知名公司都是Graphite的用户 。
3、OpenTSDB
这是一个Apache开源软件 , 是在HBase的基础上开发的 , 底层存储是HBase , 但其依据时序数据的特点做了一些优化 。其最大的好处就是建立在Hadoop体系上 , 各种工具链成熟 , 但这也是它最大的缺点 , 因为Hadoop不是为时序数据打造的 , 导致其性能很一般 , 而且需要依赖很多组件 , 安装部署相当复杂 。
OpenTSDB采用Schemaless模式 , 不用预先定义数据结构 , 因此写入灵活 , 但每个时间序列只能写入一个采集量 , 不支持多列写入 。每个序列可以被打上多个标签 , 以方便聚合操作 。总的来讲 , OpenTSDB的性能无论是写入还是查询 , 都很一般 , 而且系统的稳定性欠佳 。但吸引人的是 , 它支持集群部署和支持水平扩展 。
以腾讯的CTSDB时序数据库为例 , CTSDB是腾讯云推出的一款分布式、可扩展、支持近实时数据搜索与分析的时序数据库 。该数据库为非关系型数据库 , 提供高效读写、低成本存储、强大的聚合分析能力、实例监控以及数据查询结果可视化等功能 。整个系统采用多节点多副本的部署方式 , 有效保证了服务的高可用性和数据的高可靠性 。CTSDB 在处理海量时序数据时具有的优势包括:
  • 高并发写入:数据先写入内存 , 再周期性的 Dump 为不可变的文件存储 。且可以通过批量写入数据 , 降低网络开销
  • 低成本存储:通过数据上卷(Rollup) , 对历史数据做聚合 , 节省存储空间 。同时利用合理的编码压缩算法 , 提高数据压缩比
强大的聚合分析能力:支持丰富的聚合查询方式 , 不仅支持 avg、min、max 等常用的聚合方式 , 还支持 Group By、区间、Geo、嵌套等复杂聚合分析 。
4、TDengine
这是来自中国的开源软件 , 由涛思数据研发推出 。它不仅是一款时序数据库 , 而且还提供缓存、消息队列、数据订阅、流式计算等系列功能 , 是时序数据的全栈技术解决方案 。而且它不依赖任何第三方软件 , 安装包只有1.5MB , 使系统设计、安装、部署和维护都变得极为简单 。
什么是时序数据?如何治理?有哪些应用场景?终于有人讲明白了

文章插图


推荐阅读