使用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)是现代信息技术的重要组成部分,通过将物理设备连接到互联网,实现设备之间的互联和数据交换。随着传感技术、通信技术和数据处理能力的不断提升,物联网在各个领域展现出巨大的潜力和应用前景。本文将介绍物联网的基本概念、架构、关键技术及其应用场景,并探讨其未来的发展趋势。
81 3
|
30天前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
45 1
|
1月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
101 9
Apache IoTDB进行IoT相关开发实践
|
29天前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。
59 0
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
|
2月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
183 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,
105 0
Apache IoTDB进行IoT相关开发实践
|
23天前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
8天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
18 3
|
12天前
|
监控 负载均衡 应用服务中间件
探索微服务架构下的API网关设计与实践
在数字化浪潮中,微服务架构以其灵活性和可扩展性成为企业IT架构的宠儿。本文将深入浅出地介绍微服务架构下API网关的关键作用,探讨其设计原则与实践要点,旨在帮助读者更好地理解和应用API网关,优化微服务间的通信效率和安全性,实现服务的高可用性和伸缩性。
31 3
|
16天前
|
存储 Java Maven
从零到微服务专家:用Micronaut框架轻松构建未来架构
【9月更文挑战第5天】在现代软件开发中,微服务架构因提升应用的可伸缩性和灵活性而广受欢迎。Micronaut 是一个轻量级的 Java 框架,适合构建微服务。本文介绍如何从零开始使用 Micronaut 搭建微服务架构,包括设置开发环境、创建 Maven 项目并添加 Micronaut 依赖,编写主类启动应用,以及添加控制器处理 HTTP 请求。通过示例代码展示如何实现简单的 “Hello, World!” 功能,并介绍如何通过添加更多依赖来扩展应用功能,如数据访问、验证和安全性等。Micronaut 的强大和灵活性使你能够快速构建复杂的微服务系统。
39 5

推荐镜像

更多