Roman
А почему бы не поделиться опытом со всеми? Тем более если вы, скорее всего, использовали его в связке с Go
у Arango довольно хороший официальный драйвер для Go: https://github.com/arangodb/go-driver (за исключением того что они используют контексты в качестве опциональных параметров, это просто ад! https://github.com/arangodb/go-driver/issues/142) Arango это про документы, графы и key-value в одной бд, т.е. multi-model, что имеет определённые преимущества достаточно хорошо описанные в review'шках Arango насколько мне известно шустрее Mongo, и гораздо шустрее Neo4j, начиная с того что он написан на C++, нежели как Neo на жабе. Мы изначально начали с Neo, а потом перешли на арангу в связи с некоторыми лимитациями Neo, например в Arango - edge'ы графа это просто документы, а в Neo они ограничены на примитивные типы и макс. массивы, не более. В Arango можно индексировать вложенный массив, что невозможно в Neo насколько мне известно (про Mongo не знаю) Arango изначально планировалась как графовая + мульти-модель, а монга изначально как документная в которую потом уже завезли графы и без точного анализа могу (наивно) предположить что это может сильно сказаться на дизайне бд у Arango есть query language AQL, который спокойно работает на-мульти-моделе. Cypher в Neo конечно тоже неплох, но увы это чисто графы, не документы и не kv насчёт scalatility много говорить не буду чтоб чат не засирать, на то есть статьи сравнения)
BCmob
Юзаю монгу, хотелось бы повысить скорость сложных выборок. При первом поиске в инете вижу что по тестам аранга в 3-5 раз быстрее и жрёт в два раза больше места, как-то с трудом верится
Roman
https://www.arangodb.com/why-arangodb/arangodb-vs-neo4j/ https://www.arangodb.com/why-arangodb/arangodb-vs-mongodb/
Roman
возможно немного biased, надо больше читать)
Sergey
Не монга но быстро
BCmob
Бери постгресс
Были мысли попробовать, но теперь после просмотра тестов в инете арангидб даже не знаю
Roman
Были мысли попробовать, но теперь после просмотра тестов в инете арангидб даже не знаю
если у тебя классические таблицы то бери postgres, если же документно-графовые данные то бери арангу
Илья
если наркотики потребляешь, то бери Neo4j/dgraph
Roman
если наркотики потребляешь, то бери Neo4j/dgraph
такое ощущение что если возьмёшь нео, то рано или поздно всё-равно на арангу перейдёшь из-за скорости и ограничений
BCmob
Нужно найти время попробовать постгрес
Zarif
Юзаю монгу, хотелось бы повысить скорость сложных выборок. При первом поиске в инете вижу что по тестам аранга в 3-5 раз быстрее и жрёт в два раза больше места, как-то с трудом верится
экспериментирую с postgresql и jsonb типом в нём в качестве полуклассичной БД и nosql через sqlx хорошо пока в go работает. получается хороший гибрид. куча данных можно засунуть в одну колонку jsonb, остальное критичное для поиск в sql в отдельные колонки
Zarif
что с индексацией JSON'а?
из коробки postgresql умеет в jsonb искать по дереву, сравнивать ключи, значения и тд если это имеется ввиду. если имеется ввиду классическая индексация как по обычным типам для быстрого поиска, то по jsonb вопрос ещё не изучал
Aleksandr
есть
Aleksandr
но для случаев чуть сложнее чем простые, надо проверять пойдет ли планировщик по индексу. много нюансов
Roman
но для случаев чуть сложнее чем простые, надо проверять пойдет ли планировщик по индексу. много нюансов
вот поэтому я и грю что лучше брать ту бд, которая изначально планировалась для решения проблемы X (а не в которую со временем её завезли) если твоя проблема это X
Roman
это как про Java и Go, Go изначально дизайнился с учётом конкуретности, Java - нет, туда её позже завезли основываясь то том, что уже было
Roman
но она лучше вродь, @onokonem поправьте если не прав
конечно она лучше, осталось только выяснить для чего))
Daniel
это как про Java и Go, Go изначально дизайнился с учётом конкуретности, Java - нет, туда её позже завезли основываясь то том, что уже было
в яве конкурентность была сразу, причем были треды и зеленые треды. зеленые выпилили в версии 2 (ака 1.2)
.
Почему их выпилили, кстати?
.
И они работали в одном треде?
Stepan
Господа а у нас же может быть несколько разных вэйтгрупп в одном пакете?
Gleb
народ
Gleb
посоветуйте легковесный пакет для jwt
Gleb
без auth
Gleb
просто создание и проверка
Aleksandr
посоветуйте легковесный пакет для jwt
google => golang jwt, первая ссылка
Gleb
слово легковесный я не зря написал, но все равно спасибо)
Gleb
google => golang jwt, первая ссылка
Aleksandr
слово легковесный я не зря написал, но все равно спасибо)
а что, там тяжеловесный? посмотри 2 и 3 ссылки
Aleksandr
это же jwt - это подпись и проверка
Илья
на jwt.io есть список известных библиотек для go
Алексей
Покажите кто то как делается канал в канале
Мерль
@onokonem, ЕМНИП, вы говорили о том, что использовали bolt для логов, но его производительности не хватает а пробовали diskv?
Roman
Болт для логов? Зачем для логов KV?
а в чем предлагаете хранить кроме plain-text? если нужен поиск
Мерль
а в чем предлагаете хранить кроме plain-text? если нужен поиск
на самом деле есть куча вариантов, тот же elastic или монга
Alexander
По-моему там поиск только по индексу, вам просто по ключу искать?
Roman
стыдно признаться но я храню в SQLite (просто черный ящик на случай разборов)
Alexander
Если вариант по ключу устраивает, то badger неплох на запись
Roman
Кликхаус
Классная штука, но не для маленьких проектов
Alexander
Roman
Небольшой отчёт новостей за сегодняшний день: 1. какова дополнительная когнитивная нагрузка const квалификатора? https://github.com/romshark/Go-2-Proposal---Immutability#32-go-is-all-about-simplicity-so-why-make-the-language-more-complicated 2. иммутабельные методы интерфейсов https://github.com/romshark/Go-2-Proposal---Immutability#26-immutable-interface-methods 3. как работают и зачем нужны иммутабельные интерфейсы? https://github.com/romshark/Go-2-Proposal---Immutability#37-why-do-we-need-immutable-interfaces 4. как быть с aliasing'ом слайсов https://github.com/romshark/Go-2-Proposal---Immutability#27-slice-aliasing
Dair
Кто может проконсультировать по локализации Rest API? Не знаю как подступиться к проблеме
Daniel
А?;
Daniel
Какая локализация для api?
Aleksandr
ну там формат даты времени
Aleksandr
не?
Dair
У меня есть список стран на английском языке. Неплохо было бы если пользователь из России получил эту информацию на русском. Собственно и весь пример
Dorian
И где тут про Go
Daniel
Не.
Pavel
Делайте на клиенте. Локализация api - идея абсолютно дурацкая
Норм идея, особенно если клиенты могут быть какие угодно и это открытое АПИ игры, например.
Daniel
If you say so
Pavel
If you say so
Конечно, ответы без какой-либо аргументации так же хороши как и вопросы про сдвинуть дату на полгода, а с шарингом опыта ответ — был бы кладом. Тот же кейс с открытым АПИ — для клиентов удобнее, если они будут просто передавать язык. А не париться с реализацией локализации каждый по своему.
Dair
Вопрос теперь в том, сколько у меня клиентов, и данных, которые нужно перевести. Думаю теперь отдача локализованных данных сервером имеет смысл
Dair
Попробую ещё раз понять тогда
Daniel
Это не api, если оно с локализацией. Это ui. Вы хотите превратить api в ui? Плохая идея...
Pavel
ещё больше ответсвенности на апи? ну ё-моё
Точно, ответственность — это плохо.
Dair
Может я чего-то не понимаю, но как объект {"name": "USA"} в переводе на {"name": "США"} становится ui?
Pavel
Я бы заговнокодил и сделал бы потребителей АПИ счастливее. Потому что пользователи не должны страдать.
Pavel
Пользователи — потребители АПИ.
Dorian
Говнокодить не обязательно, чтобы передавать локализованные данные
Pavel
А при чем тут говнокод?
Топовые люди не одобряют 😆
Dorian
Это вопрос подхода и архитектуры, а не написания кода
Andrii
Тка может сделать /api/countries/ru И так далее для всех возможных вариантов. А на клиенте уже определять положение и идти к нужному эндпоинту?
Dair
Может у кого-нибудь есть пример такого проекта на гитхабе? Было бы здорово
Dorian
Абстрактно спрашиваете
Dair
Реализация API с локализацией на сервере
Pavel
Реализация API с локализацией на сервере
Тебе просто принимать параметр — можешь использовать и путь и параметр и заголовок запроса.