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

Источник изображения: pixabay.com

Что такое MongoDB?

Проще говоря, MongoDB - это кроссплатформенная база данных NoSQL, ориентированная на документы, которая использует JSON-подобные документы с использованием динамических схем, называемых документами BSON, вместо того, чтобы следовать структуре обычной реляционной базы данных (RDB).

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

Теперь документно-ориентированная база данных функционирует на основе основной концепции, заключающейся в том, что документ данных содержит «метаданные», которые представляют собой значения, используемые для идентификации типа данных и упрощения их хранения и извлечения при необходимости. Например, давайте посмотрим на следующие две строки данных:

  • Джон Хэнкок
  • Архитектор

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

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

  • Джон Хэнкок
  • Архитектор

И там вы идете; теперь тип данных был определен прямо в документе. Это дает гибкость, которой нет в RDB, поэтому ориентированные на документы базы данных так популярны для веб-приложений.

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

Давайте перейдем к JSON, BSON и схемам. JSON относится к нотации объектов JavaScript, но на самом деле это открытый стандартный формат данных, который может работать с языками, отличными от JavaScript.

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

Что касается BSON, то это просто Binary JSON, и это формат хранения данных для базы данных MongoDB. Это все, что вам нужно знать об этом на данном этапе.

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

Зачем идти на MongoDB?

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

  • MongoDB не имеет схемы

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

Это также делает структуру одного объекта четкой и понятной, а MongoDB также легко масштабируется при необходимости.

  • MongoDB универсальный

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

  • MongoDB поддерживает авто-шардинг

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

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

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

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

Еще несколько терминов, чтобы узнать о MongoDB

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

  • База данных: база данных содержит коллекции, и каждая база данных имеет свои собственные файлы в файловой системе. Типичный сервер MongoDB будет иметь несколько баз данных.
  • Коллекция: группа документов MongoDB называется коллекцией, и это эквивалент таблицы в RDB. Одна база данных будет иметь коллекцию, а каждый документ будет иметь разные поля. В отличие от планшетов, коллекции не имеют схемы.
  • Документ: документ представляет собой набор пар ключ-значение и имеет динамическую схему, что означает, что разные документы в одной коллекции могут иметь разные наборы полей и структуры.

    Рекомендуемые курсы

  • Руби Отладка Курсы
  • Обучение программированию PHP MySQL
  • Онлайн обучение программированию на VB.NET
  • Учебный курс Фонда ITIL

Создание веб-приложений

Веб-приложения, создаваемые для этого конкретного руководства MongoDB, являются агрегатором RSS, таким как Google Reader. Веб-приложения будут иметь два ключевых компонента: API REST и граббер каналов.

Чтобы понять, что такое REST API, сначала нужно немного узнать о MEAN-стеке. Код для захвата канала можно найти даже в каталоге github.

Понимание стека MEAN:

Стек MEAN означает следующее:

  1. MongoDB, которая является базой данных для веб-приложения
  2. JS, который является легким каркасом веб-приложения
  3. JS, которая является основой для создания JavaScript и HTML5 богатых веб-приложений
  4. JS, который является серверным интерпретатором JavaScript

Для обсуждаемых здесь веб-приложений вместо пользовательского интерфейса HTML будет создан REST API. API представления состояния представления (REST) ​​является более легкой альтернативой API на основе XML и может служить основой для любого типа интерфейса, несмотря на отсутствие пользовательского интерфейса.

Функция REST работает в модели клиент-сервер, когда клиент отправляет HTTP-команды HTTP-серверу вместе с переменными параметрами, закодированными в URL-адресе, описывающем целевой объект действия. Затем сервер отвечает JSON и кодом результата.

Теперь MongDB и JavaScript хорошо взаимодействуют с JSON, что делает стек MEAN особенно подходящим для веб-приложений.

CRUD

CRUD акроним расшифровывается как создание, чтение, обновление и удаление. Это обычные операции с базой данных, которые переводятся в HTTP как post, get, put и delete.

Создание REST API

Начнем с создания REST API, разработки основы для создания веб-приложений. Приложение может быть сетевым или предназначено для Android, iOS или других конкретных платформ. Для начала давайте перечислим, что приложение сможет делать:

  1. Разрешить пользователям создавать учетные записи
  2. Позвольте им подписаться или отказаться от подписки на каналы
  3. Дайте им возможность читать и помечать записи фида как прочитанные или непрочитанные
  4. Отслеживание RSS-каналов для мониторинга
  5. Хранить информацию о пользователях в соответствующих аккаунтах
  6. Отслеживание подписок на фиды пользователей
  7. Отслеживание записи в фиде, уже прочитанной пользователем

Моделирование данных

Исходя из требований, веб-приложениям потребуется четыре набора для управления информацией:

  1. Коллекция пользователей
  2. Коллекция кормов
  3. Коллекция отображения записей в фиде пользователей
  4. Коллекция фидов

Вот более внимательный взгляд на каждого из них:

  • Коллекция кормов:

Следующий JSON является хорошим примером для моделирования коллекции каналов:

( "_id, ObjectId("523b1153a2aa6a3233a91412")

"requiresAuthentication": false,

"permanentlyRemoved": false,

"feedURL": "http://feeds.reuters.com/reuters/topNews",

"title": "Reuters",

"bozoBitSet": false,

"enabled": true,

"etag": "4bL78iLSZud2iXd/vd10mYC32BE",

"link": "http://www.reuters.com/ ",

"permanentRedirectURL": null,

"description": "Reuters news feed” )

Приведенный выше документ JSON представляет собой RSS-канал для Reuters, в котором отслеживается информация о последних новостях, опубликованных на веб-сайте. Здесь вы видите множество полей, но наиболее важными для работы веб-приложений являются URL-адрес канала и описание канала.

URL важен для извлечения контента из правильного источника, и описание важно, потому что оно предоставляет сводку для канала.

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

В приведенном выше примере идентификатор был создан вручную для поля. Если вы пропустите это, MongoDB автоматически сделает это.

  • Отслеживание и сбор записей фидов

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

( "_id": ObjectId("523b1153a2aa6a3233a91412"),

"description": "Martin Shkreli, the poster boy for prescription drug price increases who was arrested for securities fraud this week, has stepped down from his post as chief executive officer of Turing Pharmaceuticals Inc, the company said on Friday”,

"title": "Turing Pharma names chairman to replace Shkreli as CEO",

"summary": "Turing Pharma names chairman to replace Shkreli as CEO”,

"content": (( "base": "http://www.reuters.com/",

"type": "text/html",

"value": ”LOTS OF HTML HERE",

"language": "en" )), "published Date": ISODate("2015-12-18T18:13:58+0000"),

"link": " http://www.reuters.com/article/us-usa-crime-shkreli-ceo-idUSKBN0U122R20151218",

"feedID": ObjectId("523b1153a2aa6a3233a913f8") )

Еще раз, вы можете увидеть заполненное поле _id, а также некоторые другие поля, такие как описание, сводка и заголовок. Поле содержимого использует массив, а MongoDB позволяет использовать массивы для хранения документов. Такое расположение субдокументов может быть особенно полезным в ситуациях, когда вся информация должна храниться вместе.

Принять к сведению feedID; он имеет тот же тип ObjectId и значение _id, что и предыдущий документ ввода канала для канала Reuters. Это предлагает ссылочную модель, поэтому вы можете запросить коллекцию каналов по тому же значению идентификатора, чтобы вернуть документ Reuters.

  • Отслеживание пользователя

Вот пример документа для отслеживания пользователей:

( "_id" : ObjectId("54ad6c3ae764de42070b27b1"),

"active" : true,

"email" : " ",

"firstName" : "John",

"lastName" : "Hancock",

"sp_api_key_id" : "6YQB0A8VXM0X8RVDPPLRHBI7J",

"sp_api_key_secret" : "veBw/YFx56Dl0bbiVEpvbjF”,

"lastLogin" : ISODate("2015-01-07T17:26:18.996Z"),

"created" : ISODate("2015-01-07T17:26:18.995Z"),

"subs" : ( ObjectId("523b1153a2aa6a3233a913f8"),

ObjectId("54b563c3a50a190b50f4d63b") ), )

Здесь у пользователя есть три ключевых атрибута: имя, фамилия и адрес электронной почты. Есть также два элемента, которые можно использовать с API управления пользователями Stormpath: sp_api_key_secret и sp_api_key_id.

Последнее поле, subs, является массивом подписок и сообщает каналу, на который подписан пользователь.

  • Отображение ввода фида

Финальная коллекция ее позволяет сопоставлять пользователей с фидами и отслеживать прочитанные фиды:

( "_id" : ObjectId("523b2fcc054b1b8c579bdb82"),

"read" : true,

"user_id" : ObjectId("54ad6c3ae764de42070b27b1"),

"feed_entry_id" : ObjectId("523b1153a2aa6a3233a91412"),

"feed_id" : ObjectId("523b1153a2aa6a3233a913f8") )

Как вы можете видеть, базовое булево значение true / false используется для маркировки, прочитан ли канал или нет. Теперь пользователь должен иметь возможность выполнять следующие функции:

  1. Создание аккаунта
  2. Подписка или отмена подписки на каналы
  3. Чтение записей фидов
  4. Пометка каналов или записей как прочитанных или непрочитанных
  5. Сбросить пароль

Вот список того, как отобразить эти операции на HTTP-маршруты и команды.

маршруткомандаОписаниепеременные
/ Пользователь / EnrollПОЧТАЗарегистрировать нового пользователяИмя
фамилия
Эл. адрес
пароль
/ Пользователь / ResetPasswordПОЛОЖИЛСброс пароляЭл. адрес
/ кормаПОЛУЧИТЬПолучить подписки на каналы для каждого пользователя с описанием и непрочитанным счетчиком
/ каналы / подписатьсяПОЛОЖИЛПодписаться на новый каналfeedURL
/ Корма / записиПОЛУЧИТЬПолучить все записи для каналов, на которые подписан пользователь
/ Корм ​​// записьПОЛУЧИТЬПолучить все записи для определенного канала
/ Корма /ПОЛОЖИЛОтметить все записи для определенного канала как прочитанные или непрочитанныечитать =
/ Корма // записи /ПОЛОЖИЛОтметить определенную запись как прочитанную или непрочитаннуючитать =
/ Корма /УДАЛЯТЬОтписаться от этого конкретного канала

Безопасный HTTP - это стандартный подход, используемый для отправки конфиденциальных данных, таких как пароли, в производственной среде.

Следующие шаги: аутентификация в реальном мире

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

Например, вы можете использовать Passport Plugin с Node.js, который полезен для аутентификации с помощью учетных записей Facebook, Twitter и социальных сетей.

Приведенный выше пример зависит от использования Stormpath, REST API, который поддерживает авторизацию и аутентификацию с помощью ключей API и предлагает управление пользователями как услугу.

Рекомендуемые статьи

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

  1. HTML5 против Flash взволнован, чтобы узнать разницу?
  2. Java против Node JS - 8 отличий, которые вы должны знать
  3. Приложение для веб-тестирования - полезное и всеобъемлющее руководство
  4. Как использовать веб-шаблоны HTML | Применение | Мобильный | Лучший
  5. Разработка программного обеспечения против веб-разработки
  6. Как подготовить инструменты веб-аналитики к работе для вас (Руководство)
  7. MongoDB против PostgreSQL: в чем различия
  8. Полезное руководство по MongoDB против Hadoop
  9. Лучший гид на MongoDB против Кассандры