1. A system comprising: a database operative to maintain a social graph; and a cache layer comprising a plurality of cache nodes, the plurality of cache nodes storing a plurality of data shards, wherein each data shard is operative to: maintain at least a portion of the social graph, the social graph comprising a plurality of graph nodes and a plurality of graph edges connecting the graph nodes, each graph edge connecting two graph nodes indicating an association between the two graph nodes; receive a request to store associations between a first graph node and a second graph node, wherein the first and second graph nodes are identified by a first and second unique node identifier (node ID), respectively, the first and second graph nodes each corresponding to a particular data shard of the plurality of data shards; and update, responsive to the request, the data shard corresponding to the first graph node and the data shard corresponding to the second graph node.