Fragment Allocation in Distributed Database Systems