I’m the CTO at Movio. The Movio solution provides marketing analytics and targeted campaigns for the cinema industry.
We take transactional data from cinemas, and we create a whole lot of analytics around how people go to movies, when, where, and why. Typically, we deal with loyalty data, so we actually can associate a transaction with a person and with a demographic. Our product is SaaS based product that the marketing teams from cinemas log into. They can then slice and dice up the database to create really targeted campaigns for specific marketing requirements.
We currently are using MySQL; we have a bunch of reporting on analytics queries that we run against a database, and as we’re getting bigger and bigger customers, and as those customers are accumulating more and more transactions we’ve been really hand-strung by our relational data model and have had to look at a number of big data, NoSQL options.
We evaluated lots of NoSQL solutions, and It is a very hard space to evaluate. There’s so many different options, and every product seems to do everything you look for, until you scratch the surface.
We settled on Cassandra, primarily because of its linear scale. We’re really excited by that coming from an environment where we really struggled to reach that scale. As well as being account-based products that people depend on, we need to be up as much as we can. The idea of having multi-datacenter replication is really exciting for us. Being an analytics product, the idea that we could have a secret cluster that was in sync with the customer facing cluster to be able to run analytics on, was also a driver towards Cassandra for us.
Email tracking and analytics
There’s two places that we were really looking for to scale. One of them is, we send a lot of emails, we have to send a few million emails in under an hour. Then there’s quite a bit of data from a write perspective with the amount of data we have to track each time we send an email. With Cassandra’s high performing writes that was a good use case for us.
The second one is we were running our analytics. For our customers, we need to be in real-time, so we use Cassandra,
in that respect, to absorb all of the events that our customers are creating and aggregate that data so that we can do real-time reporting.
We’re on the verge of being fully in production, and we’re in closed beta with production data running through it. Currently, we don’t get much data; the data size that we deal with in MySQL, I think we’re up to about five terabytes. As we denormalize data into Cassandra that will be bigger. We’re not at any massive data requirements. I think we’re pretty excited about migrating some of that data across.
We’re running the most recent version of Cassandra, I think we’re at 2.08. We’re a Scala shop, so we use Scala and framework called Akka. We’re pretty excited about that, too. We’re hosted at Amazon at the moment. For us, Amazon worked really nicely with Cassandra when you’re replicating across multiple data centers, and multiple availability zone. I find Netflix paved the way with that and we’re following their wake.
Starting with Cassandra
We had been watching the project for a long time. One of our developers had used it in her previous role, in quite a simple implementation and one of the Cassandra committers, Aaron Morton, and our team started chatting, and reviewed what we were planning, what we were thinking of doing with Cassandra, and he gave us the thumbs up.
It was tough to pickup. I have been programming in a relational world for a very long time. To change my thinking into to how I would structure the data was quite a mind bender. A lot of Cassandra Summit videos actually helped me through that process on how to translate your relational data into something that Cassandra can handle. That’s always the hardest part to explain.
From what we’ve seen so far, Cassandra has just been really good. We’ve had this scenario where we pushed it pretty hard in testing and added more nodes and seen the performance increase that we would expect. Today, we’re really happy with the way it’s formed.