9个不稳定版本 (3个破坏性更新)
| 0.5.2 | 2020年2月11日 | 
|---|---|
| 0.3.0 | 2019年10月10日 | 
| 0.2.3 |  | 
| 0.2.1 |  | 
| 0.1.6 |  | 
#85 在 数据库实现 中排名
每月下载量38次
6MB
 6.5K  SLoC
tectonicdb
| crate | docs.rs | crate.io | 
|---|---|---|
| tectonicdb | ||
| tdb-core | ||
| tdb-server-core | ||
| tdb-cli | 
tectonicdb是一个快速、高度压缩的独立数据库和流协议,用于订单簿的tick数据。
为什么
- 
使用简单高效的二进制文件格式:密集tick格式(DTF) 
- 
存储订单簿tick数据的元组形状: (时间戳, 序号, 是否为交易, 是否为出价, 价格, 大小)。
- 
按时间戳+序号排序 
- 
每个订单簿事件12字节 
- 
每秒每线程可插入600,000条 
安装
安装tectonicdb有多种方式。
- 二进制文件
二进制文件可供下载。请确保将二进制文件的路径添加到您的PATH中。目前仅提供Linux x86_64的构建。
- Crates
cargo install tectonicdb
此命令将从crates.io下载tdb、tdb-server、dtftools二进制文件并在本地构建。
- GitHub
要贡献,您需要在本地计算机上拥有源代码副本。
git clone https://github.com/0b01/tectonicdb
cd tectonicdb
cargo build --release
cargo run --release tdb-server
二进制文件可以在target/release下找到。
如何使用
配置非常简单。
./tdb-server --help
例如
./tdb-server -vv -a -i 10000
# run the server on INFO verbosity
# turn on autoflush for every 10000 inserts per orderbook
配置
为了配置Google Cloud Storage和数据收集后端集成,使用了以下环境变量
| 变量名称 | 默认值 | 描述 | 
|---|---|---|
| TDB_HOST | 0.0.0.0 | 数据库将绑定到的主机 | 
| TDB_PORT | 9001 | 数据库将监听的网络端口 | 
| TDB_DTF_FOLDER | db | 存储DTF文件的目录名称 | 
| TDB_AUTOFLUSH | false | 如果设置为 true,记录的订单簿数据将在每次插入interval后自动刷新到DTF文件。 | 
| TDB_FLUSH_INTERVAL | 1000 | 每次插入 interval,如果启用了autoflush,DTF文件将从内存写入到磁盘。 | 
| TDB_GRANULARITY | 0 | 记录历史粒度级别 | 
| TDB_LOG_FILE_NAME | tdb.log | 数据库日志文件的名称 | 
| TDB_Q_CAPACITY | 300 | 记录历史循环队列的容量 | 
客户端API
| 命令 | 描述 | 
|---|---|
| HELP | 打印帮助信息 | 
| PING | 响应PONG | 
| INFO | 返回表模式的信息 | 
| PERF | 返回随时间变化的条目答案计数 | 
| LOAD [orderbook] | 将订单簿从磁盘加载到内存 | 
| USE [orderbook] | 切换当前订单簿 | 
| CREATE [orderbook] | 创建订单簿 | 
| GET [n] FROM [orderbook] | 返回项目 | 
| GET [n] | 从当前订单簿返回n个项目 | 
| COUNT | 当前订单簿中项目的数量 | 
| COUNT ALL | 返回所有订单簿的总计数 | 
| CLEAR | 删除当前订单簿中的所有内容 | 
| CLEAR ALL | 删除内存中的所有内容 | 
| FLUSH | 将当前订单簿刷新到硬盘上 | 
| FLUSHALL | 将所有内容从内存刷新到磁盘 | 
| SUBSCRIBE [orderbook] | 订阅订单簿的更新 | 
| EXISTS [orderbook] | 检查订单簿是否存在 | 
| SUBSCRIBE [orderbook] | 订阅订单簿 | 
数据命令
USE [dbname]
ADD [ts], [seq], [is_trade], [is_bid], [price], [size];
INSERT 1505177459.685, 139010, t, f, 0.0703620, 7.65064240; INTO dbname
监控
TectonicDB通过定期向InfluxDB实例发送其使用信息来支持监控/警报
    --influx-db <influx_db>                        influxdb db
    --influx-host <influx_host>                    influxdb host
    --influx-log-interval <influx_log_interval>    influxdb log interval in seconds (default is 60)
具体示例:
...
$ influx
> CREATE DATABASE market_data;
> ^D
$ tdb --influx-db market_data --influx-host https://:8086 --influx-log-interval 20
...
TectonicDB将发送字段值disk={COUNT_DISK},size={COUNT_MEM}带有标签ob={ORDERBOOK}到market_data测量值,与dbname相同。
此外,您可以使用INFO和PERF命令直接查询使用信息
- 
INFO报告内存和磁盘中的当前tick计数。
- 
PERF返回记录的tick计数历史,其粒度可以配置。
日志记录
默认的日志文件为tdb.log。
测试
export RUST_TEST_THREADS=1
cargo test
必须按顺序运行测试,因为某些测试依赖于其他测试生成的dtf文件。
基准
tdb客户端附带基准模式。此命令将1M条记录插入tdb。
tdb -b 1000000
使用dtf文件
Tectonic附带一个命令行工具dtfcat,用于检查文件元数据和存储的所有事件,并将其转换为JSON或CSV。
选项
USAGE:
    dtfcat [FLAGS] --input <INPUT>
FLAGS:
    -c, --csv         output csv
    -h, --help        Prints help information
    -m, --metadata    read only the metadata
    -V, --version     Prints version information
OPTIONS:
    -i, --input <INPUT>    file to read
作为库
可以在不同的应用程序中使用Dense Tick Format流式传输协议/文件格式。与任何实现Write特征的缓冲区配合使用得很好。
要求
TectonicDB是一个独立的服务。
- 
Linux 
- 
macOS 
语言绑定
- 
TypeScript 
- 
Rust 
- 
Python 
- 
JavaScript 
其他特性
- 
类似于Cloud SQL的使用统计信息 
- 
dtf文件格式的命令行检查工具 
- 
日志记录 
- 
按时间戳查询 
变更日志
- 0.5.0: InfluxDB监控插件和改进的命令行参数
- 0.4.0: 处理DTF文件的基于迭代器的API和各种生活质量的改进
- 0.3.0: 重构为异步
依赖项
~19–31MB
~494K SLoC