IoTDB Java API接口介绍
IoTDB提供了一个针对原生接口的连接池(SessionPool),使用该接口时,您只需要指定连接池的大小,就可以在使用时从池中获取连接。如果超过60s没有得到一个连接,就会打印一条警告日志,但是程序仍将继续等待。
当一个连接被用完后,该连接会自动返回池中等待下次被使用;当一个连接损坏后,该连接会从池中被删除,并重建一个连接重新执行用户的操作。
对于查询操作:
- 使用SessionPool进行查询时,得到的结果集是SessionDataSet的封装类SessionDataSetWrapper。
- 若对于一个查询的结果集,用户并没有遍历完且不再想继续遍历时,需要手动调用释放连接的操作closeResultSet。
- 若对一个查询的结果集遍历时出现异常,也需要手动调用释放连接的操作closeResultSet。
- 可以调用SessionDataSetWrapper的getColumnNames()方法得到结果集列名。
| 方法 | 说明 |
|---|---|
| 初始化Session。 |
| Session.open() | 开启Session。 |
| Session.close() | 关闭Session。 |
| void setStorageGroup(String storageGroupId) | 设置存储组。 |
| 删除单个或多个存储组。 |
| 创建单个或多个时间序列。 |
| 删除一个或多个时间序列。 |
| 删除一个或多个时间序列在某个时间点前或这个时间点的数据。 |
| void insertRecord(String deviceId, long time, List<String> measurements, List<String> values) | 插入一个Record,一个Record是一个设备一个时间戳下多个测点的数据。服务器需要做类型推断,可能会有额外耗时。 |
| void insertTablet(Tablet tablet) | 插入一个Tablet,Tablet是一个设备若干行非空数据块,每一行的列都相同。 |
| void insertTablets(Map<String, Tablet> tablet) | 插入多个Tablet。 |
| void insertRecords(List<String> deviceIds, List<Long> times, List<List<String>> measurementsList, List<List<String>> valuesList) | 插入多个Record。服务器需要做类型推断,可能会有额外耗时。 |
| void insertRecord(String deviceId, long time, List<String> measurements, List<TSDataType> types, List<Object> values) | 插入一个Record,一个Record是一个设备一个时间戳下多个测点的数据。提供数据类型后,服务器不需要做类型推断,可以提高性能。 |
| void insertRecords(List<String> deviceIds, List<Long> times, List<List<String>> measurementsList, List<List<TSDataType>> typesList, List<List<Object>> valuesList) | 插入多个Record。提供数据类型后,服务器不需要做类型推断,可以提高性能。 |
| submitApplication(SubmitApplicationRequest request) | Client通过此接口提交一个新的应用到RM。 |
| void insertRecordsOfOneDevice(String deviceId, List<Long> times, List<List<String>> measurementsList, List<List<TSDataType>> typesList, List<List<Object>> valuesList) | 插入属于同一个device的多个Record。 |
| SessionDataSet executeRawDataQuery(List<String> paths, long startTime, long endTime) | 原始数据查询。时间间隔包含开始时间,不包含结束时间。 |
| SessionDataSet executeQueryStatement(String sql) | 执行查询语句。 |
| void executeNonQueryStatement(String sql) | 执行非查询语句。 |
| 方法 | 说明 |
|---|---|
| 测试testInsertRecords,不实际写入数据,只将数据传输到server即返回。 |
| 测试insertRecord,不实际写入数据,只将数据传输到server即返回。 |
| void testInsertTablet(Tablet tablet) | 测试insertTablet,不实际写入数据,只将数据传输到server即返回。 |