您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
时序时空数据库调研
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
时序时空数据库调研
自猿其说Tech
2022-04-27
IP归属:未知
37080浏览
数据库
### 1 什么是TSDB? 时序时空数据库(Time Series Database)是用于存储和管理时间序列数据及地理空间数据的专业化数据库,为时间序列数据及地理空间数据提供高性能读写和强计算能力的数据库服务。 ### 2 时间序列数据库的特点 - 大部分时间都是写入操作。 - 写入操作几乎是顺序添加,大多数时候数据到达后都以时间排序。 - 写操作很少写入很久之前的数据,也很少更新数据。大多数情况在数据被采集到数秒或者数分钟后就会被写入数据库。 - 删除操作一般为区块删除,选定开始的历史时间并指定后续的区块。很少单独删除某个时间或者分开的随机时间的数据。 - 基本数据大,一般超过内存大小。一般选取的只是其一小部分且没有规律,缓存几乎不起任何作用。 - 读操作是十分典型的升序或者降序的顺序读。 - 高并发的读操作十分常见。 ### 3 常见的时间序列数据库 TSDB项目官网 - influxDB:https://influxdata.com/ - RRDtool:http://oss.oetiker.ch/rrdtool/ - Graphite:http://graphiteapp.org/ - OpenTSDB:http://opentsdb.net/ - Kdb+:http://kx.com/ - Druid:http://druid.io/ - KairosDB:http://kairosdb.github.io/ ![](//img1.jcloudcs.com/developer.jdcloud.com/afc79a50-2fa0-4a26-b9e1-44a854bd6f2f20220427144942.png) ### 4 公司层面的实现 #### 4.1 时序实现:某监控平台 主要基于Prometheus,提供上报接口 ##### 4.1.1 Prometheus适用的场景 Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。 ##### 4.1.2 Prometheus不适用的场景 Prometheus它的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。 如果你对统计数据需要100%的精确,它并不适用,例如:它不适用于实时计费系统。 #### 4.2 时空时序引擎:just 京东城市时空数据引擎(JD Urban Spatio-Temporal Data Engine,JUST)采用先进的数据建模方法、数据存储技术、分布式索引技术和分析技术,预置了多种有效的时空挖掘算法,研发自有分布式GIS引擎,提供了集数据存储、查询、分析、可视化一体的解决方案,具有接得稳、查得快、用得巧、看得清的特点,能够便捷高效地管理海量时空数据。JUST,因时空数据而生,以城市智能为美。 ![](//img1.jcloudcs.com/developer.jdcloud.com/57c32f6d-14e7-4fd2-8644-d2a016ddf65420220427145043.png) 相关文档: just引擎功能及适用场景介绍:https://just.urban-computing.cn/%EF%BC%89%E6%98%AF%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8ClickHouse%E5%AE%9E%E7%8E%B0%E6%97%B6%E5%BA%8F%E6%95%B0%E6%8D%AE%E7%AE%A1%E7%90%86%E5%92%8C%E6%8C%96%E6%8E%98%E7%9A%84%E3%80%82#/productCenter ### 5 其他公司实现 - 百度云产品:https://cloud.baidu.com/doc/TSDB/index.html - 阿里云产品:https://help.aliyun.com/product/54825.html - 涛思数据:http://www.taosdata.com ### 6 主要应用场景 #### 6.1 物联网设备状态监控存储分析 各种物联网设备的状态数据实时高效写入到时序数据库中. 可以实现: - 通过时序数据库的数据API接口读取实时数据; - 利用时序数据库查询快的优势对数据进行各种聚合运算得到数据报表; - 通过时序数据库的控制台或者物可视直观得到数据的变化趋势和曲线,帮助用户分析数据内涵. ![](//img1.jcloudcs.com/developer.jdcloud.com/f7713e68-f382-4788-ab6a-e8aa089c906020220427145140.png) #### 6.2 互联网业务性能监控服务 互联网服务可以将用户的访问延迟、查询返回效率、业务服务指标监控数据写入时序数据库中,时序数据库可以做多维度的聚合分析和监控项展示. 举个例子,一个音视频点播的服务商,需要将每个房间的清晰度、流畅度、是否卡顿等监控信息实时记录下来,即可以将这些监控项以一定的频率写入时序数据库. 您可以: - 按照一定的聚合条件得到某一段时间内哪一个运营商的网络更流畅 - 查看过去一天/一周某个房间的流畅度曲线 - 分析同时在线的房间数与房间清晰度、流畅度之间的关系 ![](//img1.jcloudcs.com/developer.jdcloud.com/df0e22c2-04da-4b49-8c49-08c5d7cf60ca20220427145216.png) ### 7 相关概念 - 时序数据(Time Series Data):基于稳定频率持续产生的一系列指标监测数据。例如,监测某城市的空气质量时,每秒采集一个二氧化硫浓度的值而产生的一系列数据。 - 度量(Metric):监测数据的指标,例如风力和温度。 - 标签(Tag):度量(Metric)虽然指明了要监测的指标项,但没有指明要针对什么对象的该指标项进行监测。 - 标签(Tag)就是用于表明指标项监测针对的具体对象,属于指定度量下的数据子类别。 - - 一个标签(Tag)由一个标签键(TagKey)和一个对应的标签值(TagValue)组成,例如“城市(TagKey)= 杭州(TagValue)”就是一个标签(Tag)。更多标签示例:机房 = A 、IP = 172.220.XX.XX。 - - 注意:当标签键和标签值都相同才算同一个标签;标签键相同,标签值不同,则不是同一个标签。 - - 在监测数据的时候,指定度量是“气温”,标签是“城市 = 杭州”,则监测的就是杭州市的气温。 - 标签键(TagKey,Tagk):为指标项(Metric)监测指定的对象类型(会有对应的标签值来定位该对象类型下的具体对象),例如国家、省份、城市、机房、IP 等。 - 标签值(TagValue,Tagv):标签键(TagKey)对应的值。例如,当标签键(TagKey)是“国家”时,可指定标签值(TagValue)为“中国”。 - 值(Value):度量对应的值,例如 15 级(风力)和 20 ℃(温度)。 - 时间戳(Timestamp):数据(度量值)产生的时间点。 - 数据点 (Data Point):针对监测对象的某项指标(由度量和标签定义)按特定时间间隔(连续的时间戳)采集的每个度量值就是一个数据点。“一个度量 + N 个标签(N >= 1)+ 一个时间戳 + 一个值”定义一个数据点。 - 时间序列(Time Series):针对某个监测对象的某项指标(由度量和标签定义)的描述。“一个度量 + N 个标签KV组合(N >= 1)”定义为一个时间序列,某个时间序列上产生的数据值的增加,不会导致时间序列的增加。 时间序列的示意图如下: ![](//img1.jcloudcs.com/developer.jdcloud.com/c9e89273-879a-4385-a762-22cb48b6be1720220427145332.png) - 时间线(Timeline):等同于时间序列的概念。 - 时间精度:时间线数据的写入时间精度——毫秒、秒、分钟、小时或者其他稳定时间频度。例如,每秒一个温度数据的采集频度,每 5 分钟一个CPU使用率的采集频度。 - 数据组(Data Group):如果需要对比不同监测对象(由标签定义)的同一指标(由度量定义)的数据,可以按标签这些数据分成不同的数据组。例如,将温度指标数据按照不同城市进行分组查询,操作类似于该 SQL 语句:select avg(temperature),city from xx where xx group by city。 - 聚合( Aggregation):当同一个度量(Metric)的查询有多条时间线产生(多个指标采集设备),那么为了将空间的多维数据展现为成同一条时间线,需要进行合并计算,例如,当选定了某个城市某个城区的污染指数时,通常将各个环境监测点的指标数据平均值作为最终区域的指标数据,这个计算过程就是空间聚合。 - 降采样(Downsampling):当查询的时间区间跨度较长而原始数据时间精度较细时,为了满足业务需求的场景、提升查询效率,就会降低数据的查询展现精度,这就叫做降采样,比如按秒采集一年的数据,按照天级别查询展现。 - 数据时效(Data’s Validity Period):数据时效是设置的数据的实际有效期,超过有效期的数据会被自动释放。 ### 8 参考 - 阿里云InfluxDB架构介绍:https://developer.aliyun.com/article/717901 - Prometheus 架构介绍:https://www.hi-linux.com/posts/25047.html - 京东TDEngine应用介绍:https://xie.infoq.cn/article/56c03bab62f073436508a9442 ------------ ###### 自猿其说Tech-JDL京东物流技术与数据智能部 ###### 作者:冯鸿儒
原创文章,需联系作者,授权转载
上一篇:rt下降40%?程序并行优化六步法
下一篇:Flutter三棵树系列之BuildOwner
相关文章
【技术干货】企业级扫描平台EOS关于JS扫描落地与实践!
突破容量极限:TiDB 的海量数据“无感扩容”秘籍
京东智联云MySQL数据库如何保障数据的可靠性?
自猿其说Tech
文章数
426
阅读量
2149964
作者其他文章
01
深入JDK中的Optional
本文将从Optional所解决的问题开始,逐层解剖,由浅入深,文中会出现Optioanl方法之间的对比,实践,误用情况分析,优缺点等。与大家一起,对这项Java8中的新特性,进行理解和深入。
01
Taro小程序跨端开发入门实战
为了让小程序开发更简单,更高效,我们采用 Taro 作为首选框架,我们将使用 Taro 的实践经验整理了出来,主要内容围绕着什么是 Taro,为什么用 Taro,以及 Taro 如何使用(正确使用的姿势),还有 Taro 背后的一些设计思想来进行展开,让大家能够对 Taro 有个完整的认识。
01
Flutter For Web实践
Flutter For Web 已经发布一年多时间,它的发布意味着我们可以真正地使用一套代码、一套资源部署整个大前端系统(包括:iOS、Android、Web)。渠道研发组经过一段时间的探索,使用Flutter For Web技术开发了移动端可视化编程平台—Flutter乐高,在这里希望和大家分享下使用Flutter For Web实践过程和踩坑实践
01
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。
自猿其说Tech
文章数
426
阅读量
2149964
作者其他文章
01
深入JDK中的Optional
01
Taro小程序跨端开发入门实战
01
Flutter For Web实践
01
配运基础数据缓存瘦身实践
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号