Использование временной базы данных в качестве промежуточного хранилища в конвейере? - PullRequest
1 голос
/ 06 января 2011

У меня есть программа анализа биоинформатики, которая состоит из 5 различных этапов. Каждый шаг по сути представляет собой Perl-скрипт, который принимает входные данные, выполняет магию и выводит несколько текстовых файлов. Каждый шаг должен быть полностью завершен до следующего запуска. Весь процесс занимает около 24 часов на компьютерах с ядром i7.

Одной из основных проблем является то, что на каждом шаге создается около 5-10 гигабайт промежуточных выходных текстовых файлов, необходимых для последующих шагов, и существует множество избыточностей. Например, выходные данные шага 1 используются шагами 2 и 3 и 4, и каждый из них выполняет одинаковую предварительную обработку. Эта структура росла «органически», поскольку каждый шаг развивался независимо. К сожалению, делать все в памяти нам не удастся, поскольку данные объемом 10 гигабайт на диске, загруженные в хеш-массив perl, слишком велики для размещения в памяти.

Было бы хорошо, если бы данные могли быть загружены в промежуточную базу данных, обработаны один раз за шаг и доступны на всех последующих шагах. Данные по существу реляционные / табличные. Некоторым из шагов требуется только последовательный доступ к данным, в то время как другим нужен произвольный доступ к файлам.

Кто-нибудь имеет опыт в подобных вещах?

Какая база данных подойдет для такой задачи? Я использовал и любил SQLite, но масштабируется ли он до размеров 20GB +? Можете ли вы указать postgresql или mysql на интенсивное кэширование данных в памяти? (Я полагаю, что базы данных, написанные на C / C ++, будут гораздо более эффективными с точки зрения памяти, чем perl-хэши / массивы, поэтому большая их часть может кэшироваться в памяти на машине с 24 ГБ). Или есть лучшее решение, не относящееся к rdbms, с учетом накладных расходов на создание, индексацию и последующее уничтожение 20 ГБ + в СУБД для однократного анализа?

1 Ответ

1 голос
/ 06 января 2011

Вы смотрели на некоторые базы данных NoSQL? Кажется, они подходят для вашей работы. Я использовал MongoDB для приложений с высокой пропускной способностью.

Вот сравнение различных nosql dbs .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...