Задание к курсу Оптимизация баз данных - расчёт балансов
- Все вопросы оформлять в виде Issue
- Все изменения и результаты оформлять в виде Pull Request из собственного fork
MS SQL Server любой версии (предпочтительно 2016 и старше). Допустимо использование иной СУБД при портировании исходного скрипта с учётом конечного диалекта SQL.
- Ознакомиться с документом, описывающим формулы расчёта баланса и примером его изменения
- Ознакомиться со скриптом создания базы данных
- Ознакомиться с программными компонентами (функции, триггера)
- Разработать и применить генератор тестовых данных
- Разработать простой тест на корректность расчёта баланса
Ожидаемый результат - доступная для оптимизации БД с тестовыми данными
- Реализовать индексы, повышающие производительность операций вставки и изменения платежей без модификации программных компонент
В исходной версии балансы обновляются в рамках транзакции целевого действия над платежом - создания или изменения. Предположим, что требования к производительности не выполняются при такой реализации.
Введём две роли пользователей: бухгалтер-оператор и бухгалтер-аналитик.
Оператор - занимается вводом и корректировкой платежей, не имеет доступа к данным о балансах.
Бухгалтер-аналитик - отслеживает балансы и заведённые платежи для принятия решения о предпринимаемых финансовых действиях (какие счета использовать, какие образовались долги и т.д.).
- Дать оценку затрат на выполнения операций расчёта балансов в рамках транзакций создания и изменения платежа. Желательно представить количественную оценку, но допустимо и относительную (к примеру, "90% ресурсов и времени уходит на расчёт баланса"). Чем детальнее, тем лучше.
- Предложить сценарий оптимизации механизмов расчёта. Сценарий должен допускать максимизацию скорости целевых изменений и допускать отложенное вычисление балансов (балансы и данные платежей должны быть согласованы в конечном счёте).
- Оценить недостатки предлагаемого сценария с точки зрения потенциальных пользователей.
- Реализовать предложенный сценарий отложенного вычисления.
- Дать оценку затрат на выполнение операций расчёта балансов в рамках транзакций создания и изменения платежа. Дать заключение о полученном росте производительности, если таковое будет наблюдаться.
- Дать оценку возникшим проблемам и недостаткам, сравнить их с оценками, сделанными при проектировании сценария оптимизации (указать, что сбылось, что неожиданно проявилось и т.д.).
- Дать заключение о преимуществах и недостатках выполненной оптимизации (превосходят ли полученные преимущества те недостатки, которые возникли после оптимизации).