Эта статья является частью нашего курса Академии под названием MongoDB — A Scalable NoSQL DB .
В этом курсе вы познакомитесь с MongoDB. Вы узнаете, как установить его и как управлять им через оболочку. Кроме того, вы узнаете, как получить программный доступ к нему через Java и как использовать Map Reduce с ним. Наконец, будут объяснены более сложные понятия, такие как шардинг и репликация. Проверьте это здесь !
Содержание
1. Введение
Движение NoSQL породило огромное количество различных хранилищ данных, чтобы удовлетворить потребности практически любого мыслимого приложения: хранилища ключей / значений, графические базы данных, базы данных документов… В этом руководстве мы рассмотрим отличительный элемент хранилищ данных документов семья — MongoDB ( http://www.mongodb.org/ ). Цитата с сайта MongoDB :
«MongoDB (от« humongous ») — это база данных документов с открытым исходным кодом и ведущая база данных NoSQL, написанная на C ++».
Это краткое и простое определение описывает основную цель разработки MongoDB — хранение документов. Неудивительно, что документ — это просто набор полей (или свойств) и их значений, без какой-либо определенной схемы, определенной или требуемой.
MongoDB — довольно зрелый продукт. На момент написания последней версии 2.6 ( http://www.mongodb.org/downloads ), MongoDB предоставляет следующие ключевые функции:
- Хранит документы в стиле JSON с динамическими схемами.
- Полная поддержка индекса: индекс для любого атрибута документа.
- Репликация и высокая доступность.
- Авто-шардинг для горизонтального масштабирования.
- Богатая поддержка запросов на основе документов.
- Быстрое и атомарное обновление документов на месте.
- Встроенная поддержка Map / Reduce для агрегации и обработки данных.
- Файловая система GridFS.
MongoDB — отличный выбор, если он вписывается в архитектуру вашего приложения, шаблоны доступа к данным и требования к хранилищу. В этой части руководства мы рассмотрим процедуру установки MongoDB в разных операционных системах.
2. Лицензия
Сам MongoDB распространяется под лицензией Free Software Foundation GNU AGPL v3.0 . Драйверы для разных языков программирования, которые поддерживаются MongoDB , выпускаются под лицензией Apache License v2.0 . Для получения более подробной информации о лицензировании, пожалуйста, обратитесь к официальной документации .
3. Документация
Команда MongoDB предоставляет отличную и актуальную документацию, доступную онлайн: http://docs.mongodb.org/manual/ . Это отличный источник, чтобы получить исчерпывающий обзор MongoDB и его возможностей. В этом руководстве мы будем много ссылаться на различные разделы документации MongoDB, чтобы вы могли быстро перейти к соответствующей теме.
4. Обзор архитектуры
На вершине иерархии модели данных MongoDB находится база данных. База данных — это физический контейнер для коллекций. Каждая база данных получает свой набор файлов в файловой системе, и один сервер MongoDB может иметь несколько баз данных.
Все документы сгруппированы в коллекции. Коллекция является эквивалентом таблицы RDBMS и существует в одной базе данных. Коллекции не применяют схему, и документы в коллекции могут иметь разные поля. С точки зрения моделирования данных, рекомендуется, чтобы все документы в коллекции имели одинаковую структуру или, по крайней мере, были как-то связаны.
Документ формирует запись в коллекции MongoDB и является основной единицей данных в MongoDB . Документы аналогичны объектам JSON, но существуют в базе данных в формате с большим количеством типов, известным как BSON ( двоичный JSON ).
Хотя MongoDB не является хранилищем данных в памяти, он использует технику, называемую отображаемыми в память файлами, для увеличения производительности ввода-вывода.
5. Установка MongoDB
Одна из самых сильных сторон MongoDB — очень простая процедура установки, независимо от того, на какую платформу вы ориентируетесь. Он буквально следует шаблону загрузки и запуска, дополнительная настройка не требуется. Установочные пакеты предоставляются для всех основных операционных систем: Windows , Linux и MacOS X. В этом разделе мы рассмотрим процедуру установки MongoDB для всех платформ, упомянутых выше.
Для операционных систем Windows и Linux предусмотрены как 32-разрядные, так и 64-разрядные версии, однако рекомендуемая платформа для запуска процессов сервера MongoDB — 64-разрядная.
Примечание: MongoDB также предоставляет готовый двоичный дистрибутив для платформы Solaris . Мы не будем рассматривать эту операционную систему здесь, но процедура установки очень похожа на Linux .
5.1. Установка MongoDB в Windows
На платформе Windows существует два способа установки MongoDB : из пакета установщика Microsoft ( * .msi ) или из архива. Мы рассмотрим оба варианта, начиная с самого простого — архива.
Какой бы маршрут вы ни выбрали, результирующий набор двоичных файлов будет одинаковым, поэтому это всего лишь вопрос личных предпочтений. Обратите внимание, что MongoDB не поддерживает Windows XP или более старые версии Windows.
5.1.1 Установка из архива
Чтобы установить MongoDB из архива, достаточно выполнить два простых шага:
- Скачать архив дистрибутива
- Для 32-битной Windows, пожалуйста, скачайте архив с: https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.6.0.zip
- Для Windows 64-bit, пожалуйста, загрузите архив с: https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.0.zip
После загрузки распакуйте архив в удобное место на локальном жестком диске.
Для более продвинутых вариантов установки обратитесь к официальной документации .
5.1.2 Установка из пакета MSI
Процедура установки MongoDB из готового пакета * .msi также очень проста:
- Скачать дистрибутив * .msi пакет
- Для 32-битной Windows, пожалуйста, скачайте пакет * .msi по адресу : https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.6.0.msi
- Для 64-битной Windows, пожалуйста, скачайте пакет * .msi по адресу : https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.0.msi
Если вы решили выполнить типичную установку, местом назначения по умолчанию будет C: \ Program Files \ MongoDB 2.6 Standard .
Для более продвинутых вариантов установки, пожалуйста, обратитесь к официальной документации .
5.2. Установка MongoDB в Linux
Для установки MongoDB в Linux соответствующие двоичные файлы уже предварительно собраны и предоставлены в качестве дистрибутивных архивов. Давайте пройдемся по процессу установки шаг за шагом.
- Скачать архив дистрибутива
- Для Linux 32-битный, пожалуйста, загрузите архив с: https://fastdl.mongodb.org/linux/mongodb-linux-i686-2.6.0.tgz
- Для Linux 64-bit, пожалуйста, загрузите архив с: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.0.tgz
- Для Linux 32-битный дистрибутивный архив: tar xf mongodb-linux-i686-2.6.0.tgz Должна быть создана папка mongodb-linux-i686-2.6.0, содержащая все двоичные файлы.
- Для Linux 64-битный дистрибутивный архив: tar xf mongodb-linux-x86_64-2.6.0.tgz Должна быть создана папка mongodb-linux-x86_64-2.6.0, содержащая все двоичные файлы.
Следует отметить, что в дистрибутив MongoDB не включены управляющие сценарии (помещаемые в /etc/init.d ) для запуска серверного компонента во время запуска системы. Однако MongoDB предоставляет собственные официальные пакеты, которые развертывают эти сценарии и могут быть установлены с использованием разных менеджеров пакетов. Подробные инструкции по установке доступны для Ubuntu , CentOS / Fedora и Debian .
Более подробные варианты установки и действия для разных дистрибутивов Linux см. В официальной документации .
5.3. Установка MongoDB на MacOS X
Установка на MongoDB очень похожа на версию Linux за исключением того факта, что предоставляется только 64-битный дистрибутив. Давайте подробнее рассмотрим этапы установки.
- Загрузите архив дистрибутива : https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-2.6.0.tgz
- Распакуйте архив с дистрибутивом
После загрузки, пожалуйста, запустите команду:1tar
xf mongodb-osx-x86_64-2.6.0.tgz
Должна быть создана папка mongodb-osx-x86_64-2.6.0, содержащая все двоичные файлы.
Для более сложных вариантов установки, пожалуйста, обратитесь к официальной документации .
6. Сервер и инструменты MongoDB
Двоичный дистрибутив MongoDB состоит из нескольких исполняемых файлов, представляющих сам процесс сервера и набор инструментов поверх него. По умолчанию все исполняемые файлы находятся в папке bin установленного дистрибутива.
В этом разделе мы рассмотрим дистрибутив и рассмотрим каждый исполняемый файл, охватывающий версии как для Linux, так и для Windows.
Имя исполняемого файла | Описание |
mongod
mongod.exe |
Процесс основного сервера (демона) для системы MongoDB . Он обрабатывает запросы данных, управляет форматом данных и выполняет операции фонового управления.
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
монго
mongo.exe |
Интерактивный интерфейс JavaScript-оболочки к MongoDB , который предоставляет мощный интерфейс для системных администраторов, а также позволяет разработчикам тестировать запросы и операции непосредственно с базой данных. Он также предоставляет полнофункциональную среду JavaScript для использования с MongoDB .
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
mongos
mongos.exe |
Служба маршрутизации для конфигураций сегмента MongoDB, которая обрабатывает запросы на уровне приложений и определяет расположение этих данных в кластере с сегментированием для выполнения этих операций. С точки зрения приложения экземпляр mongos / mongos.exe ведет себя идентично любому другому экземпляру MongoDB .
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
mongodump
mongodump.exe |
Мощная утилита для создания бинарного экспорта содержимого баз данных, очень полезная для эффективного создания резервных копий. Его можно использовать вместе с mongorestore / mongorestore.exe для восстановления баз данных. Он может читать данные из экземпляров mongod / mongod.exe или mongos / mongos.exe , в дополнение к чтению напрямую из файлов данных MongoDB без активного запущенного mongod / mongod.exe .
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
mongorestore
mongorestore.exe |
Этот инструмент записывает данные из двоичного дампа базы данных, созданного mongodump / mongodump.exe, в экземпляр MongoDB . Он может создать новую базу данных или добавить данные в существующую базу данных. Как и mongodump / mongodump.exe, он может записывать данные либо в экземпляры mongod / mongod.exe, либо в mongos / mongos.exe , в дополнение к записи непосредственно в файлы данных MongoDB без активного запущенного mongod / mongod.exe .
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
mongoexport
mongoexport.exe |
Утилита, которая производит экспорт данных в формате JSON или CSV, хранящихся в экземпляре MongoDB . Он работает вместе с утилитой mongoimport / mongoimport.exe , которая обеспечивает возможность импорта.
Примечание. Не рекомендуется использовать эту утилиту для полномасштабных производственных резервных копий, поскольку она может не надежно собирать информацию о типе данных. Вместо этого рекомендуется использовать mongodump / mongodump.exe . Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
mongoimport mongoimport.exe | Утилита, позволяющая импортировать контент из экспорта в формате JSON , CSV или TSV, созданного mongoexport / mongoexport.exe или, возможно, другого стороннего инструмента экспорта. Он работает вместе с утилитой mongoexport / mongoexport.exe , которая предоставляет возможность экспорта.
Примечание. Не рекомендуется использовать эту утилиту для полномасштабных производственных резервных копий, поскольку она может не надежно собирать информацию о типе данных. Вместо этого рекомендуется использовать mongorestore / mongorestore.exe . Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
mongotop
mongotop.exe |
Это важная диагностическая утилита, которая предоставляет метод для отслеживания количества времени, которое экземпляр MongoDB тратит на чтение и запись данных. Статистика предоставляется на уровне каждой коллекции. По умолчанию mongotop / mongotop.exe возвращает значения каждую секунду.
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
mongostat
mongostat.exe |
Полезная диагностическая утилита, которая обеспечивает быстрый обзор состояния запущенного в данный момент экземпляра mongod / mongod.exe или mongos / mongos.exe . По умолчанию он подключается к экземпляру, запущенному на локальном хосте, но также может подключаться к любому доступному удаленному экземпляру.
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
mongofiles
mongofiles.exe |
Эта утилита позволяет управлять файлами, хранящимися в экземпляре MongoDB в объектах GridFS, из командной строки. Это особенно полезно, поскольку обеспечивает интерфейс между объектами, хранящимися в вашей файловой системе и GridFS . Кроме того, инструмент может напрямую обращаться к файлам данных MongoDB без активного mongod / mongod.exe .
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
mongooplog
mongooplog.exe |
Хотя это довольно низкоуровневый инструмент, он представляет собой простой инструмент, который опрашивает операции из оплог репликации удаленного сервера и применяет их к локальному серверу. Эта возможность поддерживает определенные классы миграций в реальном времени, которые требуют, чтобы исходный сервер оставался подключенным и работающим на протяжении всего процесса миграции.
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
mongoperf
mongoperf.exe |
Диагностическая утилита, которая позволяет проверять производительность дискового ввода-вывода независимо от MongoDB . Он может предоставить довольно важную информацию об ожидаемых характеристиках производительности экземпляра MongoDB, работающего на этом хосте.
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
bsondump
bsondump.exe |
Это диагностический инструмент, который позволяет конвертировать файлы BSON (формат хранения первичных документов MongoDB ) в удобочитаемые форматы, включая JSON . Это полезно для чтения выходных файлов, сгенерированных mongodump / mongodump.exe .
Для более подробной информации и аргументов командной строки, пожалуйста, обратитесь к официальной документации . |
7. Запуск MongoDB
После установки MongoDB можно запустить из командной строки, используя исполняемый файл mongod / mongod.exe . Единственный обязательный параметр — это место для хранения файлов базы данных, которое можно задать с помощью аргумента командной строки –dbpath .
В Windows, если мы находимся внутри установленного / распакованного места распространения MongoDB , мы можем запустить сервер, выполнив следующие действия:
- Создайте папку данных (нам нужно сделать это только один раз): mkdir data
- Запустите сервер MongoDB: bin \ mongod.exe –dbpath data
Чтобы остановить работающий экземпляр сервера MongoDB , достаточно набрать CTRL-C .
В Linux последовательность команд точно такая же. Предполагая, что мы находимся в распакованном месте распространения MongoDB , давайте сделаем следующее:
- Создайте папку данных (нам нужно сделать это только один раз): mkdir data
- Запустите сервер MongoDB: bin / mongod –dbpath data
Аналогично, чтобы остановить работающий экземпляр сервера MongoDB , достаточно набрать CTRL-C .
Самый простой способ убедиться, что сервер MongoDB запущен и работает, это запустить оболочку MongoDB . Давайте рассмотрим это на примере, выполнив: bin / mongo (или bin \ mongo.exe в Windows). По умолчанию оболочка пытается подключиться к экземпляру сервера MongoDB на локальном компьютере и базе данных с проверкой имени.
Пожалуйста, не беспокойтесь, если команда db.stats () и ее вывод сбивают вас с толку. В следующей части мы собираемся уделить гораздо больше времени оболочке MongoDB , а пока мы проверяем только то, что сервер действительно готов принимать соединения и выполнять команды.
8. Что дальше
Эта часть дает нам первый взгляд на MongoDB и его особенности, вводя пару новых специфических для него терминов: коллекции и документы. Мы также увидели, как легко установить и запустить MongoDB в основных операционных системах, что является большим преимуществом для начинающих пользователей.
В следующей части мы будем тесно работать с внутренними компонентами сервера, базами данных, коллекциями и документами, используя оболочку MongoDB и богатый набор команд и запросов.