У меня есть задача, где мне нужно сделать следующее
for fi in files, do in parallel:
for job in jobs, do serially:
read fi into memory from disk
do job(fi), save output to disk
(Особенности задачи делают нецелесообразным распараллеливание внутреннего цикла.)
Есть тысячи files
и около 400 jobs
. Прямо сейчас files
- это набор .csvs, и я сохраняю вывод в кучу csv в другом месте. входные csvs около 30 МБ, выходные данные около 10 МБ
Что мне действительно нужно, так это база данных, но базы данных, о которых я знаю, не могут обрабатывать параллельный ввод-вывод. Так что я просто читаю и сохраняю кучу CSV. Я знаю, что ОС также не может выполнять параллельный ввод-вывод, но она обрабатывает параллельные запросы лучше, чем базы данных, о которых я знаю.
Итак, как лучше это сделать? Я нахожусь на AWS, и сейчас все сидит на томе EBS. Могу ли я ожидать более высокой производительности, передавая все входные данные до корзины S3, загружая их по мере необходимости и загружая выходные данные (файлы составляют пару МБ каждый)?
Или есть какая-то параллельная архитектура базы данных ввода-вывода, которая живет где-то в облаке, о которой я могу узнать, а затем арендовать?
Предложения о том, как подойти к этому, приветствуются.