Aplicaciones web que utilizan MongoDB: MongoDB es una de las mejores herramientas para desarrolladores web serios, y este artículo sobre MongoDB analizará todo lo que necesita saber para crear aplicaciones web con MongoDB. Pero antes de comenzar, echemos un vistazo más de cerca a la herramienta popular.

Fuente de la imagen: pixabay.com

¿Qué es MongoDB?

En los términos más simples, MongoDB es una base de datos NoSQL orientada a documentos multiplataforma que utiliza documentos similares a JSON utilizando esquemas dinámicos, llamados documentos BSON, en lugar de seguir la estructura de base de datos relacional convencional (RDB).

Esos son muchos términos con los que quizás no estés familiarizado, así que vamos a desglosarlos primero.

Ahora, una base de datos orientada a documentos funciona con el concepto básico de que un documento de datos contiene 'metadatos', que son valores utilizados para identificar el tipo de datos y facilitar el almacenamiento y la recuperación cuando sea necesario. Por ejemplo, veamos las siguientes dos líneas de datos:

  • John Hancock
  • Arquitecto

Una mirada a estas dos líneas debería darle una idea de a qué se refieren estos datos: el nombre y la ocupación de una persona. Sin embargo, una máquina no puede distinguir esta distinción. Necesita que se le diga el tipo de datos.

En un RDB, este tipo se puede almacenar en un almacén de valores clave que está separado del documento en sí. Sin embargo, con una base de datos orientada a documentos, puede determinar el tipo de datos a medida que escribe el código. Entonces terminas escribiendo un poco así:

  • John Hancock
  • Arquitecto

Y ahí vas; ahora el tipo de datos se ha definido directamente dentro del documento. Esto proporciona una flexibilidad que no está presente en los RDB, razón por la cual las bases de datos orientadas a documentos son tan populares para las aplicaciones web.

Después de todo, las aplicaciones web están sujetas a cambios y actualizaciones regulares. Por supuesto, los RDB también tienen sus ventajas, y las bases de datos orientadas a documentos no son perfectas para cada situación, pero no pasemos por alto.

Pasemos a JSON, BSON y esquemas. JSON se refiere a la notación de objetos de JavaScript, pero en realidad es un formato de datos estándar abierto que puede funcionar con idiomas distintos de JavaScript.

Un esquema es la estructura de la base de datos, definida como tablas en el caso de los RDB. Como las bases de datos orientadas a documentos no usan tales tablas, son esencialmente sin estructura o sin esquema.

En cuanto a BSON, bueno, eso solo significa Binary JSON, y es el formato de almacenamiento de datos para la base de datos MongoDB. Eso es todo lo que necesita saber al respecto en esta etapa.

Ahora, con los conceptos básicos, veamos por qué MongoDB es una buena opción para hacer aplicaciones web:

¿Por qué optar por MongoDB?

Hay varias razones para la popularidad de MongoDB para crear aplicaciones web. MongoDB no es una herramienta perfecta; lejos de eso, de hecho. MongoDB tiene varios desafíos, y no es el adecuado para todas las aplicaciones web. Pero MongoDB funciona bien cuando se trata de aplicaciones web por las siguientes razones:

  • MongoDB no tiene esquemas

La base de datos MongoDB puede contener colecciones de documentos con cada documento que tiene su propio tamaño, contenido y número de campos. Puede regresar y cambiar los valores clave, o agregarlos y eliminarlos como desee.

Esto también hace que la estructura de un solo objeto sea clara y directa, y MongoDB también es fácil de escalar cuando sea necesario.

  • MongoDB es de uso general

La base de datos se puede utilizar para una serie de aplicaciones web, incluida la gestión de datos de clientes, gestión de contenido, centros de datos, aplicaciones móviles, Internet de las cosas, Big Data, catálogos de productos y activos y bases de datos como servicio.

  • MongoDB admite auto-sharding

Las bases de datos relacionales generalmente se escalan verticalmente, en el que un solo servidor aloja la base de datos completa. Esto puede limitar la escala de operación, con la solución de agregar horizontalmente y agregar servidores en lugar de concentrar la capacidad en un solo servidor.

Se comparte una base de datos para evitar esto y hacer que el hardware actúe como un único servidor. Los desarrolladores deben implementar múltiples bases de datos relacionales en las máquinas y desarrollar código de aplicación para distribuir los datos, consultas y agregar los resultados.

MongoDB y otras bases de datos NoSQL admiten el uso compartido automático, lo que significa que distribuyen automáticamente los datos en varios servidores sin que la aplicación conozca la composición.

MongoDB es especialmente útil con la computación en la nube. Como desarrollador, no tiene que crear plataformas costosas y complejas para admitir aplicaciones web, sino que puede centrarse en escribir el código de la aplicación real.

Algunos términos más para aprender sobre MongoDB

Muy bien, ahora hemos cubierto los conceptos básicos y los beneficios de MongoDB. Antes de ensuciarnos la mano, veamos algunos términos más con los que debería estar familiarizado:

  • Base de datos: una base de datos contiene colecciones, y cada base de datos tiene sus propios archivos en el sistema de archivos. Un servidor MongoDB típico tendrá varias bases de datos.
  • Colección: un grupo de documentos de MongoDB se denomina colección, y este es el equivalente de una tabla en RDB. Una única base de datos tendrá una colección, y cada documento tendrá diferentes campos. A diferencia de las tabletas, las colecciones no tienen un esquema.
  • Documento: un documento es un conjunto de pares clave-valor y tiene un esquema dinámico, lo que significa que diferentes documentos en la misma colección pueden tener diferentes conjuntos de campos y estructuras.

    Cursos recomendados

  • Cursos de depuración de Ruby
  • Entrenamiento de programación PHP MySQL
  • Entrenamiento en línea de programación VB.NET
  • Curso de formación de la Fundación ITIL

Construyendo aplicaciones web

Las aplicaciones web que se están creando para esta guía particular de MongoDB es un agregador RSS como Google Reader. Las aplicaciones web tendrán dos componentes clave: una API REST y un capturador de Feed.

Para comprender qué es una API REST, primero debe saber un poco sobre la pila MEAN. El código para un capturador de feeds, se puede encontrar incluso en el directorio github.

Comprensión de la pila MEAN:

La pila MEAN significa lo siguiente:

  1. MongoDB, que es la base de datos que se utilizará para la aplicación web
  2. js, que es un marco de aplicaciones web ligero
  3. js, que es un marco para crear aplicaciones web ricas en JavaScript y HTML5
  4. js, que es un intérprete de JavaScript del lado del servidor

Para las aplicaciones web que se analizan aquí, se creará una API REST en lugar de una interfaz de usuario HTML. La API de transferencia de estado representacional (REST) ​​es una alternativa más ligera a las API basadas en XML y puede servir como base para cualquier tipo de interfaz, a pesar de no tener una interfaz de usuario.

REST funciona en un modelo cliente-servidor, con el cliente enviando comandos HTTP al servidor HTTP, junto con parámetros variables codificados en la URL que describe el objeto de destino de la acción. El servidor luego responde con el JSON y el código de resultado.

Ahora, MongDB y JavaScript reaccionan bien con JSON, lo que hace que la pila MEAN sea especialmente adecuada para las aplicaciones web.

CRUDO

El acrónimo CRUD significa crear, leer, actualizar y eliminar. Estas son operaciones comunes de bases de datos que se traducen en HTTP como publicar, obtener, colocar y eliminar.

Construyendo una API REST

Comencemos creando una API REST, desarrollando la base para construir las aplicaciones web. La aplicación podría estar basada en la web o diseñada para Android, iOS u otras plataformas específicas. Para comenzar, enumeremos las cosas que la aplicación podrá hacer:

  1. Permitir a los usuarios crear una cuenta
  2. Permítales suscribirse o darse de baja a los feeds
  3. Bríndeles la capacidad de leer y marcar entradas de feed como leídas o no leídas
  4. Rastree los canales RSS para monitorear
  5. Almacenar información del usuario en sus respectivas cuentas
  6. Rastree suscripciones de feeds de usuarios
  7. Rastrear una entrada de feed ya leída por un usuario

Modelado de datos

Según los requisitos, las aplicaciones web necesitarán cuatro colecciones para gestionar la información:

  1. Colección de usuarios
  2. Recolección de alimento
  3. Colección de mapeo de entrada de alimentación de usuario
  4. Colección de entrada de feed

Aquí hay un vistazo más de cerca a cada uno:

  • Recolección de alimento:

El siguiente JSON es un buen ejemplo para modelar una colección de feeds:

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

El documento JSON anterior es una fuente RSS para Reuters, que rastrea información sobre las últimas noticias publicadas en el sitio web. Hay muchos campos que puede ver aquí, pero los más importantes para que funcionen las aplicaciones web es la URL del feed y la descripción del feed.

La URL es importante para obtener contenido de la fuente correcta, y la descripción es importante porque proporciona un resumen de la fuente.

El resto de los campos, por su parte, son de uso interno. Puede agregar más o eliminar algunos de los que desee. Justo en la parte superior del documento está el campo _id. Cada documento debe tener este campo, y la ID debe ser única.

En el ejemplo anterior, se ha creado una ID manualmente para el campo. Si se pierde esto, MongoDB creará uno automáticamente.

  • Seguimiento y recopilación de entradas de feed

Si desea realizar un seguimiento de más fuentes de noticias, puede agregar más utilizando el mismo formato anterior. Una vez que haya terminado de agregar los feeds, es hora de rastrearlos y recopilarlos. A continuación se muestra un documento para la recopilación de entradas de 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") )

Una vez más, puede ver el campo _id completado, junto con algunos otros campos, como la descripción, el resumen y el título. El campo de contenido usa una matriz, y MongoDB permite que las matrices almacenen documentos. Esta disposición de subdocumento puede ser particularmente útil en situaciones en las que toda la información debe mantenerse unida.

Tome nota del feedID; tiene el mismo tipo de ObjectId y el valor de _id que el documento de entrada de feed anterior para el feed de Reuters. Esto ofrece un modelo referencial, por lo que puede consultar la colección de feeds en el mismo valor de ID para devolver el documento de Reuters.

  • Rastreando al usuario

Aquí hay un documento de ejemplo para hacer un seguimiento de los usuarios:

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

Aquí, el usuario tiene tres atributos clave: nombre, apellido y dirección de correo electrónico. También hay dos elementos que se pueden usar con la API de administración de usuarios de Stormpath: sp_api_key_secret y sp_api_key_id.

El campo final, subs, es la matriz de suscripción y le dice al feed al que está suscrito el usuario.

  • Mapeo de entrada de feed

La colección final le permite el mapeo de los usuarios a las fuentes y el seguimiento de las fuentes que se han leído:

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

"read" : true,

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

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

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

Como puede ver, se utiliza un booleano básico verdadero / falso para marcar si el feed se ha leído o no. Ahora, el usuario debería poder realizar las siguientes funciones:

  1. Creando una cuenta
  2. Suscribirse o darse de baja de los feeds
  3. Lectura de entradas de feed
  4. Marcado de feeds o entradas como leídas o no leídas
  5. Restablecer la contraseña

Aquí hay una lista de cómo asignar estas operaciones a rutas y comandos HTTP.

RutaMandoDescripciónVariables
/ usuario / inscribirseENVIARRegistrar un nuevo usuarionombre de pila
apellido
correo electrónico
contraseña
/ user / resetPasswordPONERRestablecimiento de contraseñacorreo electrónico
/ alimentaOBTENERObtenga suscripciones de feed para cada usuario con descripción y recuento no leído
/ feeds / subscribePONERSuscríbase a un nuevo feedURL para el canal
/ feeds / entradasOBTENERObtenga todas las entradas de feeds a los que está suscrito el usuario
/ feeds // entradasOBTENERObtenga todas las entradas para un feed específico
/ feeds /PONERMarcar todas las entradas para un feed específico como leídas o no leídasleer =
/ feeds // entradas /PONERMarcar una entrada específica como leída o no leídaleer =
/ feeds /ELIMINARDarse de baja de este feed en particular

HTTP seguro es el enfoque estándar utilizado para enviar detalles confidenciales como contraseñas en un entorno de producción

Próximos pasos: autenticación del mundo real

La autenticación de usuarios es importante para administrar de forma segura usuarios, contraseñas y restablecimientos. Hay varias formas de autenticar cuentas de usuario.

Por ejemplo, podría usar un complemento de pasaporte con Node.js, que es útil para autenticarse con cuentas de Facebook, Twitter y redes sociales.

El ejemplo anterior depende del uso de Stormpath, una API REST que admite autorización y autenticación a través de claves API y ofrece administración de usuarios como servicio.

Artículos recomendados

Aquí hay algunos artículos que lo ayudarán a obtener más detalles acerca de las aplicaciones web que utilizan MongoDB, así que simplemente vaya al enlace.

  1. HTML5 vs Flash ¿Emocionado de saber la diferencia?
  2. Java vs Node JS: 8 diferencias que debe conocer
  3. Web Testing Application, una guía útil y completa
  4. Cómo usar plantillas web HTML | Aplicación | Móvil | Mejor
  5. Desarrollo de Software vs Desarrollo Web
  6. Cómo preparar herramientas de análisis web para trabajar para usted (Guía)
  7. MongoDB vs PostgreSQL: ¿Cuáles son las diferencias?
  8. Guía útil sobre MongoDB vs Hadoop
  9. La mejor guía sobre MongoDB vs Cassandra