AstraSerg
Full scan — это плохо. Делайте индексы
RapidCodeLab
допустим 2М подписчиков, им все надо отправить письмо/сообщение
RapidCodeLab
очередь на go реализована
Nick
задача не критичная, можно забить
RapidCodeLab
от в постгресе select "по всем" это медленно
RapidCodeLab
или по некторым, но которых много , тоже медленно, индексы есть на полях, которые в условии выборки
RapidCodeLab
вот попробовать монго хочу, но вроде не до конца понимаю решит ли это проблему
RapidCodeLab
насколько я это вижу, если курсор в ответе, это же не занчит что весть массив данных в ответе?
Nick
да, это просто курсор и по запросу драйвер будет запрашивать данные, но это нужно проверять ваш драйвер, может быть конкретно в вашем чтото другое сделано будет
RapidCodeLab
да, я это так и представляю, курсор -> next что то типа такого
RapidCodeLab
а как монго работает с такими запросами по многомиллионной коллекции? то есть если результат десятки миллионов документов?
RapidCodeLab
это тоже медленно? конечно можно протестить, но все таки)
Nick
сложно работает, суть в том что при низкой селективности запроса (читай как возвращается больше 10% записей из коллекции) монга может решить не исользовать индекс и проходит ьпо всей коллекции.
Единственный выход это нормальные запросы и нормальные инедксы по ним, но если постгра вам не помогает, то либо все плохо на ваших данных, либо вы не умеете готовит ьи в монге будет тоже самое.
Еще можнон посмотрет ьв сторону покрывающих индексов
Nick
пр оселективность это относится вообще ко всем базам
RapidCodeLab
чуть раскрою пример, есть подписчики, у подписчиков есть поле страна, нужно выбрать подписчиков из n стран, на поле страна есть индекс, кода таблица в посгресе менее 1-2М это работает нормально, когда больше, это просто по 40-50 сек на селект
RapidCodeLab
а еще подписчики могут быть не уникальными, у них есть хеш по ip+ua и если еще distinct сделать, то вообще все ложится камнем
RapidCodeLab
про больше 10% из коллекции я понял
RapidCodeLab
а что, если нужно 90% докуменов из коллеции, это низакая селективность?
Nick
высокая селективность - результат запроса одна запись
90% - это не то что низкая, это никакая селективность
Nick
проще все вычитать
RapidCodeLab
пардон, а как работать с данными то со всеми( или с большинством)в разумные сроки, что то я уже запутался)
RapidCodeLab
в постгрес пока сделал limit/offset в разных потоках, как то работает, но не нравится как
RapidCodeLab
как в монге работать по всей (большой) коллекции, например, какой-то есть кейс православный?)
Nick
никакой, вам нужны все данные, вы вытаскиваете все данные, это чтение с дисков, ускоряйте чтение, ssd там или вообещ инмемори
RapidCodeLab
при чем два разных инстанчса приложения могут пойти по всейц базе, и даже не два, а 10
Nick
Nick
видимо ен разные, раз им нужны те же данные в таком же объеме
RapidCodeLab
данные не изменяются, инстансы делают разные рассылки по одной базе , параллельно\
RapidCodeLab
а какой вариант есть, чтоб не получать все данные?
RapidCodeLab
если нужно отправить сообщения всем
Nick
никакой, вам нужны все данные
RapidCodeLab
если вы разбираетесь, скажите плиз, как будет проходить процесс выборки "всех" данных, например если я ограничю пул резултатов n числом
RapidCodeLab
то есть курсор будет блокироваться, пока очередь полна, и по идее это не должно io напрягать сильно7
RapidCodeLab
по мере разбора очереди, курсор будет дополнять очередь, как то так)
Nick
тогда чем отличается в вашем случае получение данных из курсора от получения данных из очереди? это же одно и то же
Nick
а в чем пробелма вообще?
RapidCodeLab
проблема в скорости select в постгрес(
RapidCodeLab
даже с offset/limit
RapidCodeLab
ghb ,jkmijq ,fpt
RapidCodeLab
при большой базе
AstraSerg
У вас задача простейшая. Просто сделайте полный селект, потом выбирайте из курсора по одному документу и шлите, если страна подходящая. БД в вашем случае не может быть бутылочным горлышком. Если производительность не достаточная, ускоряйте бакенд (диски)
RapidCodeLab
Так вот в постгресе то не так
AstraSerg
Попробуйте в https://atlas.mongodb.org засунуть свои данные. Там бесплатно
RapidCodeLab
Липнет все на селекте
RapidCodeLab
Ждёт по 40 сек
RapidCodeLab
Ssd, оперативная на уровне
RapidCodeLab
Вот моего протестирую, отпишу, пока просто спросил)
RapidCodeLab
Nick
Ждёт по 40 сек
советую сгонят ьв чат постгры и сразу скульники им закинуть, может что дельное посоветуют
RapidCodeLab
ок, ок, но все таки, вот я делаю find() с условием, что присходит? я получаю курсор, и когда по нему прохожу, как это происходит внутри7 есть какая-то статья может?
Nick
ссылочками не помогу, в общем случае можно почитать внешне https://docs.mongodb.com/manual/reference/method/db.collection.find/#behavior
Nick
остальное сырцы
Сергей
как можно получить простой обьект с данными а не инстанс модели, данные есть в поле _doc. Из поля _doc прямо можно брать?
Сергей
а нашел выход toJSON() применил к результату выборки
Alexander
парни, есть коллекция с question филдом, есть на фронте строка поиска по этим questions.
Поиск по $text индексу (а-ля фаззи).
Но, кроме этого псевдо-фаззи результата надо вернуть и остаток "вопросов", а это уже второй запрос.
Осотрировать всю эту хрень надо по score от $text сёрча.
Далее уже склеиваем два массива с перехлестом.
Вопрос: можно ли это в одном запросе сделать?
Nick
в монге сть скор?
Alexander
Alexander
baseQuery.query.$select = { score: { $meta: 'textScore' } },
Иван
Доброго времени суток, народ подскажите пожалуйста использую mongoose, никак не могу понять, как сделать правильно. У меня есть массив объектов, собираемый на стороне, мне по полю id нужно найти в mongo запись, если ее нет, то добавить. Вот так не робит
Eugene
Yʉri 🇺🇦
Можно ли использовать монгу если я собираюсь делать полнотекстовый поиск по ± миллиону документов? И есть ли какие-то рекомендации для организации этого. (Проект скорее для обучение)
Gor
Gor
А уже после поиска - работать с данными с монго по _id
Yʉri 🇺🇦
yopp
yopp
В монге есть текстовый индекс, но возможности его ограничены. Но монга это документное хранилище и если вам не страшны слова вроде стеммера и морфологии, то в монге можно вообщем-то соорудить очень много разного. Ну или использовать внешний индекс
Bro
Очень базовые вещи текстовой индекс может
Bro
Лучше какой нибудь эластик юзать
Yuriy
Коллеги, посоветуйте free клиент для Windows... кроме консоли... поставил 30 дневный Studio 3T, рассматриваю ещё усечённый NoSQLBooster, а есть что нибудь достойное и бесплатное ? 😊
Vova
Eugene
Eugene
а то они попутали столько бабла просить за не самый лучший по юзабилити браузер бд
Eugene
и да, я использую его только в некоммерческих целях, а вообще предпочитаю компасс
Max
Привет, есть коллекция с такимим сущностями:
Max
Nick
очень херовые названия полей