时序数据库 订阅
时序数据库全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据的典型特点是:产生频率快(每一个监测点一秒钟内可产生多条数据)、严重依赖于采集时间(每一条数据均要求对应唯一的时间)、测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。 展开全文
时序数据库全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据的典型特点是:产生频率快(每一个监测点一秒钟内可产生多条数据)、严重依赖于采集时间(每一条数据均要求对应唯一的时间)、测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。
信息
类    别
非关系型数据库
主    键
时间序列
中文名
时间序列数据库
外文名
time-series database
数据库备份背景
特点基于时间序列数据的特点,关系型数据库无法满足对时间序列数据的有效存储与处理,因此迫切需要一种专门针对时间序列数据来做优化的数据库系统,即时间序列数据库。对于时序大数据的存储和处理往往采用关系型数据库的方式进行处理,但由于关系型数据库天生的劣势导致其无法进行高效的存储和数据的查询。时序大数据解决方案通过使用特殊的存储方式,使得时序大数据可以高效存储和快速处理海量时序大数据,是解决海量数据处理的一项重要技术。该技术采用特殊数据存储方式,极大提高了时间相关数据的处理能力,相对于关系型数据库它的存储空间减半,查询速度极大的提高。时间序列函数优越的查询性能远超过关系型数据库,Informix TimeSeries非常适合在物联网分析应用。·有效处理庞大数据 ·对重复的部分,Informix TimeSeries只保持一份数据 ·节省空间50%,有效降低I/O ·主键索引更有效 ·时间序列表头分离的特性不浪费空间;        
收起全文
精华内容
下载资源
问答
  • HiTSDB时序数据库引擎在服务于阿里巴巴集团内的客户时,根据集团业务特性做了很多针对性的优化。然而在HiTSDB云产品的打磨过程中逐渐发现,很多针对性的优化很难在公有云上针对特定用户去实施。于此同时,在公有云...
  • 思极有容时序数据库正是普华公司面对这一高速增长的物联网大数据市场和技术挑战推出的创新性的大数据处理产品,它不依赖任何第三方软件,也不是优化或包装了一个开源的数据库或流式计算产品,而是在吸取众多传统关系...
  • 主要讲解时序数据和时序数据库的特性,介绍目前DB-Engines排名第一的时序数据库InfluxDB,以及阿里云时序数据库InfluxDB®的特点和优势,详细讲解如何使用InfluxDB®管理时序数据,包括数据收集与存储、数据查询和...
  • 专注于时序数据库内核研发,分布式数据库查询优化和处理。Apache开源项目Calcite和Drill PMC成员 内容简介:本次技术分享,我们将向大家讲解阿里云时序数据库TSDB新增加的SQL查询引擎,为大家介绍如何用结构化查询...
  • 作为物联网领域数据存储的首选时序数据库也越来越多进入人们的视野,早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB。上一周我们发过时序数据库的存储篇:百度无人车和...
  • “乾道变化,各正性命”,很多情况下,事物的价值和内涵往往存在于变化中,人们对于事物的变化规律的探究也一直没有停歇。从远古时期人们记录天象变化、总结四季更替、到现代人们记录设备运行状态、个人活动记录、...
  • RustChinaConf2020-13.魏熙凯-《使用Rust构建高性能时序数据库:CeresDB》.pdf
  • InfluxDB数据库Java客户端 介绍 代理网关influxdb-proxy 使用influxdb-java客户端连接InfluxDB数据库。 数据处理data-handling 连接kafka服务器从其中获取数据,处理数据之后调用代理网关influxdb-proxy将数据插入...
  • 1. 什么是时序列数据库(Time series database)? 一听到时序列数据库,如果只是稍有耳闻的人,可能立刻会联想到运维和监控系统。 没错,确实是很多运维、监控系统都采用了TSDB作为数据库系统来存储海量的、严格...
  • 同时,基于时序数据库和神经网络算法提出了时间序列系统异常预测算法。通过对时序数据库中的日志数据处理和分析,从而实现系统故障的监测与预警。经测试,该系统可有效监测电力系统运行状况,实现故障监测和预警,...
  • 时序数据库

    千次阅读 2019-06-06 14:29:43
    时序数据库(Time Series Database)是用于存储和管理时间序列数据的专业化数据库,为时间序列数据提供高性能读写和强计算能力的分布式云端数据库服务。时序数据库特别适用于物联网设备监控和互联网业务监控场景。 ...

    文章总结的很好,Mark一下,以备不时之需

    【引言】

    时序数据库,又名时间序列数据库。时序数据库会成为新趋势

    时序数据库(Time Series Database)是用于存储和管理时间序列数据的专业化数据库,为时间序列数据提供高性能读写和强计算能力的分布式云端数据库服务。时序数据库特别适用于物联网设备监控和互联网业务监控场景

    【简介】

    时序数据库全称为时间序列数据库。存储时间序列数据的高性能数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

    时间序列数据主要由电力行业、化工行业、运维技术、大数据采集等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据的典型特点是:

    • 产生频率快(每一个监测点一秒钟内可产生多条数据)、
    • 严重依赖于采集时间(每一条数据均要求对应唯一的时间)、
    • 测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。

    特点

    基于时间序列数据的特点,关系型数据库无法满足对时间序列数据的有效存储与处理,因此迫切需要一种专门针对时间序列数据来做优化的数据库系统,即时间序列数据库。

    目前对于时序大数据的存储和处理往往采用关系型数据库的方式进行处理,但由于关系型数据库天生的劣势导致其无法进行高效的存储和数据的查询。时序大数据解决方案通过使用特殊的存储方式,使得时序大数据可以高效存储和快速处理海量时序大数据,是解决海量数据处理的一项重要技术。该技术采用特殊数据存储方式,极大提高了时间相关数据的处理能力,相对于关系型数据库它的存储空间减半,查询速度极大的提高。时间序列函数优越的查询性能远超过关系型数据库,Informix TimeSeries非常适合在物联网分析应用。

    ·有效处理庞大数据

    ·对重复的部分,Informix TimeSeries只保持一份数据

    ·节省空间50%,有效降低I/O

    ·主键索引更有效

    ·时间序列表头分离的特性不浪费空间;

    ================================
    支持SQL的流处理框架
    ================================ 
    多数流处理方案中, 数据一般都会暂存在 kafka中, 格式推荐使用 Json/Avro, schema 推荐使用 Oracle Goldgate(OGG)数据格式.

    支持SQL的流处理框架有:
    1. Spark Streaming: 可以写很复杂的SQL, 比如和其他数据库DB做 join. 
    2. Kafka 的 KSQL: 和Kafka公用集群, 不需要额外计算集群.
    3. PipelineDB : 基于 PostgreSQL 的扩展, cluster版需要付费. 流数据既可以直接写到 pipelinedb(以pipelinedb的FOREIGN TABLE形式暂存流数据), 然后通过 pipelinedb SQL来处理; 流数据也可以先打到kafka中, 然后再通过 pipelinedb extension来处理.

    ================================
    可用作时序的数据库:
    ================================
    [时序]TimescaleDB, 基于 PostgreSQL, 支持 SQL.
    [时序]KairosDB, 基于 Cassandra, 不支持 SQL. 
    [通用]CrateDB, 基于 Elastic Search, 但支持ANSI SQL
    [时序]InfluxDB, 是 db-engines 上排名第一的时序数据库, 最新版中集群功能不开源了, 商业版支持, 另外并发查询性能较差.
    [通用]Kudu, 列式存储(类parquet), 支持 java API 更新数据, 比较赞的是支持 upsert. 可以通过 impala 或 spark 来支持SQL 查询.

    在寻找可评估的TSDB。找了一圈,发现了:

    #. Hummer TimeSeries DB(蜂鸟)
    #. HBase/Cassandra
    #. Druid
    #. Geras
    #. InfluxDB
    #. KairosDB
    #. KDB+
    #. OpenTSDB
    #. SiteWhere
    #. TempoDB
    #. TreasureData
    #. Riak TSDB
    #. Druid
    #. Baidu TSDB PaaS

    希望用过的人提供一下经验。虽然TSDB面对的往往都是大体量的数据,支持分布式集群,但是评估阶段,最好能够支持单机的测试。呵呵,可能有些强人所难。

    简单点评(基于底层技术做的点评, 未做个实际测试)
    TimescaleDB 基于PostgreSQL, 可能适合数据量不太大的情形, 但提供丰富的SQL功能
    KairosDB, 基于 Cassandra, 运维应该比较简单, 扩展性也应该不错, 写入性能估计要比 CrateDB 差一些, 另外不支持SQL. 
    CrateDB 基于 Elastic Search, 写入性能应该很好, 扩展性也应该不错, 估计 SQL 支持度和读取性能会差一些, 支持全文检索.

    db-engines 网站的对比:
    https://db-engines.com/en/system/CrateDB%3BKairosDB%3BTimescaleDB

    Crate 官方的比较:
    http://go.cratedb.com/rs/832-QEZ-801/images/CrateDB-Cassandra-MongoDB-Comparison.pdf

    为什么要为时间序列来建立专门的数据库?明明我们就有很多方法来处理时序数据,例如在SQL数据库中通过时间列的排序来解决或者是选择Cassandra这样的分布式数据库。但是,这些方法虽然能够解决时序数据的问题,但是却需要进行大量的工作,十分耗时。那么怎么才能更好的解决时序数据呢?

    首先,我们先来看一下时序数据的种类:常规和不规则

    开发人员比较常见和熟悉的是常规时间序列,它只在规定的时间间隔内进行测量,如每10秒钟一次,通常会发生在传感器中,定期读取数据。常规时间序列代表了一些基本的原始事件流或分发。

    不规则时间序列则对应离散事件,主要是针对API,例如股票交易。如果要以1分钟间隔计算API的平均响应时间,可以聚合各个请求以生成常规时间序列。

    现代TSDB需要能够处理常规和不规则的事件和度量,它们要有通用的元数据来描述用户可能要查询的东西。例如主机名,应用程序,区域,传感器ID,建筑物,股票名称,投资组合名称或者是其它任何维度的数据。时间序列添加元数据要允许客户切片,并创建摘要。

    时间序列应用与规模

    时序数据库与其他数据库用例和工作负载的区别。

    时间序列数据专注于快速摄取。也就是说,时序数据库需要经常插入新数据。使用传感器数据用例时,我们常常会发现滞后的数据收集,这时也要将数据附加进行。

    高精度数据保存时间较短,中等或更低精度的摘要数据保留时间较长。这也意味着用户必须不断从数据库中删除数据。这是一个非常不同于正常数据库设计来处理的工作量。

    代理或数据库本身必须连续计算来自高精度数据的摘要以进行长期存储。这些计算既包括一些简单的聚合,同时也有一些复杂计算。

    时间序列的查询模式可能与其他数据库工作负载有很大的不同。在大多数情况下,查询是在所请求的时间范围内提取一段数据。但对于即时计算聚合和缩减样本的数据库,常常会流失很多数据,所以快速迭代数据来计算聚合对于时间序列用例至关重要。

    使用SQL数据库时间序列的问题

    许多用户在使用时间序列之前,是将其数据存储在常见的SQL RDBMS(如PostgreSQL或MySQL)中。一般来说,短期内还是可以满足需求的,但随着数据规模的增加,事情就开始失控了。

    结论:关系型数据库不是为了解决具体的时间序列问题而设计的,所以试图让他们解决问题是不现实的。

    基于分布式数据库

    与SQL变体一样,在类似Cassandra的分布式数据库之上构建时间序列解决方案需要相当多的应用级代码。

    首先,需要决定如何构建数据。Cassandra中的行被存储在一个复制组,这意味着需要考虑如何构造行键,以确保集群得到正确利用。之后还需要编写应用程序逻辑来对时间序列用例进行其他查询处理。然后,编写采样逻辑来处理创建可用于长期可视化的较低精度样本。最后,在查询不同维度的许多时间序列和计算聚合时,需要确保查询性能。

    结论:编写所有这些应用程序代码通常需要有能力的后端工程师进行几个月的时间。

    为什么要建立一个时间序列数据平台?

    减轻开发者的工作

    我们经常会看到开发者不断编写代码来解决相同的问题,如果我们将其引入到平台或者是数据库中,开发者的代码量就会减少,解决问题的时间就会被优化。

    时间是特殊的

    除了可用性目标之外,我们还可以围绕时间序列的特性进行一些数据库的优化,例如,在插入时聚合和缩小样本,在用户想要释放空间时自动排除高精度数据。甚至还可以构建针对时间序列数据进行优化的压缩。

    超越数据库,使开发更容易

    专为时序数据构建数据库的一个优点就是它可以超越数据库。我们发现大多数用户遇到了一系列需要解决的问题,如何收集数据,如何存储数据,如何处理和监视数据,以及如何可视化。

    使用通用API可以使社区更容易的构建解决方案。用 line protocol来表示时间序列数据,用于写入和查询的HTTP API,以及用于处理的Kapacitor……随着时间的推移,我们可以对常见的用例来预先构建组件。

    主流的时间序列数据库

    前文对于时间序列数据库解释了那么多,最后我们就来看看主流的时间序列数据库有哪些?根据DB-Engines排行榜,在300多个数据库中,时间序列数据库共有17个,但可惜的是目前市场份额还是有点低。

    背景 

    目前对于时序大数据的存储和处理往往采用关系型数据库的方式进行处理,但由于关系型数据库天生的劣势导致其无法进行高效的存储和数据的查询。时序大数据解决方案通过使用特殊的存储方式,使得时序大数据可以高效存储和快速处理海量时序大数据,是解决海量数据处理的一项重要技术。该技术采用特殊数据存储方式,极大提高了时间相关数据的处理能力,相对于关系型数据库它的存储空间减半,查询速度极大的提高。时间序列函数优越的查询性能远超过关系型数据库,Informix TimeSeries非常适合在物联网分析应用。

    定义

    时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

    最新时序数据库排名:

    特点& 分类:

    专门优化用于处理时间序列数据
    该类数据以时间排序
    由于该类数据通常量级大(因此Sharding和Scale非常重要)或逻辑复杂(大量聚合,上取,下钻),关系数据库通常难以处理
    时间序列数据按特性分为两类
    高频率低保留期(数据采集,实时展示)
    低频率高保留期(数据展现、分析)
    按频度
    规则间隔(数据采集)
    不规则间隔(事件驱动)
     时间序列数据的几个前提
    单条数据并不重要
    数据几乎不被更新,或者删除(只有删除过期数据时),新增数据是按时间来说最近的数据
    同样的数据出现多次,则认为是同一条数据
    如图:

    时间序列数据库关键比对
     

    InfluxDBElasticSearch
    流行(TSDB排行第一)流行(搜索引擎排行第一)
    高可用需要收费集群高可用容易实现,免费
    单点写入性能高单点写入性能低
    查询语法简单,功能强查询语法简单,功能强(弱于Influxdb)
    后端时序数据库设计,写入快设计并不是时序数据库,后端存储采用文档结构,写入慢

    由此可见:高频度低保留期用Influxdb,低频度高保留期用ES。

    其他时序数据库介绍:

    如何使用
    数据的查询与写入:

    • Influxdb与ES都是REST API风格接口
    • 通过HTTP Post写入数据,通过HTTP Get获取数据,ES还有HTTP Put和Delete等
    • 写入数据可以是JSON格式,Influxdb支持Line Protocol
    • JSON格式徒增解析成本,录入数据格式越简单越好
    • 通常ES搭配Logstash使用,Influxdb搭配telegraf使用

    以Influxdb为例,看一些如何插入和查询数据:

    Influxdb的HTTP API

    创建DB

    [root@host31 ~]# curl -i -XPOST http://192.168.32.31:8086/query --data-urlencode "q=CREATE DATABASE mydb"
    HTTP/1.1 200 OK
    Connection: close
    Content-Type: application/json
    Request-Id: 42a1f30c-5900-11e6-8003-000000000000
    X-Influxdb-Version: 0.13.0
    Date: Tue, 02 Aug 2016 22:27:13 GMT
    Content-Length: 16

    {"results":[{}]}[root@host31 ~]#

    写入数据

    [root@host31 ~]# curl -i -XPOST http://192.168.32.31:8086/query --data-urlencode "q=CREATE DATABASE mydb"
    HTTP/1.1 200 OK
    Connection: close
    Content-Type: application/json
    Request-Id: 42a1f30c-5900-11e6-8003-000000000000
    X-Influxdb-Version: 0.13.0
    Date: Tue, 02 Aug 2016 22:27:13 GMT
    Content-Length: 16

    {"results":[{}]}[root@host31 ~]#

    查询写入的数据

    [root@host31 ~]# curl -GET 'http://192.168.32.31:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west'"
    {
        "results": [
            {
                "series": [
                    {
                        "name": "cpu_load_short",
                        "columns": [
                            "time",
                            "value"
                        ],
                        "values": [
                            [
                                "2015-06-11T20:46:02Z",
                                0.64
                            ]
                        ]
                    }
                ]
            }
        ]
    }[root@host31 ~]#

    介绍Telegraf&Logstash:

    • 都是数据收集和中转的工具,架构都是插件式配置
    • Telegraf相比Logstash更加轻量
    • 都支持大量源,包括关系数据库、NOSQL、直接收集操作系统信息(Linux、Win)、APP、服务(Docker)执行模式分为两种
    • 主动:根据配置一次性读取被收集的数据,收集完成后关闭进程
    • 被动:作为进程驻留内存,监听特定端口,等待消息发送

     介绍两种时序数据库使用的架构:

    1.日志采集,然后存入influxdb,最后在grafana 中进行可视化查询。

    2.数据库监控,主要通过采集关系型数据库的性能指标分析数据库的运行状态便于监控和管理,如下图所示

     数据可视化展示  

    数据的可视化展示有很多种选择,比如ELK中推荐使用kibana,配合es更方便,而搭配influxdb可以使用grafana。

    目前grafana支持数据源

    –  ES

    –  Influxdb

    –  Prometheus

    –  Graphite

    –  OpenTSDB

    –  CloudWatch

    安装Grafana

    Grafana的安装很简单,以Debian安装为例:

    执行命令:

    $ wget https://grafanarel.s3.amazonaws.com/builds/grafana_2.6.0_amd64.deb

    $ sudo apt-get install -y adduser libfontconfig

    $ sudo dpkg -i grafana_2.6.0_amd64.deb

    启动服务器:

    $ sudo service grafana-server start
    然后即可进行配置使用数据可视化了。这里就不展开讲了。下面会有独立文章介绍grafana和kibana。

    总结   

           本篇简要概述了时序数据库的内容,介绍了特点并以influxdb为实例对比了与传统数据库的区别,以及如何使用Influxdb。最后讲解了使用时序数据库的架构,日志和监控等,通过grafana进行可视化的数据查询分析监控等。

    【参考文章】

    时序数据库的选择? - 知乎 https://www.zhihu.com/question/50194483
    --------------------- 
    原文:https://blog.csdn.net/enweitech/article/details/90720282 

    展开全文
  • OPC_DA连接,导入Excel,InfluxDB存储,MQTT订阅发布。
  • 凌云时刻编者按:本篇整理自峰会《时序数据库论坛》演讲视频的文字版本。作者孙金城,花名金竹,在阿里工作近10年,以ApacheFlink为切入点,在流计算领域贡献了5年,目前以阿里巴巴物联网...

    凌云时刻

    编者按:本篇整理自峰会《时序数据库论坛》演讲视频的文字版本。作者孙金城,花名金竹,在阿里工作近10年,以ApacheFlink为切入点,在流计算领域贡献了5年,目前以阿里巴巴物联网分析团队负责人的角色,基于ApacheIoTDB对时序数据存储领域进行探索。

    我们开始本篇的第一部分,让我们来看看时序数据库目前处在一个怎样的趋势,是什么造就了时序数据库的快速发展?

    领域趋势

    聊存储,我喜欢从数据的角度切入。

    我们处在一个大数据时代,数据的规模是惊人的,那么大数据规模到底是怎样的呢?

    根据某研究院发布的统计数据,近年,随着人工智能、5G、AIoT等技术的推动,全球数据量正在无限地增加。2018年全球数据总量为33ZB,在2019年约达到45ZB。按照这样的增长趋势,到2025年,全年将会有175ZB的数据产生。

    在希捷的首页,有一句话,这里分享给大家:

    全球数据领域将从2019年的45ZB增长到2025年的175ZB,全球数据的近30%将需要实时处理,您的企业是否已经做好准备?同样带着这个问题,我们看看实时数据库领域是否做好了准备?

    那么,到2025年每年175ZB的数据从哪里来的呢?我们从云/边/端三个角度看数据的创建和存储。

    随着网络的高速发展,尤其是5G时代的到来,数据越来越多的进入云端。那么我们所说的Core/Edge/Endpoint(云/边/端)分别指的是什么呢?

    • 云(Core) - 这包括企业中指定的计算数据中心和云提供商。它包括各种云计算,公共云、私有云和混合云。

    • 边(Edge) - 边缘是指不在核心数据中心的企业级服务器和设备。这包括服务器机房、现场服务器、还有一些较小的数据中心,这些数据中心位于距离设备较近的区域,以加快响应。

    • 端(Endpoint) - 端包括网络边缘的所有设备,包括个人电脑、电话、联网汽车、可穿戴备以及工业传感器等。

    那么这些数据来源,有哪些是我们日常工作生活可以感知到的呢?我们接下来简单举例分析一下:

    作为在阿里工作近10年的我,对我来说感觉距离最近的数据是一年一度的双11全球狂欢。我们发现自2009年以来,双11每年的成交额飞速增长,到2020年竟然高达4982亿。这个数字背后,说明了大量数据的产生。但是相对于175ZB的数据来说,这些交易数据,监控数据,只是冰山一角。为什么这样说呢?我们继续往下看。

    这里同样有一份关于全球设备连接的统计数据,到2020年全球有500亿的设备数据上云,这些设备覆盖了很多实际场景,比如:智能生活、智能城市、智能农业,更值得大家关注的是智能制造,也即是工业物联网领域。在5G和工业4.0的的大背景下,工业物联网也将会是下一个技术趋势所在。

    说到技术发展趋势,Gartner的数据是大家非常信任的,在2021年Gartner又指明了9大技术趋势,如果大家关注Gartner的报告,我们发现这9大战略技术趋势和前三年有了一些变化。

    2018强调云向边缘挺进,2019主张赋权边缘,2020更加强调流量的处理要靠近设备本地,其实也就是端和边的计算技术。连续三年都明确提到了端/边,也就是物联网领域,那么2021的战略趋势和物联网有怎样的关系呢?

    2021强调的分布式云就是强调了物联网领域已经走进云边端一体化的进程,分布式云将取代私有云。分布式云的架构更强调了中心云计算能力下沉的时代趋势,分布式云的多样性也囊括了物联网领和边缘计算的技术方向。

    那么在这样一个大的技术趋势下,时序数据库当前处在一个怎样的阶段呢?

    国家对物联网领域,尤其是工业物联网领域是高度重视的,早在2017年就提出了指导意见,明确了三个阶段性的发展目标:在2025年之前重点在基础设施的建设,到2035年具备平台化能力,最终达到应有层面的落地。那么实际上各个大厂的发展都是超前于这份指导性建议的发展目标额,目前各个云厂商已经基本形成了各自的工业物联网平台的搭建,后续的重点是平台的增强和实际应用的创新发展。那么在这样一个高速发展的阶段,各个大厂都在解决这这样的问题呢?

    其实,物联网领域的数据产生,大部分来自于工业物联网。物联网领域设备连接在2020年已经超过500亿,我们以一个挖掘机工矿信息来说,一个设备就有5000多的工况指标要采集,数据每秒都在不停的采集,数据量可谓是惊人的,那么在千亿的工矿数据和ZB级别的时序数据面前,我们面临怎样的难题呢?

    大家想到的可能是数据上云的带宽流量成本问题,但幸运的是,在过去的20年中,有线宽带服务每兆比特的费用下降了98%,从2000年的平均28.13美元下降到2020年的0.64美元。所以低流量成本的情况下,ZB级别的存储成本问题就更为显著。

    技术都是为领域问题而生,面对这样的领域问题,存储领域又有这样的技术变化呢?

    根据DB-Engines的统计数据,我们发现,在各种数据库存储产品中,时序数据库的发展是最受欢迎,发展是最快的。也就是说,5G和工业4.0的发展,大量时序数据的产生,促就了时序数据库的快速发展。

    那么,目前都有哪些时序数据库产品呢?

    同样这个统计也是来自DB-engines网站,目前我们已经有几十种时序数据库产品,这些产品有些是开源的,有些是各个大厂研发的商业产品。目前来看,大概有20%+的商业产品,近80%来自开源社区。这里也多说一句,拥抱开源同样也是大势所趋。

    核心技术/问题

    趋势方面了解完之后,我们细致地看看现在的时序数据库有哪些特点、如何分类、有哪些核心技术。

    首先,我们从存储架构角度,看看时序数据库的分类情况。

    • 第一类就是是基于关系数据库的时序数据库,比如timescale。

    • 第二类就是基于KV的时序数据库,比如OpenTSDB。

    • 第三类就是专门面向时序数据场景的原生时序数据库,比如InfluxDB,IoTDB和TDengine等。

    当然持久化角度看,还有很多优秀的内存时序数据库,比如:Google的Monarch,Facebook基于Gorilla论文实现的产品。那么,不论是基于怎样的架构,这些时序数据库都要解决的共性问题有是什么呢?

    我们前面说最大的数据来源是工业领域的各种设备传感器数据,这些设备的工况数据收集和处理将给存储和计算带来巨大的挑战。

    我们还是以一个具体的案例来说,这是GoldWind发电数据采集,GoldWind有超过2w个风机,一个风机有120-510个传感器,采集频率高达50Hz,就是每个传感器1秒50个数据点采集峰值。这要算下来就是每秒5亿个时序指标点的数据。这个数据量让数据采集/存储/计算面临很大的挑战。同时还有我们业务中的一些非常常见的查询需求。所以时序数据的存储将要解决写入吞吐问题,还有数据查询分析的性能问题。

    同时,时序数据领域还有一个很大的领域特点,或者说是领域问题,那就是弱网环境下,时序数据的乱序是一种常态。

    乱序问题为什么是时序数据场景的核心问题呢?分享一个具体的智能制造案例(是一个工业冶炼能耗控制的例子)。核心需求是,在云端进行大量的实时模型训练,然后模型下推到边缘端,在边缘端利用时序数据库进行数据的本地存储和局部数据数据预测,进而控制本地的熔炉燃料投放。比如,5秒钟一个计算窗口,那么乱序造成的计算不精准,将会对能源消耗和冶炼质量带来很大的影响。所以说,乱序问题的解决也是时序数据价值最大化的核心问题所在。

    那么,从存储架构的维度看,基于关系/基于KV和原生时序数据库的写入速度有怎样的排布?

    宏观来看,基于关系数据库的时序数据库写入速度远远慢于基于KV和原生的时序数据库。为什么会有这样的判断呢?这个结论还是从底层存储架构设计角度得出的。

    关系数据库的存储写入架构是基于B-Tree或者B+Tree,而KV和原生的时序数据库都是基于LSM-Tree进行数据写入设计的。不同的数据结构对写入性能产生巨大的影响,我们进一步细聊一下其中的原因。

    聊到存储写入,我们立即会想到磁盘,我们应用数据写到磁盘会经过内存,然后持久化到磁盘。那么这个过程中,写入的核心耗时是在什么阶段呢?就是大家熟知的磁盘IO部分,怎样的磁盘IO才是高性能的?怎样的磁盘IO又是低效的呢?

    我们知道扇区是磁盘的最小组成单元,通常是512字节,文件系统/数据库不是一个扇区一个扇区的来读数据,因为太慢了,所以有了block(块)的概念,它是一个块一个块的读取的,block才是文件存取的最小单位。每个块的大小是 4~64KB,但是这个数值是可配置。

    一般来说磁盘访问一个磁盘块平均要用10ms左右,因此,我们有必要做一些事情来减少磁盘的平均访问时间来提高写入性能。大家都知道,顺序IO性能远高于随机IO,随机I/O可能是因为磁盘碎片导致磁盘空间不连续,或者当前block空间小于文件大小导致的。

    连续 I/O 比随机 I/O 效率高的原因是:在做连续 I/O 的时候,磁头几乎不用换道,或者换道的时间很短;而对于随机 I/O,很多的话,会导致磁头不停地换道,造成效率的极大降低。那么刚才说的B+Tree和 LSM-Tree的数据结构,与磁盘IO有怎样的关系呢?

    我们先来看看Btree和B+Tree的的写入复杂度,这里核心看对磁盘的访问,所以我以DAM的维度看两种数据结果的复杂度,会发现不论是BTree和B+Tree写入和查询复杂度都是LogBN,B是阶数,N是节点数。既然算法复杂度一样,在实际的存储产品中这两种设计有怎样的区别呢?先看看BTree和B+Tree的数据结构设计的区别。

    核心区别就是:是否在非叶子节点存储数据以及在叶子节点是否以指针连接相邻节点。那么问题来了,在存储对磁盘访问的角度考虑,我们是选择BTree还是选择B+Tree呢?这里面我们就要加入另一个变量因素,就是存储产品一次读取磁盘的block因素和每个节点数据和指针大小因素。

    根据BTree和B+Tree的数据结构特点,在一次读取磁盘的Block大小一定的情况下,一个Block的磁盘读取所包含节点越多那么在数据量一定的情况下,树的阶数越大,也就是LogBN的B越大,进而读取磁盘次数越少性能越好。

    好的,那么我们再回到,为什么BTree/B+Tree的写入会设涉及到随机IO问题。

    假设我们有如上数据按顺序进入存储系统,如果存储系统采用的是BTree进行设计的,我们简单分析一下写入过程。

    首先数据陆陆续续的到来,35,3,90这个小树是如何变化的。先来3,再来35,再来 90,我们构建数据结构,如图,35左右是3和90,数据再陆续到来,当17到来的是,数据如何变化?17比35小,所以17再左子树。

    假设这时候我进行了一次持久化操作,然后,后续数据陆续到来……当26到来的时候,26比35小,在35的左子树,但是35左边已经有2个data了,做3阶Btree,节点超了。因为节点超了,所以我们需要进行节点分裂,如图,17上提与35同一层级。这时候我们假设再次磁盘持久化处理,我们发现3和17已经不在一个数据块了,17和35又重新写到了磁盘上的一个数据块。

    数据不断的到来,数据的节点不断的变化,磁盘持久化也不断发生。

    这个变化过程中大家发现机遇BTree和B+Bree的设计,写入磁盘的数据是有更新操作的,进而造成了大量随机IO。

    那么我们再来看看LSM-Tree的为什么是顺序IO?其实,LSM核心思想是放弃部分读能力,换取写入的最大化能力。我们看到LSM-Tree的写入复杂度是O(1)。具体的插入流程如下:

    • 来请求之后 首先写入write ahead文件,然后进行内存的更新。

    • 更新完成之后,就返回成功。那么数据是如何持久化的呢?

    • 当内存到一定大小后,就将内存变成immutable,进行持久化操作。

    • 最后刷盘进行持久化成功之后,会有后续的 Merging Compaction在后台进行。

    所以基于LSM Tree结构完美的解决了写入的高吞吐问题。

    那么,解决写入问题,基于LSM-Tree的时序数据库产品是如何解决查询性能问题的呢?我看OpenTSDB查询逻辑是怎样的?

    • 查询请求来了,会对各种索引进行查询

    • 首先是以二分法查询MemTable

    • 然后查询immutableMem-table

    • 如果都没有查到,就查询磁盘文件

    当然在查询过程中还伴随各种优化,比如BloomFilter的应用。

    虽然都是基于LSM-Tree的设计,但不同的产品有不同的优化定制,比如我们再来看看InfluxDB的设计。

    • 同样数据来了也是第一写入到WAL文件。

    • 接下来再更新内存Mem-Table之前,InfluxDB出于查询性能的考虑,在这个环节增加了内存索引构建。

    • 然后才是内存更新,

    • 最后返回客户端成功信息。

    当然,在Mem-Table部分,InfluxDB也做了局部优化,利用hash进行分布优化。同时在持久化时机上面也考虑了内存大小和刷盘时间周期。其实,InfluxDB设计了自己的TSMFile格式,文件增加了索引建立。

    这里和大家提一句就是,InfluxDB的设计充分考虑时序数据的时间特点,在Mem-Table中的Map中采用timestamp作为key的组成部分。从1.8版本看,InfluxDB代码里面没有看到将内存变成immutable的部分。在InfluxDB的Compaction时候也考虑若干优化因素。比如压缩算法的选择等。最后,InfluxDB还设计了自己的索引结构,TSI极大的加速了数据查询性能。

    好的,看完OpenTSDB和InfluxDB,我们再来看看Apache顶级项目 IoTDB。IoTDB为了提高查询速度,不仅定制了 索引结构还增加了查询优化器的支持。

    更值得大家关注的是,IoTDB针对工业物联网领域时序数据乱序问题对LSM-Tree进行了优化改造,在内存和文件上面都考虑乱序的处理。

    那么我们想想,在时序数据库领域到底涉及哪些问题和哪些解决这些领域问题的核心技术呢?

    • 第一个就是存储数据结构的设计,利用xLSM-Tree的架构解决写入高吞吐问题。

    • 第二个在高性能查询上面,各个产品都有自己的索引定制和查询优化器的引入。

    • 第三个在存储成本上面,各个时序数据库产品以列式存储和具体类型的针对性压缩算法选取解决存储成本问题。当然在云上存储成本上面我,们还可以在边缘端做更多的优化处理,在云上有冷热数据的处理,这也是分布式云的技术战略趋势所导向的。

    • 第四个也是非常重要的领域问题,就是乱序的解决,利用写前保序和写后重排多种手段在存储层面解决乱序问题。进而在后续的计算分析部分发挥最大的价值。那么大家想想除了上面核心的四个方面还有其他关键问题和技术需要关注吗?

    • 当然还有,那就是在分布式云的架构下,边缘端的部署也是需要高可靠的,各个时序数据库产品都需要提供多副本的集群版支持。

    • 最后还有一个,如果最大限度让时序数据库产生最大价值,边缘端的实时计算也是必不可少的,那么,时序数据库对实时计算的支持也有很大的技术挑战。

    那么在上面提到的6大领域问题和技术挑战中,实时计算看起来和数据库关系不大,为什么我这里还要重点提出呢?

    这里和大家分享的思考是,在分布式云的大技术方向下,计算不仅仅是集中云上的需求,也是在边缘端的计算能力也是一种强需求。

    我们还以前面提到的案例来说,在边缘上面同样需要实时计算和实时预测,那么出于边缘端硬件资源有限,现有云上实时计算产品大多是部署很重的,很难在实际的工业领域边缘节点进行部署,边缘端需要更轻量的、针对时序数据进行的实时计算支持,在边缘端的时序数据库同样需要接受支持实时计算的技术挑战。

    在分布式计算领域,我们按照计算延时角度已经有了很多的技术产品。从计算延时以天为单位,到计算延时达到毫秒,大家熟知的产品Hadoop/Hive/Spark/Kafka/Flink等,但这些产品的定位都是云上硬件资源丰富的大规模分布式计算场景,那么在边缘端的时序数据分析场景,需要具备怎样的实时能力呢?边缘的实时计算能力我们重点放到分钟到毫秒的实时性。

    在这部分的实时计算设计架构中,也有两种典型的设计架构,一个是NativeStreaming的设计模式,认为批是流的特例,另一个是Micro-Batching的设计模式,认为流是批的特例。

    在目前的很多时序数据库产品已经考虑对实时计算的支持,比如InfluxDB1.x版本的CQ功能,和2.x版本的Task设计。还有ApacheIoTDB正在设计的实时计算功能。当然也给大家准备了专门面向IoT领域的时序数据流计算分析产品HStreamDB的分享。

    好的,到了本篇最后一部分。时序数据库可以应用到哪些场景?我们如何才能利用技术手段,让数据价值最大化呢?

    场景及价值

    时序数据库可以应用到各种场景中包括前面提各种监控领域,以及前面提到的智能制造、智能生活、智能城市等场景中,要想这些场景中的价值最大化,需要考虑从采集到数据分析和数据可视化的各个环节的不同挑战性问题。

    这里想稍加强调的是云边端的数据闭环的建立,才是数据最大化的最佳途径。我们不仅仅是采集数据和数据的监控,数据的可视化,最大的数据业务价值需要在采集的数据上面进行数据分析,分析之后的数据再反向控制终端,达成数据闭环。

    不同的大厂,不同的时序数据产品在数据闭环的缔造中采用的技术手段可能各不相同。本次分享就到这里,谢谢大家。(完)

    你可能还想看

    1. Java一个逐渐被遗忘的强大功能:JNI技术

    2. 六问阿里云计算安全

    3. 这本6G白皮书你看了吗?

    4. 性能优化:缓存使用的秘密

    5. 嘘!偷偷看下阿里技术大牛的私人书单

    END

    关注「凌云时刻」

    每日收获前沿技术与科技洞见

    展开全文
  • 松果时序数据库(pinusdb) 松果层次数据库是一种针对中小规模(设备数量减少10万台,每天产生的数据量连续10亿条)场景设计的时序数据库。以简单,易用,高效为设计目标。使用SQL语句进行交互,拥有极低的学习,...
  • 实时数据库与时序数据库

    千次阅读 多人点赞 2020-11-18 10:40:39
    在工业大数据数据库存储领域,除了传统的关系型数据库和分布式数据库以外,还有一种类型的数据库是非常常用,而且是非常有必要的,就是实时数据库,以及时序数据库。 但是,大家可能会有疑问,都是专门处理时序数据...

    1、概述

    在工业大数据数据库存储领域,除了传统的关系型数据库和分布式数据库以外,还有一种类型的数据库是非常常用,而且是非常有必要的,就是实时数据库,以及时序数据库。
    但是,大家可能会有疑问,都是专门处理时序数据的,这是两种数据库吗?他们之间有什么联系?

    1.1发展历史

    实时数据库是数据库系统的一个分支,它适用于处理不断更新快速变化的数据及具有时间限制的事务处理。实时数据库技术是实时系统和数据库技术相结合的产物。实时数据库最起初是基于先进控制和优化控制而出现的,对数据的实时性要求比较高,因而实时、高效、稳定是实时数据库关键的指标。
    实时数据库的研究设计始于20世纪80年代中期。当时的美国随着流程工业和航天工业的发展,大量的测量数据需要集成和存储,采用关系数据库难以满足速度和容量的要求,而且接口访问复杂,不适合科研和监控的需要,因此诞生了以工业监控为目的的实时数据库。实时数据库系统一般是商业企业信息化建设和工业控制智能化的基础,在商业化的实时数据库产品开发上,国外有不少著名公司在原有自营业务的基础上推出了相应的实时数据库产品。

    到了90年代,实时数据库在流程工业全世界范围内大行其道,源于以太网的逐步普及;主要应用于工业监控、控制和公用工程。
    国内的实时数据库研究开始得晚一些。随着国内工业界对分布式控制系统(Distributed Control System,DCS)的广泛引进和应用,教育科技界率先进行研究实时数据库理论的研究。目前对实时数据库系统(Real Time Database System,RTDBS)的研究主要来解决实时系统中的数据管理问题或为RTDBS提供时间驱动调度资源分配算法

    目前实时数据库已经应用到众多领域,它的应用范围还在不断扩展,业界的工程师在不断创造出实时数据库的应用模式。实时数据库还可用于会计、银行、法律、医疗记录、多媒体、过程控制、预定系统和科学数据分析等领域。
    整体来看,以监控为目的的实时数据库只是狭义上的实时数据库,广义上讲,只要一个数据库具备实时处理过程,即以足够快的速度处理事务来返回结果并及时响应,且处理的工作事务的状态不断变化,那它就是实时数据库。而以监控为目的的实时数据库满足这些条件,它处理的是传感器或设备不断产生的时序数据,可以快速处理、及时响应。其“时序数据”作为重要特征区别于其他各类数据库,于是就有了另外一个名字:时序数据库。

    时序数据库在维基百科上的解释:A time series database (TSDB) is a software system that is optimized for handling time series data, arrays of numbers indexed by time (a datetime or a datetime range). 翻译过来就是“时序列数据库用来存储时间序列(time-series)数据并以时间(点或区间)建立索引的软件系统。”

    所以,实时数据库的概念包含时序数据库,也就是说可以处理时序数据的实时数据库就是大家所说的时序数据库,实时数据库还可以处理时序数据以外的数据。网上流传的各种定义和观点大多没有抓住其本质,把各种表象、形态、架构、甚至某个产品的功能当作实时数据库的特征给下定义,不具有参考价值。

    1.2发展未来

    在国家层面,“实时数据库”被看作是与操作系统统一级别的基础软件。2015年12月14日,工业和信息化部发布贯彻落实《国务院关于积极推进“互联网+”行动的指导意见》行动计划(2015-2018年),明确了2018年“互联网+”总体目标。文中关于实时数据库有如下内容:
    “发展软件和信息技术服务业。推动基础软件核心关键技术突破,加快新兴领域基础控制及应用软件发展。支持高端工业软件、新型工业APP的研发和应用,发展自主可控工业操作系统及实时数据库等基础软件,提升设计、仿真、管理、控制类工业软件的国产化率和应用水平。”

    1.3小结

    工业监控领域的实时数据库其实并不单单只是一个数据库,而是一个系统,包括对各类工业接口的数据采集,海量监测数据的压缩、存储及检索,基于监测数据的反馈及控制功能等。它主要是为了解决当时关系型数据库不太擅长的领域,包括:
           1、 海量时序数据的实时读写操作

    2、 大容量时序数据的存储

    3、 集成了工业接口的时序数据采集

    4、 集成控制功能,可实现实时控制

    但是,“海量”、“大容量”是相对意义上的,十年前几百GB可能就已经算是“海量”了,但随着大数据技术的飞速发展,数据量朝着TB、PB一路高歌猛进,测点规模动则百万、千万起步,部分起步早的实时数据库由于跟不上时代变化而逐步落伍,大浪淘沙筛选出真正的“金子”,它们在新的时代、新的领域将继续解决实时数据处理领域面临的各种问题。
    于此同时,随着Hadoop的普及,基于各种开源组件出现了许多新兴的时序数据库,它们继承了Hadoop的“大数据”基因,为处理海量时序数据而生,他们正在互联网领域快速成长,优秀的基因赋予它们光明的未来,但也正在或即将面临大浪淘沙,以及实时数据库的挑战。

    新的实时数据库或时序数据库也许正在诞生,还有那些已经长大的, 有的依然健壮成长,有的走向衰落,在这段生命里,大家研究同一个问题,并以解决问题为使命,所不同的只是技术手段,但真正能长久的只是因为使用了某种技术吗?真正重要的是把握住生产发展的需求、跟随问题变化而不断迭代技术。
           

    下面将以实时数据库中的代表:庚顿实时数据库,和时序数据库的代表OpenTSDB,进行全面分析对比。

    2、实时数据库&时序数据库基本情况对比

    基本情况对比
    序号比较项目OpenTSDBGolden
    1是否开源
    2公司名称北京庚顿数据科技有限公司
    3公司性质中国民营企业
    4公司成立时间2010年(产品发布年份)2007年
    5业务开展时间2010年2003年
    6价格水平免费适中
    7授权协议LGPL(允许私有使用)厂商授权
    8公司资质--

    海淀区创新企业

    中关村高新技术企业

    国家高新技术企业

    武器装备质量管理体系认证企业等

    9产品资质--满足实时数据库安全评价规范标准要求
    10技术服务能力

    使用需专业运维团队

    有问题可以社区提问或联作者

    开发团队在中国,有专门的售后服务团队
    11纵向管理能力--支持集团级应用和多级部署
    12主要应用行业物联网电力(电网、发电 )、新能源、石油化工、物联网等
    13服务模式线上线上+线下
    14知名用户Zenoss(企业网络/系统管理应用程序)国家电网、南方电网、华能集团、华电集团、金风科技、中船 重工、CEC电子等
    15典型案例数据中心机房运维监控系统在民用领域,广泛应用于国家电网、南方电网、神华集团、华能集团、华润集团等世界五百强企业中,以及金风科技、广东明阳、大唐华创风能、湖北能源集团、华能新能源等风电领军企业中;在军用领域,与中船重工七〇一所、七〇三所、CEC中国电子、中电科十所、十四所上海核工业研究院、海军工程大学等军工企业和研究机构共同解决海量数据实时处理问题

     

    3、成本对比

    双方的成本构成
    序号比较项目OpenTSDBGolden
    1软件成本受LGPL协议限制有(由装机容量而定)
    2部署方式需要大量的服务器组成集群单机/双机/集群
    3硬件成本
    4依赖软件Hbase
    5运维团队需有专业运维团队,熟悉linux集群运维,HBase运维和OpenTSDB运维无,工程人员经过短期培训掌握安装部署即可,运行中的运维工作量很少
    6开发团队基本的业务能力、客户端等都需要软件开发工程师开发产品配套功能强大的计算引擎和组态软件,工程人员经过短期培训就可组出想要的工程界面和实现业务逻辑
    7用户体验要达到较高的用户满意度需要投入较高的人财物力成熟产品,用户体验好,节省宣传推销成本和时间成本

     

    OpenTSDB的成本主要是硬件和人力成本,Golden的成本主要是软件成本。由于不同用户的情况、需求、资源都不尽相同,可根据实际情况选择最合适的。OpenTSDB多个节点的服务能力相当于Golden一个节点的服务能力。

    4、安全可控性对比

    安全可控性对比
    序号比较项目OpenTSDBGolden
    1

    公司地点

    开源,社区维护,美国中国.北京
    2研发团队美国,各地开源贡献者中国.北京
    3总部直属支持团队有(国内团队支持全国市场)
    4大陆分公司或核心分销商支持有(北京总部直接派团队进行技术支持)
    5代码可控性开源,可私有到自己产品中国内掌控
    6数据安全性不安全安全

     

    5、结束语

    以上是依据产品现有的功能的基础上进行比对,产品更新迭代,会各自沿着自己的产品规划进行发展,使用者根据自己的使用场景和实际情况进行选择。

    产品未来可期!

     

     

     

     

     

     

     

     

    展开全文
  • 时序数据库调研报告

    2021-04-09 18:07:31
    一、时序数据库应用场景简介 时间序列数据库简称时序数据库(Time Series Database),用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。 时序数据的几个特点 基本...

    一、时序数据库应用场景简介
    时间序列数据库简称时序数据库(Time Series Database),用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。
    时序数据的几个特点

    1. 基本上都是插入,没有更新的需求。
    2. 数据基本上都有时间属性,随着时间的推移不断产生新的数据。
    3. 数据量大,每秒钟需要写入千万、上亿条数据
      业务方常见需求
    4. 获取最新状态,查询最近的数据(例如传感器最新的状态)
    5. 展示区间统计,指定时间范围,查询统计信息,例如平均值,最大值,最小值,计数等。。。
    6. 获取异常数据,根据指定条件,筛选异常数据
      常见业务场景
      监控软件系统: 虚拟机、容器、服务、应用
      监控物理系统: 水文监控、制造业工厂中的设备监控、国家安全相关的数据监控、通讯监控、传感器数据、血糖仪、血压变化、心率等
      资产跟踪应用: 汽车、卡车、物理容器、运货托盘
      金融交易系统: 传统证券、新兴的加密数字货币
      事件应用程序: 跟踪用户、客户的交互数据
      商业智能工具: 跟踪关键指标和业务的总体健康情况
      在互联网行业中,也有着非常多的时序数据,例如用户访问网站的行为轨迹,应用程序产生的日志数据等等。
      一些基本概念(不同的时序数据库称呼略有不同)
      Metric: 度量,相当于关系型数据库中的 table。
      Data point: 数据点,相当于关系型数据库中的 row。
      Timestamp:时间戳,代表数据点产生的时间。
      Field: 度量下的不同字段。比如位置这个度量具有经度和纬度两个 field。一般情况下存放的是随时间戳而变化的数据。
      Tag: 标签。一般存放的是不随时间戳变化的信息。timestamp 加上所有的 tags 可以视为 table 的 primary key。
      例如采集有关风的数据,度量为 Wind,每条数据都有时间戳timestamp,两个字段 field:direction(风向)、speed(风速),两个tag:sensor(传感器编号)、city(城市)。第一行和第三行,存放的都是 sensor 编号为86F-2RT8的设备,城市是深圳。随着时间的变化,风向和风速发生了改变,风向从56.4变为45.6,风速从2.9变为3.6。

    需要解决的几个问题
    时序数据的写入:如何支持每秒钟成千上亿条数据的写入。
    时序数据的读取:如何支持在秒级对上亿条数据的分组聚合运算。
    成本敏感:海量数据存储带来的成本问题。如何以更低成本存储数据,将成为时序数据库需要解决的重中之重。
    常见时序数据库
    时序数据库出现的时间较晚,目前较成熟的时序数据库都仅有2、3年的历史。
    InfluxDB(单机版免费,集群版收费)最成熟,Kairosdb(底层使用Cassandra),OpenTsdb(底层使用HBase),beringei(Facebook开源),TimeScaleDB(底层基于PostgreSQL),TSDB(百度开源),HiTSDB(阿里开源,底层是PostgreSQL)。

    二、常见数据库介绍
    (1)InfluxDB
    InfluxDB 是由 InfluxData 创建的。它是用 Go 语言编写的自定义、开源、NoSQL 的时间序列数据库。数据存储区提供了一种类似 SQL 的查询语言,称之为 InfluxQL。它的核心是一款定制的存储引擎TSM Tree,对时间序列数据做了优化,优先考虑插入和查询数据的性能,并提供开箱即用的时间序列数学和统计函数。适用于监控、实时分析、物联网、传感器数据等应用场景。是目前最为流行的时间序列数据库。在该数据库中,每个测量结果都包含一个时间戳,以及一组与之关联的标签和一组字段。该字段表示实际测量读取值,而标签表示描述测量的原数据。字段数据类型仅限于 float, int, string 和 boolean,不重写数据就无法更改。标记值被编入索引。他们以字符串表示,无法更新。InfluxDB 入门非常容易,因为你不必担心创建原型或索引。但是,它非常严格死板和受限,无法创建额外的索引、连续字段上的索引、事后更新原数据、强制数据验证等。他并非没有原型。它会根据输入的数据自动创建一个基础模型。InfluxDB 必须自己实现多种容错工具,例如多副本、高可用性和备份/还原,并且要对磁盘的可靠性负责。我们仅限于使用这些工具,并且其中许多功能(如 HA)仅在企业版中可用。InfluxDB 备份工具可以进行完整或增量备份,并且可以用于时间点恢复。InfluxDB 还提供了比 PostgreSQL 和 TimescaleDB 更好的磁盘压缩。
    (2)DolphinDB
    DolphinDB 是以 C++ 编写的一款分析型的高性能分布式时序数据库,使用高吞吐低延迟的列式内存引擎,集成了功能强大的编程语言和高容量高速度的流数据分析系统,可在数据库中进行复杂的编程和运算,显著减少数据迁移所耗费的时间。
    DolphinDB 通过内存引擎、数据本地化、细粒度数据分区和并行计算实现高速的分布式计算,内置流水线、 Map Reduce 和迭代计算等多种计算框架,使用内嵌的分布式文件系统自动管理分区数据及其副本,为分布式计算提供负载均衡和容错能力。
    DolphinDB 支持类标准 SQL 的语法,提供类似于 Python 的脚本语言对数据进行操作,也提供其它常用编程语言的 API,在金融领域中的历史数据分析建模与实时流数据处理,以及物联网领域中的海量传感器数据处理与实时分析等场景中表现出色。
    DolphinDB主要有三大功能组成:1)分析型数据库2)脚本语言-类sql 3)分布式计算框架,这三大功能全部整合在一个DolphinDB实例中。
    分析型数据库:基于内存的列式分析型数据库,没有传统RDBMS的bufferpool、锁表等overhead,直接操作内存,速度极快,特别适合分析类。支持两层数据分区,水平分片到多个节点上,节点内再可以继续分片。数据压缩存储时间序列处理功能,拓展的时间数据类型、基于向量的函数、拓展的SQL语言等特性使得时间序列处理极其方便。
    脚本语言:DolphinDB内置基于向量的的脚本语言,语法和Python类似,表达能力极强,可以直接在里面写SQL语句,可以说是SQL和Python的融合。支持数据类型包括数组,非连续大数组(充分利用内存碎片),矩阵,集合,字典,表,元组。DolphinDB的脚本语言还支持函数式编程,支持高阶函数,用户自定义函数,匿名函数,lambda表达式,部分应用,闭包,纯函数以及远程函数调用。内置的大量模板函数可以大大简化数据处理。支持动态加载C++编写的插件文档齐全支持常用的统计和机器学习模型脚本语言直提交到DolphinDB实例上执行。
    分布式计算框架:支持map-reduce,迭代计算模型,p2p架构,分布式应用开发速度快,用户自定义函数不需要向Spark那样到处上传,DolphinDB内部直接分发编译好的用户自定义函数到集群中。
    为什么比Spark快?
    DolphinDB通过以下方法优化系统性能:
    (1)用C/C++开发,没有GC,比用Java开发的程序速度更快。
    (2)DolphinDB使用线程池而不是进程来实现多用户和并行计算的问题,开销更小,速度更快。
    (3)DolphinDB采用非常扁平化的设计,使绝大多数计算和查询在1~2个模块中就可以完成,避免或减少数据在不同系统、组件、模块之间移动和转换。
    (4)使用列存储结构,减少了对不相关数据的访问。
    (5)优化DolphinDB内置的开发语言,最小化数据在执行过程中的复制。
    (6)改进核心的数据结构算法,比如整数排序算法的速度是别的产品的5~10倍。
    (7)采用自有的内存管理模块,根据大数据的内存分配特点优化内存管理算法。
    (3)TimescaleDB
    TimescaleDB 是目前市面上唯一的开源且完全支持 SQL 的时序数据库。它在 PostgreSQL 数据库的基础上进行开发,本质上是一个 PostgreSQL 的插件。
    TimescaleDB 完全支持 SQL 且拥有 PostgreSQL 的丰富生态、并针对时间序列数据的快速插入和复杂查询进行了优化,支持自动分片,支持时间空间维度自动分区,支持多个 SERVER、多个 CHUNK 的并行查询,内部写优化(批量提交、内存索引、事务支持、数据倒灌)。
    然而,目前 TimescaleDB 仍不支持水平扩展(集群),即不能动态增加新的数据结点以写入数据(Write clustering for multi-node Timescale deployments is under active development),只支持通过 PostgreSQL 的流复制(streaming replication)实现的只读集群(read-only clustering)。
    (4)TSDB
    时序时空数据库(Time Series Database)是用于存储和管理时间序列数据及地理空间数据的专业化数据库,为时间序列数据及地理空间数据提供高性能读写和强计算能力的分布式云端数据库服务。
    功能特性:
    (1)数据读写:支持通过REST API方式、高并发写入时间序列数据。
    (2)插值查询:提供插值查询能力,将未上传的数据补齐,并支持多种插值算法。
    (3)实时监控:提供对数据库的写入、读取状态进行实时监控。
    (4)时间序列数据管理:支持时间序列数据的写入、查询和删除,并可以设置数据时效。
    (5)聚合计算:提供avg、sum等15种聚合函数,可以将数据降精度聚合,并支持嵌套聚合。
    (6)Web图表可视化:通过Web图表的方式来展示数据波动曲线。
    产品优势:
    高性能读写:亿级数据点聚合结果秒级返回,分布式可扩展的写入能力。
    低成本存储:使用高效的压缩算法,大大节省了数据所需的存储空间。您还可以自定义数据有效期,数据过期后会被自动清理,有效降低存储成本。
    多生态支持:支持SQL生态以及Hadoop/Spark等大数据分析平台,还能使用Sugar等多种可视化BI工具来展示、分析数据结果。
    高可靠服务:分布式部署可高效应对单点故障,保证数据高可靠性;三副本存储保证数据高可用性,一个副本发生故障时可自动切换至另一副本。
    (5)HiTSDB
    阿里云时间序列数据库 ( Time Series Database , 简称 TSDB) 是一种集时序数据高效读写,压缩存储,实时计算能力为一体的数据库服务,可广泛应用于物联网和互联网领域,实现对设备及业务服务的实时监控,实时预测告警。
    功能特性:
    (1)时序数据高效读写:百万数据点秒级读取,千万数据点秒级写入。
    (2)时序数据管理:提供数据时效功能,自动删除过期数据,自定义删除指标数据。
    i数据时效,滑动时间窗口自动失效过期数据,释放存储空间。
    ii多维时间线查询,支持按照Metirc,分组,时间区间以及特定精度时间线查询。
    (3)低成本存储:高压缩低成本存储,单个数据点平均2个字节。
    (4)时序数据计算:支持各类时序数据计算
    i 插值,缺失的数据点,支持线性插值数据补全。
    ii 降精度,支持预降精度和实时降精度计算,满足高效查询需求。
    iii空间聚合,支持按照不同 Tag 进行空间聚合和分组计算。
    iiii聚合函数丰富,提供 AVG,SUM,MAX, MIN 等聚合函数。
    (5)时序数据查询可视化:查询结果可视化的图表展现。
    (6)实例监控运维:实例的资源和能力监控,使用情况一目了然。
    i数据点写入实时监控,实时反馈写入情况。
    ii随时获取存储使用情况,提早扩容或释放存储空间
    (6)OpenTSDB
    OpenTSDB是一个基于Hbase的分布式的,可扩展的时间数据库,它是建立在Hbase上的一层数据读写服务。它支持秒级数据采集所有metrics,支持永久存储,可以做容量规划,并很容易地接入到现有的报警系统里。OpenTSDB可以从大规模的集群(包括集群中的网络设备、操作系统、应用程序)中获取相应的metrics并进行存储、索引以及服务,从而使得这些数据更容易让人理解,如web化,图形化等。开源OpenTSDB仅支持通过Restful 方式查询时序数据库,学习成本高,使用不方便。
    三、各数据库优劣势分析
    (一)各数据库功能分析
    (1)InfluxDB功能分析:
    InfluxDB在最新的 DB-Engines时间序列数据库的排名中位列第一,无需特殊的环境依赖,使用简单方便,且底层采用了TSMT 结构实现高性能读写。相比于其他类型时序数据库,InfluxDB优势有以下几点:内置HTTP接口,使用方便;数据可以进行标记,查询灵活;支持类sql查询;实时查询,数据在写入索引后就能够被立即查出;灵活的数据保留策略,可以定义到Database级别。适用于存储大规模的时序数据并进行实时分析,包括来自 DevOps 监控、应用指标和 IoT 传感器上的数据。缺点为:字段值无法更新,不支持join操作;无法创建额外索引,用法较为呆板;需用户自己实现容错功能,且用户反馈并发查询性能差。
    (2)DolphinDB功能分析:
    DolphinDB作为国产时序数据库,在最新的 DB-Engines时间序列数据库排名中在国产时序数据库中排名第一。从语言方面而言,DolphinDB的query语言相对接近标准的sql语言,类似于python,虽然没有Kdb+的q语言复杂,但也需一定的学习成本。在数据库本身方面,DolphinDB支持多个数据库支持,一个数据库一个handle,完全不互斥。在分区方面,DolphinDB定义分区schema之后,由系统自动维护,DolphinDB可以把不同结构数据,用不同的partition,存在不同的数据库中,非常灵活。可并行搜索分区。分布式方面支持“备份/恢复”和“支持事务”这两个特点。
    (3)TimescaleDB功能分析:
    TimescaleDB 是目前市面上唯一的开源且完全支持 SQL 的时序数据库,这是TimescaleDB 相较于其他时序数据库的最大优势。缺点也很明显,TimescaleDB 基于PostgreSQL,适合数据量不太大的情形, 并且不支持水平扩展。
    (4)HiTSDB、TSDB功能分析:
    HiTSDB、TSDB分别为阿里云和百度云平台下的子产品,二者期初都是为解决自身业务需求而设计,后续逐渐商业化的产品。二者功能大同小异,主要为支持高效数据读写、插值查询、实时页面监控、数据管理、聚合计算、低成本存储等。

    (二)数据库间功能对比
    (1)InfluxDB、Kdb+、Dolphindb功能对比
    在这里插入图片描述

    (2)InfluxDB和OpentsDB功能对比
    在这里插入图片描述

    (三)时序数据库在股转的应用点
    从时序数据库特点来看,股转的交易数据满足数据基本上都是写入,没有更新的需求,而且不管申报,成交还是行情数据都是带时间标签的,在数据写入方面还没有达到秒级千万写入量的级别。
    读写方面:时序数据库普遍适用于写多查少的场景,股转的交易数据是需要频繁写入的,但是写入量在秒级往往不太大,不能充分发挥时序数据库支持秒级千万写入量的优势;在查询方面,当前端有对大表进行查询且需快速响应需求时可考虑,因为各个数据库产品都做了查询优化,下面以数据库DolphinDB和InfluDB为例,查看查询性能(数据量:7800w,单位ms):

    内置函数查询性能:

    数据存储方面:由于时序数据库一般对数据都做了压缩,压缩比普遍能达到20-30%,从数据存储上看,可以减少部分存储成本。

    附:
    DolphinDB与InfluxDB在交易数据处理的对比测试报告
    https://zhuanlan.zhihu.com/p/42287416
    TimescaleDB比拼InfluxDB
    https://www.cnblogs.com/dhcn/p/10370032.html
    DolphinDB和TimescaleDB 性能对比测试报告
    https://zhuanlan.zhihu.com/p/56982951
    DolphinDB作为量化金融研究平台的8大优势
    https://zhuanlan.zhihu.com/p/44995618
    Else: DilphinDB(智臾科技) https://www.zhihu.com/question/289997125

    附:国产时序数据库简介
    (1)浙江智臾科技有限公司 - DolphinDB(https://www.dolphindb.com/)
    DolphinDB是浙江智臾科技有限公司研发的一款高性能分布式时序数据库,集成了功能强大的编程语言和高容量高速度的流数据分析系统,为海量结构化数据的快速存储、检索、分析及计算提供一站式解决方案,适用于量化金融及工业物联网等领域。(商务:sales@dolphindb.com)
    (2)北京涛思数据科技有限公司 - TDengine
    涛思数据(TAOS Data) 专注时序空间数据的采集、存储、查询、计算和分析。开发了拥有自主知识产权、自主可控的高性能、可伸缩、高可靠、零管理的分布式时序空间数据引擎TDengine,可广泛运用于物联网、车联网、金融等领域,让数据监测分析系统的成本直降80%。
    (3)北京中电普华信息技术有限公司 - 思极有容数据库(国网信通院-主要应用电力行业)
    思极有容时序数据库正是普华公司面对这一高速增长的物联网大数据市场和技术挑战推出的创新性的大数据处理产品,它不依赖任何第三方软件,也不是优化或包装了一个开源的数据库或流式计算产品,而是在吸取众多传统关系型数据库、NoSQL数据库、流式计算引擎、消息队列等软件的优点之后自主开发的产品,在时序空间大数据处理上,有着自己独到的优势
    (4)北京青云科技股份有限公司- QingCloud ChronusDB(云平台子产品)
    ChronusDB时序数据库提供超强的查询分析、高性能并发读写、低成本存储、丰富的时序数据处理等能力,满足物联网设备监控分析、工业制造监控分析、系统及业务实时监控等场景的需求,旨在帮助企业实现对物联网数据的全生命周期管理和智能化分析,推动物联网产业朝着更加智能化的方向发展。
    (5)阿里巴巴 - HiTSDB(分布式流式聚合引擎)https://www.aliyun.com/product/hitsdb
    高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) 是一种高性能,低成本,稳定可靠的在线时序数据库服务; 提供高效读写,高压缩比存储、时序数据插值及聚合计算,时间线多维分析。主要服务于监控系统和IoT领域。
    (6)百度 - TSDB
    百度智能云时序时空数据库(Time Series Database,简称 TSDB)是一种存储和管理时间序列数据的专业化数据库,为时间序列的存储提供高性能读写、低成本存储、强计算能力和多生态支持的多种能力。

    展开全文
  • 近几年IoT、IIoT、AIoT和智慧城市快速发展,时序数据库成为数据架构技术栈的标配。根据国际知名网站DB-Engines数据,时序数据库在过去24个月内排名高居榜首,且远高于其他类型的数据库,可见业内对时序数据库的迫切...
  • 时序数据库InfluxDB 性能测试 为什么时序数据库更快 时序数据库场景 TSDB和其他数据库非常不同的属性包括:时间戳、数据存储和压缩、数据生命周期管理、数据汇总、处理大量记录的时间序列相关扫描的能力以及时间...
  • 除了最常用的关系数据库和缓存之外,之前我们已经介绍了在Spring Boot中如何配置和使用MongoDB、LDAP这些存储的案例。接下来,我们继续介绍另一种特殊的数据库:时序数据库Inf...
  • 时序数据库介绍和使用

    万次阅读 多人点赞 2018-06-10 18:17:08
    用描述性的语言来解释什么是时序数据,简单的说,就是这类数据描述了某个被测量的主体在一个时间范围内的每个时间点上的测量值。它普遍存在于IT基础设施、运维监控系统和物联网中。    对时序数据进行建模的话,...
  • 时序数据库应用场景与设计

    千次阅读 2019-06-20 14:20:04
    数据特点 时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;...对比传统数据库仅仅记录了数据的当前值,时序数据库则...
  • 嘉宾介绍:黄杰,目前在饿了么框架工具部,主要负责饿了么整个监控体系,及相关基础设施(时序数据库,实时计算等)。之前携程框架部负责监控系统。对时序数据库,实时计算,大数据等方面比较感觉兴趣,专注于监控...
  • 时序数据库之PostgreSql

    2021-10-12 11:35:15
    mysql可能大家都用的比较多且普遍,最近1年在使用PostgreSql,其大体DML语句与mysql类似,只是部分DDL语句有些区别,写一篇文章给正在应用该数据库或者准备选型该数据库的朋友,分享下使用方式与心得 PostgreSql ...
  • 时序数据库.rar

    2019-07-10 10:14:16
    比较好用的时序数据库。NoSql对于实时数据的存储以及数据的汇总报表计算等比较方便快捷;
  • 为什么要用时序数据库

    千次阅读 2020-04-15 21:28:21
    ​ ​ 很凑巧,我们在上一篇浅谈数据存储文章中,谈到了时序数据库,最近我们的项目中正好用到了现在很火的时序数据库TDengine,所以在这里,顺便和大家分享一下我在学习以及使用时序数据库的一些心得。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,924
精华内容 15,969
关键字:

时序数据库