Grigory
а хоспаде, понял
Grigory
вообще тут не обязательно мл, это обработка цифровых сигналов, там не обязательно нейронка будет
Alexander
мл не только нейронка
Vladislav
http://127.0.0.1:8080
Grigorij
))
Alexander
https://habr.com/ru/company/otus/blog/487934/
блин, а хорошая статья. не понял только: "Мы провели небольшой эксперимент с различными решениями, и в конце решили использовать несколько листнеров для балансировки нагрузки. Таким образом, мы позволяем ОС балансировать входящие запросы между различными соединениями и уменьшать конфликты." как-то можно несколько лисенеров на один порт повесить?
Alexander
прям очень интересует ответ. на хабре не зареган. да и не факт, что автор ответит
Igor
с чего ты взял что порт 1
Alexander
получается должен быть балансировщик внешний
Alexander
вопрос в том не сталкивается ли он с подобными проблемами. он же один порт будет слушать
Tony
Подскажите, а как проект restapi распределить по версиям в структуре каталогов? Или вообще отдельными проектами лучше?
Tony
api/v1 api/v2
При этом можно настроить vscode на дебаг по f5 для разных версий?
Илья
Имеется в виду структура файлов
Илья
нужно будет настраивать Postman для двух версий, не ide
Tony
нужно будет настраивать Postman для двух версий, не ide
Я не про это. Сейчас нажимаю f5 и студия сама знает, какой go файл стартовать, а если их будет два main.go, то как прописать в настройках студии?
Илья
можно посмотреть структуру проекта?
Илья
у тебя уже есть handler /api/ можно добавить /api/v2/
Илья
если обратная совместимость не нужна, то лучше написать отдельно два проекта = два версии
Tony
Буду пробовать
Maks
Забавно. На литкоде один и тот же код может выполняться с разной скоростью, с разницей даже в х3
Maks
И как же тогда соревноваться.
Patamen
Добрый день Господа Работал кто с MS SQL через Go? На данный момент элементарная заливка строк работает со скоростью 100к строк за 4 минуты Хотелось бы разобраться, как ускорить подобное Есть ли какие-либо возможные библиотеки для быстрой работы с БигДатой в Microsoft SQL через GO? На данный момент пробовал "gorm.io/driver/sqlserver" "gorm.io/gorm" https://github.com/denisenkom/go-mssqldb
Maks
А ты как заливаешь? По одной строке или батчишь?
Maks
Или может делаешь инсерт с множественными валуес
Maks
или одна строка один самостоятельный инсерт
Patamen
А ты как заливаешь? По одной строке или батчишь?
Через горм пробовал CreateInBatches Через драйвер sql пробовал через множественный валуэс, но в какой-то момент я вдалбливался в лимит параметров
Patamen
В целом по сути интересовала бы тема типа SqlBulkCopy, аля C# Я на шарпах писал, но не подходит ситуация в нынешнем стеке технологий - выбивается из общего понимания
Patamen
покажите код с множественный валуэс
Прямо сейчас не под рукой в этом плане Помню, лимит 2100, в который я вдабливался В целом, мне не сколько нужна помощь по коду, сколько какая-либо наводка в плане библиотек/направлений куда смотреть
Patamen
PG хорошая вещь, но экосистема заточена под то, что большинство наших юзеров использует аналитическую прогу, которая в итоге грузит данные в ~10 раз быстрее из MS SQL (Да я знаю звучит костыльно и грустно, но за что мне платят - за то мне платят ;c )
Patamen
так вставка батчами это например 100 рядов за раз, а не 2100
Лимит параметров 2100(т. е если по форматированию параметрическому делать) Если условно таблица состоит из 21 столбца, то 100 строк - это предел Если из 42 столбцов - то пределом является 50
Maks
там даже круче
Это two sum?))))
Patamen
Либо конечно пробовать не параметризированные запросы делать, но мне эта идея тоже не особо нравится(Безопасность базы скажет Салам)
Maks
вообще за 0мс это конечно кринж)
Илья
в любом случае нужно самому подбирать размер вставки
Patamen
в любом случае нужно самому подбирать размер вставки
Какой бы я размер не ставил, быстродействие хромает
Grigory
Это two sum?))))
нет, там задачка чет на разворот списка или типа того
Maks
в целом я понял что ты питонист)))))))))))
Grigory
24. Swap Nodes in Pairs
Grigory
в целом я понял что ты питонист)))))))))))
в том то и прикол что нет)
Grigory
хотел питончик подтянуть, решил что лучше это делать на литкоде
Maks
я помню где то решал задачу, и на го код аналогичный питону не проходил. А весь прикол был в особенности го. Там размер ридера не позволял корректно прочитать данные)
Patamen
Эх Ладно Спасибо всем кто поучавствовал Пойду дальше тыркать Если будут у кого советы по заливке 1-1.5млн строк в MS SQL наиболее оптимальным способом через GoLang, просьба написать, ибо это оч важно для меня
Patamen
Через саму базу
Valeriy
Имеете ввиду COPY FROM csv и тому подобное?
Я так обновлял юзерагентов, где около 70 миллионов записей было
Valeriy
Занимало по разному, локально пару часов, а на серваке, вроде, 30 минут
Patamen
Хм
Patamen
Хорошо Спасибо большое, буду разбираться в этом направлении Надеюсь получится
Evgeny
Valeriy
Хорошо Спасибо большое, буду разбираться в этом направлении Надеюсь получится
q := fmt.Sprintf( `LOAD DATA LOCAL INFILE '%s' IGNORE INTO TABLE %s FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (%s) SET uag_hash=CONV(RIGHT(MD5(user_agent), 13), 16, 10);`, filePath, tableNameTemp, importFields, )
Valeriy
q := fmt.Sprintf( `LOAD DATA LOCAL INFILE '%s' IGNORE INTO TABLE %s FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (%s) SET uag_hash=CONV(RIGHT(MD5(user_agent), 13), 16, 10);`, filePath, tableNameTemp, importFields, )
Как-то так выглядел запрос. uag_hash - это техническое поле, вычисляемое. А так пример запроса думаю полезен будет
Alexander
Через горм пробовал CreateInBatches Через драйвер sql пробовал через множественный валуэс, но в какой-то момент я вдалбливался в лимит параметров
не знаю как с мс скл, но даже на кликхаусе я вижу, что график где по x будет колво записей в батче, по y время на вставку одной записи быстро достигает своего минимума. даже после 1к уже не сильно большое уменьшение, 10к вполне оптимально будет имхо для обычной субд
Alexander
горм я бы не стал для такого юзать точно, если речь не об однократном запуске и на производительность не все равно
Alexander
https://github.com/denisenkom/go-mssqldb
Alexander
packet size - in bytes; 512 to 32767 (default is 4096) - неужели так трудно было это найти?
Alexander
хотя стоп, мб это не то. ок
Alexander
короче, если гуглом твоя проблема не решается - просто пиши в issues. вероятность 95%, что решение найдется
Alexander
еще можно попробовать транзакцию, в ней подготовить стейтмент, и вставить так допустим 10к записей, закоммитить. мб мс скл даст схожую производительность
Alexander
я с ним давно работал и не так. тот же склайт, например, не умеет в мульти инсерт, а только так. в мускуле производительность быстрее одиночной, но просасывает мульти инсерту, в пг не помню
Patamen
я с ним давно работал и не так. тот же склайт, например, не умеет в мульти инсерт, а только так. в мускуле производительность быстрее одиночной, но просасывает мульти инсерту, в пг не помню
Хм В пг все более менее адекватно, но работодателю пг не нравица ;с Сейчас потыкаюсь с конфигурациями, с транзакциями В любом случае очень большое спасибо
the special one
добрый день пытаюсь собрать контейнер с приложением, бд и миграцией баз данных, но мигратор не может получить доступ к бд внутри контейнера: migrate_1 | error: dial tcp: lookup database on 127.0.0.11:53: read udp 127.0.0.1:60775->127.0.0.11:53: i/o timeout docker-compose.yml: https://pastebin.com/CY37gM2V подскажите, что может быть не так
Илья
добавьте    restart: on-failure в migrate
the special one
хост должен указывать на имя контейнера с бд
я использую алиас, но если меняю database на db в command у migrate, то получаю error: dial tcp 172.24.0.2:5432: connect: connection refused