Size: a a a

2020 August 13

A

Artem in Go-go!
ну это вариант да, но в нашей ситуации нам важна скорость доступа и анализа для разработчика до них. т.е. в базе мы можем написать select where user = ? and process = ? and date between и сразу все увидеть, как-то поиграть. и еще получается нужен какой-то тулинг что бы собрать все вместе
источник

RS

Roman Sharkov in Go-go!
Artem
ну это вариант да, но в нашей ситуации нам важна скорость доступа и анализа для разработчика до них. т.е. в базе мы можем написать select where user = ? and process = ? and date between и сразу все увидеть, как-то поиграть. и еще получается нужен какой-то тулинг что бы собрать все вместе
ну Mongo и есть база 😅
источник

A

Artem in Go-go!
Roman Sharkov
я бы наверное загонял в mongo db
ну это шило на мыло, оно уже postgres лежит в jsonb поле
источник

RS

Roman Sharkov in Go-go!
Artem
ну это шило на мыло, оно уже postgres лежит в jsonb поле
AFAIK mongo помощнее должен быть в плане масштабируемости скорости записи, но могу ошибаться
источник

DD

Deka Dancer in Go-go!
Artem
ну это шило на мыло, оно уже postgres лежит в jsonb поле
Постгрес поддерживает json
источник

RS

Roman Sharkov in Go-go!
Artem
привет, подскажите советом.

для дебага нужно нужно хранить хттп запросы и ответы (урлы, тело и статусы, мб некоторые хедеры) к разным апишкам. пачки таких запросов объединены по бизнес процессам и пользователям, поэтому чаще всего смотрим на “что произошло при обновлении статуса у пользователя X”.

сейчас мы берем урл, делаем ioutil.ReadAll (у запроса и ответа) и пихаем в колонку jsonb массив из:
[
{url:”example.com”, isRequest: true, body: “<xml> … </xml>”},
{url:”example.com”, isRequest:false, body:”<html>…</html>”, status:200}
{url:”example.com/user/123”, isRequest: true, body: “<xml> … </xml>”},
{url:”example.com/user/123”, isRequest:false, body:”<html>…</html>”, status:200}
]


в таком подходе получается не очень удобно выбирать и смотреть запросы и ответы, даже банально что оно начинает экранировать тело запроса что б засунуть в json строку.

кто как делает в таких случаях? мб у вас есть статья в закладках на эту тему?
ну а для удобства… ну можно написать небольшой фронтенд за пару минут который упростит поиск и улучшит визуализацию
источник

A

Artem in Go-go!
Roman Sharkov
AFAIK mongo помощнее должен быть в плане масштабируемости скорости записи, но могу ошибаться
наш юзкейс больше похож на то что нам нужно какое-то хранилище логов, а не полезных данных. но как raw http складывать в тот же elk или splunk и потом искать в нем?
источник

DP

Daniel Podolsky in Go-go!
Да без проблем же
источник

RS

Roman Sharkov in Go-go!
Artem
наш юзкейс больше похож на то что нам нужно какое-то хранилище логов, а не полезных данных. но как raw http складывать в тот же elk или splunk и потом искать в нем?
тут ИМХО лучше подходит document store аля mongo 🤔

HTTP запрос/ответ это в принципе структурированый документ
источник

A

Artem in Go-go!
Daniel Podolsky
Да без проблем же
а можно подробнее? типо в другой индекс пихать, что бы они были отдельно от основных логов?
источник

с

сонная википедия... in Go-go!
Roman Sharkov
тут ИМХО лучше подходит document store аля mongo 🤔

HTTP запрос/ответ это в принципе структурированый документ
а чем jsonb постгри хуже в этом плане
источник

с

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

с

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

RS

Roman Sharkov in Go-go!
сонная википедия
а чем jsonb постгри хуже в этом плане
я просто им никогда не пользовался
источник

RS

Roman Sharkov in Go-go!
сонная википедия
он умеет в индексы по полям
если так то хорошо
источник

RS

Roman Sharkov in Go-go!
сонная википедия
а чем jsonb постгри хуже в этом плане
просто мне что-то подсказывает что mongo масштабируется проще, но не факт, это предположение
источник

DP

Daniel Podolsky in Go-go!
да конечно, монга спецом для этой задачи и сделана
источник

DP

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

w

whoami in Go-go!
Коллеги, подскажите


хочу в каждом тесте где есть взаимодействие с бд устанавливать подключение к тестовой бд
Знаю что можно через TestMain(m *testing.M) можно выполнить setup и teardown
но как избежать дублирования кода?
источник

w

whoami in Go-go!
и еще - TestMain(m *testing.M) же вызывается один раз на один тест даже если они в одном пакадже?
источник