6个版本 (破坏性更新)
使用旧Rust 2015
0.5.1 | 2020年3月29日 |
---|---|
0.5.0 | 2020年3月9日 |
0.4.0 | 2019年7月23日 |
0.3.0 | 2019年4月21日 |
0.1.0 | 2019年1月6日 |
在数据库实现中排名第213
每月下载量38次
在 2 crate中使用
42KB
922 代码行
嵌入式时间序列数据库
此库提供了一个低开销的时间序列数据库,旨在嵌入到应用程序中。
从系列签名
pub struct Series<T: Clone + Recordable + DeserializeOwned + Serialize> {
你可以知道,你必须对数据类型进行参数化,该数据类型是你想要存储的,它还必须实现几个特性。
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
struct BikeTrip {
datetime: DateTime<Utc>,
distance: Distance,
duration: Duration,
comments: String,
}
impl Recordable for BikeTrip {
fn timestamp(&self) -> DateTime<Utc> {
self.datetime
}
fn tags(&self) -> Vec<String> {
Vec::new()
}
}
可记录要求实现timestamp
和tags
,两者都可以用于搜索记录,并且在将来都可能用于索引。
系列只能存储一种数据类型,但你总是可以通过将它们包装到一个枚举中,来存储多种数据类型。
打开系列
let mut ts: Series<BikeTrip> = Series::open("var/bike_trips.json")
.expect("expect the time series to open correctly");
如果系列文件尚不存在,则将创建该文件。如果它已经存在,现有数据将被读入内存并可供使用。
注意:所有数据都将一次性读入内存。对于人类规模的事物,这可能占用很少的内存,但此软件未针对物联网规模部署进行优化。此外,此库假设只有一个进程正在写入文件。当前,多个进程写入文件的行为是未定义的。
依赖关系
~4–15MB
~189K SLoC