blob: 0a09cc074c7886050df9d22a2d6a50249e7b021d [file] [view]
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# Interface Definitions - Java
## Write Interface
### ITsFileWriter
Used to write data to tsfile
```Java
interface ITsFileWriter extends AutoCloseable {
/**
* Write one tablet into TsFile.
*
* @param tablet input tablet.
*/
void write(Tablet tablet);
/**
* Close writer and flush buffered data.
*/
void close();
}
```
### TsFileWriterBuilder
Used to construct ITsFileWriter
```Java
class TsFileWriterBuilder {
/**
* Build writer instance from configured options.
*
* @return ITsFileWriter instance.
*/
public ITsFileWriter build();
/**
* Set target file.
*
* @param file target file.
* @return builder itself.
*/
public TsFileWriterBuilder file(File file);
/**
* Set table schema.
*
* @param schema table schema.
* @return builder itself.
*/
public TsFileWriterBuilder tableSchema(TableSchema schema);
/**
* Set memory threshold for internal buffering.
*
* @param memoryThreshold threshold in bytes.
* @return builder itself.
*/
public TsFileWriterBuilder memoryThreshold(long memoryThreshold);
}
```
### TableSchema
Describe the data structure of the table schema
```Java
class TableSchema {
/**
* Construct table schema.
*
* @param tableName table name.
* @param columnSchemaList column schema list.
*/
public TableSchema(String tableName, List<ColumnSchema> columnSchemaList);
}
class ColumnSchema {
/**
* Construct one column schema.
*
* @param columnName column name.
* @param dataType column data type.
* @param columnCategory column category.
*/
public ColumnSchema(String columnName, TSDataType dataType, ColumnCategory columnCategory);
/**
* Get column name.
*
* @return column name.
*/
public String getColumnName();
/**
* Get column data type.
*
* @return TSDataType.
*/
public TSDataType getDataType();
/**
* Get column category.
*
* @return column category.
*/
public Tablet.ColumnCategory getColumnCategory();
}
class ColumnSchemaBuilder {
/**
* Build ColumnSchema object.
*
* @return ColumnSchema instance.
*/
public ColumnSchema build();
/**
* Set column name.
*
* @param columnName column name.
* @return builder itself.
*/
public ColumnSchemaBuilder name(String columnName);
/**
* Set column data type.
*
* @param columnType data type.
* @return builder itself.
*/
public ColumnSchemaBuilder dataType(TSDataType columnType);
/**
* Set column category.
*
* @param columnCategory column category.
* @return builder itself.
*/
public ColumnSchemaBuilder category(ColumnCategory columnCategory);
// Supported types
enum TSDataType {
BOOLEAN,
INT32,
INT64,
FLOAT,
DOUBLE,
TIMESTAMP,
TEXT,
DATE,
BLOB,
STRING;
}
// Supported column categories
enum ColumnCategory {
TAG,
FIELD
}
}
```
### Tablet
Write column memory structure
```Java
class Tablet {
/**
* Construct tablet with default row capacity.
*
* @param columnNameList column names.
* @param dataTypeList column data types.
*/
public Tablet(List<String> columnNameList, List<TSDataType> dataTypeList);
/**
* Construct tablet with explicit row capacity.
*
* @param columnNameList column names.
* @param dataTypeList column data types.
* @param maxRowNum max row count.
*/
public Tablet(List<String> columnNameList, List<TSDataType> dataTypeList, int maxRowNum);
/**
* Set timestamp for one row.
*
* @param rowIndex target row index.
* @param timestamp timestamp value.
*/
void addTimestamp(int rowIndex, long timestamp);
// Interface for adding values
// Add values based on column names
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);
// Add values based on index position
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);
}
```
## Read Interface
### ITsFileReader
Used to query data in tsfile
```Java
interface ITsFileReader extends AutoCloseable {
/**
* Query table data in time range.
*
* @param tableName table name.
* @param columnNames selected columns.
* @param startTime start timestamp.
* @param endTime end timestamp.
* @return query result set.
*/
ResultSet query(String tableName, List<String> columnNames, long startTime, long endTime);
/**
* Query table data in time range with tag filter.
*
* @param tableName table name.
* @param columnNames selected columns.
* @param startTime start timestamp.
* @param endTime end timestamp.
* @param tagFilter tag filter.
* @return query result set.
*/
ResultSet query(String tableName, List<String> columnNames, long startTime, long endTime, Filter tagFilter);
/**
* Get schema of one table.
*
* @param tableName table name.
* @return optional table schema.
*/
Optional<TableSchema> getTableSchemas(String tableName);
/**
* Get schemas of all tables.
*
* @return list of table schemas.
*/
List<TableSchema> getAllTableSchema();
/**
* Close reader.
*/
void close();
}
```
### TsFileReaderBuilder
Used to construct ITsFileReader
```Java
class TsFileReaderBuilder {
/**
* Build reader instance.
*
* @return ITsFileReader instance.
*/
public ITsFileReader build();
/**
* Set target file.
*
* @param file target tsfile.
* @return builder itself.
*/
public TsFileReaderBuilder file(File file);
}
```
### ResultSet
The result set of the query
```Java
interface ResultSet extends AutoCloseable {
/**
* Move to next row.
*
* @return true if next row exists.
*/
boolean next();
// Get the value of the current row and a certain column
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);
/**
* Check if current-row column is NULL.
*
* @param columnName column name.
* @return true if null.
*/
boolean isNull(String columnName);
/**
* Check if current-row column is NULL.
*
* @param columnIndex 1-based column index.
* @return true if null.
*/
boolean isNull(int columnIndex);
/**
* Close result set.
*/
void close();
/**
* Get result-set metadata.
*
* @return ResultSetMetadata.
*/
ResultSetMetadata getMetadata();
}
```
### ResultSetMetadata
Used to obtain metadata for the result set
```Java
interface ResultSetMetadata {
/**
* Get column name by index.
*
* @param columnIndex 1-based column index.
* @return column name.
*/
String getColumnName(int columnIndex);
/**
* Get column type by index.
*
* @param columnIndex 1-based column index.
* @return TSDataType.
*/
TSDataType getColumnType(int columnIndex);
}
```
### Filter
#### TagFilterBuilder
Used to construct tag-based filters for querying data
```java
class TagFilterBuilder {
// Constructor function
public TagFilterBuilder(TableSchema tableSchema);
// Equal to filter
public Filter eq(String columnName, Object value);
// Not equal to filter
public Filter neq(String columnName, Object value);
// Less than filter
public Filter lt(String columnName, Object value);
// Less than or equal to filter
public Filter lteq(String columnName, Object value);
// Greater than filter
public Filter gt(String columnName, Object value);
// Greater than or equal to filter
public Filter gteq(String columnName, Object value);
// Between and filter (inclusive)
public Filter betweenAnd(String columnName, Object value1, Object value2);
// Not between and filter
public Filter notBetweenAnd(String columnName, Object value1, Object value2);
// Regular expression filter
public Filter regExp(String columnName, String pattern);
// Not regular expression filter
public Filter notRegExp(String columnName, String pattern);
// LIKE pattern filter
public Filter like(String columnName, String pattern);
// NOT LIKE pattern filter
public Filter notLike(String columnName, String pattern);
// Logical AND filter
public Filter and(Filter left, Filter right);
// Logical OR filter
public Filter or(Filter left, Filter right);
// Logical NOT filter
public Filter not(Filter value);
}
```