Glenn Engstrand Senior Software Engineer at Zoosk
"Persistent notifications are a great use case for Cassandra which really shines when storing time series data in wide rows."
Glenn Engstrand Senior Software Engineer at Zoosk

Zoosk is a leading online dating company that learns as you click in order to pair you with singles you’re likely to be mutually attracted to. Zoosk’s Behavioral Matchmaking™ technology is constantly learning from the actions of over 25 million searchable members in order to deliver better matches in real time. With the #1 grossing online dating app in the Apple App Store, Zoosk is a market leader in mobile dating. Available in over 80 countries and translated into 25 languages, Zoosk is a truly global online dating platform.

I serve as senior software engineer on the platform team.Zoosk

Notifications with Cassandra

If you are a Zoosk user, then you have most probably experienced persistent notifications as a badge on the blue header bar. Clicking that badge shows your notifications which comes in three flavors; personal, social, and account maintenance oriented.

Persistent notifications are a great use case for Cassandra which really shines when storing time series data in wide rows. Our use of Cassandra is almost text book Service Oriented Architecture. We use a single column family with a long row key type, a composite comparator of time and string, and level compaction. There is the capacity for explicit deleting but most notifications eventually scroll off using the TTL (Time To Live) functionality of Cassandra.


Cassandra at Zoosk

The use case (more writes than reads on time series data) compelled us to move persistent notifications from MySQL to Cassandra. We did evaluate Riak at the same time, but chose Cassandra because we felt that column oriented wide rows provided a better fit for our needs over simple key/value, document oriented data storage.

We use one data center, and are running a 5 node cluster with Apache Cassandra 1.1.6.


Hector and the community

The downside to Hector is that it uses Cassandra’s old Thrift interface and you cannot mix different versions of Thrift. This makes you unable to write services that scribe log Hector operations.  Feel free to use CQL but be advised that it is not SQL. Though they both look similar, what you may already know about SQL won’t be applicable to CQL.

Read the Cassandra Data Modeling Best Practices by eBay’s Jay Patel. If you’re looking for training, Ben Coverston with DataStax, gave us our training and he was great. I loved your 2013 Cassandra Summit conference, and would recommend anyone to go. 


Read more about their move from MySQL to Apache Cassandra on the Zoosk blog post:

Moving Persistent Notifications from MySql to Cassandra

Follow @twitter