Sharding is the real horizontal scaling out. Replication is to ensure data safety, failover, and high availability. Both are configured in a similar way and work in conjunction, but are conceptually very different!
Sharding is where we distribute the data among various MongoDB instances, not replicate but distribute! So, in Sodibee, we can distribute the authors based on their names.
Note
In real-world scenarios, tweets of different people can be sharded and stored in different servers. Twitter uses MySQL sharding using Gizzard. Read more here (http://engineering.twitter.com/2010/04/introducing-gizzard-framework-for.html)
PostgreSQL provides partitioning which is the same as sharding in MongoDB. Read more about it at http://www.postgresql.org/docs/current/interactive/ddl-partitioning.html.
To give you an idea of how sharding would take place, take a look at the following diagram:
Basically, all names of authors would be stored in different MongoDB instances based on some...