Thrift rpc interface

Thrift简介

Thrift是一个远程过程调用软件框架,用于开发可扩展和跨语言服务。它结合了强大的软件堆栈和代码生成引擎,以便在编程语言(如C++,Java,Go,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk和OCaml)之间构建无缝集成和高效的服务。

IoTDB服务器和客户端使用节俭进行通信。在实际使用中,建议使用IoTDB提供的原生客户端包:会话或会话池。如果您有特殊需求,也可以直接针对 RPC 接口进行编程

默认 IoTDB 服务器使用端口 6667 作为 RPC 通信端口,可以修改配置项

rpc_port=6667

更改默认节俭端口

RPC 接口

默认 IoTDB 服务器使用端口 6667 作为 RPC 通信端口,可以修改配置项

// open a session
TSOpenSessionResp openSession(1:TSOpenSessionReq req);
// close a session
TSStatus closeSession(1:TSCloseSessionReq req);
// run an SQL statement in batch
TSExecuteStatementResp executeStatement(1:TSExecuteStatementReq req);
// execute SQL statement in batch
TSStatus executeBatchStatement(1:TSExecuteBatchStatementReq req);
// execute query SQL statement
TSExecuteStatementResp executeQueryStatement(1:TSExecuteStatementReq req);
// execute insert, delete and update SQL statement 
TSExecuteStatementResp executeUpdateStatement(1:TSExecuteStatementReq req);
// fetch next query result
TSFetchResultsResp fetchResults(1:TSFetchResultsReq req)
// fetch meta data
TSFetchMetadataResp fetchMetadata(1:TSFetchMetadataReq req)
// cancel a query 
TSStatus cancelOperation(1:TSCancelOperationReq req);
// close a query dataset
TSStatus closeOperation(1:TSCloseOperationReq req);
// get time zone
TSGetTimeZoneResp getTimeZone(1:i64 sessionId);
// set time zone
TSStatus setTimeZone(1:TSSetTimeZoneReq req);
// get server's properties
ServerProperties getProperties();
// set storage group
TSStatus setStorageGroup(1:i64 sessionId, 2:string storageGroup);
// create timeseries
TSStatus createTimeseries(1:TSCreateTimeseriesReq req);
// create multi timeseries
TSStatus createMultiTimeseries(1:TSCreateMultiTimeseriesReq req);
// delete timeseries
TSStatus deleteTimeseries(1:i64 sessionId, 2:list<string> path)
// delete sttorage groups
TSStatus deleteStorageGroups(1:i64 sessionId, 2:list<string> storageGroup);
// insert record
TSStatus insertRecord(1:TSInsertRecordReq req);
// insert record in string format
TSStatus insertStringRecord(1:TSInsertStringRecordReq req);
// insert tablet
TSStatus insertTablet(1:TSInsertTabletReq req);
// insert tablets in batch
TSStatus insertTablets(1:TSInsertTabletsReq req);
// insert records in batch
TSStatus insertRecords(1:TSInsertRecordsReq req);
// insert records of one device
TSStatus insertRecordsOfOneDevice(1:TSInsertRecordsOfOneDeviceReq req);
// insert records in batch as string format
TSStatus insertStringRecords(1:TSInsertStringRecordsReq req);
// test the latency of innsert tablet,caution:no data will be inserted, only for test latency
TSStatus testInsertTablet(1:TSInsertTabletReq req);
// test the latency of innsert tablets,caution:no data will be inserted, only for test latency
TSStatus testInsertTablets(1:TSInsertTabletsReq req);
// test the latency of innsert record,caution:no data will be inserted, only for test latency
TSStatus testInsertRecord(1:TSInsertRecordReq req);
// test the latency of innsert record in string format,caution:no data will be inserted, only for test latency
TSStatus testInsertStringRecord(1:TSInsertStringRecordReq req);
// test the latency of innsert records,caution:no data will be inserted, only for test latency
TSStatus testInsertRecords(1:TSInsertRecordsReq req);
// test the latency of innsert records of one device,caution:no data will be inserted, only for test latency
TSStatus testInsertRecordsOfOneDevice(1:TSInsertRecordsOfOneDeviceReq req);
// test the latency of innsert records in string formate,caution:no data will be inserted, only for test latency
TSStatus testInsertStringRecords(1:TSInsertStringRecordsReq req);
// delete data
TSStatus deleteData(1:TSDeleteDataReq req);
// execute raw data query
TSExecuteStatementResp executeRawDataQuery(1:TSRawDataQueryReq req);
// request a statement id from server
i64 requestStatementId(1:i64 sessionId);

IDL 文件路径

IDL文件路径是“thrift/src/main/thrift/rpc.thrift”,其中包括接口和结构。

目标文件路径

我们将在 mvn 编译中使用 thrift 编译 IDL 文件,其中生成目标文件.class文件目标文件路径为 “thrift/target/classes/org/apache/iotdb/service/rpc/thrift”。