MongoDB |
Обновлено: 1.02.2017 - 23:16
Свободная кросс-платформенная документ-ориентированная база данных. MongoDB как NoSQL использует JSON-подобные документы со схемами таблиц. MongoDB разработан MongoDB Inc. и является свободным программным обеспечением с открытым кодом опубликованным под лицензиями GNU Affero General Public License и Apache.
Основные возможности MongoDB
Специальные запросы
MongoDB поддерживает поле, диапазон запросов, поиск регулярных выражений. Запросы могут возвращать определенные поля документов, а также включают в себя определенные пользователем JavaScript функции. Запросы также могут быть настроены, чтобы возвращать случайную выборку результатов данного размера.Индексирование
Поля в документе MongoDB могут быть проиндексированы с первичными и вторичными индексами.
Копирование
MongoDB обеспечивает высокую доступность с наборами реплик. Набор реплик состоит из двух или более копий данных. Каждый член набора реплик может действовать в роли первичной или вторичной реплики в любое время. Все записи и чтения выполняются на первичной реплике по умолчанию. Вторичные реплики сохраняют копию данных первичного использованием встроенной репликации. Когда первичная реплика не удается, реплика устанавливаемая автоматически проводит избирательный процесс, чтобы определить, какие вторичные должно стать основным. Вторичные не обязательно могут обслуживать операции чтения, но эти данные в конечном счёте соответствуют умолчаниям.
Балансировка нагрузки
MongoDB масштабируется по горизонтали с помощью шардинга. Пользователь выбирает shard key, который определяет, как будут распределены данные в коллекции. Данные разделены на диапазоны (на основе shard key) и распределены по нескольким шардингам. (Шардинг является мастером с одним или несколькими рабами.) В качестве альтернативы, shard key можно захэшировать для отображения на шардинге, позволяя равномерное распределение данных.
MongoDB может работать на нескольких серверах, балансировать нагрузку и дублировать данные, чтобы держать сервера рабочими даже в случае сбоя оборудования.
Файловое хранилище
MongoDB можно использовать в качестве файловой системы с балансировкой нагрузки и репликацией данных на нескольких серверах для хранения данных. Эта функция называется сетевой файловой системой GridFS, входит в комплект драйверов MongoDB. MongoDB предоставляет функции для обработки файлов и контента для разработчиков программного обеспечения. GridFS используется в плагинах для NGINX и Lighttpd. GridFS делит файл на части или куски, и хранит каждый из этих кусков в качестве отдельного документа.
Агрегирование
MapReduce можно использовать для пакетной обработки данных и операций агрегирования. Структура агрегирования позволяет пользователям получать результаты, для которых используется SQL GROUP BY. Операторы агрегирования могут быть нанизаны вместе, чтобы сформировать pipeline аналогично UNIX pipes. Структура агрегирования имеет оператор $lookup, который собирает документы из нескольких документов, а также статистические операторы, таких как стандартное отклонение.
Выполнение JavaScript на стороне сервера
JavaScript может использоваться в запросах, функциях агрегирования, (таких, как MapReduce) и направлять непосредственно в базу данных на выполнение.
Capped collections
MongoDB поддерживает коллекции фиксированного размера, называемые capped collections. Этот тип коллекции поддерживает порядок ввода и как только указанный размер достигнут, ведет себя как кольцевой буфер.
Сообщения об ошибках и критические замечания
Благодаря конфигурации безопасности "по умолчанию" в MongoDB, которая позволяет любому иметь полный доступ к базе данных, данные из десятков тысяч инсталяций MongoDB были украдены. Многие серверы были заражены вредоносными программами Ransomware, предназначенными для вымогательства.
В некоторых случаях отказа, когда прикладная программа может использовать два различных процесса MongoDB, но эти процессы не могут получить доступ друг к другу, в MongoDB возможно вернуть несвежие чтения. В этом случае также возможно откатить операции записи, которые были повреждены.
До версии 2.2 управление параллелизмом был реализовано для каждого mongod. Начиная с версии 2.2, управление параллелизмом была реализована на уровне базы данных. Начиная с версии 3.0 был введён движок плагинов и каждый движок хранения может иметь свой параллелизм данных. С MongoDB 3.0 управление паралеллизмом реализуется на уровне сбора для движка хранения MMAPv1 и на уровне документов с движком WiredTiger. В версиях до 3.0, один подход к увеличению параллелизмом заключается в использовании шардинга. В некоторых ситуациях, чтения и записи дают свои блокировки. Если MongoDB предсказывает что страницы вряд ли будут в памяти, операции дадут их блокировку во время загрузки страниц. Использование блокировок значительно расширено в версии 2.2.
Другая критика связана с ограничениями MongoDB при использовании на 32-битных системах. В некоторых случаях это было связано с неизбежными ограничениями памяти. MongoDB рекомендует 64-битные системы и чтобы пользователи обеспечили достаточно оперативной памяти для рабочего процесса.
Вплоть до версии 3.3.11, MongoDB не мог сделать параметры сортировки и был ограничен побайтным сравнением через memcmp, который не обеспечит правильный порядок для многих неанглийских языков, при использовании кодировки Unicode. Вопрос был исправлен 23 августа 2016 года.
MongoDB запрашивает индекс, не являющийся атомарными и может пропустить документы, которые обновляются в то время как запрос выполняется и соответствуют запросу до и после обновления.
Архитектура MongoDB
Доступные языки программирования
MongoDB имеет официальные драйверы для различных популярных языков программирования и сред разработки. Есть также большое количество неофициальных или драйверов поддерживаемых сообществом для других языков программирования и фреймворков.
Управление и графические фронт-энды
Управление производиться в большинстве случаев инструментами командной строки, такими как mongo shell, так как MongoDB не имеет интерфейса администрирования в стиле GUI. Есть продукты и сторонние проекты, которые предлагают пользовательские интерфейсы для управления и просмотра данных.

Вставка записи в MongoDB с Robomongo 0.8.5.
Лицензирование
MongoDB предоставляется на безвозмездной основе в соответствии с лицензией GNU Affero General Public License, версия 3. Драйверы языков доступны под лицензией Apache. Кроме этого, MongoDB Inc. предлагает фирменные лицензии на MongoDB.
MongoDB World
MongoDB World - ежегодная конференция разработчиков, организованная MongoDB, Inc.
https://en.wikipedia.org/wiki/MongoDB
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Категория: Базы данных, Сервера баз данных
Лицензия:
AGPL и проприетарные![]()
![]()
![]()
Язык программирования:
C++, C и JavaScript
Сайт проекта
Скачать MongoDB
Комментарии |