Webapplicaties met MongoDB - MongoDB is een van de beste tools voor serieuze webontwikkelaars, en dit artikel over MongoDB zal alles bekijken wat u moet weten om webapplicaties met MongoDB te bouwen. Maar voordat we beginnen, laten we de populaire tool eens nader bekijken.

Afbeeldingsbron: pixabay.com

Wat is MongoDB?

In de eenvoudigste bewoordingen is MongoDB een documentgeoriënteerde NoSQL-database met meerdere platforms die JSON-achtige documenten gebruikt met dynamische schema's, BSON-documenten genoemd, in plaats van de conventionele RDB-structuur (relationele database) te volgen.

Dat zijn veel begrippen waar u misschien niet bekend mee bent, dus laten we ze eerst opsplitsen.

Nu functioneert een documentgeoriënteerde database op het basisconcept dat een gegevensdocument 'metagegevens' bevat. Dit zijn waarden die worden gebruikt om het type gegevens te identificeren en het gemakkelijker te maken om op te slaan en op te halen wanneer dat nodig is. Laten we bijvoorbeeld eens kijken naar de volgende twee gegevensregels:

  • John Hancock
  • Architect

Een blik op deze twee regels zou u een idee moeten geven van waar deze gegevens naar verwijzen: de naam en het beroep van een persoon. Een machine kan dit onderscheid echter niet onderscheiden. Het moet het type gegevens worden verteld.

In een RDB kan dit type worden opgeslagen in een sleutelwaardeopslag die gescheiden is van het document zelf. Met een documentgeoriënteerde database kunt u echter het type gegevens bepalen terwijl u de code typt. Dus je schrijft zo ongeveer:

  • John Hancock
  • Architect

En daar ga je; nu is het type gegevens direct in het document gedefinieerd. Dit geeft een flexibiliteit die niet aanwezig is in RDB's, en daarom zijn documentgeoriënteerde databases zo populair voor webapplicaties.

Webapplicaties zijn immers onderhevig aan regelmatige wijzigingen en updates. Natuurlijk hebben RDB's ook hun voordelen, en documentgeoriënteerde databases zijn niet perfect voor elke situatie, maar laten we niet afdwalen.

Laten we verder gaan met JSON, BSON en schema's. JSON verwijst naar JavaScript Object Notation, maar het is eigenlijk een open standaard dataformaat dat kan werken met andere talen dan JavaScript.

Een schema is de structuur van de database, gedefinieerd als tabellen in het geval van RDB's. Aangezien documentgeoriënteerde databases dergelijke tabellen niet gebruiken, zijn ze in wezen structuurloos of schematisch.

Wat BSON betreft, dat staat gewoon voor Binary JSON, en het is het formaat voor gegevensopslag voor de MongoDB-database. Dat is alles wat u er in dit stadium over moet weten.

Laten we nu eens kijken naar de reden waarom MongoDB een goede keuze is voor het maken van webtoepassingen, zonder de basiskennis in de weg te hebben:

Waarom kiezen voor MongoDB?

Er zijn verschillende redenen voor de populariteit van MongoDB voor het bouwen van webapplicaties. MongoDB is geen perfect hulpmiddel; verre van dat zelfs. MongoDB heeft verschillende uitdagingen en is niet geschikt voor alle webapplicaties. Maar MongoDB werkt goed als het gaat om webapplicaties om de volgende redenen:

  • MongoDB is schematisch

De MongoDB-database kan verzamelingen documenten bevatten, waarbij elk document zijn eigen grootte, inhoud en aantal velden heeft. U kunt teruggaan en de sleutelwaarden wijzigen of ze toevoegen en verwijderen zoals u wilt.

Dit maakt ook de structuur van een enkel object duidelijk en duidelijk, en MongoDB is ook eenvoudig uit te breiden wanneer dat nodig is.

  • MongoDB is algemeen bedoeld

De database kan worden gebruikt voor een aantal webapplicaties, waaronder klantgegevensbeheer, contentbeheer, datahubs, mobiele apps, Internet of Things, Big Data, product- en activacatalogi en database-as-a-service.

  • MongoDB ondersteunt automatisch sharding

Relationele databases worden meestal verticaal geschaald, waarbij een enkele server de volledige database host. Dit kan de schaal van de werking beperken, met de oplossing om horizontaal toe te voegen en servers toe te voegen in plaats van de capaciteit op één server te concentreren.

Het delen van een database wordt gedaan om dit te voorkomen en hardware als een enkele server te laten werken. Ontwikkelaars moeten meerdere relationele databases op verschillende machines implementeren en toepassingscode ontwikkelen voor het distribueren van de gegevens, query's en het verzamelen van de resultaten.

MongoDB en andere NoSQL-databases ondersteunen automatisch delen, wat betekent dat ze automatisch gegevens verspreiden over verschillende servers zonder dat de toepassing op de hoogte wordt gesteld.

MongoDB is vooral handig bij cloud computing. Als ontwikkelaar hoeft u geen dure en complexe platforms te bouwen voor het ondersteunen van webapplicaties, maar kunt u zich concentreren op het schrijven van de daadwerkelijke applicatiecode.

Nog een paar voorwaarden voor meer informatie over MongoDB

Oké, dus we hebben nu de basisprincipes en voordelen van MongoDB behandeld. Laten we, voordat we onze hand vuil maken, nog een paar termen bekijken waarmee u bekend moet zijn:

  • Database: een database bevat verzamelingen en elke database heeft zijn eigen bestanden op het bestandssysteem. Een typische MongoDB-server zal verschillende databases hebben.
  • Verzameling: een groep MongoDB-documenten wordt een verzameling genoemd en dit is het equivalent van een tabel in RDB's. Een enkele database heeft een verzameling en elk document heeft verschillende velden. In tegenstelling tot tablets hebben collecties geen schema.
  • Document: een document is een aantal sleutel / waarde-paren en heeft een dynamisch schema, wat betekent dat verschillende documenten in dezelfde verzameling verschillende veldsets en structuren kunnen hebben.

    Aanbevolen cursussen

  • Ruby Debugging Cursussen
  • PHP MySQL-programmeertraining
  • Online VB.NET programmeeropleiding
  • ITIL Foundation Trainingscursus

Webtoepassingen bouwen

De webapplicaties die voor deze specifieke MongoDB-gids worden gebouwd, zijn een RSS-aggregator zoals Google Reader. De webapplicaties zullen twee belangrijke componenten hebben: een REST API en een Feed grabber.

Om te begrijpen wat een REST API is, moet u eerst wat weten over de MEAN-stack. De code voor een feed grabber, is zelfs te vinden in de github-directory.

De MEAN-stapel begrijpen:

De MEAN-stapel staat voor het volgende:

  1. MongoDB, de database die moet worden gebruikt voor de webapplicatie
  2. js, wat een licht webapplicatie framework is
  3. js, dat is een raamwerk voor het maken van JavaScript- en HTML5-rijke webapplicaties
  4. js, wat een server-side JavaScript-interpreter is

Voor de webtoepassingen die hier worden besproken, wordt een REST API gemaakt in plaats van een HTML-gebruikersinterface. De Representational State Transfer (REST) ​​API is een lichter alternatief voor XML-gebaseerde API's en kan als basis dienen voor elk type interface, ondanks het feit dat er geen gebruikersinterface is.

REST werkt op een client-servermodel, waarbij de client HTTP-opdrachten naar de HTTP-server verzendt, samen met variabele parameters die zijn gecodeerd in de URL die het doelobject van de actie beschrijft. De server antwoordt vervolgens met de JSON en de resultaatcode.

Nu reageren MongDB en JavaScript beide goed met JSON, waardoor de MEAN-stack bijzonder geschikt is voor de webapplicaties.

CRUD

Het acroniem CRUD staat voor create, read, update en delete. Dit zijn algemene databasebewerkingen die in HTTP worden vertaald als posten, ophalen, plaatsen en verwijderen.

Een REST API bouwen

Laten we beginnen met het maken van een REST API, waarmee de basis wordt ontwikkeld voor het bouwen van de webtoepassingen. De applicatie kan webgebaseerd zijn of ontworpen voor Android, iOS of andere specifieke platforms. Laten we om te beginnen de dingen opsommen die de app kan doen:

  1. Gebruikers toestaan ​​een account aan te maken
  2. Schakel ze in om zich te abonneren op feeds
  3. Geef hen de mogelijkheid om feeditems te lezen en te markeren als gelezen of ongelezen
  4. Volg RSS-feeds voor monitoring
  5. Bewaar gebruikersinformatie in hun respectieve accounts
  6. Volg abonnementen op gebruikersfeeds
  7. Volg een feeditem dat al door een gebruiker is gelezen

Datamodellering

Op basis van de vereisten hebben de webapplicaties vier collecties nodig om de informatie te beheren:

  1. Gebruiker collectie
  2. Feedcollectie
  3. Gebruikersfeed entry mapping-verzameling
  4. Feedinzameling

Hier is een nadere beschouwing van elk:

  • Feedcollectie:

De volgende JSON is een goed voorbeeld voor het modelleren van een feedverzameling:

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

Het JSON-document hierboven is een RSS-feed voor Reuters en volgt informatie over het laatste nieuws dat op de website is gepubliceerd. Er zijn veel velden die u hier ziet, maar de belangrijkste voor de webtoepassingen om te functioneren is de URL van de feed en de feedbeschrijving.

De URL is belangrijk voor het ophalen van inhoud van de juiste bron en de beschrijving is belangrijk omdat deze een samenvatting biedt voor de feed.

De overige velden zijn ondertussen voor intern gebruik. Je kunt er meer toevoegen of wat verwijderen als je maar wilt. Rechts bovenaan het document staat het veld _id. Elk document moet dit veld hebben en de ID moet uniek zijn.

In het bovenstaande voorbeeld is een ID handmatig voor het veld gemaakt. Als je dit mist, maakt MongoDB er automatisch een.

  • Feedinvoer volgen en verzamelen

Als u meer nieuwsfeeds wilt bijhouden, kunt u er meer aan toevoegen in dezelfde indeling als hierboven. Als je klaar bent met het toevoegen van de feeds, is het tijd om ze te volgen en te verzamelen. Hieronder wordt een document voor feedinvoer verzameld:

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

Nogmaals, u kunt het veld _id ingevuld zien, samen met enkele andere velden zoals de beschrijving, samenvatting en titel. Het inhoudsveld gebruikt een array en met MongoDB kunnen arrays documenten opslaan. Deze indeling van subdocumenten kan met name handig zijn in situaties waarin alle informatie bij elkaar moet worden gehouden.

Noteer de feedID; het heeft hetzelfde type ObjectId en de waarde van de _id als het eerdere feedinvoerdocument voor de Reuters-feed. Dit biedt een referentiemodel, dus u kunt de feedverzameling op dezelfde ID-waarde opvragen om het Reuters-document te retourneren.

  • Volgen van de gebruiker

Hier is een voorbeelddocument voor het bijhouden van gebruikers:

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

Hier heeft de gebruiker drie sleutelkenmerken: voornaam, achternaam en e-mailadres. Er zijn ook twee elementen die kunnen worden gebruikt met de Stormpath-gebruikersbeheer-API: sp_api_key_secret en sp_api_key_id.

Het laatste veld, subs, is de abonnementsmatrix en vertelt de feed waarop de gebruiker is geabonneerd.

  • Feeditemtoewijzing

Met de laatste verzameling haar kunnen gebruikers feeds in kaart brengen en de gelezen feeds volgen:

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

"read" : true,

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

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

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

Zoals u kunt zien, wordt een basiswaar / onwaar Boolean gebruikt om aan te geven of de feed is gelezen of niet. Nu moet de gebruiker de volgende functies kunnen uitvoeren:

  1. Een account aanmaken
  2. Abonneren op of afmelden voor feeds
  3. Feedinvoer lezen
  4. Feeds of items markeren als gelezen of ongelezen
  5. Stel het wachtwoord opnieuw in

Hier is een lijst met hoe u deze bewerkingen kunt toewijzen aan HTTP-routes en opdrachten.

RouteCommandoBeschrijvingVariabelen
/ Gebruiker / inschrijvenPOSTRegistreer een nieuwe gebruikerVoornaam
achternaam
e-mail
wachtwoord
/ Gebruiker / ResetPasswordLEGGENWachtwoord resete-mail
/ feedsKRIJGENOntvang feedabonnementen voor elke gebruiker met beschrijving en ongelezen telling
/ Feeds / inschrijvenLEGGENAbonneer u op een nieuwe feedfeedURL
/ Feeds / entriesKRIJGENOntvang alle vermeldingen voor feeds waarop de gebruiker is geabonneerd
/ Feeds // entriesKRIJGENOntvang alle vermeldingen voor een specifieke feed
/ Feeds /LEGGENMarkeer alle ingangen voor een specifieke feed als gelezen of ongelezenlees =
/ Feeds // entries /LEGGENMarkeer een specifiek item als gelezen of ongelezenlees =
/ Feeds /DELETEAfmelden voor deze specifieke feed

Secure HTTP is de standaardbenadering die wordt gebruikt voor het verzenden van gevoelige gegevens zoals wachtwoorden in een productieomgeving

Volgende stappen: echte wereldauthenticatie

Gebruikersauthenticatie is belangrijk voor het veilig beheren van gebruikers, wachtwoorden en resets. Er zijn verschillende manieren om gebruikersaccounts te verifiëren.

U kunt bijvoorbeeld een Passport-plug-in met Node.js gebruiken, wat handig is om te verifiëren met Facebook-, Twitter- en sociale media-accounts.

Het bovenstaande voorbeeld is afhankelijk van het gebruik van Stormpath, een REST API die autorisatie en authenticatie via API-sleutels ondersteunt en gebruikersbeheer-als-service biedt.

Aanbevolen artikelen

Hier zijn enkele artikelen die u zullen helpen om meer details te krijgen over de webtoepassingen die MongoDB gebruiken, dus ga gewoon door de link.

  1. HTML5 versus Flash enthousiast om het verschil te kennen?
  2. Java versus Node JS - 8 verschillen die u moet weten
  3. Webtesttoepassing een nuttige en uitgebreide gids
  4. Websjablonen gebruiken HTML | Toepassing | Mobiel | Het beste
  5. Software Development vs Web Development
  6. Hoe u webanalysetools kunt voorbereiden om voor u te werken (gids)
  7. MongoDB versus PostgreSQL: Wat zijn de verschillen
  8. Handige gids over MongoDB versus Hadoop
  9. Beste gids over MongoDB vs Cassandra