Awesome
CDRS-async - async Apache Cassandra and Scylla driver for Rust
<p align="center"> <img src="https://github.com/AlexPikalov/cdrs/raw/master/cdrs-logo.png" alt="CDRS - Apache Cassandra driver"/> </p>CDRS-async is an asynchronous driver for Apache Cassandra and Scylla databases.
It's still alpha but you can try it out.
Features
-
LZ4, Snappy compression;
-
Cassandra-to-Rust data deserialization;
-
Pluggable authentication strategies;
-
ScyllaDB support;
-
Server events listening;
-
Multiple CQL version support (3, 4), full spec implementation;
-
Query tracing information.
Getting started
Add CDRS-async to your Cargo.toml file as a dependency:
cdrs-async = { version = "*" }
Then add it as an external crate to your main.rs
file:
extern crate async_std;
extern crate async_trait;
extern crate cdrs_async;
use async_std::{pin::Pin, task};
use cdrs_async::{authenticators::NoneAuthenticator, query::QueryExecutor, Compression, Session};
const CREATE_KS_QUERY: &'static str = r#"
CREATE KEYSPACE IF NOT EXISTS async_cdrs_3
WITH REPLICATION = {
'class' : 'SimpleStrategy',
'replication_factor' : 1
};
"#;
fn main() {
task::block_on(async {
let authenticator_strategy = NoneAuthenticator {};
let mut session = Session::connect(
"127.0.0.1:9042",
Compression::None,
authenticator_strategy.into(),
)
.await
.expect("session connect");
let pinned_session = Pin::new(&mut session);
let r = pinned_session.query(CREATE_KS_QUERY).await;
println!("Result {:?}", r);
});
}
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.