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 秒内无法获得会话连接,则会显示警告日志,但程序将挂起。
如果会话已完成操作,它将自动放回池中。如果会话连接断开,将自动删除会话,池将尝试创建新会话并重做操作。
对于查询操作:
- 使用会话池查询数据时,结果集为
SessionDataSetWrapper
; - 给定一个,如果您尚未扫描其中的所有数据并停止使用它,则必须手动调用;
SessionDataSetWrapper
SessionPool.closeResultSet(wrapper)
- 当您调用 和 a 并且出现异常时,您必须手动调用;
hasNext()
next()
SessionDataSetWrapper
SessionPool.closeResultSet(wrapper)
- 可以调用 of 获取查询结果的列名;
getColumnNames()
SessionDataSetWrapper
例如:session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java
或example/session/src/main/java/org/apache/iotdb/SessionPoolExample.java