Size: a a a

GraphQL — русскоговорящее сообщество

2020 March 11

t

toriningen in GraphQL — русскоговорящее сообщество
Art 141
Спасибо. Почитаю.
если ваша система построена на cqrs, то оно у вас уже есть
источник

t

toriningen in GraphQL — русскоговорящее сообщество
cqrs и es очень хорошо с graphql работают, как будто он прямо создан был для них
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Art 141
Запросы в базу могут быть не такими дешевыми. У нас куча работы с географическими данными и некоторые типы сортировок могут быть довольно затратными.
Тогда возможно вам придется поменять базу, например на какой-нибудь elasticsearch. У него есть быстрый односторонний курсор из коробки.
источник

t

toriningen in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Тогда возможно вам придется поменять базу, например на какой-нибудь elasticsearch. У него есть быстрый односторонний курсор из коробки.
мы это решили таки проекторами. для geospatial данных у нас эластик
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
На монге прям совсем печально это будет работать, там курсор отжирал по 10 мб (не знаю как в текущих версиях).
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
1000 курсоров - 10 гигов вынь да полож
источник

t

toriningen in GraphQL — русскоговорящее сообщество
на монге нормально будет, просто ключом брать document id
источник

t

toriningen in GraphQL — русскоговорящее сообщество
ну и индекс
источник

t

toriningen in GraphQL — русскоговорящее сообщество
впрочем, ymmv
источник

t

toriningen in GraphQL — русскоговорящее сообщество
не совсем понимат, откуда берется 10 мб
источник

A1

Art 141 in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Тогда возможно вам придется поменять базу, например на какой-нибудь elasticsearch. У него есть быстрый односторонний курсор из коробки.
Да. Ищем решения. Пока пытаемся в postgres с postgis  уместиться.
Elastic пока не пробовали, но пишут, что у него "Worst for polygon in polygon". А у нас не мало таких задач.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
toriningen
не совсем понимат, откуда берется 10 мб
раньше было, сейчас не нашел
сейчас там завезли startSession() для долгоживущих крсоров
но сколько они памяти жрут, я не нашел - может уже гораздо меньше
источник

t

toriningen in GraphQL — русскоговорящее сообщество
а, вы имеете в виду stateful курсор в смысле бд?
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Art 141
Да. Ищем решения. Пока пытаемся в postgres с postgis  уместиться.
Elastic пока не пробовали, но пишут, что у него "Worst for polygon in polygon". А у нас не мало таких задач.
У нас была монга как основное хранилище, и эластик как поисковое двигло.

Мы просто хуками синкали изменения данных с эластиком.

Или делали полный ресинк, когда что-то меняли напрямую черезе базу, а не модели.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
toriningen
а, вы имеете в виду stateful курсор в смысле бд?
типа того

клиент может пол дня держать пагинацию, и нам надо было курсоры реанимировать
источник

t

toriningen in GraphQL — русскоговорящее сообщество
не, предложенный выше подход как раз stateless :)
источник

t

toriningen in GraphQL — русскоговорящее сообщество
держать сессии - неблагодарное дело...
источник

e

egoarka in GraphQL — русскоговорящее сообщество
Pavel @nodkz
У нас была монга как основное хранилище, и эластик как поисковое двигло.

Мы просто хуками синкали изменения данных с эластиком.

Или делали полный ресинк, когда что-то меняли напрямую черезе базу, а не модели.
>была монга
А сейчас в итоге что?)
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
монга оказалась дорогой по памяти, эластик не подошел (уже не помню почему).

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

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
toriningen
держать сессии - неблагодарное дело...
ага, зато дешево на больших объемах

Вот пообщался с вами. Теперь если похожая задача прилетит, то буду уже гибридный курсор крутить.
- Если есть курсор на базе и он еще не помер, то его дергать.
- Иначе с доп фильтрацией по ключам сортировки и сортировкой
источник