Skip to content

Latest commit

 

History

History
80 lines (59 loc) · 1.93 KB

README.md

File metadata and controls

80 lines (59 loc) · 1.93 KB

ScyllaDB Go Driver

This is a high-performance client-side driver for ScyllaDB written in pure Go.

Note: this driver is currently in alpha. Bug reports and pull requests are welcome!

Installation

go get github.com/scylladb/scylla-go-driver

Examples

ctx := context.Background()

cfg := scylla.DefaultSessionConfig("exampleks", "192.168.100.100")
session, err := scylla.NewSession(ctx, cfg)
if err != nil {
	return err
}
defer session.Close()

requestCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
defer cancel()

q, err := session.Prepare(requestCtx, "SELECT id, name FROM exampleks.names WHERE id=?")
if err != nil {
	return err
}

res, err := q.BindInt64(0, 64).Exec(requestCtx)

Please see the full example program for more information.

All examples are available in the examples directory

Features and Roadmap

The driver supports the following:

  • Session and query context support
  • Token-aware routing
  • Shard-aware routing (specific to ScyllaDB)
  • Prepared statements
  • Query paging
  • CQL binary protocol version 4
  • Configurable load balancing policies
  • Configurable retry policies
  • TLS support
  • Authentication support
  • Compression (LZ4 and Snappy algorithms)

Ongoing efforts:

  • Gocql drop-in replacement
  • More tests
  • More benchmarks

Missing features:

  • Cassandra support
  • Batch statements
  • Full CQL Events Support
  • Support for all CQL types (Generic binding)
  • Speculative Execution
  • CQL tracing
  • Automatic node status updating
  • Caching prepared statements
  • Non-default keyspace token-aware query routing

Supported Go Versions

Our driver's minimum supported Go version is 1.18

Reference Documentation

License

This project is licensed under Apache License, Version 2.0