Какую «мощь» базы данных вы не используете в трехуровневой архитектуре? Предположительно мы в полной мере используем SQL и все возможности управления данными, подкачки страниц, кэширования, индексации, оптимизации запросов и блокировки.
Я предполагаю, что аргумент - это то, где мы могли бы реализовать то, что мы могли бы назвать "бизнес-логикой". На сервере приложений или в базе данных хранимой процедуры.
Я вижу две причины поместить его на сервер приложений:
1). Масштабируемость. Сравнительно сложно добавить больше баз данных, если база данных слишком занята. Распределение данных между несколькими базами данных действительно сложно. Поэтому вместо этого перенесите бизнес-логику на уровень сервера приложений. Теперь у нас может быть много экземпляров сервера приложений, выполняющих бизнес-логику.
2). Ремонтопригодность. В принципе, код хранимой процедуры может быть хорошо написан, модульный и повторяемый. На практике кажется, что гораздо проще написать поддерживаемый код на языке OO, таком как C # или Java. По какой-то причине повторное использование в хранимых процедурах, кажется, происходит путем вырезания и вставки, и поэтому со временем становится трудно поддерживать бизнес-логику. Я бы признал, что с дисциплиной этого не должно быть, но дисциплины, похоже, сейчас не хватает.
Нам нужно быть осторожными, чтобы по-настоящему использовать возможности запросов к базе данных в полной мере, например, избегая перетаскивания больших объемов данных на уровень сервера приложений.