Slik bygger du webapplikasjoner ved bruk av MongoDB

Innholdsfortegnelse:

Anonim

Nettapplikasjoner som bruker MongoDB - MongoDB er et av de beste verktøyene for seriøse webutviklere, og denne artikkelen om MongoDB vil se på alt du trenger å vite for å bygge webapplikasjoner med MongoDB. Men før vi begynner, la oss se nærmere på det populære verktøyet.

Bildekilde: pixabay.com

Hva er MongoDB?

På enkleste vilkår er MongoDB en tverrplattform dokumentorientert NoSQL-database som bruker JSON-lignende dokumenter ved bruk av dynamiske skjemaer, kalt BSON-dokumenter, i stedet for å følge den konvensjonelle relasjonsdatabasestrukturen (RDB).

Det er mange begrep som du kanskje ikke er kjent med, så la oss bryte dem ned først.

Nå fungerer en dokumentorientert database på det grunnleggende konseptet at et datadokument inneholder 'metadata', som er verdier som brukes til å identifisere datatypen og gjøre det lettere å lagre og hente når det er nødvendig. La oss for eksempel se på følgende to linjer med data:

  • John Hancock
  • Arkitekt

En titt på disse to linjene skal gi deg et inntrykk av hva disse dataene refererer til: en persons navn og yrke. En maskin kan imidlertid ikke skille ut denne skillet. Det må fortelles hvilken type data.

I en RDB kan denne typen lagres i en nøkkelverdi-butikk som er atskilt fra selve dokumentet. Imidlertid, med en dokumentorientert database, får du bestemme datatypen når du skriver inn koden. Så du ender opp med å skrive litt slik:

  • John Hancock
  • Arkitekt

Og der går du; nå er typen data definert rett i dokumentet. Dette gir en fleksibilitet som ikke er til stede i RDB-er, og det er grunnen til at dokumentorienterte databaser er så populære for webapplikasjoner.

Tross alt er webapplikasjoner gjenstand for regelmessige endringer og oppdateringer. Selvfølgelig har RDB sine fordeler også, og dokumentorienterte databaser er ikke perfekte for enhver situasjon, men la oss ikke tømme.

La oss gå over til JSON, BSON og skjemaer. JSON refererer til JavaScript Object Notation, men det er faktisk et åpent standard dataformat som kan fungere med andre språk enn JavaScript.

Et skjema er strukturen i databasen, definert som tabeller i tilfelle RDB-er. Siden dokumentorienterte databaser ikke bruker slike tabeller, er de i hovedsak strukturløse eller skjemeløse.

Når det gjelder BSON, vel, det betyr bare for Binary JSON, og det er datalagringsformatet for MongoDB-databasen. Det er alt du trenger å vite om det på dette stadiet.

La oss se på hvorfor MongoDB er et godt valg for å lage nettapplikasjoner:

Hvorfor gå for MongoDB?

Det er flere grunner til populariteten til MongoDB for å bygge webapplikasjoner. MongoDB er ikke et perfekt verktøy; langt fra det, faktisk. MongoDB har flere utfordringer, og det er ikke riktig passform for alle webapplikasjoner. Men MongoDB fungerer bra når det gjelder nettapplikasjoner av følgende årsaker:

  • MongoDB er skjemløs

MongoDB-databasen kan inneholde samlinger av dokumenter hvor hvert dokument har sin egen størrelse, innhold og antall felt. Du kan gå tilbake og endre nøkkelverdiene, eller legge til og slette dem som du vil.

Dette gjør også strukturen til et enkelt objekt klart og greit, og MongoDB er også lett å skalere ut når det er nødvendig.

  • MongoDB er generelt formål

Databasen kan brukes til en rekke nettapplikasjoner, inkludert kundedatastyring, content management, data hubs, mobile apps, Internet of Things, Big Data, produkt- og aktivakataloger og database-as-a-service.

  • MongoDB støtter auto-sharding

Relasjonsdatabaser skaleres vanligvis vertikalt, der en enkelt server er vert for hele databasen. Dette kan begrense driftsskalaen, med løsningen å legge horisontalt og legge til servere i stedet for å konsentrere kapasitet på en enkelt server.

Deling av en database gjøres for å unngå dette og få maskinvare til å fungere som en enkelt server. Utviklere må distribuere flere relasjonsdatabaser på tvers av maskiner, og utvikle applikasjonskode for distribusjon av dataene, spørringene og samlet resultatene.

MongoDB og andre NoSQL-databaser støtter autodeling, noe som betyr at de automatisk sprer data på forskjellige servere uten at applikasjonen blir gjort oppmerksom på sammensetningen.

MongoDB er spesielt nyttig med cloud computing. Som utvikler trenger du ikke å bygge dyre og komplekse plattformer for å støtte webapplikasjoner, men kan fokusere på å skrive den faktiske applikasjonskoden.

Noen flere termer å lære om MongoDB

OK, så vi har nå dekket det grunnleggende og fordelene med MongoDB. Før vi skitner hånden, la oss se på noen flere ord som du bør være kjent med:

  • Database: en database inneholder samlinger, og hver database har sine egne filer på filsystemet. En typisk MongoDB-server vil ha flere databaser.
  • Samling: en gruppe MongoDB-dokumenter kalles en samling, og dette tilsvarer en tabell i RDB-er. En enkelt database vil ha en samling, og hvert dokument vil ha forskjellige felt. I motsetning til nettbrett har samlinger ikke et skjema.
  • Dokument: Et dokument er en haug med nøkkelverdipar og har et dynamisk skjema, noe som betyr at forskjellige dokumenter i samme samling kan ha forskjellige feltsett og strukturer.

    Anbefalte kurs

  • Ruby feilsøkingskurs
  • PHP MySQL-programmeringstrening
  • Online VB.NET-programmeringstrening
  • ITIL Foundation Training Course

Bygge nettapplikasjoner

Nettapplikasjonene som bygges for denne spesielle MongoDB-guiden er en RSS-aggregator som Google Reader. Nettapplikasjonene vil ha to viktige komponenter: En REST API og en Feed grabber.

For å forstå hva et REST API er, må du først vite litt om MEAN-stacken. Koden for en feed grabber, kan du finne selv i github-katalogen.

Forstå MEAN-stacken:

MEAN-stabelen står for følgende:

  1. MongoDB, som er databasen som skal brukes til nettapplikasjonen
  2. js, som er et lett rammeverk for webapplikasjoner
  3. js, som er et rammeverk for å lage JavaScript- og HTML5-rike webapplikasjoner
  4. js, som er en JavaScript-tolk på serversiden

For webapplikasjonene som diskuteres her, opprettes et REST API i stedet for et HTML-brukergrensesnitt. Representative State Transfer (REST) ​​API er et lettere alternativ til XML-baserte API-er og kan tjene som base for alle grensesnitttyper, til tross for at de ikke har brukergrensesnitt.

REST-funksjoner på en klient-servermodell, med klienten som sender HTTP-kommandoer til HTTP-serveren, sammen med variable parametere som er kodet i URLen som beskriver målobjektet for handlingen. Serveren svarer deretter med JSON og resultatkode.

Nå reagerer både MongDB og JavaScript bra med JSON, noe som gjør MEAN-stacken spesielt egnet for nettapplikasjonene.

CRUD

Forkortelsen CRUD står for å lage, lese, oppdatere og slette. Dette er vanlige databaseoperasjoner som oversetter i HTTP som post, få, satt og slettet.

Bygge et REST API

La oss begynne med å lage et REST API, utvikle grunnlaget for å bygge nettapplikasjonene. Applikasjonen kan være nettbasert eller designet for Android, iOS eller andre spesifikke plattformer. Til å begynne med, la oss liste opp tingene som appen vil kunne gjøre:

  1. Tillat brukere å opprette en konto
  2. Aktiver dem til å abonnere på eller avmelde feeder
  3. Gi dem muligheten til å lese og merke fôrposter som lest eller ulest
  4. Spor RSS-feeds for overvåking
  5. Lagre brukerinformasjon i sine respektive kontoer
  6. Spor brukerfeedabonnement
  7. Spor en innmating som allerede er lest av en bruker

Datamodellering

Basert på kravene, trenger webapplikasjonene fire samlinger for å håndtere informasjonen:

  1. Brukersamling
  2. Fôrsamling
  3. Innsamling av kartlegging av brukerfeed
  4. Innføring av fôr

Her ser du nærmere på hver enkelt:

  • Fôrsamling:

Følgende JSON er et godt eksempel for modellering av en fôrsamling:

( "_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 over er en RSS-feed for Reuters, og sporer informasjon om de siste nyhetene som er publisert på nettstedet. Det er mange felt du ser her, men de viktigste for at webapplikasjonene skal fungere er URLen til strømmen og feedbeskrivelsen.

URL-adressen er viktig for å hente innhold fra riktig kilde, og beskrivelsen er viktig fordi den gir et sammendrag for strømmen.

Resten av feltene er i mellomtiden til internt bruk. Du kan legge til mer eller fjerne noe av det du vil. Helt øverst i dokumentet er _id-feltet. Hvert dokument må ha dette feltet, og ID-en må være unik.

I eksemplet over er det opprettet en ID manuelt for feltet. Hvis du går glipp av dette, vil MongoDB automatisk lage en.

  • Spore og samle innføringer

Hvis du vil spore flere nyhetsstrømmer, kan du legge til flere av dem med samme format ovenfor. Når du er ferdig med å legge til innmatingene, er det på tide å spore og samle dem. Nedenfor er et dokument for innføring av feed:

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

Nok en gang kan du se _id-feltet fylt ut, sammen med noen andre felt som beskrivelse, sammendrag og tittel. Innholdsfeltet bruker en matrise, og MongoDB gjør det mulig for matriser å lagre dokumenter. Dette underdokumentarrangementet kan være spesielt nyttig i situasjoner der all informasjonen må holdes sammen.

Noter feedID; den har samme ObjectId-type og verdien av _id som det tidligere innføringsdokumentet for Reuters-strømmen. Dette tilbyr en referansemodell, slik at du kan spørre om fôrsamlingen på samme ID-verdi for å returnere Reuters-dokumentet.

  • Sporing av brukeren

Her er et eksempel på dokument for å holde oversikt over brukere:

( "_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 brukeren tre viktige attributter: fornavn, etternavn og e-postadresse. Det er også to elementer som kan brukes med Stormpath brukeradministrasjons-API: sp_api_key_secret og sp_api_key_id.

Det endelige feltet, subs, er abonnementsoppstillingen og forteller strømmen som brukeren abonnerer på.

  • Innføringskartlegging av fôr

Den endelige samlingen hennes muliggjør kartlegging av brukere til innmatinger og sporing av innmatingene som er lest:

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

"read" : true,

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

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

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

Som du ser, brukes en grunnleggende sann / falsk boolsk for å merke om fôret har blitt lest eller ikke. Nå skal brukeren kunne utføre følgende funksjoner:

  1. Oppretter en konto
  2. Abonnere eller avslutte abonnement på feeder
  3. Leser fôroppføringer
  4. Merk feeds eller oppføringer som lest eller ulest
  5. Tilbakestill passordet

Her er en liste over hvordan du kartlegger disse operasjonene til HTTP-ruter og kommandoer.

RuteKommandoBeskrivelsevariabler
/ User / meldePOSTRegistrer ny brukerfornavn
etternavn
e-post
passord
/ User / resetPasswordSETTEReset passorde-post
/ feedsFå feedabonnement for hver bruker med beskrivelse og ulest antall
/ feeds / abonnereSETTEAbonner på en ny strømfeedurl
/ feeds / oppføringeneFå alle oppføringer for feeds brukeren abonnerer på
/ feeds // oppføringerFå alle oppføringer for en spesifikk strøm
/ Feeds /SETTEMerk alle oppføringer for en spesifikk innmating som lest eller ulestlese =
/ Feeds // oppføringer /SETTEMerk en spesifikk oppføring som enten lest eller ulestlese =
/ Feeds /DELETEAvslutt abonnementet på denne spesielle strømmen

Secure HTTP er standardtilnærmingen som brukes for å sende sensitive detaljer som passord i et produksjonsmiljø

Neste trinn: ekte verifikasjon i verden

Brukergodkjenning er viktig for sikker håndtering av brukere, passord og tilbakestillinger. Det er flere måter å autentisere brukerkontoer på.

For eksempel kan du bruke en Passport Plugin med Node.js, som er nyttig å autentisere med Facebook, Twitter og sosiale mediekontoer.

Eksemplet ovenfor avhenger av bruken av Stormpath, et REST API som støtter autorisasjon og autentisering via API-nøkler og tilbyr brukerstyring som tjeneste.

Anbefalte artikler

Her er noen artikler som hjelper deg å få mer detaljert informasjon om nettapplikasjonene ved å bruke MongoDB, så bare gå gjennom lenken.

  1. HTML5 vs Flash begeistret for å vite forskjellen?
  2. Java vs Node JS - 8 forskjeller du bør vite
  3. Web Testing Application en nyttig og omfattende guide
  4. Hvordan bruke webmaler HTML | Søknad | Mobil | Beste
  5. Programvareutvikling vs Webutvikling
  6. Hvordan forberede Web Analytics-verktøy for å fungere for deg (guide)
  7. MongoDB vs PostgreSQL: Hva er forskjellene
  8. Nyttig guide for MongoDB vs Hadoop
  9. Beste guide på MongoDB vs Cassandra