#cassandra #cql #database-driver #tokio #async-api

scylla

Rust 异步 CQL 驱动,针对 Scylla 优化,完全兼容 Apache Cassandra™

28 个版本

新版本 0.13.2 2024年8月22日
0.13.1 2024年7月11日
0.13.0 2024年5月9日
0.12.0 2024年2月2日
0.2.1 2021年7月26日

#27数据库接口

Download history 23479/week @ 2024-05-02 25643/week @ 2024-05-09 36448/week @ 2024-05-16 31726/week @ 2024-05-23 25921/week @ 2024-05-30 37410/week @ 2024-06-06 32184/week @ 2024-06-13 33914/week @ 2024-06-20 36265/week @ 2024-06-27 26435/week @ 2024-07-04 28639/week @ 2024-07-11 26313/week @ 2024-07-18 26213/week @ 2024-07-25 30012/week @ 2024-08-01 32635/week @ 2024-08-08 28107/week @ 2024-08-15

122,290 每月下载量
用于 42 包(直接使用 31 个)

MIT/Apache

1.5MB
37K SLoC

ScyllaDB Rust 驱动

Crates.io docs.rs minimum rustc version

这是一个纯 Rust 编写的客户端驱动程序,用于 ScyllaDB,具有完全异步的 API,使用 Tokio。虽然针对 ScyllaDB 进行了优化,但该驱动程序也与 Apache Cassandra® 兼容。

注意:此驱动程序已官方支持,但目前处于 beta 版本。欢迎提交错误报告和拉取请求!

入门

文档手册》是入门的好地方。另一个有用的资源是 Scylla 大学上的 Rust 和 Scylla 课程

示例

let uri = "127.0.0.1:9042";

let session: Session = SessionBuilder::new().known_node(uri).build().await?;

let result = session.query("SELECT a, b, c FROM ks.t", &[]).await?;
let mut iter = result.rows_typed::<(i32, i32, String)>()?;
while let Some((a, b, c)) = iter.next().transpose()? {
    println!("a, b, c: {}, {}, {}", a, b, c);
}

请参阅完整的 示例程序 获取更多信息。如果您有一个正在运行的 Scylla 服务器,您也可以按如下方式运行示例:

SCYLLA_URI="127.0.0.1:9042" cargo run --example basic

所有示例均可在 examples 目录中找到

功能和路线图

该驱动程序支持以下功能

  • 异步 API
  • Token-aware 路由
  • Shard-aware 路由(特定于 ScyllaDB)
  • 预编译语句
  • 查询分页
  • 压缩(LZ4 和 Snappy 算法)
  • CQL 二进制协议版本 4
  • 批量语句
  • 可配置的负载均衡策略
  • 驱动程序端指标
  • TLS 支持 - 如果要使用它,请安装 openssl https://docs.rs/openssl/0.10.32/openssl/#automatic
  • 可配置的重试策略
  • 身份验证支持
  • CQL 追踪

正在进行的工作

  • CQL 事件
  • 更多测试
  • 更多基准测试

获取帮助

请加入 #rust-driver 频道在 ScyllaDB Slack,讨论您可能遇到的任何问题或疑问。

支持的 Rust 版本

我们的驱动程序最低支持的 Rust 版本(MSRV)是 1.66.0。任何更改都将明确发布,并且只会发生在主要版本发布期间。

参考文档

其他驱动程序

许可证

此项目根据您的选择受以下许可证之一约束:

依赖项

~8–19MB
~255K SLoC