Data Allocation and Distributed Query Processing