Как да изградите уеб приложения с помощта на MongoDB

Съдържание:

Anonim

Уеб приложения, използващи MongoDB - MongoDB е един от най-добрите инструменти за сериозни уеб разработчици и тази статия за MongoDB ще разгледа всичко, което трябва да знаете, за да създадете уеб приложения с MongoDB. Но преди да започнем, нека разгледаме по-подробно популярния инструмент.

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

Какво е MongoDB?

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

Това е много термини, с които може да не сте запознати, така че нека първо ги разбием.

Сега база данни, ориентирана към документи, функционира върху основната концепция, че документът с данни съдържа „метаданни“, които са стойности, използвани за идентифициране на типа данни и улесняват съхранението и извличането, когато е необходимо. Например, нека да разгледаме следните два реда данни:

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

Един поглед върху тези два реда трябва да ви даде представа за какво се отнасят тези данни: име и професия на човек. Машината обаче не може да направи това разграничение. Необходимо е да се посочи вида на данните.

В RDB този тип може да се съхранява в хранилище ключ-стойност, което е отделно от самия документ. Въпреки това, с документация ориентирана база данни, вие трябва да определите типа данни, докато въвеждате кода. Така че в крайна сметка пишете малко така:

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

И там отивате; сега типът данни е дефиниран точно в документа. Това дава гъвкавост, която не присъства в RDBs, поради което базирани на документи бази данни са толкова популярни за уеб приложенията.

В крайна сметка уеб приложенията подлежат на редовни промени и актуализации. Разбира се, RDBs също имат своите предимства и ориентираните към документи бази данни не са идеални за всяка ситуация, но нека не се отклоняваме.

Нека преминем към JSON, BSON и схеми. JSON се отнася до JavaScript Object Notation, но всъщност е отворен стандартен формат на данни, който може да работи с езици, различни от 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. Една база данни ще има колекция, а всеки документ ще има различни полета. За разлика от таблетите, колекциите нямат схема.
  • Документ: Документът е куп двойки ключ-стойност и има динамична схема, което означава, че различните документи в една и съща колекция могат да имат различни набори и структури на полета.

    Препоръчителни курсове

  • Курсове за отстраняване на грешки в Ruby
  • Обучение за програмиране на PHP MySQL
  • Онлайн обучение по програмиране на VB.NET
  • Курс за обучение на фондация ITIL

Изграждане на уеб приложения

Уеб приложенията, които се изграждат за това конкретно ръководство за MongoDB, са RSS агрегатор като Google Reader. Уеб приложенията ще имат два основни компонента: REST API и захранващ канал.

За да разберете какво е REST API, първо трябва да знаете малко за стека MEAN. Кодът за захранващ канал може да бъде намерен дори в директорията на github.

Разбиране на стека MEAN:

Стека MEAN означава следното:

  1. MongoDB, която е базата данни, която ще се използва за уеб приложението
  2. js, което е лека рамка за уеб приложения
  3. js, което представлява рамка за създаване на уеб приложения, богати на JavaScript и HTML5
  4. js, който е сървър от страна на сървъра JavaScript

За обсъжданите тук уеб приложения ще бъде създаден REST API вместо HTML потребителски интерфейс. API за представителна държава за прехвърляне (REST) ​​е по-лека алтернатива на API базирани на XML и може да служи като база за всеки тип интерфейс, въпреки че няма потребителски интерфейс.

REST функции на модел клиент-сървър, като клиентът изпраща HTTP команди до HTTP сървъра, заедно с променливи параметри, кодирани в URL адреса, описващ целевия обект на действието. След това сървърът отговаря с JSON и код на резултата.

Сега MongDB и JavaScript реагират добре с JSON, което прави стека MEAN особено подходящ за уеб приложенията.

CRUD

CRUD за съкращение означава създаване, четене, актуализиране и изтриване. Това са обикновени операции с база данни, които се превеждат в HTTP като публикуване, получаване, поставяне и изтриване.

Изграждане на 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 емисия за Ройтерс, проследяваща информация за най-новите новини, публикувани на уебсайта. Има много полета, които виждате тук, но най-важните за функционирането на уеб приложенията са URL адресът на емисията и описанието на емисията.

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

Останалите полета междувременно са за вътрешна употреба. Бихте могли да добавите повече или да премахнете някои от тези, които искате. Точно в горната част на документа е полето _id. Всеки документ трябва да има това поле и идентификационният номер трябва да бъде уникален.

В горния пример, 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. Това предлага референтен модел, така че можете да попитате колекцията от емисии със същата стойност на ID, за да върнете документа на 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") )

Както можете да видите, основен истински / фалшив булев се използва за маркиране дали емисията е прочетена или не. Сега потребителят трябва да може да изпълнява следните функции:

  1. Създаване на акаунт
  2. Абониране или отписване на емисии
  3. Четене на записи във фуражи
  4. Маркиране на емисии или записи като прочетени или непрочетени
  5. Нулиране на паролата

Ето списък за това как да картографирате тези операции към HTTP маршрути и команди.

маршруткомандаописаниеПроменливи
/ Потребител / ЗаписванеPOSTРегистрирайте нов потребителпърво име
фамилия
електронна поща
парола
/ Потребител / resetPasswordСЛАГАМНулиране на паролаелектронна поща
/ каналиGETВземете абонаменти за емисии за всеки потребител с описание и брой непрочетени
/ канали / абониратеСЛАГАМАбонирайте се за нова емисияfeedURL
/ канали / записиGETПолучете всички записи за емисии, за които потребителят е абониран
/ канали // записиGETПолучете всички записи за конкретна емисия
/ Канали /СЛАГАММаркирайте всички записи за конкретна емисия като прочетени или непрочетенипрочетете =
/ Канали // записи /СЛАГАММаркирайте конкретен запис като прочетен или непрочитанпрочетете =
/ Канали /ИЗТРИЙОтпишете се от тази конкретна емисия

Secure HTTP е стандартният подход, използван за изпращане на чувствителни детайли като пароли в производствена среда

Следващи стъпки: истинско удостоверяване

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

Например, можете да използвате приставката за паспорт с Node.js, която е полезна за удостоверяване с Facebook, Twitter и акаунти в социалните медии.

Горният пример зависи от използването на Stormpath, REST API, който поддържа авторизация и удостоверяване чрез API ключове и предлага управление на потребителите като услуга.

Препоръчителни статии

Ето няколко статии, които ще ви помогнат да получите повече подробности за уеб приложенията с помощта на MongoDB, така че просто преминете през линка.

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