引言

随着近几年物联网的发展,时序数据迎来了一个不小的爆发。为了存储这些时序数据,各大企业纷纷推出自己的时序数据库。
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。

Tablestore Timestream:为海量时序数据存储设计的全新数据模型...相关推荐

  1. IoT 物联网海量时序数据存储最佳实战

    随着 5G/IoT 物联网技术的飞速发展,IoT 设备产生的时序数据也呈爆炸式增长,数据的总量(Volume).数据类型(Variety)越来越多.访问速度(Velocity)要求越来越快.对数据价值 ...

  2. 药品监管系统架构揭秘:海量溯源数据存储与查询...

    前言 在刚刚过去的2018年,"毒疫苗"事件再次触及了大众的敏感神经,因为十年前的"毒奶粉"事件还历历在目.我们急需创建一个全国性的药品(食品)监控追踪体系.与 ...

  3. 药品监管系统架构揭秘:海量溯源数据存储与查询

    前言 在刚刚过去的2018年,"毒疫苗"事件再次触及了大众的敏感神经,因为十年前的"毒奶粉"事件还历历在目.我们急需创建一个全国性的药品(食品)监控追踪体系.与 ...

  4. 海量时序数据低成本存储架构设计

    导读 近些年来得益于传感器技术.无线网络技术.云计算和人工智能技术的发展,物联网的基础设施日益完善,并应用到了新能源.智能家居.车联网.智慧工业等众多领域中,实现了"人与物".&q ...

  5. mysql 轨迹数据存储_基于Tablestore实现海量运动轨迹数据存储-阿里云开发者社区...

    前言 现在越来越多的人都开始关心自己的运动数据,比如每日的计步.跑步里程.骑行里程等.运动APP与运动类的穿戴设备借助传感器.地图.GPS定位等技术,收集好运动数据以后,通过与互联网社交功能结合,产生 ...

  6. mysql 轨迹数据存储_基于Tablestore实现海量运动轨迹数据存储

    前言 现在越来越多的人都开始关心自己的运动数据,比如每日的计步.跑步里程.骑行里程等.运动APP与运动类的穿戴设备借助传感器.地图.GPS定位等技术,收集好运动数据以后,通过与互联网社交功能结合,产生 ...

  7. Netflix如何设计一个能满足5倍增长量的时序数据存储新架构?

    2016年1月,Netflix在全球范围内扩展业务.越来越多的会员.越来越多的语言和越来越多的视频回放将时间序列数据存储架构扩展到了它的临界点(详见第1部分文章<Netflix实战指南:规模化时 ...

  8. 时序数据库技术体系-时序数据存储模型设计

    本文引用自: http://hbasefly.com/2017/11/19/timeseries-database-2/ 作者对时序数据库有很多的研究,其博客发表有多篇相关文章. 本人最近在学习时序数 ...

  9. 基于云上分布式NoSQL的海量气象数据存储和查询方案

    前言 气象数据是一类典型的大数据,具有数据量大.时效性高.数据种类丰富等特点.气象数据中大量的数据是时空数据,记录了时间和空间范围内各个点的各个物理量的观测量或者模拟量,每天产生的数据量常在几十TB到 ...

最新文章

  1. 嵩天-Python语言程序设计程序题--第七周:文件和数据格式化
  2. 高效的企业测试–测试框架(5/6)
  3. 【Go】sync.RWMutex源码分析
  4. Java面向对象的编程
  5. JS学习之表格的排序
  6. MMKV_MMKV简介
  7. Composer -- PHP依赖管理的新时代
  8. 4月想跳槽的同学,没有更好的选择,可以去美团
  9. [PPPOE]PPPD的选项
  10. python成语接龙到为所欲为_python成语接龙
  11. 商品房买卖抵押贷款中的保险
  12. 【matlab教程】18、删除变量
  13. 汉诺塔 = 套娃 ?
  14. WebView:Google,我已经长大了,知道自己区分安全!!
  15. reader excelt to db
  16. iMeta 微生物组生物信息高起点期刊创刊会暨学术研讨会(8月25日下午1:30)
  17. excle表格打印相关问题
  18. 【沪江日语电台】Love Love J-popVol.2
  19. css 超长文本自动换行
  20. 将matlab的矩阵输出为txt格式

热门文章

  1. fastdfs-client-java操作fastdfs
  2. 发布Drools Workbench到Tomcat on Linux
  3. POJ 1694 An Old Stone Game ★(排序+树+递归)
  4. MapBar和MapInfo中的比例尺[更新:MapBar比例尺是正确的]
  5. Element-UI-简单介绍---Element-UI工作笔记001
  6. Elasticsearch--高级-映射mapping_添加行的字段映射---全文检索引擎ElasticSearch工作笔记018
  7. STM32工作笔记0027---理解电阻的串联和并联
  8. IntelliJ Idea学习笔记008---Idea左侧栏不显示目录结构_或者只显示一个Project不显示其他东西
  9. DISCUZ学习笔记01---discuz集成环境的搭建
  10. android学习笔记---63-PopupWindow,泡泡窗口的实现