Pawel
Именно, это не орм, об этом я и говорю, что можно оойтись без них, сдедав все на статических типах и пописав ручками
так чем в этом плане sqlx хуже аналогичных решений из других языков, вот я что не пойму. ИМХО сама идея типизировать SQL - она не очень, соотв. и реализации у неё все одинаково плохие
Pawel
а я за максимальный перенос бизнеслогики в хранимки, чтобы клиент бд получал от неё минимум сырых данных. Соотв. и типизировать ничего не надо, а если и надо то совсем чуть чуть и локально. И ещё овер дохера проблем уходит - выкидывается твердотельный кеш, ручное управление пулом соединений и тому подобная срань.
Je
Спасибо, хранимки мы уже проходили в сердине нулевых, сейчас бы не очень хотелось вспоминать тот горький опыт
Kirill
Да ну эти грабли
Pawel
А масштабировать как?
как и обычный код. plpgsql не така страшен как может показаться с первого взгляда) В крайнем случае - на питоне
Pawel
У нас посчитали что обще количество человеко часов на сопровождение системы после переписывания логики с EntityFramewirk на plsql в итоге уменьшилось чуть более чем на 50%.
Anonymous
как и обычный код. plpgsql не така страшен как может показаться с первого взгляда) В крайнем случае - на питоне
Да, но нагружать базу какой-то логикой, учитывая что базы плохо масштабируются, решение спорное
Мерль
Мы тоже думали, что хранимки — это весело, здорово, и вообще, почему бы благородным донам не перенести больше логики внутрь БД Сейчас, конечноя, творится АД, и мы попытаемся перенести обратно
Anonymous
И как тестировать это все?
Alexander
Юнит-тесты на хранимки:)
Anonymous
Отличное решение
Alexander
Ну вьюхи вполне можно использовать, но хранимки вообще нафиг
Alexey
а что не так пошло?
Наверное, здорово жить на одной базе?)
Anonymous
Забавно будет, если кто-то придёт и скажет «нафиг pg, хочу oracle»
Pawel
Забавно будет, если кто-то придёт и скажет «нафиг pg, хочу oracle»
пойдёт лесом пока не предоставит тех. и экономическое обоснование. А он не предоставит
Pawel
Наверное, здорово жить на одной базе?)
не на одной. часть логики на Го
Anonymous
Отлично, размазать логику
Anonymous
А какой смысл ?
Alexey
пойдёт лесом пока не предоставит тех. и экономическое обоснование. А он не предоставит
Ну, а вы потеряете деньги. Есть большие кампании в которых по религиозным и не очень убеждениям запрещено все, кроме Oracle, например. Что говорить, нам докер не везде разрешают юзать.
Pawel
А какой смысл ?
выше обсуждали. проще клинты для бд писать. не надо всякие там твердотельные кеши, не надо вручную рулить пул соединений, проще типизировать данные (или вообще не надо) и т.п. Проще разграничивать права доступа. Меньше нагрузка на сервер.
Anonymous
Когда гошник говорит о типизации мне становится больно
Anonymous
Да и кэши не обязательны
Pawel
решает, но не на 100%. иногда прищодится дополнительные коннекты делать и распихивать трафик между ними
Alexey
Да и кэши не обязательны
Когда меньше 1000 rps?
Anonymous
Когда меньше 1000 rps?
По твоей логике pg больше не может?)))
Pawel
Да и кэши не обязательны
кеши лучше бы вообще выкинуть, но когда скейлится система, в котороый из бд приходят сырые данные, рано или поздно они возникают.
Alexey
По твоей логике pg больше не может?)))
По моей 2к вывозил mssql, но правда очень и очень плохо. В зависимости от задач опять-таки.
Alexander
логика в хранимках - так себе затея, имхо. одно дело засовывать туда тяжелые запросы или группировать по пакетам запросы, которые по смыслу должны лежать в одном пакете, а не раскидывать их по сорцам. но сложную БЛ в хранимки пихать - это самому себе и эксплуатации подкидывать кучу головной боли
Alexander
опять же, надо мне обновить сорцы хранимок. вот условная постгря умеет делать так, чтобы имеющиеся на момент обновления сессии работали со старой версией кода, а все новые сесиии - уже с новой ? или руками нужно это разруливать? или прерывание устраивать ?
Anonymous
Страшно представить что там Павел пишет
🎉
Чем распарсить вот такое из базы 2018-04-11T03:47:28Z ? Есть практики?
🎉
Нужно день вынуть для сравнения.
Pawel
ни чем не парсить. Использовать sqlx, она выведет из этого time.Time. Гуглить. Вникать вдумчиво
🎉
ни чем не парсить. Использовать sqlx, она выведет из этого time.Time. Гуглить. Вникать вдумчиво
Понятно, спасибо. Подошло var id int64 var dt time.Time for rows.Next() { err = rows.Scan(&id, &dt) if err != nil { log.Fatal(err) } fmt.Printf("%d, %v\n", id, dt.Day())
Мерль
а что не так пошло?
Чем плохо писать бизнес логику на с огромным трудом тестируемой платформе и динамически типизированном языке с хреновым синтаксисом? Что может пойти не так?
Мерль
Да, на go писать сложную бизнес логику не сахар, но всё таки лучше хранимок
Alexey
Nikita
Да, на go писать сложную бизнес логику не сахар, но всё таки лучше хранимок
Интересно, чем бизнес-логику на го писать не сахар? Я до го на дотнете работал, мне го своей прямолинейностью и простотой даже больше нравится
Pawel
Чем плохо писать бизнес логику на с огромным трудом тестируемой платформе и динамически типизированном языке с хреновым синтаксисом? Что может пойти не так?
ну plpythonu, у него синтакчис наверное лучше. Хотя я честно говоря большой разницы не вижу. plsql только на первый взгляд кобол, к нему быстро привыкаешь
Alexander
Интересно, чем бизнес-логику на го писать не сахар? Я до го на дотнете работал, мне го своей прямолинейностью и простотой даже больше нравится
если писать прямо очень сложную БЛ, то лучше использовать для этого BPM cценарии и движки. на го, я боюсь, сделать реализацию BPMN будет сложновато.
Pawel
А что делать если у меня касандра?)
я тебе ничего не навязываю)
Alexander
так да, симпатичнее
Pawel
Из-за парсинг даты юзать sqlx?) Сомнительное предложение 😂
а что, разве стандартная либа не умеет в TIME column type ? sqlx в любом случае надо использовать вместо стандартной либы
Alexander
Ну тут уже нужна Java животворящая
ну в целом нормальный кейс для тырпрайза, кучка микросервисов на чем-то, на той же гошке, со своей простой логикой. если надо выполнить что-то адски сложное, то кладем сообщение в очередь, а оттуда уже ее вычитывает BPMN на джавке, выполняет. ответ кидает обратно в очередь, и там уже его вычитывает кому надо.
Alexander
изврат
неа, как раз норм. вполне себе стандартный шаблон проектирования
Мерль
Интересно, чем бизнес-логику на го писать не сахар? Я до го на дотнете работал, мне го своей прямолинейностью и простотой даже больше нравится
Go слишком поощряет использование пустых интерфейсов и моментально превращается в питон с ростом размера проекта. И папка util достигает каких-то ужасающих размеров
Мерль
На маленьких проектах всё ок
Daniel
Коллега, это ваши броблемы, а не всеобщие
Alexander
Затопи про хаскель!)
про руст лучше
Nikita
Go слишком поощряет использование пустых интерфейсов и моментально превращается в питон с ростом размера проекта. И папка util достигает каких-то ужасающих размеров
Поощряет, но просто не используй, я к пустым интерфейсам подхожу с идиматической стороны как они используются в стандартной либе
Anonymous
про руст лучше
Не знаю чем лучше
Alexander
чем хаскель! (с)
Anonymous
Сомнительно
Anonymous
Все зависит от задач ж)
Pawel
ТС спросил как распарсить дату. Какую проблему решает sqlx?
распарсить дату из базы, а не из вакуума. конкретно эту и похожие - уменьшает бойлерплейт на интерроп с sql
🎉
https://play.golang.org/p/GeucVTiEqiK как-то так
Ага, спасибо, но я уже нашёл решение, тем более sqlx и так юзаю.
freezlite
как в gorm групировать And и Or условия?
freezlite
ну то есть скобки ставить
🎉
А лучше вот так https://play.golang.org/p/XSsoVAhE6q4
Спасибо, не плохо. Я из базы читаю, а там храню правильно, так что проблем не возникло.
freezlite
есть строка, нужно из ее вставить в другую строку N раз и между повторами поставить разделитель
freezlite
как это сделать?
Nikita
ну или буфер если их много
freezlite
т.е ты предлагаешь создать слайс из одинаковых элементов?