Proyecto Mongo Db
-
Upload
byronn-padilla -
Category
Documents
-
view
34 -
download
0
Transcript of 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
ASESOR:
Ing. Jesús Alberto Zea Salas
A: Nuestros padres con amor y cariño por
su apoyo incondicional que cada día nos
brindan.
Í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
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
BIBLIOGRAFIA 60
ANEXOS 61
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.
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
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.
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
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.
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.
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.
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
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.
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
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
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
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.
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.
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
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
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
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
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
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).
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.
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
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
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.
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
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:
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
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.
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
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
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
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.
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
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
39
Instalación de SQL Server 2008
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
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.
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
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
44
Gráfico del Informe Agregado
Gráfico de resultado
45
Para 1000 usuarios
Árbol datos de los archivos
46
Gráfico del informe agregado
Gráfico de resultados
47
Para 10000 usuarios
Árbol datos de los archivos
48
Gráfico del informe agregado
Gráfico de resultado
49
Pruebas con tornado y mongoDB
Para 100 usuarios
Árbol datos de los archivos
50
Gráfico del informe agregado
Gráfico de resultado
Para 1000 usuarios
Árbol datos de los archivos
51
Gráfico del informe agregado
Gráfico de resultado
52
Para 10000 usuarios
Árbol datos de los archivos
53
Gráfico del informe agregado
Gráfico de resultado
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
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
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.
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.
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.
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.
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/
61
ANEXOS
Diagrama entidad relacion de MongoDB
Diagrama de entidad relación de Tornado Web