yopp
читаешь 32 битный integer в начале файла, это будет размер первого документа, помоему включая эти 4 байта
yopp
проматываешь размер, будет следующий заголовок
yopp
и так до конца файла
Constantin
Спасибо большое за помощь и идеи, не буду писать парсер, руками нашел.
Посмотрел код, предположил коллекцию, дальше предположил несколько диапазонов, и нашел документ. Массив-переросток оказался проблемой
AstraSerg
bebebe
коллеги, приветствую
хочу сделать mongorestore, команда моя выглядит так:
mongorestore --host mongodb-replicaset:27017 --username user1 --password 'pass1' --nsInclude='*' --nsFrom='project_genimg_dev.*' --nsTo='project_genimg.*' --gzip --archive=/tmp/project_genimg_dev.db
на что получаю что не хватает пермишеннов у пользователя user1 в project_genimg.
2018-09-26T11:35:27.313+0000 Failed: project_genimg.cars: error reading database: not authorized on project_genimg to execute command { listCollections: 1, cursor: { batchSize: 0 }, $db: "project_genimg" }
но когда я пытаюсь по документации создать пользвоателя у котрого эти пермишенны были бы, я получаю что нет существующий роли restore в project_genimg, хотя это вроде как built-in роль? или она только в базе admin работает?
rs0:PRIMARY> use project_genimg
rs0:PRIMARY> db.createUser({user: "user1", pwd: "pass1", roles: [{role: "dbOwner", db: "project_genimg"}, {role: "restore", db: "project_genimg"}, {role: "backup", db: "project_genimg"} ]})
2018-09-26T11:27:21.972+0000 E QUERY [thread1] Error: couldn't add user1: No role named restore@project_genimg :
мне эту роль restore руками что-ли надо создавать? :/
bebebe
речь идет о 3.6.8
bebebe
собственно смотрю сюда: https://docs.mongodb.com/v3.6/reference/built-in-roles/
Vova
или она только в базе admin работает?
Да, там в доке так и написано, что существует в базе админ
Vova
Делай use admin
bebebe
или она только в базе admin работает?
Да, там в доке так и написано, что существует в базе админ
ээм, в том то и дело, получаю ровно то же самое:
$ mongo -u admin -p admin mongodb-replicaset:27017/admin
rs0:PRIMARY> db.createUser({user: "user", pwd: "pass", roles: [{role: "dbOwner", db: "project_genimg"}, {role: "restore", db: "project_genimg"} ]})
2018-09-26T11:51:29.764+0000 E QUERY [thread1] Error: couldn't add user: No role named restore@project_genimg :
может быть я что-либо концептуально не понимаю?
bebebe
притом почему то это очень плохо гуглится
bebebe
я что-то уже пару часиков как с этим парюсь.
yopp
bebebe
ага, я их смотрел, в admin, они пустые (видимо builtin не показываются)
bebebe
rs0:PRIMARY> db.getRoles()
[ ]
yopp
{role: "restore", db: "project_genimg"}
yopp
ну да
yopp
db.stats()
yopp
авторизация в монге это адочек, да
bebebe
при всем этом, у меня пользователь с ролью dbOwner созодается без проблем
rs0:PRIMARY> db.createUser({user: "user1", pwd: "pass1", roles: [{role: "dbOwner", db: "project_genimg"} ]})
Successfully added user: {
"user" : "user1",
"roles" : [
{
"role" : "dbOwner",
"db" : "project_genimg"
}
]
}
bebebe
но dbOwner, не хватает для restore
yopp
поменяйте {role: "restore", db: "project_genimg»} на {role: "restore", db: «admin»}
yopp
или просто на "restore"
yopp
roles: [«restore»]
yopp
аргх
yopp
как же раздражает эта автозамена кавычек
AstraSerg
AstraSerg
если не на апле :)
AstraSerg
но, похоже, на апле
yopp
built-in роли лучше укзаывать в короткой форме
yopp
я очень рекомендую максимально внимательно читать документацию. монговцы накрутили чёрти что
yopp
https://docs.mongodb.com/manual/reference/method/db.createUser/#roles
bebebe
yopp
да
yopp
если вы в admin базе создаёте пользователей
yopp
а их лучше там создавать
bebebe
я создавал в базе в которую буду делать restore...
yopp
по опыту, лучше для авторизации/аутентификации оставить admin. иначе придётся постоянно руками указывать authDb. плюс потом фиг пользователей соберёшь по базам
bebebe
yopp
это одно из плохих мест в монге
yopp
у них вообще с дизайном средств безопасности всё очень плохо
yopp
что авторизация/аутентификация, что x509
yopp
x509 это вообще для очень сильных духом
bebebe
в итоге решилось так: в базе admin, создал пользователя db.createUser({user: "user", pwd: "password", roles: ["restore", "dbOwner"]})
bebebe
спасибо коллеги.
yopp
да, keep it simple
yopp
у вас просто реплика, не шард?
bebebe
да. реплика
yopp
ну тогда godspeed. потому что в шарде ещё есть shard и local авторизация ;)
Dmitriy
ребят, всем привет!
а может тут есть кто-то кто работает с монгой и может для меня разложить почему ее СТОИТ взять для финансовой системы вместо реляционной бд?
yopp
А чем реляционная бд не устраивает?
Dmitriy
меня рдб всем устраивает, но есть не мое противоположное мнение, что надо использовать монгу из обоснований этого использования есть только, то что монга позволит более легко изменят схему данных.
при этом на том моменте, когда я расстался с монгой у нее были проблемы с: отсутствием транзакций, уровней изоляции, есть вариант потери данных, скорость работы на больших объемах данных, отсутствие нормальное работы с агрегацией данных
соответственно какие требования есть в принципе к системе:
- производительност, порядка 10ММ транзакций (примерно 60ММ операций вставки изменения и на порядок больше операций чтения) в месяц на старте
- транзакционность
- гарантия обработки данных и их консистентности
- наличие хранимых процедур
- наличие возможности репликации данных с возможностью обработки реплицируемых данных хранимой процедурой до передачи в канал
yopp
«позволит более легко менять схему данных» это очень смешно
yopp
при том, что у вас есть с виду внятный список требований, основным требованиям у вас уделено ноль внимания
Dmitriy
yopp
хранимых процедур нет
yopp
что такое «гарантия обработки данных» я не представляю даже
Dmitriy
yopp
10 млрд транзакций, при этом вы говорите о 60 млрд вставок и 600 млрд (?!) чтений?
yopp
в 4.0 есть ACID
yopp
и транзакции тоже есть
Dmitriy
yopp
схемы в монге вообще нету. это и плюс и минус
yopp
потому что если вы решите поменять существующие данные, вам будет _очень_ больно
yopp
это хорошо, потому что можно проповедовать append only стиль
yopp
т.е. старые схемы не изменяются, а всегда только дополняются
yopp
тогда это можно сделать не очень больно и очень гибко
yopp
но это даётся ценой размера документа
yopp
цифры у вас из реальной системы? это rtb?
AstraSerg
я б в плюсы монги добавил простоту репликации
ну и шардирование
yopp
с миллиардами, тут скорее всего речь уже идёт о шардировании
yopp
в шардах нет транзакций и до 4.2 не будет
yopp
и не факт что в 4.2 будет :)