A technique for designing a data storage system in which a configuration for
memory
devices and assignments of data stores to the devices are developed. A data structure
having a plurality of nodes is stored in computer-readable memory. At least some
of the nodes correspond to a physical data storage device having respective attributes.
A plurality of data stores each have data storage requirements, such as capacity
and bandwidth requirements, that are provided as input. The data stores are assigned
recursively into the hierarchy, checking at each node that none of the attributes
are exceeded by the requirements of the store. While the stores are assigned, the
hierarchy may be modified to better accommodate the stores. The possible assignments
which to not violate ant any attributes are compared to each other according to
the goals of the system.