5分钟了解阿里时序时空数据库

简介

时序时空数据库(Time Series & Spatial Temporal Database,简称 TSDB)是一种高性能、低成本、稳定可靠的在线时序时空数据库服务,提供高效读写、高压缩比存储、时序数据插值及聚合计算等服务,广泛应用于物联网(IoT)设备监控系统、企业能源管理系统(EMS)、生产安全监控系统和电力检测系统等行业场景;除此以外,还提供时空场景的查询和分析的能力。

三个数据库

时序时空数据库文档最近经过几次大的变动,有点乱,看的时候注意一下。

时序数据库TSDB版

经过阿里集团大规模验证的时序数据库,支持分布式集群架构水平扩展,支持千万物联网设备接入,基于自研压缩算法,具备高效压缩比。

- 针对时序数据优化,包括存储模型,多值数据模型,时序数据压缩、聚合、采样,高效压缩算法,列存,边缘一体化;
- 具备高性能,内存优先数据处理,分布式MPP SQL并行计算,动态schema,实时流式数据计算引擎,海量时间线自适应索引;
- 高可扩展,数据动态分区,水平扩展,动态弹性扩容,动态升降配规格;高可靠性,自动集群控制,线程级读写分离,多层数据备份,分级存储;
- 瞄准的是大规模指标数据,事件数据场景

协议兼容OpenTSDB,但后面内核实现是阿里自研的。但还是完全可以把它当作OpenTSDB的阿里云版,参见 相比OpenTSDB优势

InfluxDB®

不仅仅是一个数据库,更是一个监控系统,围绕采集,可视化,分析服务,事件和指标存储和计算系统;走的是tick生态,瞄准指标,事件,trace,日志,实时分析场景。

InfluxDB®刚上线不久,现在还处在公测阶段。写入速度经测试,每次500条数据,每秒可以执行26次左右,平均速度达到1万/s,增加每次写入数据条数应该还能提高速度。另外,请求地址是外网,如果使用vpc网络速度应该还会加快不少。

注意:InfluxDB在阿里云上有时间线限制(数据库级别最高1万),时间线的定义参见后面简介。

时空数据库

时空数据库能够存储、管理包括时间序列以及空间地理位置相关的数据。时空数据是一种高维数据,具有时空数据模型、时空索引和时空算子,完全兼容SQL及SQL/MM标准,支持时空数据同业务数据一体化存储、无缝衔接,易于集成使用。

时空数据库主要是空间相关的场景,比如热力图,店铺选址等等。

时序数据库简介(主要是InfluxDB)

时序数据库英文全称为 Time Series Database,提供高效存取时序数据和统计分析功能的数据管理系统。主要的时序数据库包括OpenTSDB、Druid、InfluxDB以及Beringei这四个。本人主要了解一点OpenTSDB和InfluxDB,不过时序数据库有很多共性。

基本名词

measurement:

tag,field和time列的容器
对InfluxDB: measurement在概念上类似于传统DB的table(表格)从原理上讲更像SQL中表的概念,这和其他很多时序数据库有些不同
对其他时序DB: Measurement与Metric等同

field(数值列):

TSDB For InfluxDB®中不能没有field。
注意:field是没有索引的
在某种程度上,可以把field理解为k/v表的value

tag(维度列):

tag不是必须要有的字段
tag是被索引的,这意味着以tag作为过滤条件的查询会更快
在某种程度上,可以把field理解为k/v表的key

timestamp(时间戳):

默认使用服务器的本地时间戳
时间戳是UNIX时间戳,单位:纳秒
最小的有效时间戳是-9223372036854775806或1677-09-21T00:12:43.145224194Z
最大的有效时间戳是9223372036854775806或2262-04-11T23:47:16.854775806Z

point(数据点):

由时间线(series)中包含的field组成。每个数据点由它的时间线和时间戳(timestamp)唯一标识
您不能在同一时间线存储多个有相同时间戳的数据点

Series(时间线)

Series是InfluxDB中最重要的概念,时序数据的时间线就是:一个数据源采集的一个指标随着时间的流逝而源源不断地吐出数据这样形成的一条数据线称之为时间线。

下图中有两个数据源,每个数据源会采集两种指标:

Series由Measurement和Tags组合而成,
Tags组合用来唯一标识Measurement
就是说:
1. Measurement不同,就是不同的时间线
2. Measurement相同,Tags不同也是不同的时间线

retention policy(保留策略,简称RP)

一个保留策略描述了:

  1.InfluxDB保存数据的时间(DURATION)2.以及存储在集群中数据的副本数量(REPLICATION)3.指定ShardGroup Duration
注:复本系数(replication factors)不适用于单节点实例。
autogen:无限的存储时间并且复制系数设为1

RP创建语句如下:

CREATE RETENTION POLICY ON <retention_policy_name> ON <database_name>
DURATION <duration> REPLICATION <n> [SHARD DURATION <duration> ] [DEFAULT]
实例:
CREATE RETENTION POLICY "one_day_only" ON "water_database"
DURATION 1d REPLICATION 1 SHARD DURATION 1h DEFAULT

写入时指定rp进行写入:

% 如果没有指定任何RP,则使用默认的RP
curl -X POST 'http://localhost:8086/write?db=mydb&rp=six_month_rollup'--data-binary 'disk,host=server01 value=442221834240i 1435362189575692182'

Shard Group

Shard Group是InfluxDB中一个重要的逻辑概念:

Shard Group会包含多个Shard,每个Shard Group只存储指定时间段的数据
不同Shard Group对应的时间段不会重合

每个Shard Group对应多长时间是通过Retention Policy中字段”SHARD DURATION”指定的:

如果没有指定,也可以通过Retention Duration(数据过期时间)计算出来,两者的对应关系为:Retention Duration              SHARD DURATION
<2 days                             1h
>=2days and <=6month                1day
>6month                             7day

Shard:

类似于HBase中Region,Kudu中Tablet的概念
1. Shard是InfluxDB的存储引擎实现,具体称之为TSM(Time Sort Merge Tree) Engine负责数据的编码存储、读写服务等。
TSM类似于LSM,因此Shard和HBase Region一样包含Cache、WAL以及Data File等各个组件,也会有flush、compaction等这类数据操作
2. Shard Group对数据按时间进行了分区InfluxDB采用了Hash分区的方法将落到同一个Shard Group中的数据再次进行了一次分区InfluxDB是根据hash(Series)将数据映射到不同的Shard,而非根据Measurement进行hash映射

InfluxQL

行协议

格式:

<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]

以下是符合格式的数据写入TSDB For InfluxDB®的示例:

1. cpu,host=serverA,region=us_west value=0.64
2. payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230
3. stock,symbol=AAPL bid=127.46,ask=127.48
4. temperature,machine=unit42,type=assembly external=25,internal=37 1434067467000000000

登录

// 登录
$> influx -ssl -username <账号名称> -password <密码> -host <网络地址> -port 3242
// 创建用户
> create user gordon with password '1QAZ2wsx'
// 赋值权限
grant all privileges to gordon
// 创建数据库
create database testdb

基本QL

1. # 显示时间线
show series
2. # 显示度量
show measurements
3. # 显示Tag的Key
show tag keys
4. # 显示数据字段的Key
show field keys

查询:

1. select * from metrics
2. show tag keys from metrics
3. show field keys from metrics# 查看自定度量的数据, 里面的相关字段,官方建议使用“双引号”标注出来
select * from "CPU" order by time desc# 查看指定的Field和Tag
select "load1","role" from "CPU" order by time desc# 只查看Field
select *::field from "CPU"# 查询指定Tag的数据,注意,Where子句的字符串值要使用“单引号”,字符串值
# 如果没有使用引号或者使用了双引号,都不会有任何值的返回
select * from "CPU" where role = 'FrontServer'# 查询Field中,load1 > 20 的所有数据
select * from "CPU" where "load1" > 20

插入:

INSERT weather,location=us-midwest temperature=82 1465839830100400200

基本运算:

# 执行基本的运算
select ("load1" * 2) + 0.5 from "CPU"// SELECT语句支持使用基本的数学运算符,例如,+、-、/、*和()等等。
SELECT field_key1 + field_key2 AS "field_key_sum"FROM "measurement_name" WHERE time < now() - 15mSELECT (key1 + key2) - (key3 + key4) AS "some_calculation"FROM "measurement_name" WHERE time < now() - 15m// 使用聚合函数计算百分比:
SELECT (sum(field_key1) / sum(field_key2)) * 100 AS "calculated_percentage"FROM "measurement_name" WHERE time < now() - 15m GROUP BY time(1m)


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式6大核心专题_分布式ID

文章目录一、号段模式1. 拉取项目源码编译2. springboot集成Leaf3. 配置leaf.properties4. 创建数据库5. 初始化表结构和数据6. 测试案例7. 浏览器测试美团Leaf的号段模式和雪花算法模式生成分布式全局唯一id方式2种 一、号段模式 目前jar在maven仓库中没有上传 1. 拉取项目源…

现代编程语言大 PK,2020 年开发者关心的七大编程语言!

【CSDN 编者按】“如果我们把人类文明想象成汽车的话&#xff0c;那么软件开发行业就相当于汽车的引擎&#xff0c;编程语言就像引擎的燃料。”作为一名开发者&#xff0c;需跟随技术潮流的发展来学习新技术。2020年&#xff0c;你有计划新学一门编程语言吗&#xff1f;本文作者…

一文读懂深度学习:从神经元到BERT

阿里妹导读&#xff1a;自然语言处理领域的殿堂标志 BERT 并非横空出世&#xff0c;背后有它的发展原理。今天&#xff0c;蚂蚁金服财富对话算法团队整理对比了深度学习模型在自然语言处理领域的发展历程。从简易的神经元到当前最复杂的BERT模型&#xff0c;深入浅出地介绍了深…

启动redis闪退/失败

问题&#xff1a;正常启动redis-server.exe时&#xff0c;项目出现闪退情况 解决方式&#xff1a;按照下图完整流程输出即能正常启动

mysql 8使用美团的Leaf算法(segment)

文章目录1. leaf.properties2. 父工程中的poem文件中修改下连接的版本3. com.sankuai.inf.leaf.server.Constants 加一个字段4. com.sankuai.inf.leaf.server.service.SegmentService 读取该属性5. 重新编译打包1. leaf.properties 修改以下地方 记得加 SERVERTIMEZONE SELEC…

阿里开发者招聘节 | 2019阿里巴巴技术面试题分享:20位专家28道题

为帮助开发者们提升面试技能、有机会入职阿里&#xff0c;云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次将陆续放出&#xff08;面试题官方参考答案将在专辑结束后统一汇总分享&#xff0c;点此进入答题并围观他…

uniapp页面传参使用encodeURIComponent转义特殊符号

答主在uniapp页面跳转传imgUrl&#xff08;地址为&#xff1a;https://metting.oss-cn-beijing.aliyuncs.com/20210615153312771.9AT5NO.jpg?Expires4779415992&OSSAccessKeyIdLTAI4GKXzR3eLCustbbLYxFf&Signature***********&#xff09;时&#xff0c;图片无法正常显…

分布式系统:一致性协议

一致性模型本质上是进程与数据存储的约定&#xff0c;通过一致性模型我们可以理解和推理在分布式系统中数据复制需要考虑的问题和基本假设。那么&#xff0c;一致性模型的具体实现有一些呢&#xff1f;本文会介绍一致性协议实现的主要思想和方法。 什么是一致性协议 一致性协…

论程序员的自我修养——我在阿里干了十年开发

究竟是努力重要&#xff0c;还是选择重要&#xff1f;资深阿里技术人毕玄师兄有着自己的见解。 毕玄&#xff0c;阿里巴巴基础设施事业群负责人&#xff0c;资深技术专家。打造了阿里目前使用最为广泛的核心中间件之一的服务框架&#xff1b;设计并带领团队实现了阿里技术发展…

一文了解 Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控!...

作者 | Richard_Yi责编 | 徐威龙稿源 | 掘金封图| CSDN 下载于视觉中国本文为作者个人经验&#xff0c;供大家参考。去年我们项目做了微服务1.0的架构转型&#xff0c;但是服务监控这块却没有跟上。这不&#xff0c;最近我就被分配了要将我们核心的微服务应用全部监控起来的任务…

分布式6大核心专题_分布式Session

文章目录一、Session存在服务器上还是tomcat中&#xff1f;1. 创建springboot项目2. 启动项目3. 调用登录接口4. 调用获取用户信息接口5. 重启tomcat调用获取用户信息接口二、Session与Cookie的关系三、传统Session3.1. 启动项目3.2. 浏览器测试四、分布式Session解决方案4.1. …

Nacos: Namespace 和 Endpoint 在生产环境下的最佳实践

随着使用 Nacos 的企业越来越多&#xff0c;遇到的最频繁的两个问题就是&#xff1a;如何在我的生产环境正确的来使用 namespace 以及 endpoint。这篇文章主要就是针对这两个问题来聊聊使用 nacos 过程中关于这两个参数配置的最佳实践方式。 namespce 关于 namespace &#x…

java.lang.ArrayIndexOutOfBoundsException:数组下标越界越界

前台vue初始化 pinIds:[]&#xff0c;但是当pinIds前台查询条件传值为空时&#xff0c;pinIds[0]、pinIds[1]取不到值&#xff0c;就会报数组下标越界越界 改为 就可以了

如何实现“持续集成”?闲鱼把研发效率翻了个翻

阿里妹导读&#xff1a;业务的快速发展&#xff0c;需要我们更快速地响应&#xff0c;和更高质量产品的交付。如何从原来大(xiao)迭(pu)代(bu)的开发模式切换为精益开发模式&#xff1f;以 2-1-1&#xff08;2周需求交付周期&#xff0c;1周需求开发周期&#xff0c;1小时集成时…

分布式Session解决方案_Spring Session + Redis

接上一篇&#xff1a;分布式6大核心专题_分布式Session https://gblfy.blog.csdn.net/article/details/113802195 文章目录1. 安装redis服务并启动2. 引入Spring Session组件3. 分别启动8081端口和8082端口4. 调用8081登录接口5. 调用8081获取用户信息接口6. 调用8082获取用户信…

酸了!华为补贴湖北员工每天最高 2000 元

近日&#xff0c;华为员工发帖称&#xff0c;华为将给武汉研究所现场办公的人员&#xff0c;每人补助2000元&#xff08;从2020年1月23日开始算&#xff0c;以湖北发布疫情终止之日截止&#xff09;&#xff0c;湖北以外其他地区1000 元&#xff0c;海外每天150美金&#xff08…

java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String

数据库字段&#xff1a; 数据库中的时间字段handle_time是datatime 前端&#xff1a; xml文件&#xff1a; 运行结果&#xff1a; 原因 这是因为原因是mybatis 中对于时间参数进行比较时的一个bug. 如果拿传入的时间类型参数与空字符串进行对比判断则会引发异常. 所以在上面…

四年从P7到P9,这个阿里小二的秘诀是给自己挖坑

恶魔有一头精彩的头发。 “紫色、灰色、灰色、雾霾蓝色、黄色、蓝色、紫色、绿色、灰色、绿色。” 若有人问起她的染发史&#xff0c;她能准确地报出过去两年里的所有发色。干脆利落&#xff0c;没半个字多余。 恰如她在工作中给大多数人的印象&#xff1a;语速极快&#xf…

分布式Session解决方案_Token + Redis

接上一篇&#xff1a;分布式6大核心专题_分布式Session https://gblfy.blog.csdn.net/article/details/113802195 文章目录1. 安装redis服务并启动2. 依赖代码配置3. 分别启动8081端口和8082端口4. 调用8081登录接口5. 调用8081获取用户信息接口6. 调用8082获取用户信息接口实现…

达摩院首席数据库科学家李飞飞:云原生新战场,我们如何把握先机?

阿里妹导读&#xff1a;云计算大潮来袭&#xff0c;传统数据库市场正面临重新洗牌的情境&#xff0c;包括云数据库在内的一批新生力量崛起&#xff0c;动摇了传统数据库的垄断地位&#xff0c;而由云厂商主导的云原生数据库则将这种“改变”推向了高潮。 云时代的数据库将面临怎…