Apache IoTDB开发系统之Native API

举报
小云悠悠zZ 发表于 2023/09/09 23:19:20 2023/09/09
【摘要】 本机 API 提供了一个连接池(“会话池”),使用接口,您需要定义池大小。如果在 60 秒内无法获得会话连接,则会显示警告日志,但程序将挂起。如果会话已完成操作,它将自动放回池中。如果会话连接断开,将自动删除会话,池将尝试创建新会话并重做操作。

Dependencies

  • JDK >= 1.8
  • Maven >= 3.1

如何在本地 maven 存储库中安

在根目录中:

mvn 全新安装 -pl session -am -dskipTests

将 IoTDB Native API 与 Maven 配合使用

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.iotdb</groupId>
  4. <artifactId>iotdb-session</artifactId>
  5. <version>0.10.0</version>
  6. </dependency>
  7. </dependencies>

Native APIs

在这里,我向大家介绍Native APIs中常用的接口及其参数:

  • 初始化会话

    1. Session(String host, int port)
    2. Session(String host, String port, String username, String password)
    3. Session(String host, int port, String username, String password)
  • 打开会话

    1. Session.open()
  • 关闭会话

    1. Session.close()
  • 设置存储组

    1. void setStorageGroup(String storageGroupId)

  • 删除一个或多个存储组

    1. void deleteStorageGroup(String storageGroup)
    2. void deleteStorageGroups(List<String> storageGroups)
  • 创建一个或多个时间序列

    1. void createTimeseries(String path, TSDataType dataType,
    2. TSEncoding encoding, CompressionType compressor, Map<String, String> props,
    3. Map<String, String> tags, Map<String, String> attributes, String measurementAlias)
    4. void createMultiTimeseries(List<String> paths, List<TSDataType> dataTypes,
    5. List<TSEncoding> encodings, List<CompressionType> compressors,
    6. List<Map<String, String>> propsList, List<Map<String, String>> tagsList,
    7. List<Map<String, String>> attributesList, List<String> measurementAliasList)
  • 删除一个或多个时间序列

    1. void deleteTimeseries(String path)
    2. void deleteTimeseries(List<String> paths)
  • 删除一个或多个时间序列的时间戳之前或等于的数据

    1. void deleteData(String path, long time)
    2. void deleteData(List<String> paths, long time)
  • 插入一条记录,其中包含一个设备的多个测量值。如果没有类型信息,服务器必须进行类型推断,这可能会花费一些时间

    1. void insertRecord(String deviceId, long time, List<String> measurements, List<String> values)
  • 插入一个平板电脑,这是设备的多行,每行都有相同的测量值

    1. void insertTablet(Tablet tablet)
  • 插入多个平板电脑

    1. void insertTablets(Map<String, Tablet> tablet)
  • 插入多条记录。如果没有类型信息,服务器必须进行类型推断,这可能会花费一些时间

    1. void insertRecords(List<String> deviceIds, List<Long> times,
    2. List<List<String>> measurementsList, List<List<String>> valuesList)
  • 插入一条记录,其中包含一个设备的多个测量值。使用类型信息,服务器无需进行类型推断,从而提高性能

    1. void insertRecord(String deviceId, long time, List<String> measurements,
    2. List<TSDataType> types, List<Object> values)
  • 插入多条记录。使用类型信息,服务器无需进行类型推断,从而提高性能

    1. void insertRecords(List<String> deviceIds, List<Long> times,
    2. List<List<String>> measurementsList, List<List<TSDataType>> typesList,
    3. List<List<Object>> valuesList)

用于分析网络成本的本机 API

  • 测试插入记录的网络和客户端成本。此方法不会将数据插入数据库,服务器只是在接受请求后返回,此方法应用于测试客户端中的其他时间成本

    1. void testInsertRecords(List<String> deviceIds, List<Long> times,
    2. List<List<String>> measurementsList, List<List<String>> valuesList)

    1. void testInsertRecords(List<String> deviceIds, List<Long> times,
    2. List<List<String>> measurementsList, List<List<TSDataType>> typesList,
    3. List<List<Object>> valuesList)
  • 测试 insertRecord 的网络和客户端成本。此方法不会将数据插入数据库,服务器只是在接受请求后返回,此方法应用于测试客户端中的其他时间成本

    1. void testInsertRecord(String deviceId, long time, List<String> measurements, List<String> values)

    1. void testInsertRecord(String deviceId, long time, List<String> measurements,
    2. List<TSDataType> types, List<Object> values)
  • 测试插入平板电脑的网络和客户端成本。此方法不会将数据插入数据库,服务器只是在接受请求后返回,此方法应用于测试客户端中的其他时间成本

    1. void testInsertTablet(Tablet tablet)

示例代码

要获取以下接口的更多信息,请查看session/src/main/java/org/apache/iotdb/session/Session.java

使用这些接口的示例代码在example/session/src/main/java/org/apache/iotdb/SessionExample.java中,它提供了如何打开IoTDB会话,执行批量插入的示例。

本机 API 的会话池

本机 API 提供了一个连接池(“会话池”),使用接口,您需要定义池大小。

如果在 60 秒内无法获得会话连接,则会显示警告日志,但程序将挂起。

如果会话已完成操作,它将自动放回池中。如果会话连接断开,将自动删除会话,池将尝试创建新会话并重做操作。

对于查询操作:

  1. 使用会话池查询数据时,结果集为SessionDataSetWrapper;
  2. 给定一个,如果您尚未扫描其中的所有数据并停止使用它,则必须手动调用;SessionDataSetWrapperSessionPool.closeResultSet(wrapper)
  3. 当您调用 和 a 并且出现异常时,您必须手动调用;hasNext()next()SessionDataSetWrapperSessionPool.closeResultSet(wrapper)
  4. 可以调用 of 获取查询结果的列名;getColumnNames()SessionDataSetWrapper

例如:session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java

example/session/src/main/java/org/apache/iotdb/SessionPoolExample.java

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。