时序列数据库武斗大会之TSDB名录 Part 2

【编者按】
刘斌,OneAPM后端研发工程师,拥有10多年编程经验,参与过大型金融、通信以及Android手机操作系的开发,熟悉Linux及后台开发技术。曾参与翻译过《第一本Docker书》、《GitHub入门与实践》、《Web应用安全权威指南》、《WEB+DB PRESS》、《Software Design》等书籍,也是Docker入门与实践课程主讲人。本文所阐述的「时间序列数据库」,系笔者所负责产品 Cloud Insight 对性能指标进行聚合、分组、过滤过程中的梳理和总结。

在前面《时序列数据库武斗大会之 TSDB 名录 Part 1》我们已经介绍了一些常见的 TSDB,这里我们再对剩余的一些TSDB 做些简单介绍。

10.Geras

Geras 是一个专注于 IoT 的领域(当然不仅限于传感器采集到的数据)可扩展的、分布式的时序列数据库,用于帮助用户进行快速分析。Geras 是一个 SaaS 服务,但是你也可以购买软件自己部署、托管。Geras 提供了免费版,它不对数据存储的时间和数据量做任何限制,只是不提供 SLA 而已。不过他们的 SaaS 主页我却一直没打开过,貌似该 DNS 记录已经不存在了,官方相关资料也不多,真怀疑这个项目已经废弃了,该产品已经演化为新产品。

Geras 速度非常快,它支持对任何时间精度进行 Rollup,也支持保存原始数据的精度。它专门为写操作进行了优化,可以接收海量设备的数据输入。

Geras 运行在容错、分布式数据存储之上,支持水平扩展,可以在不停止服务的前提下对系统容量进行调整。

Geras 也提供了一套可视化界面,方便的对设备、传感器等进行管理,对 metric 进行图表的可视化等。

Geras 支持多种技术来进行数据存储、查询和展示,比如 HTTPS、JSON、RESTful、SenML、MQTT、HyperCat,设备数据可以通过 HTTP POST 或者轻量 MQTT 发布。

11.Akumuli

Akumuli 名称来自 accumulate,是一个数值型时间序列数据库,可以存储、处理时序列数据。

它的特点如下:

  • 基于日志结构的存储
  • 支持无序数据
  • 实时压缩
  • 基于HTTP的JSON查询支持
  • 支持面向行和面向列的存储
  • 将最新数据放入内存存储
  • 通过metric和tag组织时序列数据,并且可以通过tag进行join操作。
  • Resampling (PAA transform),滑动窗口
  • 通过基于TCP或UDP的协议接收数据(支持百万数据点每秒)
  • Continuous queries (streaming)

Akumuli 由两部分组成:存储引擎和服务程序。目前只有存储引擎被实现了,而且存储引擎可以在没有服务程序的情况下作为嵌入式数据库单独使用(类似sqlite),也就是说,你得通过自己编写程序使用它的 API 来实现数据读写。

Akumuli 的数据协议基于 Redis,它的数据格式也和前面看到的不太一样,比如:

每条数据由三部分组成,第一部分称为 ID,可以是数值型(以“:”开始),或者是字符串(以“+”开始),比如这个例子中,cpu host=machine1 region= europe就是 ID,它由两部分组成,cpu 是metric,hostregion则被称为 key。

数据的第二部分可以是时间戳(:1418224205),这里的格式为ISO 8601(+20141210T074343.999999)

第三部分为值部分。

类似上面的数据结构,它的query也比较容易理解:


Akumuli 目前还处于开发状态,不适合在生产环境下使用。

12.Atlas

这个和波士顿动力的机器人 Atlas,以及其他很多知名软件(HashiCorp、O'reilly)都重名了。

Atlas 用于存储带维度信息的时序列数据,由 Netflix 开发,用于实时分析。Atlas 使用了基于内存的存储,速度非常快。在 2011 年的时候,Netflix 使用自己开发的 Epic 工具来管理时序列数据,这是一个采用 perl、RRDTool 和 MySQL 构建的系统,但是随着数据量的增大(2M->1.2B),他们创建了这个新项目。

如果说商业智能(business intelligence)是从数据基于时间分析出趋势的话,那么 Atlas 可以说是一种运维智能(operational intelligence),能给用户描述出当前系统所发生的所有情况。

Atlas 的设计目标主要有3点:

  • 通用API
  • 可扩展
  • 维度支持

Atlas 具备和 OpenTSDB 以及 InfluxDB 类似的metric/datapoint/tag的概念,同时它也有自己独自的特性,比如增加了步长(step-size)的概念。

Atlas 采用了类似 RRDtool 的查询语法,它们都通过一种对 URL 友好的语法来支持复杂的数据查询。

一句话点评:背靠大树好乘凉,可以试试。

13.Blueflood

Blueflood 由 Rackspace 的 Cloud Monitoring 团队创建,用于管理 Cloud Monitoring 系统产生的 metric 数据。如果你还不熟悉 Rackspace 这个公司的话,可以去网上了解一下,它也是比较大的云计算公司。

除了自己使用,Rackspace 还提供了免费的 Blueflood-as-a-Service,此外还有一些大公司也在准备使用 Blueflood。

Blueflood 特点如下:

  • built on top of Cassandra
  • 基于HTTP API/JSON的数据采集(ingest)和读取
  • 支持数值、布尔和字符串metric data
  • 多租户
  • 水平扩展

Blueflood 主要由以下模块构成:

  • Ingest - 采集/写入数据
  • Rollup - 聚合计算
  • Query - 处理用户查询

不过遗憾的是 Blueflood 现在没有一个类似 tag 的多维度方案。

一句话点评:背靠大树好乘凉,可以试试。

14.Gnocchi

Gnocchi 是 OpenStack 项目的一部分,但它也能独立工作。

Gnocchi 是一个多租户的时间序列、metric 和资源(resource)数据库。它提供了一组 HTTP REST API 来创建和管理数据。

Gnocchi 以在云就算环境中存储大量 metric 信息为设计出发点,为用户提供 metric 和资源展示功能,同时它也很容易扩展。

Gnocchi 特点如下:

  • HTTP RES 接口
  • 水平扩展
  • Metric 聚合
  • 支持批处理
  • 支持归档功能
  • 按 Metric 值查找(这个在 TSDB 很少见)
  • 多租户支持
  • 对 Grafan 的支持
  • 支持 Statsd 协议

Gnocchi 后端存储支持一下4种方式:

  • File
  • Swift
  • Ceph (推荐方式)
  • InfluxDB (实验功能)

前三种方式基于一个名为 Carbonara 的库,这个库负责对时间序列数据的管理,因为这三种存储方案本身并不关心数据的特点。InfluxDB 前面已经说过,本身就是一个 TSDB。

15.Newts

Newts 是基于 Cassandra 的时序列数据库。正如其名所示,它是一个 “New-fangled Timeseries Data Store”。它的开发者是 OpenNMS,这也是一个知名的开源网络监控和管理平台。

Newts 基于 Cassandra,对写优化、完全分布式,吞吐量非常高;通过将类似的 metric 分组存储,让写和读更高效。

16.SiteWhere

SiteWhere 是一个开源的 IoT 开放平台,帮助用户快速将 IoT 应用推向市场。SiteWhere 提供了一套完整的设备管理解决方案,通过 MQTT、AMQP、Stomp 和其他协议连接设备,支持自注册、REST 和批处理方式注册设备。

SiteWhere 也提供了可扩展的大数据解决方案,底层采用经优化的 MongoDB 和 HBase,为存储设备事件提供了时序列数据库,且经过 Hortonworks 和 Cloudera 的测试。

SiteWhere 还内嵌了 Siddhi 用于 Complex Event Processing (CEP),提供了 Azure EventHub、Apache Solr 以及 Twilio 的集成,以及 Android 和 Arduino 平台开发用的 SDK。

SiteWhere 的部署方式也很灵活,支持公有云、私有机房,Ubuntu Juju 和 Docker 的部署方式。

SiteWhere 也支持多租户,不同的租户数据分开存储,还能为不同的租户提供不同的处理引擎,租户的启动、停止互不影响。

SiteWhere 的 service provider interfaces(SPIs) 提供了平台的核心对象模型,第三方可以对平台进行扩展。

一句话点评:开源、功能强大、一体化方案。作为 IoT 平台,SiteWhere 算是这几个中不错的。

建议你接着看一下它的 System Overview 和 System Architecture 以对这个系统有更深入的了解。

17.TempoIQ

TempoIQ 也是一个 IoT 平台服务,它能帮助用户快速、灵活的的创建 IoT 应用,提供了实时的数据分析、报警、仪表盘、报告功能。2014 年 7 月从 TempoDB 改名为 TempoIQ,它的很多组件都有 IQ 结尾,代表智商很高?

TempoIQ 主要由以下几个部分组成:

  • CloudIQ

TempoIQ 采用第四代 CoDA(Context Delivery Architecture)架构,用户可以不必心系复杂的基础设施就可以部署 IoT 应用。

  • ConnectIQ

基于数据事件的 API,用于连接任何设备,支持灵活的事件数据模型:REST API、HTTPs 和 MQTT。它不关心设备来源,可以及时进行数据流处理,不需要提前安装和配置。

  • DataIQ

对所有 IoT 数据和分析报告进行安全、持久的存储,并提供报告下载功能。

  • AnalyzeIQ

用户可以创建分析流(custom analytics streams)来洞悉 IoT 数据实时状态,自动将数据存储到 DataIQ。并可以创建报警来持续监控分析流,当有超预期的变动或者达到致命条件时进行实时报警。

  • ViewIQ
    用户使用 ViewIQ 可以创建实时的 IoT 仪表盘、应用和可视化组件,而且不需要任何编码工作。

18.Riak TS

Riak 作为 NoSQL 和 K/V 存储可能更有名,而 Riak TS 是一个为时序列和为存储 IoT 数据进行了优化的 NoSQL 数据库软件。

在官方主页上写道:“Riak TS is engineered to be faster than Cassandra”。

由于其非开源性,网上(包括官网)详细资料都不是特别多。

19.Cyanite

Cyanite 是一个用于接收和存储时序列数据的守护进程,它的设计目标是兼容 Graphite 生态系统。

Cyanite 默认使用 Apache Cassandra 来存储时序列数据,它的特点如下:

  • 可扩展性

基于 Cassandra,Cyanite 可以实现高可用、具有弹性,以及低延迟的存储。

  • 兼容性
    由于 Graphite 已经成为事实上管理时序列数据的标准,不管是使用 graphite-web 还是 Grafana。Cyanite 将会尽可能的保持与这些生态系统的兼容以提供简单地交互模式。

Cyanite 是一个典型的流式处理模型,它接收数据,对数据进行标准化,然后进行输出。它的交互图如下所示:

它的工作流程如下:

  • 每条输入都会产生规范化的 metrics,并添加到消息队列
  • 核心引擎从队列取出数据并处理。
  • 通过存储和索引组件进行时序列数据的存储和 metric 名的索引
  • API 组件用于处理引擎和其他查询、存储模块的交互
  • Cyanite 的输入模块支持 Carbon(Graphite组件),而 Kafka 和 Pickle 则还在计划中。

索引(Index)模块则用于对 metric 名进行索引和查询。这一模块有两种实现方式:

  • memory 用于在内存中存储反向索引
  • elasticsearch 用于在 elasticsearch 中存储 metric 名(path-names)

一句话总结:新生事物、值得关注。

20.总结

这里只是简单的罗列了一些项目,及其简单说明。
在后续的文章中,我们还会选择一些常见的 TSDB 进行实例讲解。

本系列其他文章:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 【编者按】刘斌,OneAPM后端研发工程师,拥有10多年编程经验,参与过大型金融、通信以及Android手机操作系...
    OneAPM阅读 900评论 0 5
  • 本文选自 OneAPM Cloud Insight 高级工程师刘斌博客 。 刘斌,一个才思敏捷的程序员,《第一本 ...
    OneAPM阅读 1,110评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • IE 盒模型和W3C盒模型有什么区别? 区别:W3C标准中padding、border所占的空间不在width、h...
    礼知白阅读 432评论 0 0
  • 健身的概念之于我有很长的时间了,就像螺旋式前进的曲线,虽然偶有停滞,大体趋势仍然是向前的。伴随着我的成长,对健身的...
    老鼠很无趣阅读 235评论 0 0