Ваш коллега прав: 500M записей в БД - это хорошо, я использовал БД с 2G строками, и это было 10 лет назад. Проблема индексации каждого столбца - индексы будут замедлять вставку каждой новой записи, а создание индексов займет много времени. Вы должны определить, какие типы запросов вы будете выполнять, и затем соответствующим образом проиндексировать. При таком количестве записей вы можете получить преимущества за счет нормализации данных - плоская структура часто быстрее, но если у вас есть повторяющиеся длинные текстовые поля, то замена их поисками может дать преимущества для хранения и индексации. Не видя данных, трудно дать более точный совет.
Кстати, если вы работаете с тестами производительности, вы также можете разделить данные на физически отдельные таблицы, возможно, по годам?
Мой следующий шаг (после того, как вы выбрали платформу БД и нашли сервер), загрузите данные и посмотрите, как они работают. Я бы посмотрел на Массовую загрузку ваших данных - я Sql Server, так что Integration Services - это путь. Я бы удостоверился, что у вас есть один уникальный ключ, и если его нет в данных, добавьте столбец идентификаторов. Тогда вы готовы проверить это. SqlExpress бесплатен, поставляется с SSIS, но может работать только с 10 ГБ БД - но этого достаточно, чтобы ознакомиться с проблемами.
Я регулярно выполняю массовую загрузку таблицы строк 4M с 50+ столбцами, и это занимает около 2 минут. Я с радостью переведу это в автономный режим, если вы хотите получить еще один совет.