is known as persistent set this data structure maintains the history of a set of data items ried table index contents are stored in persistent sets specifically all the primary keys that share the same index column value are stored in one persistent set the persistent set allows query operations to retrieve all items in the set and update operations to add or remove items from the set as in the persistent datum the persistent set maintains versions of object membership values that determine if an object is present or absent in a set update operations remove unnecessary objects from this set depending on the same validity principle used in persistent datums a third type of versioned data structure used by the reid system is known as a hash table the hash table is high speed constant time search data structure hash tables are used to maintain tables as mappings from primary keys to persistent datums containing the row values they are also used to maintain table indexes here the hash table maintains mappings from indexed column values to persistent sets of the corresponding primary keys transaction management involves support for commit and rollback operations on transactions all updates performed by a transaction are stored in a rollback buffer on a commit operation all updates enqueued in the rollback buffer are written to the table and table index data structures on a rollback operation this buffer is emptied out the ried transaction manager supports only one transaction at a time this means that every transaction blocks other transactions from updating the ried.