Постоянство данных научного моделирования, Mongodb + HDF5?

Я разрабатываю программный пакет для моделирования методом Монте-Карло, в котором задействованы несколько физиков и симуляторов. Мне нужно проводить онлайн-анализ, отслеживать зависимость производных данных от исходных данных и выполнять запросы типа "дайте мне формы волны для температуры>400 и положения около (x0,y0)". Таким образом, модель данных в памяти довольно сложная.

Приложение написано на Python, каждый результат моделирования моделируется как объект Python. За каждый час оно производит ~100 результатов (объектов). Большинство объектов содержат тяжелые данные (несколько МБ двоичных числовых массивов), а также некоторые легкие данные (температура, положение и т.д.). Общая скорость генерации данных составляет несколько ГБ в час.

Мне нужно какое-то решение для сохранения данных и простой в использовании API для запросов. Я уже решил хранить тяжелые данные (числовые массивы) в хранилище(ях) HDF5. Я рассматриваю возможность использования MongoDB для сохранения объектов (только легкие данные) и для индексирования тяжелых данных в HDF5. Персистентность объектов в MongoDB проста, а интерфейс запросов выглядит достаточно мощным.

Я знаю о варианте sqlalchemy+sqlite. Однако потоковая передача тяжелых данных в HDF5 не кажется естественно поддерживаемой в SqlAlchemy, а фиксированная схема громоздка.

Я знаю об этом сообщении( Searching a HDF5 dataset), но сама "индексная таблица" нуждается в некоторых индексах в памяти для быстрого запроса.

Интересно, есть ли альтернативные решения, на которые мне стоит обратить внимание, прежде чем я начну работать? Или есть какая-то проблема, которую я упустил из виду в своем плане?

TIA.

8
задан Community 23 May 2017 в 12:23
поделиться