Как лучше подходить для хранения и запроса большого набора данных метеорологических данных?

Я ищу удобный способ хранения и запроса огромного количества метеорологических данных (мало ТБ). Больше информации о типе данных в середине вопроса.

Раньше я смотрел в сторону MongoDB (я использовал его для многих своих предыдущих проектов и чувствую себя комфортно с ним), но недавно я узнал оHDF5 формат данных. Читая об этом, я обнаружил некоторые сходства с Монго:

HDF5 упрощает файловую структуру, включая в нее только два основных типа объектов: наборы данных, которые представляют собой многомерные массивы групп однородного типа, которые представляют собой контейнерные структуры, которые могут содержать наборы данных и другие группы. В результате получается действительно иерархический формат данных, подобный файловой системе. Метаданные хранятся в форме определенных пользователем именованных атрибутов, прикрепленных к группам и наборам данных.

Что похоже на массивы и внедренные объекты в Mongo, а также поддерживает индексы для запроса данных.

Поскольку он использует B-деревья для индексации объектов таблиц, HDF5 хорошо работает для данных временных рядов, таких как ряды цен акций, данные мониторинга сети и метеорологические данные 3D.

Данные:

Конкретный регион делится на меньшие квадраты. На пересечении каждого из них расположен датчик (точка).

Этот датчик собирает следующую информацию каждые X минут:

солнечная светимостьрасположение и скорость ветравлажностьи так далее (эта информация в основном одинакова, иногда датчик не собирает всю информацию)

Это также собирает это для различной высоты (0 м, 10 м, 25 м). Не всегда высота будет одинаковой. Также каждый датчик имеет некоторую метаинформацию:

названиеширотаэто в воде, и многие другие

Учитывая это, я не ожидаю, что размер одного элемента будет больше 1 МБ. Также у меня достаточно места в одном месте, чтобы сохранить все данные (насколько я понял, шардинг не требуется)

Операции с данными. Есть несколько способов взаимодействия с данными:

конвертировать в хранилище большое количество: несколько ТБ данных будут переданы мне в какой-то момент времени вформат netcdf и мне нужно будет их хранить (и относительно легко конвертировать его в HDF5). Затем будут предоставляться периодически меньшие части данных (1 Гб в неделю), и я должен добавить их в хранилище. Просто чтобы подчеркнуть: у меня достаточно места для хранения всех этих данных на одной машине.

запросить данные. Часто возникает необходимость запроса данных в режиме реального времени. Наиболее частые запросы: скажите мне температуру датчиков из определенного региона за определенное время, покажите мне данные с определенного датчика за определенное время, покажите мне ветер для какого-то региона для данного временного диапазона. Агрегированные запросы (какова средняя температура за последние два месяца) крайне маловероятны. Здесь я думаю, что Mongo хорошо подходит, но hdf5 +pytables это альтернатива.

выполнить статистический анализ. В настоящее время я не знаю, что именно это будет, но я знаю, что это не должно быть в реальном времени. Так что я подумал, что было бы неплохо использовать hadoop с mongo, но hdf5 с R разумная альтернатива.

Я знаю, что вопросы о лучшем подходе не поощряются, но я ищу советы опытных пользователей. Если у вас есть какие-либо вопросы, я был бы рад ответить на них и буду признателен за вашу помощь.

П.С. Я рассмотрел несколько интересных дискуссий, похожих на мою:HDF-форум,поиск в hdf5,хранение метеорологических данных

Ответы на вопрос(2)

Ваш ответ на вопрос