
Pawel
10.04.2018
18:06:52

Илья
10.04.2018
18:14:55

Pawel
10.04.2018
18:17:35
пример этого языка в студию пожалуйста

Google

Илья
10.04.2018
18:18:49
Ruby?
C# (.net весь в общем то)
Но все же, не ради холивара я это говорил, а лишь к тому, что в большинстве проектов можно гораздо легче жить на обертке над бд, чем с орм, а конкретно в го пока нет однозначно удобной библиотеки для этого

Pawel
10.04.2018
19:19:00
руби - возможно. Динамическая типизация упрощает дёргалки бд. Но усложняет разработку в целом.
C# - ну нет же, там всё ужасно. У меня нагрузка на сервер сократилась на треть после того, как выкинул говнище на ентитифреймворке и перенёс всё важное в хранимки
а обёртки над бд, но не орм - это о чём речь?

Илья
10.04.2018
19:33:51
Об этом

Sergey
10.04.2018
19:36:50
Об этом
look at https://github.com/go-reform/reform

Илья
10.04.2018
19:37:31
Бля(простите)
Пролистай чуток выше)

Jentry
10.04.2018
19:38:26
Об этом
sqlx не орм, это лишь его часть и далеко на самая удачная, до сих пор открыты весьма критичные issue, годится в целом для простых select/insert

Sergey
10.04.2018
19:38:51
Пролистай чуток выше)
нене.
не нужно пытаться в гошу принести подход динамической типизации. будет больно и будет болеть.
это против дизайна языка, логично, что всё плохо.

Jentry
10.04.2018
19:39:06
есть еще вторая часть к орм - билдер, я юзаю squirrel вместе с sqlx, но по-прежнему это нельзя назвать ОРМ

Илья
10.04.2018
19:39:13

Google

Sergey
10.04.2018
19:39:29
выезжать в обратную сторону - кодогенерировать по схеме бд (причем весьма изобретательно) - может быть крайне полезно.

Jentry
10.04.2018
19:40:01
самое эпичное в sqlx это left join и вот это поведение - https://github.com/jmoiron/sqlx/issues/162

Илья
10.04.2018
19:40:06

Jentry
10.04.2018
19:42:03
ормы дают пользу, тот же sqlalchemy в питоне мощнейшая штука

Sergey
10.04.2018
19:42:29
а я с тобой не спорю. ормы в гошке в стиле питона/руби приносят попаболь.
IDE не помогает, тайп-чекинга в компайл-тайме нет, подземных стуков будет вагон

Илья
10.04.2018
19:42:57

Fastumkruk ✅
10.04.2018
19:43:07

Илья
10.04.2018
19:43:31

Jentry
10.04.2018
19:44:44
в го нет, это очевидный факт)

Илья
10.04.2018
19:45:06
Реформ ближе к полезному да
Для проектов меньше букинг.ком можно и просто намепить моделей на базу

Sergey
10.04.2018
19:47:38

Jentry
10.04.2018
19:50:55

Илья
10.04.2018
19:52:03

Jentry
10.04.2018
19:52:45
Жестоко, а поддерживать потом это как? Есть позитивный опыт или только теоретически?

Sergey
10.04.2018
19:52:56
используйте модерновую систему сборки, чтобы не коммитить кодогенерированное
если его нет в репозитории и генерируется оно автоматически - то и поддерживать не надо.

Google

Jentry
10.04.2018
19:57:36
А что именно вы генерируете, модельки по схеме из базы?

Sergey
10.04.2018
19:58:49

Jentry
10.04.2018
19:59:55
Тогда нужно поддерживать генератор и вопросы по миграциям, звучит сложнее, чем структурки с тегами объявить

Sergey
10.04.2018
20:00:36

Jentry
10.04.2018
20:01:38
Прикольно, а какой-нибудь открытый проект не подскажете посмотреть, как это работает? Или у вас своя кухня и наработки?

Sergey
10.04.2018
20:02:16
открытый не подскажу, увы. :(
мы используем https://github.com/perseas/Pyrseas и bazel

Pawel
10.04.2018
20:15:17

Илья
10.04.2018
20:16:09

Pawel
10.04.2018
20:18:51
а я за максимальный перенос бизнеслогики в хранимки, чтобы клиент бд получал от неё минимум сырых данных. Соотв. и типизировать ничего не надо, а если и надо то совсем чуть чуть и локально. И ещё овер дохера проблем уходит - выкидывается твердотельный кеш, ручное управление пулом соединений и тому подобная срань.

Nick
10.04.2018
20:32:51

Jentry
10.04.2018
20:49:59
Спасибо, хранимки мы уже проходили в сердине нулевых, сейчас бы не очень хотелось вспоминать тот горький опыт

Kirill
10.04.2018
20:50:36
Да ну эти грабли

Pawel
11.04.2018
04:36:01
А масштабировать как?
как и обычный код. plpgsql не така страшен как может показаться с первого взгляда) В крайнем случае - на питоне
У нас посчитали что обще количество человеко часов на сопровождение системы после переписывания логики с EntityFramewirk на plsql в итоге уменьшилось чуть более чем на 50%.

Nick
11.04.2018
05:08:38

Мерлин
11.04.2018
05:16:36
Мы тоже думали, что хранимки — это весело, здорово, и вообще, почему бы благородным донам не перенести больше логики внутрь БД
Сейчас, конечноя, творится АД, и мы попытаемся перенести обратно

Nick
11.04.2018
05:17:21
И как тестировать это все?

Александр
11.04.2018
05:22:16
Юнит-тесты на хранимки:)

Nick
11.04.2018
05:22:39
Отличное решение

Александр
11.04.2018
05:26:03
Ну вьюхи вполне можно использовать, но хранимки вообще нафиг

Google

Pawel
11.04.2018
05:41:20

Алексей
11.04.2018
05:42:41

Nick
11.04.2018
05:43:02
Забавно будет, если кто-то придёт и скажет «нафиг pg, хочу oracle»

Pawel
11.04.2018
05:44:01

Nick
11.04.2018
05:45:21
Отлично, размазать логику
А какой смысл ?

Алексей
11.04.2018
05:45:58

Pawel
11.04.2018
05:46:40
А какой смысл ?
выше обсуждали. проще клинты для бд писать. не надо всякие там твердотельные кеши, не надо вручную рулить пул соединений, проще типизировать данные (или вообще не надо) и т.п. Проще разграничивать права доступа. Меньше нагрузка на сервер.

Nick
11.04.2018
05:51:48
Когда гошник говорит о типизации мне становится больно

Алексей
11.04.2018
05:52:18

Nick
11.04.2018
05:53:00
Да и кэши не обязательны

Pawel
11.04.2018
05:53:50
решает, но не на 100%. иногда прищодится дополнительные коннекты делать и распихивать трафик между ними

Алексей
11.04.2018
05:54:06

Marlik
11.04.2018
05:55:11

Nick
11.04.2018
05:55:43

Pawel
11.04.2018
05:56:43
Да и кэши не обязательны
кеши лучше бы вообще выкинуть, но когда скейлится система, в котороый из бд приходят сырые данные, рано или поздно они возникают.

Алексей
11.04.2018
05:56:44

Google

Alexander
11.04.2018
05:57:24
логика в хранимках - так себе затея, имхо. одно дело засовывать туда тяжелые запросы или группировать по пакетам запросы, которые по смыслу должны лежать в одном пакете, а не раскидывать их по сорцам. но сложную БЛ в хранимки пихать - это самому себе и эксплуатации подкидывать кучу головной боли

Nick
11.04.2018
05:57:58

Alexander
11.04.2018
05:59:18
опять же, надо мне обновить сорцы хранимок. вот условная постгря умеет делать так, чтобы имеющиеся на момент обновления сессии работали со старой версией кода, а все новые сесиии - уже с новой ? или руками нужно это разруливать? или прерывание устраивать ?

Nick
11.04.2018
06:00:15
Страшно представить что там Павел пишет

Marlik
11.04.2018
06:01:33
Чем распарсить вот такое из базы 2018-04-11T03:47:28Z ? Есть практики?
Нужно день вынуть для сравнения.

Pawel
11.04.2018
06:04:31
ни чем не парсить. Использовать sqlx, она выведет из этого time.Time. Гуглить. Вникать вдумчиво

Marlik
11.04.2018
06:04:57

Мерлин
11.04.2018
06:05:11
а что не так пошло?
Чем плохо писать бизнес логику на с огромным трудом тестируемой платформе и динамически типизированном языке с хреновым синтаксисом?
Что может пойти не так?
Да, на go писать сложную бизнес логику не сахар, но всё таки лучше хранимок

Алексей
11.04.2018
06:14:02

Mykyta
11.04.2018
06:14:06

Pawel
11.04.2018
06:17:02

Alexander
11.04.2018
06:17:46

Nick
11.04.2018
06:18:24

Alexander
11.04.2018
06:18:48

Pawel
11.04.2018
06:18:52

Алексей
11.04.2018
06:19:13

Alexander
11.04.2018
06:19:31
так да, симпатичнее

Pawel
11.04.2018
06:20:28

Mykyta
11.04.2018
06:20:30

Alexander
11.04.2018
06:22:07
Ну тут уже нужна Java животворящая
ну в целом нормальный кейс для тырпрайза, кучка микросервисов на чем-то, на той же гошке, со своей простой логикой. если надо выполнить что-то адски сложное, то кладем сообщение в очередь, а оттуда уже ее вычитывает BPMN на джавке, выполняет. ответ кидает обратно в очередь, и там уже его вычитывает кому надо.