  In recent years, information retrieval algorithms have taken center stage for
extracting important data in ever larger datasets. Advances in hardware
technology have lead to the increasingly wide spread use of flash storage
devices. Such devices have clear benefits over traditional hard drives in terms
of latency of access, bandwidth and random access capabilities particularly
when reading data. There are however some interesting trade-offs to consider
when leveraging the advanced features of such devices. On a relative scale
writing to such devices can be expensive. This is because typical flash devices
(NAND technology) are updated in blocks. A minor update to a given block
requires the entire block to be erased, followed by a re-writing of the block.
On the other hand, sequential writes can be two orders of magnitude faster than
random writes. In addition, random writes are degrading to the life of the
flash drive, since each block can support only a limited number of erasures.
TF-IDF can be implemented using a counting hash table. In general, hash tables
are a particularly challenging case for the flash drive because this data
structure is inherently dependent upon the randomness of the hash function, as
opposed to the spatial locality of the data. This makes it difficult to avoid
the random writes incurred during the construction of the counting hash table
for TF-IDF. In this paper, we will study the design landscape for the
development of a hash table for flash storage devices. We demonstrate how to
effectively design a hash table with two related hash functions, one of which
exhibits a data placement property with respect to the other. Specifically, we
focus on three designs based on this general philosophy and evaluate the
trade-offs among them along the axes of query performance, insert and update
times and I/O time through an implementation of the TF-IDF algorithm.
