Добрый день. Интересуют какие нибудь заметки, мнения, статьи на алгоритм реализация подсчета финансов разных счетов с минимальной загрузкой на систему.
Есть несколько счетов, на всех происходят приход, расход или перевод(транзакция) средств.
Я веду таблицу в БД. id, typeTransaction, accountId, datetime, sum, totalsum
Id, Тип транзакции(приход, расход или перевод), Аккаунт, дата, сумма транзакции, окончательная сумма после транзакции
При добавление транзакции в хронологическом порядке - я делаю просто +- к нужно счету.
Вопрос в следующем, как лучше организовать перерасчет при редактировании операции из архив ( скажем три дня назад, когда уже впереди скажет более 1000 операции)
У меня две мысли
1) Обновляем запись в БД + делаем перерасчет ( последовательное сложение и вычитание сумм с даты обновленный записи используя поле sum - foreach и херово sql запросов) - плохо тем, что если отредактировал запись 1 года назад ( ну всякое бывает) то долгий перерасчет, зато точно.
2) Достаем еще неотредактированную запись из БД и сохраняем diffSum - разница между новой и старой sum текущей записью. Обновляем. А потом одним sql запросом set sumTotal = sumtotal + diffSum.
Тут нагрузка минимальная и всего 1-2 SQL запроса.
У кого какие мысли на этот счет и еще идеи в плане надежности цифр и подсчетов? Спасибо!
По сути тотже zenmoney и easyfinance работают безотказно. Хотелось бы узнать какие у них алгоритмы и схемы БД.