Multiple applications request data from multiple storage units over a
computer network. The data is divided into segments and each segment is
distributed randomly on one of several storage units, independent of the
storage units on which other segments of the media data are stored. At
least one additional copy of each segment also is distributed randomly
over the storage units, such that each segment is stored on at least two
storage units. This random distribution of multiple copies of segments of
data improves both scalability and reliability. When an application
requests a selected segment of data, the request is processed by the
storage unit with the shortest queue of requests. Random fluctuations in
the load applied by multiple applications on multiple storage units are
balanced nearly equally over all of the storage units. This combination
of techniques results in a system which can transfer multiple,
independent high-bandwidth streams of data in a scalable manner in both
directions between multiple applications and multiple storage units.