Как: приложение Spring Boot с большой базой данных и быстрым доступом к небольшому подмножеству данных - PullRequest
0 голосов
/ 27 февраля 2020

Это запрос общей рекомендации о том, как организовать хранение данных в моем случае.

Я разрабатываю приложение Spring Boot в Java для сбора и сохранения измерений и предоставить доступ к сохраненным данным через REST API. Я ожидаю около 10 миллионов измерений в час, и мне нужно хранить историю за последние 2-3 месяца. Общее количество сохраненных измерений может достигать десятков миллиардов. Модель данных не сложна, будет около десяти таблиц. Редактирование не планируется, только очистка устаревших данных и очистка. Я планирую использовать Postgres в качестве СУБД.

Будучи сохраненными, данные можно извлекать как таковые (с использованием временных или пространственных фильтров) или использовать для создания агрегированных продуктов данных. Несмотря на настройку производительности, использование индексов и оптимизацию запросов, поиск данных может занять значительное время, но это для исследовательских целей, и я понимаю цену такого количества записей. До этого момента все ясно.

С другой стороны, самые последние измерения (например, собранные за последние десять минут) должны быть доступны немедленно. Ну как можно быстрее. Эти данные должны обслуживаться REST API и отображаться во внешнем приложении в виде графиков, обновляемых в режиме реального времени. Очевидно, что для извлечения данных последних минут из таблицы с миллиардами записей потребуется время, которое неприемлемо для представления.

Что может быть типичным решением для такой ситуации?

Пока я пришел Идея использования двух источников данных: Postgres для истории и в памяти H2 для хранения последних данных, готовых для обслуживания. Таким образом, у меня будет небольшая БД, дублирующая последние данные в памяти. При таком подходе я ожидаю повторного использования моих запросов и классов сущностей. Кажется ли это нормально?

1 Ответ

0 голосов
/ 02 марта 2020

Я нашел решение с несколькими источниками данных, которое идеально подходит для моего случая. Автор этой статьи имеет дело с проектом ", где была необходима база данных в памяти для высокой производительности и постоянная база данных для хранения" .

...