使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(6)

简介: 接下来我们讨论一下关于创建存储组的相关方面,在这里值得注意的是,当路径本身或路径的父/子层已经被设置为存储组时,则不允许将路径设置为存储组。例如,设置是不可行的​​root.ln.wf01​​存在两个存储组时,作为一个存储组​​root.ln​​和​​root.sgcc​​。系统会给出相应的错误提示。

创建存储组

根据存储模型,我们可以设置相应的存储组。用于创建存储组的SQL语句如下:

  1. IoTDB > set storage group to root.ln
  2. IoTDB > set storage group to root.sgcc

因此,我们可以使用上述两条SQL语句创建两个存储组。

值得注意的是,当路径本身或路径的父/子层已经被设置为存储组时,则不允许将路径设置为存储组。例如,设置是不可行的root.ln.wf01存在两个存储组时,作为一个存储组root.lnroot.sgcc。系统会给出相应的错误提示,如下所示:

  1. IoTDB> set storage group to root.ln.wf01
  2. Msg: org.apache.iotdb.exception.MetadataErrorException: org.apache.iotdb.exception.PathErrorException: The prefix of root.ln.wf01 has been set to the storage group.

显示存储组

创建存储组后,我们可以使用显示存储组语句来查看所有存储组。SQL语句如下所示:

  1. IoTDB> show storage group

结果如下:

创建时间序列

根据前面选择的存储模型,我们可以在两个存储组中分别创建相应的时间序列。用于创建时间序列的SQL语句如下:

  1. IoTDB > create timeseries root.ln.wf01.wt01.status with datatype=BOOLEAN,encoding=PLAIN
  2. IoTDB > create timeseries root.ln.wf01.wt01.temperature with datatype=FLOAT,encoding=RLE
  3. IoTDB > create timeseries root.ln.wf02.wt02.hardware with datatype=TEXT,encoding=PLAIN
  4. IoTDB > create timeseries root.ln.wf02.wt02.status with datatype=BOOLEAN,encoding=PLAIN
  5. IoTDB > create timeseries root.sgcc.wf03.wt01.status with datatype=BOOLEAN,encoding=PLAIN
  6. IoTDB > create timeseries root.sgcc.wf03.wt01.temperature with datatype=FLOAT,encoding=RLE

值得注意的是,当CRATE TIMESERIES语句中的编码方式与数据类型冲突时,系统会给出相应的错误提示,如下所示:

  1. IoTDB> create timeseries root.ln.wf02.wt02.status WITH DATATYPE=BOOLEAN, ENCODING=TS_2DIFF
  2. error: encoding TS_2DIFF does not support BOOLEAN

请参考编码用于数据类型和编码之间的对应。

标签和属性管理

我们还可以在创建一个时间序列时添加别名、额外的标记和属性信息。用于创建带有额外标记和属性信息的时间序列的SQL语句扩展如下:

  1. create timeseries root.turbine.d1.s1(temprature) with datatype=FLOAT, encoding=RLE, compression=SNAPPY tags(tag1=v1, tag2=v2) attributes(attr1=v1, attr2=v2)

temprature括号中是传感器的别名s1。所以我们可以用temprature替换s1任何地方。

注意,额外的标记和属性信息的大小不应该超过tag_attribute_total_size.

tag和attribute之间的唯一区别是我们将在tag上维护一个倒排索引,所以我们可以在show timeseries where子句中使用tag property,如下所示Show Timeseries部分。

更新标签操作

我们可以在创建标签信息后更新它,如下所示:

  • 重命名标签/属性键
  1. ALTER timeseries root.turbine.d1.s1 RENAME tag1 TO newTag1
  • 重置标签/属性值
  1. ALTER timeseries root.turbine.d1.s1 SET tag1=newV1, attr1=newV1
  • 删除现有标签/属性
  1. ALTER timeseries root.turbine.d1.s1 DROP tag1, tag2
  • 添加新标签
  1. ALTER timeseries root.turbine.d1.s1 ADD TAGS tag3=v3, tag4=v4
  • 添加新属性
  1. ALTER timeseries root.turbine.d1.s1 ADD ATTRIBUTES attr3=v3, attr4=v4
  • 向上插入别名、标签和属性

如果别名或键值不存在,请添加别名或新的键值,否则,用新值更新旧值。

  1. ALTER timeseries root.turbine.d1.s1 UPSERT ALIAS=newAlias TAGS(tag3=v3, tag4=v4) ATTRIBUTES(attr3=v3, attr4=v4)

显示时间序列

  • 显示时间序列前缀路径?showWhereClause?limitClause?
    在显示时间序列、返回时间序列信息后面可以添加三个可选子句

时间序列信息包括:时间序列路径、测量别名、所属存储组、数据类型、编码类型、压缩类型、标签和属性。

示例:

  • 显示时间序列
    以JSON形式显示所有时间序列信息
  • 显示时间序列<Path>
    返回给定<Path>. <Path>必须是前缀路径或带星号的路径或时间序列路径。SQL语句如下:
  1. IoTDB> show timeseries root
  2. IoTDB> show timeseries root.ln

结果分别如下所示:

  • 显示时间序列(<PrefixPath>)?where子句
    返回满足where条件并以前缀路径SQL语句开头的所有timeseries信息,如下所示:
  1. show timeseries root.ln where unit=c
  2. show timeseries root.ln where description contains 'test1'

结果分别如下所示:

注意,我们只支持where子句中的一个条件。它要么是一个相等的过滤器,要么是一个contains过滤器。在这两种情况下,where条件中的属性必须是标记。

  • 显示时间序列限制整数偏移量整数
    返回从偏移量开始的所有时间序列信息,并限制返回的序列数

值得注意的是,当查询的路径不存在时,系统不会返回任何时间序列。

相关文章
|
2月前
|
传感器 物联网 数据处理
认识IoT的基本概念和架构
物联网(Internet of Things, IoT)是现代信息技术的重要组成部分,通过将物理设备连接到互联网,实现设备之间的互联和数据交换。随着传感技术、通信技术和数据处理能力的不断提升,物联网在各个领域展现出巨大的潜力和应用前景。本文将介绍物联网的基本概念、架构、关键技术及其应用场景,并探讨其未来的发展趋势。
54 3
|
9天前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
25 1
|
11天前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
58 9
Apache IoTDB进行IoT相关开发实践
|
8天前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。
30 0
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
|
7天前
|
Cloud Native
核心系统转型问题之平衡核心架构中的功能性与非功能性需求如何解决
核心系统转型问题之平衡核心架构中的功能性与非功能性需求如何解决
|
2月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
120 12
|
2月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
The article introduces IoTDB, an open-source time-series database designed for efficient management of IoT-generated data. It addresses challenges like real-time integration of massive datasets and security. IoTDB supports high-performance storage,
86 0
Apache IoTDB进行IoT相关开发实践
|
3月前
|
前端开发 Java 开发工具
Java医院绩效考核系统源码:关于医院绩效考核系统的技术架构、系统功能、如何选择医院绩效考核管理系统
系统开发环境 开发语言:java 技术架构:B/S架构 开发工具:maven、Visual Studio Code 前端框架:avue 后端框架:springboot、mybaits 数 据 库:MySQL
41 4
Java医院绩效考核系统源码:关于医院绩效考核系统的技术架构、系统功能、如何选择医院绩效考核管理系统
|
2月前
|
负载均衡 监控 Kubernetes
Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。
Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。
|
3月前
|
SQL 存储 运维
网易游戏如何基于阿里云瑶池数据库 SelectDB 内核 Apache Doris 构建全新湖仓一体架构
随着网易游戏品类及产品的快速发展,游戏数据分析场景面临着越来越多的挑战,为了保证系统性能和 SLA,要求引入新的组件来解决特定业务场景问题。为此,网易游戏引入 Apache Doris 构建了全新的湖仓一体架构。经过不断地扩张,目前已发展至十余集群、为内部上百个项目提供了稳定可靠的数据服务、日均查询量数百万次,整体查询性能得到 10-20 倍提升。
网易游戏如何基于阿里云瑶池数据库 SelectDB 内核 Apache Doris 构建全新湖仓一体架构

推荐镜像

更多
下一篇
云函数