63
“Año del Centenario de Machu Picchu para el Mundo” Carrera profesional de Computación e Informática TRABAJO TEÓRICO PRÁCTICO Presentado por: Aguirre Paucar, Miguel Oscar Bolaños Victoria, Iván Arturo De La Cruz Vilcahuaman, Teresa Yaneth Para Optar el título profesional de: TÉCNICO EN COMPUTACIÓN E INFORMÁTICA Huancayo – Perú 2011 Proyecto de Implementación de Servidores Web con Uso de Tecnologías Tornado y MongoDB

Proyecto Mongo Db

Embed Size (px)

Citation preview

Page 1: Proyecto Mongo Db

“Año del Centenario de Machu Picchu para el Mundo”

Carrera profesional de Computación e Informática

TRABAJO TEÓRICO PRÁCTICO

Presentado por:

Aguirre Paucar, Miguel Oscar

Bolaños Victoria, Iván Arturo

De La Cruz Vilcahuaman, Teresa Yaneth

Para Optar el título profesional de:

TÉCNICO EN COMPUTACIÓN E INFORMÁTICA

Huancayo – Perú

2011

Proyecto de Implementación de Servidores Web con Uso de Tecnologías Tornado y

MongoDB

Page 2: Proyecto Mongo Db

ASESOR:

Ing. Jesús Alberto Zea Salas

Page 3: Proyecto Mongo Db

A: Nuestros padres con amor y cariño por

su apoyo incondicional que cada día nos

brindan.

Page 4: Proyecto Mongo Db

ÍNDICE

Portada i

Asesoría ii

Dedicatoria iii

Índice iv

Introducción vii

Capítulo I

MARCO METODOLÓGICO

1.1. El problema de investigación 6

1.1.1. El problema 6

1.1.2. Los Objetivos 7

1.1.3. La Justificación 8

1.2. Metodología 10

1.2.1. Marco Metodológico 10

1.2.2. Técnicas 11

1.2.3. Instrumentos 11

Page 5: Proyecto Mongo Db

Capítulo II

MARCO TEÓRICO

2.1. Antecedentes de Proyecto 12

2.2. Descripción del tema del Proyecto 12

2.3. Terminología Básica 13

Capítulo III

DESARROLLO DEL PROYECTO

3.1. Descripción operativa del proyecto 22

3.1.1. Estructura y funcionamiento de un servidor Web 22

3.1.2. Estructura y funcionamiento de un gestor de base de datos 23

3.1.3. Estructura y funcionamiento de un Framework 29

3.1.4. Tecnologías para implementar Servidores Web 33

3.1.4.1 Modelado de la aplicación del ejemplo 34

3.1.4.2 Implementación en LAMP 36

3.1.4.3 Implementación con tecnologías Microsoft 38

3.1.4.4 Implementación con Tornado y MongoDB 41

3.1.4.5 Comparativa entre las soluciones propuestas 43

3.2. Resultados Obtenidos 54

3.2.1. Análisis y evaluación final

54

CONCLUSIONES 57

SUGERENCIAS 59

Page 6: Proyecto Mongo Db

BIBLIOGRAFIA 60

ANEXOS 61

Page 7: Proyecto Mongo Db

INTRODUCCIÓN

El presente trabajo trata de enfocar los nuevos problemas que van surgiendo

debido al alto incremento de usuarios en los sistemas y aplicaciones basadas en

web.

Los portales de mayor relevancia tienen problemas para atender a un número

elevado de usuarios ya que sus servicios no están preparados para esta tarea,

haciendo que se tenga que crecer a nivel de hardware ocasionando altos gastos

hacia la empresa o entidad.

Por lo tanto el objetivo del proyecto es tener los lineamientos para implementar

servicios web que sean capaces de mantenerse en ejecución con un rendimiento

aceptable ante el incremento de la carga de trabajo sin necesidad de tener que

incrementar nuestros costos de hardware usando las tecnologías Tornado y

MongoDB.

Para desarrollar el trabajo se ha realizado una investigación en base a diversas

fuentes bibliográficas analizando los conceptos de servicios web, lenguajes de

programación, framework y bases de datos aplicables. Posteriormente se

consideran las características en funcionamiento de diversas metodologías de

trabajo con diversas tecnologías presentes en el mercado actual. Finalmente se

realiza la implementación del servicio en función al servidor web/framework

Tornado y al gestor de bases de datos MongoDB.

Page 8: Proyecto Mongo Db

6

Capítulo I

MARCO METODOLÓGICO

1.1. El problema de investigación

1.1.1. El problema

Actualmente las Empresas y personas buscan tener un espacio

en Internet donde puedan publicitar sus productos o expresar sus

ideas, muchas veces estas páginas están diseñadas para soportar

un pequeño número de usuarios, y muchas veces no consideran

que en el futuro su número de usuarios podría incrementarse

considerablemente.

Algunas páginas se han desarrollado pensado en un cierto

número de usuario, con el pasar del tiempo han recibido un

incremento considerable de sus usuarios lo que ocasiona que el

servicio no esté en la capacidad de responder a todas las

peticiones al mismo tiempo haciendo que sus sitios web no estén

disponibles temporalmente y en ocasiones que los servidores

sufran un colapso.

Podemos mencionar el caso del sitio web del Diario El Comercio

el cual estuvo fuera de servicio en las elecciones PERU - 2011 a

causa del alto número de personas que consultaban los resultados

electorales.

Debido al auge de Internet en la actualidad los sitios web se

volvieron de gran importancia en el mundo, por ello el interés por

abordar el problema de mantener la disponibilidad al momento en el

Page 9: Proyecto Mongo Db

7

cual la carga de trabajo del servidor se incremente

considerablemente.

Por esto se busca plantear los lineamientos para poder

implementar un servidor web que sea capaz de soportar un

incremento de su carga de trabajo usando la tecnología del servidor

web escalable, no bloqueante Tornado Web y la base de datos

escalable de alto rendimiento MongoDB.

1.1.2. Los Objetivos

Objetivo General

Demostrar que la implementación de un servicio web usando las

tecnologías tornado y MongoDB nos permite manejar un alto

número de usuario concurrentes sin perder redimiendo y velocidad

en nuestra aplicación.

Objetivos Específicos

● Comprender como trabaja un servicio web.

● Estudiar y conocer cuáles son las ventajas y desventajas de

trabajar con una base de datos MongoDB en comparación a

MS SQL Server y MySQL.

● Estudiar y conocer cuáles son las ventajas y desventajas de

trabajar con un Framework web.

● Llevar a cabo una breve comparativa del rendimiento de los

conjuntos de soluciones LAMP (Linux, Apache, MySQL y PHP),

IIS (Internet Información Server) con .Net y Tornado con

MongoDB.

● Modelar un Sitio Web y sus interfaces, en base a las tecnologías

Tornado y MongoDB.

Page 10: Proyecto Mongo Db

8

● Implementar un sitio web MongoDB con Tornado.

1.1.3. La Justificación

Las empresas crecen más cada día y su presencia en internet

resulta de gran importancia para incrementar su presencia en el

mercado cada vez mas fragmentado, ya que en la actualidad la

mayoría de las personas cuentan con una conexión a internet en

sus casas.

Al crecer el número de usuarios de un servicio web determinado

se hace más difícil manejar la gran cantidad de tráfico en sus

servicios y la cantidad de datos que deben almacenar en sus

bases de datos, lo que termina ocasionando costos en cuestión de

incremento de características de los servidores para poder atender

este incremento.

Por lo tanto se plantea el uso de tecnologías actuales que están

preparadas para los problemas de la última década y que están en

constante avance, como son el caso de Tornado un servidor web y

framework desarrollado en el lenguaje de programación Python en

cual nos ofrece ser capaz de atender a más de diez mil usuarios

concurrentes con una estructura escalable y dinámica, además de

traer consigo un framework de desarrollo web para el mismo

lenguaje lo cual lo hace una de las herramientas más importante al

momento de buscar servicios web escalables capaces de atender

un gran incremento de usuario sin agregar recursos adicionales y

capaz de mantenerse en el tiempo.

Además se plantea el uso del gestor de base de datos no-SQL

(que no usa sentencias tipo SQL para la inserción, actualización y

selección de datos) como es MongoDB el cual es un gestor de base

de datos ágil, escalable, de alto rendimiento y orientado a objetos

que al ser open source cuenta con una gran comunidad de

desarrollo. Este Gestor de base de datos nos brinda la ventaja de

Page 11: Proyecto Mongo Db

9

atender un mayor número de consultas concurrentes y de manejar

una mayor cantidad de datos, es también capaz de mantener su

rendimiento en el caso de un alto incremento de sus usuarios y

datos por lo cual se hace ideal al momento de elegirlo pensando en

el futuro de los servicios web.

Por lo tanto el uso de estas dos tecnologías, generan beneficios

expresados en la optimización de los procesos y la mejora del

rendimiento de los servicios web además de la capacidad de

atender un gran incremento de usuarios y datos sin perder

rendimiento, a fin de mejorar la calidad beneficiando tanto a los

usuarios como a los empresarios que apuesten por estas

tecnologías.

Desde el punto de vista práctico, se plantearan los lineamientos

y características que hay que tener en cuenta para implementar una

solución con estas tecnologías y se realizara una comparación con

otros modelos más conocidos en el mercado.

Desde el punto de vista teórico, esta investigación generará

reflexión y discusión tanto sobre el conocimiento existente del área

investigada, como dentro del ámbito de la tecnología web, ya que

de alguna manera u otra, se confrontan teorías (en nuestro caso se

analizara desde las mejoras que traen consigo las nuevas

tecnologías y se buscara que la opción de tornado y mongodb se

plantee como una opción a tomar en cuenta en el momento de

planear un proyecto web ), lo cual necesariamente conlleva hacer

epistemología del conocimiento existente.

Desde el punto de vista metodológico, esta investigación está

generando la aplicación de un nuevo método para obtener

conocimiento válido y confiable dentro del área de la Tecnologías

de la información de las organizaciones.

Page 12: Proyecto Mongo Db

10

Por otra parte, en cuanto a su alcance, esta investigación abrirá

nuevos caminos para empresas que presenten situaciones

similares a la que se plantea, sirviendo como marco referencial a

estas.

Por último, profesionalmente pondrá en manifiesto los

conocimientos adquiridos durante la carrera y permitirá sentar las

bases para otros estudios que surjan partiendo de la problemática

especificada.

1.2. Metodología

1.2.1. Marco Metodológico

Métodos, técnicas e instrumentos utilizados

Los métodos que se emplearon para la ejecución de las prácticas

fueron:

Método Descriptivo:

Se utilizó cuando el emisor se propone a transmitir al receptor las

imágenes y sirven tanto para el modo narrativo como el modo

expositivo por su naturaleza descriptiva.

Método dialéctico:

Busca una explicación de las contradicciones y conflictos en la

sociedad, formulando de esta manera una relación dialéctica

respecto al objeto.

Método Lógico Deductivo:

Mediante el cual se aplican los principios descubiertos a casos

particulares, a partir de una enlace de juicios.

Método Comparativo:

Porque nos permitió establecer diferencias entre las diversas

tecnologías usadas para montar sitios web.

Page 13: Proyecto Mongo Db

11

Método Inductivo:

Es el razonamiento que, partiendo de casos particulares se eleva a

conocimientos generales, Este método permite la formación de

hipótesis, investigación de leyes científicas, y las demostraciones.

Método sintético:

Consiste en la reunión racional de varios elementos dispersos en

una nueva totalidad, este se presenta más en el planteamiento de

la hipótesis.

1.2.2. Técnicas

Las técnicas que se emplearon para la ejecución de las prácticas

fueron:

Técnicas de evaluación: (estrategia que utilizamos y lo que

estamos proponiendo)

Son las que sirven para evaluar y tomar decisiones sobre el

desarrollo de un proceso grupal.

Se pueden usar también para modificar estrategias.

Técnica de entrevistas:

Es la técnica más usual y da muchos resultados exitosos.

1.2.3. Instrumentos

Los instrumentos que se emplearon fueron:

Guía de observación:

Las observaciones se efectúan para comprobar o refutar alguna

teoría, y sólo se registran las observaciones cuando se consideran

relevantes para alcanzar tal fin.

Lluvia de Ideas:

Desarrollar y ejercitar la imaginación creadora; crear un clima

informal, libre de tensiones; desarrollar actitudes espontáneas;

Actuar con autonomía, originalidad. Se deja que las personas

actúen en un clima totalmente informal, con absoluta libertad para

expresarse y pensar, con el fin de obtener ideas originales y

soluciones nuevas.

Page 14: Proyecto Mongo Db

12

Capítulo II

MARCO TEÓRICO

2.1. Antecedentes de Proyecto

Actualmente en el Perú se utiliza estructuras de servidores web con

LAMP o ASP.NET, SQL Server con IIS y cuando tiene alta concurrencia

(caso el Comercio en eventos importantes como las elecciones) tienden a

bloquearse, sin embargo hay soluciones que obtienen una mejor

performance como es el caso de Tornado con MongoDB, por ello

implementamos esta herramienta para que así las páginas web que tengan

alto número de usuario puedan guiarse de este trabajo para obtener

menores tiempos de respuesta.

2.2. Descripción del tema del Proyecto

Este proyecto pretende mostrar las diferentes tecnologías que se usan

para la implementación de sitios web y hacer énfasis en tecnologías

actuales que sean capaces de manejar un gran flujo de trabajo y que sean

capaces de responder ante un gran número de usuarios concurrentes.

Para el desarrollo del proyecto nos enfocaríamos en tecnologías Open

Source de última generación que son Tornado Web, un framework y

servidor web escalable no bloqueante y MongoDB un gestor de base de

datos no SQL no relacional

Page 15: Proyecto Mongo Db

13

2.3. Terminología Básica

Internet.- es un conjunto descentralizado de redes de comunicación

interconectadas que utilizan la familia de protocolos TCP/IP, garantizando

que las redes físicas heterogéneas que la componen funcionen como una

red lógica única, de alcance mundial. Uno de los servicios que más éxito

ha tenido en Internet ha sido la World Wide Web (WWW, o "la Web"), hasta

tal punto que es habitual la confusión entre ambos términos.

La World Wide Web.- Es un sistema de distribución de información

basado en hipertexto o hipermedios enlazados y accesibles a través de

Internet. Con un navegador web, un usuario visualiza sitios web

compuestos de páginas web que pueden contener texto, imágenes, videos

u otros contenidos multimedia, y navega a través de ellas usando

hiperenlaces.

Navegador o navegador web.- ( web browser) Es una aplicación que

opera a través de Internet, interpretando la información de archivos y sitios

web para que podamos leerla, (ya se encuentre ésta alojada en un servidor

dentro de la World Wide Web o en un servidor local). El navegador

interpreta el código, HTML generalmente, en el que está escrita la página

web y lo presenta en pantalla permitiendo al usuario interactuar con su

contenido y navegar hacia otros lugares de la red mediante enlaces o

hipervínculos.

Servidores Web.- Un servidor web es un programa que se ejecuta

continuamente en un computador, manteniéndose a la espera de

peticiones de ejecución que le hará un cliente o un usuario de Internet. El

servidor web se encarga de contestar a estas peticiones de forma

adecuada, entregando como resultado una página web o información de

todo tipo de acuerdo a los comandos solicitados.

Page 16: Proyecto Mongo Db

14

Aplicaciones Web.- En la ingeniería de software se denomina aplicación

web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a

un servidor web a través de Internet o de una intranet mediante un

navegador. En otras palabras, es una aplicación software que se codifica

en un lenguaje soportado por los navegadores web en la que se confía la

ejecución al navegador.

Cliente-servidor.- La arquitectura cliente-servidor es un modelo de

aplicación distribuida en el que las tareas se reparten entre los

proveedores de recursos o servicios, llamados servidores, y los

demandantes, llamados clientes. Un cliente realiza peticiones a otro

programa, el servidor, que le da respuesta. Esta idea también se puede

aplicar a programas que se ejecutan sobre una sola computadora, aunque

es más ventajosa en un sistema operativo multiusuario distribuido a través

de una red de computadoras.

Modelo TCP/IP.- Es un modelo de descripción de protocolos de red creado

en la década de 1970 por DARPA, una agencia del Departamento de

Defensa de los Estados Unidos. El modelo TCP/IP, describe un conjunto

de guías generales de diseño e implementación de protocolos de red

específicos para permitir que una computadora pueda comunicarse en una

red. TCP/IP provee conectividad de extremo a extremo especificando

como los datos deberían ser formateados, direccionados, transmitidos,

enrutados y recibidos por el destinatario. Existen protocolos para los

diferentes tipos de servicios de comunicación entre computadoras.

HTML.- HTML, siglas de HyperText Marckup Language (Lenguaje de

Marcado de Hipertexto), es el lenguaje de marcado predominante para la

elaboración de páginas web. Es usado para describir la estructura y el

contenido en forma de texto, así como para complementar el texto con

objetos tales como imágenes. HTML se escribe en forma de «etiquetas»,

rodeadas por corchetes angulares (<,>). HTML también puede describir,

hasta un cierto punto, la apariencia de un documento, y puede incluir un

Page 17: Proyecto Mongo Db

15

script (por ejemplo JavaScript), el cual puede afectar el comportamiento de

navegadores web y otros procesadores de HTML.

HTTP.- Hypertext Transfer Protocol o HTTP (en español protocolo de

transferencia de hipertexto) es el protocolo usado en cada transacción de

la World Wide Web. Es un protocolo orientado a transacciones y sigue el

esquema petición-respuesta entre un cliente y un servidor. Al cliente que

efectúa la petición (un navegador web o un spider) se lo conoce como

"user agent" (agente del usuario). A la información transmitida se la llama

recurso y se la identifica mediante un localizador uniforme de recursos

(URL).

Base de datos SQL.- El lenguaje de consulta estructurado o SQL, es

un lenguaje declarativo de acceso a bases de datos relacionales que

permite especificar diversos tipos de operaciones en éstas. Una de sus

características es el manejo del álgebra y el cálculo relacional permitiendo

efectuar consultas con el fin de recuperar -de una forma sencilla-

información de interés de una base de datos, así como también hacer

cambios sobre ella.

Base de datos no SQL.- No SQL es un término usado en informática para

agrupar una serie de almacenes de datos no relacionales que no

proporcionan garantías ACID. Normalmente no tienen esquemas fijos de

tablas ni sentencias "join".

El término ACID hace referencia a un conjunto de características

necesarias para que una serie de instrucciones puedan ser consideradas

como una transacción.

Estos sistemas responden a las necesidades de escalabilidad horizontal

que tienen cada vez más empresas.

Microsoft SQL Server.- Es un sistema para la gestión de bases de datos

producido por Microsoft basado en el modelo relacional. Sus lenguajes

para consultas son T-SQL y ANSI SQL. Microsoft SQL Server constituye

Page 18: Proyecto Mongo Db

16

la alternativa de Microsoft a otros potentes sistemas gestores de bases de

datos como son Oracle o Postgre SQL o MySQL.

MySQL.- Es un sistema de gestión de bases de datos relacional, multi-hilo

y multiusuario con más de seis millones de instalaciones. MySQL AB —

desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez

de Oracle Corporation desde abril de 2009— desarrolla MySQL como

software libre en un esquema de licenciamiento dual.

MongoDB.- Es un sistema de base de datos multiplataforma orientado a

documentos, de esquema libre. Las características que más destacaría

de MongoDB son su velocidad y su rico pero sencillo sistema de

consulta de los contenidos de la base de datos. Se podría decir que

alcanza un balance perfecto entre rendimiento y funcionalidad,

incorporando muchos de los tipos de consulta que utilizaríamos en nuestro

sistema relacional preferido, pero sin sacrificar en rendimiento.

LAMP.- El acrónimo 'LAMP' se refiere a un conjunto de subsistemas de

software necesarios para alcanzar una solución global, en este caso

configurar sitios web o servidores dinámicos con un esfuerzo reducido.

En las tecnologías LAMP esto se consigue mediante la unión de las

siguientes tecnologías:

● Linux, el sistema operativo; En algunos casos también se refiere a

LDAP.

● Apache, el servidor web;

● MySQL, el gestor de bases de datos;

● Perl, PHP, o Python, los lenguajes de programación.

Frameworks de desarrollo.- En el desarrollo de software, un framework

es una estructura conceptual y tecnológica de soporte definida,

normalmente con artefactos o módulos de software concretos, con base en

la cual otro proyecto de software puede ser organizado y desarrollado.

Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje

Page 19: Proyecto Mongo Db

17

interpretado entre otros programas para ayudar a desarrollar y unir los

diferentes componentes de un proyecto.

IIS.- Internet Information Services o IIS es un servidor web y un conjunto

de servicios para el sistema operativo Microsoft Windows. Originalmente

era parte del Option Pack para Windows NT. Luego fue integrado en otros

sistemas operativos de Microsoft destinados a ofrecer servicios, como

Windows 2000 o Windows Server 2003. Windows XP Profesional incluye

una versión limitada de IIS. Los servicios que ofrece son: FTP, SMTP,

NNTP y HTTP/HTTPS.

Este servicio convierte a una PC en un servidor web para Internet o una

intranet, es decir que en las computadoras que tienen este servicio

instalado se pueden publicar páginas web tanto local como remotamente.

ASP.Net y IIS.- Las aplicaciones ASP.NET se suelen ejecutar con IIS

(Servicios de Internet Information Server) como servidor Web.

Tornado.- Es un servidor web escalable no-bloqueante. A la vez es un

framework similar a Google WebApps pero con herramientas adicionales

que sacan ventaja de la infraestructura no-bloqueante.

Microsoft .NET.- Es un framework de Microsoft que hace un énfasis en la

transparencia de redes, con independencia de plataforma de hardware y

que permita un rápido desarrollo de aplicaciones. Basado en ella, la

empresa intenta desarrollar una estrategia horizontal que integre todos sus

productos, desde el sistema operativo hasta las herramientas de mercado.

Visual Basic.- Es un lenguaje de programación dirigido por eventos,

desarrollado por el alemán Alan Cooper para Microsoft. Este lenguaje de

programación es un dialecto de BASIC, con importantes agregados. Su

primera versión fue presentada en 1991, con la intención de simplificar la

programación utilizando un ambiente de desarrollo completamente gráfico

que facilitara la creación de interfaces gráficas y, en cierta medida, también

la programación misma.

Page 20: Proyecto Mongo Db

18

C Sharp.- C# (pronunciado si sharp en inglés) es un lenguaje de

programación orientado a objetos desarrollado y estandarizado por

Microsoft como parte de su plataforma .NET, que después fue aprobado

como un estándar por la ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es

uno de los lenguajes de programación diseñados para la infraestructura de

lenguaje común.

Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la

plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de

otros lenguajes.

Python.- Es un lenguaje de programación de alto nivel cuya filosofía hace

hincapié en una sintaxis muy limpia y que favorezca un código legible.

Se trata de un lenguaje de programación multiparadigma ya que soporta

orientación a objetos, programación imperativa y, en menor medida,

programación funcional. Es un lenguaje interpretado, usa tipado dinámico,

es fuertemente tipado y multiplataforma.

JSON.- JSON, acrónimo de JavaScript Object Notation, es un formato

ligero para el intercambio de datos. JSON es un subconjunto de la notación

literal de objetos de JavaScript que no requiere el uso de XML.

La simplicidad de JSON ha dado lugar a la generalización de su uso,

especialmente como alternativa a XML en AJAX. Una de las supuestas

ventajas de JSON sobre XML como formato de intercambio de datos en

este contexto es que es mucho más sencillo escribir un analizador

semántico de JSON.

JavaScript.- JavaScript es un lenguaje de programación utilizado para

crear pequeños programitas encargados de realizar acciones dentro del

ámbito de una página web. Con JavaScript podemos crear efectos

especiales en las páginas y definir interactividades con el usuario. El

navegador del cliente es el encargado de interpretar las instrucciones

JavaScript y ejecutarlas para realizar estos efectos e interactividades, de

modo que el mayor recurso, y tal vez el único, con que cuenta este

lenguaje es el propio navegador.

Page 21: Proyecto Mongo Db

19

CSS.- CSS son las siglas de Cascading Style Sheets - Hojas de Estilo en

Cascada - que es un lenguaje que describe la presentación de los

documentos estructurados en hojas de estilo para diferentes métodos de

interpretación, es decir, describe cómo se va a mostrar un documento en

pantalla, por impresora, por voz (cuando la información es pronunciada a

través de un dispositivo de lectura) o en dispositivos táctiles basados en

Braille.

PHP.- PHP Hypertext Pre-processor (PHP) es una de las tecnologías Web

más extendida en la actualidad, muy sencillo de aprender, realizado

inicialmente para trabajar sobre Linux con servidor Apache, pero hoy en

día puede alojarse en cualquier servidor. El código fuente está abierto, por

los que los problemas que se presentan son rápidamente controlados, y

solucionados; excelente biblioteca de funciones que permite realizar

cualquier. Su sintaxis es muy similar a la C y Perl. Se comunica con bases

de datos sin necesidad de usar ODBC, una de las características más

relevante que tiene.

ASP.- Active Server Pages (ASP) es la tecnología pionera en las

aplicaciones Web que se ejecutan en el servidor, Desarrollado por

Microsoft y optimizado para su ejecución en servidores Windows con

tecnología NT bajo IIS. Al ser una tecnología propietaria, no tiene la gran

cantidad de módulos que PHP, aunque mediante los objetos COM, trabaja

fácilmente con archivos dll. Es un tanto desorganizado, utiliza lenguajes

de scripting no tipados como VBScript o JScript. No hay una distinción

formal entre el contenido de una página y su comportamiento, se pone

contenido y esperamos a ver qué ocurre.

ASP.NET.- Es un conjunto de tecnologías de desarrollo de aplicaciones

web comercializado por Microsoft. Rompe totalmente con el pensamiento

script que se tenía hasta el momento; el cambio en la arquitectura es

radical. Dado que la Web no se lee secuencial, sino que se compila, lo

primero que llama la atención es el enorme incremento de velocidad de

respuesta del servidor; además el incremento en seguridad y fortaleza es

Page 22: Proyecto Mongo Db

20

muy grande. ASP.NET introduce el concepto del code-behind, por el que

una misma página se compone de dos ficheros: el de la interfaz de usuario

y el de código.

Ajax.- viene de: Asynchronous JavaScript and XML, y describe una

técnica desarrollada para crear aplicaciones web interactivas. La finalidad

es lograr una sensación de interactividad total al realizar intercambios de

información con el servidor sin la necesidad de recargar toda la página

web. Ésta técnica usa una combinación de varios elementos, como lo son:

● XHTML o HTML y CSS para desplegar y estilizar la información.

● El DOM accesado por medio de lenguajes de script del lado del cliente,

como son JavaScript y JScript.

● El objeto XMLHttpRequest para intercambiar los datos con el servidor

web.

● XML que es comúnmente el formato usado para realizar los

intercambios de información, aunque cualquier formato puede ser

usado.

Finalmente el propósito es brindarle al usuario una manera más sencilla de

realizar la navegación, pues con AJAX puedes realizar cambios sin la

necesidad de cargar toda la página web nuevamente.

Servidor HTTP Apache.- Es un servidor web HTTP de código abierto para

plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y

otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual.

Apache presenta entre otras características altamente configurables, bases

de datos de autenticación y negociado de contenido, pero fue criticado por

la falta de una interfaz gráfica que ayude en su configuración.

Sistema de gestión de base de datos.- son un tipo de software muy

específico, dedicado a servir de interfaz entre la base de datos, el usuario y

las aplicaciones que la utilizan. El propósito general de los sistemas de

gestión de bases de datos es el de manejar de manera clara, sencilla y

Page 23: Proyecto Mongo Db

21

ordenada un conjunto de datos que posteriormente se convertirán en

información relevante para una organización.

Tecnologías.- es el conjunto de conocimientos técnicos, ordenados

científicamente, que permiten diseñar y crear bienes y servicios que

facilitan la adaptación al medio ambiente y satisfacer tanto las necesidades

esenciales como los deseos de las personas.

OpenSource.- Código abierto es el término con el que se conoce al

software distribuido y desarrollado libremente. El código abierto tiene un

punto de vista más orientado a los beneficios prácticos de compartir el

código que a las cuestiones morales y/o filosóficas las cuales destacan en

el llamado software libre.

Implementación.- Es la realización de una especificación técnica o

algoritmos como un programa, componente software, u otro sistema de

cómputo. Muchas implementaciones son dadas según a una especificación

o un estándar. Por ejemplo, un navegador web respeta (o debe respetar)

en su implementación, las especificaciones recomendadas según el World

Wide Web Consortium, y las herramientas de desarrollo del software

contienen implementaciones de lenguajes de programación.

Concurrencia de usuarios.- Se llama concurrencia cuando varios

usuarios intentan acceder a determinada aplicación al mismo tiempo

Page 24: Proyecto Mongo Db

22

Capítulo III

DESARROLLO DEL PROYECTO

3.1. Descripción operativa del proyecto

3.1.1. Estructura y funcionamiento de Un servidor Web

Un servidor web o servidor HTTP es un programa que procesa

cualquier aplicación del lado del servidor realizando conexiones

bidireccionales y/o unidireccionales y síncronas o asíncronas con el

cliente generando o cediendo una respuesta en cualquier lenguaje

o Aplicación del lado del cliente. El código recibido por el cliente

suele ser compilado y ejecutado por un navegador web. Para la

transmisión de todos estos datos suele utilizarse algún protocolo.

Generalmente se utiliza el protocolo HTTP para estas

comunicaciones, perteneciente a la capa de aplicación del modelo

OSI. El término también se emplea para referirse al ordenador que

ejecuta el programa.

GRÁFICO Nº 01

ESTRUCTURA Y FUNCIONAMIENTO DE UN SERVIDOR WEB

Page 25: Proyecto Mongo Db

23

Funcionamiento

El Servidor web se ejecuta en un ordenador manteniéndose a la

espera de peticiones por parte de un cliente (un navegador web) y

que responde a estas peticiones adecuadamente, mediante una

página web que se exhibirá en el navegador o mostrando el

respectivo mensaje si se detectó algún error. A modo de ejemplo, al

teclear www.wikipedia.org en nuestro navegador, éste realiza una

petición HTTP al servidor de dicha dirección. El servidor responde

al cliente enviando el código HTML de la página; el cliente, una vez

recibido el código, lo interpreta y lo exhibe en pantalla. Como

vemos con este ejemplo, el cliente es el encargado de interpretar el

código HTML, es decir, de mostrar las fuentes, los colores y la

disposición de los textos y objetos de la página; el servidor tan sólo

se limita a transferir el código de la página sin llevar a cabo ninguna

interpretación de la misma.

GRÁFICO Nº 02

3.1.2. Estructura y funcionamiento de un Gestor de base de datos

Una base de datos o banco de datos (en ocasiones abreviada con

la sigla BD o con la abreviatura b. d.) es un conjunto de datos

Page 26: Proyecto Mongo Db

24

pertenecientes a un mismo contexto y almacenados

sistemáticamente para su posterior uso. En este sentido, una

biblioteca puede considerarse una base de datos compuesta en su

mayoría por documentos y textos impresos en papel e indexados

para su consulta. En la actualidad, y debido al desarrollo

tecnológico de campos como la informática y la electrónica, la

mayoría de las bases de datos están en formato digital

(electrónico), que ofrece un amplio rango de soluciones al problema

de almacenar datos.

Existen programas denominados sistemas gestores de bases de

datos, abreviados SGBD, que permiten almacenar y posteriormente

acceder a los datos de forma rápida y estructurada. Las

propiedades de estos SGBD, así como su utilización y

administración, se estudian dentro del ámbito de la informática.

Las aplicaciones más usuales son para la gestión de empresas e

instituciones públicas. También son ampliamente utilizadas en

entornos científicos con el objeto de almacenar la información

experimental.

SQL (de primera generación)

Base de Datos Relacional

Una base de datos relacional es un conjunto de una o más

tablas estructuradas en registros (líneas) y campos (columnas),

que se vinculan entre sí por un campo en común, en ambos

casos posee las mismas características como por ejemplo el

nombre de campo, tipo y longitud; a este campo generalmente

se le denomina ID, identificador o clave. A esta manera de

construir bases de datos se le denomina modelo relacional.

Estrictamente hablando el término se refiere a una colección

específica de datos pero a menudo se le usa, en forma errónea

como sinónimo del software usado para gestionar esa colección

de datos. Ese software se conoce como SGBD (sistema gestor

de base de datos) relacional o RDBMS (del inglés relational

database management system).

Page 27: Proyecto Mongo Db

25

Las bases de datos relacionales pasan por un proceso al que se

le conoce como normalización de una base de datos, el cual es

entendido como el proceso necesario para que una base de

datos sea utilizada de manera óptima.

Entre las ventajas de este modelo están:

Garantiza herramientas para evitar la duplicidad de registros, a

través de campos claves o llaves.

Garantiza la integridad referencial: Así al eliminar un registro

elimina todos los registros relacionados dependientes.

Favorece la normalización por ser más comprensible y aplicable.

SQL

El lenguaje de consulta estructurado o SQL (por sus siglas en

inglés structured query language) es un lenguaje declarativo de

acceso a bases de datos relacionales que permite especificar

diversos tipos de operaciones en éstas. Una de sus

características es el manejo del álgebra y el cálculo relacional

permitiendo efectuar consultas con el fin de recuperar -de una

forma sencilla- información de interés de una base de datos, así

como también hacer cambios sobre ella.

Características generales del SQL

El SQL es un lenguaje de acceso a bases de datos que explota

la flexibilidad y potencia de los sistemas relacionales permitiendo

gran variedad de operaciones en éstos últimos.

Es un lenguaje declarativo de "alto nivel" o "de no

procedimiento", que gracias a su fuerte base teórica y su

orientación al manejo de conjuntos de registros, y no a registros

individuales, permite una alta productividad en codificación y la

orientación a objetos. De esta forma una sola sentencia puede

equivaler a uno o más programas que se utilizarían en un

lenguaje de bajo nivel orientado a registros.

Page 28: Proyecto Mongo Db

26

Lenguaje de definición de datos (DDL)

El lenguaje de definición de datos (en inglés Data Definition

Language, o DDL), es el que se encarga de la modificación de la

estructura de los objetos de la base de datos. Existen cuatro

operaciones básicas: CREATE, ALTER, DROP y TRUNCATE.

Lenguaje de manipulación de datos DML (Data Manipulation

Language)

Un lenguaje de manipulación de datos (Data Manipulation

Language, o DML en inglés) es un lenguaje proporcionado por el

sistema de gestión de base de datos que permite a los usuarios

llevar a cabo las tareas de consulta o manipulación de los datos,

organizados por el modelo de datos adecuado.

El lenguaje de manipulación de datos más popular hoy día es

SQL, usado para recuperar y manipular datos en una base de

datos relacional.

INSERT

Una sentencia INSERT de SQL agrega uno o más registros a

una (y sólo una) tabla en una base de datos relacional.

Forma básica

INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES

(''valor1'', [''valor2,...''])

Ejemplo

INSERT INTO agenda_telefonica (nombre, numero) VALUES

('Roberto Jeldrez', 4886850);

UPDATE

Una sentencia UPDATE de SQL es utilizada para modificar los

valores de un conjunto de registros existentes en una tabla.

Forma básica

SQL="UPDATE ''tabla'' SET “columna1”=”valor1” WHERE

''columna1'' = ''valor1''"

Ejemplo

Page 29: Proyecto Mongo Db

27

UPDATE My_table SET field1 = 'updated value asd' WHERE

field2 = 'N';

DELETE

Una sentencia DELETE de SQL borra uno o más registros

existentes en una tabla.

Forma básica

SQL="DELETE FROM ''tabla'' WHERE ''columna1'' = ''valor1''"

Ejemplo

DELETE FROM My_table WHERE field2 = 'N';

Sistemas de gestión de base de datos

Los sistemas de gestión de base de datos con soporte SQL más

utilizados son, por orden alfabético:

a) DB2

b) Firebird

c) Informix

d) Interbase

e) Microsoft SQL Server

f) MySQL

g) Oracle

h) PostgreSQL

i) PervasiveSQL

j) SQLite

k) SQL Server

l) Sybase ASE

No SQL (de segunda generación)

No SQL es un término usado en informática para agrupar una

serie de almacenes de datos no relacionales que no

proporcionan garantías ACID. Normalmente no tienen esquemas

fijos de tablas ni sentencias "join"

Ventajas

Estos sistemas responden a las necesidades de escalabilidad

horizontal que tienen cada vez más empresas

Page 30: Proyecto Mongo Db

28

Arquitectura

Típico de bases de datos relacionales modernos han mostrado

un pobre desempeño en ciertas aplicaciones intensivas de datos,

incluyendo la indexación de un gran número de documentos,

servicio de páginas en los sitios web de alto tráfico, y la entrega

de medios de streaming. Las implementaciones típicas RDBMS

se afinan ya sea para leer pequeñas pero frecuentes / escritura

de las transacciones y para las operaciones en bloque de gran

tamaño con los accesos de escritura rara. No SQL, por el

contrario, puede dar servicio pesado de lectura / escritura cargas

de trabajo. Despliegues del mundo real No SQL incluyen 3 Digg

TB para las insignias verdes y Facebook es 50 TB bandeja de

entrada para la búsqueda.

Arquitecturas No SQL suelen ofrecer garantías de consistencia

débil, tales como la consistencia eventual, o las operaciones

restringidas de elementos de datos individuales. Algunos

sistemas, sin embargo, ofrecer plenas garantías de ACID, en

algunos casos mediante la adición de una capa de middleware

adicionales (por ejemplo, AppScale y CloudTPS).

Varios sistemas de No SQL emplean una arquitectura

distribuida, con los datos en poder de una manera redundante en

varios servidores, a menudo usando una tabla hash distribuidas.

De esta manera, el sistema puede escalar fácilmente mediante

la adición de más servidores, y el fracaso de un servidor puede

ser tolerado.

Algunos defensores de No SQL. Promueven interfaces muy

simples, tales como arrays asociativos o pares de clave y valor.

Otros sistemas, tales como bases de datos XML nativa,

promover el apoyo del estándar XQuery. Los sistemas más

modernos, como también el apoyo CloudTPS consultas de

unión.

Para crear una tabla es implícita por que podrías ingresar de la

forma siguiente para crear una colección, que es equivalente a

una tabla.

Page 31: Proyecto Mongo Db

29

Insertar datos a una colección

db.users.insert({a:3,b:5})

Seleccionar datos de una colección

db.users.insert({a:3,b:5})

Seleccionar solo una coincidencia

db.users.findOne()

Seleccionar datos distintos

db.users.distinct('last_name')

Contar las coincidencias

db.users.find({age: {'gt': 30}}).count ()

Actualizar datos

db.users.update({b:'q'},{$set:{a:1}},false,true)

Eliminar datos

db.users.remove ({z:'abc'});

Sistemas:

Cassandra, de Apache The Apache Cassandra

BigTable, de Google

Dynamo, de Amazon

CouchDB, de Apache Apache CouchDB

MongoDB, de 10gen MongoDB

3.1.3. Estructura y funcionamiento de un Framework

Un framework es una estructura conceptual y tecnológica de

soporte definida, normalmente con artefactos o módulos de

software concretos, con base en la cual otro proyecto de software

puede ser organizado y desarrollado. Típicamente, puede incluir

soporte de programas, bibliotecas y un lenguaje interpretado entre

Page 32: Proyecto Mongo Db

30

otros programas para ayudar a desarrollar y unir los diferentes

componentes de un proyecto.

Son diseñados con la intención de facilitar el desarrollo de software,

permitiendo a los diseñadores y programadores pasar más tiempo

identificando requerimientos de software que tratando con los

tediosos detalles de bajo nivel de proveer un sistema funcional. Por

ejemplo, un equipo que usa Apache Struts para desarrollar un sitio

web de un banco, puede enfocarse en cómo los retiros de ahorros

van a funcionar en lugar de preocuparse de cómo se controla la

navegación entre las páginas en una forma libre de errores. Sin

embargo, hay quejas comunes acerca de que el uso de frameworks

añade código innecesario y que la preponderancia de frameworks

competitivos y complementarios significa que el tiempo que se

pasaba programando y diseñando ahora se gasta en aprender a

usar frameworks.

Fuera de las aplicaciones en la informática, puede ser considerado

como el conjunto de procesos y tecnologías usados para resolver

un problema complejo. Es el esqueleto sobre el cual varios objetos

son integrados para una solución dada.

Después de todo, un framework no debe ser consciente de todos

estos requerimientos sin tener que ser intrusivo con las aplicaciones

que permite dentro de sí mismo. A esto le sumamos la capacidad

de extenderse sin prejuicios para diversificar la expresión del

programa mismo así.

Arquitectura

Dentro de este aspecto, podemos basarnos en el modelo MVC

(Controlador => Modelo => Vista) ya que debemos fragmentar

nuestra programación. Tenemos que contemplar estos aspectos

básicos en cuanto a la implementación de nuestro sistema:

Page 33: Proyecto Mongo Db

31

GRÁFICO Nº 03

Controlador:

Con este apartado podemos controlar el acceso (incluso todo) a

nuestra aplicación, esto pueden ser: archivos, scripts o

programas; cualquier tipo de información que permita la interfaz.

Así, podremos diversificar nuestro contenido de forma dinámica,

y estática (a la vez); pues, sólo debemos controlar ciertos

aspectos (como se ha mencionado antes).

Modelo:

Este miembro del controlador maneja las operaciones lógicas, y

de manejo de información (previamente enviada por su ancestro)

para resultar de una forma explicable, y sin titubeos. Cada

miembro debe ser meticulosamente llamado, en su correcto

nombre y en principio, con su verdadera naturaleza: el manejo

de información, su complementación directa.

Vista:

Al final, a este miembro de la familia le corresponde dibujar, o

expresar la última forma de los datos: la interfaz gráfica que

Page 34: Proyecto Mongo Db

32

interactúa con el usuario final del programa (GUI). Después de

todo, a este miembro le toca evidenciar la información obtenida

hasta hacerla llegar con el controlador. Solo (e inicialmente), nos

espera demostrar la información.

Estructura

Dentro del controlador, modelo o vista podemos manejar lo

siguiente: datos. Depende de nosotros como interpretar y

manejar estos 'datos'. Ahora, sabemos que el único dato de una

dirección estática web es: conseguir un archivo físico en el disco

duro o de internet, etc. he interpretado o no, el servidor

responde.

El modelo, al igual que el controlador y la vista, maneja todos los

datos que se relacionen consigo (solo es el proceso medio de la

separación por capas que ofrece la arquitectura MVC). Y sólo la

vista, puede demostrar dicha información. Con lo cual ya hemos

generado la jerarquía de nuestro programa: Controlador, Modelo

y Vista.

Lógica

Al parecer, debemos inyectar ciertos objetos dentro de sus

parientes en esta aplicación, solo así compartirán herencia y

coherencia en su aplicación.

Rápidamente, para una aplicación web sencilla debemos

establecer estos objetos:

Una base (MVC)

o Controlador: éste debe ser capaz de manejar rutas, archivos,

clases, métodos y funciones.

o Modelo: es como un script habitual en el servidor, solo que

agrupado bajo un 'modelo' reutilizable.

o Vista: como incluyendo cualquier archivo en nuestra

ejecución, muy simple.

Page 35: Proyecto Mongo Db

33

Un sistema

o Ruteador: con él podemos dividir nuestras peticiones sin

tantas condicionales.

o Cargador

3.1.4. Tecnologías para implementar Servidores Web

En la actualidad el ámbito de los servidores web y tecnologías

adyacentes a esta están dominadas por soluciones Open Source,

generalmente por el ya conocido LAMP (Linux, Apache, MySQL y

PHP) con una participación en el mercado del 65.18% para Agosto

del 2011 siendo seguido por las soluciones brindadas por Microsoft

con una participación del 15.86%. Por lo cual se plantea el uso de

estas soluciones así como la implementación y comparación con la

solución propuesta (Tornado y MongoDB).

GRÁFICO Nº 04

Page 36: Proyecto Mongo Db

34

Developer Julio 2011 Porcentaje Agosto 2011 Porcentaje Cambio

Apache 235,326,985 65.86% 301,771,518 65.18% -0.69

Microsoft 60,086,346 16.82% 73,415,916 15.86% -0.96

nginx 23,357,497 6.54% 35,533,439 7.67% 1.14

Google 15,641,574 4.38% 17,061,003 3.68% -0.69

FUENTE: NetCraft ah agosto del 2011

3.1.4.1 Modelado de la aplicación del ejemplo

Para la aplicación de ejemplo se plantea un escenario

minimalista para poder hacer las pruebas respectivas se

cuenta con dos entidades:

Empleado: Persona que trabaja en un determinada

organización y pertenece a un área.

Área: el área de trabajo en el cual se desarrolla el

empleado.

GRÁFICO Nº 05

Page 37: Proyecto Mongo Db

35

Se cuenta con tres vistas (página web):

Principal: Muestra una lista de todos los empleados y

te permite buscar a un empleado especifico, o listar

todos los empleados de determinada área.

GRÁFICO Nº 06

Detalles de Empleado: detalla los datos del empleado.

GRÁFICO Nº 07

Page 38: Proyecto Mongo Db

36

Área: lista todos los empleados de esa área y sus datos respectivos.

GRÁFICO Nº 08

Se realizará la implementación de este modelo

propuesto teniendo en cuento el modelo de datos las

vistas y la funcionalidad para luego compararlos y

recoger altos relevantes para el desarrollo del proyecto.

3.1.4.2 Implementación en LAMP

Para la implementación en LAMP se usó el framework

MVC escrito en PHP llamado Symfony.

Modelo: El esquema de la base de datos se

desarrolló de acuerdo al modelo especificado, en el

cual se plantean las entidades y relaciones.

Además se genera una capa de abstracción en la

cual se aplican filtros de seguridad y clases que

facilitan la obtención, actualización, inserción y

eliminación de datos por parte del controlador.

Page 39: Proyecto Mongo Db

37

Vista: la vista se renderiza tomando en layout

(plantilla principal) sobre la cual se reenderizan las

plantillas de cada acción (páginas web)

GRÁFICO Nº 09

Controlador: se tomas las peticiones desde la vista

para luego llamar al modelo y pedirle los datos

requeridos los cuales será enviados a las plantillas

las cuales renderizaran y se la regresaran al

navegador en formato HTML.

Implementación:

Debian GNU/Linux: GNU/Linux o Linux tiene una

gran cantidad de distribuciones (versiones) para

cubrir múltiples necesidades y con múltiples

características, para el desarrollo de este proyecto se

eligió debian GNU/Linux porque es una distribución

segura y muy organizada, es usada por empresas y

universidades además

Cuenta con un gran número de paquetes

(aplicaciones)

instalación de debian: ver anexo X

Apache: Al ser Open Source está apoyado por una

gran comunidad que se encarga de hacerlo cada vez

más seguro y confiable, lo cual se refleja en su alto

Page 40: Proyecto Mongo Db

38

uso siendo el servidor web predominante en internet

desde hace muchos años instalación en debian 6.0:

# apt-get install apache2

#apt-get install libapache2-mod-php5

MySQL:

instalación en debian 6.0:

apt-get install mysql-server

PHP:

instalación en debian 6.0

#apt-get install php5

#apt-get install php5-mysql

Se desarrolló haciendo uso del IDE de desarrollo

NetBeans con las librerías para PHP5 y usando el

framework Symfony

- se crea el proyecto de symfony (ver anexo X) el

modelo de la base de datos se crea en un archivo de

configuración. (Ver anexo X)

- el modelo se genera con la utilización de la librería

doctrine lo que nos crea las clases para la

abstracción de datos (ver anexo X)

- se crea la aplicación a desarrollar lo cual genera la

estructura de archivos necesarias para empezar el

desarrollo (ver anexo X)

- se procede con la programación (ver anexo X)

3.1.4.3 Implementación con tecnologías Microsoft

Instalación de visual estudio .NET 2010

Page 41: Proyecto Mongo Db

39

Instalación de SQL Server 2008

Page 42: Proyecto Mongo Db

40

instalación de IIS

Descripción de los procesos de la implementación.

Creación de la base de datos empresa

Creación de las tablas empleado y área

Creación de los procedimientos buscar Empleados y

buscar por Áreas que Realizaran la búsqueda en las

tablas por nombre de los empleados y Creación del

proyecto en asp.net con visual Basic por las áreas.

Creación del dataset en asp.net

Creación del script index.aspx donde estarán las

consultas

Buscar Empleados y buscar por Áreas.

Una vez realizada la aplicación web la llevamos a

c://inetpub/wwwroot donde trabajara con IIS

Page 43: Proyecto Mongo Db

41

3.1.4.4 Implementación con Tornado y MongoDB

Se necesitó descarga el archivo de mongoDB ya que es

veloz y de alto rendimiento, escogemos el que va con ti

arquitectura, ya sea de 32 ó 64 bits.

Una vez que ya haya este descargado:

Lo descomprimimos:

tar -xzvf ARCHIVO.tgz

Donde ARCHIVO es el nombre del archivo que

descargaste, por ejemplo mongodb-linux-x86_64-

1.8.1.tgz

Una vez que se acabó de descomprimir el archivo, se

debe crear el directorio que usa MongoDB para

almacenar los datos, el cual es /data/db. Se crea de la

siguiente manera (Como súper usuario).

# mkdir -p /data/db

mkdir sirve para crear directorios desde la consola de

Linux, y el parámetro p es para que si se da una ruta

larga y las carpetas padres no existen, se

creen automáticamente.

Después se cambian los permisos:

# chown USUARIO /data/db

Donde USUARIO es tu nombre de usuario en Linux. Si

no sabes cuál es, puede probar ejecutando como

usuario normal el comando whoami

Una vez cambiado el usuario a la carpeta /data/db, se

debe ir a los archivos extraídos de mongo y entrar a la

carpeta bin, y ejecutar (como usuario) la aplicación: /

MongoDB

Si no aparece el mensaje "really exiting now" entonces

se está ejecutando el demonio de MongoDB y está listo

para conectarse en el puerto 27017, y también tiene una

interfaz web que puede consultarse en

http://localhost:28017.

Page 44: Proyecto Mongo Db

42

Para finalizar el demonio se presiona control + c, para

poder hacer consultas desde consola de debe usar otra

terminal.

En la otra terminal se debe ir a la misma carpeta donde

se descomprimió MongoDB, y entrar a la carpeta bin y

esta vez ejecutar la aplicación. ./mongo y nos debe

regresar el siguiente prompt

Para ver las bases de datos:

show dbs

Para ver la base de datos actual:

Db

Para cambiar de base de datos:

use NOMBRE

Para buscar las colecciones de la base de datos

actual:

show collections

Para mostrar ayuda:

Help

Vamos a buscar en una base de datos de prueba:

db.foo.find()

Y al darle enter, no nos dará resultados, por lo que

vamos a ingresar un dato de la siguiente manera:

db.foo.save({ a : 1 })

Y de nuevo vamos a buscar con

db.foo.find()

Y nos dará como resultado:

{ "_id" : bjectId("4da264a9ae5a73975e992d25"),

"a" : 1}

Eso significa que ya está para el uso respectivo

Para la instalación de tornado web

Page 45: Proyecto Mongo Db

43

Se necesitó descargar el archivo de tornado pero

antes tenemos que tener python en versiones

superiores a 2.5.

Para descargarlo: http://www.tornadoweb.org/

Lo descomprimimos.

$ tar xvzf tornado-0.2.tar.gz

Lo podemos ver en la consola.

$ cd tornado-0.2

Y ya está fácil para el uso respectivo.

Ahora si se podrá usar los dos componentes para el

uso respectivo.

3.1.4.5 Comparativa entre las soluciones propuestas

Se mostrara una comparativa entre lo propuesto y

Microsoft

Pruebas Lam

Para 100 usuarios concurrentes:

Árbol datos de los archivos

Page 46: Proyecto Mongo Db

44

Gráfico del Informe Agregado

Gráfico de resultado

Page 47: Proyecto Mongo Db

45

Para 1000 usuarios

Árbol datos de los archivos

Page 48: Proyecto Mongo Db

46

Gráfico del informe agregado

Gráfico de resultados

Page 49: Proyecto Mongo Db

47

Para 10000 usuarios

Árbol datos de los archivos

Page 50: Proyecto Mongo Db

48

Gráfico del informe agregado

Gráfico de resultado

Page 51: Proyecto Mongo Db

49

Pruebas con tornado y mongoDB

Para 100 usuarios

Árbol datos de los archivos

Page 52: Proyecto Mongo Db

50

Gráfico del informe agregado

Gráfico de resultado

Para 1000 usuarios

Árbol datos de los archivos

Page 53: Proyecto Mongo Db

51

Gráfico del informe agregado

Gráfico de resultado

Page 54: Proyecto Mongo Db

52

Para 10000 usuarios

Árbol datos de los archivos

Page 55: Proyecto Mongo Db

53

Gráfico del informe agregado

Gráfico de resultado

Page 56: Proyecto Mongo Db

54

Se analizó lo propuesto y vimos que lo propuesto es más útil y rápido

para hacer los fines prácticos

Cuadro de resultados finales

Peticiones (concurrentes)

Tiempo y Error

LAMP IIS Tornado

100 Tiempo 238-2373 273-297 16-614

% Error 0 % 0 % 0 %

1000 Tiempo 339-94470 210-5068 73-46931

% Error 0.30 % 0 % 0%

10000 Tiempo 0-241376 26-14197 0-269270

% Error 74.64% 71.64% 65.65 %

Como se puede observar en la imagen anterior el tiempo de respuesta,

a una amplia cantidad de usuarios de la estructura del servidor web

basado en tornado y mongoDB da un bajo porcentaje de errores.

3.2. Resultados Obtenidos

3.2.1. Análisis y evaluación final

Se implementó nuestro modelo de aplicación web en tres

entornos y tecnologías de trabajo distintas sobre la misma

máquina para analizar el modo en el cual cada tecnología facilita

o no en desarrollo de la aplicación, medir el rendimiento y la

tolerancia a un gran número de carga de trabajo

El método de Desarrollo que se usa para realizar un aplicación

LAMP varia de un método tradicional escribiendo las clases y

funciones desde cero a el uso de framework el cual te facilita la

abstracción de datos la seguridad y separa la vista de la lógica

del negocio

Por otro lado el desarrollo en Visual Studio .NET te brinda

herramientas visuales de fácil manejo en el aspecto de UI, sin

embargo al momento de manejar aspectos internos de un

sistema el entorno de desarrollo de Microsoft pasa a ser pesado

Page 57: Proyecto Mongo Db

55

y fastidioso en el sentido del uso de librerías y handlers y su

puesta en marcha

El desarrollo usando el framework de tornado resulta sencillo y

rápido si bien no cuenta con herramientas visuales si es

necesario se puede usar algún ide con soporte para python.

Para probar el rendimiento y la tolerancia a errores se usó la

herramienta jmeter con la cual se probó cada aplicación con 10,

100, y 1000 consultas concurrentes. Esta prueba de estrés nos

dio como resultado que el uso del conjunto de tecnologías

tornado y mongoDB nos brindan mayor velocidad confiabilidad y

tolerancia a una mayor carga de trabajo.

Escenario de pruebas

Las pruebas se realizaron sobre una laptop hp con las siguientes

características:

Nombre del producto HDX X16-1060ES

Procesador Intel core 2 duo

Memoria 4096 MB

Disco duro 320 GB (5400 rpm)

Tarjeta de red LAN Ethernet Gigabit 10/100/1000 integrada

Conectividad inalámbrica

Intel WiFi Link 5100 Bluetooth

El software usado para cada caso probado fue:

LAMP Tecnologías Microsoft

Tornad/ mongoDB

sistema operativo debian GNU/Linux 6.0

MS Windows 7 debian GNU/Linux 6.0

Page 58: Proyecto Mongo Db

56

Servidor web apache 2 IIS 7 Tornado 2.0 HTTP server

Base de Datos MySQL 5.5 Ms SQL Server 2008

MongoDB

Framework Synfony 1.4 net Framework 4 Tornado 2.0 web

Lenguaje de programación

PHP 5 Visual Basic python 2.7

Comprobación de la hipótesis

Según los resultados obtenidos en las pruebas realizadas se

tiene que:

en un entorno no optimizado para la puesta en producción

de un servidor web la capacidad de la red limita el acceso a

un gran número de usuario concurrentes

El Servidor web Tornado está mejor preparado para atender

múltiples requeté en menor tiempo y con mejor uso de los

recursos del ordenador.

Page 59: Proyecto Mongo Db

57

CONCLUSIONES

Se logró demostrar que el conjunto de tecnologías Tornado y mongoDB

nos brindan un rendimiento mayor a las otras tecnologías usadas, ya que

el servidor web Tornado nos permite manejar un mayor número de

usuarios concurrentes y la base de datos mongoDB nos permite una

mayor velocidad en las consultas realizadas.

Se logró entender que cuando alguna organización realiza un

aplicativo web debe de mirarse al futuro y pensar si su aplicativo

puede llegar a tener una gran concurrencia de usuarios, esta debe de

realizarse con un diseño q provea esto. En el caso de la base de datos se

optaría por una base de datos no-sql por las rápidas respuestas que

presenta ante consultas que tenga que ver con un amplia cantidad de

datos.

Se logró entender que los framework’s permiten reducir el tiempo de

desarrollo y que nos brindan un gran número de herramientas para

procesos repetitivos. esto ya que cuenta con pre procesos que te agilizan

todo el proceso de desarrollo.

Se logró realizar la comparativa de las tres estructuras web LAMP, IIS y

ASP.NET y Tornado con Mongodb con lo cual se demuestra como la

estructura de tornado con Mongodb da menores casos de que el servidor

web no responda a las peticiones y responde con mayor velocidad.

Page 60: Proyecto Mongo Db

58

Al modelar una aplicación web podemos darnos cuenta que estos

diseños se pueden implementar con distintas tecnologías afines a las

soluciones web.

Al implementar un sitio web con tornado y Mongodb podemos ver que

estas soluciones nos reducen el tiempo de desarrollo y nos da como

resultado una aplicación con mejor rendimiento y mayor capacidad para

crecer horizontalmente también se encontró con el problema del

mantenimiento ya que al ser tecnologías nuevas y pocas conocidas no

tienen amplio soporte.

Page 61: Proyecto Mongo Db

59

SUGERENCIAS

Que, se mire al futuro y no solo basarse en tecnologías antiguas sino que

también hay que tener en cuenta las tecnologías modernas con visión a

futuro como en el caso de Tornado y MongoDB

Que, se tome en serio la escalabilidad de la base de datos y pensar en

que el futura la aplicación puede albergar una gran cantidad de

información asiendo difícil manejar toda esta carga.

Que, los programadores o estudiantes tengan en cuenta que la

tecnología va avanzado y los framework son el modelo de facto en la

actualidad para el desarrollo de aplicaciones.

Que, se implemente Tornado y MongoDB para realizar aplicaciones web

pensadas a futuro, pues a medida que estas crezcan el costo de

mantenimiento se mantendrá estable o con una variación mínima.

Que, se modele las soluciones planteadas antes de empezar el

desarrollo.

Que, se tenga en cuenta la documentación oficial de las tecnologías con

las que se desarrolla la aplicación ya que en estas se encuentra toda la

información necesario para el desarrollo del mismo, también se sugiere

revisar foros y blogs relacionados ya que brindan soluciones a problemas

típicos lo cual no permitirá ahorrar tiempo.

Que, se usen modelos modernos de desarrollo ya que estos están

preparados para las tecnologías actuales y las que vengan.

Page 62: Proyecto Mongo Db

60

BIBLIOGRAFÍA

I. Libros:

1) Michael Dory, Adam Parrish y Brendan Berg

2010 Introducción a Tornado, Estados Unidos Editorial “Amazon”

2) Jennifer Campbell, Paul Gries, Jason Montojo y Greg Wilson

2004 An Introduction to Computer Science Using Python, Estados

Unidos Editorial “Amazon”

3) Alex Martelli, Anna Ravenscroft y David Ascher

2005 Python Cookbook, Estados Unidos Editorial “Amazon”

4) Kristina Chodorow y Michael Dirolf

2010 Scaling MongoDB Estados Unidos Editorial “Amazon”

5) Kyle Banker

2006 MongoDB in Action Estados Unidos Editorial “Amazon”

6) Charles B. Weinstock y John B. Goodenough

2006 On System Scalability

II. URLS:

http://www.amazon.com

http://es.wikipedia.org/

http://www.tornadoweb.org/

http://www.mongodb.org/

http://www.python.org/

http://www.linux-es.org/

http://news.netcraft.com

http://www.linux.org/

Page 63: Proyecto Mongo Db

61

ANEXOS

Diagrama entidad relacion de MongoDB

Diagrama de entidad relación de Tornado Web