CHill60
Раньше я работал в среде, которая имела аналогичные требования.
У нас была ночная работа, которая создала отдельную базу данных только для чтения, к которой могли обращаться пользователи/другие клиенты.
У нас также был пользовательский интерфейс, который мог запускать предопределенные запросы либо к живой базе данных, либо к "копируемой базе данных" в зависимости от необходимости ... например, "какая работа осталась невыполненной сегодня "против" какая работа была завершена вчера"
Наш подход состоял в том, чтобы настоять на том, чтобы они прислали нам (ИТ-отделу) свои требования, и мы построили отчеты для них ... они могут быть запущены в режиме реального времени (два типа выходов ... excel или csv) или он был запущен для них в одночасье.
Мы действительно разработали своего рода систему "я хочу этот запрос", которая была очень ограничена в своем поведении (например, избегайте SQL-инъекций).
Мы действительно определили, что соответствующий разговор с "клиентом" может закончиться *контролируемыми* запросами либо к живой базе данных, либо к базе данных MI (копия берется каждую ночь исключительно для того, чтобы пользователи могли запрашивать, не повышая производительности в живой системе). У нас были запущенные программы, которые читали текстовые (xml) файлы, чтобы определить, какой запрос запускать и где хранить результаты.
Я должен сказать, что это была очень успешная система, ей просто нужно было активно управлять.
Поскольку жизнь такова, как она есть, они также обнаружили сторонний инструмент, который позволил бы им создавать свои собственные специальные запросы... они (бизнес-пользователи) думали, что это здорово. Мы (оно) знали, что это было s**t. Это стоило компании много (например, миллионы) денег
TL; DR;.... контролируйте" специальные " запросы, такие как бубонная чума. Пусть пользователи "думают", что они делают ad-hoc, привязывают его так крепко, что они не могут пукнуть.
Прошу прощения за разглагольствования ... это единственная причина, по которой я поседел в свои 30 лет