@ddd329

Как можно организовать такие вычисления?

Приветствую!
На данный момент у меня реализована программа для расчета некоторых значений по формулам. Данные берутся из трех разных источников: "Источник 1", "Источник 2" и "Источник 3". В расчетный час, например в 15:00, мы по очереди обращаемся к источникам, запрашиваем у них данные и начинаем расчет, по окончании которого результат сохраняем в базу данных.

Была проблема в том, что у одного источника данные приходят с задержкой в 2 часа, но заказчик согласился с тем, что в 15:00 мы будем рассчитывать данные на 13:00, но все равно система работает не на 100% - всегда где-то да возникают задержки, нужна докачка данных, перерасчет и т.д.

Была сделана вторая версия программы, где я пытался реализовать идею "реактивности", что-то на подобии Excel'я, т.е. когда догружаются данные, то зависимые от них должны пересчитываться. Но что-то реализация получилась не очень...

Теперь думаю сделать третью реализацию на основе событий, т.е. например загрузили данные из первого источника, то в шину публикуем событие "Данные из первого источника загружены за период [от..., до...]", обработчик получает его, делает расчет и публикует новое событие "Такое-то значение было рассчитано ...", другой обработчик получает его, делает свои расчеты и публикует новое событие и т.д.
Как думаете третий вариант жизнеспособен?
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 5
Robur
@Robur
Знаю больше чем это необходимо
Я думаю что да.
Надеюсь это вам действительно поможет.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
еще полезно ознакомиться с default значениями

и книжкой "записки автоматизатора"
Ответ написан
@akonovalov
Программист на компьютере
В банковском ПО (да и в любом бухгалтерском, пожалуй) - часто делается таблица для текущего остатка в БД. Любая проводка, любой документ приводит к пополнению этой таблицы. Разумеется, в разрезе специфики проводки, типа документа, etc. То есть как некий осмысленный промежуточный результат, благодаря которому можно знать остатки на любой момент времени. Не уверен на 100%, что это именно то, что вам нужно, но подумайте в этом направлении, как подобные вопросы уже решались другими.
Ответ написан
begemot_sun
@begemot_sun
Программист в душе.
Ваш последний вариант по сути тот же реактивный подход. Чем он вас не устроил ?
Ответ написан
@grinat
На самом деле так и нужно было делать с самого начала.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы