Я занимаюсь разработкой программного пакета для моделирования Монте-Карло, который включает в себя несколько физиков и симуляторов.Мне нужно провести онлайн-анализ, отследить зависимость производных данных от необработанных данных и выполнить запросы типа «дайте мне кривые для температуры> 400 и положения вблизи (x0, y0)».Таким образом, модель данных в памяти довольно сложна.
Приложение написано на Python, каждый результат моделирования моделируется как объект Python.В каждый час это дает ~ 100 результатов (объектов).Большинство объектов имеют тяжелые данные (несколько МБ двоичного числового массива), а также некоторые легкие данные (температура, положение и т. Д.).Общая скорость генерации данных составляет несколько ГБ в час.
Мне нужно какое-то решение для обеспечения устойчивости данных и простой в использовании API запросов.Я уже решил хранить тяжелые данные (числовой массив) в хранилищах HDF5.Я рассматриваю возможность использования MongoDB как для обеспечения устойчивости объектов (только для легких данных), так и для индексации тяжелых данных в HDF5.Постоянство объектов с MongoDB является простым, а интерфейс запросов выглядит достаточно мощным.
Мне известен вариант sqlalchemy + sqlite.Однако потоковая передача тяжелых данных в HDF5, по-видимому, не поддерживается естественным образом в SqlAlchemy, и фиксированная схема обременительна.
Мне известно об этом сообщении ( Поиск в наборе данных HDF5 ), но«Таблице индексов» сама по себе нужны некоторые индексы в памяти для быстрого запроса.
Интересно, есть ли альтернативные решения, на которые я должен обратить внимание, прежде чем приступить?Или есть какая-то проблема, которую я упустил из своего плана?
TIA.