Сертификация mongoDB

Недавно мне удалось пройти сертификация C100DEV: MongoDB Certified Developer Associate Exam и C100DBA: MongoDB Certified DBA Associate Exam. В данной статье я хочу поделиться своим опытом и сказать на что следует обратить внимание при подготовке, и как проходил экзамен. Также приведу несколько примеров вопросов.
Сайт проекта
university.mongodb.com
Стоимость
Каждый экзамен стоит $150.00. Каждая пересдача платная. Но есть система скидок. Если прости public traning, то дается промо код на скидку 50%. На сайте я не смог найти информации об этом, пока после окончания учебного курса мне на почту не пришел сам промо код.
Порог прохождения экзамена
Для прохождения необходимо набрать 490 баллов из 600. Если учесть что всего 600 вопросов, и набрал я 525 баллов, то скорее всего за частично верные ответы засчитывают тоже баллы.
Прохождение экзамена
Экзаменационные сессии проходят в течение 2х недель с перерывами 1–2 месяца. То есть в любой момент не получится сдать экзамен. Экзамен представляет собой онлайн тестирование. Для прохождения экзамена устанавливается программа GoToMeeting. В ней через видео чат вы связываетесь с представителем компании (мне постоянно попадались индийцы со странным акцентом английского языка). Он вам диктует общие правила (о правилах чуть ниже). Далее вы раскраиваете доступ к своему ПК. Он вводит пароль на сайте для доступа к экзамену.
Правила прохождения экзамена (перечислю только самые основные):
— нужно быть в комнате одному, никто не должен заходить (лучше предупредить близких если вы дома, чтобы никто не заходил)
— никаких телефон
— ни с кем не разговаривать (молчать в течение всего экзамена)
— нельзя выключать вебкамеры
— нельзя смотреть по сторонам
— нельзя пользоваться сторонними программами (консолью чтобы протестировать запрос, документацией)
— МОЖНО пользоваться google translate
В течение всего экзамена вы сидите напротив вебкамеры с расширенным доступом к ПК и за вами наблюдает проверяющий. Один раз я задумался, посмотрел в сторону и сразу получил замечание от проверяющего, пришлось поворачивать вебкамеру в сторону чтобы показать, что там ничего нет. Кстати перед экзаменом через вебкамеру показываем что чистый стол, никого нет в комнате. Меня просили даже показать что под столом.
Результаты
Результаты доступны через 3 недели после экзамена. На почту присылают кол-во набранных баллов с детализацией по разделам. Например CRUD 85%, aggregation 90%, indexing 75%, sharding: 50%. По результатам экзамены вы попадаете в базу MongoDB Certified Professional Finder (аналог yellow pages zend certification)
Подготовка
Для подготовки я использовал docs.mongodb.org Просто брал и перечитывал все разделы. Оказалось очень полезным. Также можно пройти любой бесплатный public training (https://university.mongodb.com/training). Там попадались вопросы из экзамена. Из того что в нем не понравилось — это нудные видео где много воды.
Примеры вопросов
Для экзамена C100DEV следующие разделы:
-Philosophy & Features (общая концепция)
— CRUD (работа с данными)
— Indexing
— Aggregation
— Data Modeling
— Replication
— Sharding
Приведу несколько примеров вопросов из экзамена:
По коллекции построен индекс {a:1, b:1}
Какие запросы будут использовать его:
— db.data.find ({ a: { $gt: 4 } }).sort ({ a: 1, b: 1 })
— db.data.find ({ a: 5, b: { $lt: 3} }).sort ({ b: 1 })
— db.data.find ({ b: 5 }).sort ({ a: 1})
— db.data.find ({ a: 1 })
— db.data.find ({ b: 2 })

Что из ниже перечисленного вернет запрос db.records.find ({ a: { $exists: true } })
— {_id:0, a:1}
— {_id:1, a:{b:1}}
— {_id:2, a:[1,2,4]}
— {_id:3, a: null}
— {_id:4}

Что из перечисленного правда о capped collection
— нельзя менять размер
— документы хранятся отсортированными на жестком диске
— документы нельзя делать move
— нельзя менять размер документов (делать update с увеличением размера документа)
— нельзя удалять документы
— нельзя переименовывать

Дан составной индекс { a: 1, b:1, c:1, d:1}. Какие запросы не будут использовать in-memory sorting
— db.test.find ({ a: 5, b: 3 }).sort ({ a: 1, b: 1, c: 1 })
— db.test.find ({ a: 5, b: 3 }).sort ({ a: 1})
— db.test.find ({ a: 5, b: 3 }).sort ({c: 1 })
— db.test.find ({ a: 5, b: 3 }).sort ({ c: 1, d: 1 })

Коллекция содержит следующие данные:
{a:[5]},
{a:[5,3]},
{a:[3]},
{a:[3,'dsfasf']}
Как получить только один документа {a:[5,3]}
— find ({a:[5,3]})
— find ({a:{$and:[3,5]}})
— find ({a:{$all:[3,5]}})

Что хранится в первых 4х байтах ObjectId?
— идентификатор машины, на котором сгенерирован ObjectId
— идентификатор процесс
— время timestamp

Сколько максимум нод допустимо в replica set
— 27
— 50
— 100

Необходимо посмотреть на работу операторов $all, $addToset, $pull, $push, $slice, $in, $text
Как создать пользователя, синтаксис создания индекса, получить список индексов. Для чего используются mongofiles, mongosniff, mongotop, mongostat, bsondump, mongorestore, mongodump. Где работает explain (). Сколько максимум голосующих нод в replica set. Что такое арбитр. Синтаксис базовых операций (insert, distinct, remove, update etc.)

Дана конфигурация для шардинга и вопросы типа: на каких годах будет выполняться запрос.
Например шардинг организован по {a:1, b:1}
Какие запросы дают возможность однозначно определить на каких шарах будет работать запрос (вместо того чтобы гонять на всех сразу)
a>1
a=1 and b>2
b>a

Для экзамена C100DBA больше вопросов по администрированию и готов рассказать в отдельной статье.

© Habrahabr.ru