This is one of the questions in my mind for a long time. How do Facebook or any such website/app which has more than a hundred million users maintain there database?
I believe that everything cannot be put into a single database. If this is the case should there be multiple databases handling different sections? Different sections like: one database for status, one for photographs and one for users…
Can the database schema be made relational?
500 million+ users and growing, if average one user has 10 text updates, 5 billion rows (at least), which should be 10% of data that Facebook actually handles.
I read somewhere that Facebook has 1800+ sql instances out of which 800+ are memcached. Should these DB instances be identical? How might these be designed?
Lots of good resources on this all over the place, but the short answer is write-thru memcaches and crazy distributed no-sql databases.