бери любой. так или иначе, удобство любого ОРМ заканчивается на работе с одной таблицей ну и автоматическая генерация схемы из набора структур. всякие склейки делают работу с бд крайне неудобной.
Засада в том, что сопровождать такой код дороже получается. Это как с регекспами. Если ими не пользуешься часто, каждый раз лезешь в мануалы и расшифровываешь «а что хотел сказать афтор сего творения».
Да и сложные запросы на орм весьма сомнительного качества получаются (нереально автоматизировать то, что напрямую зависит от природы данных и их количества ). В результате код превращается в лапшу - где-то через орм, где-то - raw sql. Лично мне проще юзать орм только для работы с одной таблицей.
лишиться можно гораздо большего даже при переходе СУБД на новую мажорную версию, например на MySQL 5 -> 8 (номера 6 и 7 они пропустили) сломали вообще все, что смогли, кажется, марьядиби выросла в первую очередь на этой почве
лишиться можно гораздо большего даже при переходе СУБД на новую мажорную версию, например на MySQL 5 -> 8 (номера 6 и 7 они пропустили) сломали вообще все, что смогли, кажется, марьядиби выросла в первую очередь на этой почве
Это может быть при любом раскладе. Увы, IT это жидкость, если не газ.
У меня тот же вопрос. Подозреваю, ответ будет: писать только на стандартном SQL, избегать особенностей СУБД.
Не в Go, но поддерживаю MariaDB и Postgres в одном проекте. Никаких проблем нет вообще, потому что использую Eloquent.
Единственный затык который вспомнил был с подстановкой в запрос сырого куска подстановки использующим COALESCE и одинарными/двойными кавычками. Пришлось написать что-то типа:
if ($this->settings['db']['driver'] == 'pgsql') {
$labelSQL = $this->db->raw("COALESCE(shipping_labels.label,'') AS label");
} else {
$labelSQL = $this->db->raw('COALESCE(shipping_labels.label,"") AS label');
}
Подобное ветвление единственное на весь проект. Если бы было где-то еще, я бы дописал расширение в ORM которое бы само делало это чтобы не плодить такие ветвления по всему коду. Ради единственного случая смысла не вижу.