Microsoft Azure & MongoDB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 21:00, 27 ноября 2018.
MongoDB & Microsoft Azure
Microsoft azure logo.png
MongoDB-Logo.svg
Разработчики: MongoDB Inc.
Выпущена: February 2009, 11 (11-02-2009) [1]
Постоянный выпуск: 3.4.9[2] / 11 September 2017 года; 21 months ago (2017-09-11)
Предыдущий выпуск: 3.5.12[3] / 22 August 2017 года; 22 months ago (2017-08-22)
Состояние разработки: Активное
Написана на: C++, C и JavaScript
Операционная система: Windows Vista и позднее, Linux, macOS 10.7 и позднее, Solaris,[4] FreeBSD[5]
Локализация: Английский язык
Тип ПО: Document-oriented database
Лицензия: Various; see § Licensing
Веб-сайт mongodb.org

Microsoft Azure (Windows Azure) — облачная платформа компании Microsoft. Предоставляет возможность разработки и выполнения приложений и хранения данных на серверах, расположенных в распределённых дата-центрах. Первоначально называлась Windows Azure. В 2014 году платформа была переименована в Microsoft Azure.

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

Microsoft Azure

Microsoft Azure реализует две облачные модели — платформы как сервиса (PaaS) и инфраструктуры как сервиса (IaaS). Работоспособность платформы Microsoft Azure обеспечивает сеть глобальных дата-центров Microsoft.

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

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

Microsoft Azure также реализует другой тип сервиса — инфраструктуру как сервис. Модель предоставления инфраструктуры (аппаратных ресурсов) реализует возможность аренды таких ресурсов, как серверы, устройства хранения данных и сетевое оборудование. Управление всей инфраструктурой осуществляется поставщиком, потребитель управляет только операционной системой и установленными приложениями.

В 2013 году было представлено новое хранилище образцов виртуальных машин — VM Depot — это проект для сообщества Windows Azure, запущенный командой Microsoft Open Technologies. Содержимое портала, а также настроенные для разных задач виртуальные машины, будут создаваться и публиковаться силами сообщества.

Практически все сервисы Microsoft Azure имеют интерфейс взаимодействия API, построенный на основе ограничений для распределённых гипер-систем REST, что позволяет разработчикам использовать «облачные» сервисы с любой операционной системы, устройства и платформы.

Сервисы

Сегодня Windows Azure — это публичная облачная платформа, развернутая в восьми гигантских дата-центрах компании в США (4 ЦОДа), Европе (2) и Азиатско-Тихоокеанском регионе (2). Для оптимизации доставки и дистрибуции контента в конкретные географические регионы используются также 24 узла CDN (Content Delivery Network или Content Distribution Network, cеть доставки и дистрибуции контента), один из которых находится в Москве. Вся эта глобальная вычислительная система обеспечивает заказчикам доступность к сервисам Windows Azure на уровне 99,95% в 83 странах мира, в том числе и в России.


Интерфейс Microsoft Azure

Сейчас в Windows Azure реализованы следующие сервисы:

  • среда выполнения приложений, использующая высокодоступные вычислительные мощности и обеспечивающая быстрое масштабирование приложений в зависимости от потребностей клиентов;
  • реляционная база данных на основе технологий SQL Server;
  • нереляционные хранилища данных (таблицы, диски, очереди, хранение двоичных объектов);
  • виртуальные машины, реализованные на базе Windows Server или Linux и позволяющие переносить приложения в облако без изменения кода и гибко перемещать виртуальные жесткие диски (VHD) между локальной и облачной средой;
  • виртуальная сеть, позволяющая настроить виртуальные частные сети (VPN) в Windows Azure и управлять ими, а также безопасно связать их с локальной ИТ-инфраструктурой;
  • Windows Azure Web Sites — с применением этого сервиса можно создавать сайты и приложения на базе .NET, Node.js и PHP и развертывать их с помощью стандартных технологий, таких как Git и FTP. Кроме того, теперь Windows Azure позволяет использовать движки WordPress, Joomla!, DotNetNuke, Umbraco и Drupal;
  • интеграционная шина, предоставляющая возможности ретрансляции и безопасного обмена сообщениями и позволяющая создавать распределенные и слабо связанные приложения в облаке, а также гибридные приложения, размещенные одновременно в частных и публичных облачных службах;
  • сеть кэширующих серверов (CDN), повышающая производительность приложений путем кэширования контента как можно ближе к клиентам и пользователям для максимально эффективного взаимодействия с ними; например сеть CDN дает возможность доставлять фрагменты мультимедийных файлов для динамического адаптивного воспроизведения мультимедиа поверх HTTP-контента;
  • распределенный кэш, позволяющий вместо обращения к медленному дисковому хранилищу получить высокоскоростной доступ к данным, хранящимся в оперативной памяти, в том числе с возможностью масштабирования;
  • служба идентификации для управления удостоверениями и доступом к приложениям, при этом Windows Azure Active Directory обеспечивает безопасное и простое взаимодействие с уже развернутыми в Active Directory приложениями, а также возможность интеграции с другими провайдерами аутентификации (Live ID, Google, Facebook и т. п.);
  • параллельные вычисления (или планировщик HPC), позволяющие разрабатывать и выполнять на платформе Windows Azure параллельные приложения, требующие больших вычислительных мощностей;
  • набор служб Windows Azure Media Services, предназначенный для управления, обработки и доставки видеорешений и медиаконтента; в нем поддерживаются различные технологии и устройства (HTML5, Silverlight, Flash, Windows 8, iPad, iPhone, Android, Xbox, Windows Phone и пр.), а доступ к функциональности сервиса осуществляется с использованием HTTP REST API.</ref> Microsoft Azure[6]
Добавление новой базы данных в Microsoft Azure

MongoDB

Впервые разработанный софтверной компанией MongoDB Inc. в октябре 2007 года в качестве компонента запланированной площадке в качестве продукта обслуживания, компания смещается к модели развития с открытым исходным кодом в 2009 году, с MongoDB предлагает коммерческую поддержку и другие услуги. С тех пор, MongoDB был принят в качестве серверной программного обеспечения в ряде крупных веб-сайтов и услуг, в том числе Craigslist, eBay, и Foursquare и другие. По состоянию на июль 2015 года, MongoDB является четвертым наиболее популярный тип системы управления базами данных, и самый популярный для магазинов документа.

Архитектура

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

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

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

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

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

Example relational data model for a blogging application

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

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

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

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

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

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

Идиоматические Драйверы
MongoDB обеспечивает родные драйверы для всех популярных языков программирования и структуры, чтобы сделать развитие естественно. Поддерживаемые драйверы включают в себя Java, .NET, Ruby, PHP, JavaScript, Python Node.js,, Perl, PHP, Scala и др. Драйверы MongoDB предназначены для идиоматических для данного языка.MongoDB.
Сравнение MySQL и MongoDB

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

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

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

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

  • Запросы ключ-значение Результаты возврат основанные на любом поле InThe документа, часто первичный ключ.
  • Множество запросов Результаты, основанные на определенных значений в виде неравенств (например, больше, меньше или равно, между ними).
  • Геопространственные запросы Показывать результаты, основанные на критериях приближения, пересечения и включения в указанный точке, линии, окружности или многоугольника.
  • Поиск текста запросы возвращают результаты в порядке релевантности, основанные на текстовых аргументов, используя логические операторы (например, И, ИЛИ, НЕ).
  • Запросы агрегации вернуться скопления значений, возвращаемых запросом (например, рассчитывать, мин, макс, средний, похожий на SQL GROUP BY заявление).
  • 'Уменьшение количества запросов' Выполнить сложную обработку данных, выражается в JavaScript и выполнен по данным в базе данных.

Подключение MongoDB в Microsoft Azure

Когда пользователь уже зарегистрировался на платформу Azure, ему необходимо раскрутить свою базу данных и получить Connection String для дальнейшей работы с ней.
Алгоритм подключения:
1.Входим в учетную записать на Microsoft Azure
2.Создать Ресурс
3.Cosmos DB
4.API-> MongoDB
5.ID,Group
6.Все ресурсы -> Name Database
7.Quick start
8. Выбор : .NET Node.js MongoDB Shell Java Python Others
Копируем готовый блок для подключения и вставляем в собственную программу.

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

string connectionString = @"mongodb://[USERNAME]:[USER_PASSWORD]==@[HOST]:[PORT]/?ssl=true&replicaSet=globaldb";
MongoClientSettings settings = MongoClientSettings.FromUrl(new MongoUrl(connectionString));
settings.SslSettings =   new SslSettings()
{ EnabledSslProtocols = SslProtocols.Tls12 // для подключения SSL, но можно без него
 };
var mongoClient = new MongoClient(settings);

Изменение записи

string nameCollection = "Collection1";
var collection = database.GetCollection<Collection1>(nameCollection);            
Collection1 obj = new Collection1("pr1", "pr2", new DateTime(1999, 1, 11), new List<string>(), pr4, pr5);
//Добавления 
collection.Insert<Collection1>(obj);
//Изменения
collection.Save<Collection1>(obj);

Удаление

var del = Object.EQ("_id", id)

collection.Remove(del);


Поиск

Console.WriteLine("{0}", collection.Find(Object.Matches("first name", "last name")));

Просмотр

var fields = collection.Find(Object.EQ("first name", last name));
foreach (var obje in fields)
{
    Console.WriteLine("{0}", obje);
}

Альтернативная настойка

Полное объяснение и установку с комментариями на английском языке вы можете найти по ссылке:
Видео с установкой от Microsoft

Ссылки

Скачать MongoDB shell
Microsoft Azure Portal


Источники

  1. "State of MongoDB March, 2010" (in английский). DB-Engines. 
  2. "Release Notes for MongoDB 3.4". MongoDB. 
  3. "Core Server Versions". MongoDB. 
  4. "How to Set Up a MongoDB NoSQL Cluster Using Oracle Solaris Zones". Oracle. 
  5. "How-To: MongoDB on FreeBSD 10.x". FreeBSD News. 
  6. "Microsoft Azure". Microsoft Azure.