Webové aplikace používající MongoDB - MongoDB je jedním z nejlepších nástrojů pro seriózní vývojáře webových stránek a tento článek o MongoDB se zaměřuje na vše, co potřebujete vědět, abyste mohli vytvářet webové aplikace s MongoDB. Ale než začneme, podívejme se blíže na populární nástroj.
Co je MongoDB?
Zjednodušeně řečeno, MongoDB je multiplatformní databáze NoSQL orientovaná na dokumenty, která používá dokumenty podobné JSON pomocí dynamických schémat, nazývaných dokumenty BSON, namísto sledování konvenční struktury relačních databází (RDB).
To je spousta termínů, se kterými nemusíte být obeznámeni, takže je nejprve rozdělte.
Nyní databáze orientovaná na dokumenty funguje na základním pojetí, že datový dokument obsahuje „metadata“, což jsou hodnoty používané k identifikaci typu dat a v případě potřeby usnadňují ukládání a vyhledávání. Například se podívejme na následující dva řádky dat:
- John Hancock
- Architekt
Pohled na tyto dva řádky by vám měl poskytnout představu o tom, na co se tato data vztahují: jméno a povolání osoby. Stroj však toto rozlišení nedokáže rozeznat. Je třeba říci, jaký typ dat.
V RDB lze tento typ uložit do úložiště klíč-hodnota, které je oddělené od samotného dokumentu. S databází orientovanou na dokumenty se však při zadávání kódu dostanete k určení typu dat. Takže nakonec napíšete trochu takto:
- John Hancock
- Architekt
A tam jdeš; nyní byl typ dat definován přímo v dokumentu. To poskytuje flexibilitu, která v RDB není přítomna, a proto jsou databáze orientované na dokumenty pro webové aplikace tak populární.
Konec konců webové aplikace podléhají pravidelným změnám a aktualizacím. RDB mají samozřejmě také své výhody a databáze zaměřené na dokumenty nejsou ideální pro každou situaci, ale nesnižujeme se.
Pojďme na JSON, BSON a schémata. JSON odkazuje na JavaScript Object Notation, ale ve skutečnosti jde o otevřený standardní datový formát, který může pracovat s jinými jazyky než JavaScript.
Schéma je struktura databáze, definovaná jako tabulky v případě RDB. Protože databáze zaměřené na dokumenty takové tabulky nepoužívají, jsou v zásadě prosté struktury nebo schemaless.
Pokud jde o BSON, to prostě znamená Binary JSON a je to formát pro ukládání dat pro databázi MongoDB. To je vše, co o tom v této fázi potřebujete vědět.
Nyní, se základními východisky, pojďme se podívat, proč je MongoDB dobrou volbou pro vytváření webových aplikací:
Proč jít na MongoDB?
Existuje několik důvodů pro popularitu MongoDB pro vytváření webových aplikací. MongoDB není dokonalý nástroj; ve skutečnosti daleko od toho. MongoDB má několik výzev a není vhodný pro všechny webové aplikace. MongoDB však funguje dobře, pokud jde o webové aplikace, a to z následujících důvodů:
-
MongoDB je schemaless
Databáze MongoDB může uchovávat sbírky dokumentů, přičemž každý dokument má svou vlastní velikost, obsah a počet polí. Můžete se vrátit zpět a změnit hodnoty klíčů, nebo je přidat a odstranit, jak chcete.
Díky tomu je struktura jediného objektu jasná a přímá a MongoDB je také v případě potřeby snadno škálovatelné.
-
MongoDB je univerzální
Databáze může být použita pro řadu webových aplikací, včetně správy zákaznických dat, správy obsahu, datových center, mobilních aplikací, internetu věcí, velkých dat, katalogů produktů a aktiv a databáze jako služba.
-
MongoDB podporuje automatické ostření
Relační databáze se obvykle měří vertikálně, ve kterém jediný server hostuje celou databázi. To může omezit rozsah provozu, přičemž řešením je přidávat horizontálně a přidávat servery, spíše než soustředit kapacitu na jediný server.
Sdílení databáze se provádí, aby se tomu zabránilo a aby hardware fungoval jako jediný server. Vývojáři musí nasadit více relačních databází napříč počítači a vyvinout aplikační kód pro distribuci dat, dotazy a agregaci výsledků.
MongoDB a další databáze NoSQL podporují automatické sdílení, což znamená, že automaticky rozloží data na různé servery, aniž by aplikace byla o složení informována.
MongoDB je zvláště užitečný u cloud computingu. Jako vývojář nemusíte budovat drahé a složité platformy pro podporu webových aplikací, ale můžete se zaměřit na psaní skutečného kódu aplikace.
Několik dalších podmínek o MongoDB
Dobře, takže jsme nyní pokryli základy a výhody MongoDB. Než si zašpiníme ruku, podívejme se na několik dalších pojmů, se kterými byste se měli seznámit:
- Databáze: databáze obsahuje sbírky a každá databáze má své vlastní soubory v systému souborů. Typický server MongoDB bude mít několik databází.
- Kolekce: skupina dokumentů MongoDB se nazývá kolekce, což je ekvivalent tabulky v RDB. Jedna databáze bude mít kolekci a každý dokument bude mít různá pole. Na rozdíl od tablet nemají sbírky schéma.
- Dokument: Dokument je skupina párů klíč-hodnota a má dynamické schéma, což znamená, že různé dokumenty ve stejné kolekci mohou mít různé sady polí a struktury.
Doporučené kurzy
- Ruby Debugging Courses
- PHP MySQL Programming Training
- Online školení programování VB.NET
- Školicí kurz nadace ITIL
Vytváření webových aplikací
Webové aplikace vytvářené pro tento konkrétní průvodce MongoDB jsou agregátorem RSS, jako je Google Reader. Webové aplikace budou mít dvě klíčové komponenty: REST API a grabber Feed.
Abyste pochopili, co je REST API, musíte nejprve něco vědět o zásobníku MEAN. Kód pro grabber zdroje najdete i v adresáři github.
Porozumění zásobníku MEAN:
Zásobník MEAN znamená následující:
- MongoDB, což je databáze, která má být použita pro webovou aplikaci
- js, což je lehký rámec webových aplikací
- js, což je rámec pro vytváření webových aplikací bohatých na JavaScript a HTML5
- js, což je tlumočník JavaScriptu na straně serveru
Pro zde diskutované webové aplikace bude místo uživatelského rozhraní HTML vytvořeno rozhraní REST API. Rozhraní REST (Representational State Transfer) je lehčí alternativou k API založeným na XML a může sloužit jako základ pro jakýkoli typ rozhraní, přestože nemá uživatelské rozhraní.
Funkce REST na modelu klient-server, kdy klient odesílá HTTP příkazy na server HTTP, spolu s proměnnými parametry zakódovanými v adrese URL popisující cílový objekt akce. Server poté odpoví pomocí JSON a výsledného kódu.
Nyní MongDB i JavaScript dobře reagují s JSON, což činí zásobník MEAN obzvláště vhodný pro webové aplikace.
CRUD
Zkratka CRUD znamená vytvářet, číst, aktualizovat a mazat. Jedná se o běžné databázové operace, které se překládají v HTTP jako post, get, put and delete.
Vytváření REST API
Začněme vytvořením REST API a vytvořením základu pro tvorbu webových aplikací. Aplikace může být webová nebo navržená pro Android, iOS nebo jiné specifické platformy. Začněme se seznamem věcí, které aplikace bude moci udělat:
- Povolit uživatelům vytvořit účet
- Umožněte jim přihlásit se k odběru nebo odhlásit kanály
- Poskytněte jim možnost číst a označovat položky zdroje jako přečtené nebo nepřečtené
- Sledujte kanály RSS pro monitorování
- Uložte informace o uživateli do příslušných účtů
- Sledujte předplatné zdroje uživatele
- Sledujte položku zdroje již přečtenou uživatelem
Modelování dat
Na základě požadavků budou webové aplikace pro správu informací vyžadovat čtyři kolekce:
- Sbírka uživatelů
- Kolekce krmiv
- Kolekce mapování položek uživatelského zdroje
- Kolekce vstupního kanálu
Zde je bližší pohled na každý z nich:
-
Kolekce krmiv:
Následující JSON je dobrým příkladem pro modelování kolekce zdrojů:
( "_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 výše je informační kanál RSS pro Reuters, který sleduje informace o nejnovějších zprávách zveřejněných na webových stránkách. Zde vidíte mnoho polí, ale nejdůležitější pro fungování webových aplikací je adresa URL zdroje a popis zdroje.
URL je důležitá pro načítání obsahu ze správného zdroje a popis je důležitý, protože poskytuje shrnutí zdroje.
Ostatní pole jsou mezitím určena pro interní použití. Dalo by se přidat více nebo některé z nich odstranit, jak budete chtít. V horní části dokumentu je pole _id. Každý dokument musí mít toto pole a ID musí být jedinečné.
Ve výše uvedeném příkladu bylo pro pole vytvořeno ID ručně. Pokud toto vynecháte, MongoDB ho automaticky vytvoří.
-
Sledování a shromažďování položek zdroje
Pokud chcete sledovat více zpravodajských kanálů, můžete je přidat ve stejném formátu výše. Jakmile přidáte zdroje, je čas je sledovat a sbírat. Níže je uveden dokument pro sběr vstupů zdroje:
( "_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") )
Znovu uvidíte pole _id vyplněné spolu s některými dalšími poli, jako je popis, shrnutí a nadpis. Pole obsahu používá pole a MongoDB umožňuje polím ukládat dokumenty. Toto uspořádání dílčích dokumentů může být zvláště užitečné v situacích, kdy musí být všechny informace drženy pohromadě.
Poznamenejte si feedID; má stejný typ ObjectId a hodnotu _id jako dřívější vstupní dokument zdroje pro zdroj Reuters. To nabízí referenční model, takže můžete dotazovat kolekci zdrojů na stejné hodnotě ID a vrátit dokument Reuters.
-
Sledování uživatele
Zde je příklad dokumentu pro sledování uživatelů:
( "_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") ), )
Uživatel má zde tři klíčové atributy: jméno, příjmení a e-mailovou adresu. S rozhraním API pro správu uživatelů Stormpath lze také použít dva prvky: sp_api_key_secret a sp_api_key_id.
Posledním polem subs je pole předplatného a sděluje zdroj, k němuž je uživatel přihlášen.
-
Mapování vstupu zdroje
Jeho konečná sbírka umožňuje mapování uživatelů na zdroje a sledování sledovaných zdrojů:
( "_id" : ObjectId("523b2fcc054b1b8c579bdb82"),
"read" : true,
"user_id" : ObjectId("54ad6c3ae764de42070b27b1"),
"feed_entry_id" : ObjectId("523b1153a2aa6a3233a91412"),
"feed_id" : ObjectId("523b1153a2aa6a3233a913f8") )
Jak vidíte, pro značení, zda byl zdroj přečten, či nikoli, se používá základní true / false Boolean. Nyní by měl být uživatel schopen provádět následující funkce:
- Vytvoření účtu
- Přihlášení k odběru nebo odhlášení z kanálu
- Čtení položek zdroje
- Označení zdrojů nebo položek jako přečtených nebo nepřečtených
- Resetujte heslo
Zde je seznam, jak mapovat tyto operace na trasy a příkazy HTTP.
Trasa | Příkaz | Popis | Proměnné |
/ user / enroll | POŠTA | Zaregistrujte nového uživatele | jméno příjmení e-mailem Heslo |
/ user / resetPassword | DÁT | Resetovat heslo | e-mailem |
/ kanály | DOSTAT | Získejte odběry zdrojů pro každého uživatele s popisem a nepřečteným počtem | |
/ feeds / subscribe | DÁT | Přihlaste se k odběru nového zdroje | feedURL |
/ kanály / záznamy | DOSTAT | Získejte všechny položky pro kanály, k nimž je uživatel přihlášen | |
/ kanály // položky | DOSTAT | Získejte všechny položky pro konkrétní zdroj | |
/ feeds / | DÁT | Označte všechny položky pro konkrétní zdroj jako přečtené nebo nepřečtené | read = |
/ kanály // záznamy / | DÁT | Označte konkrétní záznam jako přečtený nebo nepřečtený | read = |
/ feeds / | ODSTRANIT | Odhlásit se z tohoto konkrétního zdroje |
Zabezpečený HTTP je standardní přístup používaný k odesílání citlivých podrobností, jako jsou hesla v produkčním prostředí
Další kroky: autentizace v reálném světě
Ověřování uživatelů je důležité pro bezpečnou správu uživatelů, hesel a resetů. Existuje několik způsobů, jak ověřit uživatelské účty.
Například můžete použít modul Passport Plugin s Node.js, což je užitečné k ověření pomocí účtů Facebook, Twitter a sociálních médií.
Výše uvedený příklad závisí na použití Stormpath, REST API, které podporuje autorizaci a autentizaci pomocí API klíčů a nabízí správu uživatelů jako službu.
Doporučené články
Zde je několik článků, které vám pomohou získat více podrobností o webových aplikacích pomocí MongoDB, takže stačí projít odkaz.
- HTML5 vs Flash nadšeni znát rozdíl?
- Java vs Node JS - 8 rozdílů, které byste měli vědět
- Web Testing Application - užitečný a komplexní průvodce
- Jak používat webové šablony HTML Aplikace | Mobilní | Nejlepší
- Vývoj softwaru vs vývoj webových aplikací
- Jak připravit nástroje pro webovou analýzu, aby pro vás fungovaly (Průvodce)
- MongoDB vs PostgreSQL: Jaké jsou rozdíly
- Užitečný průvodce pro MongoDB vs Hadoop
- Nejlepší průvodce MongoDB vs Cassandra