1. A computer-implemented method to store application data at an automatically selected location, the method comprising: receiving an application request to store data generated by the application; receiving metadata describing characteristics of the data useful for determining where to store the data; automatically determining one or more data characteristics in addition to the data characteristics received from the application, wherein automatically determining further comprises identifying the application that provided the data; identifying one or more potential storage locations and properties of the identified locations at which the system can store the application data wherein identifying further comprises identifying information related to at least one other application's use of data storage locations to efficiently manage data storage locations across multiple applications; automatically selecting one of the potential storage locations based on the data characteristics and storage location properties; and providing a reference to the application in response to the storage request through which the application can access the data regardless of the data's location, wherein the preceding steps are performed by at least one processor.