Tablestore Timestream:为海量时序数据存储设计的全新数据模型

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 引言 随着近几年物联网的发展,时序数据迎来了一个不小的爆发。为了存储这些时序数据,各大企业纷纷推出自己的时序数据库。Tablestore作为阿里云自研的NoSQL多模型数据库,能够提供海量结构化数据存储以及快速的查询和分析服务,其在存储模型、数据规模以及写入和查询能力上,都能很好的满足时序数据的场景,另外已经支持很多时序类业务,例如监控类的云监控,事件类的阿里健康药品追踪以及快递包裹轨迹等。

引言

随着近几年物联网的发展,时序数据迎来了一个不小的爆发。为了存储这些时序数据,各大企业纷纷推出自己的时序数据库。
Tablestore作为阿里云自研的NoSQL多模型数据库,能够提供海量结构化数据存储以及快速的查询和分析服务,其在存储模型、数据规模以及写入和查询能力上,都能很好的满足时序数据的场景,另外已经支持很多时序类业务,例如监控类的云监控,事件类的阿里健康药品追踪以及快递包裹轨迹等。
为了让用户能够更加专注于业务开发,我们提供了Timestream时序模型,其适用于监控、金融、轨迹溯源等时序业务场景。

时序数据简介

参考维基百科对于时间序列的定义:时间序列是一组按照时间发生先后顺序进行排列的数据点序列。简单来说,时序数据就是描述一个主体在一组时间点上的状态,这里的时间可能是周期性的采样,也可能是离散的,其中周期性采样的数据可以称监控类数据,离散的数据称之为事件类数据。
_

时序数据常见于IT基础设施、监控运维、物联网等场景中,比如说设备或应用监控数据、物流轨迹数据、金融股票K线等等,这些时序数据包含以下特点:

  • 时间属性,数据包含时间信息,且写入的数据会按照时间顺序往后进行追加。
  • 随机写入,在某个时间点会写入不同主体的状态,而不是相同主体的不同时间点的数据。
  • 连续查询,会按照时间范围查询某个主体的数据。
  • 写多读少,在时序场景中,写入的速率稳定且远大于读取。
  • 数据维度很多,不同主体会有不同的维度信息,需要复杂的数据检索能力。

 Tablestore在支持时序数据存储场景上,有比较大的优势,主要体现在:

  • 高可用、高可靠、可伸缩
  • 高并发写入能力
  • 按照时间范围高效数据查询
  • 复杂的时间线索引能力
  • 数据聚合和分析能力
  • 数据生命周期管理

Tablestore作为一个多模型分布式NoSQL数据库,为了更好的支持时序数据场景,新推出了Timestream模型。该模型主要应用于时序和时空场景,也是Tablestore综合了业界主流的时序数据库,所定义和抽象的数据模型。

Tablestore Timestream

数据模型

_

上面是时序数据的抽象模型,我们可以定义下时序数据的一个完整模型:
_

这个定义中包含:

  • Name:定义数据的类别
  • Tags:唯一标识个体的元数据
  • Attributes: 个体的可变属性
  • Timestamp:数据产生的时间戳
  • Location:数据产生的空间信息
  • Fields:数据对应的值或状态,可提供多个值或状态,非一定是数值类型

时序数据包含元数据和数据点两个部分,其中元数据由Name、Tags以及Attributes组成,而Name+Tags唯一确定某个元数据;数据点则是由Timestamp、Location以及Fields组成。

下面通过事件类的物流轨迹场景来看一下Timestream数据模型是如何使用的。
_

这是一个快递的物流轨迹数据,其记录的是快递在不同时间点的状态变化。该轨迹数据的元数据则是快递本身,包含了单号、物流平台、快递当前位置信息以及快递寄件/收件等元信息,其中单号以及物流平台的组合(Identifier)唯一确定这个快递。下面分析一下数据存储方式:

  • 将物流平台作为Name进行存储,一个快递平台的数据属于同一类数据,对数据检索性能有一定的提升
  • 将快递单号作为Tags存储,唯一确定一个快递
  • 快递的其他元信息存储在Attributes中,避免Tags过长导致的性能问题,同时能够支持这些信息的修改
  • 将快递的当前位置也存在在Attributes中,可以实现根据某个位置检索当前时间附近的快递
  • 快递的轨迹时序数据(位置/状态)放在Fields中,可以查询某个快递在某个时间范围内的轨迹

特点和优势

_

以上是基于Tablestore Timestream来构建一个时序数据存储、计算和分析的完整架构。热数据通过agent直接写入到Tablestore中,再通过通道服务将数据增量流出到函数计算进行事件监测,以及流到流计算系统进行后聚合,再将聚合后的数据写回到表格存储中。
这是一套Serverless的架构,通过组合云产品的方式,能够做到提供完整的时序场景所需的所有功能。并且,各组件可以替换成其他同类云产品,架构灵活,相比开源时序数据库在以下方面有很大的优势:高性能&高可靠&高可用、全托管、元数据检索、冷热数据分层和灵活计算分析能力。

元数据检索

元数据是时序数据里非常重要的一块数据,其数据量比时序数据要小很多,但查询的复杂度却高很多,并且数据查询往往是需要先定位时间线,所以元数据检索是查询的核心之一。
_

元数据检索往往是通过Name, Tags,以及Attributes来定位满足条件的时间线。在元数据检索功能方面,Tablestore Timestream支持Name/Tags的精确查询、前缀查询,Attributes的GEO/精确/前缀/范围/模糊查询,还支持这四部分数据的多字段组合查询需求,能够很好的满足业务对于时间线元数据的检索需求。
性能方面,Tablestore Timestream能够支撑百亿级的时间线检索并且提供毫秒级的延迟。

计算分析能力

_

表格存储实现了与各计算产品的无缝对接,包括离线数据分析、流式计算、事件驱动等,能够提供灵活的计算分析能力,满足时序场景下的各类计算需求。特别是,Tablestore与Blink深度结合,可作为Blink的源和结果,让整个数据流可形成闭环,并借助Blink实现更灵活的计算配置,可以满足复杂的数据计算需求,比如说数据降维、降精度、异常状态检测、实时统计分析等需求。
另外,Tablestore也支持通过通道服务将数据增量实时流出,实现定制化分析。
Tablestore也提供了轻量级的交互式数据分析能力,满足常见的数据查询计算需求,比如sum,group by等。

冷热数据分层

时序数据有一个显著特征是数据访问冷热分明,最近写的数据会被更频繁的访问。基于Timestream的架构中,可以用高性能实例来存储热数据,满足交互式需要较快速度的数据分析。降维或者降精度之后的冷数据存储在容量型实例,满足离线计算场景。并且,对于冷数据,我们会通过Erasing Coding以及极致压缩算法进一步降低存储成本。

更多的时序介绍架构和优势介绍参考《Tablestore时序数据存储 - 架构篇》。

典型应用场景

_

前面介绍了时序场景根据数据的时间特性可以分为事件和监控两大类。这两类场景各有一些典型特征,比如说监控类场景时间线生命周期长,有降精度需求等;事件类场景时间线生命周期短,时间线数量庞大,无降精度需求,需要大规模时间线的高效检索。上面介绍了表格存储Timestream的优势,我们已经很好的支持了这两类业务,比如监控类的云监控,事件类的阿里健康药品追踪以及邮政包裹轨迹等。

后续我们会对不同的场景提供实战文档,敬请关注。

快速入门

  1. 创建TimestreamClient
        AsyncClient asyncClient = new AsyncClient(endpoint, accessKeyId, accessKeySecret, instance);
        TimestreamDBConfiguration conf = new TimestreamDBConfiguration(metaTableName);
        TimestreamDB db = new TimestreamDBClient(asyncClient, conf);
  1. 创建数据表和元数据表
        db.createMetaTable();
        db.createDataTable(dataTableName);
  1. 读写数据

        TimestreamIdentifier identifier = new TimestreamIdentifier.Builder("cpu").build();
        Point point = new Point.Builder(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
                .addField("a1", 1)
                .build();

                // 写时序数据
        TimestreamDataTable dataTable = db.dataTable(dataTableName);
                dataTable.asyncWrite(identifier, point);
                // 查时序数据
                Iterator<Point> iter = dataTable.get(identifier)
                    .timeRange(TimeRange.range(0, 10000, TimeUnit.MILLISECONDS))    //查询[0, 10000)范围内的数据
                    .fetchAll();

                // 写时间线元数据
        TimestreamMeta meta = new TimestreamMeta(identifier)
                .addAttribute("a1", "");
        TimestreamMetaTable metaTable = db.metaTable();
        metaWriter.put(meta);
                // 查时间线元数据
                TimestreamMeta meta = metaTable.get(identifier).fetch();

更多示例请参考:Timestream使用参考

扩展阅读

基于Tablestore的Wifi设备监管系统架构实现
基于Tablestore管理海量快递轨迹数据架构实现
药品监管系统架构揭秘:元数据管理与轨迹溯源

欢迎加入

如果您对表格存储、时序模型感兴趣,对模型使用有疑问、想探讨,欢迎加入【表格存储公开交流群】,群号:11789671。

相关实践学习
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
目录
相关文章
|
SQL 存储 弹性计算
玩转Tablestore:使用Grafana快速展示时序数据
Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,可以通过将采集的数据查询然后可视化的展示,实现报警通知;Grafana拥有丰富的数据源,官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQ
1644 0
|
SQL 存储 传感器
表格存储物联网时序模型介绍
表格存储的时序模型是针对时间序列数据的特点进行设计,适用于物联网设备监控、设备采集数据、机器监控数据等场景。自21年9月公测,经过长时间打磨,功能已经正式商业化。本文简单介绍表格存储时序模型优势、特点以及数据建模建议。
755 0
表格存储物联网时序模型介绍
|
存储 传感器 运维
基于 Tablestore 时序模型构建车联网数据存储
背景最近几年,物联网得到了飞速的发展。在车联网、设备监控、网络监控、快递跟踪等物联网典型场景下,海量监控数据、轨迹数据、传感器数据被生产数来。这些数据产生频率高、数据量大、严重依赖采集时间,是典型的时序数据。传统的数据库是无法应对这种高写入的海量实时数据的,需要使用能够支持时序模型的时序数据库对这些数据进行储存和分析。表格存储时序模型是专门针对时序数据特点,为物联网、车联网等场景设计的。本文基于车
411 0
基于 Tablestore 时序模型构建车联网数据存储
|
存储 SQL 传感器
基于 Tablestore 时序存储的物联网数据存储方案
背景物联网时序场景是目前最火热的方向之一。海量的时序数据如汽车轨迹数据、汽车状态监控数据、传感器实时监控数据需要存放进入数据库。一般这类场景下存在如下需求数据高写入,低读取需要对写入数据进行基础的图表展示对写入数据进行聚合分析传统的关系型数据库并不适合此类场景,时序数据库脱颖而出。表格存储时序实例支持时序数据的存储,其具有如下特点:Serverless,分布式,低成本高写入支持优秀的索引能力对数据
1427 0
基于 Tablestore 时序存储的物联网数据存储方案
|
SQL 存储 监控
表格存储快速上手-时序模型
表格存储的时序模型是针对时间序列数据的特点进行设计,适用于物联网设备监控、设备采集数据、机器监控数据等场景。以车联网场景为例展示车辆状态表的时序模型操作。
318 0
表格存储快速上手-时序模型
|
存储 SQL NoSQL
海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解
海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解
354 0
海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解
|
NoSQL 数据库 索引
海量结构化数据存储技术揭秘:Tablestore表设计最佳实践
前言 表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库。在处理海量数据时,方案设计非常重要,合理的设计才能够发挥出数据库的性能水平。本文主要介绍Tablestore在表设计方面的一些实践经验,供大家参考。
9782 0
|
存储 NoSQL Java
海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解 | 7月24号云栖夜读
今天的首篇文章,讲述了:表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库。Tablestore在阿里云官网上有各种文档介绍,也发布了很多场景案例文章,这些文章收录在这个合集中《表格存储Tablestore权威指南》。
4831 0
|
索引 存储 NoSQL
海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解
前言 表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库。Tablestore在阿里云官网上有各种文档介绍,也发布了很多场景案例文章,这些文章收录在这个合集中《表格存储Tablestore权威指南》。
24453 0
|
存储 NoSQL Java
基于Tablestore实现海量运动轨迹数据存储
前言 现在越来越多的人都开始关心自己的运动数据,比如每日的计步、跑步里程、骑行里程等。运动APP与运动类的穿戴设备借助传感器、地图、GPS定位等技术,收集好运动数据以后,通过与互联网社交功能结合,产生了一种新的运动模式。
6073 0