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

网友投稿 832 2022-09-08

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

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

10.Geras

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,host和region则被称为 key。

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

第三部分为值部分。

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

12.Atlas

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

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

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 特点如下:

Blueflood 主要由以下模块构成:

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

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

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

14.Gnocchi

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

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

Gnocchi 特点如下:

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

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

前三种方式基于一个名为 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 还内嵌了 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

DataIQ

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

它的工作流程如下:

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

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

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

20.总结

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

本系列其他文章:

上一篇:你的团队需要一套工具指南(团队建设的工具与技术)
下一篇:如何用 ANTLR 4 实现自己的脚本语言?(如何用u盘重装系统)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~