Nick
yopp
всегда создаётся копия страниц с документом, да
Ilia
понял, спасибо
yopp
но тут такой момент: паттерн запроса это универсальная проблема
Nick
yopp
т.е. не важно какое хранилище вы будете использовать, от
yopp
*от проблемы не убежать
Ilia
А где можно почитать, как именно монга работает с документами на уровне хранилища? Детали CoW, как переиспользуется место старых версий документов, вот это все.
yopp
это вам не важно воообще
yopp
хорошо работает, отлично прямо
yopp
99.(9)% что ваши проблемы будут лежать далеко за пределами этой предметной области :)
yopp
такие простые вещи как пропускная способность памяти, дисковой системы и размер «горячей» части данных — вот ваши проблемы
yopp
Ilia
Если можно сразу — значит сразу
yopp
ну если у вас будет update и вы точно знаете _id документа, то всё будет зависеть от двух факторов
yopp
размер активной части индекса и размер активной части документов
yopp
если оба фактора будут помещаться в память, а поток запросов будет укладываться в аппаратные ограничения по пропускной способности, то всё будет быстро
yopp
на моём дохлом mba 13 года с каким-то тухленьким ssd который вообще по sata подключен, монга может ~30к инсертов в секунду делать
yopp
с документами по килобайту примерно
Ilia
Звучит обнадеживающе 🙂 Пошел разбираться и пробовать.
Большое спасибо!
Anonymous
Привет. Порядок документов в коллекции, в которую не добавляются документы, при запросах с пагинацией (limit/skip) без сортировки сохраняется между запросами? А при добавлении / изменении, опять же без сортировки, могут ли "перетасоваться" ранее добавленные документы?
yopp
без указания сортировки порядок не гарантируется
yopp
на практике в рамках standalone инсталяции у вас скорее всего порядко меняться не будет
yopp
нет
Anonymous
Благодарю за ответ.
Nick
изменение дока скорее всего откинет его в конец
yopp
нет
yopp
внутренний id не меняется в течении жизненного цикла документа на одной ноде
Nick
внутренний id?
yopp
да
Nick
давай ликбез
yopp
«коллекция» на самом деле состоит минимум из двух k/v хранилищ. одно для _id и другое для документов
yopp
в k/v для документов в роли ключа используется внутренний индектификатор
yopp
он-же используется в индексе для адресации документа
yopp
по нему-же и происходит natural сортировка
yopp
емнип там был varint который более-менее монотонно возрастает
Егор
ARGUMENTS TO $LOOKUP MUST BE STRINGS, LET: {USER_ID: {$TOSTRING: "$_ID"}} IS TYPE OBJECT
yopp
был какой-то ключ для проекции, чтоб включить отображение внутренного id
Егор
Подскажите пожалуйста из-за чего данная ошибка падает
Nick
спасибо
Nick
скиньте всю часть с лукапом
yopp
🌀Andrei
🌀Andrei
ARGUMENTS TO $LOOKUP MUST BE STRINGS, LET: {USER_ID: {$TOSTRING: "$_ID"}} IS TYPE OBJECT
Nick
а запрос в чем выполняется?
🌀Andrei
Драйвер mongoskin
Nick
версия монги?
🌀Andrei
Nick
синтаксис лупак с пайплайном появился в 3.6
🌀Andrei
Nick
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/#join-conditions-and-uncorrelated-sub-queries
Slava
Добрый вечер, помогите, пожалуйста. Недавно пользуюсь MongoDB, и до этого проблем не было, работал на localhost. Сейчас потребовалось соединиться с базой, мне дали такую строчку, но не понимаю, куда ее вводить, пробовал в mongo cmd - не работает. mongodb+srv://gkola2:<password>@gkolal-nm3q3.mongodb.net/test
Yʉri 🇺🇦
почему монга иногда падает? (раз в пару дней) куда хотя бы смотреть. на скрине последняя часть логов после падения. Есть ощущения что изза нехватки оперативной памяти
Dmitryi
а dmesg что говорит ?
Yʉri 🇺🇦
а dmesg что говорит ?
конкретно монги там не нашел вообще, почему то. но есть пару ошибок "Out of memory" с другими приложенями. а есть способ предотвращения таких случаев кроме повышения памяти? например автоподнятие. потому что такое приходит довольно редко и память редко забивается вся
Artem
Artem
надо устранять причину. а не следствие
Dmitryi
Я бы еще посоветовал глянуть на настройки самой монги и сколько она использует памяти для сортировок и агрегаций
yopp
yopp
Но вообще странно что там бэктрейс
yopp
Можно ещё покрутить размер кеша WT или отключить OOM, но это все полумеры
Ринат
Yʉri 🇺🇦
Можно ещё покрутить размер кеша WT или отключить OOM, но это все полумеры
сама монга врядли у меня нагружается. там довольно простое приложение. падает изза других думаю. попробую что нибудь придумать или как сказали перенести в другое место, спасибо.
я написал, потому что не был уверен, что изза памяти, мб в логах что было бы понятно, я в них не понял просто ничего
yopp
Нет, из логов ничего не понятно.
Yʉri 🇺🇦
yopp
но если на сервере происходят расстрелы в связи с нехваткой памяти, то начинать стоит оттуда
Yʉri 🇺🇦
yopp
От докера больше памяти не станет :)
Yʉri 🇺🇦
если туда вынести приложение вместе с монгой
yopp
Докер тут может помочь только если каждому контейнеру дать квоту на память и при условии что приложения будут в эту квоту укладываться.
Ринат
Yʉri 🇺🇦
yopp
Но приложения в докере будут видеть объём памяти хоста, а не квоту контейнера. Так что это может вызвать другие проблемы
Yʉri 🇺🇦
хм, а в логах монги такое есть. это не изза отсутствия места на самом сервере? но у меня её вроде достаточно🤔
Nick
да тут точно нехватка места на диске
Yʉri 🇺🇦
судя по времени монга как раз и падает когда у меня бекап на сервере делался, в то время похоже бекап забивал всю память на диске, пока старый не удалился ещё
Konstantin
Приветствую.
В какую сторону мне стоит посмотреть если у меня такой юзкейс:
Есть коллекция, и рефы из её документов могут быть в других коллекциях, и нужно считать, допустим, количество рефов на этот документ. Динамически с каждым добавленным/удалённым рефом.
doc {
_id: {ObjectID}
data: {...some data}
timesReferenced: {int}
}
Мнения?
Ilya
yopp, в статьях по Casual Consistancy упоминается про ролл бэке, неасмотря на то, что речи о транзакциях здесь нет. В частности, при записи чего либо в read cocern w: 1 может возникнуть чтение данных, которые были откачены.
То есть данные пришли на primary, там сохранились и дальше, к примеру, начала выполняться операция чтения. В то же время происходит репликация на слейвы, в процессе которой может что-то пойти не так и произойдет ролл бэк?