Dependencies

  • JDK >= 1.8
  • Maven >= 3.1

如何在本地 maven 存储库中安装

在根目录中:

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

将 IoTDB Native API 与 Maven 配合使用

<dependencies>
    <dependency>
      <groupId>org.apache.iotdb</groupId>
      <artifactId>iotdb-session</artifactId>
      <version>0.10.0</version>
    </dependency>
</dependencies>

Native APIs

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

  • 初始化会话
Session(String host, int port)

Session(String host, String port, String username, String password)

Session(String host, int port, String username, String password)
  • 打开会话
Session.open()
  • 关闭会话
Session.close()
  • 设置存储组
void setStorageGroup(String storageGroupId)
  • 删除一个或多个存储组
void deleteStorageGroup(String storageGroup)
void deleteStorageGroups(List<String> storageGroups)
  • 创建一个或多个时间序列
void createTimeseries(String path, TSDataType dataType,
        TSEncoding encoding, CompressionType compressor, Map<String, String> props,
        Map<String, String> tags, Map<String, String> attributes, String measurementAlias)

void createMultiTimeseries(List<String> paths, List<TSDataType> dataTypes,
        List<TSEncoding> encodings, List<CompressionType> compressors,
        List<Map<String, String>> propsList, List<Map<String, String>> tagsList,
        List<Map<String, String>> attributesList, List<String> measurementAliasList)
  • 删除一个或多个时间序列
void deleteTimeseries(String path)
void deleteTimeseries(List<String> paths)
  • 删除一个或多个时间序列的时间戳之前或等于的数据
void deleteData(String path, long time)
void deleteData(List<String> paths, long time)
  • 插入一条记录,其中包含一个设备的多个测量值。如果没有类型信息,服务器必须进行类型推断,这可能会花费一些时间
void insertRecord(String deviceId, long time, List<String> measurements, List<String> values)
  • 插入一个平板电脑,这是设备的多行,每行都有相同的测量值
void insertTablet(Tablet tablet)
  • 插入多个平板电脑
void insertTablets(Map<String, Tablet> tablet)
  • 插入多条记录。如果没有类型信息,服务器必须进行类型推断,这可能会花费一些时间
void insertRecords(List<String> deviceIds, List<Long> times, 
                     List<List<String>> measurementsList, List<List<String>> valuesList)
  • 插入一条记录,其中包含一个设备的多个测量值。使用类型信息,服务器无需进行类型推断,从而提高性能
void insertRecord(String deviceId, long time, List<String> measurements,
     List<TSDataType> types, List<Object> values)
  • 插入多条记录。使用类型信息,服务器无需进行类型推断,从而提高性能
void insertRecords(List<String> deviceIds, List<Long> times,
      List<List<String>> measurementsList, List<List<TSDataType>> typesList,
      List<List<Object>> valuesList)

Native APIs for profiling network cost

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

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

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

Session Pool for Native 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