Perhaps the most flexible synopsis of a database is a uniform random sample of the data; such samples are widely used to speed
up processing of analytic queries and data-mining tasks, enhance query optimization, and facilitate information integration.
The ability to bound the maximum size of a sample can be very convenient from a system-design point of view, because the task
of memory management is simplified, especially when many samples are maintained simultaneously. In this paper, we study methods
for incrementally maintaining a bounded-size uniform random sample of the items in a dataset in the presence of an arbitrary
sequence of insertions and deletions. For “stable” datasets whose size remains roughly constant over time, we provide a novel
sampling scheme, called “random pairing” (RP), that maintains a bounded-size uniform sample by using newly inserted data items
to compensate for previous deletions. The RP algorithm is the first extension of the 45-year-old reservoir sampling algorithm
to handle deletions; RP reduces to the “passive” algorithm of Babcock et al. when the insertions and deletions correspond
to a moving window over a data stream. Experiments show that, when dataset-size fluctuations over time are not too extreme,
RP is the algorithm of choice with respect to speed and sample-size stability. For “growing” datasets, we consider algorithms
for periodically resizing a bounded-size random sample upwards. We prove that any such algorithm cannot avoid accessing the
base data, and provide a novel resizing algorithm that minimizes the time needed to increase the sample size. We also show
how to merge uniform samples from disjoint datasets to obtain a uniform sample of the union of the datasets; the merged sample
can be incrementally maintained. Our new RPMerge algorithm extends the HRMerge algorithm of Brown and Haas to effectively
deal with deletions, thereby facilitating efficient parallel sampling.
Keywords Database sampling - Reservoir sampling - Sample maintenance - Synopsis