Design a file sharing system

While on site interview, for system design i was asked to create a file sharing system.
Mention the follwoing:

  • Load balancer for traffic income;
  • Databases as follows:
  1. Tables keep track of all users;
  2. Tables to keep track of what every user shares(index to whom he shares each file);
  3. Partition your databases as you need to chunk the data to different database nodes;
  4. Tables to keep track of partitions for each file( if you want to return it you need to know the databses where the parts are and also the partition indexes as well so you can recombine the data);

You can come with even more improvements for scalabilty here.

Comments (4)