5个版本
0.1.5 | 2020年11月2日 |
---|---|
0.1.3 | 2020年7月21日 |
0.1.2 | 2020年7月21日 |
0.1.1 | 2020年7月19日 |
0.1.0 | 2020年7月19日 |
#2264 in 数据库接口
30KB
589 行
TSLite:一个小巧的嵌入式时间序列数据库
TSLite是一个直接在文件上操作的小巧且可嵌入的时间序列数据库。它没有类型的概念,目前你可以存储所有适合1个字节的任何内容。
更多信息请参阅文档
git clone https://github.com/maeln/tslite.git
cd tslite
cargo doc --open
还可以查看测试,了解如何使用它的示例。
lib.rs
:
一个非常简单的嵌入式时间序列数据库。
目前你只能存储适合一个字节的数据库数据。
所有操作都是直接在数据库文件上进行的,因此如果你进行大量操作,这可能会非常密集。如果你要频繁推入和读取数据,你真的不应该直接使用它。
如果你打算进行大量操作,你应该有一个操作层,该层将在内存中操作,并定期将它们转储到文件系统。
数据库编码
每个数字都将使用小端序存储在数据库中。我们将以这种方式在数据库中存储记录,即最新的(即实际时间)记录始终位于文件的末尾。但我们应该做一些定期检查数据库完整性和修复错误的事情(即对整个数据库进行排序)。这可以通过在将数据库提交到文件之前在内存中保留数据库和在内存中进行所有I/O操作来更容易地完成。
文件组织
+--------------------------------------------+
| HEADER | RECORD1 | RECORD2 | RECORD3 | ... |
+--------------------------------------------+
+-------------------------------------------[HEADER]---------------------------------------------+
|--------------------------[TIMESTAMP]------------------------|---------[RECORD COUNT]-----------|
| year | month | day | hour | minute | second | 64bit |
| 16bit | 8bit | 8bit | 8bit | 8bit | 8bit | |
+------------------------------------------------------------------------------------------------+
+-------------------[RECORD]------------+
|--------[TIME OFFSET]--------|-[VALUE]-|
| 32bit | 8bit |
+---------------------------------------+
依赖关系
~1.5MB
~20K SLoC