Come costruire applicazioni Web usando MongoDB

Sommario:

Anonim

Applicazioni Web che utilizzano MongoDB - MongoDB è uno dei migliori strumenti per sviluppatori web seri e questo articolo su MongoDB esaminerà tutto ciò che è necessario sapere per creare applicazioni Web con MongoDB. Ma prima di iniziare, diamo un'occhiata più da vicino allo strumento popolare.

Fonte immagine: pixabay.com

Che cos'è MongoDB?

In parole povere, MongoDB è un database NoSQL orientato ai documenti multipiattaforma che utilizza documenti simili a JSON usando schemi dinamici, chiamati documenti BSON, invece di seguire la struttura convenzionale del database relazionale (RDB).

Ci sono molti termini con cui potresti non avere familiarità, quindi analizziamoli prima.

Ora, un database orientato ai documenti funziona sul concetto di base secondo cui un documento di dati contiene "metadati", che sono valori utilizzati per identificare il tipo di dati e semplificare l'archiviazione e il recupero quando necessario. Ad esempio, diamo un'occhiata alle seguenti due righe di dati:

  • John Hancock
  • Architetto

Uno sguardo a queste due righe dovrebbe darti un'idea di ciò a cui si riferiscono questi dati: il nome e l'occupazione di una persona. Una macchina, tuttavia, non può distinguere questa distinzione. Deve essere comunicato il tipo di dati.

In un RDB, questo tipo può essere archiviato in un archivio valori-chiave separato dal documento stesso. Tuttavia, con un database orientato ai documenti, è possibile determinare il tipo di dati durante la digitazione del codice. Quindi finisci per scrivere un po 'così:

  • John Hancock
  • Architetto

E eccoti qua; ora il tipo di dati è stato definito proprio all'interno del documento. Ciò offre una flessibilità che non è presente negli RDB, motivo per cui i database orientati ai documenti sono così popolari per le applicazioni Web.

Dopotutto, le applicazioni Web sono soggette a regolari modifiche e aggiornamenti. Naturalmente, anche gli RDB hanno i loro vantaggi e i database orientati ai documenti non sono perfetti per ogni situazione, ma non divaghiamo.

Passiamo a JSON, BSON e schemi. JSON fa riferimento a JavaScript Object Notation, ma in realtà è un formato di dati standard aperto che può funzionare con lingue diverse da JavaScript.

Uno schema è la struttura del database, definita come tabelle nel caso di RDB. Poiché i database orientati ai documenti non utilizzano tali tabelle, sono essenzialmente senza struttura o senza schemi.

Per quanto riguarda BSON, beh, questo sta per Binary JSON, ed è il formato di archiviazione dei dati per il database MongoDB. Questo è tutto ciò che devi sapere al riguardo in questa fase.

Ora, con le basi di partenza, diamo un'occhiata al perché MongoDB è una buona scelta per creare applicazioni web:

Perché scegliere MongoDB?

Esistono diversi motivi per la popolarità di MongoDB nella creazione di applicazioni Web. MongoDB non è uno strumento perfetto; tutt'altro, in effetti. MongoDB ha diverse sfide e non è la soluzione giusta per tutte le applicazioni web. MongoDB funziona bene quando si tratta di applicazioni Web per i seguenti motivi:

  • MongoDB è senza schemi

Il database MongoDB può contenere raccolte di documenti con ciascun documento con dimensioni, contenuto e numero di campi propri. Puoi tornare indietro e modificare i valori chiave, oppure aggiungerli ed eliminarli come desideri.

Questo rende anche chiara e semplice la struttura di un singolo oggetto e MongoDB è anche facile da ridimensionare quando necessario.

  • MongoDB è generico

Il database può essere utilizzato per una serie di applicazioni Web, tra cui gestione dei dati dei clienti, gestione dei contenuti, hub di dati, app mobili, Internet delle cose, Big Data, cataloghi di prodotti e risorse e database come servizio.

  • MongoDB supporta l'auto-sharding

I database relazionali generalmente si ridimensionano verticalmente, in cui un singolo server ospita il database completo. Ciò può limitare la scala operativa, con la soluzione di aggiungere in orizzontale e aggiungere server anziché concentrare la capacità su un singolo server.

La condivisione di un database viene eseguita per evitare ciò e far agire l'hardware come un singolo server. Gli sviluppatori devono distribuire più database relazionali tra macchine e sviluppare codice applicativo per distribuire dati, interrogare e aggregare i risultati.

MongoDB e altri database NoSQL supportano la condivisione automatica, il che significa che distribuiscono automaticamente i dati su vari server senza che l'applicazione venga a conoscenza della composizione.

MongoDB è particolarmente utile con il cloud computing. Come sviluppatore, non devi creare piattaforme costose e complesse per supportare le applicazioni Web, ma puoi concentrarti sulla scrittura del codice dell'applicazione reale.

Qualche altro termine per conoscere MongoDB

Bene, ora abbiamo trattato le basi e i vantaggi di MongoDB. Prima di sporcarci la mano, diamo un'occhiata ad alcuni altri termini che dovresti conoscere:

  • Database: un database contiene raccolte e ogni database ha i propri file sul file system. Un tipico server MongoDB avrà diversi database.
  • Raccolta: un gruppo di documenti MongoDB è chiamato raccolta e questo è l'equivalente di una tabella in RDB. Un singolo database avrà una raccolta e ogni documento avrà campi diversi. A differenza dei tablet, le raccolte non hanno uno schema.
  • Documento: un documento è un insieme di coppie chiave-valore e ha uno schema dinamico, il che significa che documenti diversi nella stessa raccolta possono avere set e strutture di campi diversi.

    Corsi consigliati

  • Corsi di debug su Ruby
  • Formazione sulla programmazione MySQL PHP
  • Formazione di programmazione online VB.NET
  • Corso di formazione ITIL Foundation

Creazione di applicazioni Web

Le applicazioni web in costruzione per questa particolare guida MongoDB sono un aggregatore RSS come Google Reader. Le applicazioni Web avranno due componenti chiave: un'API REST e un raccoglitore di feed.

Per capire cos'è un'API REST, devi prima conoscere un po 'lo stack MEAN. Il codice per un feed grabber può essere trovato anche nella directory github.

Comprensione dello stack MEAN:

Lo stack MEAN sta per:

  1. MongoDB, che è il database da utilizzare per l'applicazione Web
  2. js, che è un framework di applicazioni web leggero
  3. js, che è un framework per la creazione di applicazioni Web avanzate JavaScript e HTML5
  4. js, che è un interprete JavaScript lato server

Per le applicazioni Web discusse qui, verrà creata un'API REST anziché un'interfaccia utente HTML. L'API Representational State Transfer (REST) ​​è un'alternativa più leggera alle API basate su XML e può fungere da base per qualsiasi tipo di interfaccia, nonostante non abbia un'interfaccia utente.

REST funziona su un modello client-server, con il client che invia comandi HTTP al server HTTP, insieme a parametri variabili codificati nell'URL che descrivono l'oggetto target dell'azione. Il server risponde quindi con il codice JSON e il risultato.

Ora MongDB e JavaScript reagiscono entrambi bene con JSON, rendendo lo stack MEAN particolarmente adatto per le applicazioni web.

CRUD

L 'acronimo CRUD significa creare, leggere, aggiornare ed eliminare. Queste sono le operazioni di database comuni che traducono in HTTP come post, get, put ed delete.

Creazione di un'API REST

Cominciamo creando un'API REST, sviluppando le basi per la creazione di applicazioni Web. L'applicazione potrebbe essere basata sul Web o progettata per Android, iOS o altre piattaforme specifiche. Per cominciare, elenchiamo le cose che l'app sarà in grado di fare:

  1. Consenti agli utenti di creare un account
  2. Consentili di iscriversi o di annullare l'iscrizione ai feed
  3. Offri loro la possibilità di leggere e contrassegnare le voci del feed come lette o non lette
  4. Tieni traccia dei feed RSS per il monitoraggio
  5. Memorizzare le informazioni dell'utente nei rispettivi account
  6. Tieni traccia degli abbonamenti ai feed degli utenti
  7. Tieni traccia di una voce del feed già letta da un utente

Modellazione dei dati

In base ai requisiti, le applicazioni Web avranno bisogno di quattro raccolte per la gestione delle informazioni:

  1. Raccolta dell'utente
  2. Raccolta di feed
  3. Raccolta di mappature voci feed utente
  4. Raccolta voci feed

Ecco uno sguardo più da vicino a ciascuno:

  • Raccolta di feed:

Il seguente JSON è un buon esempio per modellare una raccolta di feed:

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

Il documento JSON sopra è un feed RSS per Reuters, che tiene traccia delle informazioni sulle ultime notizie pubblicate sul sito Web. Ci sono molti campi che vedi qui, ma i più importanti per il funzionamento delle applicazioni Web sono l'URL del feed e la descrizione del feed.

L'URL è importante per recuperare il contenuto dalla fonte corretta e la descrizione è importante perché fornisce un riepilogo per il feed.

Il resto dei campi, nel frattempo, sono per uso interno. Puoi aggiungerne altri o rimuoverne alcuni come preferisci. Nella parte superiore del documento si trova il campo _id. Ogni documento deve avere questo campo e l'ID deve essere univoco.

Nell'esempio sopra, un ID è stato creato manualmente per il campo. Se lo perdi, MongoDB ne farà automaticamente uno.

  • Tracciamento e raccolta delle voci del feed

Se desideri monitorare più feed di notizie, puoi aggiungerne altri utilizzando lo stesso formato sopra. Una volta terminato di aggiungere i feed, è tempo di rintracciarli e raccoglierli. Di seguito è riportato un documento per la raccolta di voci di feed:

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

Ancora una volta, puoi vedere il campo _id compilato, insieme ad alcuni altri campi come la descrizione, il riepilogo e il titolo. Il campo del contenuto utilizza un array e MongoDB consente agli array di archiviare documenti. Questa disposizione del sottodocumento può essere particolarmente utile nelle situazioni in cui tutte le informazioni devono essere tenute insieme.

Prendi nota del feedID; ha lo stesso tipo ObjectId e il valore di _id del documento di immissione feed precedente per il feed Reuters. Ciò offre un modello referenziale, quindi è possibile eseguire una query sulla raccolta feed sullo stesso valore ID per restituire il documento Reuters.

  • Tracciamento dell'utente

Ecco un documento di esempio per tenere traccia degli utenti:

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

Qui, l'utente ha tre attributi chiave: nome, cognome e indirizzo e-mail. Esistono anche due elementi che possono essere utilizzati con l'API di gestione utenti Stormpath: sp_api_key_secret e sp_api_key_id.

Il campo finale, subs, è l'array di sottoscrizione e indica al feed a cui l'utente è abbonato.

  • Mappatura voci feed

La raccolta finale consente di mappare gli utenti ai feed e di tracciare i feed letti:

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

"read" : true,

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

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

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

Come puoi vedere, un booleano true / false di base viene utilizzato per contrassegnare se il feed è stato letto o meno. Ora, l'utente dovrebbe essere in grado di eseguire le seguenti funzioni:

  1. Creare un account
  2. Iscrizione o annullamento dell'iscrizione ai feed
  3. Lettura delle voci del feed
  4. Contrassegnare feed o voci come letti o non letti
  5. Reimposta la password

Ecco un elenco di come mappare queste operazioni su route e comandi HTTP.

ItinerarioComandoDescrizionevariabili
/ User / iscriversiINVIARERegistra un nuovo utentenome di battesimo
cognome
e-mail
parola d'ordine
/ User / ResetPasswordMETTEREReimpostazione della passworde-mail
/ feedOTTENEREOttieni abbonamenti ai feed per ogni utente con descrizione e conteggio non letto
/ feed / iscrivitiMETTEREIscriviti a un nuovo feedfeedUrl
/ feed / vociOTTENEREOttieni tutte le voci per i feed a cui l'utente è iscritto
/ feed // vociOTTENEREOttieni tutte le voci per un feed specifico
/ Feed /METTEREContrassegna tutte le voci per un feed specifico come lette o non letteleggi =
/ Feed // voci /METTEREContrassegnare una voce specifica come letta o non lettaleggi =
/ Feed /ELIMINAAnnulla l'iscrizione a questo feed specifico

HTTP sicuro è l'approccio standard utilizzato per inviare dettagli sensibili come le password in un ambiente di produzione

Prossimi passi: autenticazione del mondo reale

L'autenticazione utente è importante per la gestione sicura di utenti, password e ripristini. Esistono diversi modi per autenticare gli account utente.

Ad esempio, è possibile utilizzare un plug-in Passport con Node.js, utile per l'autenticazione con account Facebook, Twitter e social media.

L'esempio precedente dipende dall'uso di Stormpath, un'API REST che supporta l'autorizzazione e l'autenticazione tramite chiavi API e offre la gestione degli utenti come servizio.

Articoli consigliati

Ecco alcuni articoli che ti aiuteranno a ottenere maggiori dettagli sulle applicazioni Web usando MongoDB, quindi basta andare attraverso il link.

  1. HTML5 vs Flash Sei entusiasta di conoscere la differenza?
  2. Java vs Node JS - 8 differenze che dovresti conoscere
  3. Applicazione di test Web una guida utile e completa
  4. Come utilizzare i modelli Web HTML | Applicazione | Mobile | Migliore
  5. Sviluppo software vs sviluppo Web
  6. Come preparare gli strumenti di Web Analytics per lavorare con te (Guida)
  7. MongoDB vs PostgreSQL: quali sono le differenze
  8. Guida utile su MongoDB vs Hadoop
  9. Migliore guida su MongoDB vs Cassandra