только в расте)
а то сколько не слышу, чаще всего пишут чуть ли не raw sql запросы, ну или в контексте раста используют что-то вроде sqlx
Сколько людей столько и мнений Я лично за ORM, но нужно учитывать, что при разных архитектурах и командах не всегда оно полезно
ну типа люди стали забывать для чего нужна орм) это же абстракция просто для работы с базой данных которая позволяет тебе не зависить от конкретной базы с использованием орм у тебя есть возможность безболезненно переидти на люблю реляционную базу
вся эта идея с переходом лопается, когда у тебя появляются сложные запросы какие-нибудь рекурсивные квери постгреса, например или еще что, что орм тупо не умеет, а тебе надо тут либо спускаться в нативный sql, либо селектить вообще все и разруливать логику на стороне приложения, что при сколько-нибудь значимых объемах данных подвесит вообще все ну и любое подобное «общее» решение всегда будет менее гибким и оптимизированным, чем конкретный диалект конкретной субд, просто потому что используется не он, а какой-то урезанный общий знаменатель по функционалу. Хороший пример проблемы - jpa из мира жвм. Там в его jpql даже тупо limit не работает, потому что какие-то там недосубд из списка поддерживаемых его не умеют, поэтому страдать должны все
Интересно, куда и зачем мне переходить c Postgres?
ну вон беженцы с оракла на постгрю перебегают, типа нас несколько лет уже полет отличный, но миграция настолько веселая и настолько много было изначально на оракл завязано (там куча хранимок была и тд), что решили просто написать нормальную замену на постгре, которая постепенно забирала бы на себя функционал
Ну.. например на sqlite в юнит тестах. Чтоб in-memory.
тестконтейнеры существуют)
не заметили разницы в перформансе?
не, нас устраивает по бенчам в синтетике конечно оракл быстрее (60к tps против 50к tps постгри) но нам хватает стоит кластер постгри через патрони, в нем нарезаны отдельные бд для каждого микросервиса
Что мне там тестить? Сохранение в базу данных?
да, поведение коннекторов к бд может отличаться даже при изменении минора. Такое ловил с mariadb-connector-c. Минор алпайна в контейнере не был зафиксирован, за алпайном пришла новая версия коннектора. Хорошо, что тесты выявили.
только для этого надо тестить на той же субд, на которой будешь работать иначе ты протестишь коннектор к sqlite, а потом у тебя коннектор к мусклу грохнется в рантайме) а для этого тестконтейнеры и вообще для интеграционных тестов те же брокеры тоже там для них поднимаются
Ну например ты решил вытащить какую-то часть приложения в отдельный сервис и для него вполне подойдёт SQLite чтобы красиво его упаковать в один контейнер и не заставлять девопса поднимать под него ещё контейнер с постгрессом или другой внешней базой
звучит как меганатягивание совы сервис банально может писать в тот же инстанс постгри, но другую базу и не придется ничего настраивать
Да но в интеграции он будет сложнее чем такой же со SQLite
Обсуждают сегодня