☹️
Нам опять нужны ORM из-за современных БД...
Я не люблю ORM поверх SQL-ных баз.
Основная моя претензия к большинству из них: они создают собственный синтаксис, который надо не только выучить, но и научиться предполагать какой итоговый SQL она сгенерит.
Пример подобной ORM
Prisma.
Вот эта непредсказуемость (а чаще всего еще и не оптимизированность) и то, что мне придется учить что-то еще кроме SQL мне дико не нравится.
Я думал, что смогу навсегда отказаться от ORM и использовать Query Builder / Typed SQL, но тут выяснилась одна очень интересная деталь:
Одним из важных свойств современных БД является горизонтальная масштаьбируемость и автошардирование.
И для таких баз поддержка реляционной консистентности (соблюдение правил реляций, как CONSTRAINT в PostgreSQL) – очень сложная задача (она еще называется Referencial Integrity)
Примером таких баз могут быть
PlanetScale и
YDB
Поэтому они перекладывают эту ответственность на пользователя, а значит мы должны в своем коде описывать какие сущности имеют указатели друг на друга и что делать при изменении / удалении / создании той или иной сущности.
Черт, а ведь это именно то, что есть большинстве ORM, потому что они идут со своей встроенной схемой...
Поэтому, рановато отказываться от ORM, НО точно нужно смотреть в сторону ORM, которые по духу близки самому SQL, например,
drizzle (с ним я еще поэксперементирую и отпишусь что как)
https://github.com/drizzle-team/drizzle-orm