Мое приложение извлекает большой объем данных из внешнего источника - обычно через Интернет - и сохраняет их локально на сервере приложений.
В настоящее время, когда пользователь запускает новый проект, мы настойчиво пытаемся извлечь данные из внешнего источника в порядке, в котором, как мы предсказываем, пользователь захочет получить к нему доступ. Этот процесс может занять 2 - 3 часа.
Кажется, что более разумный подход заключается в предоставлении доступа к данным в стиле ленивой загрузки. Например, если пользователь хочет получить доступ к объекту A, попробуйте сначала извлечь его из нашей базы данных. Если его еще нет, извлеките его из удаленного источника и одновременно заполните базу данных.
Это, в сочетании с продолжением заполнения базы данных в фоновом режиме, даст пользователю гораздо более приятный опыт.
Существуют ли фреймворки, управляющие этим уровнем абстракции? (Мое приложение на Java).
Здесь есть несколько соображений - т. Е. В настоящее время моя база данных обеспечивает целостность отношений - что-то, что может потребоваться отключить, чтобы облегчить этот подход с отложенной загрузкой. Кажется, что параллелизм может вызвать проблемы здесь.
Кроме того, создается впечатление, что сущности и коллекции могут существовать в частично заполненном состоянии - для этого требуются дополнительные данные схемы, чтобы отличать завершенное от частично заполненного.
Насколько я понимаю, это просто агрегированный шаблон репозитория - это правильно, или это более подходящий шаблон, который я должен изучить?