Spiral Storage: Incrementally Augmentable Hash Addressed Storage

Several well known techniques for organising data so that they may be retrieved on some key attribute divide the data space into k equal parts and use a function that maps all possible values of the key attribute onto the integers 0 to k-1. When storing a data item whose key maps to n, we attempt to place the item in or near the n+1'th part of the data space. However, as the number of data items that we wish to store increases, we must increase the size of our data space, modify the mapping function to suit the new value of k, and reorganise the items already stored in the data space. Traditionally this has been an expensive operation, and this has limited the use of hashing to special situations. This paper describes a simple mapping function that minimises the impact of reorganisation. The technique is assessed by calculating how many parts of the data space must be examined in order to read or insert a data item. Depending on the detailed implementation, we find we usually need only access the part that holds or is to hold the data item.