user_of_toster
@user_of_toster

Простота решения vs Размазывание бизнес-логики в базе данных?

Есть решение проблемы, которое можно реализовать в двух вариантах
1) SQL-запрос, содержащий в себе агрегацию, case, group by
2) Вручную описывать логику агрегации, case и group by в слое бизнес логики на своём основном ЯП

Первый вариант намного проще, и содержит в себе меньшее количество кода. С другой стороны, очевидно, бизнес логика размазывается по слою базы данных.

Как принять решение, какой вариант выбрать - простой вариант с размызванием бд или сложный, но с чистой архитектурой?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
igolets
@igolets
Программист C#, MSSQL
Сразу оговорка — мой ответ относится к агрегациям. Case отдавать на сторону SQL я не вижу причин. Если причина есть, можем обсудить отдельно.

Касательно агрегаций.

Тут решение вообще не в этом разрезе принимается.
Для начала нужно определиться, насколько сильно будет масштабироваться приложение и каким образом.

Если особого масштабирования не предполагается, то стоит отталкиваться от того, что главная задача SQL в том, чтобы оптимально работать с данными используя индексы и прочие ухищрения. Если логику перенести на "клиента", то работа с данными не будет столь же эффективна.
Поэтому лучше ориентироваться на то, чтобы с SQL на "клиента" гонять как можно меньше данных, а всю остальную обработку уже на "клиенте".

Если предполагается масштабирование экземпляров "клиента" с сохранением единой базы SQL, то тут скорее наоборот, нужно больше логики выносить на клиентов. Тут имеет смысл агрегации на сервере не делать. Но и на "клиенте" тоже каждый раз лучше не делать, лучше всего их как-то рассчитывать заранее и вытаскивать простым select.

Случай, когда масштабировать нужно жестко (и клиента и сервер SQL), рассматривать тут не буду. Что-то мне подсказывает, что те, кому это нужно, эту статью читать не будут ;)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы