Facebook has more than a billion active users who record their relationships, share their interests, upload text, images and video, and curate semantic information about their data.
TAO: A read-optimized graph data store
TAO can sustain a billion reads per second on a changing data set of many petabytes.
Facebook was originally built by storing the social graph in MySQL, querting it from PHP and caching results in memcache
Motivated by encapsulation failures in the PHP API, by the opportunity to access the graph easily from non-PHP services, and by several fundamental problems with the lookaside cache architecture
What are some problems with previous Memcached implementation?
objects are typed nodes, associations are typed directed edges between objects
Both objects and associations may contain data as key → value pairs
Objects: (id) -> (otype, (key -> value)*)
Assoc: (id1, atype, id2) -> (time, (key -> value)*)