1. A non-transitory computer-readable storage medium comprising instructions that, when executed in a computing device, cause the computing device to carry out steps for assigning applications to datastores in a virtual machine environment, the steps comprising: collecting data related to input-output operations for multiple different applications during execution of the multiple different applications; analyzing the input-output operations data for the multiple different applications to identify data access patterns for the multiple different applications; and assigning the multiple different applications to datastores based on the data access pattern that corresponds to each of the multiple different applications.