用于将数据写入 TsFile
interface ITsFileWriter extends AutoCloseable { // 写入数据 void write(Tablet tablet); // 关闭写入器 void close(); }
用于构建 ITsFileWriter
class TsFileWriterBuilder { // 构建 ITsFileWriter 对象 public ITsFileWriter build(); // 目标文件 public TsFileWriterBuilder file(File file); // 用于构建表结构 public TsFileWriterBuilder tableSchema(TableSchema schema); // 用于限制写入时的内存使用大小 public TsFileWriterBuilder memoryThreshold(long memoryThreshold); }
描述表结构的数据组织方式
class TableSchema { // 构造函数 public TableSchema(String tableName, List<ColumnSchema> columnSchemaList); } class ColumnSchema { // 构造函数 public ColumnSchema(String columnName, TSDataType dataType, ColumnCategory columnCategory); // 获取列名 public String getColumnName(); // 获取列的数据类型 public TSDataType getDataType(); // 获取列的类别 public Tablet.ColumnCategory getColumnCategory(); } class ColumnSchemaBuilder { // 构建 ColumnSchema 对象 public ColumnSchema build(); // 设置列名 public ColumnSchemaBuilder name(String columnName); // 设置列的数据类型 public ColumnSchemaBuilder dataType(TSDataType columnType); // 设置列的类别 public ColumnSchemaBuilder category(ColumnCategory columnCategory); // 支持的数据类型 enum TSDataType { BOOLEAN, // 布尔型 INT32, // 32位整数 INT64, // 64位整数 FLOAT, // 单精度浮点数 DOUBLE, // 双精度浮点数 TIMESTAMP, // 时间戳 TEXT, // 文本 DATE, // 日期 BLOB, // 二进制大对象 STRING; // 字符串 } // 支持的列类别 enum ColumnCategory { TAG, // 标签列 FIELD // 测点列 } }
class Tablet { // 构造函数 public Tablet(List<String> columnNameList, List<TSDataType> dataTypeList); public Tablet(List<String> columnNameList, List<TSDataType> dataTypeList, int maxRowNum); // 添加时间戳 void addTimestamp(int rowIndex, long timestamp); // 添加值 // 基于列名添加值 void addValue(int rowIndex, String columnName, int val); void addValue(int rowIndex, String columnName, long val); void addValue(int rowIndex, String columnName, float val); void addValue(int rowIndex, String columnName, double val); void addValue(int rowIndex, String columnName, boolean val); void addValue(int rowIndex, String columnName, String val); void addValue(int rowIndex, String columnName, byte[] val); void addValue(int rowIndex, String columnName, LocalDate val); // 基于索引添加值 void addValue(int rowIndex, int columnIndex, int val); void addValue(int rowIndex, int columnIndex, long val); void addValue(int rowIndex, int columnIndex, float val); void addValue(int rowIndex, int columnIndex, double val); void addValue(int rowIndex, int columnIndex, boolean val); void addValue(int rowIndex, int columnIndex, String val); void addValue(int rowIndex, int columnIndex, byte[] val); void addValue(int rowIndex, int columnIndex, LocalDate val); }
用于在 TsFile 中查询数据。
interface ITsFileReader extends AutoCloseable { // 用于执行查询并返回结果 ResultSet query(String tableName, List<String> columnNames, long startTime, long endTime); // 返回 tsfile 中指定表名(tableName)的表结构信息 Optional<TableSchema> getTableSchemas(String tableName); // 获取 tsfile 中所有表的结构信息 List<TableSchema> getAllTableSchema(); // 关闭查询 void close(); }
用于构建 ITsFileReader
class TsFileReaderBuilder { // 构建 ITsFileReader 对象 public ITsFileReader build(); // 目标文件 public TsFileReaderBuilder file(File file); }
查询的结果集
interface ResultSet extends AutoCloseable { // 将游标移动到下一行,并返回是否还有数据 boolean next(); // 获取当前行某一列的值 int getInt(String columnName); int getInt(int columnIndex); long getLong(String columnName); long getLong(int columnIndex); float getFloat(String columnName); float getFloat(int columnIndex); double getDouble(String columnName); double getDouble(int columnIndex); boolean getBoolean(String columnName); boolean getBoolean(int columnIndex); String getString(String columnName); String getString(int columnIndex); LocalDate getDate(String columnName); LocalDate getDate(int columnIndex); byte[] getBinary(String columnName); byte[] getBinary(int columnIndex); // 判断当前行某一列是否为 NULL boolean isNull(String columnName); boolean isNull(int columnIndex); // 关闭当前结果集 void close(); // 获取结果集的元数据信息 ResultSetMetadata getMetadata(); }
用于获取结果集的元数据信息
interface ResultSetMetadata { // 获取结果集中第 N 列的列名 String getColumnName(int columnIndex); // 获取结果集中第 N 列的数据类型 TSDataType getColumnType(int columnIndex); }