Лучший способ хранения 10 - 100 миллионов результатов моделирования из .net(SQL vs. flat file)

Я работаю над проектом, который генерирует порядка 10 - 100 миллионов результатов от моделирования, которое я хотел бы хранить для будущих анализов. Для данных, например, существует несколько уровней организации. В классных комнатах участвуют студенты, которые проводят тесты, которые имеют несколько различных показателей производительности.

Похоже, что мои данные - это граничная линия с точки зрения возможности поместиться в память сразу (учитывая, что для расчета расчета требуется достаточное количество данных в памяти), но у меня нет любая непосредственная потребность в том, чтобы все данные были доступны моей программе сразу.

Я рассматриваю вопрос о том, было бы лучше выводить вычисленные значения в базу данных SQL или в текстовый файл. Я ищу советы о том, какой подход может быть быстрее/проще в обслуживании (или если у вас есть альтернативное предложение для хранения данных, для которых я открыт).

Мне не нужно иметь возможность делиться данными с кем-либо еще или беспокоиться о доступе к данным за годы. Мне просто нужен удобный способ избежать регенерации симуляций каждый раз, когда я хочу выполнить настройку значений.

Ответ 1

Я бы подумал об использовании базы данных - 100 миллионов файлов слишком много для файловой системы без какой-либо схемы классификации, в то время как база данных может легко обрабатывать это множество строк. Вы можете просто сериализовать вывод в столбце BLOB, чтобы вам не приходилось его сопоставлять. Также учтите, что SQL Server имеет доступ к файловым потокам, поэтому это может быть по существу гибридный подход, когда SQL управляет файлами для вас.

Ответ 2

Небрежно, похоже, вам лучше сэкономить результаты каждого запуска моделирования в плоском файле. Это не обязательно текстовый файл - он может быть двоичным.

После одного или нескольких сеансов моделирования файлы могут быть прочитаны и помещены в хранилище данных для последующего анализа.

Ответ 3

Частота обратного конверта для загрузки данных с сервера РСУБД в память составляет примерно 10 тыс. записей в секунду. Если у вас есть записи 100M, и если вы должны использовать все данные в какой-то момент, вы посмотрите примерно на три часа, чтобы загрузить данные. Это до того, как вы сделаете какие-либо вычисления!

Обычные файлы могут быть на порядок быстрее. Вы можете быстро получить текстовый файл; бинарный бит улучшит вашу скорость еще больше за счет удобочитаемости вашего файла данных.