Хранилище данных для больших данных астрофизического моделирования

Я аспирант факультета астрофизики. Я запускаю большие симуляции, используя коды, в основном разработанные другими за десятилетие или около того. Примеры этих кодов можно найти на гаджете http://www.mpa-garching.mpg.de/gadget/ и enzo http://code.google.com/p/enzo /. Это определенно два самых зрелых кода (они используют разные методы).

Результаты этих симуляций огромны. В зависимости от вашего кода ваши данные немного отличаются, но это всегда большие данные. Обычно вы берете миллиарды частиц и клеток, чтобы сделать что-то реалистичное. Самые большие прогоны составляют терабайты на снимок и сотни снимков на симуляцию.

В настоящее время кажется, что лучший способ чтения и записи таких данных — использовать HDF5 http://www.hdfgroup.org/HDF5/, который в основном представляет собой организованный способ использования двоичных файлов. Это огромное улучшение по сравнению с неформатированными двоичными файлами с настраиваемым блоком заголовков (до сих пор вызывают у меня кошмары), но я не могу не думать, что может быть лучший способ сделать это.

Я предполагаю, что здесь проблема заключается в чистом размере данных, но есть ли какое-то хранилище данных, которое может эффективно обрабатывать терабайты двоичных данных, или двоичные файлы являются единственным способом на данный момент?

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

изменить: извините за расплывчатость в отношении проблем. Стив прав, что это может быть просто проблема структуры данных, а не метода их хранения. Мне нужно бежать сейчас, но я предоставлю более подробную информацию сегодня поздно вечером или завтра.

редактировать 2: Чем больше я изучаю это, тем больше понимаю, что это, вероятно, больше не проблема хранилища данных. Основная проблема с неформатированными двоичными файлами заключалась в головной боли при правильном чтении данных (правильное определение размеров и порядка блоков и уверенность в этом). HDF5 в значительной степени исправил это, и более быстрого варианта не будет, пока ограничения файловой системы не будут улучшены (спасибо Matt Turk).

Новые проблемы, вероятно, сводятся к структуре данных. HDF5 настолько эффективен, насколько это возможно, даже если это не самый лучший интерфейс для запросов. Привыкнув к базам данных, я подумал, что было бы действительно интересно/мощно иметь возможность запрашивать что-то вроде «дайте мне все частицы со скоростью выше x в любое время». Вы можете сделать что-то подобное сейчас, но вам придется работать на более низком уровне. Конечно, учитывая объем данных и то, что вы с ними делаете, было бы неплохо работать на низком уровне ради производительности.


person Casey W. Stark    schedule 28.06.2011    source источник


Ответы (1)



РЕДАКТИРОВАТЬ

Обоснование моего отсутствия объяснений / и т. д.:

  • OP говорит: «[HDF5] — это огромное улучшение по сравнению с неформатированными двоичными файлами с настраиваемым блоком заголовков (до сих пор вызывают у меня кошмары), но я не могу не думать, что может быть лучший способ сделать это».

Что значит "лучше"? Лучше структурировано? Кажется, он намекает на «неформатированные двоичные файлы» как на проблему - так что, возможно, это то, что он имеет в виду под словом «лучше». Если да, то ему нужно что-то со структурой — отсюда и первая пара предложений.

  • ОП говорит: «Я полагаю, что здесь проблема заключается в чистом размере данных, но есть ли какое-то хранилище данных, которое может эффективно обрабатывать терабайты двоичных данных, или двоичные файлы — единственный способ на данный момент?»

Да, есть несколько. И структурированные, и "неструктурированные" - хочет ли он структурированности, или он рад оставить их в каком-то "неформатированном бинарном формате"? Мы все еще не знаем, поэтому я предлагаю проверить некоторые распределенные файловые системы.

  • OP говорит: «Если это помогает, мы обычно храним данные по столбцам. То есть у вас есть блок всех идентификаторов частиц, блок всех положений частиц, блок скоростей частиц и т. д. Это не самое красивое, но это самое быстрое для делать что-то вроде поиска частиц в некотором объеме».

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

  • ОП говорит (в комментариях): «Я не знаю, сможем ли мы выдержать удар по io».

Существуют ли требования к IO? Ограничения по стоимости? Кто они такие?

Мы не можем получить что-то даром здесь. Не существует универсального решения для хранения данных. Все, что нам нужно здесь сказать о требованиях, это «много данных» и «я не знаю, нравится ли мне отсутствие структуры, но я не хочу увеличивать свой ввод-вывод, чтобы приспособить какую-либо дополнительную структуру»… так что Я не знаю, какого ответа он ждет. Он не перечислил ни одной жалобы на текущее решение, которое у него есть, кроме отсутствия структуры - и он уже сказал, что не желает платить какие-либо накладные расходы, чтобы что-то сделать с этим... так что....?

person Steve    schedule 28.06.2011
comment
Непонятно, почему минус? Он сказал [] хранилище данных, которое может эффективно обрабатывать терабайты двоичных данных, и мы обычно храним данные по столбцам. Я порекомендовал ему проверить пару масштабируемых систем (Mongo, Raven — обе могут это сделать), а также список распределенных файловых систем в Википедии… может кто-то знает что-то, чего не знаю я? Пожалуйста, просветите меня. - person Steve; 29.06.2011
comment
Вы понимаете, что если бы я сохранил в JSON, проблема была бы только хуже, верно? - person Casey W. Stark; 29.06.2011
comment
Вы смотрели на BSON: mongodb.org/display/DOCS/BSON (я полагаю, ваш комментарий относится, в частности, к MongoDB) - person Steve; 29.06.2011
comment
Да и RavenDB. Выглядит интересно. Я не знаю, сможем ли мы выдержать удар по io. Я думаю, что отрицательные отзывы были больше связаны с отсутствием пояснений к списку продуктов. И их уже нет :) - person Casey W. Stark; 29.06.2011
comment
Ну, мне было бы интересно узнать, что вы уже пробовали, и что из этого не сработало для вас. Похоже, у вас уже есть массивный ввод-вывод — так что вы ищете что-то более эффективное или более масштабируемое? Если вы считаете, что HDF5 недостаточно хорош, как насчет того, чтобы он не соответствовал вашим потребностям? - person Steve; 29.06.2011