Skip to content

Async CQL driver for Rust, optimized for ScyllaDB!

License

Notifications You must be signed in to change notification settings

juspay/scylla-rust-driver

This branch is 3 commits ahead of, 506 commits behind scylladb/scylla-rust-driver:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5700aa2 · Dec 10, 2024
Dec 2, 2024
Sep 25, 2024
Nov 20, 2024
Dec 2, 2024
Sep 24, 2024
Dec 10, 2024
Dec 8, 2024
Nov 14, 2024
Dec 7, 2024
Dec 9, 2023
Nov 8, 2022
Sep 29, 2024
Nov 21, 2024
Nov 14, 2024
Oct 13, 2023
Oct 22, 2020
Oct 22, 2020
Sep 25, 2024
May 8, 2024
Nov 12, 2024

Repository files navigation

ScyllaDB Rust Driver

Crates.io docs.rs minimum rustc version

This is a client-side driver for ScyllaDB written in pure Rust with a fully async API using Tokio. Although optimized for ScyllaDB, the driver is also compatible with Apache Cassandra®.

Note: this driver is officially supported but currently available in beta. Bug reports and pull requests are welcome!

Getting Started

The documentation book is a good place to get started. Another useful resource is the Rust and Scylla lesson on Scylla University.

Examples

use futures::TryStreamExt;

let uri = "127.0.0.1:9042";

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

let query_pager = session.query_iter("SELECT a, b, c FROM ks.t", &[]).await?;
let mut stream = query_pager.rows_stream::<(i32, i32, String)>()?;
while let Some((a, b, c)) = stream.try_next().await? {
    println!("a, b, c: {}, {}, {}", a, b, c);
}

Please see the full example program for more information. You can also run the example as follows if you have a Scylla server running:

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

All examples are available in the examples directory

Features and Roadmap

The driver supports the following:

  • Asynchronous API
  • Token-aware routing
  • Shard-aware routing (specific to ScyllaDB)
  • Prepared statements
  • Query paging
  • Compression (LZ4 and Snappy algorithms)
  • CQL binary protocol version 4
  • Batch statements
  • Configurable load balancing policies
  • Driver-side metrics
  • TLS support - install openssl if you want to use it https://docs.rs/openssl/0.10.32/openssl/#automatic
  • Configurable retry policies
  • Authentication support
  • CQL tracing

Ongoing efforts:

  • CQL Events
  • More tests
  • More benchmarks

Getting Help

Please join the #rust-driver channel on ScyllaDB Slack to discuss any issues or questions you might have.

Supported Rust Versions

Our driver's minimum supported Rust version (MSRV) is 1.70.0. Any changes:

  • Will be announced in release notes.
  • Before 1.0 will only happen in major releases.
  • After 1.0 will also happen in minor, but not patch releases.

Exact MSRV policy after 1.0 is not yet decided.

Reference Documentation

Other Drivers

License

This project is licensed under either of

at your option.

About

Async CQL driver for Rust, optimized for ScyllaDB!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.9%
  • Other 0.1%