Aplicații web care utilizează MongoDB - MongoDB este unul dintre cele mai bune instrumente pentru dezvoltatorii web serioși, iar acest articol despre MongoDB va analiza tot ceea ce trebuie să știți pentru a construi aplicații web cu MongoDB. Dar înainte de a începe, să aruncăm o privire mai atentă la instrumentul popular.
Ce este MongoDB?
În termenii cei mai simpli, MongoDB este o bază de date NoSQL orientată pe mai multe platforme, care utilizează documente similare JSON folosind scheme dinamice, numite documente BSON, în loc să urmeze structura bazei de date relaționale convenționale (RDB).
Este vorba despre o mulțime de termeni cu care s-ar putea să nu vă familiarizați, așa că haideți să-i defăimăm mai întâi.
Acum, o bază de date orientată pe document funcționează pe conceptul de bază că un document de date conține „metadate”, care sunt valori utilizate pentru a identifica tipul de date și pentru a ușura stocarea și regăsirea atunci când este nevoie. De exemplu, să ne uităm la următoarele două linii de date:
- John Hancock
- Arhitect
O privire la aceste două rânduri ar trebui să vă ofere o idee despre ce se referă aceste date: numele și ocupația unei persoane. Totuși, o mașină nu poate face această distincție. Trebuie să i se spună tipul de date.
Într-un RDB, acest tip poate fi stocat într-un depozit de valori cheie, separat de documentul în sine. Cu toate acestea, cu o bază de date orientată către documente, trebuie să determinați tipul de date pe măsură ce introduceți codul. Deci, termini să scrii puțin așa:
- John Hancock
- Arhitect
Și acolo te duci; acum tipul de date a fost definit chiar în document. Acest lucru oferă o flexibilitate care nu este prezentă în RDB, motiv pentru care bazele de date orientate pe documente sunt atât de populare pentru aplicațiile web.
La urma urmei, aplicațiile web sunt supuse unor modificări și actualizări regulate. Desigur, RDB-urile au și avantajele lor, iar bazele de date orientate către documente nu sunt perfecte pentru fiecare situație, dar să nu ne descurcăm.
Să trecem la JSON, BSON și scheme. JSON se referă la notarea obiectului JavaScript, dar este de fapt un format de date standard deschis care poate funcționa cu alte limbi decât JavaScript.
O schemă este structura bazei de date, definită ca tabele în cazul RDB-urilor. Întrucât bazele de date orientate pe documente nu utilizează astfel de tabele, ele sunt în esență lipsite de structură sau de schemă.
În ceea ce privește BSON, asta înseamnă doar Binary JSON și este formatul de stocare a datelor pentru baza de date MongoDB. Aceasta este tot ce trebuie să știți despre asta în această etapă.
Acum, cu elementele de bază, să vedem de ce MongoDB este o alegere bună pentru realizarea aplicațiilor web:
De ce să mergi pentru MongoDB?
Există mai multe motive pentru popularitatea MongoDB pentru construirea de aplicații web. MongoDB nu este un instrument perfect; departe de ea, de fapt. MongoDB are mai multe provocări și nu este potrivită pentru toate aplicațiile web. Dar MongoDB funcționează bine când vine vorba de aplicații web din următoarele motive:
-
MongoDB este schemos
Baza de date MongoDB poate deține colecții de documente cu fiecare document având dimensiunea proprie, conținutul și numărul de câmpuri. Puteți să vă întoarceți și să modificați valorile cheie sau să le adăugați și să le ștergeți după cum doriți.
Acest lucru face ca structura unui singur obiect să fie clară și simplă, iar MongoDB este, de asemenea, ușor de extins la nevoie.
-
MongoDB are un scop general
Baza de date poate fi utilizată pentru o serie de aplicații web, inclusiv gestionarea datelor clienților, gestionarea conținutului, hub-uri de date, aplicații mobile, Internet of Things, Big Data, cataloage de produse și active și baze de date ca serviciu.
-
MongoDB acceptă ascuțirea automată
Bazele de date relaționale se scalează în general pe verticală, în care un singur server găzduiește baza de date completă. Aceasta poate limita scara de funcționare, soluția fiind de a adăuga pe orizontală și adăuga servere, mai degrabă decât concentrarea capacității pe un singur server.
Partajarea unei baze de date se face pentru a evita acest lucru și a face ca hardware-ul să acționeze ca un singur server. Dezvoltatorii trebuie să implementeze mai multe baze de date relaționale pe mașini și să dezvolte codul aplicației pentru distribuirea datelor, interogări și agregarea rezultatelor.
MongoDB și alte baze de date NoSQL acceptă partajarea automată, ceea ce înseamnă că acestea răspândesc automat datele pe diverse servere, fără ca aplicația să fie conștientă de compoziție.
MongoDB este util mai ales în cloud computing. Ca dezvoltator, nu trebuie să creezi platforme costisitoare și complexe pentru a sprijini aplicațiile web, ci te poți concentra pe scrierea codului propriu al aplicației.
Mai mulți termeni pentru a afla despre MongoDB
Bine, acum am acoperit elementele de bază și beneficiile MongoDB. Înainte de a ne murdări mâna, haideți să mai analizăm câțiva termeni cu care ar trebui să vă familiarizați:
- Baza de date: o bază de date conține colecții și fiecare bază de date are propriile fișiere pe sistemul de fișiere. Un server tipic MongoDB va avea mai multe baze de date.
- Colecție: un grup de documente MongoDB se numește colecție, iar acesta este echivalentul unui tabel din RDB. O singură bază de date va avea o colecție și fiecare document va avea câmpuri diferite. Spre deosebire de tablete, colecțiile nu au o schemă.
- Document: un document este o mulțime de perechi cheie-valoare și are o schemă dinamică, ceea ce înseamnă că diferite documente din aceeași colecție pot avea seturi și structuri de câmpuri diferite.
Cursuri recomandate
- Cursuri de depanare Ruby
- PHP Programare MySQL
- Instruire de programare online VB.NET
- Curs de formare ITIL Foundation
Construirea de aplicații web
Aplicațiile web care sunt construite pentru acest anumit ghid MongoDB sunt un agregator RSS precum Google Reader. Aplicațiile web vor avea două componente cheie: o API REST și un grabber Feed.
Pentru a înțelege ce este o API REST, trebuie să știți mai întâi puțin despre stiva MEAN. Codul pentru un grabber feed poate fi găsit chiar și în directorul github.
Înțelegerea stivei MEAN:
Stiva MEAN înseamnă următoarele:
- MongoDB, care este baza de date care va fi utilizată pentru aplicația web
- js, care este un cadru ușor de aplicații web
- js, care este un cadru pentru crearea de aplicații web bogate în JavaScript și HTML5
- js, care este un interpret JavaScript de partea serverului
Pentru aplicațiile web discutate aici, va fi creată o API REST în locul unei interfețe de utilizator HTML. API-ul reprezentativ de transfer de stat (REST) este o alternativă mai ușoară la API-urile bazate pe XML și poate servi drept bază pentru orice tip de interfață, în ciuda faptului că nu are o interfață de utilizator.
Funcțiile REST pe un model client-server, cu clientul care trimite comenzi HTTP către serverul HTTP, împreună cu parametrii variabili codați în adresa URL care descrie obiectul țintă al acțiunii. Apoi, serverul răspunde cu codul JSON și rezultatul.
Acum, MongDB și JavaScript reacționează bine cu JSON, făcând stiva MEAN să se potrivească în special aplicațiilor web.
CRUD
Acronimul CRUD înseamnă pentru a crea, citi, actualiza și șterge. Acestea sunt operații obișnuite ale bazelor de date care se traduc în HTTP ca postare, primire, punere și ștergere.
Construirea unei API REST
Să începem prin crearea unei API REST, dezvoltând fundamentul pentru construirea aplicațiilor web. Aplicația ar putea fi bazată pe web sau proiectată pentru Android, iOS sau alte platforme specifice. Pentru început, să enumerăm lucrurile pe care aplicația le va putea face:
- Permiteți utilizatorilor să își creeze un cont
- Permiteți-le să se aboneze sau să vă dezabonați la feeduri
- Dă-le abilitatea de a citi și marca marcările de înregistrare ca fiind citite sau necitite
- Urmăriți fluxurile RSS pentru monitorizare
- Stocați informațiile utilizatorilor în conturile respective
- Urmăriți abonamentele de alimentare ale utilizatorilor
- Urmăriți o intrare de alimentare citită deja de un utilizator
Modelarea datelor
Pe baza cerințelor, aplicațiile web vor avea nevoie de patru colecții pentru gestionarea informațiilor:
- Colecția de utilizatori
- Colectarea hranei
- Colecția de mapare a intrărilor de utilizatori
- Colectarea intrărilor de furaje
Iată o privire mai atentă asupra fiecăruia:
-
Colectarea de furaje:
Următorul JSON este un exemplu bun pentru modelarea unei colecții de feeduri:
( "_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” )
Documentul JSON de mai sus este un flux RSS pentru Reuters, care urmărește informații despre cele mai recente știri publicate pe site-ul web. Există o mulțime de câmpuri pe care le vedeți aici, dar cele mai importante pentru funcționarea aplicațiilor web este adresa URL a fluxului și descrierea feedului.
Adresa URL este importantă pentru preluarea conținutului din sursa potrivită, iar descrierea este importantă, deoarece oferă un rezumat pentru feed.
Restul câmpurilor, între timp, sunt pentru uz intern. Puteți adăuga mai multe sau puteți elimina unele dintre cele pe care doriți. Chiar în partea de sus a documentului se află câmpul _id. Fiecare document trebuie să aibă acest câmp, iar ID-ul trebuie să fie unic.
În exemplul de mai sus, un ID a fost creat manual pentru câmp. Dacă ratați acest lucru, MongoDB va realiza automat unul.
-
Urmărirea și colectarea intrărilor de feeduri
Dacă doriți să urmăriți mai multe fluxuri de știri, puteți adăuga mai multe dintre ele folosind același format de mai sus. După ce ați terminat adăugarea fluxurilor, este timpul să le urmăriți și să le colectați. Mai jos este prezentat un document pentru colectarea intrărilor de furaje:
( "_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") )
Încă o dată, puteți vedea câmpul _id completat, împreună cu alte câmpuri, cum ar fi descrierea, rezumatul și titlul. Câmpul de conținut folosește un tablou, iar MongoDB permite matricilor să stocheze documente. Acest aranjament sub-document poate fi util în special în situațiile în care toate informațiile trebuie să fie păstrate împreună.
Ia o notă de feedID; acesta are același tip ObjectId și valoarea lui _id ca și documentul de intrare de alimentare anterioară pentru feedul Reuters. Acesta oferă un model referențial, astfel încât să puteți interoga colecția de feeduri pe aceeași valoare de ID pentru a returna documentul Reuters.
-
Urmărirea utilizatorului
Iată un exemplu de document pentru evidența utilizatorilor:
( "_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") ), )
Aici, utilizatorul are trei atribute cheie: prenumele, prenumele și adresa de e-mail. Există, de asemenea, două elemente care pot fi utilizate cu API-ul de gestionare a utilizatorului Stormpath: sp_api_key_secret și sp_api_key_id.
Câmpul final, subs, este tabloul de abonamente și indică fluxul la care utilizatorul este abonat.
-
Maparea intrărilor de feeduri
Colecția finală a acesteia permite cartografierea utilizatorilor pentru feeduri și urmărirea fluxurilor care au fost citite:
( "_id" : ObjectId("523b2fcc054b1b8c579bdb82"),
"read" : true,
"user_id" : ObjectId("54ad6c3ae764de42070b27b1"),
"feed_entry_id" : ObjectId("523b1153a2aa6a3233a91412"),
"feed_id" : ObjectId("523b1153a2aa6a3233a913f8") )
După cum vedeți, un boolean adevărat / fals de bază este utilizat pentru a marca dacă feedul a fost citit sau nu. Acum, utilizatorul ar trebui să poată îndeplini următoarele funcții:
- Crearea unui cont
- Abonare sau dezabonare la feeduri
- Citirea intrărilor de feeduri
- Marcarea fluxurilor sau intrărilor ca fiind citite sau necitite
- Resetați parola
Iată o listă a modului de mapare a acestor operații către rutele și comenzile HTTP.
Traseu | Comanda | Descriere | variabile |
/ Utilizator / INSCRIETI | POST | Înregistrați un utilizator nou | Nume numele de familie parola |
/ Utilizator / resetPassword | A PUNE | Resetare parola | |
/ feed-uri | OBȚINE | Obțineți abonamente pentru fiecare utilizator cu descriere și număr necitit | |
/ feed-uri / abona | A PUNE | Abonați-vă la un nou feed | adresă url feed |
/ feeds / intrări | OBȚINE | Obțineți toate intrările pentru fluxurile la care utilizatorul este abonat | |
/ feed-uri // intrări | OBȚINE | Obțineți toate intrările pentru un anumit flux | |
/ Feed-uri / | A PUNE | Marcați toate intrările pentru un anumit flux ca fiind citite sau necitite | citeste = |
/ Feed-uri // intrări / | A PUNE | Marcați o intrare specifică ca citită sau necitită | citeste = |
/ Feed-uri / | ȘTERGE | Dezabonați-vă de la acest feed special |
HTTP securizat este abordarea standard utilizată pentru trimiterea de detalii sensibile, cum ar fi parolele într-un mediu de producție
Pașii următori: autentificarea lumii reale
Autentificarea utilizatorului este importantă pentru gestionarea securizată a utilizatorilor, parolelor și resetărilor. Există mai multe modalități de autentificare a conturilor de utilizator.
De exemplu, puteți utiliza un plugin pentru pașapoarte cu Node.js, care este util pentru autentificarea cu Facebook, Twitter și conturi de social media.
Exemplul de mai sus depinde de utilizarea Stormpath, o API REST care acceptă autorizarea și autentificarea prin cheile API și oferă gestionarea utilizatorului ca serviciu.
Articole recomandate
Iată câteva articole care vă vor ajuta să obțineți mai multe detalii despre aplicațiile Web folosind MongoDB, așa că trebuie doar să parcurgeți linkul.
- HTML5 vs Flash încântat să cunoască diferența?
- Java vs Node JS - 8 diferențe pe care ar trebui să le știi
- Aplicația de testare web este un ghid util și cuprinzător
- Cum să utilizați șabloane web HTML | Cerere | Mobil | Cel mai bun
- Dezvoltare software vs Dezvoltare web
- Cum să pregătiți instrumentele Google Analytics pentru a vă ajuta (Ghid)
- MongoDB vs PostgreSQL: Care sunt diferențele
- Ghid util pe MongoDB vs Hadoop
- Cel mai bun ghid de pe MongoDB vs Cassandra