Содержание

Слайд 2

Категории NoSQL баз: 1. Key-Value (Ключ-Значение) базы данных. Это очень простые

 Категории NoSQL баз:
1. Key-Value (Ключ-Значение) базы данных.
Это очень простые по

своей идее хранилища. Фактически это очень большие хэш- таблицы, где каждому ключу поставлено в соответствие значение. Такие базы могут очень быстро оперировать колоссальными объемами информации, но они имеют серьезные ограничения в языке запросов. 
2. BigTable.
Это база данных разработанная компанией Google для собственных нужд. Эта база представляет собой большую таблицу с тремя измерениями: колонки, строки и временны'е метки. Такая архитектура позволяет добиться очень высокой производительности, кроме того, она хорошо масштабируется на множество компьютеров. Но это не реляционная база, и она не поддерживает многие возможности реляционных баз. 
3. Документо-ориентированные базы данных.
Такие базы немного напоминают Key-Value базы, но в данном случае, база данных знает, что из себя представляют значения. Обычно, значением является некоторый документ или объект, к структуре которого можно делать запросы.
4. Базы данных построенные на графах.
Такие базы ориентированы на поддержку сложных взаимосвязей между объектами, и основываются на теории графов. Структура данных в таких базах представляет собой набор узлов, связанных между собой ссылками. При этом и узлы и ссылки могут обладать некоторым количеством атрибутов. 
Слайд 3

Структура информации Структуру данных в реляционных системах на примере MySQL мы

Структура информации
Структуру данных в реляционных системах на примере MySQL мы

можем представить в виде следующей иерархии:
База данных -> Таблица -> Строка -> Поле + Значение.
Как это все выглядит в MongoDB:
База данных -> Коллекция -> Документ -> ключ + значение. 
Слайд 4

MongoDB реализует новый подход к построению баз данных, где нет таблиц,

MongoDB реализует новый подход к построению баз данных, где нет таблиц,

схем, запросов SQL, внешних ключей и многих других вещей, которые присущи объектно-реляционным базам данных.
В отличие от реляционных баз данных MongoDB предлагает документо-ориентированную модель данных, благодаря чему MongoDB работает быстрее, обладает лучшей масштабируемостью, ее легче использовать.
Но, даже учитывая все недостатки традиционных баз данных и достоинства MongoDB, важно понимать, что задачи бывают разные и методы их решения бывают разные. В какой-то ситуации MongoDB действительно улучшит производительность вашего приложения, например, если надо хранить сложные по структуре данные. В другой же ситуации лучше будет использовать традиционные реляционные базы данных.
Слайд 5

Если реляционные базы данных хранят строки, то MongoDB хранит документы. В

Если реляционные базы данных хранят строки, то MongoDB хранит документы. В

отличие от строк документы могут хранить сложную по структуре информацию. Документ можно представить как хранилище ключей и значений.
Ключ представляет простую метку, с которым ассоциировано определенный кусок данных.
Однако при всех различиях есть одна особенность, которая сближает MongoDB и реляционные базы данных. В реляционных СУБД встречается такое понятие как первичный ключ. Это понятие описывает некий столбец, который имеет уникальные значения. В MongoDB для каждого документа имеется уникальный идентификатор, который называется _id.
Слайд 6

Всю модель устройства базы данных в MongoDB можно представить следующим образом:

Всю модель устройства базы данных в MongoDB можно представить следующим образом:

Если

в реляционных БД содержимое составляют таблицы, то в MongoDB база данных состоит из коллекций.
Каждая коллекция имеет свое уникальное имя - произвольный идентификатор.
В отличие от реляционных баз данных MongoDB не использует табличное устройство с четко заданным количеством столбцов и типов данных. MongoDB является документо-ориентированной системой, в которой центральным понятием является документ.
Документ можно представить как объект, хранящий некоторую информацию. В некотором смысле он подобен строкам в реляционных субд, где строки хранят информацию об отдельном элементе.
Слайд 7

В отличие от строк документы могут содержать разнородную информацию. Так, рядом

В отличие от строк документы могут содержать разнородную информацию. Так, рядом

с документом, описанным выше, в одной коллекции может находиться другой объект, например:

Добавление данных и создание коллекций

Для вставки в коллекцию используется функция insert. Самый простой пример ее использования:

> db.users.insert({"name": "Tom", "age": 28, languages: ["english", "spanish"]})
> db.users.find()

В данном случае в коллекцию users добавляется простой объект.

Слайд 8

Настройка запросов и сортировка MongoDB представляет ряд функций, которые помогают управлять

Настройка запросов и сортировка
MongoDB представляет ряд функций, которые помогают управлять выборкой

из бд. Одна из них - функция limit. Она задает максимально допустимое количество получаемых документов. Количество передается в виде числового параметра. Например, ограничим выборку тремя документами:

> db.users.find().limit(3)


MongoDB предоствляет возможности отсортировать полученный из бд набор данных с помощью функции sort. Передавая в эту функцию значения 1 или -1, мы можем указать в каком порядке сортировать: по возрастанию (1) или по убыванию (-1). Во многом эта функция по действию аналогична выражению ORDER BY в SQL. Например, сортировка по возрастанию по полю name:

> db.users.find().sort({name: 1})

Слайд 9

Условные операторы в MongoDB В MongoDB в запросах можно использовать условные

Условные операторы в MongoDB
В MongoDB в запросах можно использовать условные конструкции

с помощью операторов сравнения:
$gt (больше чем)
$lt (меньше чем)
$gte (больше или равно)
$lte (меньше или равно)
Например, найдем все документы, у которых значение ключа age меньше 30:
> db.users.find ({age: {$lt : 30}})
Оператор $ne
$ne извлекает все документы, не соответствующие некоторому условию:

> db.users.find ({age: {$ne : 22}})

Слайд 10

Удаление поля Для удаления отдельного ключа используется оператор $unset: > db.users.update({name


Удаление поля
Для удаления отдельного ключа используется оператор $unset:
> db.users.update({name : "Tom"}, {$unset:

{salary: 1}})
Оператор $push
Оператор $push позволяет добавить еще одно значение к уже существующему. Например, если ключ в качестве значения хранит массив:
> db.users.update({name : "Tom"}, {$push: {languages: "russian"}})
Оператор $addToSet подобно оператору $push добавляет объекты в массив. Отличие состоит в том, что $addToSet добавляет данные, если их еще нет в массиве.