Как написать сложную систему отчетности в понятном виде И иметь возможности отладки на производственном сайте? - PullRequest
0 голосов
/ 03 июня 2010

Вот сценарий:

В настоящее время я работаю над устаревшей системой отчетности для компании, которая собирает данные с датчиков. База данных (SQL-Server 2005) довольно большая (около 500 ГБ), каждый день добавляются сотни МБ. Система выполняет серию ночных заданий, чтобы объединить и преобразовать вновь добавленные данные в промежуточную базу данных, из которой создаются отчеты. Выполнение этих заданий может занять несколько часов и полностью написано на SQL, в результате чего сотни хранимых процедур (некоторые из которых имеют длину до 3000 строк) содержат тонны бизнес-логики. Система находится в процессе разработки в течение почти трех лет и стала кошмаром технического обслуживания.

Моя дилемма:

Мы хотели бы переписать части системы (наиболее срочно ночные задания) на платформе, лучше подходящей для выражения и поддержки сложной бизнес-логики (она же C #). Проблема в том, что нам часто необходимо отлаживать процесс сбора данных, чтобы обнаружить ошибки в системе и (чаще всего) несоответствия в исходных данных. Единственное место, где мы можем обнаружить эти проблемы, это производственная среда. Большим преимуществом текущей реализации в SQL является то, что мы можем просто копировать / вставлять части скриптов для анализа результатов каждого промежуточного шага. Это вряд ли возможно с решением C #, поскольку мы не можем установить Visual Studio в производственной среде.

Наконец, вопрос:

Есть ли у вас какие-либо хорошие предложения о том, как сохранить наши гибкие возможности отладки в производственной среде и найти способ выразить сложную бизнес-логику разумным способом?

1 Ответ

2 голосов
/ 03 июня 2010

В средах, подобных описанной вами, вы должны зеркально отразить производственную среду на сервере, который можно отлаживать до тех пор, пока вы не реорганизуете кодовую базу и не поддержите ее тестовыми примерами.

Вы не надеетесь когда-либо иметь обслуживаемую систему с бизнес-логикой в ​​хранимых процедурах. Был там. Всего кошмар.

Эти две книги полезны для рефакторинга больших систем, которые вы описываете: Эффективная работа с устаревшим кодом от Michael Feathers и Тестовые таблицы xUnit: рефакторинг тестового кода от Gerard Meszaros.

Кроме того, звучит так, будто вы выполняете много операций Extract-Transform-Load (ETL). Существует ряд отличных сред, позволяющих писать преобразования ETL на C #. Шаги ETL хорошо проверяются.

...