Если я правильно понял вопрос, то ответ: "База данных" – это абстракция в виде технологии, а я говорю об абстракциях в твоем собственном коде
Поэтому БД – это натуральная сложность, а "свои слои абстракции" – это искусственная сложность (
писал об этом в книге)
И зная, что ты любишь ФП, сразу скажу комментарий: когда мы делаем слоистую работу с IO (сначала IO, потом логика, потом IO, и так далее) то это хороший подход, потому что он не про "абстракцию", а про control-flow, где мы хотим больше оставаться в области чистых функций
Пример: паттерн "репозиторий" абстрагирует БД, а если ты делаешь SQL запрос, потом его значение передаешь в чистые функции, потом результат функций опять в SQL запрос – это просто разделение флоу работы с IO
"Зачем всё в строки преобразовывать каждый раз?" – не совсем понял)