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即返回。  |