Sharding Problem: Joins and Denormalization