Webapplikationer, der bruger MongoDB - MongoDB er et af de bedste værktøjer til seriøse webudviklere, og denne artikel på MongoDB vil se på alt hvad du har brug for at vide for at bygge webapplikationer med MongoDB. Men inden vi begynder, lad os se nærmere på det populære værktøj.

Billedkilde: pixabay.com

Hvad er MongoDB?

På de enkleste vilkår er MongoDB en tværorienteret dokumentorienteret NoSQL-database, der bruger JSON-lignende dokumenter ved hjælp af dynamiske skemaer, kaldet BSON-dokumenter, i stedet for at følge den konventionelle relationelle databasestruktur (RDB) -struktur.

Det er en masse udtryk, som du måske ikke er bekendt med, så lad os først bryde dem ned.

Nu fungerer en dokumentorienteret database på det grundlæggende koncept, at et datadokument indeholder 'metadata', som er værdier, der bruges til at identificere datatypen og gøre det lettere at gemme og hente efter behov. Lad os for eksempel se på de følgende to linjer med data:

  • John Hancock
  • Arkitekt

Et kig på disse to linjer skal give dig en idé om, hvad disse data henviser til: en persons navn og erhverv. En maskine kan imidlertid ikke skelne mellem denne sondring. Det skal fortælles om typen af ​​data.

I en RDB kan denne type gemmes i en nøgleværdi, der er adskilt fra selve dokumentet. Med en dokumentorienteret database får du dog bestemme datatypen, mens du skriver koden. Så du ender med at skrive lidt sådan:

  • John Hancock
  • Arkitekt

Og der går du; nu er typen af ​​data defineret lige i dokumentet. Dette giver en fleksibilitet, der ikke findes i RDB'er, og derfor er dokumentorienterede databaser så populære til webapplikationer.

Når alt kommer til alt, er webapplikationer underlagt regelmæssige ændringer og opdateringer. Selvfølgelig har RDB'er også deres fordele, og dokumentorienterede databaser er ikke perfekte til enhver situation, men lad os ikke fortryde.

Lad os gå ind på JSON, BSON og skemaer. JSON henviser til JavaScript Object Notation, men det er faktisk et åbent standarddataformat, der kan fungere med andre sprog end JavaScript.

Et skema er strukturen i databasen, defineret som tabeller i tilfælde af RDB'er. Da dokumentorienterede databaser ikke bruger sådanne tabeller, er de i det væsentlige strukturløse eller skemeløse.

Hvad angår BSON, ja, det betyder bare for Binary JSON, og det er datalagringsformatet til MongoDB-databasen. Det er alt hvad du behøver at vide om det på dette tidspunkt.

Lad os se på, hvorfor MongoDB er et godt valg til at fremstille webapplikationer nu:

Hvorfor gå til MongoDB?

Der er flere grunde til populariteten af ​​MongoDB til opbygning af webapplikationer. MongoDB er ikke et perfekt værktøj; langt fra det faktisk. MongoDB har flere udfordringer, og det er ikke den rigtige pasform til alle webapplikationer. Men MongoDB fungerer godt, når det kommer til webapplikationer af følgende grunde:

  • MongoDB er skemløs

MongoDB-databasen kan indeholde samlinger af dokumenter, hvor hvert dokument har sin egen størrelse, indhold og antal felter. Du kan gå tilbage og ændre nøgleværdierne, eller tilføje og slette dem, som du vil.

Dette gør strukturen af ​​et enkelt objekt klart og ligetil, og MongoDB er også let at skalere ud, når det er nødvendigt.

  • MongoDB er generelle formål

Databasen kan bruges til en række webapplikationer, herunder kundedatastyring, indholdsstyring, datahub, mobile apps, Internet of Things, Big Data, produkt- og aktivkataloger og database-as-a-service.

  • MongoDB understøtter automatisk afskærmning

Relationsdatabaser skaleres generelt lodret, hvor en enkelt server er vært for den komplette database. Dette kan begrænse omfanget af operationen, hvor løsningen er at tilføje vandret og tilføje servere i stedet for at koncentrere kapaciteten på en enkelt server.

Deling af en database udføres for at undgå dette og få hardware til at fungere som en enkelt server. Udviklere skal distribuere flere relationelle databaser på tværs af maskiner og udvikle applikationskode til distribution af data, forespørgsler og sammenlægge resultaterne.

MongoDB og andre NoSQL-databaser understøtter automatisk deling, hvilket betyder, at de automatisk spreder data på forskellige servere, uden at applikationen bliver gjort opmærksom på sammensætningen.

MongoDB er især nyttigt med cloud computing. Som udvikler behøver du ikke at bygge dyre og komplekse platforme til understøttelse af webapplikationer, men kan fokusere på at skrive den aktuelle applikationskode.

Et par flere udtryk til at lære om MongoDB

Okay, så vi har nu dækket det grundlæggende og fordelene ved MongoDB. Inden vi får vores hånd beskidt, lad os se på et par flere udtryk, som du skal være bekendt med:

  • Database: en database indeholder samlinger, og hver database har sine egne filer på filsystemet. En typisk MongoDB-server vil have flere databaser.
  • Samling: en gruppe af MongoDB-dokumenter kaldes en samling, og det svarer til en tabel i RDB'er. En enkelt database har en samling, og hvert dokument har forskellige felter. I modsætning til tabletter har samlinger ikke et skema.
  • Dokument: Et dokument er en masse nøgleværdipar og har et dynamisk skema, hvilket betyder, at forskellige dokumenter i samme samling kan have forskellige feltsæt og strukturer.

    Anbefalede kurser

  • Ruby-fejlsøgningskurser
  • PHP MySQL-programmeringstræning
  • Online VB.NET-programmeringstræning
  • ITIL Foundation Training Course

Opbygning af webapplikationer

Webapplikationer, der er bygget til denne særlige MongoDB-guide er en RSS-aggregator som Google Reader. Webapplikationerne har to nøglekomponenter: Et REST API og en Feed grabber.

For at forstå, hvad et REST API er, skal du først vide lidt om MEAN-stakken. Koden til en feed grabber kan findes selv i github-biblioteket.

Forståelse af MEAN-stakken:

MEAN-stakken står for følgende:

  1. MongoDB, som er den database, der skal bruges til webapplikationen
  2. js, som er en let webapplikationsramme
  3. js, som er en ramme for oprettelse af JavaScript- og HTML5-rige webapplikationer
  4. js, som er en JavaScript-tolk på serversiden

For de webapplikationer, der diskuteres her, oprettes et REST API i stedet for en HTML-brugergrænseflade. Representative State Transfer (REST) ​​API er et lettere vægtalternativ til XML-baserede API'er og kan tjene som base for enhver grænsefladetype, på trods af ikke at have en brugergrænseflade.

REST-funktioner på en klientservermodel, hvor klienten sender HTTP-kommandoer til HTTP-serveren sammen med variable parametre, der er kodet i URL-adressen, der beskriver handlingsmålets objekt. Serveren svarer derefter med JSON og resultatkode.

Nu reagerer både MongDB og JavaScript godt med JSON, hvilket gør MEAN-stakken især velegnet til webapplikationer.

CRUD

Forkortelsen CRUD står for at oprette, læse, opdatere og slette. Dette er almindelige databasefunktioner, der oversætter i HTTP som post, hent, put og slet.

Opbygning af et REST API

Lad os begynde med at oprette et REST API og udvikle grundlaget for opbygning af webapplikationer. Programmet kan være webbaseret eller designet til Android, iOS eller andre specifikke platforme. Til at begynde med, lad os liste over de ting, som appen vil være i stand til at gøre:

  1. Tillad brugere at oprette en konto
  2. Aktivér dem til at abonnere eller afmelde feeds
  3. Giv dem muligheden for at læse og markere feedindgange som læste eller ulæste
  4. Spor RSS-feeds til overvågning
  5. Gem brugerinformation på deres respektive konti
  6. Spor abonnement på brugerfeed
  7. Spor en feedindgang, der allerede er læst af en bruger

Datamodellering

Baseret på kravene har webapplikationer brug for fire samlinger til styring af informationen:

  1. Brugersamling
  2. Foderindsamling
  3. Samling af kortlægning af indtastning af brugerfeed
  4. Indsamling af foderindgang

Her er et nærmere kig på hver enkelt:

  • Foderindsamling:

Følgende JSON er et godt eksempel til modellering af en fodersamling:

( "_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-dokumentet ovenfor er et RSS-feed til Reuters, der sporer oplysninger om de seneste nyheder, der er offentliggjort på webstedet. Der er mange felter, som du ser her, men de vigtigste for webapplikationer til at fungere er URL'et til feedet og feedbeskrivelsen.

URL-adressen er vigtig for at hente indhold fra den rigtige kilde, og beskrivelsen er vigtig, fordi den giver et resume til feedet.

Resten af ​​felterne er i mellemtiden beregnet til intern brug. Du kan tilføje mere eller fjerne noget af det, som du har lyst til. Lige øverst i dokumentet er feltet _id. Hvert dokument skal have dette felt, og ID'et skal være unikt.

I ovenstående eksempel er der oprettet et ID manuelt til feltet. Hvis du går glip af dette, opretter MongoDB automatisk en.

  • Sporing og indsamling af feedindgange

Hvis du vil spore flere nyhedsfeeds, kan du tilføje flere af dem ved hjælp af det samme format ovenfor. Når du er færdig med at tilføje feeds, er det tid til at spore og indsamle dem. Nedenfor er et dokument til indsamling af foderindførsel:

( "_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") )

Endnu en gang kan du se feltet _id udfyldt sammen med nogle andre felter som beskrivelse, resume og titel. Indholdsfeltet bruger en matrix, og MongoDB giver arrays mulighed for at gemme dokumenter. Dette underdokumentarrangement kan være særlig nyttigt i situationer, hvor alle oplysninger skal holdes sammen.

Noter feedID; det har den samme ObjectId-type og værdien af ​​_id som det tidligere feedindgangsdokument til Reuters-feedet. Dette tilbyder en referencemodel, så du kan forespørge fodersamlingen på den samme ID-værdi for at returnere Reuters-dokumentet.

  • Sporing af brugeren

Her er et eksempel på dokument til at holde styr på brugerne:

( "_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") ), )

Her har brugeren tre nøgleattributter: fornavn, efternavn og e-mail-adresse. Der er også to elementer, der kan bruges med Stormpath-brugeradministrations-API: sp_api_key_secret og sp_api_key_id.

Det sidste felt, subs, er abonnementsarray og fortæller det feed, som brugeren abonnerer på.

  • Feed-kortlægning

Den endelige samling hende muliggør kortlægning af brugere til feeds og sporing af de feeds, der er læst:

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

"read" : true,

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

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

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

Som du kan se, bruges en grundlæggende sand / falsk boolsk til at markere, om foderet er læst eller ej. Nu skal brugeren være i stand til at udføre følgende funktioner:

  1. Oprettelse af en konto
  2. Tilmelding eller afmelding af feeds
  3. Læse feedindgange
  4. Markering af feeds eller poster som læst eller ulæst
  5. Nulstil adgangskoden

Her er en liste over, hvordan man kortlægger disse operationer til HTTP-ruter og kommandoer.

RuteKommandoBeskrivelseVariable
/ Bruger / tilmeldeSTOLPERegistrer en ny brugerfornavn
efternavn
e-mail
adgangskode
/ Bruger / resetPasswordSÆTTENulstil kodeorde-mail
/ feedsFå feedabonnementer til hver bruger med beskrivelse og antal ulæste
/ feeds / abonnereSÆTTEAbonner på et nyt feedfeedURL
/ feeds / posterHent alle poster for feeds, som brugeren er abonneret på
/ feeds // posterHent alle poster til et specifikt feed
/ Feeds /SÆTTEMarker alle poster for et specifikt feed som læst eller ulæstlæse =
/ Feeds // poster /SÆTTEMarker en bestemt post som enten læst eller ulæstlæse =
/ Feeds /SLETAfmeld abonnementet på dette særlige feed

Secure HTTP er den standardmetode, der bruges til at sende følsomme detaljer som adgangskoder i et produktionsmiljø

Næste trin: ægthedsverificering

Brugergodkendelse er vigtig for sikker styring af brugere, adgangskoder og nulstilling. Der er flere måder at autentificere brugerkonti på.

For eksempel kan du bruge et Passport-plugin med Node.js, som er nyttigt at autentificere med Facebook, Twitter og sociale mediekonti.

Ovenstående eksempel afhænger af brugen af ​​Stormpath, et REST-API, der understøtter autorisation og godkendelse via API-nøgler og tilbyder brugeradministration-as-a-service.

Anbefalede artikler

Her er nogle artikler, der hjælper dig med at få flere detaljer om webapplikationer ved hjælp af MongoDB, så bare gå gennem linket.

  1. HTML5 vs Flash glade for at kende forskellen?
  2. Java vs Node JS - 8 forskelle, du burde vide
  3. Web-testapplikation en nyttig og omfattende guide
  4. Sådan bruges webskabeloner HTML | Anvendelse | Mobil | Bedst
  5. Softwareudvikling vs webudvikling
  6. Sådan forberedes webanalyseværktøjer til at arbejde for dig (guide)
  7. MongoDB vs PostgreSQL: Hvad er forskellene
  8. Nyttig guide til MongoDB vs Hadoop
  9. Bedste guide til MongoDB vs Cassandra