Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Это лишь пример в ответ на заявления о невозможности в другой теме.
Тогда вопросов больше нет, действительно неплохая демонстрация возможностей языка
EP>Я думаю это от отсутствия массового спроса на работу с СУБД из C++. Мне вот тоже такие задачи не попадаются совсем.
Скорее tradeoffs при работе с БД немного другие и производительность достигается другими методами.
CK>>Проще вынести весь код работающий с БД в отдельный DAL слой и работать с ним.
EP>DAL как реализовывать? На каком языке/библиотеке?
Я как правило предпочитаю нативную клиентскую библиотеку использовать ну и обычные текстовые запросы + prepare для некоторых.
EP>Где делать требуемые проекции, фильтрации? Всё в DAL расписывать?
Да, а что такого? Вынести в отдельный модуль, чтобы все приложение работало через какой-нибудь абстрактный интерфейс и не знало вообще, с чем оно работает, с БД, или еще каким-нибудь источником данных. Тут можно свапнуть БД на другую (например в тестах использовать sqlite вместо постгреса или вообще какой-нибудь nosql). Я еще в одном проекте видел такое — каждый row в результатах запроса конвертировался в boost.property_tree, который передавался кругом. Все ф-ии работающие с данными принимали property_tree, все довольно универсально и гибко было, скажем коду было не важно, пришел property_tree из базы или из POST запроса. Накладные расходы конечно большие, но это сильно лучше чем размазывать работу с БД по всему приложению и при каждом изменении схемы переписывать код и пересобирать.
И что ты понимаешь под фильтрациями? Where statement в SQL или обработку результатов запроса?