I did an experiment recently, if I have a person's full name and ip address, I could know who that person is? Where he/she lives? Which school they went to and other public information.
Such a facility can be easily programmed (and many have already attempted to). Think this way - I know a person's last name and location. Now I could track down everyone who has the same last name and reside in the same locality. This way I can have a simple social graph of a family tree. Match more details and I get a better picture of 'relationships' these people share. (Try it out).
I can't even imagine the amount of data a 200 million strong social network can produce. I guess they do it this way -
a) There are 4 people A, B, C, and D. 'A' has emails of 'B' and 'C' but not of 'D'. Both 'B' and 'C' have email of 'D'. Now I could say there is a 60% chance of A knowing D.
b) 'A' visited the profile of 'D'. This is the connect between them - A->B->C->D. Now, there is also a person 'E' who is directly connected to both A and D. So shorter chain -> A->E->D.
With these 3 pieces of information, I could there is a 70% chance that A knows D. In this case 'D' did nothing and got a friend suggestion.
So I think its quite easy to generate a social graph, all you need is some useful data and some motivation.