Apache IoTDB开发系统之Native API
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)
用于分析网络成本的本机 API
测试插入记录的网络和客户端成本。此方法不会将数据插入数据库,服务器只是在接受请求后返回,此方法应用于测试客户端中的其他时间成本
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会话,执行批量插入的示例。
本机 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
- 点赞
- 收藏
- 关注作者
评论(0)