By Aayushi Mittal | July 16, 2018
Neo4j activity implementation on behance "Activity Feed" has led to a great decrease in complexity, storage, and infrastructure costs.
David Fox of Adobe talking about their Behance application, and how they improved performance and functionality while massively reducing/simplifying infrastructure by moving from Cassandra to Neo4j. At the corporate level, there’s no upside in attacking Cassandra, but you could certainly use this in relevant competes.
The "Activity Feed Feature" allows users to follow their favorite creatives and curate galleries based on preferences. When a user follows a creative, they receive alerts and an updated feed whenever that creative logs an activity within Behance.
Our previous implementation of ‘Activity Feed’ was built with Cassandra. It was designed for optimized ‘reads’ (when we showed a user their activity feed), but consequently, it was very storage/write-heavy. We needed 48 large Cassandra instances to power the feature, and even with those, there were still many limitations and bottlenecks on the system. We had to devote a large amount of app resources to populate Cassandra with activity feed data.We also had a lot of challenges maintaining our Cassandra cluster, which led to us having to devote a significant amount of ops/developer time to supporting the cluster.
Our new activity feed implementation, built on top of Neo4j, uses a simple graph model where we store relationships between users and the entities they follow. We then store simple “action” relationships that represent a user or curated gallery taking an action on a project (ex. commenting, publishing, appreciating, etc.). This data model produces very little repeating data so data maintenance is simple for our application layer, doesn’t use a lot of resources, and provides good flexibility on how we can query the data.
The flexibility of the graph data model allowed us to easily add this new activity view to the activity feed feature. Instead of having to load a user’s activity based on a pre-existing stored structure, we were able to simply query by action type in Neo4j to create a specific view of the activity feed, analyzing only “published project” actions instead of all our usual activity actions.
Read the full article →
Copyright © 2018 ODBMS.org, All Rights Reserved. ALL MATERIALS AND SERVICES ON THE WEBSITE, OTHER CHANNELS, AND ANY THIRD-PARTY SITES TO WHICH THE FOREGOING LINKS ARE PROVIDED “AS IS” OR “AS AVAILABLE” WITHOUT WARRANTY OF ANY KIND. FORBES IS NOT RESPONSIBLE FOR THE AVAILABILITY OR CONTENT OF OTHER SERVICES THAT MAY BE LINKED TO THE WEBSITE OR OTHER CHANNELS. BECAUSE FORBES HAS NO CONTROL OVER SUCH SERVICES, YOU ACKNOWLEDGE AND AGREE THAT FORBES IS NOT RESPONSIBLE FOR THE AVAILABILITY OF SUCH EXTERNAL SERVICES, AND THAT FORBES DOES NOT ENDORSE AND IS NOT RESPONSIBLE OR LIABLE FOR ANY CONTENT, ACCURACY, QUALITY, ADVERTISING, PRODUCTS OR OTHER MATERIALS ON OR AVAILABLE FROM SUCH EXTERNAL SERVICES.