In many applications, such as sensor networks, finance, and web applications,
data may be available as a transient stream that is not permanently accessible [1].
Often, in these applications, the large volume of data or time constraints prevent
storage of the whole stream before processing. Even if data is locally stored,
certain storage media only allow sequential access in a time-efficient manner.