Hur man bygger webbapplikationer med MongoDB

Innehållsförteckning:

Anonim

Webapplikationer som använder MongoDB - MongoDB är ett av de bästa verktygen för seriösa webbutvecklare, och den här artikeln om MongoDB kommer att titta på allt du behöver veta för att bygga webbapplikationer med MongoDB. Men innan vi börjar, låt oss titta närmare på det populära verktyget.

Bildkälla: pixabay.com

Vad är MongoDB?

På de enklaste termerna är MongoDB en dokumentorienterad NoSQL-databas över plattformar som använder JSON-liknande dokument med dynamiska scheman, kallad BSON-dokument, istället för att följa den konventionella strukturen för relationell databas (RDB).

Det är många termer som du kanske inte känner till, så låt oss först dela dem.

Nu fungerar en dokumentorienterad databas på det grundläggande konceptet att ett datadokument innehåller 'metadata', som är värden som används för att identifiera typen av data och göra det lättare att lagra och hämta vid behov. Låt oss till exempel titta på följande två rader med data:

  • John Hancock
  • Arkitekt

En titt på dessa två rader skulle ge dig en uppfattning om vad denna information hänvisar till: en persons namn och yrke. En maskin kan emellertid inte skilja denna skillnad. Det måste berättas om typen av data.

I en RDB kan denna typ lagras i en nyckelvärdeslager som är separat från själva dokumentet. Men med en dokumentorienterad databas får du bestämma typen av data när du skriver koden. Så du slutar skriva lite så här:

  • John Hancock
  • Arkitekt

Och där går du; nu har typen av data definierats direkt i dokumentet. Detta ger en flexibilitet som inte finns i RDB: er, varför dokumentorienterade databaser är så populära för webbapplikationer.

När allt kommer omkring är webbapplikationer föremål för regelbundna ändringar och uppdateringar. Naturligtvis har RDB: er också sina fördelar, och dokumentorienterade databaser är inte perfekta för alla situationer, men låt oss inte tappa.

Låt oss gå till JSON, BSON och scheman. JSON hänvisar till JavaScript Object Notation, men det är faktiskt ett öppet standarddataformat som kan fungera med andra språk än JavaScript.

Ett schema är databasstrukturen, definierad som tabeller för RDB: er. Eftersom dokumentorienterade databaser inte använder sådana tabeller är de i huvudsak strukturlösa eller schemalösa.

Vad gäller BSON, det är bara för Binary JSON, och det är datalagringsformatet för MongoDB-databasen. Det är allt du behöver veta om det i detta skede.

Nu, med grunderna på vägen, låt oss titta på varför MongoDB är ett bra val för att skapa webbapplikationer:

Varför gå för MongoDB?

Det finns flera skäl till populariteten hos MongoDB för att bygga webbapplikationer. MongoDB är inte ett perfekt verktyg; långt ifrån det faktiskt. MongoDB har flera utmaningar, och det passar inte rätt för alla webbapplikationer. Men MongoDB fungerar bra när det gäller webbapplikationer av följande skäl:

  • MongoDB är schemaless

MongoDB-databasen kan innehålla samlingar av dokument där varje dokument har sin egen storlek, innehåll och antal fält. Du kan gå tillbaka och ändra nyckelvärdena, eller lägga till och ta bort dem som du vill.

Detta gör strukturen för ett enda objekt tydligt och okomplicerat, och MongoDB är också lätt att skala ut när det behövs.

  • MongoDB är allmänt

Databasen kan användas för ett antal webbapplikationer, inklusive kunddatahantering, innehållshantering, datahub, mobilappar, Internet of Things, Big Data, produkt- och tillgångskataloger och databas-som-en-tjänst.

  • MongoDB stöder automatisk skärning

Relationsdatabaser skalas vanligtvis vertikalt, där en enda server är värd för hela databasen. Detta kan begränsa driftsskalan, varvid lösningen är att lägga till horisontellt och lägga till servrar snarare än att koncentrera kapaciteten på en enda server.

Delning av en databas görs för att undvika detta och göra att hårdvara fungerar som en enda server. Utvecklare måste distribuera flera relationella databaser över maskiner och utveckla applikationskod för att distribuera data, frågor och sammanställa resultaten.

MongoDB och andra NoSQL-databaser stöder automatisk delning, vilket innebär att de automatiskt sprider data över olika servrar utan att applikationen görs medveten om sammansättningen.

MongoDB är särskilt användbart med molnberäkning. Som utvecklare behöver du inte bygga dyra och komplexa plattformar för att stödja webbapplikationer, utan kan fokusera på att skriva den verkliga applikationskoden.

Några fler termer att lära sig om MongoDB

Okej, så vi har nu täckt grunderna och fördelarna med MongoDB. Innan vi blir smutsiga, låt oss titta på några fler termer som du bör känna till:

  • Databas: en databas innehåller samlingar, och varje databas har sina egna filer i filsystemet. En typisk MongoDB-server kommer att ha flera databaser.
  • Samling: en grupp MongoDB-dokument kallas en samling, och detta motsvarar en tabell i RDB: er. En enda databas har en samling och varje dokument har olika fält. Till skillnad från surfplattor, har samlingar inte ett schema.
  • Dokument: Ett dokument är ett gäng par med nyckelvärden och har ett dynamiskt schema, vilket innebär att olika dokument i samma samling kan ha olika fältuppsättningar och strukturer.

    Rekommenderade kurser

  • Ruby-felsökningskurser
  • PHP MySQL-programmeringsträning
  • Online VB.NET-programmeringsträning
  • ITIL Foundation Training Course

Bygga webbapplikationer

Webbapplikationerna som byggs för denna specifika MongoDB-guide är en RSS-aggregerare som Google Reader. Webbapplikationerna kommer att ha två viktiga komponenter: ett REST-API och en Feed grabber.

För att förstå vad ett REST API är måste du först veta lite om MEAN-stacken. Koden för en fodgripare kan hittas även i github-katalogen.

Förstå MEAN-stacken:

MEAN-stacken står för följande:

  1. MongoDB, som är databasen som ska användas för webbapplikationen
  2. js, som är ett lätt ramverk för webbapplikationer
  3. js, som är ett ramverk för att skapa JavaScript- och HTML5-rika webbapplikationer
  4. js, som är en JavaScript-tolk på serversidan

För de webbapplikationer som diskuteras här skapas ett REST-API istället för ett HTML-användargränssnitt. Representative State Transfer (REST) ​​API är ett lättare alternativ till XML-baserade API: er och kan fungera som bas för alla gränssnittsformer, trots att de inte har ett användargränssnitt.

REST-funktioner på en klientservermodell, där klienten skickar HTTP-kommandon till HTTP-servern, tillsammans med variabla parametrar som är kodade i URL: n som beskriver åtgärdens målobjekt. Servern svarar sedan med JSON och resultatkod.

Nu reagerar både MongDB och JavaScript bra med JSON, vilket gör MEAN-stacken särskilt lämplig för webbapplikationer.

CRUD

Förkortningen CRUD står för skapa, läsa, uppdatera och radera. Detta är vanliga databasåtgärder som översätter till HTTP som post, hämta, lägga och ta bort.

Bygga ett REST-API

Låt oss börja med att skapa ett REST-API, utveckla grunden för att bygga webbapplikationerna. Applikationen kan vara webbaserad eller utformad för Android, iOS eller andra specifika plattformar. Till att börja med, låt oss lista de saker som appen kommer att kunna göra:

  1. Tillåt användare att skapa ett konto
  2. Aktivera dem för att prenumerera eller avsluta prenumerationen på feeds
  3. Ge dem möjlighet att läsa och markera inmatningar som lästa eller olästa
  4. Spåra RSS-flöden för övervakning
  5. Lagra användarinformation i sina respektive konton
  6. Spåra prenumerationer på användarflödet
  7. Spåra en inmatningspost som redan lästs av en användare

Datamodellering

Baserat på kraven kommer webbapplikationerna att behöva fyra samlingar för att hantera informationen:

  1. Användarsamling
  2. Fodersamling
  3. Samling av kartläggning av användar-flöde
  4. Foderinföringssamling

Här är en närmare titt på var och en:

  • Fodersamling:

Följande JSON är ett bra exempel för att modellera 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 ovan är ett RSS-flöde för Reuters, som spårar information om de senaste nyheterna som publicerats på webbplatsen. Det finns många fält som du ser här, men de viktigaste för att webbapplikationerna ska fungera är URL-adressen för flödet och flödesbeskrivningen.

Webbadressen är viktig för att hämta innehåll från rätt källa, och beskrivningen är viktig eftersom den ger en sammanfattning för flödet.

Resten av fälten är under tiden för internt bruk. Du kan lägga till mer eller ta bort något av det du känner för. Höger överst i dokumentet finns fältet _id. Varje dokument måste ha detta fält och ID måste vara unikt.

I exemplet ovan har ett ID skapats manuellt för fältet. Om du missar det kommer MongoDB automatiskt att göra en.

  • Spåra och samla foderposter

Om du vill spåra fler nyhetsflöden kan du lägga till fler av dem med samma format ovan. När du är klar med att lägga till flödena är det dags att spåra och samla in dem. Nedan visas ett dokument för insamling av foder:

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

Återigen kan du se fältet _id fyllt i, tillsammans med några andra fält som beskrivning, sammanfattning och titel. Innehållsfältet använder en matris och MongoDB tillåter matriser att lagra dokument. Detta underdokumentarrangemang kan vara särskilt användbart i situationer där all information måste hållas tillsammans.

Notera feedID; den har samma ObjectId-typ och värdet på _id som det tidigare foderdokumentet för Reuters-flödet. Detta erbjuder en referensmodell, så att du kan fråga fodersamlingen på samma ID-värde för att returnera Reuters-dokumentet.

  • Spåra användaren

Här är ett exempel på dokument för att hålla reda på användare:

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

Här har användaren tre nyckelattribut: förnamn, efternamn och e-postadress. Det finns också två element som kan användas med Stormpath-användarhanterings-API: sp_api_key_secret och sp_api_key_id.

Det sista fältet, subs, är prenumerationsfältet och berättar flödet som användaren prenumererar på.

  • Kartläggning av foderinmatning

Den sista samlingen henne möjliggör kartläggning av användare till flöden och spårning av flöden som har läst:

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

"read" : true,

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

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

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

Som ni ser, används en grundläggande sann / falsk Boolean för att markera om flödet har lästs eller inte. Nu ska användaren kunna utföra följande funktioner:

  1. Skapa ett konto
  2. Prenumerera eller avsluta prenumerationen på flöden
  3. Läser foderposter
  4. Markera flöden eller poster som lästa eller olästa
  5. Återställ lösenordet

Här är en lista över hur du kartlägger dessa operationer till HTTP-rutter och kommandon.

RuttKommandoBeskrivningvariabler
/ User / DirektPOSTARegistrera en ny användareförnamn
efternamn
e-post
Lösenord
/ User / resetPasswordSÄTTALösenordsåterställninge-post
/ flödenSKAFFA SIGFå feedabonnemang för varje användare med beskrivning och oläst antal
/ feeds / prenumereraSÄTTAPrenumerera på ett nytt flödefeedURL
/ feeds / posternaSKAFFA SIGFå alla poster för flöden som användaren prenumererar på
/ feeds // anteckningarSKAFFA SIGFå alla poster för ett specifikt flöde
/ Feeds /SÄTTAMarkera alla poster för ett specifikt flöde som lästa eller olästaläs =
/ Matningar // anteckningar /SÄTTAMarkera en specifik post som antingen läst eller olästläs =
/ Feeds /RADERAAvsluta prenumerationen på det här specifika flödet

Secure HTTP är standardmetoden som används för att skicka känsliga detaljer som lösenord i en produktionsmiljö

Nästa steg: verklighet i verkligheten

Användarautentisering är viktigt för att säkert hantera användare, lösenord och återställningar. Det finns flera sätt att autentisera användarkonton.

Till exempel kan du använda ett Passport-plugin med Node.js, vilket är användbart för att autentisera med Facebook, Twitter och sociala mediekonton.

Exemplet ovan beror på användningen av Stormpath, ett REST-API som stöder godkännande och autentisering via API-nycklar och erbjuder användarhantering-as-a-service.

Rekommenderade artiklar

Här är några artiklar som hjälper dig att få mer detaljerad information om webbapplikationerna med MongoDB så bara gå igenom länken.

  1. HTML5 vs Flash glada att veta skillnaden?
  2. Java vs Node JS - 8 skillnader du bör känna till
  3. Webbtestning Applikation en användbar och omfattande guide
  4. Hur man använder webbmallar HTML | Ansökan | Mobil | Bäst
  5. Programutveckling vs webbutveckling
  6. Hur man förbereder webbanalysverktyg för att fungera för dig (guide)
  7. MongoDB vs PostgreSQL: Vad är skillnaderna
  8. Användbar guide för MongoDB mot Hadoop
  9. Bästa guide för MongoDB vs Cassandra