MongoDB: tä käyttävät Web-sovellukset - MongoDB on yksi parhaista työkaluista vakaville web-kehittäjille. Tässä MongoDB: n artikkelissa tarkastellaan kaikkea, mitä sinun on tiedettävä Web-sovellusten rakentamiseksi MongoDB: n avulla. Mutta ennen kuin aloitamme, katsotaanpa lähemmin suosittua työkalua.

Kuvalähde: pixabay.com

Mikä on MongoDB?

Yksinkertaisimmin sanottuna, MongoDB on alustojen välinen asiakirjakeskeinen NoSQL-tietokanta, joka käyttää JSON-kaltaisia ​​asiakirjoja käyttämällä dynaamisia kaavioita, nimeltään BSON-asiakirjoja, sen sijaan, että noudatettaisiin tavanomaista relaatiotietokantarakennetta (RDB).

Se on paljon termejä, joita et ehkä tunne, joten erottelemme ne ensin.

Nyt asiakirjakeskeinen tietokanta toimii siinä peruskäsitteessä, että datadokumentti sisältää ”metatiedot”, joita arvoja käytetään tietotyypin tunnistamiseen ja helpottamaan tallentamista ja hakemista tarvittaessa. Katsotaan esimerkiksi seuraavia kahta tietoriviä:

  • John Hancock
  • Arkkitehti

Näiden kahden rivin tarkastelun pitäisi antaa sinulle kuvan siitä, mihin nämä tiedot viittaavat: henkilön nimi ja ammatti. Kone ei kuitenkaan voi tehdä tätä eroa. Sille on kerrottava tietotyyppi.

RDB: ssä tämä tyyppi voidaan tallentaa avain-arvovarastoon, joka on erillinen itse asiakirjasta. Asiakirjakeskeisellä tietokannalla saat kuitenkin määrittää tietotyypin kirjoittaessasi koodia. Joten lopulta kirjoitat hiukan näin:

  • John Hancock
  • Arkkitehti

Ja sinä menet; Nyt tietotyyppi on määritelty oikein asiakirjassa. Tämä antaa joustavuuden, jota ei ole RDB-tietokannoissa, minkä vuoksi asiakirjakeskeiset tietokannat ovat niin suosittuja verkkosovelluksissa.

Loppujen lopuksi verkkosovelluksia voidaan säännöllisesti muuttaa ja päivittää. Tietysti myös RDB-tietokannoilla on etuja, ja asiakirjakeskeiset tietokannat eivät ole täydellisiä jokaisessa tilanteessa, mutta älkäämme eroako.

Siirrytään sivulle JSON, BSON ja skeemat. JSON viittaa JavaScript Object Notation -tuotteeseen, mutta se on oikeastaan ​​avoin vakio tietomuoto, joka voi toimia muiden kielten kuin JavaScriptin kanssa.

Kaavio on tietokannan rakenne, joka on määritelty taulukoina RDB: n tapauksessa. Koska asiakirjakeskeisissä tietokannoissa ei käytetä tällaisia ​​taulukoita, ne ovat pääosin rakenteettomia tai kaavattomia.

Mitä tulee BSON: iin, se tarkoittaa vain Binary JSON: ta, ja se on MongoDB-tietokannan tietojen tallennusmuoto. Se on kaikki mitä sinun täytyy tietää siitä tässä vaiheessa.

Katsotaanpa nyt, kun perustiedot ovat poissa käytöstä, miksi MongoDB on hyvä valinta verkkosovellusten luomiseen:

Miksi mennä MongoDB: lle?

MongoDB: n suosiolle web-sovellusten rakentamisessa on useita syitä. MongoDB ei ole täydellinen työkalu; kaukana siitä, itse asiassa. MongoDB: llä on useita haasteita, ja se ei ole oikein sopiva kaikkiin verkkosovelluksiin. Mutta MongoDB toimii hyvin web-sovelluksissa, seuraavista syistä:

  • MongoDB on kaavamaton

MongoDB-tietokanta voi pitää asiakirjakokoelmia jokaisella asiakirjalla, jolla on oma koko, sisältö ja kenttämäärä. Voit palata takaisin ja muuttaa avainarvoja tai lisätä tai poistaa niitä haluamallasi tavalla.

Tämä tekee myös yhden esineen rakenteen selkeäksi ja selkeäksi, ja MongoDB on myös helppo skaalata tarvittaessa.

  • MongoDB on yleiskäyttöinen

Tietokantaa voidaan käyttää useisiin verkkosovelluksiin, mukaan lukien asiakastietojen hallinta, sisällön hallinta, tietokeskukset, mobiilisovellukset, esineiden Internet, Big Data, tuote- ja omaisuusluettelot sekä tietokanta palveluna.

  • MongoDB tukee automaattista varjostusta

Relaatiotietokannat skaalautuvat yleensä pystysuoraan, jossa yksi palvelin isännöi koko tietokantaa. Tämä voi rajoittaa toiminnan laajuutta siten, että ratkaisuna on lisätä vaakasuoraan ja lisätä palvelimia sen sijaan, että keskitetään kapasiteettia yhteen palvelimeen.

Tietokannan jakaminen tehdään tämän välttämiseksi ja jotta laitteisto toimisi yhtenä palvelimena. Kehittäjien on otettava käyttöön useita relaatiotietokantoja koneiden välillä ja kehitettävä sovelluskoodi tietojen jakeluun, kyselyihin ja tulosten yhdistämiseen.

MongoDB ja muut NoSQL-tietokannat tukevat automaattista jakamista, mikä tarkoittaa, että ne levittävät tietoja automaattisesti eri palvelimille ilman, että sovellukselle tiedotetaan koostumuksesta.

MongoDB on erityisen hyödyllinen pilvipalvelun kanssa. Kehittäjänä sinun ei tarvitse rakentaa kalliita ja monimutkaisia ​​alustoja verkkosovellusten tukemiseen, mutta voit keskittyä varsinaisen sovelluskoodin kirjoittamiseen.

Muutamia termejä oppiaksesi MongoDB: stä

Okei, joten olemme nyt käsittäneet MongoDB: n perusteet ja edut. Ennen kuin saamme kätemme likaiseksi, katsotaanpa vielä muutamia termejä, jotka sinun tulisi tuntea:

  • Tietokanta: tietokanta sisältää kokoelmia, ja jokaisella tietokannalla on omat tiedostot tiedostojärjestelmässä. Tyypillisellä MongoDB-palvelimella on useita tietokantoja.
  • Kokoelma: ryhmää MongoDB-asiakirjoja kutsutaan kokoelmaksi, ja tämä vastaa RDB: n taulukkoa. Yhdessä tietokannassa on kokoelma, ja jokaisella asiakirjalla on eri kentät. Toisin kuin tabletit, kokoelmilla ei ole kaavaa.
  • Asiakirja: Asiakirja on joukko avain-arvopareja ja siinä on dynaaminen kaavio, mikä tarkoittaa, että saman kokoelman eri asiakirjoilla voi olla erilaiset kenttäjoukot ja rakenteet.

    Suositellut kurssit

  • Rubyn virheenkorjauskurssit
  • PHP MySQL -ohjelmointikoulutus
  • VB.NET-ohjelmoinnin online-koulutus
  • ITIL-säätiön koulutuskurssi

Verkkosovellusten rakentaminen

Tätä erityistä MongoDB-opasta varten rakennettavat verkkosovellukset ovat RSS-keräilijä, kuten Google Reader. Verkkosovelluksissa on kaksi avainkomponenttia: REST API ja Feed Grabber.

Jotta ymmärrät, mikä on REST API, sinun on ensin tiedettävä vähän MEAN-pinosta. Syöttökaappauskoodin koodi löytyy jopa github-hakemistosta.

MEAN-pinon ymmärtäminen:

MEAN-pino tarkoittaa seuraavaa:

  1. MongoDB, joka on verkkosovellukseen käytettävä tietokanta
  2. js, joka on kevyt verkkosovelluskehys
  3. js, joka on kehys JavaScript- ja HTML5-rikasten Web-sovellusten luomiseen
  4. js, joka on palvelinpuolen JavaScript-tulkki

Tässä keskusteltaville verkkosovelluksille luodaan REST-sovellusliittymä HTML-käyttöliittymän sijasta. Edustava tilansiirto (REST) ​​-sovellusliittymä on kevyempi vaihtoehto XML-pohjaisille sovellusliittymille ja voi toimia minkä tahansa rajapintotyypin perustana, vaikka sillä ei olisi käyttöliittymää.

REST-toiminnot asiakas-palvelinmallissa, kun asiakas lähettää HTTP-komentoja HTTP-palvelimelle muuttuvien parametrien kanssa, jotka on koodattu toiminnan kohdeobjektia kuvaavaan URL-osoitteeseen. Palvelin vastaa sitten JSON: lla ja tuloskoodilla.

Nyt MongDB ja JavaScript reagoivat hyvin JSON: n kanssa, mikä tekee MEAN-pinosta erityisen sopivan verkkosovelluksiin.

LIKA

Lyhenne CRUD tarkoittaa luomista, lukemista, päivittämistä ja poistamista. Nämä ovat yleisiä tietokantaoperaatioita, jotka käännetään HTTP: ssä postitse, hae, laita ja poista.

REST-sovellusliittymän rakentaminen

Aloitetaan luomalla REST-sovellusliittymä, kehittämällä perusta verkkosovellusten rakentamiseen. Sovellus voi olla verkkopohjainen tai suunniteltu Android-, iOS- tai muille erityisille alustoille. Aluksi luetellaan asiat, jotka sovellus voi tehdä:

  1. Salli käyttäjien luoda tili
  2. Salli heidän tilata syötteitä tai peruuttaa niiden tilaaminen
  3. Anna heille mahdollisuus lukea ja merkitä syötteen merkinnät luetuiksi tai lukemattomiksi
  4. Seuraa RSS-syötteitä seurantaa varten
  5. Tallenna käyttäjätiedot heidän vastaaviin tileihin
  6. Seuraa käyttäjän syötteiden tilauksia
  7. Seuraa käyttäjän jo lukemaa syötteen merkintää

Tietojen mallintaminen

Vaatimusten perusteella verkkosovellukset tarvitsevat neljä kokoelmaa tiedon hallintaan:

  1. Käyttäjäkokoelma
  2. Rehujen kokoelma
  3. Käyttäjäsyötteen merkintäkarttakokoelma
  4. Syötteiden kokoelma

Tässä on tarkempi kuvaus jokaisesta:

  • Syötekokoelma:

Seuraava JSON on hyvä esimerkki syöttekokoelman mallinnuksesta:

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

Yllä oleva JSON-asiakirja on RSS-syöte Reutersille, joka seuraa verkkosivustolla julkaistujen uusimpien uutisten tietoja. Täällä on paljon kenttiä, mutta tärkeimmät Web-sovellusten toiminnan kannalta ovat syötteen URL ja syötteiden kuvaus.

URL on tärkeä haettaessa sisältöä oikealta lähteeltä, ja kuvaus on tärkeä, koska se tarjoaa yhteenvedon syötteestä.

Toisaalta loput kentät on tarkoitettu sisäiseen käyttöön. Voit lisätä lisää tai poistaa joitain tuntemasi mukaan. Aivan asiakirjan yläosassa on _id-kenttä. Jokaisessa asiakirjassa on oltava tämä kenttä, ja tunnuksen on oltava yksilöivä.

Yllä olevassa esimerkissä kentälle on luotu tunnus manuaalisesti. Jos unohdat tämän, MongoDB tekee sen automaattisesti.

  • Syötteiden seuranta ja kerääminen

Jos haluat seurata lisää uutissyötteitä, voit lisätä niitä lisää käyttämällä samaa muotoa yllä. Kun olet lisännyt syötteet, on aika seurata ja kerätä ne. Alla annetaan syötteiden merkinnän kokoamista koskeva asiakirja:

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

Näet jälleen kerran täytetyn _id-kentän yhdessä joidenkin muiden kenttien, kuten kuvauksen, yhteenvedon ja otsikon kanssa. Sisältökenttä käyttää taulukkoa, ja MongoDB sallii taulukkojen tallentaa asiakirjoja. Tämä alaasiakirjajärjestely voi olla erityisen hyödyllinen tilanteissa, joissa kaikki tiedot on pidettävä yhdessä.

Tee muistiinpano syötteen tunnuksesta; sillä on sama ObjectId-tyyppi ja _id-arvo kuin aikaisemmalla Reuters-syötteen syötteen syöttöasiakirjalla. Tämä tarjoaa referenssimallin, joten voit kysyä syötteiden kokoelmasta samaa ID-arvoa palauttaaksesi Reuters-asiakirjan.

  • Seurataan käyttäjää

Tässä on esimerkki käyttäjien seuraamisesta:

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

Täällä käyttäjällä on kolme keskeistä ominaisuutta: etunimi, sukunimi ja sähköpostiosoite. On myös kaksi elementtiä, joita voidaan käyttää Stormpath-käyttäjän hallinnan sovellusliittymässä: sp_api_key_secret ja sp_api_key_id.

Viimeinen alaosa, subs, on tilausmatriisi ja kertoo syötteen, jonka käyttäjä on tilannut.

  • Syötteen merkintä

Viimeinen kokoelma antaa hänelle mahdollisuuden kartoittaa käyttäjiä syötteille ja seurata luettuja syötteitä:

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

"read" : true,

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

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

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

Kuten näette, perus-tosi / väärä Boolen-arvoa käytetään merkitsemään, onko syöte luettu vai ei. Nyt käyttäjän pitäisi pystyä suorittamaan seuraavat toiminnot:

  1. Tilin luominen
  2. Syötteiden tilaaminen tai tilaaminen
  3. Syötteiden lukeminen
  4. Syötteiden tai merkintöjen merkitseminen luetuiksi tai lukemattomiksi
  5. Palauta salasana

Tässä on luettelo kuinka nämä toiminnot voidaan kartoittaa HTTP-reiteille ja komennoille.

ReittiKomentoKuvausmuuttujat
/ Käyttäjä / ilmoittautuaLÄHETTÄÄRekisteröi uusi käyttäjäetunimi
sukunimi
sähköposti
Salasana
/ Käyttäjä / resetPasswordLAITTAASalasanan nollaussähköposti
/ syötteetSAADAHanki jokaiselle käyttäjälle syötetilauksia kuvauksineen ja lukemattomina
/ Syötteet / tilataLAITTAATilaa uusi syötesyötteen URL-osoite
/ Syötteet / merkinnätSAADAHae kaikki syötteet, jotka käyttäjä on tilannut
/ Syötteet // merkinnätSAADAHanki kaikki tietyn syötteen merkinnät
/ Syötteet /LAITTAAMerkitse tietyn syötteen kaikki merkinnät luetuiksi tai lukemattomiksilue =
/ Syötteet // merkinnät /LAITTAAMerkitse tietty merkintä joko luetuksi tai lukemattomaksilue =
/ Syötteet /POISTAALopeta tämän tietyn syötteen tilaaminen

Suojattu HTTP on tavallinen lähestymistapa, jota käytetään arkaluontoisten tietojen, kuten salasanojen, lähettämiseen tuotantoympäristössä

Seuraavat vaiheet: todellisen maailman todennus

Käyttäjän todennus on tärkeää käyttäjien, salasanojen ja palautusten turvalliselle hallinnalle. Käyttäjätilien todennus on olemassa useita tapoja.

Voit esimerkiksi käyttää passilaajennusta Node.js: n kanssa, joka on hyödyllinen todennukseen Facebook-, Twitter- ja sosiaalisen median tileillä.

Yllä oleva esimerkki riippuu Stormpathin, REST-sovellusliittymän, joka tukee valtuutusta ja todennusta API-avainten kautta ja tarjoaa käyttäjän hallintapalveluna, käytöstä.

Suositellut artikkelit

Tässä on artikkeleita, jotka auttavat sinua saamaan lisätietoja MongoDB: tä käyttävistä Web-sovelluksista, joten käy vain linkin läpi.

  1. HTML5 vs Flash innostunut tietämään eroa?
  2. Java vs Node JS - 8 eroa, jotka sinun pitäisi tietää
  3. Verkkotestaussovellus hyödyllinen ja kattava opas
  4. Kuinka käyttää Web-malleja HTML | Sovellus | Matkapuhelin | Parhaat
  5. Ohjelmistokehitys vs. Web-kehitys
  6. Web Analytics -työkalujen valmistelu toimimaan sinulle (opas)
  7. MongoDB vs PostgreSQL: Mitkä ovat erot
  8. Hyödyllinen opas MongoDB: stä vs. Hadoop
  9. Paras opas MongoDB vs Cassandra