3 TAO Data Model and API
Facebook focuses on people, actions, and relationships.
We model these entities and connections as nodes and
edges in a graph. This representation is very flexible;
it directly models real-life objects, and can also be used
to store an application’s internal implementation-specific
data. TAO’s goal is not to support a complete set of graph
queries, but to provide sufficient expressiveness to handle
most application needs while allowing a scalable and
efficient implementation. Consider the social networking example in Figure 1a, in which Alice used her mobile phone to record her visit to a famous landmark with Bob. She ‘checked in’ to the Golden Gate Bridge and ‘tagged’ Bob to indicate that he is with her. Cathy added a comment that David has ‘liked.’ The social graph includes the users (Alice,
Bob, Cathy, and David), their relationships, their actions
(checking in, commenting, and liking), and a physical
location (the Golden Gate Bridge).
Facebook’s application servers would query this
event’s underlying nodes and edges every time it is rendered. Fine-grained privacy controls mean that each user may see a different view of the checkin: the individual
nodes and edges that encode the activity can be reused
for all of these views, but the aggregated content and the
results of privacy checks cannot.