Yura
Aggregate блок на поиск нужных документов быстро отрабатывает?
Yura
Проверьте что на нужные ключи есть индексы
Нуриддин
Да я перед этим создаю индекс по 3 ключам группировке
Нуриддин
Сам индекс создаётся 2 часа. Агригация примерно часов 3-4 а удаление тоже примерно столько
Нуриддин
Тоесть мой индекс стоит дополнить на type? спасибо, я попробую
Yura
В первую очередь у вас должны быть индексы на те ключи, по которым выполняется поиск ($match), т.е type и creditRrn
Nick
Нуриддин
Дмитрий
Привет.
MongoDb 7.0.9. Данные периодически удаляются (не нужны в долгосрочной перспективе). Понятно, что место операционной системе не возвращается без компактирования. Скоро закончится свободное место и, если я правильно понимаю, место, которое было использовано ранее данными, будет переиспользовано. И мне ничего с этим делать не нужно. Я прав?
Viktar
Думаю нет. Но я никогда это не тестировал
Николай
sixzerx
всем привет
есть ли крупные примеры использования mongodb, если необходимы ACID?
какие подводные камни и недостатки использования mongo с транзакциями?
case:
проект с часто меняющейся структурой, но есть крупная логика с фин-операциями
🅰️nimeCoder
sixzerx
🅰️nimeCoder
в целом можно выстроить так чтобы минимизировать юз транз, что в целом было бы лучше
sixzerx
нашел классный бенч, ток он к версии 4.0, но не думаю, что что-то сильно поменялось
Nick
Кейтлин
когда у тебя меняются мелкие значения то SQL
если у тебя меняется раз за разом вся JSON структура то видимо MongoDB 😄
Кейтлин
Амир
Лешка
Амир
Nick
фин операции лучше хранить в SQL
ну "хранить" в "SQL" эт прям ортогональные какието вещи) но если под sql имелись ввиду реляционки, то можно без них прекрасно делать многие вещи, и еще их же можно делать и без транзакций вообще, оставляя на них крайне редкие кейсы, которые к самим фин данным то и не имеют как правило отношения)
🅰️nimeCoder
Yura
Простейший пример: посмотрите на любой чек банк/фин операции. В нем множество полей в виде ключ:значение и с разным типом данных. Кажется проще всю эту информацию хранить в одном документе монги, а не в отдельных таблицах реляционки и выполнять поиск с джоинами.
Владимир
Старый
Старый
🅰️nimeCoder
2тб MySQL
Вроде проблем нет
🅰️nimeCoder
Ну 1.5ТБ мб
Andrey
2тб MySQL
Вроде проблем нет
"все сложности начинаются после 2+ млрд записей "(с) опытным путем
Старый
2тб MySQL
Вроде проблем нет
mysql бывает разным. с myrocks стораджем 2 тб уже давно не продел, да и если мы говорим про галера кластер. то он просто в разы лучше чем всё что есть в пг
sixzerx
мне кажется любую базу можно подложить под любой проект, дело только в том, куда это потом выльется
не нашел ни одного глобал юз кейса использования монги в финоп
бояться может, я бы тоже очковал по результатам бенча выше
ну ок, не вывозит -> маштабируемся, только один хуй один инстанс той же постгры с бэком на фулл транзакциях и сильной изоляцией будет работать как несколько инстансов монги
🅰️nimeCoder
🅰️nimeCoder
Ιβαν
всем привет. Настраиваю pbm для нешардированной монги (реплика-сет из 3 нод). При попытке выполнить pbm status или pbm config выдает сообщение
Error: connect to mongodb: get config server connection URI: mongo: no documents in result
. URI в переменной окружения задан так: PBM_MONGODB_URI="mongodb://pbmuser:pass@localhost:27017/?authSource=admin&replicaSet=rs0"в mongosh с этим URI pbmuser успешно заходит. Сам pbmuser имеет следущие роли:
user: 'pbmuser',
db: 'admin',
roles: [
{ role: 'clusterMonitor', db: 'admin' },
{ role: 'backup', db: 'admin' },
{ role: 'restore', db: 'admin' },
{ role: 'pbmAnyAction', db: 'admin' },
{ role: 'readWrite', db: 'admin' }
],
Кто-то сталкивался? Для шардированных кластеров такие же настройки ожидаемо работают. Ощущение, что пбм считает мой реплика сет шардированной монгой и пытается запросить ее
Версия монги 7.0.12, версия PBM 2.9.1
Нуриддин
Сори, дизинфа
Yura
всем привет. Настраиваю pbm для нешардированной монги (реплика-сет из 3 нод). При попытке выполнить pbm status или pbm config выдает сообщение
Error: connect to mongodb: get config server connection URI: mongo: no documents in result
. URI в переменной окружения задан так: PBM_MONGODB_URI="mongodb://pbmuser:pass@localhost:27017/?authSource=admin&replicaSet=rs0"в mongosh с этим URI pbmuser успешно заходит. Сам pbmuser имеет следущие роли:
user: 'pbmuser',
db: 'admin',
roles: [
{ role: 'clusterMonitor', db: 'admin' },
{ role: 'backup', db: 'admin' },
{ role: 'restore', db: 'admin' },
{ role: 'pbmAnyAction', db: 'admin' },
{ role: 'readWrite', db: 'admin' }
],
Кто-то сталкивался? Для шардированных кластеров такие же настройки ожидаемо работают. Ощущение, что пбм считает мой реплика сет шардированной монгой и пытается запросить ее
Версия монги 7.0.12, версия PBM 2.9.1
export переменной PBM_MONGODB_URI перед запуском агента PBM делали?
Yura
Если конфиг pbm настраивали в pbm_config.yaml, то запускать нужно соответственно, например:
pbm config --file /etc/pbm_config.yaml
Yura
затем только запуск самого pbm-agent
Ιβαν
export переменной PBM_MONGODB_URI перед запуском агента PBM делали?
да, настраивал. При вызове pbm status или pbm config успешно аунтифицируется в базе юзер (видно в логе) . Так же успешно проходит соединение, если вызвать mongosh $PBM_MONGODB_URI
Current Mongosh Log ID: 6891fc12dece6a9f8ce3e840
Connecting to: mongodb://<credentials>@<host>:27017/admin?replicaSet=rs0&appName=mongosh+2.5.1
Using MongoDB: 7.0.12-7
Using Mongosh: 2.5.1
rs0 [primary] admin>
Tim🌵
Всем привет, могу ли я настроить шардинг только на одной машине? По определенным причинам я пока не могу выносить БД за пределы одной машины, а коллекция стала очень большой (более миллиарда записей). Поэтому ищу любые способы оптимизировать запросы, буду благодарен советам 🙏
Yura
Ιβαν
а что в конфиге?
без разницы, хоть с3 хранилище, хоть локальное. Можно даже несуществующий файл ему дать на вход - он просто не обращается в файл, потому что заканчивает выполнение раньше. Утилита обращается в монгу, не получает откуда-то ожидаемых документов и прекращает выполнение
# ls ~/foo.yml
ls: cannot access '/root/foo.yml': No such file or directory
# pbm config --file ~/foo.yml
Error: connect to mongodb: get config server connection URI: mongo: no documents in result
Yura
Yura
Что в конфиге самой монги?
Ιβαν
Yura
yopp
Yura
Ιβαν
Andrey
Andrey
Yura
Ιβαν
спасибо
Yura
Только после выполнения команды:
pbm config --file ~/pbm_config.yaml
если всё корректно и вам отобразится его содержимое, тогда в БД admin появятся коллекции:
pbmCmd
pbmConfig
Cloud
{"t":{"$date":"2025-08-05T03:23:16.952+03:00"},"s":"I", "c":"REPL", "id":3873113, "ctx":"ReplCoordExtern-2","msg":"Cannot select sync source which is not ahead of me","attr":{"syncSourceCandidate":"rnd-eu-d
b3.foo.com:27017","syncSourceCandidateLastAppliedOpTime":{"ts":{"$timestamp":{"t":1754353395,"i":25}},"t":4},"lastOpTimeFetched":{"ts":{"$timestamp":{"t":1754353396,"i":10}},"t":4}}}
{"t":{"$date":"2025-08-05T03:23:17.962+03:00"},"s":"I", "c":"REPL", "id":3873113, "ctx":"ReplCoordExtern-2","msg":"Cannot select sync source which is not ahead of me","attr":{"syncSourceCandidate":"rnd-eu-d
b3.foo.com:27017","syncSourceCandidateLastAppliedOpTime":{"ts":{"$timestamp":{"t":1754353395,"i":25}},"t":4},"lastOpTimeFetched":{"ts":{"$timestamp":{"t":1754353397,"i":18}},"t":4}}}
{"t":{"$date":"2025-08-05T03:23:18.942+03:00"},"s":"E", "c":"ASSERT", "id":23077, "ctx":"ftdc","msg":"Assertion","attr":{"error":"BSONObjectTooLarge: BSONObj size: 22162576 (0x1522C90) is invalid. Size must
be between 0 and 16793600(16MB) First element: start: new Date(1754353398000)","file":"src/mongo/bson/bsonobj.cpp","line":129}}
"ctx":"ftdc","msg":"Assertion","attr":{"error":"BSONObjectTooLarge
ключевой момент
кто-то сталкивался с подобным? в гугле ток 1 страница про это, все что предлагают повысить уровень логироавния
нужен вообще этот ftdc или мб его вырубить нафиг?
что можно сделать?
Yura
{"t":{"$date":"2025-08-05T03:23:16.952+03:00"},"s":"I", "c":"REPL", "id":3873113, "ctx":"ReplCoordExtern-2","msg":"Cannot select sync source which is not ahead of me","attr":{"syncSourceCandidate":"rnd-eu-d
b3.foo.com:27017","syncSourceCandidateLastAppliedOpTime":{"ts":{"$timestamp":{"t":1754353395,"i":25}},"t":4},"lastOpTimeFetched":{"ts":{"$timestamp":{"t":1754353396,"i":10}},"t":4}}}
{"t":{"$date":"2025-08-05T03:23:17.962+03:00"},"s":"I", "c":"REPL", "id":3873113, "ctx":"ReplCoordExtern-2","msg":"Cannot select sync source which is not ahead of me","attr":{"syncSourceCandidate":"rnd-eu-d
b3.foo.com:27017","syncSourceCandidateLastAppliedOpTime":{"ts":{"$timestamp":{"t":1754353395,"i":25}},"t":4},"lastOpTimeFetched":{"ts":{"$timestamp":{"t":1754353397,"i":18}},"t":4}}}
{"t":{"$date":"2025-08-05T03:23:18.942+03:00"},"s":"E", "c":"ASSERT", "id":23077, "ctx":"ftdc","msg":"Assertion","attr":{"error":"BSONObjectTooLarge: BSONObj size: 22162576 (0x1522C90) is invalid. Size must
be between 0 and 16793600(16MB) First element: start: new Date(1754353398000)","file":"src/mongo/bson/bsonobj.cpp","line":129}}
"ctx":"ftdc","msg":"Assertion","attr":{"error":"BSONObjectTooLarge
ключевой момент
кто-то сталкивался с подобным? в гугле ток 1 страница про это, все что предлагают повысить уровень логироавния
нужен вообще этот ftdc или мб его вырубить нафиг?
что можно сделать?
Вот ваша ошибка:
Size must be between 0 and 16793600(16MB)
https://www.mongodb.com/docs/manual/reference/limits/#mongodb-limit-BSON-Document-Size
Cloud
Cloud
ftdc - Full Time Diagnostic Data Capture, то есть система постоянного сбора диагностических данных о состоянии сервера MongoDB
Андрій
Привет, есть коллекция с документами такого вида:
{
"_id": ...,
"characteristics":{
"foo": {
"name_id": ObjectId(),
"value_id": ObjectId(),
},
"bar": ...,
"baz": ...
}
}
и бывают фильтр запросы по типу
{$match: {"characteristics.foo.value_id": ObjectId()}}
Записей полтора миллиона, без индекса такая фильтрация происходит несколько десятков секунд. Таких характеристик у обьектов много, поэтому вешать индекс на все не выглядит целесообразным решением. Есть ли какие то варианты, как можно ускорить поиск малыми жертвами?
Амир
Амир
поиск по всем измерениям херня конечно, а много это сколько?
yopp
Привет, есть коллекция с документами такого вида:
{
"_id": ...,
"characteristics":{
"foo": {
"name_id": ObjectId(),
"value_id": ObjectId(),
},
"bar": ...,
"baz": ...
}
}
и бывают фильтр запросы по типу
{$match: {"characteristics.foo.value_id": ObjectId()}}
Записей полтора миллиона, без индекса такая фильтрация происходит несколько десятков секунд. Таких характеристик у обьектов много, поэтому вешать индекс на все не выглядит целесообразным решением. Есть ли какие то варианты, как можно ускорить поиск малыми жертвами?
Привет! Самый оптимальный вариант немного изменить схему и сложить характеристики в массив где есть поле с типом attr: [{type: “foo”, value_id: “bar”}] и уже по паре attr.type,attr.value_id сделать индекс
https://t.me/mongodb_ru/139325
xzcxzczx
привет ребят вопрос! у меня есть каталог товаров и сами товары
к товарам что лучше сделать Link чтобы был dbref? или просто ObjectID на айдишник каталога?
Vladimir
Tim🌵
Привет, можно ли сделать индекс, который хранит только документы добавленные в последний час?
Амир