mongodb что это такое

Основы MongoDB за 5 минут

Данная статья рассчитана на новичков, для тех кто хочет быстро изучить основы работы в MongoDB не влезая в документацию и туториалы на ютубе. Если в данной статье упущены некоторые темы, то автор посчитал, что человек неразбирающийся в теме сам будет в состоянии загуглить это + на протяжении всей статьи расставлены ссылки на документацию, дабы новичкам было легче ориентироваться.

Считается одним из классических примеров NoSQL-систем, использует JSON-подобные документы и схему базы данных. Данную базу данных применяют в веб-разработке, в частности, в рамках JavaScript-ориентированного стека MEAN, MEVN, MERN, которые часто используются веб-разработчиками, как любимые стеки технологий для создания приложений.

Установка

Скачать MongoDB можно с официального сайта для Linux, MacOS, Windows.

В Linux это также можно сделать с одной из следующих команд:

brew

Также для того чтобы взаимодействовать с БД нам потребуется шелл (MongoShell), который качается отдельно: https://www.mongodb.com/try/download/shell?jmp=docs

Основы

После успешной установки MongoDB и Mongoshell мы можем спокойно начать взаимодействовать с базой данных с помощью терминала. Достаточно просто ввести mongosh :

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Более подробно о том, что будет ниже можно прочитать здесь

Всё дело в том, что в mongoDB не существует базы данных, покуда мы в неё что-то не поместим. Также, при обращении к определенным объектам (база данных, коллекция) mongoDB они меняют значение, только если существуют, а если не существуют, то они просто создаются. Давайте продемонстрируем принцип работы:

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Для того чтобы создать новую базу данных (или использовать существующую) мы должны использовать ключевое слово use :

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Давайте создадим новую коллекцию под названием customers (покупатели) и положим туда значение name: Daniil :

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Далее мы можем посмотреть наши коллекции с помощью специального метода getCollectionNames :

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Вуаля! У нас есть массив из наших коллекций и по такому же принципу (нахождения нужных нам методов) можно исследовать всю MongoDB, однако мне ещё есть что рассказать, продолжим.

Есть ещё сокращения команд, которые мы тоже можем использовать, например show collections вернёт нам то же самое, однако вид будет более читаемый для человека:

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

У нашей коллекции, к слову, тоже есть методы и свойства, но они немного другие:

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Давайте добавим ещё нескольких покупателей с помощью метода insertMany() :

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Итак, давайте заметим несколько моментов на скриншоте:

Метод insertMany() принимает массив элементов, а не просто элементы

MongoDB все равно прилегают ли ключи и их значения к скобкам или нет

Синтаксис MongoDB очень похож на синтаксис JavaScript, поэтому мы можем использовать все виды кавычек (двойные, одинарные, обратные).

Теперь давайте выведем двух пользователей (не важно каких) из нашего списка используем следующую команду db.customers.find().limit(2) :

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Как мы видим мы вывели всего два объекта из нашей коллекции, однако что ещё мы можем делать с «найденными» объектами? А вот что:

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Теперь давайте рассортируем наши значения с помощью метода sort() :

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Можно сортировать значения и с помощью двух аргументов, но для начала давайте их добавим! Для того чтобы добавить значения к найденному элементу коллекции давайте применим функцию updateOne :

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Теперь давайте применим метод updateMany() для того чтобы поменять значения у множества элементов, а затем перейдем к сортировке с двумя аргументами:

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Теперь рассортируем массив с помощью двух аргументов:

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

MongoDB позволяет получить специфические поля из найденных объектов и не показывать другие (нам ненужные поля):

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Также мы можем выводить наши значения и с помощью других методов, однако дочерние методы тоже будут другими:

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

В данном случае мы перевели наш массив данных в обычный массив. Позже мы сможем проводить над ним некие операции.

Более сложные запросы

Атомные операторы нужны для того, чтобы усложнять запросы. Популярные атомные операторы:

Некоторые из них мы рассмотрим ниже:

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Как мы видим тут вывелись все записи, у которых поле age больше чем 15.

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Добавим ещё один объект, у которого не будет поля age и проверим работу оператора exists :

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Видим, что тут exists отработал верно и запись с name: ‘Denis’ не вывелась.

Стоит уточнить, что атомные операторы работают почти со всеми командами в MongoDB, вы можете совмещать их и создавать сложные запросы.

Все остальные команды по типу:

deleteOne (удаляет запись)

replaceOne (заменяет запись)

updateOne (обновляет запись)

и их братья-близнецы с Many работают точно так же. Вы можете попробовать узнать зачем они нужны просто создав базу данных с парой записей и поэксперементировать (в конце-концов так материал будет усваиваться достаточно быстро и осядет в вашей голове на долгое время), ведь всё что вам нужно вы уже узнали.

Если вам была интересна данная статья, то вы можете найти больше подобных статей в моем блоге. Надеюсь, что я приоткрыл завесу MongoDB и дал понять, что он уж точно не сложней, чем все остальные базы данных.

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

MongoDB

MongoDB (от humongous) — кроссплатформенная документо-ориентированная система управления базами данных. Классифицированная как база данных NoSQL, MongoDB отходит от традиционных основ реляционной структуры базы данных в пользу JSON-подобных документов с динамическими схемами (MongoDB называет этот формат BSON), что делает интеграцию данных в определенных видах приложений проще и быстрее. Выпущено под комбинацией GNU Affero General Public License и лицензией Apache, MongoDB является бесплатным программным обеспечением с открытым исходным кодом.

Содержание

Основные особенности

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

Специальные запросы
MongoDB поддерживает поиск по области, запросов по диапазону, поиск регулярного выражения. Запросы могут возвращать определенные поля документов, а также включают в себя пользовательские функции JavaScript.

Индексация
Любое поле в документе MongoDB могут быть проиндексированы (индексы в MongoDB концептуально схожи с RDBMSes). Вторичные индексы также доступны.

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Репликации
MongoDB обеспечивает высокую доступность с наборов реплик. Реплика набор состоит из двух или более копий данных. Каждый набор реплик член может выступить в роли первичного или вторичного реплики в любое время. Основная реплика выполняет все пишет и читает по умолчанию. Вторичные реплики поддерживать копию данных первичного помощью встроенного в репликации. Когда первичная реплика не удается, реплика устанавливается автоматически проводит избирательный процесс, чтобы определить, какие дополнительные должна стать основным (рисунок 1). Вторичные также может выполнять операции чтения, но данные в конечном счете соответствует по умолчанию.

Балансировка нагрузки
MongoDB для балансировки нагрузки использует приём шардинга. Пользователь выбирает ключ осколка, который определяет, как данные в коллекции будет распространяться. Данные разделены на диапазоны (на основе ключа шарда) и распределены по нескольким осколков. (Осколок мастер с одним или несколькими рабами.) MongoDB может работать на нескольких серверах, балансировка нагрузки и/или дублирования данных, чтобы сохранить систему и работает в случае выхода из строя оборудования. Автоматическая конфигурация легко развернуть и новые машины могут быть добавлены к работающей базе данных.

Файл хранения
MongoDB может быть использован в качестве файловой системы, пользуясь балансировки нагрузки и репликации данных содержит более нескольких машин для хранения файлов.

Эта функция, называемая сетевая файловая система, входит с драйверами MongoDB и доступна для языков программирования (см «Языковая поддержка» для списка поддерживаемых языков). MongoDB предоставляет функции для работы с файлами и содержания для разработчиков. GridFS используется, например, в плагинах для NGINX и Lighttpd. Вместо того чтобы хранить файл в одном документе, GridFS делит файл на части, или куски, и в магазинах каждый из этих кусков в качестве отдельного документа.

В нескольких системе машины в MongoDB, файлы могут быть распределены и скопировал несколько раз между машинами прозрачно, таким образом, эффективно создавая нагрузки сбалансированного и отказоустойчивой системы.

Агрегирование
MapReduce может быть использован для пакетной обработки данных и операциями агрегирования. Рамки агрегации позволяет пользователям получить вид результатов, для которых SQL GROUP BY статьи используется.

Серверный выполнение JavaScript
JavaScript может быть использован в запросах, агрегация функции (такие как MapReduce), и направлено напрямую в базу данных, которая будет выполнена.

Блокирование коллекций
MongoDB поддерживает коллекции фиксированного размера называется блокированы коллекции. Этот тип сбора поддерживает порядок ввода и, по истечении заданного размера была достигнута, ведет себя как круговой очереди.

Архитектура

Модель данных

Данных в качестве документов
MongoDB хранит данные как документы в двоичном представлении под названием BSON (Binary JSON). Кодирование BSON расширяет популярным JSON (JavaScript Object Notation) представление, чтобы включить дополнительные типы, такие как Int, длинные, и с плавающей точкой. BSON документы содержат одно или несколько полей, а каждое поле содержит значение определенного типа данных, в том числе массивов, бинарных данных и судокументов.

Документы, которые стремятся поделиться аналогичную структуру организованы коллекций. Это может быть полезно думать о коллекциях как аналог таблицы в реляционной базе данных: документы схожи с рядами, и поля похожи на колонках.

Рассмотрим, например, модель данных для приложения блогов (рисунок 2). В реляционной базе данных данные модели будет включать несколько таблиц. Для упрощения примера предположим, есть столы для категории, теги, пользователей, Комментарии и статьи.

В MongoDB данные могут быть смоделированы в виде двух сборников, один для пользователей, а другой для статей. В каждом документе блоге там может быть несколько комментариев, несколько тегов, и несколько категорий, каждая выражается в виде встроенного массива.

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

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

Кроме того, документы MongoDB BSON более тесно связаны со структурой объектов в языке программирования. Это делает его проще и быстрее для разработчиков смоделировать, как данные в приложении будут отображаться в данных, хранимых в базе данных.

Схема Дизайна
Хотя MongoDB обеспечивает гибкость схемы, дизайн схемы по-прежнему важно. Разработчики и администраторы баз данных должны рассмотреть ряд вопросов, включая типы запросов, приложение необходимо будет выполнить, как объекты управляются в коде приложения, и как документы будут меняться с течением времени. Проектирование схемы обширная тема, которая выходит за рамки данного документа. Для получения более подробной информации, пожалуйста, см моделирования данных соображений.

Модель запросов

Одно из фундаментальных различий по сравнению с реляционных баз данных является то, что модель запроса MongoDB реализован как методов или функций в API конкретного языка программирования, в отличие от совершенно отдельный языке, как SQL. Это, в сочетании с близостью между JSON модели документа MongoDB и структур данных, используемых в объектно-ориентированного программирования, делает интеграцию с приложениями простых. Для получения полного списка драйверов посетите страницу MongoDB Драйверы.

Монго оболочки
Оболочки Монго является богатым, интерактивная оболочка JavaScript, что входит в состав всех дистрибутивов MongoDB. Почти все команды, поддерживаемые MongoDB может быть выдан через оболочку, в том числе административных операций. Оболочка Монго является популярным способом взаимодействовать с MongoDB для специальных операций. Все примеры в Руководстве по MongoDB на основе скорлупы. Для более на корпусе Монго, увидеть соответствующую страницу в руководстве MongoDB.

Типы Запроса
В отличие от баз данных NoSQL, MongoDB не ограничивается простыми операциями ключ-значение. Разработчики могут создавать приложения, используя богатые сложные запросы и вторичные индексы, которые разблокировать значение в структурированных, полу-структурированных и неструктурированных данных.

Ключевым элементом этой гибкости является поддержка MongoDB для многих типов запросов. Запрос может вернуть документ, подмножество конкретных областях в документе или сложных агрегатов против многих документов:

Индексирование
Индексы решающим механизмом для оптимизации производительности и масштабируемости системы, обеспечивая гибкий доступ к данным. Как и большинство систем управления базами данных, в то время как индексы улучшит производительность некоторых операций на несколько порядков, они берут на себя нагрузку, связанные в операциях записи, использование дискового пространства, и потребление памяти. По умолчанию, механизм хранения WiredTiger сжимает индексы в памяти, освобождая больше рабочего набора документов (рисунок 3).

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

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

Оптимизация запросов
MongoDB автоматически оптимизирует запросы, чтобы сделать оценку как можно более эффективным. Оценка обычно включает в себя выбор данных на основе предикатов и сортировки данных на основе критериев сортировки, предоставляемых. Оптимизатор запросов выбирает лучший показатель для использования, периодически работает альтернативные планы запросов и выбрав индекс с лучшим временем отклика для каждого типа запроса. Результаты этого теста эмпирической хранятся в кэшированной плана запроса и периодически обновляться. Разработчики могут предварительно отзыв и оптимизировать планы, используя мощный объяснить метод и фильтры индекса.

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

Покрытые Запросы
Запросы, которые возвращают результаты, содержащие только индексированные поля называются покрытые запросы. Эти результаты могут быть возвращены, не читая из исходных документов. С соответствующими индексами, нагрузки могут быть оптимизированы для использования преимущественно покрытые запросов.

Управление данными

Авто-шардинг
MongoDB обеспечивает горизонтальное масштабирование аут для баз данных по низкой стоимости, товар аппаратного или облачной инфраструктуры, используя технику под названием Sharding, который является прозрачным для приложений. Шардинг распределяет данные между несколькими физическими разделов, называемых осколками. Шардинг позволяет развертывание MongoDB для решения аппаратных ограничений одном сервере, например, узкие места в ОЗУ или дискового ввода / вывода, без добавления сложности в применении. MongoDB автоматически балансирует данные в sharded кластера, так как данные растет или размер кластера увеличивается или уменьшается.

В отличие от реляционных баз данных, Sharding является автоматическим и встроенным в базу данных. Разработчики не сталкиваются сложность построения логики Sharding в их коде приложения, которые затем должен быть обновлен осколки будут перенесены. Операции команды не нужно развернуть дополнительное программное обеспечение кластеризации для управления процессов и данных распределения.

В отличие от других распределенных баз данных, несколько политик Sharding доступны, которые позволяют разработчикам и администраторам распределять данные в кластере по образцам запросов или местности данных. В результате, MongoDB обеспечивает высокую масштабируемость гораздо через разнообразный набор рабочих нагрузок:

Маршрутизатор запрсов
Маршрутизатор запросов является прозрачным для приложений; есть ли один или сто осколки, код приложения для запроса MongoDB то же самое. Приложения выполнять запросы к маршрутизатору запроса, отправляет запрос в соответствующие осколками.

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

Базовые операции в MongoDB

Проверка установленной версии MongoDB

Подключиться к базе данных из оболочки

или с использованием команды kill:

Выключить базу данных
Завершить процесс:

, эта команда вызовет резкое падение базы данных, и это может привести к несогласованности и потере данных.

Обращение к списку созданных баз данных

Мы проверили, что мы подключены к базе данных Мы обратились с просьбой, однако, не была создана! MongoDB создает резервную копию базы данных и сбор, когда мы вставки наш первый документ.

Мы уже знаем, что MongoDB не схему, то есть, мы не должны объявить структуру и характеристики наших коллекций перед их использованием. Таким образом, коллекция будет создана, когда мы вставляем первый документ в нем, как мы видели раньше.

MongoDB создает набор файлов в базе данных. Эти файлы хранятся в каталоге мы указали, когда мы начали службу mongod или, по умолчанию, в каталоге /var/lib/mongodb/.

Удалить базу данных

С помощью команды dropDatabase () мы удалим базу данных всю текущую, включая метаданные, а также физические файлы. К «db» объект будет по-прежнему указывает на ту же базу данных.

MongoDB Drupal 8

Для установки использовалась ОС Ubuntu 14.04

MongoDB C# ORM

Создание базы данных.

По умолчанию база данных находится в папке c:/data/db Запустим mongo.exe и создадим новую базу данных:

Особенностью MongoDb является то, что это документо-ориентированная база данных, и не содержит информацию о структуре, так что тут мы закончили. Сразу переходим к описанию моделей данных.

У нас будет одна сущность (коллекция) unicorns.

Далее рассмотрим работу с MongoDB:

Подключение к базе

По умолчанию база занимает порт 27017 на сервере (у нас как обычно localhost). Подключаемся к базе:

Добавление/изменение записи

MongoDb самостоятельно добавляет поле _id — уникальный параметр. Если при выполнении команды Save у объекта будет Id существующий уже в коллекции, то выполнится апдейт этого объекта.

Индексация

Для быстрого поиска мы можем добавить индекс по какому-либо полю. Для индексации используется команда

Это ускорит сортировку по этому полю.

Удаление

Для удаления по id создается запрос (Query). В данном случае это

и выполняется команда:

Вывод записей

Для вывода значений применив фильтр и отсортированных, да еще и с пейджингом используется курсор. Например чтобы выбрать из коллекции неудаленные (IsDeleted = false) отсортированные по дате убывания (AddedDate desc) 10ю страницу (пропускаем 90 элементов и выводим 10 следующих) составляется такой курсор:

Поиск

Для того чтобы найти элемент содержащий заданную подстроку необходимо задать следующий запрос:

Бекап базы

Именно бекап а не репликация. Для того чтобы иметь доступ к файлу базы данных нужно выполнить lock (база продолжит работать, только в этот момент все команды записи будут кешироваться, чтобы потом выполнится). После чего базу данных можно скопировать, заархивировать и выложить на ftp. После этой процедуры базу надо разлочить (Unlock). Команды:

Если что-то пойдет не так, то сервер БД надо будет перезапустить с командой:

Полное видео установки

Установка Mongo DB в Ubuntu Server 16.04

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

Ubuntu проверяет подлинность пакетов путём проверки подписей GPG ключей, поэтому сначала нам необходимо импортировать ключ официального репозитория MongoDB.

После успешного импорта ключа вы увидите следующий вывод:

Далее нам необходимо добавить настройки репозитория в apt, чтобы иметь возможность загрузить MongoDB с помощью apt.

Для этого выполните следующую команду:

После добавления репозитория нам необходимо обновить список пакетов.

Теперь мы можем установить пакеты MongoDB.

Эта команда установит несколько пакетов, содержащих последнюю стабильную версию MongoDB, а также некоторые средства настройки сервера MongoDB.

Для того, чтобы запускать MongoDB в виде сервиса Ubuntu 16.04, нам необходимо создать юнит-файл описывающий этот сервис. Юнит-файлы сообщают systemd, как управлять соответствующими ресурсами. Наиболее часто встречающимся типом юнит-файла является сервис, который указывает, как запускать и останавливать тот или иной сервис. Также этот файл указывает, надо ли запускать соответствующий сервис при старте системы, а также, имеет ли сервис зависимости от другого программного обеспечения.

Мы создадим юнит-файл для управления сервисом MongoDB. Создайте файл конфигурации mongodb.service в директории /etc/systemd/system с помощью nano или любого другого текстового редактора.

Вставьте следующий текст в этот файл, сохраните и закройте его.

Этот файл имеет простую структуру:

Секция Unit описание сервиса MongoDB, а также его зависимостей, которые должны быть удовлетворены до запуска сервиса. В нашем случае MongoDB требует наличия сетевого подключения для запуска, поэтому мы указали директиву network.target.

Секция Service описывает параметры запуска сервиса. Директива User указывает, что сервис будет запущен от имени пользователя mongodb, а директива ExecStart задаёт команду запуска сервера MongoDB.

Последняя секция Install сообщает systemd, когда необходимо автоматически запускать сервис. Параметр multi-user.target задаёт стандартную последовательность запуска, что означает, что сервер будет автоматически запущен в процессе загрузки.

Далее запустим только что созданный нами сервис с помощью systemctl.

Эта команда не выводит ничего в консоль после завершения. Мы можем использовать systemctl для проверки успешного запуска сервиса.

Последнее, что нам осталось сделать, это включить автоматический запуск MongoDB при старте системы.

Репликации MongoDB

Репликация — механизм синхронизации содержимого базы данных с несколькими серверами (репликами). Если один сервер упадет, другой сможет продолжить раздавать и принимать данные (рисунок 4).

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

В MongoDB репликация асинхронная. Это значит, что данные синхронизируются между репликами не в момент непосредственного изменения данных, а через какое-то время. В этом есть плюс: не тратится время на репликацию в момент изменения данных. Минус: в определенные моменты времени данные между репликами могут быть не согласованными. На данный момент MongoDB поддерживает две основные репликации: master-slave и replica sets.

Master-Slave

mongodb что это такое. Смотреть фото mongodb что это такое. Смотреть картинку mongodb что это такое. Картинка про mongodb что это такое. Фото mongodb что это такое

Master-Slave применяется во многих СУБД, его модель изображена на рисунке 5. Есть несколько серверов: один мастер, и два слейва. Удалить и писать в базу можно только в мастер-сервере, а читать как из мастера так и из слейвов. Слейвов может быть несколько. Такая схема полезна, когда у нашей системы много запросов на получение данных. Так как приложение может обращаться к слейвам для чтения, то мы можем равномерно распределить нагрузку между ними.

Реализация master-slave в MongoDB. Допустим у нас три машины: 127.0.0.1 будет мастером, а 127.0.0.2 и 127.0.0.3 соответственно слейвами. Для начала запустим mongod в режиме мастера:

Cлейвы знают, где находится мастер (параметр source ). Если в мастер-сервер кто-то что-то писал или удалял пока осуществлялась настройка слейва, то слейвы автоматически и асинхронно синхронизируются с мастером, и у них будет свежая копия данных.

Когда запускается мастер-сервер, он создает в своей базе коллекцию local.oplog.$main (лог операций). В этой коллекции хранятся все последние операции (изменения данных), которые применялись на мастере. Именно из этой коллекции по слейвам расходятся команды обновления их локальных копий. Размер лога операций ограничен ( можно задать самим). В случае, если лог будет заполнен полностью, более старые операции будут удаляться из него, а новые соответственно добавляться.

Replica Sets

Затем серверы реплик необходимо инициализировать. В это время реплики решат между собой, кто будет выполнять функции мастера.

После запуска серверов и их инициализации можно приступать к изменению данных на мастере и чтению с него. Чтение как и запись возможны только с мастера.

В наборе реплик в случае падения мастера, оставшиеся сервера реплик автоматически решают кто из них станет мастером. Для программы, использующей реплицирование этот процесс прозрачный, так как драйверы MongoDB для всех языков поддерживают указание всех адресов реплик. То есть, программа всегда знает где и сколько реплик и кто из них мастер. Драйверы определяют мастера, и соответственно к нему осуществляют запрос. Это возможно благодаря тому, что каждый реплик-сервер хранит данные и о мастере и о других репликах (для этого существует команда rs.status() ).

Успехи и перспективы развития

В финансовых учреждениях MongoDB заявила, что выиграла контракт с одним из крупнейших банков в Китае на своей новой платформе обработки кредитов, а также с южнокорейской компанией по производству мобильных приложений для управления финансовыми ресурсами Rainist.

В прошлом квартале MongoDB заключил партнерское соглашение с SAP, который интегрирует MongoDB с предложениями облачного программного обеспечения SAP. Это партнерство последовало за аналогичным партнерством с IBM и Accenture в начале этого года. Признание, которое демонстрируют эти крупные фирмы, занимающиеся консалтингом и разработкой программного обеспечения, говорит о том, что MongoDB добилась успеха на корпоративном рынке.

Кроме того, растущий клиент MongoDB поддерживает растущий набор функций, особенно для предложения компании Atlas, которое представляет собой MongoDB как услуга через облако. В самом последнем квартале компания представила Mobile Sync, которая синхронизирует данные на конечном устройстве с данными на внутренней базе данных. MongoDB также анонсировала новые высокопроизводительные кластеры в AWS, которые в основном увеличивают скорость обработки больших наборов данных, хранящихся в Atlas. MongoDB также разработал функцию, которая позволяет Atlas безопасно взаимодействовать с данными в виртуальном частном облаке клиентов через частные сети, что должно расширить MongoDB для клиентов, имеющих как публичные, так и частные облака.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *