I am interested in understanding the design principals to use to create the backend for a social networking site. I read up a few resources and found that facebook uses a graph as an underlying data structure where each node could be user/page/album etc. However, just that does not give me a top level view (block diagram or class diagram) on how to go about implementing a few basic features like (all using the graph data structure):
- Adding/removing friends
- News feed
- Messaging
Any pointers on any resources would be great. I am also interested in finding out if a design pattern exists for a social networking site.
Please note that I am not looking for any language specific solution