Explain the concepts of database sharding and partitioning. When would you choose one over the other?