Size: a a a

2020 June 21

RS

Roman Sharkov in Go-go!
сонная википедия
просто на плейграунде не самая свежая версия
в последнем dev.go2go работает нормально
aaaa, сложнааа
источник

ВС

Владимир Столяров... in Go-go!
Кстати, интересно, как будут обеспечивать обратную совместимость в итоге. Для того же sync.Map например
источник

с

сонная википедия... in Go-go!
Юрий Вельмесов
Всем добрый вечер или что у Вас там со временем 😄

Вопрос архитектурного плана:
Я подрубил постгрес к проекту, протестил, работает.

Создал простейший пакет репозитория на получение имени и логина из таблицы юзеров. Чисто для проверки работоспособности с сервером постгрес.

Вопрос такой, как вот это вот все теперь написать по грамотному, по компактнее, чище так скажем, по взрослому.

Вот что я накумекал:
https://play.golang.org/p/MK5zwcOSBsg

Не пинайте только, я только учусь Го 😊

Любую критику воспринимаю адекватно.
или функция UserGetById вызывается один раз?

в целом если это не функция main, то стоит создавать соединение отдельно и прокидывать функции

так же лучше возвращать ошибки, а не отдавать log.Fatal, он закрывает приложение
источник

RS

Roman Sharkov in Go-go!
Юрий Вельмесов
Всем добрый вечер или что у Вас там со временем 😄

Вопрос архитектурного плана:
Я подрубил постгрес к проекту, протестил, работает.

Создал простейший пакет репозитория на получение имени и логина из таблицы юзеров. Чисто для проверки работоспособности с сервером постгрес.

Вопрос такой, как вот это вот все теперь написать по грамотному, по компактнее, чище так скажем, по взрослому.

Вот что я накумекал:
https://play.golang.org/p/MK5zwcOSBsg

Не пинайте только, я только учусь Го 😊

Любую критику воспринимаю адекватно.
не надо постоянно открывать и закрывать связь с базой, оберните в структуру и сделайте функции методами эдакой
источник

с

сонная википедия... in Go-go!
Владимир Столяров
Кстати, интересно, как будут обеспечивать обратную совместимость в итоге. Для того же sync.Map например
sync2
encoding2
...
источник

RS

Roman Sharkov in Go-go!
Владимир Столяров
Кстати, интересно, как будут обеспечивать обратную совместимость в итоге. Для того же sync.Map например
просто напишут новые, обобщённые
источник

ЮВ

Юрий Вельмесов... in Go-go!
Roman Sharkov
не надо постоянно открывать и закрывать связь с базой, оберните в структуру и сделайте функции методами эдакой
Чуть точнее опишу как работает у меня.
Программа, это обычный дефолтный гошный сервер, написанный на net/http работает на определенном порту всегда в виде демона на чистом ubuntu server запускается через systemd.

Т. .е. это обычный сервис в фоне.

Этот сервер принимает get запросы от юзеров.
Какждый запрос роутится на тот или иной хэндлер, а хэндлер в свою очередь вызывает тот или иной репозиторий, а в репозитории планирую описать функции на получение сущностей, юзеры, товары и все такое...

Так вот я правильно понял Вас, что мне по идее нужно один раз в main приконектится к постгрес, а дальше уже прокидывать это соединение во все хендлеры, чтобы при какждом get запросе не инициализировать подключение, а только делать уже сами сапросы query?

Правильно понимаю, типа чтобы не тратилась память и время на инициализацию подключения.

А тогда такой вопрос, а то что оно будет это соединение всегда активно, это не страшно? Я чтот боюсь что оно всегда будет открыто, ведь у меня программа как демон круглые сутки планируется работать.
источник

с

сонная википедия... in Go-go!
я же сказал, там пул соединений, он настраивается
источник

с

сонная википедия... in Go-go!
есть таймауты и лимиты
источник

с

сонная википедия... in Go-go!
источник

с

сонная википедия... in Go-go!
от вечного открытого соединения проблема может быть только одна — можно превысить лимит у постгреса, если таких соединений будет много, его можно увеличить, но тут нужно учитывать что постгрес создает по процессу на соединение
источник

с

сонная википедия... in Go-go!
если соединений нужно очень много, обычно используют pg_bouncer или что-то аналогичное
источник

ЮВ

Юрий Вельмесов... in Go-go!
сонная википедия
я же сказал, там пул соединений, он настраивается
Спасибо огромное за ссылки!

Ну в моем случае, получается нужно всего лишь убрать лимит на время соединения.

А по поводу лимита количества соединений, я так понимаю мне пока не стоит беспокоиться за это, ведь у меня запускается только одна копия сервера и соответственно только одно соединение всегда активно будет.
источник

с

сонная википедия... in Go-go!
это не лимит на время соединения, это лимит на время существования соединения(lifetime)
источник

с

сонная википедия... in Go-go!
лимит количества соединений по умолчанию 0 ,т.е. unlimited, так что все-так стоит побеспокоиться
источник

с

сонная википедия... in Go-go!
одна копия сервера не означает одно соединение, еще раз повторяюсь про пул
источник

с

сонная википедия... in Go-go!
иными словами, для вашего одного объекта *sql.DB может быть создано до MaxOpenConns соединений, при запросе, если существует свободное соединение, оно будет использовано, если же нет, то будет проверка на возможность создать новое, если же и тут нет, то запрос просто встанет в очередь
источник

A

Aikidos in Go-go!
Лучше контрибьютить в компилятор идриса в го. Такими темпами к этому и придут. Не проще сразу это начать делать?
источник

с

сонная википедия... in Go-go!
не лучше
источник

с

сонная википедия... in Go-go!
где вы там идрис увидели
источник