4 个版本

0.1.3 2024年8月13日
0.1.2 2024年8月13日
0.1.1 2024年2月25日
0.1.0 2024年2月25日

13#时间序列数据库

Download history

124 每月下载量

Apache-2.0

70KB
1.5K SLoC

RRDCached-Client

RRDCached-Client 是一个 Rust™ RRDCached 客户端库。

它允许您连接到 RRDCached API。RRDCached 是一个服务器,用于处理多个 RRDTool 数据库。

RRDTool 数据库是使用循环队列数据结构的时间序列数据库。RRDTool 数据库文件在文件系统上始终是相同的尺寸和位置。它不会增长。旧数据会随着时间的推移而被丢弃,但可以将数据下采样以保持更长的历史记录。例如,可以有一个一天的 1 秒分辨率,一个月的 1 分钟分辨率,一年的 1 小时分辨率,以及 10 年的 1 天分辨率。查询数据库几乎是瞬时的。

虽然与更现代的时间序列数据库(如 Prometheus 或 InfluxDB)相比,这项技术已经过时,但它仍然受到欢迎,因为它简单且适用于某些工作负载。

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
rrdcached-client = "0.1"

示例

let mut client = RRDCachedClient::connect_tcp("localhost:42217")
    .await?;

client.create("hello", &[
    RRA::Gauge {
        xff: 0.5,
        steps: 1,
        rows: 10,
    }
]).await?;

client.update_one("hello", None, 4.2).await?;

运行 RRDCached 服务器

该仓库包含一个 Dockerfile,可以快速运行用于测试和开发目的的 RRDCached 服务器。它监听 localhost:42217 (tcp)。

docker build . -f rrdcached.Dockerfile -t rrdcached
docker run -it --rm -p 127.0.0.1:42217:42217 --name rrdcached rrdcached

要测试 Unix 套接字功能,您可以使用 socat 创建一个 Unix 套接字代理到 tcp 服务器。

socat UNIX-LISTEN:./rrdcached.sock,reuseaddr,fork TCP:localhost:42217

为什么?

当外面下着雪(2024年2月24日)时,玩 RRDCached API 看起来很有趣。

许可证

本项目采用 Apache 许可证,版本 2.0 - 有关详细信息,请参阅LICENSE 文件。

请注意,RRDTool 和 RRDCached 采用 GPL v2.0 许可。但我们通过 Unix 或 TCP 套接字连接,因此在本项目中采用 Apache 许可证是有效的。如果 RRDTool 或 RRDCached 采用 Affero GPL 许可,则本项目也必须采用 Affero GPL 许可。

我应该在生产中使用这个吗?

如许可证所述,此免费软件不提供任何保证。它已开发数小时,并且尚未用于生产。

单元和集成测试覆盖率相对较高,该库得益于 Rust 生态系统的强大功能,被设计为安全且健壮。但它是一个年轻的项目,并且可能存在错误。

您可能应该在生产中使用更现代的时间序列数据库。但您可能是一位 RRDTool 爱好者,并发现此库很有用。

依赖关系

~3–10MB
~93K SLoC