6个版本
0.2.1 | 2022年7月6日 |
---|---|
0.2.0 | 2022年7月6日 |
0.1.3 | 2022年6月18日 |
#849 in 编码
255KB
5.5K SLoC
Rust TsFile Writer
这是一个尚未功能完整的TsFiles版本3(如Apache IoTDB项目定义)的Writer。目前不支持所有TsFiles功能。最值得注意的是
- 无法写入对齐块
- 并非所有编码都可用
- 不支持所有数据类型
- 不支持所有压缩类型
但总的来说,使用此客户端编写的TsFiles与Java编写的TsFiles具有100%的兼容性。
快速入门
要写入TsFile,只需做类似以下的事情
// Create the Schema
// Two devices with two sensors each
let schema = TsFileSchemaBuilder::new()
.add(
"d1",
DeviceBuilder::new()
.add(
"s1",
TSDataType::INT64,
TSEncoding::PLAIN,
CompressionType::UNCOMPRESSED,
)
.add(
"s2",
TSDataType::FLOAT,
TSEncoding::PLAIN,
CompressionType::UNCOMPRESSED,
)
.build(),
)
.add(
"d2",
DeviceBuilder::new()
.add(
"s1",
TSDataType::INT64,
TSEncoding::PLAIN,
CompressionType::UNCOMPRESSED,
)
.add(
"s2",
TSDataType::FLOAT,
TSEncoding::PLAIN,
CompressionType::UNCOMPRESSED,
)
.build(),
)
.build();
// Create the writer
let mut writer = TsFileWriter::new(
"target/benchmark2.tsfile",
schema,
Default::default(),
)
.unwrap();
// Write multiple timeseries at once
writer.write_many("d1",1, vec![
DataPoint::new("s1", IoTDBValue::LONG(i)),
DataPoint::new("s2", IoTDBValue::FLOAT(i as f32)),
]);
// Write single series
writer.write("d2", "s1", 1, IoTDBValue::LONG(i));
writer.write("d2", "s2", 1, IoTDBValue::FLOAT(i as f32));
当前实现的功能
编码
- 纯文本
- TS2Diff编码用于INT32和INT64
- 其他所有...
数据类型
- INT32
- INT64
- FLOAT
- 其他所有...
压缩
- 未压缩
- SNAPPY
- 其他所有...
同步发送者功能
这是Apache IoTDB服务器的一个非常简单的"同步客户端"实现。这意味着,这个工具的行为与运行了start-sync-client.sh
的IoTDB服务器类似。即它会使用Apache IoTDB的同步协议将tsfiles发送到相应的接收服务器。
变更日志
0.2.1(由于变更日志错误而重新发布)
- TsFileWriter::write_many现在接受
IntoIterator<Item=DataPoint<'a>>
作为参数,而不是仅接受Vec<DataPoint<'a>>
- 添加了同步发送者(功能
sync_sender
)
0.1.3
- TS2Diff现在可用于INT64和INT32
0.1.2
- SNAPPY压缩现在可用
- 在代码库中使用CI管道和cargo fmt
0.1.1
- 大量重构
- 将
Result<_, TsFileError>
添加到几乎每个操作中 - 改进了README
依赖关系
~0.2–1.4MB
~22K SLoC