This is an automated email from the ASF dual-hosted git repository.
hongzhigao pushed a commit to branch docs/dev
in repository https://gitbox.apache.org/repos/asf/tsfile.git
The following commit(s) were added to refs/heads/docs/dev by this push:
new 7e276fd5 Add a user guide document for TsFile-CPP (#403)
7e276fd5 is described below
commit 7e276fd593ae7956b765c5b2ff655881820d6f84
Author: Hongzhi Gao <[email protected]>
AuthorDate: Wed Feb 26 12:02:17 2025 +0800
Add a user guide document for TsFile-CPP (#403)
* Add a user guide document for TsFile-CPP
* fix some interfaces
* fix docs
* fix some interfaces
* remove unused data struct
---
.../InterfaceDefinition/InterfaceDefinition-CPP.md | 214 +++++++++++++++++++++
.../InterfaceDefinition-Java.md} | 0
2 files changed, 214 insertions(+)
diff --git
a/src/UserGuide/develop/QuickStart/InterfaceDefinition/InterfaceDefinition-CPP.md
b/src/UserGuide/develop/QuickStart/InterfaceDefinition/InterfaceDefinition-CPP.md
new file mode 100644
index 00000000..4153d4f4
--- /dev/null
+++
b/src/UserGuide/develop/QuickStart/InterfaceDefinition/InterfaceDefinition-CPP.md
@@ -0,0 +1,214 @@
+<!--
+
+ 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
+
+## Write Interface
+
+### TsFileTableWriter
+
+Used to write data to tsfile
+
+```cpp
+/**
+ * @brief Facilitates writing structured table data into a TsFile with a
specified schema.
+ *
+ * The TsFileTableWriter class is designed to write structured data,
particularly suitable for time-series data,
+ * into a file optimized for efficient storage and retrieval (referred to as
TsFile here). It allows users to define
+ * the schema of the tables they want to write, add rows of data according to
that schema, and serialize this data
+ * into a TsFile. Additionally, it provides options to limit memory usage
during the writing process.
+ */
+class TsFileTableWriter {
+ public:
+ /**
+ * TsFileTableWriter is used to write table data into a target file with
the given schema,
+ * optionally limiting the memory usage.
+ *
+ * @param writer_file Target file where the table data will be written.
Must not be null.
+ * @param table_schema Used to construct table structures. Defines the
schema of the table
+ * being written.
+ * @param memory_threshold Optional parameter used to limit the memory
size of objects.
+ * If set to 0, no memory limit is enforced.
+ */
+ TsFileTableWriter(WriteFile* writer_file,
+ TableSchema* table_schema,
+ uint64_t memory_threshold = 0);
+ ~TsFileTableWriter();
+ /**
+ * Writes the given tablet data into the target file according to the
schema.
+ *
+ * @param tablet The tablet containing the data to be written. Must not be
null.
+ * @return Returns 0 on success, or a non-zero error code on failure.
+ */
+ int write_table(const Tablet& tablet);
+ /**
+ * Flushes any buffered data to the underlying storage medium, ensuring
all data is written out.
+ * This method ensures that all pending writes are persisted.
+ *
+ * @return Returns 0 on success, or a non-zero error code on failure.
+ */
+ int flush();
+ /**
+ * Closes the writer and releases any resources held by it.
+ * After calling this method, no further operations should be performed on
this instance.
+ *
+ * @return Returns 0 on success, or a non-zero error code on failure.
+ */
+ int close();
+};
+```
+
+### TableSchema
+
+Describe the data structure of the table schema
+
+```cpp
+/**
+* @brief Represents the schema information for an entire table.
+*
+* This class holds the metadata necessary to describe how a specific table is
structured,
+* including its name and the schemas of all its columns.
+*/
+class TableSchema {
+ public:
+ /**
+ * Constructs a TableSchema object with the given table name, column
schemas, and column categories.
+ *
+ * @param table_name The name of the table. Must be a non-empty string.
+ * This name is used to identify the table within the
system.
+ * @param column_schemas A vector containing ColumnSchema objects.
+ * Each ColumnSchema defines the schema for one
column in the table.
+ */
+ TableSchema(const std::string& table_name,
+ const std::vector<ColumnSchema>& column_schemas);
+};
+
+
+/**
+* @brief Represents the schema information for a single column.
+*
+* This structure holds the metadata necessary to describe how a specific
column is stored,
+* including its name, data type, category.
+*/
+struct ColumnSchema {
+ std::string column_name_;
+ common::TSDataType data_type_;
+ ColumnCategory column_category_;
+
+ /**
+ * @brief Constructs a ColumnSchema object with the given parameters.
+ *
+ * @param column_name The name of the column. Must be a non-empty string.
+ * This name is used to identify the column within the
table.
+ * @param data_type The data type of the measurement, such as INT32,
DOUBLE, TEXT, etc.
+ * This determines how the data will be stored and
interpreted.
+ * @param column_category The category of the column indicating its role
or type
+ * within the schema, e.g., FIELD, TAG.
+ * Defaults to ColumnCategory::FIELD if not
specified.
+ * @note It is the responsibility of the caller to ensure that
`column_name` is not empty.
+ */
+ ColumnSchema(std::string column_name, common::TSDataType data_type,
+ ColumnCategory column_category = ColumnCategory::FIELD) :
column_name_(std::move(column_name)),
+
data_type_(data_type),
+
column_category_(column_category) {
+ }
+};
+
+/**
+ * @brief Represents the data type of a measurement.
+ *
+ * This enumeration defines the supported data types for measurements in the
system.
+ */
+enum TSDataType : uint8_t {
+ BOOLEAN = 0,
+ INT32 = 1,
+ INT64 = 2,
+ FLOAT = 3,
+ DOUBLE = 4,
+ TEXT = 5,
+ STRING = 11
+};
+
+```
+
+### Tablet
+
+Write column memory structure
+
+```cpp
+/**
+ * @brief Represents a collection of data rows with associated metadata for
insertion into a table.
+ *
+ * This class is used to manage and organize data that will be inserted into a
specific target table.
+ * It handles the storage of timestamps and values, along with their
associated metadata such as column names and types.
+ */
+class Tablet {
+public:
+ /**
+ * @brief Constructs a Tablet object with the given parameters.
+ *
+ * @param column_names A vector containing the names of the columns in the
tablet.
+ * Each name corresponds to a column in the target
table.
+ * @param data_types A vector containing the data types of each column.
+ * These must match the schema of the target table.
+ * @param max_rows The maximum number of rows that this tablet can hold.
Defaults to DEFAULT_MAX_ROWS.
+ */
+ Tablet(const std::vector<std::string> &column_names,
+ const std::vector<common::TSDataType> &data_types,
+ int max_rows = DEFAULT_MAX_ROWS);
+
+ /**
+ * @brief Adds a timestamp to the specified row.
+ *
+ * @param row_index The index of the row to which the timestamp will be
added.
+ * Must be less than the maximum number of rows.
+ * @param timestamp The timestamp value to add.
+ * @return Returns 0 on success, or a non-zero error code on failure.
+ */
+ int add_timestamp(uint32_t row_index, int64_t timestamp);
+
+ /**
+ * @brief Template function to add a value of type T to the specified row
and column.
+ *
+ * @tparam T The type of the value to add.
+ * @param row_index The index of the row to which the value will be added.
+ * Must be less than the maximum number of rows.
+ * @param schema_index The index of the column schema corresponding to the
value being added.
+ * @param val The value to add.
+ * @return Returns 0 on success, or a non-zero error code on failure.
+ */
+ template <typename T>
+ int add_value(uint32_t row_index, uint32_t schema_index, T val);
+
+ /**
+ * @brief Template function to add a value of type T to the specified row
and column by name.
+ *
+ * @tparam T The type of the value to add.
+ * @param row_index The index of the row to which the value will be added.
+ * Must be less than the maximum number of rows.
+ * @param measurement_name The name of the column to which the value will
be added.
+ * Must match one of the column names provided
during construction.
+ * @param val The value to add.
+ * @return Returns 0 on success, or a non-zero error code on failure.
+ */
+ template <typename T>
+ int add_value(uint32_t row_index, const std::string &measurement_name, T
val);
+};
+```
\ No newline at end of file
diff --git a/src/UserGuide/develop/QuickStart/Interface-Definitions.md
b/src/UserGuide/develop/QuickStart/InterfaceDefinition/InterfaceDefinition-Java.md
similarity index 100%
rename from src/UserGuide/develop/QuickStart/Interface-Definitions.md
rename to
src/UserGuide/develop/QuickStart/InterfaceDefinition/InterfaceDefinition-Java.md