whatyouhide

whatyouhide

Elixir Core Team

Xandra – Fast, simple, and robust Cassandra driver

Hey all,

earlier today @lexmag and I released the first version of Xandra, a Cassandra driver built natively in Elixir. We’re very excited and we hope you’re gonna enjoy it!

Andrea and Aleksei

Most Liked

lexmag

lexmag

Hi everyone,

Recently we have released new version of the driver that supports clustering.

Right now we use it in all components of the push notification system mentioned in the “The Pursuit of Instant Pushes” article.
Using Xandra resulted in 30% boost in push notification delivery time.

Aleksei and Andrea

whatyouhide

whatyouhide

Elixir Core Team

Quick update: we just released v0.4.0 of the driver, which supports retry strategies to retry failed queries. Exciting times!

Andrea and Aleksei

lexmag

lexmag

Hey!

We have indeed considered existing libraries before writing our own. Best options were CQErl and marina.

As @whatyouhide said, we went with CQErl to have our project moving forward.
Though its performance was far from desired for our use case, error messages that come from internals did not help, its dependency configuration was extremely painful: Git instead of Hex (we even discovered that one the dependencies changes actual Git ref during Makefile execution—what you see is not what you get). In fact, we end up with a fork.
We could (and were considering to) fix all those aforementioned issues, but that amount of work would mean that we are basically writing a new driver. Also it felt that starting from scratch will be faster to get things done.

Marina seems alright (still Git dependencies though). However it lacks some substantial features, batch queries in our case.

The day we switched to Xandra we got minimum 30% performance improvement and were able to simplify the code around error handling.
Since then Xandra received many optimizations (~35% faster decoding, for example), native support for calendar data types, and streaming functionality out of the box.

whatyouhide

whatyouhide

Elixir Core Team

Hey folks,

we released version v0.9.0 of Xandra which adds native support for datetime data types and optimizes decoding even more. If you’re interested you can check out the full CHANGELOG.

lexmag

lexmag

Since the last update we have released few more versions of the driver (v0.7 is the most recent) with great changes:

  • Support for date, time, smallint, and tinyint types
  • Support for user-defined types
  • Support for authentication
  • Important encoding and decoding optimisations (around 35% speedup)

:rocket:

Where Next?

Popular in Libraries Top

Qqwy
TypeCheck: Fast and flexible runtime type-checking for your Elixir projects. Core ideas Type- and function specifications are const...
336 13801 100
New
hpopp
After just over two years in development, this latest version of Pigeon is what I finally consider done in regards to my original vision ...
New
devonestes
Introducing assertions, the library that helps you write really great test assertions! GitHub: https://github.com/devonestes/assertions ...
New
treble37
Just looking for a little feedback on a tiny helper library I built - Sometimes I find the need to convert maps with atom keys to maps...
New
mbuhot
Leverage Open Api 3.0 (Swagger) to document, test, validate and explore your Plug and Phoenix APIs. Generate and serve a JSON Open API ...
New
ericlathrop
I built a silly site for Halloween that uses Phoenix Channels on the backend, and React on the frontend. I had many problems integrating ...
New
Crowdhailer
Experimenting with this code. OK.try do user <- fetch_user(1) cart <- fetch_cart(1) order = checkout(cart, user) save_or...
New
tmbb
I’ve decided to create this topic to discuss optimization possibilities for something like Phoenix LiveView. I’ve created this topic unde...
New
gjaldon
As the title states, EctoEnum has just been updated after some time of hardly any activity in the repo. Here’s the latest release: https:...
New
ostinelli
Let’s write a database! Well not really, but I think it’s a little sad that there doesn’t seem to be a simple in-memory distributed KV da...
New

Other popular topics Top

bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 35421 110
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 42633 214
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New

Sub Categories:

We're in Beta

About us Mission Statement