A method for managing data, the method including: receiving at least one group of individual data units over an input device or port, each data unit identified by a key value, with key values of received data units being determined such that the key value identifying a given first data unit that is received before a given second data unit occurs earlier in a sort order than the key value identifying the given second data unit; and processing, by at least one processor, the received data units for storage in a data storage system, the processing including: storing a plurality of blocks of data (506A-I), one or more of the blocks being generated by compressing a plurality of the received data units; providing an index that includes an entry (501A, 501D, 501G) for each of the blocks, wherein one or more of the entries enable location, based on a provided key value, of a block that includes a data unit corresponding to the provided key value; generating one or more screening data structures (502, 504, 506) associated with the stored blocks (506A-I) for screening the blocks to determine a possibility that a data unit that includes a given key value was included in the group of individual data units, with at least one of the one or more screening data structures being generated by determining an initial size for the at least one screening data structure, building the at least one screening data structure while receiving the set of data units stored in the blocks, and reducing the initial size of the at least one screening data structure based on an actual number of distinct key values received; and processing one or more of the one or more screening data structures (502, 504, 506) to determine, based on a given key value, whether to search the stored blocks for a data unit that corresponds to the given key value. receiving at least one group of individual data units over an input device or port, each data unit identified by a key value, with key values of received data units being determined such that the key value identifying a given first data unit that is received before a given second data unit occurs earlier in a sort order than the key value identifying the given second data unit; and processing, by at least one processor, the received data units for storage in a data storage system, the processing including: storing a plurality of blocks of data (506A-I), one or more of the blocks being generated by compressing a plurality of the received data units; providing an index that includes an entry (501A, 501D, 501G) for each of the blocks, wherein one or more of the entries enable location, based on a provided key value, of a block that includes a data unit corresponding to the provided key value; generating one or more screening data structures (502, 504, 506) associated with the stored blocks (506A-I) for screening the blocks to determine a possibility that a data unit that includes a given key value was included in the group of individual data units, with at least one of the one or more screening data structures being generated by determining an initial size for the at least one screening data structure, building the at least one screening data structure while receiving the set of data units stored in the blocks, and reducing the initial size of the at least one screening data structure based on an actual number of distinct key values received; and processing one or more of the one or more screening data structures (502, 504, 506) to determine, based on a given key value, whether to search the stored blocks for a data unit that corresponds to the given key value. storing a plurality of blocks of data (506A-I), one or more of the blocks being generated by compressing a plurality of the received data units; providing an index that includes an entry (501A, 501D, 501G) for each of the blocks, wherein one or more of the entries enable location, based on a provided key value, of a block that includes a data unit corresponding to the provided key value; generating one or more screening data structures (502, 504, 506) associated with the stored blocks (506A-I) for screening the blocks to determine a possibility that a data unit that includes a given key value was included in the group of individual data units, with at least one of the one or more screening data structures being generated by determining an initial size for the at least one screening data structure, building the at least one screening data structure while receiving the set of data units stored in the blocks, and reducing the initial size of the at least one screening data structure based on an actual number of distinct key values received; and processing one or more of the one or more screening data structures (502, 504, 506) to determine, based on a given key value, whether to search the stored blocks for a data unit that corresponds to the given key value.