Помимо поиска и чтения, есть вопрос по многопользовательскому доступа к данным, особенно на время записи, атомарные транзакции - одна из причин, почему выбирают сложные реляционные ьд (да это есть и в некоторых nosql).
Если не нужно следить за целостностью данных и искать по атрибутам, только по идентификатору, то подойдёт любая база данных, даже простое хранение файлов на объект с любой сериализацией данных, современные файловые системы отлично работают с миллионом файлов в каталоге (правда при таких объемах я бы все же советовал норм базу), причем никакая реализация бд не будет давать быстрее доступ чем чтение файла.
Круче только хранение данных в каком-нибудь постом формате в блочном устройстве диска или раздела (например идентификатор записи - ее смещение в файле, а там как то хранить ее размер и сами данные), ни одна другая реализация не даст чтение и запись быстрее (под вопросом удаление записей, но и тут есть эффективные решения), ну только что своя реализация кэширования данных, но это очень хардкор...