Здравствуйте, amironov79, Вы писали:
A>Какая пропасть? Логика в базе это именно "ужас-ужас", которым стоит заниматься только в случае крайней необходимости. Базе -- данные, приложению -- логику!!!))
Ну, вы же почему-то доверяете базе обрабатывать логику джойнов? Или вы поклонник NoSQL?
Почему же вы не хотите доверить базе что-то чуть более сложное?
A>Конечно, нужен баланс. Но в любом случае на сервере приложений больше простора для написания логики, начиная от выразительности языка, заканчивая набором библиотек.
Ещё раз подчеркну: абстрактных соображений вроде "больше простора" при принятии архитектурных решений лучше избегать.
Единственный правильный способ — это для каждого конкретного случая сравнивать конкретные характеристики.
Потому что вот предлагаемый вами подход как раз и приводит к неожиданным решениям типа "да я щас подниму результат в джаву и пробегусь по нему регекспом для отбора", которые потом тормозят в продакшне.
А ведь технически ничто не мешает скомпилировать регекс в байткод, и запихать его внутрь СУБД. Где он будет исполняться со скоростью мысли, и сэкономит 90% трафика между СУБД и сервером приложений.
Заодно это позитивно скажется на времени удержания локов (или на шансах нарваться на конфликт при оптимистике).
При этом всю рутинную работу по проверке соответствия версии регекса, которая нужна клиенту, и версии регекса, лежащей в базе, можно возложить на тупую неутомимую машину, а не на рассеянные кожаные мешки.
Но данное решение даже в голову не приходит тем, кто думает мантрами типа "логика в базе — это ужас-ужас".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.