使用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条件中的属性必须是标记。

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

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

相关文章
|
14天前
|
消息中间件 Java 数据库
构建高效可靠的微服务架构:后端开发的终极指南
【5月更文挑战第30天】 随着现代软件开发的复杂性日益增加,微服务架构已成为组织解决庞大系统问题的有效手段。本文将深入探讨如何构建一个既高效又可靠的微服务系统,涉及关键组件的选择、网络通信的最佳实践以及保证系统稳定性的策略。通过一系列实际案例与性能分析,我们将揭示后端开发在设计微服务时必须考虑的核心要素,并提供一套综合性解决方案,以指导读者实现强大的后端架构。
|
13天前
|
API 开发者 微服务
探索后端开发中的微服务架构
【5月更文挑战第31天】在数字化浪潮中,微服务架构如星辰般熠熠生辉,为后端开发领域带来革命性的创新。本文将深入探讨微服务架构的精髓,从其定义、核心优势到实际应用,展现这一技术如何在复杂业务场景下提供灵活、高效的解决方案。我们将一同见证微服务如何助力企业快速响应市场变化,实现技术的可持续发展。
|
13天前
|
Cloud Native 数据库 开发者
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第31天】 在数字化转型的浪潮中,微服务架构已成为企业技术战略的核心组成部分。本文将深入探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术选型、以及实践中的挑战与解决方案。通过对微服务架构的细致剖析,我们将提供一套实用的指南,帮助后端开发者优化系统结构,提升服务的可靠性、伸缩性和敏捷性。
|
13天前
|
敏捷开发 API 开发者
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第31天】 在现代软件开发的浪潮中,微服务架构已经成为企业追求敏捷开发、持续交付和系统弹性的关键解决方案。本文将深入探讨微服务架构的概念、优势以及如何构建一个高效的微服务系统。通过实际案例分析,我们将展示如何利用容器化、服务网格、API网关等技术手段,实现服务的解耦、分布式管理和网络通信优化。
|
14天前
|
监控 数据管理 开发者
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第30天】 在当今软件开发领域,微服务架构已成为提高系统可维护性、扩展性和开发效率的关键方案。本文深入探讨了构建高效微服务架构的策略,包括服务划分原则、通信机制、数据管理以及持续集成与部署的最佳实践。通过分析具体案例和最新技术趋势,文章旨在为后端开发者提供一套全面的指导,帮助他们在不断变化的技术环境中保持竞争力。
|
23小时前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
物联网技术带来数据库管理挑战,特别是实时数据整合与安全性。IoTDB是一个专为时间序列数据设计的数据库,提供数据收集、存储和分析服务,适用于海量物联网数据。其架构包括数据文件、系统文件和预写日志文件的管理,并支持多目录存储策略。此外,IoTDB还开发了InfluxDB协议适配器,使得用户能无缝迁移原有InfluxDB业务。此适配器基于IoTDB的Java服务接口,转换InfluxDB的元数据格式,实现与IoTDB的数据交互。目前,适配器支持InfluxDB 1.x版本及部分查询语法。
17 5
|
3天前
|
消息中间件 存储 监控
通过将大型应用拆分成一系列小型、独立的服务,微服务架构为后端开发带来了更高的灵活性、可扩展性和可维护性
【6月更文挑战第10天】本文探讨了构建高效微服务架构的后端开发最佳实践。微服务的核心原则是服务独立、去中心化、自治和轻量级通信,优势在于可扩展性、独立性、技术灵活性和团队协作。实践中,应注意服务的拆分粒度,选择合适的通信协议(如RESTful、RPC、消息队列),处理数据一致性与分布式事务,实施服务治理和监控,以及确保安全性与权限控制。未来,微服务将结合服务网格、容器化和云原生技术,持续发展和优化。
9 0
|
13天前
|
存储 运维 5G
基于阿里云数据库 SelectDB 内核 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案
数据是 5G 全连接工厂的核心要素,为支持全方位的数据收集、存储、分析等工作的高效进行,联通 5G 全连接工厂从典型的 Lambda 架构演进为 All in [Apache Doris](https://c.d4t.cn/vwDf8R) 的实时/离线一体化架构,并凭借 Doris 联邦查询能力打造统一查询网关,数据处理及查询链路大幅简化,为联通 5G 全连接工厂带来数据时效性、查询响应、存储成本、开发效率全方位的提升。
基于阿里云数据库 SelectDB 内核 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案
|
13天前
|
消息中间件 运维 监控
构建高效微服务架构:后端开发的新范式
【5月更文挑战第31天】在现代软件开发中,随着业务需求的多样化和系统复杂性的增加,传统的单体应用架构逐渐显得笨重且难以适应快速变化。微服务架构作为一种新兴的后端开发模式,以其灵活性、可扩展性和独立部署的特点,成为解决这一问题的关键。本文将探讨微服务架构的核心概念、设计原则以及如何在实际项目中实现一个高效的微服务系统。
|
14天前
|
缓存 监控 开发者
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第30天】在软件开发的世界中,微服务架构已经成为一种流行且高效的设计模式,它通过将大型应用程序分解成一组小的、独立的服务来提高可伸缩性和灵活性。本文深入探讨了微服务的核心概念、优势以及如何在后端开发中实现一个健壮的微服务架构。我们将讨论关键的设计原则、技术选型和常见的挑战,并提供解决方案和最佳实践以指导开发者构建出能够适应快速变化需求的系统。

热门文章

最新文章

推荐镜像

更多