Каково лучшее решение для хранения и выборки по логам (≈ 1 000 строк/сек)?
Я бы в вашем случае прикрутил некоторый промежуточный буфер.
Если писать сырые данные напрямую в БД есть риск из тормозов БД залочить\затормозить пишущего, либо просто напросто потерять логи.
Мы в аналогичных задачах ставили буфер в виде redis и писали и читали ключи из объекта LIST с  помощью команд  RPUSH \  LPOP.
Таким образом если происходил всплеск количества логов (появление "горячего" контента на портале), и они не успевали записываться в базу мы видели лишь увеличение количества записей в очереди, и то, что данные поступающие на анализ, несколько "староваты". При этом сами данные не терялись, и ни одна из сторон не лочилась.
Если не боитесь оверхеда в 30% на хранении данных и новых продуктов, берите связку logstash + elasticsearch + kibana. 
При помощи logstash читаете лог, парсите его на лету выцепляя только нужные части и отправляете в ES, который все это дело индексирует и складывает с таймстемпами.
А kibana дает красивенький интерфейс для просмотра, с графиками \ круговыми диаграмами и т д.
Думаю, что так и поступлю. Попробую прикрутить MySQL например.
Интересно только, справится ли он с 2000 инсёртов в секунду?