A method (800) includes executing an instruction (450) to execute a query for a data block (B), the data block associated with a corresponding memory level (210) of a logarithmic number of memory levels (li) of memory, each memory level (li) including physical memory ( RAMi ) residing on memory hardware (114) of a distributed system (140). The method also includes retrieving a value associated with the data block from an oblivious hash table (600) using a corresponding key, and extracting un-queried key value pairs from the oblivious hash table associated with un-queried data blocks after executing a threshold number of queries for data blocks. The method also includes a multi-array shuffle routine (500) on the extracted key value pairs from the oblivious hash table to generate an output array containing the un-queried key value pairs.
展开▼