Ako zostaviť webové aplikácie pomocou MongoDB

Obsah:

Anonim

Webové aplikácie využívajúce MongoDB - MongoDB je jedným z najlepších nástrojov pre serióznych vývojárov webu a tento článok o MongoDB sa zameria na všetko, čo potrebujete vedieť, aby ste mohli vytvárať webové aplikácie s MongoDB. Ale skôr, ako začneme, poďme sa bližšie pozrieť na populárny nástroj.

Zdroj obrázka: pixabay.com

Čo je MongoDB?

Zjednodušene povedané, MongoDB je multiplatformová dokumentovo orientovaná NoSQL databáza, ktorá používa dokumenty podobné JSON pomocou dynamických schém, nazývaných dokumenty BSON, namiesto sledovania štruktúry konvenčných relačných databáz (RDB).

To je veľa pojmov, s ktorými sa možno nemusíte oboznámiť, takže si ich najprv rozložíme.

Databázovo orientovaná databáza teraz funguje na základnom koncepte, podľa ktorého údajový dokument obsahuje „metaúdaje“, čo sú hodnoty používané na identifikáciu typu údajov a na uľahčenie ukladania a získavania v prípade potreby. Pozrime sa napríklad na tieto dva riadky údajov:

  • John Hancock
  • architekt

Pohľad na tieto dva riadky by vám mal poskytnúť predstavu o tom, na čo sa tieto údaje vzťahujú: meno a povolanie osoby. Stroj však nemôže rozlíšiť toto rozlíšenie. Je potrebné povedať druh údajov.

V RDB môže byť tento typ uložený v úložisku kľúč - hodnota, ktorý je oddelený od samotného dokumentu. S databázou zameranou na dokumenty sa však pri zadávaní kódu dostanete k určeniu typu údajov. Takže nakoniec napíšete trochu takto:

  • John Hancock
  • architekt

A tam idete; typ údajov je teraz definovaný priamo v dokumente. Toto poskytuje flexibilitu, ktorá nie je prítomná v RDB, a preto sú databázy orientované na dokumenty tak populárne pre webové aplikácie.

Koniec koncov, webové aplikácie podliehajú pravidelným zmenám a aktualizáciám. RDB majú samozrejme aj svoje výhody a databázy zamerané na dokumenty nie sú dokonalé pre každú situáciu, ale neodbočujeme.

Poďme na JSON, BSON a schémy. JSON odkazuje na notáciu objektu JavaScript, ale v skutočnosti ide o otvorený štandardný formát údajov, ktorý môže pracovať s inými jazykmi ako JavaScript.

Schéma je štruktúra databázy definovaná ako tabuľky v prípade RDB. Pretože databázy orientované na dokumenty takéto tabuľky nepoužívajú, sú v podstate bez štruktúry alebo schémy.

Pokiaľ ide o BSON, to znamená len Binary JSON a je to formát ukladania údajov pre databázu MongoDB. To je všetko, čo potrebujete vedieť o tejto fáze.

Teraz, keď už sú základy, pozrime sa, prečo je MongoDB dobrou voľbou pre tvorbu webových aplikácií:

Prečo ísť na MongoDB?

Existuje niekoľko dôvodov pre popularitu MongoDB pri vytváraní webových aplikácií. MongoDB nie je dokonalý nástroj; v skutočnosti ďaleko od toho. MongoDB má niekoľko výziev a nie je vhodný pre všetky webové aplikácie. MongoDB však funguje dobre, pokiaľ ide o webové aplikácie, z týchto dôvodov:

  • MongoDB je schemaless

Databáza MongoDB môže uchovávať zbierky dokumentov, pričom každý dokument má svoju vlastnú veľkosť, obsah a počet polí. Môžete sa vrátiť späť a zmeniť kľúčové hodnoty alebo ich podľa potreby pridať a odstrániť.

Tým je tiež jasná a priamočiara štruktúra jedného objektu a MongoDB sa v prípade potreby tiež ľahko dá škálovať.

  • MongoDB je univerzálny

Databáza môže byť použitá pre celý rad webových aplikácií, vrátane správy zákazníckych údajov, správy obsahu, dátových centier, mobilných aplikácií, internetu vecí, veľkých dát, katalógov produktov a majetku a databázy ako služba.

  • MongoDB podporuje automatické orezávanie

Relačné databázy sa spravidla merajú vertikálne, v ktorých jediný server hostuje celú databázu. To môže obmedziť rozsah prevádzky, pričom riešením je skôr horizontálne pridanie a pridanie serverov, ako sústredenie kapacity na jeden server.

Zdieľanie databázy sa vykonáva preto, aby sa tomu zabránilo a aby hardvér fungoval ako jeden server. Vývojári musia nasadzovať viac relačných databáz medzi počítačmi a vyvinúť aplikačný kód na distribúciu údajov, dopytov a agregáciu výsledkov.

MongoDB a ďalšie databázy NoSQL podporujú automatické zdieľanie, čo znamená, že automaticky rozložia údaje na rôzne servery bez toho, aby si ich aplikácia bola vedomá zloženia.

MongoDB je obzvlášť užitočný pri cloud computingu. Ako vývojár nemusíte budovať drahé a zložité platformy na podporu webových aplikácií, ale môžete sa zamerať na písanie skutočného kódu aplikácie.

Niekoľko ďalších pojmov o MongoDB

Dobre, takže sme sa teraz zaoberali základmi a výhodami MongoDB. Predtým, ako si zašpiníme ruku, pozrime sa na niekoľko ďalších pojmov, s ktorými by ste mali byť oboznámení:

  • Databáza: databáza obsahuje kolekcie a každá databáza má svoje vlastné súbory v systéme súborov. Typický server MongoDB bude mať niekoľko databáz.
  • Zbierka: skupina dokumentov MongoDB sa nazýva kolekcia, čo je ekvivalent tabuľky v RDB. Jedna databáza bude mať kolekciu a každý dokument bude mať odlišné polia. Na rozdiel od tabliet nemajú kolekcie schému.
  • Dokument: Dokument je skupina párov kľúč - hodnota a má dynamickú schému, čo znamená, že rôzne dokumenty v tej istej kolekcii môžu mať rôzne sady polí a štruktúry.

    Odporúčané kurzy

  • Ruby ladiace kurzy
  • Školenie programovania PHP MySQL
  • Online školenie o programovaní VB.NET
  • Školiaci kurz nadácie ITIL

Vytváranie webových aplikácií

Webové aplikácie vytvárané pre tento konkrétny sprievodca MongoDB sú agregátorom RSS ako Google Reader. Webové aplikácie budú mať dve kľúčové komponenty: REST API a grabber Feed.

Aby ste pochopili, čo je REST API, musíte sa najskôr dozvedieť niečo o zásobníku MEAN. Kód pre grabber informačných kanálov nájdete aj v adresári github.

Pochopenie zásobníka MEAN:

Zásobník MEAN znamená:

  1. MongoDB, čo je databáza, ktorá sa má použiť pre webovú aplikáciu
  2. js, čo je rámec pre ľahkú webovú aplikáciu
  3. js, čo je rámec na vytváranie webových aplikácií bohatých na JavaScript a HTML5
  4. js, čo je serverový interpret jazyka JavaScript

Pre tu diskutované webové aplikácie sa namiesto užívateľského rozhrania HTML vytvorí rozhranie REST API. Rozhranie REST (Representational State Transfer) je ľahšou alternatívou k rozhraním API založeným na XML a môže slúžiť ako základ pre akýkoľvek typ rozhrania napriek tomu, že nemá používateľské rozhranie.

Funkcie REST na modeli klient-server, pričom klient posiela HTTP príkazy na server HTTP, spolu s premennými parametrami kódovanými v adrese URL opisujú cieľový objekt akcie. Server potom odpovie pomocou JSON a výsledného kódu.

Teraz, MongDB a JavaScript, dobre reagujú s JSON, takže zásobník MEAN je zvlášť vhodný pre webové aplikácie.

CRUD

Skratka CRUD znamená vytvárať, čítať, aktualizovať a mazať. Toto sú bežné databázové operácie, ktoré sa prekladajú v HTTP ako post, get, put and delete.

Vytvorenie rozhrania REST API

Začnime vytvorením rozhrania REST API a vytvorením základu pre tvorbu webových aplikácií. Aplikácia môže byť webová alebo navrhnutá pre Android, iOS alebo iné špecifické platformy. Na začiatok si vymenujme zoznam vecí, ktoré bude aplikácia schopná urobiť:

  1. Povoliť používateľom vytvoriť účet
  2. Umožnite im prihlásiť sa na odber alebo zrušiť odber informačných kanálov
  3. Dajte im možnosť čítať a označovať položky informačného kanála ako prečítané alebo neprečítané
  4. Sledujte informačné kanály RSS na monitorovanie
  5. Informácie o používateľovi ukladajte do svojich príslušných účtov
  6. Sledujte odbery informačného kanála používateľov
  7. Sledujte položku informačného kanála už prečítanú používateľom

Modelovanie dát

Na základe požiadaviek budú webové aplikácie potrebovať štyri zbierky na správu informácií:

  1. Zbierka používateľov
  2. Zber krmiva
  3. Zbierka mapovania záznamu zdroja informácií
  4. Zbierka vstupu krmiva

Tu je bližší pohľad na každý z nich:

  • Zbierka krmív:

Nasledujúci JSON je dobrým príkladom na modelovanie kolekcie informačných kanálov:

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

Dokument JSON vyššie je informačným kanálom RSS pre agentúru Reuters, ktorý sleduje informácie o najnovších správach uverejnených na webových stránkach. Vidíte tu veľa polí, ale najdôležitejšie pre fungovanie webových aplikácií je adresa URL informačného kanála a popis informačného kanála.

URL je dôležitá pre načítanie obsahu z pravého zdroja a popis je dôležitý, pretože poskytuje zhrnutie informačného kanála.

Ostatné polia sú medzitým určené na vnútorné použitie. Môžete pridať ďalšie alebo odstrániť niektoré z nich, ako chcete. V hornej časti dokumentu sa nachádza pole _id. Každý dokument musí mať toto pole a ID musí byť jedinečné.

Vo vyššie uvedenom príklade bol identifikátor pre dané pole vytvorený ručne. Ak to vynecháte, MongoDB ho automaticky vytvorí.

  • Sledovanie a zhromažďovanie záznamov v informačnom kanáli

Ak chcete sledovať viac informačných kanálov, môžete ich pridať pomocou rovnakého formátu uvedeného vyššie. Po dokončení pridávania informačných kanálov je čas ich sledovať a zbierať. Nižšie je uvedený dokument na zbierku vstupov do krmív:

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

Opäť vidíte vyplnené pole _id spolu s niektorými ďalšími poliami, ako sú popis, zhrnutie a nadpis. Pole obsahu používa pole a MongoDB umožňuje poliam ukladať dokumenty. Toto usporiadanie čiastkových dokumentov môže byť užitočné najmä v situáciách, keď sa všetky informácie musia uchovávať pohromade.

Poznamenajte si feedID; má rovnaký typ ObjectId a hodnotu _id ako predchádzajúci vstupný dokument informačného kanála pre informačný kanál Reuters. Toto ponúka referenčný model, takže môžete dotazovať kolekciu informačných kanálov na rovnakej hodnote ID a vrátiť dokument Reuters.

  • Sledovanie používateľa

Tu je príklad dokumentu na sledovanie používateľov:

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

Tu má používateľ tri kľúčové atribúty: meno, priezvisko a e-mailovú adresu. S rozhraním API na správu používateľov Stormpath môžu byť tiež použité dva prvky: sp_api_key_secret a sp_api_key_id.

Posledné pole, subs, je pole predplatného a oznamuje informačným kanálom, na ktoré je užívateľ prihlásený.

  • Mapovanie vstupu do informačného kanála

Jej konečná zbierka umožňuje mapovanie používateľov na informačné kanály a sledovanie prečítaných informačných kanálov:

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

"read" : true,

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

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

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

Ako vidíte, základný pravdivý / nepravdivý booleovský výraz sa používa na označenie toho, či bol informačný kanál prečítaný alebo nie. Teraz by mal byť používateľ schopný vykonávať nasledujúce funkcie:

  1. Vytvorenie účtu
  2. Prihlasovanie na odber informačných kanálov alebo ich odber
  3. Čítanie záznamov informačného kanála
  4. Označuje informačné kanály alebo položky ako prečítané alebo neprečítané
  5. Obnovte heslo

Tu je zoznam, ako mapovať tieto operácie na trasy a príkazy HTTP.

trasapríkazpopispremenné
/ User / ZápisPOSTZaregistrujte nového používateľakrstné meno
priezvisko
e-mail
heslo
/ User / resetPasswordPUTResetovanie heslae-mail
/ krmivaGETZískajte odbery informačných kanálov pre každého používateľa s popisom a neprečítaným počtom
/ Krmivá / predplatiťPUTPrihláste sa na odber nového informačného kanálafeedURL
komplex / RSS / entriesGETZískajte všetky záznamy o informačných kanáloch, na ktoré je používateľ prihlásený
komplex / RSS // entriesGETZískajte všetky záznamy pre konkrétny informačný kanál
/ Zdroje /PUTVšetky položky pre konkrétny informačný kanál označte ako prečítané alebo neprečítanéčítaj =
/ Zdroje // vstupy /PUTOznačte konkrétny záznam ako prečítaný alebo neprečítanýčítaj =
/ Zdroje /DELETEZrušiť odber tohto konkrétneho informačného kanála

Zabezpečený HTTP je štandardný prístup používaný na odosielanie citlivých detailov, ako sú heslá, v produkčnom prostredí

Ďalšie kroky: autentifikácia v skutočnom svete

Autentifikácia používateľov je dôležitá pre bezpečnú správu používateľov, hesiel a resetov. Existuje niekoľko spôsobov, ako overiť používateľské účty.

Môžete napríklad použiť doplnok Passport s Node.js, čo je užitočné na overenie pomocou účtov Facebook, Twitter a sociálnych médií.

Vyššie uvedený príklad závisí od použitia Stormpath, REST API, ktoré podporuje autorizáciu a autentizáciu pomocou kľúčov API a ponúka správu používateľov ako službu.

Odporúčané články

Tu je niekoľko článkov, ktoré vám pomôžu získať viac podrobností o webových aplikáciách pomocou MongoDB, takže stačí prejsť na odkaz.

  1. HTML5 vs Flash nadšený poznať rozdiel?
  2. Java vs Node JS - 8 rozdielov, ktoré by ste mali vedieť
  3. Web Testing Application - užitočný a komplexný sprievodca
  4. Ako používať webové šablóny HTML Žiadosť Mobilné najlepší
  5. Vývoj softvéru verzus vývoj webových aplikácií
  6. Ako pripraviť nástroje pre webovú analýzu, aby vám pomohli (Sprievodca)
  7. MongoDB vs PostgreSQL: Aké sú rozdiely
  8. Užitočný sprievodca pre MongoDB vs Hadoop
  9. Najlepší sprievodca pre MongoDB vs Cassandra