A computer-implemented method for dynamically selecting a storage tier for storing an object from a plurality of storage tiers, the method comprising performing computer-implemented operations for: receiving, at an operating system executing on a computing device from an application executing on the computing device, an unqualified request, which comprises a request that does not specify the location at which the object should be stored, to store an object at an operating system, wherein the unqualified request specifies an optimization factor and one or more object location factors: wherein the optimization factor comprises data identifying an attribute upon which selection of an appropriate storage tier for the object should be optimized, wherein the optimization factor specifies that storage of the object is to be optimized based upon speed of access; and wherein the one or more object location factors comprise one or more of a property of the object, or a property of a storage tier; monitoring communication with the plurality of storage tiers, and computing a storage tier latency and a storage tier bandwidth for each of the plurality of storage tiers, to generate one or more additional object location factors comprising the storage tier latency and the storage tier bandwidth for each of the plurality of storage tiers; in response to the receiving the request, selecting by way of the operating system a storage tier from the plurality of storage tiers for storing the object based upon the one or more additional object location factors and based upon one or more object location factors from the unqualified request, and wherein the selection of the storage tier for storing the object is based upon the optimization factor from the unqualified request; causing the object to be stored at the selected storage tier; updating a lookup table to identify the storage tier at which the object was stored; receiving a subsequent request to retrieve the object; and using data stored in the lookup table to retrieve the object from the storage tier at which the object was stored. receiving, at an operating system executing on a computing device from an application executing on the computing device, an unqualified request, which comprises a request that does not specify the location at which the object should be stored, to store an object at an operating system, wherein the unqualified request specifies an optimization factor and one or more object location factors: wherein the optimization factor comprises data identifying an attribute upon which selection of an appropriate storage tier for the object should be optimized, wherein the optimization factor specifies that storage of the object is to be optimized based upon speed of access; and wherein the one or more object location factors comprise one or more of a property of the object, or a property of a storage tier; wherein the optimization factor comprises data identifying an attribute upon which selection of an appropriate storage tier for the object should be optimized, wherein the optimization factor specifies that storage of the object is to be optimized based upon speed of access; and wherein the one or more object location factors comprise one or more of a property of the object, or a property of a storage tier; monitoring communication with the plurality of storage tiers, and computing a storage tier latency and a storage tier bandwidth for each of the plurality of storage tiers, to generate one or more additional object location factors comprising the storage tier latency and the storage tier bandwidth for each of the plurality of storage tiers; in response to the receiving the request, selecting by way of the operating system a storage tier from the plurality of storage tiers for storing the object based upon the one or more additional object location factors and based upon one or more object location factors from the unqualified request, and wherein the selection of the storage tier for storing the object is based upon the optimization factor from the unqualified request; causing the object to be stored at the selected storage tier; updating a lookup table to identify the storage tier at which the object was stored; receiving a subsequent request to retrieve the object; and using data stored in the lookup table to retrieve the object from the storage tier at which the object was stored.