Max
И там тоже 250 лямов доков
Max
А тут 500ms
Max
Запрос на { _id: ”1” } тоже лагает, а на { _id: “10” } нет
Max
"executionStats" : {
"executionSuccess" : true,
"nReturned" : 1,
"executionTimeMillis" : 456,
"totalKeysExamined" : 1,
"totalDocsExamined" : 1,
"executionStages" : {
"stage" : "IDHACK",
"nReturned" : 1,
"executionTimeMillisEstimate" : 459,
"works" : 2,
"advanced" : 1,
"needTime" : 0,
"needYield" : 0,
"saveState" : 1,
"restoreState" : 1,
"isEOF" : 1,
"invalidates" : 0,
"keysExamined" : 1,
"docsExamined" : 1
},
"allPlansExecution" : [ ]
},
yopp
ищите проблему в io
yopp
idhack и works: 2 это значит что монга сделала два юнита работы: 1 запрос в индекс и 1 запрос в хранилище
Max
Max
И сколько времени на что ушло
yopp
нет
Max
Может реплику ресинкнуть заново нужно? С полным удалением всех данных
yopp
нет
yopp
открывайте iostat и смотрите что там
yopp
yopp
вы можете посмотреть на collStat и посмотреть что там wt.cache.bytes read into cache
yopp
вероятно на тормозящей коллекции у вас там постоянно растёт bytes read into cache и pages evicted
yopp
gist или pastie
yopp
и включите indexDetails
Max
https://pastebin.com/CtMc0XR2
сделал)
Max
тут все включено
S
какой gui посоветуете для mongo?
Askhat
Max
Кто-нибудь использует mongodb-mms (ops manager)?
Гена
я как то крутил на виртуалках у себя
Гена
удобная штука
Oleksandr
Здравствуйте,
Подскажите, пожалуйста, сейчас есть MongoDB 2.6.10 на Debian 7. Хотелось бы обновиться до MongoDB 4.0 (чтобы перейти на Ubuntu 18.04, по документации - начиная с Монго 4.0 поддерживает Ubuntu 18). Болезненный ли это процесс, в плане неожиданостей, или изменений в внутренней структуре данных?
Нашел такую ссылку - https://www.percona.com/blog/2018/03/12/mongodb-mass-version-upgrading-upgrading-2-6-3-6/ , в теории можно сразу сделать обновление через экспорт-импорт, или второй вариант шаг-за-шагом обновлять (или это не лучший вариант?)
Ivan
yopp
yopp
Если нельзя даунтайм, то rolling upgrade 2.6 -> 2.8 -> 3.0 -> 3.2 -> 3.6 -> 4.0
Oleksandr
Если нельзя даунтайм, то rolling upgrade 2.6 -> 2.8 -> 3.0 -> 3.2 -> 3.6 -> 4.0
В случае если есть ReplicaSet, делать примерно так:
" Now in reverse order from rs.config().members, take the highest member ID and stop one node at a time
*Stop the mongod node
*Run yum/apt upgrade, or replace the binary files with new ones
*Try to start the process manually, this might fail if you failed to note and fix configuration file changes
*Once started on the new version, make sure replication can keep up with ‘rs.printSlaveReplicationInfo()’
*Repeat this process one at a time until only node “0” (your primary) is done." ?
yopp
yopp
но в целом да, выбирать member id не надо, просто выводите любой secondary
yopp
когда все secondary обновлены, на праймари rs.stepDown() и его тоже обновлять
yopp
если праймари не захочет stepDown то поднять priority одному из обновленных secondary
yopp
при переходе на 3.0 не забудьте включить wiredTiger как storage engine
Oleksandr
Как раз хотел это спросить, если есть 3 сервера в ReplicaSet с данными, обязательно делать mongodump / mongorestore? Или просто следовать документации, но вместо дампа и восстановления - включить wiredTiger (так как данные уже есть в виртулаьной машине)?
Oleksandr
yopp
дамп перед апгрейдом лучше сделать
Oleksandr
это святое)
yopp
это в случае если вы обновляете standalone
yopp
в случае с репликой, переименуйте существующий dbPath и запустите монгу с пустым dbPath чтоб оно сделало initial sync
Oleksandr
yopp
смысла делать restore в этом случае особо нет
yopp
4.2.0 (Aug 13) ◦ 4.0.12 (Aug 12)
Хочешь выступить с докладом на митапе в Москве? Присылай тему!
• Плейграунд для запросов
• Документация
• Официальные курсы по MongoDB
Stable: 4.2.0 ◦ Bugfix: 4.0.12
Legacy: 3.6.14 (Aug 26) ◦ EOL: 3.4.23 (Sep 16, 💀 Jan ‘20)
☠️: 3.2.21 (Dec ’18), 3.0.15 (May ’17)
yopp
Обновления:
3.6.14: https://docs.mongodb.com/manual/release-notes/3.6/#aug-26-2019
3.4.23: https://docs.mongodb.com/manual/release-notes/3.4/#sep-16-2019
Anonymous
Добрый день. Не подскажите, есть ли какие-нибудь инструменты для построения диаграмм БД по схемам монгусовским? А то пм просит диаграммку, а руками очень лень её рисовать.
Max
Но ведь в монге нет схемы)
Anonymous
Так, mongoose же, нет?
Max
Я бы погуглил в сторону mongoose to graphql и построил граф со связями через voyager
Max
https://www.npmjs.com/package/graphql-compose-mongoose
Вот это как вариант вроде
S
извиняюсь за глупый вопрос, методы моделей mongoose все являются асинхронными? Например Test.find, я должен оборачивать в await Test.find?
Aleksandr
ага
Aleksandr
где-то же бд далеко на другом сервере
S
Aleksandr
синхронно туда никак не попасть
Anonymous
Vladislav
Привет, ребята! Есть такой вопрос по индексам: а MongoDB умеет индексировать по конкретным значениям в массивах объектов. Объясню что хочу: есть примерно такой документ в коллекции:
{
"_id": ObjectID("....."),
"sessions": [
{
"session_id": "e5ade208-dabc-11e9-a60f-0a580ae94561", // HASH INDEX
"visit": 0
},
{
"session_id": "d07a9526-dabc-11e9-a60f-0a580ae94561", // HASH INDEX
"browser": "Mozilla"
}
],
"first_name": "Petr",
"last_name": "Pavlov"
}
Так вот на session_id навесить индекс (HASH). С помощью которого можно было бы получить документ по указанному session_id и вытащить first_name и last_name. Можно ли это сделать в монге? А то по документации не очень понятно
yopp
Vladislav
Vladislav
Или опечатка
yopp
и индекс sessions.session_id
Vladislav
Ага, спасибо!)
yopp
в этом случае ключей в индексе будет по количеству индексируемых значений, а не по количеству документов
yopp
1м документов и 10 значений дадут 10м ключей
yopp
да
yopp
(там с ключём несколько сложнее будет, но общий принцип такой, да)
Vladislav
Просто вроде в хэшмэп-структурах обычно допускаются коллизии. То есть для двух одинаковых session_id будет одна и та же хэш-сумма. Следовательно они попадут в один ключ. Эти два документа с одинаковыми session_id. Вроде бы обычно это linkedlist'ом решается. В монге не так?
yopp
это ни чем не отличается от обычного не-уникального индекса. в данном случае разница hashed индекса и простого индекса только в том, что перед записью ключа в хранилище, значение будет хешировано
𝕬𝖗𝖙𝖊𝖒
Всем ещё раз привет. У меня вылазит такая ошибка:
pymongo.errors.OperationFailure: Authentication failed.
При попытке сделать insert_one в таком коде:
conn = pymongo.MongoClient("mongodb://hххххххх:1km9ktq7sbp4ltххuххevrdkqu@ds161397.mlab.com:61397/mydb")
db = conn.mydb
abc = db.users
abc.insert_one(...)
𝕬𝖗𝖙𝖊𝖒
Vadim
точно провайдишь правильный username и password в connection string ?
Vadim
username - hxxxxxxx, password - 1km9ktq7sbp4ltххuххevrdkqu (не забудь поменять 🙈🙈🙈) ?
𝕬𝖗𝖙𝖊𝖒
𝕬𝖗𝖙𝖊𝖒
𝕬𝖗𝖙𝖊𝖒
Vadim
попробу законектиться напрямую с shell'a ?
𝕬𝖗𝖙𝖊𝖒
Vadim
порпобуй поиграться с параметрами authMechanism или/и ssl