SkillAgentSearch skills...

Scalandra

Scala wrapper for Cassandra DB

Install / Use

/learn @nodeta/Scalandra
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Scalandra

Scalandra is a Scala wrapper for Cassandra's Thrift API. We currently target Cassandra 0.5.

Data in Cassandra is essentially a huge multi-dimensional map. Scalandra aims to provide a map-like interface to Cassandra with all the bells and whistles supported by Cassandra API.

Scaladoc is located at http://nodeta.github.com/scalandra/.

Features

  • works with Cassandra 0.5
  • treat Cassandra as a huge Scala Map
  • connection pool for efficient connectivity
  • (de)serialization API for easy manipulation

Example

Cassandra access and manipulation

<pre><code class="scala"> import com.nodeta.scalandra._ import com.nodeta.scalandra.serializer.StringSerializer val serialization = new Serialization( StringSerializer, StringSerializer, StringSerializer ) val cassandra = new Client( Connection("127.0.0.1", 9162), "Keyspace1", serialization, ConsistencyLevels.one ) cassandra.ColumnFamily("Standard1")("row")("column1") = "value" cassandra.ColumnFamily("Standard1")("row")("column2") = "value" cassandra.ColumnFamily("Standard1")("row")("column3") = "value" // or just cassandra.ColumnFamily("Standard1")("row") = Map("column1" -> "value", ...) cassandra.ColumnFamily("Standard1")("row")("column1") // => "value" val range = Range(Some("column2"), None, Ascending, 100) cassandra.ColumnFamily("Standard1")("row").slice(range) // => Map("column2" -> "value", "column3" -> "value") cassandra.ColumnFamily("Standard1")("row").slice(List("column1", "column2")) // => Map("column1" -> "value", "column3" -> "value") </code></pre>

Connection Pool

For more complicate applications, connection pooling is usually necessary. Scalandra provides simple and type-safe connection pool based on Apache Commons Pool.

<pre><code class="scala"> import com.nodeta.scalandra.ConnectionProvider val pool = new ConnectionProvider("127.0.0.1", 9160) pool { connection => val client = new Client( connection, "Keyspace", serialization, ConsistencyLevels.default ) // do something } </code></pre>

Running tests

Cassandra tests can be run using <code>rake test</code>, which setups and runs a suitable Cassandra instance for testing purposes.

Future development

  • API for batch mutations
  • Scala 2.8 support
  • Add support for multiple hosts in connection pool
View on GitHub
GitHub Stars51
CategoryDevelopment
Updated2y ago
Forks6

Languages

Scala

Security Score

80/100

Audited on Dec 8, 2023

No findings