May 14th, 2014




“We liked (Cassandra’s) tunable consistency, transparent key-level sharding, and the near linear scalability”

– Zohar Shay, Software Architect at Webcollage

Zohar Shay Software Architect at Webcollage



Webcollage helps vendors syndicate content into their on-line retailer. This happens in real-time when users access the product page on sites such as Walmart, Target, BestBuy, OfficeDepot etc. We provide this service to Vendors like P&G, 3M, Microsoft, Logitech, Canon, Bosch etc.

I’m a software architect at Webcollage.


Choosing a NoSQL database

Initially we visited presentations of other companies showing implementations of MongoDB, Couchbase, REDIS, and Cassandra.  We liked tunable consistency, transparent key-level sharding, and the near linear scalability we are using in our current implementations.


Cassandra as a cache layer

We’re using Cassandra as a high-availability, fast front-end cache. We manage our data in Oracle using transaction semantics and then copy recently modified data as restructured optimized information to be used by our runtime rendering code to Cassandra. Our page runtime content serving code have multiple Cassandra hits per page.



We’re currently using version 1.1.0 of Apache Cassandra in production.  In production we currently have a single datacenter with 4 nodes implemented as VMWare virtual machines scattered across our physical servers.

All cached data is configured to have four replicas. We are using write consistency of ALL and read consistency of ONE so all nodes take part of servicing Cache hits using local data. Since write process is recoverable in case of issues (e.g. some nodes go down) we can either re-configure to LOCAL_QUROM or suspend writing till issue / maintenance is resolved while sustained full Production traffic load.


Helpful Cassandra community

When we started the project and created our implementation the community was extremely helpful. In several cases I read about an issue right before encountering it so I immediately knew what to do when I did.