查询时序数据库中的数据
来源:互联网 发布:js解析二维码图片 编辑:程序博客网 时间:2024/06/06 00:49
查询时序数据库中的数据
上一篇,我们实际上传了50,000个数据点。本文,我们了解如何查询时序数据库中海量的数据。
查询数据的使用场景
时序数据库主要的使用场景就是管理机器运行的实时数据和其他场景中的时序数据。而查询机器运行的历史数据和实时数据,分析数据背后的趋势和规律,为企业的设备运营提供参考和决策建议,以提高企业的运营效率,则是查询时序数据的主要目的。
Pedix平台的时序数据库提供了丰富的查询功能,完全能满足工业互联网应用场景中查询数据的各项需求。时序数据库通过REST接口能够查询和聚合给定时间窗口的数据,其主要功能有,
- 从给定的时间窗口查询特定标签管理的时序数据。
- 从给定时间窗口聚合时序数据或者对时序数据进行线性插值补齐缺失的时序数据
- 对时序数据按属性、数据质量、采样点个数和时间进行分组,方便后续分析
- 筛选特定时序数据或者筛选最近时间的数据,用做实时仪表盘展示。
时序数据库的查询接口
构建请求的头部信息
时序数据库请求的头部信息都必须包含如下三个字段,
zone-http-header-name
和zone-http-header-value
字段的值 Content-Type 字符串类型 是 表示发送请求内容的类型。时序数据库请求的类型都是JSON,因此,这里必须是application/json
请求的方法
时序数据库数据查询接口同时支持GET
和POST
两种方法,给开发人员以最大的灵活度查询数据。因为,
- 如果查询语句不是特别复杂,可以将查询语句通过
GET
请求的query
参数传递给时序数据库。这样查询的结果可以被代理服务器和浏览器缓存,提高下一次查询的效率。例如,?query={"start":"2d-ago","tags":[{"name":"Temp5217-3437"}]}
。 - 如果查询语句非常复杂,用
POST
请求把查询语句放在请求的消息体中传递。这样做,使查询语句的可读性非常高。唯一的缺憾就是不能被缓存。
注:本文中所有的的查询都是用
POST
方法描述,以增加查询语句的可读性。
最常用的给定时间窗口查询
给定时间窗口查询是时序数据库中最常用的查询语句。我们必须给定时间窗口的开始时间,时序数据库支持相对时间和绝对时间两种格式。而结束时间是可选的,如果没有指定结束时间,时序数据库则默认结束时间为当前请求被接收到的时间。我们通过start
和end
字段分别定义时间窗口的开始时间和结束时间。
- 绝对时间为从Unix系统中的epoch时间开始的毫秒数。例如,
1498461645500
表示北京时间2017年6月26日下午3点20分45秒500毫秒 - 相对时间为相对于请求被时序数据库接收到的时间。例如,开始时间是3天,那么时序数据库就返回最近三天的所匹配的数据点。相对时间定义为人类便于阅读的字符串,其格式为
<数值><时间单位>-ago
。其中,数值为非0的正整数,而时间单位的定义如下表所示。
给定时间窗口查询请求的具体格式如下,
POST /v1/datapoints HTTP/1.1Host: time-series-store-predix.run.aws-jp01-pr.ice.predix.ioAuthorization: bearer eyJhbGciOiJSmtaysOrwuOm14HrFP6R0802kQApredix-zone-id: b8143253-2b36-4187-adac-e28dfecc5a3bContent-Type: application/json{ "start": "<开始时间>", "end": "<结束时间>", "tags": [ { "name": "<标签名>" } ]}
如果查询成功,请求将返回200
的状态码,表示查询成功,并且返回相应的数据点。注意,每个请求返回数据点的上限为500,000个。
例如下面这个查询例子,如果我们使用上一篇文章中的trident
工具完成了数据点的上传,下面的查询语句,查询过去三年中记录在标签Temp5217-3437
下的数据点。真实的结果应该大于50,000个数据点。
POST /v1/datapoints HTTP/1.1Host: time-series-store-predix.run.aws-jp01-pr.ice.predix.ioAuthorization: bearer eyJhbGciOiJSmtaysOrwuOm14HrFP6R0802kQApredix-zone-id: b8143253-2b36-4187-adac-e28dfecc5a3bContent-Type: application/json{ "start": "3y-ago", "tags": [ { "name": "Temp5217-3437" } ]}
小结
通过本节的介绍,我们了解到,
- 时序数据库有着丰富的查询语句,完全能满足开发人员日常对时序数据查询,分析的需要。
- 所有的数据查询都需要包含
start
字段定义查询的开始时间。 - 给定时间窗口查询是最常用的一种查询时序数据的方式。
当了解了上述信息,我们就能非常熟练的使用时序数据库查询语句,查询数据库中的数据,满足具体业务场景的需要。
作者:谢品,上海创新坊首席架构师,GE数字集团
专注于工业互联网,云计算,大数据,高性能分布式存储领域,对Cloud Foundry和传统应用向云端,特别是向Predix迁移有丰富的经验,曾供职于VMware,EMC,Autodesk等知名软件公司云计算部门。
- 查询时序数据库中的数据
- 查询数据库中的重复数据
- 查询数据库中的前几条数据
- JDBC查询数据库中的数据
- 时序数据库如何支持秒级上亿数据的查询分组和聚合运算
- PHPCMS查询数据库表中的数据
- 数据库左连接查询(查询多张表中的数据)
- 时序数据库
- 时序数据库
- 工业大数据漫谈12:实时数据库与时序数据库
- 8.查询数据库中的数据,并显示出来
- 如何随机查询数据库表中的任意一行数据
- MySQL数据库中的多表数据记录查询
- QT查询数据库中的数据在tableview显示
- 数据的随机查询在不同数据库中的不同语法
- QT查询数据库中的数据在tableview显示
- Aliware打造史上最强时序数据库_HiTSDB每秒写入时序数据达1000万!
- MongoDB数据建模小案例:物联网时序数据库建模
- 最长括号匹配——递推
- Section 2.1 sort3
- 如何将OpenGL渲染的图片保存到本地(正常渲染和离屏渲染)
- 安卓之ContentProvider内容提供者
- Java多线程系列-- 之 join()
- 查询时序数据库中的数据
- 阿里云ECS申请免费ssl证书,实现Tomcat访问域名,使用Https访问
- LeetCode#22* Generate Parentheses
- 用户输入月份 打印月份对应的季节
- 几个有用的STL函数和编程中的一些细节处理
- POJ
- 数据结构
- C语言的简单应用(五)上
- POJ 1741 树的点分治 解题报告